Instação do Gentoo

Gentoo Linux (em inglês /ˈdʒɛntuː/) é uma metadistribuição baseada no sistema gerenciador de pacotes portage. A nomenclatura usada no desenvolvimento do sistema e seus produtos é inspirada na espécie de pinguim Gentoo. O gerenciamento de pacotes no gentoo é projetado para ser modular, portátil, fácil de manter, flexível e otimizado para a máquina usuária. Diferentemente da maioria das distribuições de software, normalmente os pacotes são compilados a partir do código fonte, mantendo a tradição dos ports nos sistemas BSD, embora, por conveniência, alguns pacotes grandes sejam disponibilizados também como binários pré-compilados para várias arquiteturas.

O Gentoo descreve-se como uma metadistribuição, “devido à sua adaptabilidade quase ilimitada”.

História

O Gentoo foi inicialmente criado por Daniel Robbins como a Distribuição Enoch. O seu objetivo era criar uma distribuição que fosse compilada a partir do código fonte, sem pacotes pré-compilados, otimizada para o Hardware, que incluísse apenas os programas necessários e diminuísse o trabalho de manutenção através de scripts. Pelo menos uma versão do Enoch foi distribuída: 0.75 em Dezembro de 1999.

Problemas de compilação revelaram problemas com o GNU Compiler Collection (gcc), usado para compilar o código fonte. Assim, Daniel Robbins e outros voluntários passaram a utilizar um fork do gcc conhecido como EGCS, desenvolvido pela Cygnus Solutions, que produziu binários com um ganho mínimo real de 10% sobre o GCC em termos de velocidade. Nesta altura, Enoch ganhara reputação devido à sua velocidade, levando a mudança de nome para Gentoo Linux, sendo Gentoo o nome da espécie de pinguim capaz de nadar mais rápido. As modificações logo se tornaram parte da versão oficial do GCC (versão 2.95) e outras distribuições Linux também obtiveram ganhos na velocidade.

Após problemas com um bug no seu próprio sistema, Robbins interrompeu o desenvolvimento do Gentoo e migrou para o FreeBSD por vários meses, depois dizendo “Eu decidi adicionar várias características do FreeBSD para fazer o nosso sistema auto-compilador (agora conhecido como Portage) uma verdadeira nova geração do sistema ports.”

O Gentoo Linux 1.0 foi lançado 31 de março de 2002; há 552 semanas e 6 dias.

Robbins queria que o Gentoo se tornasse um projeto comercialmente bem-sucedido, mas teve dificuldades em encontrar um modelo de negócios prático. Em 2004 montou a Fundação Sem Fins Lucrativos Gentoo, transferindo todos os direitos autorais e marcas registradas para ela, e renunciou ao cargo arquiteto chefe do projeto.

O atual Conselho Diretivo é composto por cinco membros que foram anunciados (após uma eleição) em 02 de Março de 2008 Há também um conselho subsidiário composto por sete membros, os quais decidem sobre problemas técnicos e políticos. Seus membros são eleitos anualmente, para o período de 1 ano, pelos desenvolvedores ativos no projeto Gentoo. Quando um membro do conselho se retira, a próxima pessoa na fila é votada para substituí-la pelos membros remanescentes.

Até recentemente, a Fundação Gentoo era uma 501©(6) non-profit foundation (uma fundação sem fins lucrativos), registrada no Estado norte-americano do Novo México. Mais tarde em 2007, a autorização da Fundação foi revogada. Em 19 de Maio de 2008 o Estado do Novo México declarou que a Fundação Gentoo está novamente em situação regular e disponível para negócios.

Em 22 de Setembro de 2008 o time de lançamentos decidiu mudar para compilações de mídia semanais e divulgou que os lançamentos anuais estariam cancelados. No entanto, apesar de sugestões para que novos lançamentos fossem compilados através do Metro, uma ferramenta desenvolvida e criada por Daniel Robbins em 2008, o time de lançamentos manterá as compilações através do compilador de versões Catalyst, utilizada desde a versão 2004.

Portabilidade

Embora originalmente desenhado para a arquitetura x86, o Gentoo foi portado para muitas outras e atualmente roda nas arquiteturas x86, x86-64, IA-64, PA-RISC; PowerPC, PowerPC 970, UltraSparc, MIPS, DEC Alpha, System Z/s390, PS3 Microprocessador Cell, ARM e SuperH. O suporte oficial para hardware Sparc 32bits foi abandonado. O Gentoo foi a primeira distribuição a oferecer um ambiente de computação Linux 64 bits totalmente funcional (Espaço de usuário e núcleo).

Há também um Projeto “Gentoo para Mac OS X” que permite que usuários do Mac OS X usem o Portage do Gentoo para instalar pacotes, similar ao modo disponibilizado pelo Fink. Embora ainda seja um trabalho em progresso, o projeto pode coexistir com o Fink porque utiliza o mesmo ambiente que o Mac OS X, ao invés de criar um novo.

Portabilidade com relação a outros sistemas operacionais, como derivados BSD, está sob desenvolvimento ativo pelo Projeto Gentoo/ALT. O Projeto Gentoo/FreeBSD já possui um lançamento funcional, enquanto que Gentoo/NetBSD, Gentoo/OpenBSD e Gentoo/DragonFly estão sendo desenvolvidos. Há também um projeto para fazer o Portage funcionar no GNU Hurd, apesar do próprio GNU Hurd estar sob desenvolvimento, e no OpenSolaris.

Portage

Portage é o sistema de gerenciamento de pacotes do Gentoo. Ele é similar ao ports do BSD: o design original foi baseado no ports do FreeBSD. Em contraste, a árvore do Portage não contém diretórios com makefiles, mas com as chamadas ebuilds, scripts bash que descrevem funções separadas para baixar, configurar, compilar, instalar e remover um pacote, além de funções adicionas que podem ser utilizadas no ambiente operacional para um pacote.

A principal ferramenta de gerenciamento de pacotes do Portage é a emerge. Trazida junto com outros scripts úteis, a ferramenta emerge é escrita em Python e pode ser usada por usuários privilegiados para inspecionar e alterar facilmente o conjunto de pacotes no Gentoo. O emerge pode ser utilizado para operar de modo similar ao modo como outras coleções do ports funcionam, ao entrar em um diretório da árvore e utilizar o emerge (ao invés do make) para realizar operações relacionadas ao gerenciamento de pacotes. O portage lê configurações no arquivo /etc/make.conf, mantendo a sua similaridade com o ports, e pode ser usado, por exemplo, para determinar onde a(s) árvore(s) do Portage são mantidas.

Gerenciadores de pacotes alternativos como o Paludis e o pkgcore estão sob intenso desenvolvimento]. Ambos pretendem ser utilizados em conjunto com ou como alternativa ao conjunto oficial de ferramentas Portage, para desenvolvimento e praticidade. Como ambos são projetos competidores que pretendem substituir ferramentas oficiais, um esforço foi feito para tentar padronizar a Application programming interface das ebuilds para todos os gerenciadores de pacote, em um projeto chamado Especificação do Gerenciamento de Pacotes ou PMS (Package Manager Specification)

Sistema Init

O sistema init do Gentoo é outra característica importante. Ele é similar ao init do System V que a maioria das distribuições de Linux utilizam, mas usa scripts baseadas em dependência e os run levels nomeados ao invés dos numerados. Ele também inclui um comando chamado rc-update que gerencia os run levels.

As Scritps de Inicialização do Gentoo utilizam o interpretador shell runscript, ao invés de uma shell mais tradicional.

Originalmente, o sistema rc do Gentoo foi compilado no baselayout 1 e escrito inteiramente em bash. Isto trouxe severas limitações, por exemplo, certas chamadas de sistema precisavam ser acessadas durante o boot e isto exigia que callouts baseadas em C fossem adicionadas. Essas callouts eram linkadas estaticamente, fazendo com que o sistema rc inchasse ao longo do tempo.

Além do mais, conforme o Gentoo se expandia para outras plataformas como o Gentoo/FreeBSD e Gentoo Embedded, ficou difícil, e muitas vezes impossível depender de um sistema rc baseado em bash. Isto levou ao desenvolvimento do baselayout 2, escrito em C, que precisa somente de uma shell compatível com POSIX. Durante o desenvolvimento do baselayout 2, foi determinado que seria melhor se o baselayout apenas providenciasse os arquivos base e o layout do systema de arquivos para o Gentoo e que o sistema rc fosse colocado em seu próprio pacote - OpenRC.

O OpenRC é desenvolvido primariamente por Roy Marples e suporta o Gentoo e todas as suas variantes (Gentoo/FreeBSD, Gentoo Embedded, Gentoo Vserver, etc) e outras plataformas como FreeBSD e NetBSD.

Instalação

O Gentoo pode ser instalado de várias formas. A mais comum é utilizar o minimal cd do Gentoo com uma tarball do stage 3, que é inclusivamente o método recomendado para utilizadores finais[43]. Como muitas distribuições Linux, ele também pode ser instalado pela maioria dos Live Cds e instalações existentes do Linux.

A instalação do Gentoo pode ser completada seguindo o Gentoo Handbook. Além disso, vários outros métodos de instalação estão listados no Alternative Installation Method HOWTO; a maioria dos quais está focada em usuários experientes ou usuários incapazes de fazer o processo de boot utilizando o Live Cd do Gentoo.

Na versão 2006.0, a Fundação Gentoo lançou um instalador baseado em GTK+ para simplificar drasticamente o processo de instalação do Gentoo a partir do zero, usuários mais avançados também foram capazes de perceber que o novo instalador trazia de volta a instalação usando o stage 1 (veja abaixo) como um método de instalação comum. No entanto, o projeto não recebeu apoio o suficiente para seu desenvolvimento, e não é mais suportado desde a versão 2008.0. Diferentemente da maioria das distribuições GNU/Linux, um passo inicial e mandatório durante o processo de instalação é a compilação do seu próprio núcleo/kernel. Considerada amplamente como uma tarefa complexa, o Gentoo provê documentação e ferramentas como o Genkernel para simplificar o processo e torná-lo simples para usuários neófitos.

Catalyst

A partir da versão 2004.0, Gentoo trouxe uma ferramenta chamada Catalyst, que é usada para compilar todos os lançamentos do Gentoo e pode ser usado para criar uma mídia customizado de instalação.

Stages

Tradicionalmente uma instalação pode ser iniciada a partir de um dos três stages (estágios) básicos:

  • Stage1: O sistema deve passar pelo processo de bootstrapping e o sistema base deve ser compilado.
  • Stage2: O sistema já passou pelo processo de bootstrapping, mas o sistema base deve ser compilado.
  • Stage3: O sistema ja passou pelo processo de bootstrapping e o sistema base já foi compilado.

Desde Novembro de 2005, apenas instalações no stage3 são oficialmente suportadas. Entretanto, tarballs para o stage1 e stage2 ainda são distribuidas, mas as instruções para instalar a partir deles foram removidas do handbook e colocadas na FAQ do Gentoo.

Live USB

Um Live USB do Gentoo Linux pode ser criado manualmente ou com o UNetbootin

Sistema de Versões

Uma vez instalado, o Gentoo se torna “sem versão”; isto é, uma vez feito emerge update, o sistema está na ultima versão, com os pacotes mais atualizados disponíveis, mas sujeitos a qualquer restrições especificadas pelo usuário ao Portage. Por exemplo, se um sistema, foi instalado por um CD da versão 2005.0, então quando a versão 2005.1 for lançada, um emerge update do sistema atualiza o sistema Gentoo instalado da forma que deve resultar uma instalação limpa baseada na versão 2005.1 do mesmo sistema.

Em 22 de Setembro de 2008, foi anunciado que a versão 2008.1 havia sido cancelada e que um novo modelo de lançamentos estava a ser considerado. Este novo modelo de lançamentos resultou em compilações automáticas (stage 3 e minimal cd), ainda que Live CD e DVD tenham mantido o seu ciclo anual de lançamentos

Vantagens

Dependências leves

Já que os pacotes são compilados pelo código-fonte, dependências entre os pacotes são mais flexíveis do que as de distribuições binárias, e podem ser explicitamente ativadas ou desativadas em muitos dos casos. Distribuições binárias tipicamente oferecem flexibilidade similar ao fornecer várias versões do mesmo pacote com apelidos diferentes, ou dividindo pacotes em componentes mais modulares quando possível. Já que o número de configurações possíveis se torna combinatória conforme o número de opções no momento de compilação aumenta, não é viável manter binários para todas as possíveis combinações. Por isso o Gentoo é capaz de oferecer uma variedade muito maior de opções de pacotes no momento da compilação, onde outras distribuições famosas não são.

Pacotes Mais Atuais

Ao sincronizar regularmente a sua árvore do portage, usuários Gentoo são capazes de usar a versão mais recente dos pacotes disponíveis, ao invés de ficarem fixos a uma data de lançamento em particular. Geralmente isso resulta em versões mais novas de software disponíveis no gerenciador de pacotes do que as disponibilizadas em outras distribuições Linux em qualquer momento específico, particularmente aquelas que são presas a um determinado lançamento, apenas com atualizações de segurança. Isto também pode ser considerado um inconveniente; ao utilizar um sistema Gentoo, não há garantias com relação a compatibilidade com versões anteriores na atualização pacotes, já distribuições que fazem apenas um combo reduzido de lançamentos para os pacotes disponíveis são capazes de gerenciar melhor a compatibilidade entre cada lançamento. O Gentoo Linux dá um passo além, oferecendo aos próprios desenvolvedores a opção de utilizar um overlay, que é nome dado a árvores secundárias, mas relativas à árvore principal do Portage. Isso permite que os usuários testem novas funções antes mesmo de serem lançadas, ou seja, no exato momento em que estão sendo feitas.

Overlays são uma excelente maneira de testar a estabilidade e o progresso de determinados projetos, e muito comuns no Gentoo, oferecendo um controle privilegiado sobre a própria distribuição, sobre quais e quando pacotes podem ou não ser disponibilizados sob a premissa de serem estáveis.

Clareza e Flexibilidade

O Sistema Portage mostra, comparado com outras distribuições Linux, muito do que eles está fazendo. Para muitos passos de instalação, os comandos executados são mostrados, enquanto muitas distribuições Linux apenas descrevem o que elas estão tentando conseguir. Fato relacionado é o fato de qualquer usuário pode modificar o comportamento do sistema por inteiro de forma relativamente simples, já que grande parte dos programas no gerenciamento de pacotes são scripts. Devido tudo isso, o Gentoo pode ser útil para desenvolvedores de código, por que eles podem fazer uma instalação completa com o código-fonte nos seus servidores (por exemplo servidores de revisão) usando um simples comando.

Construa o sistema dos seus sonhos

A estrutura atual do Gentoo é basicamente modular, constituída de muitos meta-dados, tornando extremamente fácil escolher entre uma enorme variedade de opções, entre softwares e suas configurações. Essa modulização usa entre outros conceitos, o sistema de overlays do Gentoo, criando árvores paralelas e interligadas à árvore central, com pacotes constituídos unicamente de meta-dados, capazes selecionar, compilar e configurar pacotes, utilizando determinadas opções, pré-definidas ou não. Essa estrutura possui inúmeras vantagens, por exemplo, uma vez que os projetos são autônomos, eles ficam responsáveis pelo seu próprio ambiente, precisam se focar apenas em coisas menores, isto também acaba com a necessidade de possuir uma autoridade central e reguladora, limitando-a apenas à árvore principal, contendo o núcleo do sistema, e que determina quais projetos são oficialmente mantidos. Utilizando essa alta modulização, também torna-se mais simples executar forks, assim, se, por qualquer motivo alguém achar que o mozilla não está sendo mantido corretamente, ele pode criar a sua própria árvore e aplicar os patches e correções que acredita serem necessários, e, com o tempo, se este novo projeto realmente for melhor, ele irá lentamente substituir o primeiro, se tornando um projeto oficial.

Desvantagens

Instalação lenta de pacotes

Compilar a partir do código-fonte significa que alguns pacotes são mais demorados para instalar. Demoras na instalação levam a uma instalação inicial mais longa se muitos pacotes são instalados. Em casos extremos como KDE e OpenOffice.org, a instalação de pacotes pode levar horas, ou até mesmo dias em hardware antigo. A compilação destes pacotes também vai exigir bastante espaço em disco, enquanto estiver sendo feita (4–6 GB para o OpenOffice.org – dê uma olhada na ebuild do app-office/openoffice para mais detalhes). No geral, usuários do Gentoo aceitam os custos do tempo de compilação para poderem usar suas próprias configurações na compilação. Agora, no entanto, binários pré-compilados para aplicações muito usadas como o KDE, OpenOffice.org, e Mozilla Firefox estão disponíveis, na forma como seus mantenedores upstream os disponibilizam, mas ao utilizar estes binários, você perde a chance de personalizar a escolha de características e otimizações para estes pacotes, mesmo embora o tempo de instalação dos pacotes seja reduzido para alguns minutos.

Numa instalação padrão, as críticas acima são basicamente válidas. Porém, deve-se notar que há várias ferramentas/soluções para evitar parcialmente problemas de compilações longas. Elas podem ser usadas separadamente ou em qualquer combinação entre uma e outra:

A primeira é alterar o número de instâncias paralelas do make que podem estar em execução. Iso pode ser especificado globalmente no arquivo /etc/make.conf ou utilizando a diretriz MAKEOPTS=“-jX”. Setando o valor de X = 1 + “# de núcleos de CPU”, funcionando bem em muitas configurações. Note que esta configuração deve refletir o número de núcleos através de todas as máquinas ao utilizar o distcc (veja a terceira opção abaixo).

A segunda, aplicável para configurações com >512-1024MB de RAM, é um script envoltório para o comando emerge chamado temerge que move o diretório temporário do emerge para no tmpfs (um RAM drive). Isto pode reduzir substancialmente o tempo de compilação para muitos pacotes, especialmente aqueles com atividade intensa de entrada/saída nos discos da área de compilação.

A terceira, aplicável a usuários com múltiplas máquinas Linux, através do uso da ferramenta distcc, que é capaz de distribuir os tempos de compilação através de múltiplas máquinas. Isto é especialmente benéfico ao compilar sistemas a partir de imagens do “stage1” ou “stage2”, quando a compilação de pacotes é exigida consideravelmente.

A quarta é a opção buildpkg do portage para tarballs binários de pacotes compilados. Estes podem ser unidos numa máquina de arquitetura compatível e make.conf configurado de maneiras similares a de uma Distribuição Linux (binária). Isto também pode ser usado para a recuperação do sistema ou usado para compilar pacotes em uma máquina potente para depois instalar em outras menos potentes.

A promessa de otimização

O Gentoo foi muito criticado por sua suposta promessa de executar programas mais rapidamente; por design ele permite que usuários especifiquem suas flags de compilação. Alguns websites foram criados especialmente para satirizar esta aproximação falsa a computação. Na realidade, otimizações nem sempre beneficiam a execução de um programa a tal ponto que importe recompilar todo o sistema e seus softwares, ao invés de usar pacotes pré-compilados como outras distribuições Linux normalmente fazem. A verdade é que o gerenciamento de pacotes do Gentoo, no entanto, oferece mais opções, que permitem também a seus usuários instalar menos bibliotecas do que aqueles aplicativos normalmente instalariam, o que pode resultar em um ambiente operacional mais magro e limpo, capaz de executar aplicativos (ou pelo menos durante a inicialização) mais rapidamente do que qualquer sistema com bibliotecas e serviços desnecessários em execução em segundo plano.

Requer uma boa conexão com a internet

Isto está mais relacionado a downloads do que a compilar pacotes. Logo, qualquer outra distribuição Linux que possui atualizações na internet precisa baixar pacotes binários ao invés, e o tamanho dos pacotes binários e códigos geralmente é comparável. Atenuando este inconveniente há a possibilidade de fazer o download de arquivos necessários em segundo plano utilizando as flags -f ou –fetchonly do emerge, ou o download pode ser feito automaticamente, também em segundo plano, durante a compilação, ao ativar a característica parallel-fetch. Outro modo de se fazer isto é realizar os downloads em outra máquina utilizando o comando emerge e mover o código-fonte para o diretório /usr/portage/distfiles correspondente na máquina desejada; deste modo, se o usuário possuir uma velocidade de conexão baixa, ele pode realizar os downloads em outro lugar

Logotipo e mascotes

O logotipo Oficial do Gentoo é o G estilizado lembrando um magatama. Como mascote oficial, Knurt o pires voador. Mascotes não oficials incluem Larry o vaca. Na verdade, como Larry apareceu no sítio oficial, ele pode ser ser considerado como semi-official.

Distribuições baseadas no Gentoo

  • Bintoo
  • Calculate Linux
  • Gentoox
  • iloog
  • Incognito
  • Knopperdisk
  • Kororaa
  • Librix
  • Litrix
  • Navyn OS
  • Pentoo
  • Phaeronix
  • Sabayon Linux
  • Saxana
  • SystemRescueCD
  • Tin Hat Linux
  • Tutoo-Linux
  • Ututo
  • VidaLinux
  • Funtoo

De boot no sistema com um Live CD de preferência do Gentoo baixe em http://www.gentoo.org/main/en/where.xml

Na tela iniciar pressione ENTER ele vai carregar o sistema. Selecione o teclado caso não seja selecionado algum vai ser selecionado automaticamente o padrão us-41.

Logo no modo texto com o usuário root. Já defina uma senha para ele com o seguinte comando passwd.

passwd root

Insira a senha e confirme. Vamos definir agora as configurações de rede para a nossa maquina.

ifconfig eth0 192.168.0.103/24
route add default gw 192.168.0.100
echo nameserver 192.168.0.254 > /etc/resolv.conf
echo nameserver 192.168.0.253 >> /etc/resolv.conf

Agora já podemos habilitar o sshd para gerenciarmos a nossa maquina remotamente.

/etc/init.d/sshd start

Agora vamos preparar o disco para receber o nosso gentoo linux. Aqui eu vou utilizar a ferramenta fdisk mais pode ser utilizado também o cfdisk. Utilize o seguinte comando para identificar o disco.

fdisk -l
Disk /dev/sda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cilindros of 16065 * 512 = 8225280 bytes
Disk /dev/sda doesn't contain a valid partition table

Partições

Nós podemos ter no máximo 4 partições primárias no disco ou 3 primárias e uma estendida que pode conter até 15 partições lógicas fugindo do limite de 4 sendo somente primarias agora podemos ter 3 partições primarias uma estendida contendo até 255 partições totalizando 18 partições. Agora já esta bem melhor.

No meu caso pode ser notado que o disco é zerado não existe nem uma partição criada então vamos criar somente 3 partições nele. Uma partição para o /boot Uma partição para o / Uma partição para o SWAP.

Então vamos lá.

fdisk /dev/sda
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.
 
 
The number of cylinders for this disk is set to 2610.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
 
Command (m for help):

#Aqui você pode selecionar a opção m para listar os possíveis comandos a serem utilizados.

Command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)
 
Command (m for help):

Agora que já temos a lista dos comandos vamos criar as nossas partições vou utilizar uma primária e uma estendida pois só vou ter um sistema operacional nesse disco e mais 2 unidades logicas no sistema estendido que vai ser para a partição raiz e a swap. Vamos criar então a primeira partição com 90MB para o nosso /boot sendo a primeira partição e do tipo primária.

Selecione a opção n para criarmos uma nova partição.

Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-2610, default 1): ENTER
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-2610, default 2610): +90MB

Como pode ser notado pressionamos n para criar a nossa partição e depois escolhemos o tipo dela se ela é estendida ou primaria e um número para ela que vai ser a identificação dela como sendo a primeira partição primaria do disco sda.

Partições.

Nos podemos ter no máximo 4 partições primárias no disco ou 3 primárias e 1 estendida que pode conter até 255 partições lógicas nela não nos limitando somente as 4 partições que seriam possível sendo primárias.

Agora vamos criar mais uma partição agora ela vai ser estendida para criarmos mais 2 partições logicas nela poderiam ser todas primarias pela quantidade mais estou utilizando esse método para que quando seja necessária a implementação de mais de 4 partições seja mais fácil de executar o processo.

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
e
Partition number (1-4):
Value out of range.
Partition number (1-4): 2
First cylinder (13-2610, default 13): ENTER
Using default value 13
Last cylinder or +size or +sizeM or +sizeK (13-2610, default 2610): ENTER
Using default value 2610

#Aqui não foi definido valor nenhum então o fdisk pega o espaço disponível para a partição estendida.

#Agora vamos criar as duas partições logicas no nosso sistema estendido.

n
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
l
First cylinder (13-2610, default 13): **ENTER**
Using default value 13
Last cylinder or +size or +sizeM or +sizeK (13-2610, default 2610): **+1GB**

Pode ser notado agora que não temos mais a opção de criar uma partição estendida e somente partições primárias e lógicas. No nosso caso criamos a partição lógica com 1GB que vai ser utilizado pela nossa swap.

Agora vamos criar a partição / raiz com todo o resto do disco.

n
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
l
First cylinder (136-2610, default 136): ENTER
Using default value 136
Last cylinder or +size or +sizeM or +sizeK (136-2610, default 2610): ENTER
Using default value 2610

#Igual a criação da partição estendida não selecionamos nem um valor para partição com isso o sistema pegou todo o espaço disponível.

#Agora vamos listar as nossas partições.

Command (m for help): p
 
Disk /dev/sda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
 
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1          12       96358+  83  Linux
/dev/sda2              13        2610    20868435    5  Extended
/dev/sda5              13         135      987966   83  Linux
/dev/sda6             136        2610    19880406   83  Linux

Pode ser notado que o nosso particionamento ficou como precisamos. Uma partição primaria do /boot sendo a sda1 primeira partição. Uma partição estendida sendo a sda2 para que possamos criar as partições logicas. Uma partição logica da swap sendo o sda5 a quinta partição do nosso disco. Uma partição logica para o / raiz sendo o sda6 sexta partição do disco.

Agora vamos gravar as nossas alterações efetuadas no disco.

Command (m for help): w
The partition table has been altered!
 
Calling ioctl() to re-read partition table.
Syncing disks.

Agora vamos criar o sistema de arquivos necessário nas nossas partições.

Aqui vamos criar um sistema de arquivos do tipo ext3 para o nosso /boot.

mkfs.ext3 /dev/sda1
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
24096 inodes, 96356 blocks
4817 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67371008
12 block groups
8192 blocks per group, 8192 fragments per group
2008 inodes per group
Superblock backups stored on blocks:
  8193, 24577, 40961, 57345, 73729
 
Writing inode tables: done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
 
This filesystem will be automatically checked every 23 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

Aqui vamos criar um sistema de arquivo do tipo ext3 para o nosso

mkfs.ext3 /dev/sda6
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
2485504 inodes, 4970101 blocks
248505 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=8388608
152 block groups
32768 blocks per group, 32768 fragments per group
16352 inodes per group
Superblock backups stored on blocks:
  32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
  4096000
 
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
 
This filesystem will be automatically checked every 28 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

E por fim vamos criar um sistema de arquivo do tipo swap para a nossa swap.

mkswap /dev/sda5
Setting up swapspace version 1, size = 1011671 kB
no label, UUID=1506e7ce-d09e-4d6f-8865-0cba74c5c8cb

Agora vamos ativar a swap.

swapon /dev/sda5

Agora vamos montar as partições que criamos para instalação do sistema.

mount /dev/sda6 /mnt/gentoo
mkdir /mnt/gentoo/boot
mount /dev/sda1 /mnt/gentoo/boot
cd /mnt/gentoo

Agora vamos baixar o stage3 que são os diretórios e as configurações padrões que o sistema precisa para o funcionamento ex: /etc /var /usr /lib /tmp /home.

wget -c ftp://distfiles.gentoo.org/pub/gentoo/releases/x86/current-stage3/stage3-i686-[0-9]*.tar.bz2

Caso esteja utilizando um sistema amd64 precisa obter o stage3 da seguinte forma

wget -c ftp://distfiles.gentoo.org/pub/gentoo/releases/amd64/current-stage3/stage3-amd64-[0-9]*.tar.bz2

Agora vamos desempacotar o nosso stage3.

time tar -xjpf stage3*

Agora vamos remover o stage3

rm -rf stage3*

Agora vamos baixar o portage snapshot para que possamos utilizar o emerge para instalação de pacotes.

cd /mnt/gentoo/usr
wget -c http://distfiles.gentoo.org/snapshots/portage-latest.tar.bz2

Vamos desempacotar agora o nosso portage.

time tar -xjf portage-lat*

Agora vamos remover o portage

rm -rf portage-lat*

Agora que já temos uma base pra o nosso sistema vamos enjuaular ele e fazer alguns ajustes.

cd /
mount -t proc proc /mnt/gentoo/proc
mount -o bind /dev /mnt/gentoo/dev
cp -L /etc/resolv.conf /mnt/gentoo/etc
chroot /mnt/gentoo /bin/bash
env-update && source /etc/profile

Vamos ajustar agora o nosso relógio, aqui eu vou utilizar a configuração para o Sul.

cp /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime

Agora vamos ajustar o hostname da nossa maquina.

echo "127.0.0.1 gentoo.dominio.com.br localhost" > /etc/hosts
sed -i -e 's/hostname.*/hostname="gentoo"/' /etc/conf.d/hostname
hostname gentoo

Agora vamos atualizar o nosso portage para que tenhamos as últimas versões das aplicações que seram instaladas em nossa maquina.

emerge --sync

Agora que já temos a nossa configuração precisamos de um kernel para o nosso sistema então vamos baixar um do site oficial www.kernel.org.

Kernel

Quando estamos falando em kernel estamos se referindo ao núcleo do sistema quem ira controlar as chamadas do sistema aos dispositivos de hardware.

Então se estamos trabalhando com um servidor ou uma maquina para cliente esse núcleo pode ser tratado de diferentes formas exemplo: Eu estou montando um servidor de firewall, então eu sei que não vou utilizar nem uma placa de vídeo para jogos, e não vou usar áudio nele também. Já em uma maquina de cliente ainda mais se for para sua própria residência você vai querer uma boa placa de vídeo para jogos um bom som, cartões de memória e por ai vai.

Ai já notou que em casa vamos precisar de mais recursos do kernel, e que no servidor vamos necessitar somente de recursos para o firewall. Se estivermos falando em firewall quanto mais enxuto for o kernel melhor será o aproveitamento de recursos, pois se não tivermos áudio habilitado nele ele não vai ficar usando memória para carregar o módulo de áudio, se não utilizarmos Bluetooth não precisaremos do modulo de Bluetooth carregado entenderam a lógica. O Kernel Linux é monolítico então podemos habilitar e desabilitar módulos nele com isso pode utilizar ele tanto para uma maquina cliente como para um servidor.

Então quando forem preparar o kernel analisem bem para ver quais dispositivos de hardware vão ser utilizadas, quais aplicações vão ser utilizados, quais sistemas de arquivos.

Façam um projeto de como o seu kernel deverá se comportar pois ele é um ponto critico.

Exemplo prático você instalou um Ubuntu em Dual boot com um Windows Sete, o kernel que vem por padrão no Ubuntu quando ele esta com o Windows 7 ele pode escrever em sistema de arquivo NTFS-3G até aqui tudo beleza. Mais agora você viu que lançaram módulos melhorados que você utiliza no seu sistema então decidiu atualizar o seu kernel e acabou esquecendo-se de carregar as configurações do kernel, pois você utilizou o arquivo de configuração padrão para a arquitetura que esta utilizando e compilou e instalou o seu kernel, quando for utilizar a sua partição do Windows 7 o sistema vai dar um erro lhe avisando que não existe o sistema não tem suporte aquele sistema de arquivos o que faltou aqui é o módulo para o sistema tem que habilitar em sistemas de arquivos o módulo para NTFS e a escrita em NTFS.

Ou poderia ter sido pior esquecer-se de compilar o modulo para a sua placa de rede ou para o seu dispositivo de armazenamento, mas sempre podemos corrigir isso se você excluiu o kernel antigo fica um pouco mais chato de fazer porem tem correção já se ele não foi excluído é só acessar o sistema pelo kernel antigo e habilitar os módulos necessários.

Vamos então baixar e instalar o nosso kernel.

Vamos utilizar o diretorio /usr/src é aonde devem ficar os arquivos de código fonte.

cd /usr/src
wget -c http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.39.tar.bz2

Aqui baixamos a ultima versão do kernel na data 02/12/2010 porém você pode utilizar o kernel do portage com o seguinte comando.

time emerge gentoo-sources

Agora vou passar algumas ferramentas que podemos utilizar para fazer uma análise do nosso hardware e módulos que estão sendo utilizados no sistema.

Podemos listar os módulos utilizados no sistema utilizando o seguinte comando

lsmod

Podemos tirar informações do processador com o seguinte comando.

cat /proc/cpuinfo

Agora vamos instalar um pacote que nos ajudará a fazer uma análise dos dispositivos pcis em nossa máquina.

emerge pciutils

Podemos listar dispositivos pci com o seguinte comando agora.

lspci

Agora vamos instalar um pacote que nós ajudará a fazer uma análise dos dispositivos usb em nossa máquina.

emerge usbutils

Agora já podemos listar os dispositivos usb com o seguinte comando

lsusb

Com isso já temos uma idéia de alguns dispositivos ncessários para o funcionamento de nossa máquina.

Em /proc/* temos varias informações sobre dispositivos de acesso a memória e afins para quem quiser dar uma olhada acho interessante e vai ser útil.

E temos também o comando dmesg.

Que são as mensagens que o kernel gera na inicialização do sistema.

dmesg

Vamos instalar agora o gerenciador de inicialização do nosso sistema aqui eu vou optar pelo grub mais pode ser utilizado outro, vamos instalar também o genkernel para podermos gerar a initramfs.

emerge grub genkernel

Voltando ao nosso kernel se você baixou o kernel em /usr/src precisa agora descompactar ele com o seguinte comando.

cd /usr/src
tar -xjvf linux*

Após descompactar precisamos criar um link indicando ao sistema qual é o kernel preferêncial pois se tivermos mais kerneis no sistema o sistema e as aplicações vão se referênciar por esse link.

ln -sf linux-2.6.39 linux

Agora vamos entrar no diretório do kernel e vamos começar a brincadeira.

Vou passar um massete para uma configuração básica do kernel. Em /usr/src/linux/arch/XXX/configs Aonde eu coloquei XXX é a arquitetura do sistema então vou pegar como exemplo a x86 ficaria da seguinte forma. /usr/src/linux/arch/x86/configs Dentro deste diretório temos os arquivo com as configurações básicas para esse kernel funcionar podemos pegar ele como base para a nossa configuração e adicionar o que precisarmos.

Quando estamos efetuando a configuração de um novo kernel para um sistema que já esta em funcionamento ele procura o /boot arquivos de configuração do kernel correte e pega como base aquela configuração.

Aqui eu vou estar utilizando a configuração padrão da arquitetura x86 que é o arquivo i386_defconfig, aqui o comando make defconf copia o arquivo de configuração default do kernel baseado na arquitetura utilizada pela maquina no meu caso x86.

cd /usr/src/linux
make defconfig
make menuconfig

Agora fique a vontade para ativar e desativar módulos e customizar o seu kernel.

Obs.: Na parte de NetFilter esta habilitado somente o bem básico dele habilite os módulos que for precisar usar para o seu firewall caso necessário.

Na tela que abre do menuconfig temos varias opções e subopções aqui é bom ter uma idéia pelo menos de inglês ou senão o google translation vai te ajudar.

Ali podemos pesquisar em qualquer parte do menu pressionando a tecla / após pressionar a tecla é só digitar o que deseja procurar ex: netfilter ? vai trazer as ocorrências dessa string no configuração.

Podemos obter uma descrição da opção que vamos habilitar pressionando a tecla ? já ficou mais fácil a compilação agora já podemos pesquisar o que vamos habilitar e podemos ter uma descrição do que estamos habilitando então agora faça os seus ajustes e salve a configuração.

Para correr pelos menus utilizamos as setas do teclado para selecionarmos uma opção utilizamos a tecla de espaço, quando estiver marcado com um M um módulo será compilado no kernel, quando for um * o módulo será compilado internamente no kernel.

Vantagens e desvantagens se você compilar internamente no kernel ele vai ser utilizado quando você precisar se for compilado como módulo quando for utilizar vai ter que carregar com o comando modprobe módulo ou para descarregar ele da memória com modprobe -r módulo, mas por padrão o sistema carrega os módulos necessários para ele.

Pense na seguinte situação agora o seu servidor foi invadido e ta cheio de módulos para serem carregados pelo atacante e algumas aplicações do atacante precisam de alguns módulos do sistema o que ele vai precisar fazer é somente utilizar o comando modprobe módulo e carregar o módulo que ele precisa.

Agora se você compilou o que precisa internamente ele não vai ter módulos para carregar e não vai conseguir carregar os módulos necessários para a sua aplicação, porem se no servidor tiver um compilador ele pode compilar o módulo que precisa, então faça a sua instalação e remova os compiladores pois eles podem botar em cheque o seu sistema.

Após terminar a configuração do seu kernel pode sair e confirme a gravação das configurações efetuadas com yes.

Agora vamos compilar o kernel e seus módulos e fazer a instalação.

Aqui eu vou estar utilizando a opção -j 6 ele serve para quando você tem um processador de mais de um núcleo dai ele abre 6 processos no meu caso de compilação simultâneos com isso a nossa compilação será muito mais rápida.

make -j 6 bzImage
make -j 6 modules
make -j 6 modules_install
make -j 6 install

Agora que vamos mecher com a modificação de arquivos podemos instalar o vim para manipular os arquivos.

emerge vim

Agora vamos editar o fstab que comanda os pontos de montagens sistemas de arquivose mais algumas opções. Eu não vou utilizar aqui o endereço do sistema do dispositvio ex: /dev/sda1 ou /dev/hda1 Apartir da versão 2.6.xx o sistema começou a trabalhar com a unificação dos padrões para nomenclatura de dispositivos você pode estar utilizando um kernel com uma versão não tão atual e o dispositivo ser reconhecido como /dev/hda só que quando compilar e instalar um novo kernel ele vai reconhecer esse dispositivo como /dev/sda mesmo sendo IDE. Temos um comando para obter a identificação dos dispositivos no sistema então se ele for /dev/sda ou /dev/hda a identificação dele continuara a mesma.

blkid > /root/ids

Agora que já temos as identificações das partições vamos poder configurar o nosso fstab. O arquivo é como o seguinte.

/dev/sda1: UUID="2d2eeb10-6387-47b6-a20f-1c61f1d48fee" TYPE="ext3"
/dev/sda5: UUID="PTezYo-cq22-xxwM-kTHy-8xBc-h0pa-wMFac3" TYPE="ext3"
/dev/sdb6: UUID="c1KJ4V-3mD0-YXT1-5avv-FE1i-Z5Vk-GiRrbT" TYPE="ext3"

Pode ser notado que para cada partição temos um UUID é o que vamos precisar para configurar o nosso fstab. Configurando o /etc/fstab

UUID="2d2eeb10-6387-47b6-a20f-1c61f1d48fee"     /boot           ext3            noauto,noatime 1 2
UUID="c1KJ4V-3mD0-YXT1-5avv-FE1i-Z5Vk-GiRrbT"   /               ext3            noatime     0 1
UUID="PTezYo-cq22-xxwM-kTHy-8xBc-h0pa-wMFac3"   none            swap            sw                  0 0
/dev/cdrom  /mnt/cdrom  auto            noauto,ro           0 0
shm             /dev/shm        tmpfs           nodev,nosuid,noexec 0 0
proc            /proc           proc            nodev,nosuid,noexec 0 0

Note que fizemos a troca dos valores /dev/sda1 /dev/sda5 e /dev/sda6 pelos seus UUIDS então para o kernel vai ser montado essas determinadas identificações sem se preocupar se são IDE, SATA, SCSI etc.

Agora vamos deixar o teclado configurado para br-abnt2

vim /etc/conf.d/keymaps
[...]
keymap="br-abnt2"
[...]

Agora vamos acertar as variáveis de ambiente o arquivo não existe precisamos criar ele

vim /etc/env.d/02locale
LANG="pt_BR.UTF-8"
LANGUAGE="pt_BR:pt:en"
LC_CTYPE="pt_BR.UTF-8"
LC_NUMERIC="pt_BR.UTF-8"
LC_TIME="pt_BR.UTF-8"
LC_COLLATE="pt_BR.UTF-8"
LC_MONETARY="pt_BR.UTF-8"
LC_MESSAGES="pt_BR.UTF-8"
LC_PAPER="pt_BR.UTF-8"
LC_NAME="pt_BR.UTF-8"
LC_ADDRESS="pt_BR.UTF-8"
LC_TELEPHONE="pt_BR.UTF-8"
LC_MEASUREMENT="pt_BR.UTF-8"
LC_IDENTIFICATION="pt_BR.UTF-8"

Agora precisamos mandar o sistema reconhecer as novas variáveis

env-update

Agora vamos configurar a nossa rede.

cd /etc/conf.d
echo 'config_eth0=("192.168.0.1/24")' >> net
echo 'routes_eth0=("default via 192.168.0.254")' >> net

Note que eu utilizei a configuração para um placa eth0 mais isso pode mudar de acordo com o seu hardware.

Agora vamos colocar a configuração da nossa eth0 para ser iniciada junto com o sistema com o seguinte comando.

cd /etc/init.d
ln -s net.lo net.eth0
rc-update add net.eth0 default

Agora vamos colocar o ssh para inicializar junto com o sistema com o seguinte comando.

rc-update add sshd default

Vamos setar a senha para o root e confirmar ela.

passwd

Agora precisamos gerar a initramfs da seguinte forma

genkernel --install initramfs

Agora vamos configurar o nosso grub, nas ultimas versões do kernel quando mandamos instalar o kernel ele ja gera o initrd e configura o grub então caso o kernel não tenha configurado o nosso grub vamos ter que configurar na mão caso contrario somente confirme se já não tem as entradas em /boot/grub/grub.conf

default 0
timeout 30
splashimage=(hd0,0)/boot/grub/splash.xpm.gz

title Gentoo Linux 2.6.39
root (hd0,0)
kernel /boot/vmlinuz-2.6.39 root=/dev/sda6
initrd /boot/initramfs-genkernel-x86_64-2.6.39

title Gentoo Linux 2.6.39 (single-user-mode)
root            (hd0,0)
kernel /boot/vmlinuz-2.6.39 root=/dev/sda6 ro single
initrd /boot/initramfs-genkernel-x86_64-2.6.39

Agora vamos instalar o grub na MBR.

grub
grub> root(hd0,0)
grub> setup (hd0)
grub> quit

Agora vamos sair do nosso ambiente em chroot e vamos desmotnar o nosso sistema.

exit
umount /mnt/gentoo/dev /mnt/gentoo/proc /mnt/gentoo/boot /mnt/gentoo
init 6

Agora já temos o nosso Gentoo Linux instalado.

Podem haver casos aonde o sistema não gera automaticamente as chaves para o acesso ssh então elas podem ser geradas com os seguinte comandos.

ssh-keygen -b 4096 -t rsa -f /etc/ssh/ssh_host_key -N ""
ssh-keygen -b 1024 -t dsa -f /etc/ssh/ssh_host_dsa_key -N ""
ssh-keygen -b 4096 -t rsa -f /etc/ssh/ssh_host_rsa_key -N ""
chmod 0600 /etc/ssh/ssh_host_*
chmod 0640 /etc/ssh/ssh_host_*.pub

Referências