Aviso :
Este manual foi substituído por uma versão mais nova e não é mais mantido.
|
Manual do Gentoo Linux 2005.1 para PPC64
Conteúdo:
-
Instalando o Gentoo
Nesta seção você aprende como instalar o Gentoo em seu sistema.
-
Sobre a instalação do Gentoo Linux
Usuários que não conhecem o Gentoo nem sempre sabem sobre sua abrangência de
escolhas.
-
Carregando o CD de instalação universal
Usando nosso CD de instalação universal você pode carregar seu sistema em um
ambiente que permite que você instale o Gentoo.
-
Configurando sua rede
Se você precisa de rede, este é o local onde a rede (e conexão de Internet) é
configurada.
-
Preparando os discos
Para poder instalar o Gentoo, você deve criar as partições necessárias. Este
capítulo descreve como particionar um disco rígido para uso posterior.
-
Instalando os arquivos de instalação do Gentoo
Neste capítulo nós descrevemos como extrair um arquivo de stage3 e como
configurar o Portage.
-
Fazendo chroot no sistema de base do Gentoo
Agora que o arquivo de stage3 foi extraido, nós fazemos chroot no novo e sistema
e modificamos a variável de USE.
-
Configurando o kernel
O kernel do Linux é o centro de toda distribuição. Este capítulo explica como
configurá-lo.
-
Configurando seu sistema
Você precisa editar alguns arquivos de configuração importantes. Neste capítulo
você vê quais são esses arquivos e uma explicação de como proceder.
-
Instalando as ferramentas de sistema necessárias
Como mencionado antes, o Gentoo é escolha. Neste capítulo iremos ajudá-lo na
escolha e instalação de algumas ferramentas importantes.
-
Configurando o gerenciador de inicialização
Existem vários gerenciadores de inicialização. Cada um deles tem seu próprio
jeito de configurar. Neste capítulos iremos descrever todas possibilidades para
você e ensinar o processo de configuração do gerenciador de inicialização para
atender às suas necessidades.
-
Finalizando a instalação do Gentoo
Está quase acabando. Iremos somente criar um (ou mais) usuários para seu sistema
e (opcionalmente) instalar pacotes pré-construídos.
-
E agora, para onde ir?
Agora que você instalou o Gentoo, o que temos pela frente?
-
Trabalhando com o Gentoo
Aprenda como trabalhar com o Gentoo: instalando software, alterando variáveis,
modificando o comportamento do Portage e etc...
-
Uma introdução ao Portage
Este capítulo explica os "simples" passos que um usuário precisa para cuidar do
software em seu sistema.
-
Variáveis de USE
As variáveis de USE são um aspecto muito importante do Gentoo. Neste capítulo
você irá aprender a trabalhar com variáveis de USE e entender como elas
interagem com seu sistema.
-
Funcionalidades do Portage
Descubra as funcionalidades que o Portage tem, como suporte para compilação
distribuída, ccache e muito mais.
-
Scripts de inicialização
O Gentoo usa um formato especial de scripts de inicialização que, além de outras
coisas, permite decisões baseadas em dependências e scripts virtuais. Este
capítulo explica todos estes aspectos e como trabalhar com os scripts.
-
Variáveis de ambiente
Com o Gentoo você pode gerenciar as variáveis de ambiente para o seu sistema
facilmente. Este capítulo explica como fazer isto, e também descreve as
variáveis que são usadas com mais freqüência.
-
Trabalhando com o Portage
"Trabalhando com o Portage" fornece detalhes mais profundos do Portage, a
ferramenta de gerenciamento de software do Gentoo.
-
Arquivos e diretórios
Se você quiser saber bastante sobre o Portage, você precisa saber onde ele grava
seus arquivos e dados.
-
Configuração através de variáveis
O Portage é completamente configurável através das diferentes variáveis que você
pode ajustar no arquivo de configuração ou como variável de ambiente.
-
Misturando ramos de software
O Gentoo fornece software separado em vários ramos, dependendo da estabilidade
e suporte arquitetural. "Misturando ramos de software" informa você sobre como
esses ramos podem ser configurados e como você pode sobre-escrever a separação
individualmente.
-
Ferramentas do Portage adicionais
O Portage vem com algumas ferramentas adicionais que podem deixar sua
experiência com o Gentoo ainda melhor. Leia mais para descobrir como usar o
dispatch-conf e outras ferramentas.
-
Divergindo da árvore oficial
"Divergindo da árvore oficial" dá dicas e truques para usar sua própria árvore
do Portage, como sincronizar só as categorias que você quer, injetar pacotes e
mais.
-
A aplicação ebuild
Em "A aplicação ebuild" você é informado sobre os passos que o Portage toma
enquanto está instalando software e como você pode fazer o mesmo sozinho usando
a aplicação ebuild.
-
Configuração de rede do Gentoo
Um guia completo de rede no Gentoo.
-
Começando
Um guia para colocar sua interface de rede para funcionar nos ambientes mais
comuns.
-
Configuração avançada
Aqui nós aprendemos sobre como a configuração funciona - você precisa saber isto
antes de aprendermos sobre rede modular.
-
Rede modular
O Gentoo dá a você uma rede flexível - aqui você é ensinado sobre como escolher
diferentes clientes de DHCP, configurar bonding, bridging, VLANs e mais.
-
Rede wireless
Wireless não é tão simples. Esperamos que vamos colocar para funcionar!
-
Adicionando funcionalidade
Se você estiver sentindo-se aventureiro, você pode adicionar suas próprias
funções ao sistema de rede.
-
Gerenciamento de rede
Para usuários de laptop ou pessoas que usam seus computadores em diferentes
redes.
A. Instalando o Gentoo
1. Sobre a instalação do Gentoo Linux
1.a. Introdução
Bem-vindo!
Primeiramente, seja bem-vindo ao Gentoo. Em breve você entrará no mundo
das escolhas e da performance. O Gentoo é escolha. Na instalação você verá isso
várias vezes -- você pode escolher o quanto você quer compilar pessoalmente,
como instalar o Gentoo, qual gerenciador de registros de sistema você quer,
etc...
O Gentoo é uma metadistribuição moderna e veloz com um desenho limpo e flexível.
O Gentoo foi construído com software livre e não esconde de seus usuários o que
está sob o capô. O Portage, sistema de gerenciamento de pacotes usado pelo
Gentoo, é escrito em Python, o que significa que você pode facilmente ver e
modificar o código-fonte. O sistema de gerenciamento de pacotes do Gentoo usa
código-fonte (embora também ofereça suporte a pacotes pré-compilados) e a
configuração do Gentoo é toda feita com arquivos de texto normais. Em outras
palavras, abertura em todos os pontos.
É muito importante que você entenda que as escolhas são o que movimenta o
Gentoo. Nós tentamos não forçar você a nada que você não goste. Se você achar
que estamos forçando, por favor relate um
bug.
Como é a estrutura da instalação?
A instalação do Gentoo pode ser vista como um procedimento de 10 passos,
correspondendo aos capítulos 2 - 11. Cada passo resulta num determinado estado:
-
Após o passo 1, você está num ambiente pronto para instalar o Gentoo
-
Após os passo 2, a sua conexão à Internet está preparada caso você precise
dela (isto é opcional, todavia)
-
Após o passo 3, seus discos rígidos estão aptos a abrigar a sua instalação do
Gentoo
-
Após o passo 4, seu ambiente de instalação está preparado e você está pronto
para fazer o chroot para dentro do novo ambiente
-
Após o passo 5, os pacotes-chave, que são os mesmos em todas as instalações do
Gentoo, estão instalados
-
Após o passo 6, você compilou seu kernel de Linux
-
Após o passo 7, você escreveu a maioria dos arquivos de configuração de
sistema do seu Gentoo
-
Após o passo 8, seu gerenciador de inicialização escolhido foi instalado e
configurado
-
Após o passo 9, as ferramentas de sistema necessárias (as quais você pode
escolher de uma bela lista) estão instaladas
-
Após o passo 10, você está logado na sua nova instalação do Gentoo
Quando você tem uma certa escolha, tentamos da melhor forma possível explicar os
prós e contras de cada opção. Continuaremos então com uma escolha padrão,
identificada por "Padrão: " no título. As outras possibilidades são
identificadas por "Alternativa: ". Não pense que o padrão é o
que recomendamos. É simplesmente a que acreditamos que a maioria dos usuários
vai usar.
Eventualmente será oferecido um passo opcional. Esses passos são marcados como
"Opcional: " e portanto não são necessários para instalar o Gentoo. No
entanto, alguns passos opcionais dependem de decisões anteriores que você fez.
Vamos informá-lo quando isso acontecer, tanto quando você fizer a decisão,
quanto logo antes de descrevermos o passo opcional.
Quais são minhas opções?
Você pode instalar o Gentoo de muitas formas diferentes. Você pode baixar e
instalar a partir dos nossos CDs de instalação, a partir de uma distribuição já
existente em seu disco, a partir de um CD inicializável (como o Knoppix),
inicializando pela rede, a partir de um disquete de recuperação, etc...
Este documento cobre a instalação usando o CD de instalação universal, um CD
carregável que contém tudo que você precisa para configurar e ter o Gentoo Linux
funcionando. Você pode opcionalmente usar um de nossos CDs de pacotes também
para instalar um sistema completo em questão de minutos após instalar o sistema
de base do Gentoo.
Este método de instalação, todavia, não faz uso imediato das últimas versões
disponíveis dos pacotes; se você quer isso, você deve ver as instruções de
instalação dentro de nossos Manuais do
Gentoo Linux.
Para ajuda com outros métodos de instalação, por favor leia nosso Guia de instalação alternativa. Nós
também oferecemos um documento de Dicas & Truques de instalação
do Gentoo que também pode ser uma leitura útil. Se você acha que as
instruções de instalação atuais são muito elaboradas, sinta-se livre para usar
nosso Guia de instalação rápida disponível em nossos Recursos de documentação se sua arquitetura
tiver tal documento disponível.
Problemas?
Se você encontrar algum problema na instalação (ou na documentação de
instalação), por favor verifique a errata de nosso Projeto de Engenharia de Lançamentos do Gentoo,
visite nosso sistema de rastreamento de
bugs e verifique se o bug é conhecido. Se não existir, crie um novo
registro de bug para que possamos cuidar dele. Não tenha medo dos
desenvolvedores que receberem os (seus) bugs -- normalmente eles não comem
pessoas.
Note também que, apesar de a documentação que você está lendo agora seja
específica por arquitetura, conterá referências para outras arquiteturas também.
Isto deve-se ao fato de que grandes partes do Manual do Gentoo usam comandos
e códigos que são comuns para todas as arquiteturas (para evitar duplicação de
esforços e desgastes dos esforços de desenvolvimento). Nós tentamos manter isso
ao mínimo para evitar confusões.
Se você estiver em dúvida com um problema de usuário (algum erro que você
cometeu apesar de ter lido atenciosamente a documentação) ou um problema de
software (algum erro que nós cometemos apesar de ter testado atenciosamente a
instalação e a documentação), sinta-se à vontade para juntar-se ao #gentoo ou
#gentoobr em irc.freenode.net. Obviamente você não precisa dessas dúvidas para
ser bem-vindo lá :)
Se você tiver uma questão sobre o Gentoo, verifique nossas Perguntas mais freqüentes, disponíveis na Documentação do Gentoo. Você também pode ver as FAQs (Perguntas mais
freqüentes) nos nossos fóruns.
Se não conseguir encontrar a resposta lá, pergunte no #gentoo (inglês), ou no
#gentoobr, nosso canal IRC na irc.freenode.net. Sim, muitos de nós são loucos
que entram no IRC :-)
1.b. Instalação rápida usando a Gentoo Reference Platform
O que é a Gentoo Reference Platform?
A Gentoo Reference Platform (plataforma de referência do Gentoo), doravante GRP,
é um snapshot de pacotes pré-construídos que usuários (isto significa você!)
podem usar durante a instalação do Gentoo para acelerar o processo de
instalação. O GRP consiste de todos pacotes necessários para ter uma instalação
do Gentoo totalmente funcional. Eles não são apenas os que você precisa para ter
uma instalação de base rapidamente, mas também construções mais longas (como
KDE, xorg-x11, GNOME, OpenOffice, Mozilla, ...) estão disponíveis como pacotes
GRP.
No entanto, esses pacotes pré-construídos não são mantidos durante o ciclo de
vida da distribuição do Gentoo. São snapshots lançados em cada lançamento do
Gentoo e tornam possível ter um ambiente funcional em pouco tempo. Você pode
então atualizar seu sistema no background enquanto trabalha em seu ambiente
Gentoo.
Como o Portage lida com pacotes GRP
Sua árvore do Portage - a coleção de ebuilds (arquivos que contêm todas
instruções de compilação, dependências, etc...) - devem ser sincronizadas com o
conjunto de GRP: as versões das ebuilds disponíveis e seus pacotes de GRP
acompanhantes devem bater.
Por este motivo, você só pode tirar proveito de pacotes GRP que o Gentoo fornece
durante o método de instalação atual. O GRP não está disponível para aqueles
interessados em fazer uma instalação usando as últimas versões de todos
pacotes disponíveis.
O GRP está disponível?
Nem todas arquiteturas oferecem pacotes GRP. Isto não significa que GRP não é
suportado em outras arquiteturas, mas que não temos os recursos para construir e
testar os pacotes GRP.
No momento nós oferecemos pacotes GRP para as seguintes arquiteturas:
-
A arquitetura x86 (x86, athlon-xp, pentium3, pentium4)
Nota: os pacotes de x86 (packages-x86-2005.1.iso) estão disponíveis em
nossos servidores, mas pentium3, pentium4 and athlon-xp só estão disponíveis
via bittorrent.
-
A arquitetura amd64 (amd64)
-
A arquitetura sparc (sparc64)
-
A arquitetura ppc (G3, G4, G5)
-
A arquitetura alpha
Se sua arquitetura (ou sub-arquitetura) não estiver na lista, você não pode
optar por uma instalação GRP.
Agora que a introdução terminou, vamos continuar com Carregando o CD de Instalação Universal.
2. Carregando o CD de instalação universal
2.a. Requisitos de hardware
Introdução
Antes de começar, primeiro iremos listar que requisitos de hardware você precisa
para instalar o Gentoo com sucesso em sua máquina.
Requisitos de hardware
| CPU |
Qualquer CPU PowerPC64 |
| Sistemas |
IBM RS/6000s, Power Macintosh G5, iMac G5, IBP pSeries e IBM OpenPower
|
| Memória |
64 MB |
| Espaço em disco |
1.5 GB (menos o espaço de swap) |
| Espaço de swap |
No mínimo 256 MB |
Para uma lista completa de sistemas suportados, por favor veja
http://www.linuxppc64.org/hardware.shtml.
2.b. O CD de instalação universal
Introdução
O Gentoo Linux pode ser instalado usando um arquivo de tarball de stage3.
Esta tarball é um arquivo que contém um ambiente mínimo, a partir do qual você
pode instalar o Gentoo Linux em seu sistema.
O time Gentoo/PPC64 oferece duas opções adicionais neste ponto. Você tem a
escolha de usar ferramentas de usuário de 32-bits ou 64-bits; um conjunto
completo de stages é fornecido para ambas opções.
Instalações usando um arquivo de tarball de stage1 ou stage2 não são
documentadas no Manual do Gentoo - por favor leia as
Perguntas freqüentes sobre o Gentoo
para mais informações.
O CD de instalação universal do Gentoo
Os CDs de instalação do Gentoo são CDs carregáveis que contêm um ambiente
Gentoo auto-suficiente. Eles permitem que você carregue o Linux a partir do CD.
Durante o processo de inicialização seu hardware é detectado e os módulos
apropriados são carregados. Eles são mantidos pelos desenvolvedores do Gentoo.
Os dois CDs de instalação que nós fornecemos atualmente são:
-
O CD de instalação universal contém tudo que você precisa para instalar o
Gentoo. Ele fornece arquivos de stage3 para arquiteturas comuns, código
fonte para aplicações adicionais que você precisa escolher e, claro, as
instruções de instalação para sua arquitetura.
-
O CD de instalação mínimo contém só um ambiente mínimo que permite que você
carregue e configure sua rede para que você possa conectar-se à Internet.
Ele não contém nenhum arquivo adicional e não pode ser usado durante este
método de instalação.
O Gentoo também oferece um CD de pacotes. Não é um CD de instalação, mas um
recurso adicional que você pode explorar durante a instalação de seu sistema
Gentoo. Ele contém pacotes pré-construídos (também conhecidos como conjunto de
GRP) que permitem que você instale aplicações adicionais de maneira rápida e
fácil (como OpenOffice.org, KDE, GNOME, ...) imediatamente após a instalação do
Gentoo e logo antes de você atualizar sua árvore do Portage.
O uso do CD de pacotes é coberto mais tarde neste documento.
2.c. Baixe, grave e carregue o CD de Instalação Universal
Baixando e gravando o CD de Instalação
Você pode baixar os CDs de instalação universal (e, se você quiser, o CD de
pacotes também) de um de nossos servidores. Os CDs de instalação estão
localizados no diretório releases/ppc64/2005.1-r1/installcd; os CDs de
pacotes estão localizados no diretório
releases/ppc64/2005.1/packagecd.
Dentro deste diretório você irá encontrar arquivos ISO. Eles são imagens
completas de CDs que você pode gravar em CD-R.
Depois de baixar o arquivo, você pode verificar sua integridade para ver se está
corrupto ou não:
-
Você pode verificar seu MD5 checksum e compará-lo com o MD5 checksum que
fornecemos (por exemplo com a ferramenta md5sum em Linux/Unix ou
md5sum para Windows).
Verificação de MD5 checksums com Mac OS X é descrito no Gentoo PPC FAQ.
-
Você pode verificar a assinatura criptográfica que nós fornecemos. Você
precisa obter a chave pública que nós usamos (17072058) antes de proceder,
no entanto.
Para obter nossa chave pública usando a aplicação GnuPG, rode o seguinte
comando:
Listagem de código 3.1: Obtendo a chave pública |
$ gpg --keyserver subkeys.pgp.net --recv-keys 17072058
|
Agora verifique a assinatura:
Listagem de código 3.2: Verifique a assinatura criptográfica |
$ gpg --verify <arquivo de assinatura> <iso baixada>
|
Para gravar ISO(s) baixada(s), você deve selecionar raw-burning. Como fazer isto
depende do programa. Iremos discutir o cdrecord e o K3B aqui; mais
informações podem ser encontradas em nosso Guia de perguntas freqüentes do
Gentoo.
-
Com o cdrecord, você simplesmente digita cdrecord dev=/dev/hdc
<arquivo iso baixado> (substitua /dev/hdc com o
caminho de seu drive de CD-RW).
-
Com o K3B, selecione Ferramentas > CD > Gravar
imagem. Então você pode encontrar seu arquivo ISO com o campo
'Imagem a ser gravada'. Finalmente clique em Iniciar.
Padrão: Carregando o CD de instalação em um Apple
Coloque o CD de Instalação no CD-ROM e reinicie o sistema. Segure a tecla 'C'
durante o processo de inicialização. Você verá uma simpática mensagem de
boas-vindas e um prompt boot: na parte de baixo da tela.
Você também pode ajustar algumas opções de kernel neste prompt. A seguinte
tabela lista as opções de inicialização disponíveis que você pode adicionar:
| Opção de inicialização |
Descrição |
| video |
Esta opção cuida das seguintes
Esta opção leva uma das seguintes tags específicas de fabricante:
radeonfb, rivafb, atyfb, aty128 ou
ofonly. Você pode usar esta tag com a resolução e taxa de freqüência
que você quer usar. Por exemplo video=radeonfb:1280x1024@75. Se você
não tiver certeza de o que escolher, ofonly irá quase certamente
funcionar.
|
| nol3 |
Desliga cache de nível 3 em alguns powerbooks (necessário para a versão de
17")
|
| debug |
Ativa carregamento verbal, abre uma shell de initrd que pode ser usada para
fazer debug do CD de instalação
|
| sleep=X |
Esperar X segundos antes de continuar; isto pode ser necessário para alguns
CD-ROM SCSI velhos que não rodam o CD rápido o suficiente
|
| bootfrom=X |
Fazer inicialização de um dispositivo diferente
|
Neste prompt, aperte enter, e um ambiente completo de Gentoo Linux será
carregado do CD. Continue com E uma vez que você fez a
inicialização....
Carregando o CD de instalação em um IBM pSeries
Para máquinas da pSeries, algumas vezes os CDs podem não fazer a inicialização
automática. Você pode ter que configurar seu cdrom como dispositivo carregável
no menu de multi-boot (F1 na hora de ligar). A outra opção é entrar no OF e
fazer a partir de lá:
1) Carregue o OF (este é o 8 do console serial ou F8 de um console
gráfico, comece a apertar a tecla quando você vir as mensagens sobre
teclado, mouse e outros
2) rode o comando 0> boot cdrom:1,yaboot
3) relaxe e aproveite!
E uma vez que você fez a inicialização...
Você verá um prompt de administrador (root) ("#") no console atual. Você também
pode mudar para outros consoles apertando Alt-fn-F2, Alt-fn-F3 e Alt-fn-F4.
Volte ao console que você começou apertando Alt-fn-F1.
Se você estiver instalando o Gentoo em um sistema sem teclado americano, use o
loadkeys para carregar o mapa de teclado para seu teclado. Para listar
todos mapas de teclado disponíveis, execute ls /usr/share/keymaps/i386.
Listagem de código 3.3: Listando mapas de teclado disponíveis |
# ls /usr/share/keymaps/i386
|
Agora carregue o mapa de teclado de sua escolha:
Listagem de código 3.4: Carregando um mapa de teclado |
# loadkeys be-latin1
|
Agora continue com a Configuração de hardware
adicional.
Configuração de hardware adicional
Quando o CD de instalação carrega, ele tenta detectar todos seus dispositivos de
hardware e carregar os módulos de kernel apropriados para suportar seu hardware.
Na vasta maioria dos casos, ele faz um bom trabalho. Todavia, em alguns casos,
ele pode não carregar automaticamente os módulos de kernel de que você precisa.
Se a auto-detecção de PCI pulou algum hardware de seu sistema, você terá de
carregar o driver apropriado manualmente.
No próximo exemplo nós tentamos carregar o módulo 8139too (suporte para
alguns tipos de interface de rede):
Listagem de código 3.5: Carregando módulos de kernel |
# modprobe 8139too
|
Opcional: Ajustando performance de disco rígido
Se você é um usuário avançado, você pode querer ajustar a performance do disco
rígido IDE usando o comando hdparm. Com as opções -tT, você pode
testar a performance de seu disco (execute várias vezes para ter uma idéia mais
precisa):
Listagem de código 3.6: Testando performance de disco |
# hdparm -tT /dev/hda
|
Para ajustar, você pode usar qualquer um dos seguintes exemplos (ou experimentar
por contra própria) que usam /dev/hda como o disco (substitua com
seu disco):
Listagem de código 3.7: Ajustando performance de disco rígido |
# hdparm -d 1 /dev/hda
# hdparm -d 1 -A 1 -m 16 -u 1 -a 64 /dev/hda
|
Opcional: Contas de usuários
Se você planeja que outras pessoas tenham acesso a seu ambiente de instalação ou
você deseja conversar usando o irssi sem privilégios de administrador
(root) (por razões de segurança), você precisa criar as contas de usuário
necessárias e mudar a senha de administrador (root).
Para mudar a senha de administrador (root), use o comando passwd:
Listagem de código 3.8: Mudando a senha de administrador (root) |
# passwd
New password:
Re-enter password:
|
Para criar uma conta de usuário, primeiro entramos suas credenciais, seguido da
senha. Podemos usar useradd e passwd para essas tarefas. No
próximo exemplo, iremos criar um usuário chamado "joao".
Listagem de código 3.9: Criando uma conta de usuário |
# useradd -m -G users joao
# passwd joao
New password:
Re-enter password:
|
Você pode mudar sua id de usuário de administrador (root) para a conta recém
criada usando o comando su:
Listagem de código 3.10: Mudando id de usuário |
# su - joao
|
Opcional: Vendo documentação durante a instalação
Se você quiser ler o Manual do Gentoo durante a instalação, certifique-se que
você criou uma conta de usuário (veja Opcional: Contas
de usuário). Então aperte Alt-F2 para ir para um novo terminal e
fazer log-in.
Se você quiser ver a documentação no CD você pode imediatamente rodar
links2 para lê-la:
Listagem de código 3.11: Vendo a documentação do CD |
# links2 /mnt/cdrom/docs/handbook/html/index.html
|
No entanto, é recomendável que você use o Manual do Gentoo online, uma vez que
ele será mais recente que a versão disponível no CD.
Listagem de código 3.12: Vendo a documentação online |
# links2 http://www.gentoo.org/doc/pt_br/handbook/handbook-ppc64.xml
|
Você pode voltar a seu terminal original apertando Alt-F1.
Opcional: Iniciando o Daemon do SSH
Se você quiser permitir que outros usuários acessem seu computador durante a
instalação do Gentoo (talvez porque esses usuários vão ajudá-lo a instalar o
Gentoo, ou instalar o Gentoo para você), você precisa criar uma conta de usuário
para eles e talvez até mesmo dar sua senha de administrador (root) (só
faça isso se você tem confiança total no usuário).
Para iniciar o daemon do SSH, execute o seguinte comando:
Listagem de código 3.13: Iniciando o daemon do SSH |
# /etc/init.d/sshd start
|
Para usar o sshd, você primeiro precisa configurar sua rede. Continue com o
capítulo Configurando sua rede.
3. Configurando sua rede
3.a. Você precisa de rede?
Quem pode fazer sem?
Geralmente, você não precisa de uma conexão de rede funcionando para instalar o
Gentoo usando o CD de instalação universal. No entanto, em algumas
circunstâncias você deve ter uma conexão à Internet funcionando:
-
Os arquivos de stage3 que estão gravados no CD de instalação universal não
batem com sua arquitetura e você precisa baixar o arquivo de stage3 correto
-
Você precisa instalar uma aplicação de rede específica que irá permitir que
você conecte-se a Internet que não está disponível no CD de instalação
universal, mas é suportada pelo CD de instalação (isto é, você pode
conectar-se à Internet usando o CD de instalação, mas as fontes necessárias
não estão disponíveis do CD de instalação)
-
Você quer assistência remota durante a instalação (usando SSH ou através de
conversas diretas usando IRC)
Eu preciso de rede?
Para descobrir se o arquivo de stage3 para sua arquitetura está disponível, olhe
dentro de /mnt/cdrom/stages e verifique se um dos stages bate com
sua arquitetura. Se não, você ainda pode optar por um arquivo de stage3 de uma
arquitetura compatível com a sua.
Se você, por outro lado, quiser usar um arquivo de stage3 otimizado para sua
arquitetura e o arquivo de stage3 de sua escolha não está disponível, então você
irá precisar de rede para baixar o arquivo de stage3 adequado.
Se você não precisa de rede, você pode pular o resto deste capítulo e continuar
com Preparando os discos. Caso contrário,
continue com as seções de configuração de rede abaixo.
3.b. Detecção automática de rede
Talvez simplesmente funcione?
Se seu sistema está conectado numa rede Ethernet com um servidor DHCP, é muito
provável que sua configuração de rede já foi configurada automaticamente para
você. Se foi, você já pode tirar proveito dos comandos de rede inclusos no CD de
instalação como ssh, scp, ping, irssi, wget e
links, entre outros.
Se a rede foi configurada para você, o comando /sbin/ifconfig deve listar
algumas interfaces de rede fora a lo, como a eth0, por exemplo:
Listagem de código 2.1: saída do /sbin/ifconfig para uma configuração de rede funcional |
# /sbin/ifconfig
eth0 Link encap:Ethernet HWaddr 00:50:BA:8F:61:7A
inet addr:192.168.0.2 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::50:ba8f:617a/10 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1498792 errors:0 dropped:0 overruns:0 frame:0
TX packets:1284980 errors:0 dropped:0 overruns:0 carrier:0
collisions:1984 txqueuelen:100
RX bytes:485691215 (463.1 Mb) TX bytes:123951388 (118.2 Mb)
Interrupt:11 Base address:0xe800
|
Opcional: Configurando um proxy
Se você acessa a Internet através de um proxy, será necessário configurar as
informações do proxy durante a instalação. É muito fácil definir um proxy:
você só precisa definir uma variável que contenha as informações do servidor de
proxy.
Na maior parte dos casos, você pode definir as variáveis usando o nome do
servidor. Como exemplo, presumimos que o proxy se chama proxy.gentoo.org
e a porta é 8080.
Listagem de código 2.2: Definindo servidores de proxy |
# export http_proxy="http://proxy.gentoo.org:8080"
# export ftp_proxy="ftp://proxy.gentoo.org:8080"
# export RSYNC_PROXY="proxy.gentoo.org:8080"
|
Se seu proxy requer usuário e senha, você deve usar a seguinte sintaxe para a
variável:
Listagem de código 2.3: Adicionando usuário/senha para a variável do proxy |
http://username:password@proxy.gentoo.org:8080
|
Testando a rede
Talvez você queira fazer ping do servidor de DNS de seu provedor de Internet
(encontrado em /etc/resolv.conf) e um site da Web de sua escolha,
para certificar que seus pacotes estão chegando na rede, que a resolução de DNS
está funcionando corretamente, etc...
Listagem de código 2.4: Testes adicionais de rede |
# ping -c 3 www.yahoo.com
|
Se você consegue usar sua rede, você pode pular o restante desta seção e
continuar com Preparando os discos. Se não,
continue lendo.
3.c. Configuração de rede automática
Se sua conexão de rede não funcionar de imediato, algumas mídias de instalação
permitem usar o net-setup (para conexões de rede genéricas ou redes
wireless), o adsl-setup (para usuários ADSL) ou o pptp (para
usuários PPTP - somente disponível para x86).
Se sua mídia de instalação não contiver nenhuma dessas ferramentas ou sua
conexão de rede não estiver funcionando ainda, continue com Configuração de rede manual.
Padrão: usando o net-setup
A maneira mais simples de configurar uma conexão de rede, se não foi configurada
automaticamente, é executar o script net-setup:
Listagem de código 3.1: Executando o script net-setup |
# net-setup eth0
|
O net-setup irá fazer algumas perguntas sobre seu ambiente de rede.
Quando tudo estiver pronto, você deve ter uma conexão de rede funcionando. Teste
sua conexão de rede como mencionado anteriormente. Se os testes forem positivos,
parabéns! Você está pronto para instalar o Gentoo. Pule o resto desta seção e
continue com Preparando os discos.
Se sua conexão de rede ainda não estiver funcionando, continue com Configuração manual da rede.
Alternativa: usando RP-PPPoE
Presumindo que você precisa de PPPoE para se conectar à Internet, o CD de
instalação (qualquer versão) facilitou as coisas para você ao incluir o
rp-pppoe. Use o script adsl-setup oferecido para configurar sua
conexão. Um prompt será exibido solicitando informações do dispositivo ethernet
que está conectado ao seu modem adsl, seu nome de usuário e senha, os IPs dos
seus servidores de DNS e se você precisa de um firewall básico ou não.
Listagem de código 3.2: Usando o rp-pppoe |
# adsl-setup
# adsl-start
|
Se algo der errado, verifique novamente se digitou corretamente seu nome de
usuário e senha olhando em /etc/ppp/pap-secrets ou
/etc/ppp/chap-secrets e certifique-se que está usando o dispositivo
correto. Se seu dispositivo ethernet não existir, você terá que carregar o
módulo apropriado de rede. Neste caso você deve continuar com a Configuração manual de rede onde explicamos como
carregar os módulos apropriados.
Se tudo funcionar, continue com Preparando os
discos.
Alternativa: usando PPTP
Nota:
Suporte a PPTP só está disponível para x86
|
Se você precisa de suporte PPTP, pode usar o pptpclient que está
disponível nos nossos CDs de instalação. Mas primeiro certifique-se que sua
configuração está correta. Edite o /etc/ppp/pap-secrets ou
/etc/ppp/chap-secrets para que contenha a combinação correta de
usuário/senha:
Listagem de código 3.3: Editando o /etc/ppp/chap-secrets |
# nano -w /etc/ppp/chap-secrets
|
Então ajuste o /etc/ppp/options.pptp se necessário:
Listagem de código 3.4: Editando o /etc/ppp/options.pptp |
# nano -w /etc/ppp/options.pptp
|
Quando tudo estiver pronto, simplesmente execute pptp (juntamente com as
opções que não puderem ser configuradas em options.pptp) para
conectar ao servidor:
Listagem de código 3.5: Conectando a um servidor dial-in |
# pptp <ip do servidor>
|
Agora continue com Preparando os discos.
3.d. Configuração manual de rede
Carregando os módulos de rede apropriados
Quando o CD de instalação inicia, ele tenta detectar todos os seus dispositivos
de hardware e carregar os módulos (drivers) apropriados do kernel que suportem
seu hardware. Na maioria dos casos, isto funciona bem. Entretanto, em alguns
casos, os módulos necessários podem não ser carregados automaticamente.
Se o net-setup ou o adsl-setup falhou, então é possível que seu
adaptador de rede não foi encontrado automaticamente. Isto significa que você
terá que carregar o módulo apropriado do kernel manualmente.
Para saber que módulos de kernel nós fornecemos para rede, use ls:
Listagem de código 4.1: Procurando módulos disponíveis |
# ls /lib/modules/`uname -r`/kernel/drivers/net
|
Se encontrar um driver para seu adaptador de rede, use o modprobe para
carregar o módulo do kernel:
Listagem de código 4.2: Usando o modprobe para carregar um módulo do kernel |
# modprobe pcnet32
|
Para certificar-se de que seu adaptador de rede foi detectado, use
ifconfig. Um adaptador de rede deverá ser detectado e o resultado será
parecido com isto:
Listagem de código 4.3: Testando se seu adaptador de rede foi carregado, com sucesso |
# ifconfig eth0
eth0 Link encap:Ethernet HWaddr FE:FD:00:00:00:00
BROADCAST NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
|
Se, entretanto, você receber o seguinte erro, o adaptador de rede não foi
detectado:
Listagem de código 4.4: Testando se seu adaptador de rede foi carregado, com falhas |
# ifconfig eth0
eth0: error fetching interface information: Device not found
|
Se você tiver adaptadores de rede múltiplos em seu sistema, eles serão nomeados
como eth0, eth1, etc. Certifique-se de que o adaptador de rede que
você deseja usar esteja funcionando bem e lembre-se de usar o nome correto
durante todo o documento. Iremos presumir que o adaptador de rede que será usado
seja o eth0.
Presumindo que agora você tem uma placa de rede detectada, você pode tentar
novamente o net-setup ou o adsl-setup (que agora devem funcionar),
mas, para as pessoas com a mão na massa como você, nós explicamos como
configurar sua rede manualmente.
Selecione uma das seguintes seções com base na sua configuração de rede:
Usando DHCP
DHCP (Dynamic Host Configuration Protocol) torna possível receber informações da
conexão de rede automaticamente (Endereço IP, máscara de rede, endereço de
broadcast, roteador, servidores de nomes, etc...). Isto só irá funcionar se
houver um servidor DHCP na sua rede (ou se seu provedor tiver um serviço de
DHCP). Para seu adaptador de rede receber estas informações automaticamente,
utilize o dhcpcd:
Listagem de código 4.5: Usando o dhcpcd |
# dhcpcd eth0
# dhcpcd -HD eth0
|
Se isto funcionar (tente executar um ping para algum servidor na internet, como
o Google), então tudo está configurado e
pronto para continuar. Pule o restante desta seção e continue com Preparando os discos.
Preparando para acesso wireless
Nota:
Suporte para o comando iwconfig só está disponível para CDs de instalação
para x86, amd64 e ppc. Você ainda pode conseguir que as extensões funcionem
seguindo as instruções do linux-wlan-ng
project.
|
Se você estiver usando um cartão wireless (802.11), pode ser necessário
configurar suas informações de wireless antes de continuar. Para verificar as
configurações atuais do seu cartão wireless, utilize o iwconfig. Ao
executar iwconfig você verá algo parecido com:
Listagem de código 4.6: Exibindo suas configurações de wireless atuais |
# iwconfig eth0
eth0 IEEE 802.11-DS ESSID:"GentooNode"
Mode:Managed Frequency:2.442GHz Access Point: 00:09:5B:11:CC:F2
Bit Rate:11Mb/s Tx-Power=20 dBm Sensitivity=0/65535
Retry limit:16 RTS thr:off Fragment thr:off
Power Management:off
Link Quality:25/10 Signal level:-51 dBm Noise level:-102 dBm
Rx invalid nwid:5901 Rx invalid crypt:0 Rx invalid frag:0 Tx
excessive retries:237 Invalid misc:350282 Missed beacon:84
|
Nota:
Alguns cartões de wireless podem ter o nome do dispositivo como wlan0 ou
ra0 ao invés de eth0. Rode iwconfig sem parâmetros de linha
de comando para determinar o nome correto do dispositivo.
|
Para a maioria dos usuários, existem somente duas configurações que devem ser
importantes para alterar, o ESSID (que é o nome da rede wireless) ou a chave
WEP. Se o ESSID e o endereço do Access Point listados são os mesmos que o do seu
access point e você não estiver usando WEP, então sua rede wireless está
funcionando. Caso precise alterar seu ESSID, ou adicionar uma chave WEP, você
pode fazer isso com os seguintes comandos:
Listagem de código 4.7: Alterando o ESSID e/ou adicionando uma chave WEP |
# iwconfig eth0 essid GentooNode
# iwconfig eth0 key 1234123412341234abcd
# iwconfig eth0 key s:uma-senha
|
Você pode então confirmar suas configurações wireless utilizando novamente o
iwconfig. Se sua conexão wireless estiver funcionando, você pode
continuar configurando as opções da rede com relação a IP como descritos na
próxima seção (Entendendo a terminologia de
rede) ou utilize a ferramenta net-setup como descrito
anteriormente.
Entendendo a terminologia de rede
Nota:
Se você conhece seu endereço IP, endereço de broadcast, máscara de rede e
servidores de nomes, então pode pular o restante dessa sub-seção e continuar
com Usando ifconfig e route.
|
Se tudo acima falhar, você terá que configurar sua conexão de rede manualmente.
Não é difícil. Todavia, você deve estar familiarizado com uma certa terminologia
de rede, já que você precisará dela para configurar sua rede satisfatoriamente.
Quando terminar de ler isto, você irá saber o que é um roteador, para que
serve uma máscara de rede, como um endereço de broadcast é formado
e porque você precisa de um servidor de nomes.
Em uma rede, hosts são identificados pelo seu endereço IP (endereço de
Internet Protocol). Este endereço é uma combinação de quatro números entre 0 e
255. Bem, pelo menos é como nós o percebemos. Na realidade, estes endereços IP
consistem de 32 bits (uns (1) e zeros (0)). Vamos ver um exemplo:
Listagem de código 4.8: Exemplo de um endereço IP |
Endereço IP (números): 192.168.0.2
Endereço IP (bits): 11000000 10101000 00000000 00000010
-------- -------- -------- --------
192 168 0 2
|
Tal endereço IP só pertence a um host no que diz respeito às redes acessíveis
(isto é, todos hosts a que você consegue conectar têm endereços IP individuais).
Para poder distinguir entre hosts dentro de uma rede e hosts fora de uma rede, o
endereço IP é dividido em duas partes: a parte de rede e a parte de
host.
A separação é escrita com a máscara de rede, uma coleção de uns seguidos
de uma coleção de zeros. A parte do IP que pode ser mapeadas em uns é parte de
rede, a outra é a parte de host. Como sempre, a máscara pode ser escrita como um
endereço IP.
Listagem de código 4.9: Exemplo da separação de rede/host |
Endereço IP: 192 168 0 2
11000000 10101000 00000000 00000010
netmask: 11111111 11111111 11111111 00000000
255 255 255 0
+--------------------------+--------+
Rede Host
|
Em outras palavras, o 192.168.0.14 faz parte da nossa rede exemplo, mas o
192.168.1.2 não.
O endereço de broadcast é um endereço IP com a mesma parte de rede de sua
rede, mas só com uns na parte de host. Cada host em sua rede escuta a este
endereço IP. Ele realmente serve para fazer broadcasting de pacotes.
Listagem de código 4.10: Endereço de broadcast |
Endereço IP: 192 168 0 2
11000000 10101000 00000000 00000010
Broadcast: 11000000 10101000 00000000 11111111
192 168 0 255
+--------------------------+--------+
Rede Host
|
Para poder surfar na internet, você precisa saber que host divide a conexão de
Internet. Este host é chamado de roteador. Já que é um host normal, ele
tem um endereço de IP normal (por exemplo, 192.168.0.1).
Nós dissemos anteriormente que cada host tem seu próprio endereço IP. Para poder
alcançar este host através de um nome (ao invés de um endereço IP) você precisa
de um serviço que traduz um nome (como dev.gentoo.org) para um endereço
IP (como 64.5.62.82). Tal serviço é chamado um serviço de nomes. Para
usar tal serviço, você precisa definir os servidores de nome em
/etc/resolv.conf.
Em alguns casos, seu roteador também funciona como servidor de nome. Caso
contrário, você tem que digitar os servidores de nome dados pelo seu provedor de
Internet.
Para resumir, você precisa das seguintes informações para continuar:
| Ítem de rede |
Exemplo |
| Seu endereço IP |
192.168.0.2 |
| Máscara de rede |
255.255.255.0 |
| Broadcast |
192.168.0.255 |
| Roteador |
192.168.0.1 |
| Servidor(es) de nome(s) |
195.130.130.5, 195.130.130.133 |
Usando ifconfig e route
Configurar sua rede consiste de três passos. Primeiro iremos atribuir um
endereço IP usando ifconfig. Então configuramos o roteamento para o
roteador utilizando route. E terminamos colocando os endereços IP dos
servidores de nomes em /etc/resolv.conf.
Para atribuir um endereço IP, você irá precisar do seu endereço IP, endereço
de broadcast e máscara de rede. Então execute o seguinte comando, substituindo
${IP_ADDR} com seu endereço IP, ${BROADCAST} com seu endereço
de broadcast e ${NETMASK} com sua máscara de rede:
Listagem de código 4.11: Usando o ifconfig |
# ifconfig eth0 ${IP_ADDR} broadcast ${BROADCAST} netmask ${NETMASK} up
|
Agora configure a rota usando o route. Substitua ${GATEWAY} com
o endereço IP do seu roteador:
Listagem de código 4.12: Usando o route |
# route add default gw ${GATEWAY}
|
Agora abra o /etc/resolv.conf com seu editor favorito (no nosso
exemplo, utilizamos o nano):
Listagem de código 4.13: Criando o /etc/resolv.conf |
# nano -w /etc/resolv.conf
|
Agora defina seu(s) servidor(es) de nomes usando o seguinte como modelo. Tenha
certeza que substituiu ${NAMESERVER1} e ${NAMESERVER2} com os
endereços apropriados do(s) servidor(es) de nomes:
Listagem de código 4.14: modelo de /etc/resolv.conf |
nameserver ${NAMESERVER1}
nameserver ${NAMESERVER2}
|
Isto é tudo. Agora teste sua rede usando o ping para algum servidor Internet
(como Google). Se isto funcionar,
parabéns. Agora você está pronto para instalar o Gentoo. Continue com Preparando os discos.
4. Preparando os discos
4.a. Introdução a dispositivos de bloco
Dispositivos de bloco
Iremos estudar os aspectos de manuseio de discos do Gentoo Linux e do Linux em
geral, incluindo sistemas de arquivos de Linux, partições e dispositivos de
bloco. Uma vez que você estiver familiar com o funcionamento de discos e
sistemas de arquivos, iniciaremos o processo de configuração de partições e
sistemas de arquivos para sua instalação do Gentoo Linux.
Para começar, vamos introduzir os dispositivos de bloco. O dispositivo de
bloco mais famoso é provavelmente aquele que representa o primeiro disco IDE em
um sistema Linux, chamado de /dev/hda. Se o seu sistema usa discos
SCSI, então seu primeiro disco rígido deve ser /dev/sda.
Dispositivos Serial ATA também são /dev/sda mesmo se forem
dispositivos IDE.
Os dispositivos de bloco acima representam uma interface abstrata para o disco.
Programas de usuário podem usar os dispositivos de bloco para interagir com seu
disco sem preocupação se eles são IDE, SCSI ou outra coisa. O programa pode
simplesmente classificar o espaço de armazenagem no disco como um monte de
blocos de 512 bytes contíguos acessíveis aleatoriamente.
Partições e slices (fatias)
Embora seja teoricamente possível usar um disco inteiro para armazenar seu
sistema Linux, isto é quase nunca feito na prática. Ao invés disso, dispositivos
de bloco de discos são divididos em dispositivos de bloco menores e mais fáceis
de manusear. Na maior parte dos sistemas, são chamados de partições.
Outras arquiteturas usam uma técnica parecida, chamada de slices.
4.b. Desenhando um esquema de particionamento
Esquema de particionamento padrão
Se você não está interessado em desenhar um esquema de particionamento para seu
sistema, você pode usar o esquema de particionamento que usamos neste manual
inteiro:
| Partição |
Sistema de arquivos |
Tamanho |
Descrição |
| /dev/sda1 |
Mapa de partições |
31.5k |
Mapa de partições |
| /dev/sda2 |
(bootstrap) |
800k |
Apple_Bootstrap |
| /dev/sda3 |
(swap) |
512M |
Partição de swap |
| /dev/sda4 |
ext3 |
Resto do disco |
Partição raiz (root) |
Nota:
Existem algumas partições chamadas assim: Apple_Driver43,
Apple_Driver_ATA, Apple_FWDriver, Apple_Driver_IOKit, Apple_Patches.
Se você não planeja usar MacOS 9 você pode apagá-las, porque o MacOS X e o Linux
não precisam delas. Você pode ter que usar o parted para poder apagá-las, já que
o mac-fdisk ainda não consegue apagá-las.
|
Se você estiver interessado em saber que tamanho uma partição deve ter, ou mesmo
quantas partições você precisa, leia mais. Caso contrário, continue agora com
Apple G5: Usando o mac-fdisk para particionar o seu
disco ou IBM pSeries, iSeries e OpenPower: usando o
fdisk para particionar o seu disco.
Quantas e de que tamanho?
O número de partições depende muito de seu ambiente. Por exemplo, se você tem
muitos usuários, você provavelmente deve ter seu /home separado
para aumentar a segurança e tornar backups mais fáceis. Se você estiver
instalando o Gentoo para funcionar como um servidor de e-mails, seu
/var deve ser separado, uma vez que todos e-mails são gravados
dentro de /var. Uma boa escolha de sistema de arquivos irá
maximizar sua performance. Servidores de jogos têm uma partição
/opt separada, uma vez que a maior parte de servidores de jogos são
instalados lá. A razão é semelhante à do /home: segurança e
backups. Você deve manter seu /usr grande: não só irá conter a
maior parte das aplicações, a árvore do Portage sozinha toma em torno de 500
Mbytes, excluindo as várias fontes que são gravadas nela.
Como você pode ver, muito depende do que você quer fazer. Partições ou volumes
separados têm as seguintes vantagens:
-
Você pode escolher o sistema de arquivos de melhor performance para cada
partição ou volume
-
Seu sistema inteiro não irá ficar sem espaço se uma ferramenta defunta
estiver continuamente escrevendo arquivos em uma partição ou volume
-
Se necessárias, verificações de sistemas de arquivos têm seu tempo reduzido,
já que verificações múltiplas podem ser feitas em paralelo (embora esta
vantagem seja maior com vários discos que com várias partições)
-
A segurança pode ser melhorada ao montar algumas partições ou volumes como
somente-leitura, nosuid (bits de setuid são ignorados), noexec (bits
executáveis são ignorados), etc...
No entanto, partições múltiplas têm uma grande desvantagem: se não forem
configuradas apropriadamente, você pode acabar com um sistema com muito espaço
livre em uma partição e nenhum em outra. Também existe um limite de 15 partições
para SCSI e SATA.
4.c. Padrão: Usando o mac-fdisk para particionar o seu disco (Apple G5)
Neste ponto, crie suas partições usando o mac-fdisk:
Listagem de código 3.1: Iniciando o mac-fdisk |
# mac-fdisk /dev/sda
|
Primeiro apague as partições que você criou anteriormente para abrir espaço para
suas partições de Linux. Use d no mac-fdisk para apagar essas
partições. Ele irá perguntar que número de partição deve apagar.
Segundo, crie uma partição Apple_Bootstrap usando b. Ele irá
perguntar que bloco que você quer que comece. Coloque o número de sua primeira
partição livre, seguido de um p. Por exemplo, 2p.
Nota:
Esta partição não é uma partição de "inicialização". Ela não é usada pelo
Linux de forma alguma; você não tem que colocar nenhum sistema de arquivos nela
e nunca deve montá-la. Usuários de PPC não precisam de uma partição adicional
para /boot.
|
Agora crie uma partição de swap usando c. De novo o mac-fdisk irá
perguntar em que bloco que você quer que esta partição comece. Como nós usamos
2 antes para criar a partição de Apple_Bootstrap, você agora tem que
colocar 3p. Quando perguntado o tamanho, digite 512M (ou o tamanho
que você quiser). Quando perguntado o nome, digite swap (obrigatório).
Para criar a partição raiz (root), digite c, seguido de 4p para
selecionar em que bloco a partição raiz (root) deve começar. Quando perguntado o
tamanho, digite 4p novamente. O mac-fdisk irá interpretar isso
como "Use todo o espaço disponível". Quando pedirem o nome, digite root
(obrigatório).
Para terminar, escreva a partição no disco usando w e q para sair
do mac-fdisk.
Nota:
Para ter certeza de que tudo está bem, você deve rodar o mac-fdisk mais uma vez
e ver se todas partições estão lá. Se você não vir nenhuma partição que você
criou, ou as mudanças que você fez, você deve reinicializar suas partições
apertando "i" no mac-fdisk. Note que isso irá recriar o mapa de partições e
remover todas suas partições.
|
Agora que suas partições foram criadas, você pode continuar com Criando sistemas de arquivos.
4.d. IBM pSeries, iSeries e OpenPower: usando o fdisk para particionar seu
disco
Nota:
Se você estiver planejando usar um array de discos RAID para sua instalação do
Gentoo e estiver usando hardware baseado em POWER5, você deve agora rodar
iprutils para formatar os discos com formato Advanced Function e criar o
array de discos. Você também deve considerar instalar este pacote depois de
terminada a instalação.
|
As partes seguintes explicam como criar o arranjo de partições descrito
anteriormente:
| Partição |
Descrição |
| /dev/sda1 |
Partição PPC PReP Boot |
| /dev/sda2 |
Partição de swap |
| /dev/sda3 |
Partição raiz (root) |
Mude o arranjo de partições de acordo com sua preferência.
Vendo o arranjo de partições atual
O fdisk é uma ferramenta popular e poderosa para dividir seu disco em
partições. Inicie o fdisk em seu disco (em nosso exemplo, usamos
/dev/sda):
Listagem de código 4.1: Iniciando o fdisk |
# fdisk /dev/sda
|
Uma vez dentro do fdisk, você verá um prompt que se parece com o
seguinte:
Listagem de código 4.2: prompt do fdisk |
Command (m for help):
|
Digite p para mostrar a configuração de partições atual de seu disco:
Listagem de código 4.3: Um exemplo de configuração de partições |
Command (m for help): p
Disk /dev/sda: 30.7 GB, 30750031872 bytes
141 heads, 63 sectors/track, 6761 cylinders
Units = cylinders of 8883 * 512 = 4548096 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 12 53266+ 83 Linux
/dev/sda2 13 233 981571+ 82 Linux swap
/dev/sda3 234 674 1958701+ 83 Linux
/dev/sda4 675 6761 27035410+ 5 Extended
/dev/sda5 675 2874 9771268+ 83 Linux
/dev/sda6 2875 2919 199836 83 Linux
/dev/sda7 2920 3008 395262 83 Linux
/dev/sda8 3009 6761 16668918 83 Linux
Command (m for help):
|
Este disco está configurado para armazenar seis sistemas de arquivos Linux (cada
um com uma partição correspondente listada como "Linux") bem como uma partição
de swap (listada como "Linux swap").
Apagando todas partições
Iremos primeiro apagar todas partições existentes do disco. Digite d para
apagar uma partição. Por exemplo, para apagar um /dev/sda1 já
existente:
Nota:
Se você não quiser apagar todas partições, apague somente aquelas que você quer
apagar. Neste ponto o autor recomenda fazer cópias de todos seus dados para
evitar perdê-los.
|
Listagem de código 4.4: Apagando uma partição |
Command (m for help): d
Partition number (1-4): 1
|
A partição foi agendada para ser apagada. Ela não irá mais aparecer se você
digitar p, mas não será apagada até que suas mudanças sejam salvas. Se
você cometeu um erro e quer abortar sem salvar suas mudanças, digite q
imediatamente e aperte enter e sua partição não será apagada.
Agora, presumindo que você realmente quer apagar todas partições de seu sistema,
aperte p repetidamente para mostrar uma listagem de partições e então
digite d e o número da partição para apagá-la. No fim, você terminará
com uma tabela de partições sem nada:
Listagem de código 4.5: Uma tabela de partições vazia |
Disk /dev/sda: 30.7 GB, 30750031872 bytes
141 heads, 63 sectors/track, 6761 cylinders
Units = cylinders of 8883 * 512 = 4548096 bytes
Device Boot Start End Blocks Id System
Command (m for help):
|
Agora que a tabela de partições na memória está vazia, estamos prontos para
criar as partições. Nós iremos usar o esquema de particionamento padrão que
discutimos anteriormente. Lógico, não siga as instruções à risca se você não
quer o mesmo esquema de particionamento!
Criando a partição de PPC PReP boot
Nós primeiro criamos uma pequena partição de PReP boot. Digite n para
criar uma nova partição, então p para selecionar uma partição primária,
seguido de 1 para selecionar a primeira partição primária. Quando for
pedido o primeiro cilindro, aperte enter. Quando for pedido o último cilindro,
digite +7M para criar uma partição de 7 Mbytes. Depois que você fez isso,
digite t para ajustar o tipo de partição, 1 para selecionar a
partição que você acaba de criar e então digite 41 para ajustar o tipo de
partição para "PPC PReP Boot". Finalmente, você precisa marcar a partição PReP
como carregável.
Nota:
A partição de PReP tem que ser menor que 8 MBytes!
|
Listagem de código 4.6: Criando a partição de PReP boot |
Command (m for help): p
Disk /dev/sda: 30.7 GB, 30750031872 bytes
141 heads, 63 sectors/track, 6761 cylinders
Units = cylinders of 8883 * 512 = 4548096 bytes
Device Boot Start End Blocks Id System
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-6761, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-6761, default
6761): +8M
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 41
Changed system type of partition 1 to 41 (PPC PReP Boot)
Command (m for help): a
Partition number (1-4): 1
Command (m for help):
|
Agora, quando você digitar p, você verá o seguinte esquema de
particionamento:
Listagem de código 4.7: Partição de boot criada |
Command (m for help): p
Disk /dev/sda: 30.7 GB, 30750031872 bytes
141 heads, 63 sectors/track, 6761 cylinders
Units = cylinders of 8883 * 512 = 4548096 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 3 13293 41 PPC PReP Boot
Command (m for help):
|
Criando a partição de swap
Vamos agora criar a partição de swap. Para fazer isto, digite n para
criar uma nova partição, então p para dizer ao fdisk que você quer uma
partição primária. Então digite 2 para criar a segunda partição primária,
/dev/sda2 em nosso caso. Quando for pedido o primeiro cilindro,
aperte enter. Quando for pedido o último cilindro, digite +512M para
criar uma partição de 512MB. Depois que você fez isso, digite t para
ajustar o tipo de partição, 2 para selecionar a partição que você acaba
de criar e então digite 82 para ajustar o tipo de partição para "Linux
Swap". Depois de completar estes passos, ao digitar p você verá uma
tabela de partições parecida com a seguinte:
Listagem de código 4.8: Listagem de partições depois de criar a partição de swap |
Command (m for help): p
Disk /dev/sda: 30.7 GB, 30750031872 bytes
141 heads, 63 sectors/track, 6761 cylinders
Units = cylinders of 8883 * 512 = 4548096 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 3 13293 41 PPC PReP Boot
/dev/sda2 4 117 506331 82 Linux swap
Command (m for help):
|
Criando a partição raiz (root)
Finalmente, vamos criar a partição raiz (root). Para fazer isso, digite n
para criar uma nova partição, então p para dizer ao fdisk que você quer
uma partição primária. Então digite 3 para criar a terceira partição
primária, /dev/sda3 em nosso caso. Quando for pedido o primeiro
cilindro, aperte enter. Quando for pedido o último cilindro, aperte enter para
criar uma partição que toma o resto do espaço restante em seu disco. Depois de
completar estes passos, ao digitar p você verá uma tabela de partições
parecida com a seguinte:
Listagem de código 4.9: Listagem de partições depois de criar a partição raiz (root) |
Command (m for help): p
Disk /dev/sda: 30.7 GB, 30750031872 bytes
141 heads, 63 sectors/track, 6761 cylinders
Units = cylinders of 8883 * 512 = 4548096 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 3 13293 41 PPC PReP Boot
/dev/sda2 4 117 506331 82 Linux swap
/dev/sda3 118 6761 29509326 83 Linux
Command (m for help):
|
Salvando o arranjo de partições
Para salvar o arranjo de partições e sair do fdisk, digite w.
Listagem de código 4.10: Salve e saia do fdisk |
Command (m for help): w
|
Agora que suas partições foram criadas, você pode continuar com Criando sistemas de arquivos.
4.e. Criando sistemas de arquivos
Introdução
Agora que suas partições foram criadas, está na hora de colocar um sistema de
arquivos nelas. Se você não se importa em escolher o sistema de arquivos e está
contente com o que usamos como padrão neste manual, continue com Aplicando um sistema de arquivos a uma partição.
Caso contrário, leia mais para aprender sobre os sistemas de arquivos
disponíveis...
Sistemas de arquivos?
Nota:
Vários sistemas de arquivos estão disponíveis.
|
O ext2 é o sistema mais testado e fiel ao Linux, mas não tem jornal de
meta-dados, o que significa que verificações rotineiras de sistemas de arquivo
ext2 podem levar bastante tempo. Existe agora uma razoável seleção de sistemas
de arquivos de nova geração com jornal que podem ter sua consistência verificada
rapidamente e que são geralmente preferíveis aos seus respectivos sistemas sem
jornal. Sistemas de arquivo com jornal previnem longas esperas quando você
carrega seu sistema e seu sistema de arquivos está em um estado inconsistente.
O ext3 é a versão com jornal do sistema de arquivos ext2, fornecendo
jornal de meta-dados para recuperação rápida, fora outros modos de jornal
aprimorados como dados completos e dados ordenados. O ext3 é um sistema de
arquivos muito bom e confiável. Tem uma opção adicional de catalogar hashed
b-trees que permite alta performance em quase todas situações. Você pode ativar
este catálogo adicionando -O dir_index ao comando mke2fs. Para
resumir, o ext3 é um excelente sistema de arquivos.
O ReiserFS é sistema de arquivos baseado em B*-trees que tem uma
performance em geral muito boa e muito superior a tanto o ext2 quanto o ext3 na
hora de lidar com arquivos pequenos (de menos de 4k), freqüentemente com um
fator de 10x-15x. O ReiserFS também escala extremamente bem e tem jornal de
meta-dados. A partir do kernel 2.4.18+, o ReiserFS está sólido e pronto para ser
usado tanto como um sistema de arquivos genérico quanto para casos extremos como
a criação de sistemas de arquivos enormes, uso de muitos arquivos pequenos,
arquivos muito grandes e diretórios contendo dezenas de milhares de arquivos.
O XFS é um sistema de arquivos com jornal de meta-dados que vem com um
robusto conjunto de funções e é otimizado para escalabilidade. Só recomendamos
usar este sistema de arquivos em sistemas rodando Linux com equipamento SCSI de
ponta e/ou armazenamento em canais de fibra e fonte de energia sem interrupção.
Pelo fato de o XFS criar cachês agressivamente de dados em uso na memória RAM,
programas mal desenhados (que não tomam precauções na hora de escrever os
arquivos em disco, e existem muitos deles) podem perder uma grande quantidade de
dados se o sistema for desligado sem aviso.
O JFS é o sistema de arquivos com jornal de alta performance da IBM.
Recentemente tornou-se pronto para uso em produção.
Aplicando um sistema de arquivos a uma partição
Para criar um sistema de arquivos em uma partição ou volume, existem ferramentas
disponíveis para cada sistema de arquivos possível:
| Sistema de arquivos |
Comando de criação |
| ext2 |
mke2fs |
| ext3 |
mke2fs -j |
| reiserfs |
mkreiserfs |
| xfs |
mkfs.xfs |
| jfs |
mkfs.jfs |
Por exemplo, para ter a partição raiz (root) (/dev/sda4 em nosso
exemplo) em ext3 (como em nosso exemplo), você faria:
Listagem de código 5.1: Aplicando um sistema de arquivos a uma partição |
# mke2fs -j /dev/sda4
|
Agora crie os sistemas de arquivos em suas partições recém-criadas (ou volumes
lógicos).
Ativando a partição de swap
mkswap é o comando usado para iniciar partições de swap:
Listagem de código 5.2: Criando uma assinatura de swap |
# mkswap /dev/sda3
|
Para ativar a partição de swap, use swapon:
Listagem de código 5.3: Ativando a partição de swap |
# swapon /dev/sda3
|
Crie e ative o swap com os comandos mencionados acima.
4.f. Montando
Agora que suas partições foram iniciadas e possuem um sistema de arquivos, está
na hora de montá-las. Use o comando mount. Não se esqueça de criar os
diretórios necessários de montagem para cada partição que você criou. Como
exemplo montamos a partição raiz (root):
Listagem de código 6.1: Montando partições |
# mkdir /mnt/gentoo
# mount /dev/sda4 /mnt/gentoo
|
Nota:
Se você quiser que seu /tmp resida em uma partição separada,
certifique-se de mudar suas permissões depois de montá-la: chmod 1777
/mnt/gentoo/tmp. O mesmo vale para /var/tmp.
|
Continue com Instalando os arquivos de instalação
do Gentoo.
5. Instalando os arquivos de instalação do Gentoo
5.a. Instalando um tarball de estágio (stage)
Configurando a Data/Hora
Antes de continuar, você precisa verificar a data/hora e atualizá-las. Um
relógio mal configurado pode levar a resultados estranhos no futuro!
Para verificar a data/hora atual, execute date:
Listagem de código 1.1: Verificando a data/hora |
# date
Fri Mar 29 16:21:18 CEST 2005
|
Se a data/hora for exibida incorretamente, atualize-a usando date
MMDDhhmmAAAA sintaxe (Mês, Dia, hora, minuto
e Ano). Por exemplo, para configurar a data para 29 de março de 2005,
16:21:
Listagem de código 1.2: Configurando a data/hora |
# date 032916212005
|
Localizando o arquivo de Stage3
Se você configurou a rede porque você precisa baixar um arquivo de stage3 para
sua arquitetura, continue com Alternativa: Usando um
Stage3 da Internet. Caso contrário leia Padrão:
Usando um Stage3 de um CD de instalação.
5.b. Padrão: Usando um stage do CD de instalação
Extraindo a tarball de stage
Os stages no CD residem no diretório /mnt/cdrom/stages. Para ver
uma lista de stages disponíveis, use ls:
Listagem de código 2.1: Lista de todos stages disponíveis |
# ls /mnt/cdrom/stages
|
Se seu sistema responder com um erro, você pode precisar montar o CD-ROM
primeiro:
Listagem de código 2.2: Montando o CD-ROM |
# ls /mnt/cdrom/stages
ls: /mnt/cdrom/stages: No such file or directory
# mount /dev/cdroms/cdrom0 /mnt/cdrom
# ls /mnt/cdrom/stages
|
Agora vá em seu ponto de montagem do Gentoo (normalmente
/mnt/gentoo):
Listagem de código 2.3: Mudando diretório para /mnt/gentoo |
# cd /mnt/gentoo
|
Nós iremos agora extrair a tarball de stage de sua escolha. Nós iremos fazer
isto com a ferramenta tar. Certifique-se de usar as mesmas opções
(xvjpf)! O x significa Extrair, o v para
verbal para ver o que acontece durante o processo de extração (este é
opcional), o j para Descompactar com bzip2, o p para
Preservar permissões e o f para denotar que queremos extrair um
arquivo, não entrada padrão. No próximo exemplo, nós extraimos a tarball de
stage stage3-<sub-arquitetura>-2005.1-r1.tar.bz2. Certifique-se
de substituir o nome do arquivo de tarball com seu stage.
Listagem de código 2.4: Extraindo a tarball de stage |
# tar xvjpf /mnt/cdrom/stages/stage3-<sub-arquitetura>-2005.1-r1.tar.bz2
|
Agora que o stage está instalado, continue com Instalando o Portage.
5.c. Alternativa: Usando um stage da Internet
Baixando a tarball de stage
Vá para o ponto de montagem do Gentoo no qual você montou seu sistema de
arquivos (provavelmente /mnt/gentoo):
Listagem de código 3.1: Indo para o ponto de montagem do Gentoo |
# cd /mnt/gentoo
|
Dependendo de seu meio de instalação, você tem algumas ferramentas disponíveis
para baixar um stage. Se você tiver links2 disponível, então você pode
surfar imediatamente para a lista de servidores
do Gentoo e escolher um servidor próximo de você.
Se você não tiver links2 disponível você deve ter lynx à sua
disposição. Se você precisar usar um proxy, exporte as variáveis
http_proxy e ftp_proxy:
Listagem de código 3.2: Configurando informação de proxy para lynx |
# export http_proxy="http://proxy.server.com:port"
# export ftp_proxy="http://proxy.server.com:port"
|
Nós iremos agora presumir que você tem links2 à sua disposição.
Escolha o diretório releases/, seguido pela sua arquitetura (por
exemplo, x86/) e a versão do Gentoo (2005.1/ ou
2005.1-r1/ se disponível) para terminar no diretório
stages/. Lá, você deverá ver todos arquivos de stage disponíveis
para sua arquitetura (eles podem estar gravados dentro de subdiretórios nomeados
de acordo com a sub-arquitetura individual). Selecione um e aperte D para
baixá-lo. Quando você terminar, aperte Q para sair do navegador.
Listagem de código 3.3: Surfando a lista de servidores com links2 |
# links2 http://www.gentoo.org/main/en/mirrors.xml
# links2 -http-proxy proxy.server.com:8080 http://www.gentoo.org/main/en/mirrors.xml
|
Certifique-se de baixar uma tarball de stage3 - instalações usando
tarballs de stage1 e stage2 não são mais suportadas.
Se você quiser verificar a integridade da tarball de stage baixada, use
md5sum e compare a saída com o MD5 checksum fornecido no servidor. Por
exemplo, para verificar a validade de uma tarball de stage x86:
Listagem de código 3.4: Exemplo de verificação de integridade de uma tarball de stage |
# md5sum -c stage3-x86-2005.1-r1.tar.bz2.md5
stage3-x86-2005.1-r1.tar.bz2: OK
|
Descompactando o tarball de stage
Agora descompacte seu stage baixado no sistema. Usamos o tar para
proceder, já que é o método mais fácil:
Listagem de código 3.5: Desempacotando um stage |
# tar xvjpf stage3-*.tar.bz2
|
Certifique-se de usar as mesmas opções (xvjpf). O x significa
Extrair, o v para verbal para ver o que acontece durante o
processo de extração (este é opcional), o j para Descompactar com
bzip2, o p para Preservar permissões e o f para denotar
que queremos extrair um arquivo, não entrada padrão.
Agora que o stage está instalado, continue com Instalando o Portage.
5.d. Instalando o Portage
Extraindo um snapshot do Portage
Agora você irá instalar um snapshot do Portage, uma coleção de arquivos que
informam o Portage sobre que títulos de software você pode instalar, que
profiles estão disponíveis, etc...
Descompacte o snapshot do CD de Instalação
Para instalar o snapshot, dê uma olhada dentro de
/mnt/cdrom/snapshots/ para ver que snapshot está disponível:
Listagem de código 4.1: Verificando o conteúdo de /mnt/cdrom/snapshots |
# ls /mnt/cdrom/snapshots
|
Agora extraia o snapshot usando a seguinte construção. Novamente, certifique-se
de que você usou as opções corretas com tar. Também, o -C é um
C maiúsculo, não c. No próximo exemplo nós usamos
portage-<data>.tar.bz2 como nome do arquivo de snapshot.
Certifique-se de substituir com o nome do snapshot que está em seu CD de
instalação.
Listagem de código 4.2: Extraindo um snapshot do Portage |
# tar xvjf /mnt/cdrom/snapshots/portage-<data>.tar.bz2 -C /mnt/gentoo/usr
|
Copiar arquivos de código fonte
Você também precisa copiar todo código fonte do CD de instalação universal.
Listagem de código 4.3: Copie o código fonte |
# mkdir /mnt/gentoo/usr/portage/distfiles
# cp /mnt/cdrom/distfiles/* /mnt/gentoo/usr/portage/distfiles/
|
5.e. Configurando as opções de compilação
Introdução
Para otimizar o Gentoo, você pode ajustar um par das variáveis que causarão
impacto no comportamento do Portage. Todas essas variáveis podem ser
configuradas como variáveis de ambiente (usando export), mas isso não
é permanente. Para manter suas configurações, o Portage fornece o
/etc/make.conf, um arquivo de configuração para o Portage. Este
é o arquivo que iremos editar agora.
Nota:
Uma listagem comentada de todas as variáveis possíveis pode ser encontrada em
/mnt/gentoo/etc/make.conf.example. Para uma instalação com sucesso
do Gentoo você só precisa configurar as variáveis conforme mencionado abaixo.
|
Abra seu editor favorito (neste tutorial usamos o nano), assim poderemos
alterar as variáveis de otimização que discutiremos abaixo.
Listagem de código 5.1: Abrindo o /etc/make.conf |
# nano -w /mnt/gentoo/etc/make.conf
|
Como você provavelmente observou, o arquivo make.conf.example é
estruturado de uma maneira genérica: linhas de comentário começam com "#",
outras linhas definem variáveis usando a sintaxe VARIÁVEL="conteúdo".
O arquivo make.conf usa a mesma sintaxe. Diversas dessas variáveis
serão discutidas abaixo.
Aviso:
Não faça modificações à variável USE se você estiver fazendo uma instalação de
stage3 com GRP. Você pode alterar a variável de USE depois de ter instalado os
pacotes que quer. Gremlins podem atacar seu sistema se você ignorar este aviso!
|
CHOST
A variável CHOST declara a arquitetura de construção para seu sistema.
Já deve estar ajustada a seu valor correto. Não a edite, já que
isto pode quebrar seu sistema. Se a variável CHOST parecer estar
incorreta, você pode estar usando a tarball de stage3 errada.
CFLAGS e CXXFLAGS
As variáveis CFLAGS e CXXFLAGS definem as opções de otimização
para o gcc C e C++ compiladores respectivamente. Embora geralmente
definimos eles aqui, você só irá obter máxima performance se otimizar as opções
para cada programa separadamente. A razão disto é que cada programa é diferente.
No make.conf, você deve definir as opções de otimização que você
pensa que irão deixar seu sistema com uma melhor resposta em geral. Não
coloque configurações experimentais nesta variável; muitas otimizações podem
fazer o programa não se comportar bem ("dar pau", ou ainda pior, mal
funcionamento).
Não iremos explicar todas as opções de otimização possíveis. Se quiser
conhecê-las, leia o GNU
Online Manual(s) ou a página info do gcc (info gcc -- só
funciona em um sistema Linux já funcionando). O próprio arquivo
make.conf.example contém inúmeros exemplos e informações; não
se esqueça de lê-lo também.
A primeira configuração é a opção -march=, que especifica o nome da
arquitetura alvo. Possíveis opções são descritas no arquivo
make.conf.example (com comentários). Por exemplo, para uma
arquitetura x86 Athlon XP:
Listagem de código 5.2: Configurando o GCC march |
-march=athlon-xp
|
A segunda é a opção -O (que é um O maiúsculo, não é um zero), que
especifica a classe da opção de otimização da gcc. Possíveis classes são
s (para otimização de tamanho), 0 (zero - para não otimizar),
1, 2 ou 3 para opções com otimizações de velocidade
(toda classe tem as mesmas opções que a anterior, com alguns extras). Por
exemplo, para uma otimização de classe 2:
Listagem de código 5.3: Configurando o ajuste do O do GCC |
-O2
|
Outra otimização popular é a opção -pipe (usar pipes ao invés de arquivos
temporários é melhor para comunicação entre os vários estágios de compilação).
Saiba você que usar -fomit-frame-pointer (que não mantém o frame pointer
em um registro para as funções que não necessitam de um) pode ter sérias
repercussões na eliminação de erros das aplicações!
Quando você define as CFLAGS e CXXFLAGS, pode-se combinar diversas
opções de otimização, como o exemplo a seguir:
Listagem de código 5.4: Definindo as variáveis CFLAGS e CXXFLAGS |
CFLAGS="-march=athlon-xp -pipe -O2"
CXXFLAGS="${CFLAGS}"
|
MAKEOPTS
Com MAKEOPTS você define quantas compilações paralelas deverão ocorrer
quando instalar um pacote. Uma boa escolha é o número de CPUs no seu sistema
mais um, mas esta regra não é perfeita.
Listagem de código 5.5: MAKEOPTS para um sistema normal de 1 CPU |
MAKEOPTS="-j2"
|
Tudo pronto!
Atualize seu /mnt/gentoo/etc/make.conf com suas preferências e
salve (usuários do nano podem pressionar Ctrl-X). Agora você está
pronto para continuar com Fazendo chroot no sistema de base do Gentoo.
6. Fazendo chroot no sistema de base do Gentoo
6.a. Fazendo o chroot
Montando o sistema de arquivos /proc e /dev
Monte o sistema de arquivos /proc em /mnt/gentoo/proc
para permitir que a instalação use as informações fornecidas pelo kernel, dentro
do ambiente de chroot. A seguir, monte com bind o sistema de arquivos
/dev.
Listagem de código 1.1: Montando /proc e /dev |
# mount -t proc none /mnt/gentoo/proc
# mount -o bind /dev /mnt/gentoo/dev
|
Opcional: Copie a informação de DNS
Se você configurou sua rede para obter o arquivo de stage apropriado mais tarde
da Internet, você precisa copiar a informação de DNS gravada em
/etc/resolv.conf para /mnt/gentoo/etc/resolv.conf.
Este arquivo contém os servidores de nome que seu sistema irá usar para resolver
nomes a endereços de IP.
Listagem de código 1.2: Copie a informação de DNS |
# cp -L /etc/resolv.conf /mnt/gentoo/etc/resolv.conf
|
Entrando no novo ambiente
Agora que todas partições foram iniciadas e o ambiente de base está instalado,
está na hora de entrar no nosso novo ambiente de instalação fazendo
chroot nele. Isto quer dizer que mudamos o nosso ambiente de instalação
atual para seu sistema instalado (as partições iniciadas).
O processo de chroot é feito em três passos. Primeiro iremos mudar a raiz (root)
de / (na mídia de instalação) para /mnt/gentoo (em sua
partição) usando o chroot. Então iremos criar um novo ambiente usando o
env-update, que essencialmente cria variáveis de ambiente. Finalmente,
nós carregamos essas variáveis na memória usando source.
Listagem de código 1.3: Fazendo chroot no novo ambiente |
# chroot /mnt/gentoo /bin/bash
# env-update
>>> Regenerating /etc/ld.so.cache...
# source /etc/profile
# export PS1="(chroot) $PS1"
|
Parabéns! Você agora está dentro de seu ambiente do Gentoo Linux. Claro que está
longe de acabar, mas é por isso mesmo que a instalação ainda tem outras seções
:-)
Criando o cache do Portage
Você já instalou a árvore do Portage, mas você deve construir o cache do Portage
agora para acelerar futuros "emerges". Rode emerge --metadata para tanto.
Listagem de código 1.4: Criando o cache do Portage |
# emerge --metadata
|
6.b. Configurando a variável de USE
O que é a variável de USE?
A USE é uma das variáveis mais poderosas que o Gentoo oferece a seus
usuários. Vários programas podem ser compilados com ou sem suporte opcional para
certos ítens. Por exemplo, alguns programas podem ser compilados com suporte a
gtk ou sem suporte de qt. Outros podem ser compilados com ou sem suporte a SSL.
Alguns programs podem até ser compilados com suporte a framebuffer (svgalib) ao
invés de suporte a X11 (servidor de X).
A maior parte das distribuições compila seus pacotes com o maior suporte
possível, aumentando o tamanho dos programas e o tempo de inicialização, sem
mencionar uma enorme quantidade de dependências. Com o Gentoo você pode definir
com que opções um pacote deve ser compilado. É aí que entra o USE.
Na variável USE você define que palavras-chave são mapeadas em opções de
compilação. Por exemplo, ssl irá compilar suporte a ssl nos programas que
o suportam. -X irá remover suporte a servidor de X (note o sinal de menos
na frente). gnome gtk -kde -qt irá compilar seus programas com suporte a
gnome (e gtk), e sem suporte a kde (e qt), tornando seu sistema totalmente
voltado para GNOME.
Modificando a variável de USE
Aviso:
Não faça modificações à variável USE se você estiver fazendo uma instalação de
stage3 com GRP. Você pode alterar a variável de USE depois de ter instalado os
pacotes que quer. Gremlins podem atacar seu sistema se você ignorar este aviso!
|
Os ajustes padrão de USE são colocados em
/etc/make.profile/make.defaults. O que você coloca em
/etc/make.conf é calculado contra estes valores padrão. Se você
adicionar algo ao ajuste de USE, é adicionado à lista padrão. Se você
tirar algo do ajuste de USE (colocando um sinal de menos em sua frente),
é removido da lista padrão (se estivesse na lista padrão para começar).
Nunca altere nada dentro do diretório /etc/make.profile; ele
é sobre-escrito quando você atualiza o Portage!
Uma descrição completa da USE pode ser encontrada na segunda parte do
Manual do Gentoo, Variáveis de USE. Uma
descrição completa sobre as opções de USE pode ser encontrada em seu sistema em
/usr/portage/profiles/use.desc.
Listagem de código 2.1: Vendo todas opções de USE disponíveis |
# less /usr/portage/profiles/use.desc
|
Como um exemplo nós mostramos um ajuste de USE para um sistema baseado em
KDE com DVD, ALSA e suporte a gravação de CDs:
Listagem de código 2.2: Abrindo o /etc/make.conf |
# nano -w /etc/make.conf
|
Listagem de código 2.3: Ajuste de USE |
USE="-gtk -gnome qt kde dvd alsa cdr"
|
7. Configurando o kernel
7.a. Fuso horário
Você deve primeiro selecionar seu fuso horário para que seu sistema saiba onde
está localizado. Procure seu fuso horário em /usr/share/zoneinfo,
então copie-o para /etc/localtime. Por favor evite as zonas de fuso
horário em /usr/share/zoneinfo/Etc/GMT*, já que seus nomes não
refletem as zonas esperadas. Por exemplo, GMT-8 é na verdade GMT+8.
Listagem de código 1.1: Configurando informação de fuso horário |
# ls /usr/share/zoneinfo
# cp /usr/share/zoneinfo/GMT /etc/localtime
|
7.b. Instalando as fontes
Escolhendo um kernel
A base em que todas distribuições são construídas é o kernel do Linux. Ele fica
entre os programas de usuário e o hardware do sistema. O Gentoo permite que seus
usuários escolham dentro de uma variedade de fontes de kernel. Uma lista
completa com descrições pode ser encontrada no
Guia de Kernel do Gentoo.
Para PPC64 você deve usar as gentoo-sources. Continuamos com
a instalação das fontes do kernel. USE="-doc" é necessário para evitar
instalar xorg-x11 ou outras dependências neste ponto. USE="symlink" não é
necessário para uma nova instalação, mas garante a criação correta do link
simbólico /usr/src/linux.
Listagem de código 2.1: Instalando uma fonte de kernel |
# USE="-doc symlink" emerge gentoo-sources
|
Quando você olhar em /usr/src você deve ver um link simbólico
chamado linux apontando para a fonte do kernel. Neste caso, as
fontes de kernel instaladas apontam para gentoo-sources-2.6.12-r10. Sua
versão pode ser diferente, mantenha isto em mente.
Listagem de código 2.2: Vendo o link simbólico da fonte do kernel |
# ls -l /usr/src/linux
lrwxrwxrwx 1 root root 12 Oct 13 11:04 /usr/src/linux -> linux-2.6.12-gentoo-r10
|
Agora está na hora de configurar e compilar sua fonte do kernel. Existe a
possibilidade de usar o "genkernel", que cria um kernel genérico como os usados
nos CDs de instalação, mas que não está completamente funcional para PPC64
no momento.
Continue agora com Configuração manual.
7.c. Configuração manual
Introdução
Configurar um kernel manualmente é freqüentemente tido como o procedimento mais
difícil que um usuário de Linux tem de fazer. Grande mentira -- depois de
configurar uns dois kernéis você nem lembrará que foi difícil ;)
No entanto, uma coisa é verdade: você deve conhecer seu sistema quando
você começar a configurar o kernel manualmente. A maior parte das informações
pode ser obtida instalando o pciutils (emerge pciutils), que contém o
lspci. Você poderá usar o lspci dentro do ambiente de chroot. Você
pode seguramente ignorar quaisquer avisos de pcilib (como pcilib: cannot
open /sys/bus/pci/devices) que o lspci der. Alternativamente, você pode
rodar lspci de um ambiente fora do chroot. Os resultados são os
mesmos. Você também pode rodar lsmod para quer ver módulos de kernel o CD
de Instalação usa (pode dar uma boa dica sobre o que ativar).
Agora vá para o diretório da fonte do kernel e execute make menuconfig.
Isto irá iniciar um menu de configuração baseado em ncurses.
Quando compilar o kernel em um sistema com ferramentas de usuário de 32-bits,
adicione o seguinte ao /etc/profile:
Listagem de código 3.1: alias de make de ferramentas de 32-bits |
# echo 'alias ppc64make="make ARCH=ppc64 CROSS_COMPILE=powerpc64-unknown-linux-gnu-"' >> /etc/profile
# source /etc/profile
|
Listagem de código 3.2: Rodando o menuconfig |
# cd /usr/src/linux
(ferramentas de 64-bits) # make menuconfig
(ferramentas de 32-bits) # ppc64make menuconfig
|
Você verá várias seções de configuração. Iremos primeiro listar algumas opções
que você deve ativar (ou o Gentoo não irá funcionar, ou não irá funcionar sem
mudanças adicionais).
Ativando as opções necessárias
Antes de tudo, ative o uso de código/drivers em desenvolvimento e experimentais.
Você precisa disso, senão muito código/drivers importantes não irão aparecer:
Listagem de código 3.3: Selecionando código/drivers experimentais, General setup |
Code maturity level options --->
[*] Prompt for development and/or incomplete code/drivers
General setup --->
[*] Support for hot-pluggable devices
|
Agora vá para File Systems e selecione suporte para os sistemas de
arquivos que você usa. Não os compile como módulos, senão seu sistema
Gentoo não será capaz de montar suas partições. Também selecione Virtual
memory, /proc file system, e /dev/pts file system for
Unix98 PTYs:
Listagem de código 3.4: Selecionando sistemas de arquivos necessários |
File systems --->
[*] Virtual memory file system support (former shm fs)
[*] /proc file system support
[*] /dev/pts file system for Unix98 PTYs
<*> Reiserfs support
<*> Ext3 journalling file system support
<*> JFS filesystem support
<*> Second extended fs support
<*> XFS filesystem support
|
Nota:
Você encontrará algumas das opções mencionadas sob Pseudo filesystems,
que é uma sub-parte de File systems.
|
Se você estiver usando PPPoE para conectar à Internet ou está usando um modem
discado, você irá precisar das seguintes opções no kernel (você encontrará as
opções mencionadas sob Networking support que é uma sub-parte de
Device Drivers):
Listagem de código 3.5: Selecionando drivers necessários para PPPoE |
Network device support --->
<*> PPP (point-to-point protocol) support
<*> PPP support for async serial ports
<*> PPP support for sync tty ports
|
As duas opções de compressão não fazem mal, mas não são absolutamente
necessárias, bem como a opção PPP over Ethernet, que somente pode ser
usada pelo comando rp-pppoe quando configurado para fazer PPPoE em modo
de kernel.
Se você precisar, não se esqueça de incluir suporte no kernel para sua placa de
rede.
Desligue ADB raw keycodes:
Listagem de código 3.6: Desligando ADB raw keycodes |
Macintosh Device Drivers --->
[ ] Support for ADB raw keycodes
|
Quando você terminar de configurar seu kernel, continue com Compilando e instalando.
Compilando e instalando
Agora que seu kernel está configurado, está na hora de compilá-lo e instalá-lo.
Saia da configuração e comece o processo de compilação:
Listagem de código 3.7: Compilando o kernel |
(ferramentas de 64-bits) # make && make modules_install
(ferramentas de 32-bits) # ppc64make && ppc64make modules_install
|
Quando o kernel terminar de compilar, copie a imagem do kernel para
/boot. Lembre-se de substituir
<versão-do-kernel> com o nome e versão de seu kernel.
Listagem de código 3.8: Instalando o kernel |
# cp vmlinux /boot/<versão-do-kernel<
|
Agora continue com Configurando os módulos.
7.d. Configurando os módulos
Você deve listar os módulos que você quer carregar automaticamente em
/etc/modules.autoload.d/kernel-2.6. Você pode colocar opções
adicionais aos módulos também se quiser.
Para ver todos módulos disponíveis, rode o seguinte comando usando o
find. Não se esqueça de substituir "<versão do kernel>" com a
versão do kernel que você acaba de compilar:
Listagem de código 4.1: Vendo todos módulos disponíveis |
# find /lib/modules/<versão do kernel>/ -type f -iname '*.o' -or -iname '*.ko'
|
Por exemplo, para carregar o módulo 3c59x.o automaticamente, edite o arquivo
kernel-2.6 e coloque o nome do módulo nele.
Listagem de código 4.2: Editando o /etc/modules.autoload.d/kernel-2.6 |
# nano -w /etc/modules.autoload.d/kernel-2.6
|
Listagem de código 4.3: /etc/modules.autoload.d/kernel-2.6 |
3c59x
|
Continue a instalação com Configurando
seu sistema.
8. Configurando seu sistema
8.a. Informações sobre os sistemas de arquivos
O que é o fstab?
No Linux, todas as partições usadas pelo sistema deve estar listadas em
/etc/fstab. Este arquivo contém os pontos de montagem das partições
(onde elas são vistas na estrutura do sistema de arquivos), como elas devem ser
montadas e com que opções especiais (automaticamente ou não, usuários podem ou
não montá-las, etc...)
Criando o /etc/fstab
O /etc/fstab usa uma sintaxe especial. Cada linha consiste de seis
campos, separados por espaços em branco (espaço(s), tabs ou ambos). Cada campo
tem seu próprio significado:
-
O primeiro campo mostra a partição descrita (o caminho para o arquivo
de dispositivo)
-
O segundo campo mostra o ponto de montagem no qual a partição deve ser
montada
-
O terceiro campo mostra o sistema de arquivos usado pela partição
-
O quarto campo mostra as opções de montagem usadas pelo mount
quando a partição for montada. Como cada sistema de arquivos tem suas próprias
opções de montagem, é aconselhado que você leia o manual do mount
(man mount) para uma listagem completa. Opções múltiplas são separadas
por vírgulas.
-
O quinto campo é usado pelo dump para determinar se a partição precisa
de um dump ou não. Geralmente você pode deixar isso como 0
(zero).
-
O sexto campo é usado pelo fsck para determinar a ordem em que os
sistemas de arquivos devem ser verificados se o sistema não foi
desligado corretamente. O sistema de arquivos raiz (root) deve ter o valor
1, enquanto o restante deve ter 2 (ou 0 caso uma
verificação no sistema de arquivos não seja necessária).
O arquivo /etc/fstab padrão não é um arquivo de fstab válido,
portanto inicie o nano (ou seu editor favorito) para criar seu
/etc/fstab:
Listagem de código 1.1: Abrindo o /etc/fstab |
# nano -w /etc/fstab
|
Vejamos como nós escrevemos as opções para a partição /boot. É só
um exemplo, então se sua arquitetura não precisa de uma partição
/boot (como PPC), não copie ao pé da letra.
Em nosso exemplo padrão x86 de particionamento /boot é a partição
/dev/hda1, com um sistema de arquivos ext2. Ela precisa ser
verificada durante a inicialização, então nós escrevemos:
Listagem de código 1.2: Um exemplo de linha para /boot no /etc/fstab |
/dev/hda1 /boot ext2 defaults 1 2
|
Alguns usuários não querem que sua partição /boot seja montada
automaticamente para melhorar a segurança de seu sistema. Estas pessoas devem
trocar defaults por noauto. Isto significa que você precisa
montar manualmente esta partição cada vez que você quiser usá-la.
Agora, para melhorar a performance, a maioria deve adicionar a opção
noatime como opção de montagem, que resulta em um sistema mais rápido,
já que o tempo de acesso não é registrado (você não precisará tanto disto):
Listagem de código 1.3: Uma linha melhor para /boot no /etc/fstab |
/dev/hda1 /boot ext2 defaults,noatime 1 2
|
Se continuarmos assim, nós terminamos com as seguintes três linhas (para
/boot, / e a partição swap):
Listagem de código 1.4: Três linhas do /etc/fstab |
/dev/hda1 /boot ext2 defaults,noatime 1 2
/dev/hda2 none swap sw 0 0
/dev/hda3 / ext3 noatime 0 1
|
Para finalizar, você deve adicionar regras para /proc, tmpfs
(requerido) e para o seu CD-ROM (e claro, se você tiver outras partições ou
dispositivos, para eles também):
Listagem de código 1.5: Um exemplo completo do /etc/fstab |
/dev/hda1 /boot ext2 defaults,noatime 1 2
/dev/hda2 none swap sw 0 0
/dev/hda3 / ext3 noatime 0 1
none /proc proc defaults 0 0
none /dev/shm tmpfs nodev,nosuid,noexec 0 0
/dev/cdroms/cdrom0 /mnt/cdrom auto noauto,user 0 0
|
A opção auto faz com que o mount descubra o sistema de arquivos
(recomendado para mídias removíveis já que podem ser criadas com vários tipos de
sistemas de arquivos) e a opção user faz com que seja possível usuários
além do administrador (root) possam montar o CD.
Agora use o exemplo acima para criar o seu /etc/fstab. Se você é um
usuário de um SPARC, você deve também adicionar a seguinte linha ao seu
/etc/fstab:
Listagem de código 1.6: Adicionando um sistema de arquivos openprom ao /etc/fstab |
none /proc/openprom openpromfs defaults 0 0
|
Confira o seu /etc/fstab, salve e saia para continuar.
8.b. Informações de Rede
Nome do host, domínio, etc...
Uma das escolhas que o usuário deve fazer é dar um nome ao PC. Isto parece ser
bem fácil, mas muitos usuários tem dificuldades em achar um nome
apropriado para seus Linux-pc. Para acelerar as coisas, saiba que qualquer nome
que você escolher pode ser mudado depois. Para que possamos continuar, você pode
chamar seu sistema simplesmente tux com domínio homenetwork.
Nós usamos esses valores nos próximos exemplos. Primeiro configuramos o nome do
host:
Listagem de código 2.1: Configurando o nome do host |
# nano -w /etc/conf.d/hostname
HOSTNAME="tux"
|
Em seguida nós configuramos o nome do domínio:
Listagem de código 2.2: Configurando o nome do domínio |
# nano -w /etc/conf.d/domainname
DNSDOMAIN="homenetwork"
|
Se você tiver um domínio NIS (se você não sabe o que é isso, é sinal de que você
não tem um), você também precisa defini-lo:
Listagem de código 2.3: Configurando o nome do domínio NIS |
# nano -w /etc/conf.d/domainname
NISDOMAIN="my-nisdomain"
|
Agora adicione o script de init domainname ao runlevel default:
Listagem de código 2.4: Adicionando o domainname ao runlevel default |
# rc-update add domainname default
|
Configurando sua rede
Antes de você pensar "Ei, nós já fizemos isto!", você deve lembrar que a rede
que você configurou no início da instalação do Gentoo era somente para a
instalação. Neste momento você irá configurar a rede para o sistema Gentoo
permanente.
Nota:
Informações mais detalhadas sobre rede, incluindo tópicos avançados como
bonding (junção), bridging (pontes), VLANs 802.1Q ou rede wireless são cobertas
na seção Configuração de rede do Gentoo.
|
Toda informação de rede é reunida no /etc/conf.d/net. É usada
uma sintaxe simples, mas não intuitiva se você não sabe como configurar a
rede manualmente. Mas não se assuste, iremos explicar tudo. Um exemplo
totalmente comentado que cobre as várias configurações diferentes está
disponível em /etc/conf.d/net.example.
DHCP é usado por padrão e não necessita de configuração adicional.
Se você precisa configurar sua conexão de rede tanto porque você precisa de
opções específicas de DHCP ou porque você não usa DHCP, abre
/etc/conf.d/net com seu editor favorito (nano é usado neste
exemplo):
Listagem de código 2.5: Abrindo o /etc/conf.d/net para edição |
# nano -w /etc/conf.d/net
|
Você verá o seguinte arquivo:
Listagem de código 2.6: /etc/conf.d/net padrão |
# Esta configuração em branco irá usar DHCP automaticamente para quais scripts
# net.* em /etc/init.d. Para criar uma configuração mais completa,
# por favor veja /etc/conf.d/net.example e salve sua configuração
# em /etc/conf.d/net (este arquivo :]!).
|
Para entrar seu próprio endereço IP, máscara de rede e roteador, você precisa
configurar tanto config_eth0 como routes_eth0:
Listagem de código 2.7: Configurando informação de IP manualmente para eth0 |
config_eth0=( "192.168.0.2 netmask 255.255.255.0 brd 192.168.0.255" )
routes_eth0=( "default gw 192.168.0.1" )
|
Para usar DHCP e adicionar opções específicas de DHCP, defina config_eth0
e dhcp_eth0:
Listagem de código 2.8: Obter um endereço IP automaticamente para eth0 |
config_eth0=( "dhcp" )
dhcp_eth0="nodns nontp nonis"
|
Por favor, leia /etc/conf.d/net.example para uma lista com todas
opções disponíveis.
Se você tiver várias interfaces de rede, repita os passos acima para
config_eth1, config_eth2, etc.
Agora salve a configuração e saia para continuar.
Iniciando a rede automaticamente na inicialização
Para ter sua(s) interface(s) de rede ativada(s) na inicialização, você precisa
adicioná-la(s) ao runlevel default. Se você tiver interfaces PCMCIA você não
precisa fazer isto, já que as interfaces PCMCIA são iniciadas pelo script de
init PCMCIA.
Listagem de código 2.9: Adicionando net.eth0 ao runlevel default |
# rc-update add net.eth0 default
|
Se você tiver várias interfaces de rede, você precisa criar os scripts de init
net.eth1, net.eth2 etc... apropriados para elas. Você
pode usar o ln para fazer isso:
Listagem de código 2.10: Criando scripts de init adicionais |
# cd /etc/init.d
# ln -s net.eth0 net.eth1
# rc-update add net.eth1 default
|
Escrevendo informações de rede
Você precisa informar o Linux sobre sua rede. Isto é definido em
/etc/hosts e ajuda na resolução dos nomes dos hosts para endereços
IP de hosts que não são resolvidos pelo seu servidor de nomes. Por exemplo, se
sua rede interna consiste de três PCs chamados jenny (192.168.0.5),
benny (192.168.0.6) e tux (192.168.0.7 - este sistema) você
abriria o /etc/hosts e preencheria os valores:
Listagem de código 2.11: Abrindo o /etc/hosts |
# nano -w /etc/hosts
|
Listagem de código 2.12: Preenchendo as informações de rede |
127.0.0.1 localhost
192.168.0.5 jenny.homenetwork jenny
192.168.0.6 benny.homenetwork benny
192.168.0.7 tux.homenetwork tux
|
Se o seu sistema é o único sistema (ou o servidor de nomes cuida de toda a
resolução de nomes) uma única linha é suficiente. Por exemplo, se você quiser
chamar seu sistema de tux:
Listagem de código 2.13: /etc/hosts para PCs solitários ou totalmente integrados |
127.0.0.1 localhost tux
|
Salve e saia do editor para continuar.
Se você não tiver PCMCIA, você pode continuar com Informações do sistema. Usuários de PCMCIA devem ler o
seguinte tópico sobre PCMCIA.
Opcional: Tenha o PCMCIA funcionando
Nota:
pcmcia-cs só está disponível para as plataformas x86, amd64 e ppc.
|
Usuários de PCMCIA devem primeiramente instalar o pacote pcmcia-cs. Isto
também inclui usuários que irão trabalhar com kernéis 2.6 (mesmo que eles não
usem drivers PCMCIA deste pacote). A opção USE="-X" é necessária para
evitar a instalação do xorg-x11 neste momento:
Listagem de código 2.14: Instalando o pcmcia-cs |
# USE="-X" emerge pcmcia-cs
|
Quando o pcmcia-cs for instalado, adicione pcmcia ao runlevel
default:
Listagem de código 2.15: Adicionando pcmcia ao runlevel default |
# rc-update add pcmcia default
|
8.c. Informações do sistema
Senha de administrador (root)
Primeiro nós configuramos a senha de administrador (root) digitando:
Listagem de código 3.1: Configurando a senha de administrador (root) |
# passwd
|
Se você quiser que o administrador (root) possa logar-se através de uma porta
serial, adicione tts/0 ao arquivo /etc/securetty:
Listagem de código 3.2: Adicionando tts/0 ao /etc/securetty |
# echo "tts/0" >> /etc/securetty
|
Informações do sistema
O Gentoo usa o /etc/rc.conf para configurações gerais de todo o
sistema. Abra o /etc/rc.conf e aproveite todos os comentários do
arquivo. :)
Listagem de código 3.3: Abrindo o /etc/rc.conf |
# nano -w /etc/rc.conf
|
Quando você terminar de configurar o /etc/rc.conf, salve e saia.
Como você pode ver, o arquivo é bem comentado para ajudar você a ajustar as
variáveis de configuração necessárias. Você pode configurar seu sistema para
usar unicode, definir seu editor padrão e seu gerenciador de display (como gdm
ou kdm).
O Gentoo usa /etc/conf.d/keymaps para lidar com a configuração de
teclado. Edite-o para configurar seu teclado.
Listagem de código 3.4: Opening /etc/conf.d/keymaps |
# nano -w /etc/conf.d/keymaps
|
Dê atenção especial à variável KEYMAP: se você selecionar o KEYMAP
errado você terá resultados estranhos quando digitar em seu teclado.
Nota:
Usuários de sistemas SPARC baseados em USB e clones do SPARC têm que selecionar
um mapa de teclado de i386 (como "us") ao invés de "sunkeymap". O PPC usa
mapas de teclado x86 na maior parte dos sistemas. Usuários que quiserem usar
mapas de teclado ADB na hora da inicialização têm que ativar envio de keycodes
de ADB no kernel e configurar um mapa de teclado mac/ppc no
/etc/conf.d/keymaps.
|
Quando você terminar de configurar o /etc/conf.d/keymaps, salve e
saia.
O Gentoo usa /etc/conf.d/clock para configurar opções de relógio.
Edite-o de acordo com suas necessidades.
Listagem de código 3.5: Opening /etc/conf.d/clock |
# nano -w /etc/conf.d/clock
|
Se o relógio de seu hardware não estiver usando UTC, você precisa adicionar
CLOCK="local" ao seu arquivo. Caso contrário você perceberá bagunça no
relógio.
Quando você terminar de configurar /etc/conf.d/clock, salve e saia.
Se você não estiver instalando o Gentoo em um sistema IBM PPC64, continue com
Instalando as ferramentas de sistema
necessárias.
Configurando o console
Nota:
A seguinte seção aplica-se a plataformas de hardware IBM PPC64.
|
Se você estiver rodando o Gentoo em hardware IBM PPC64 e usando um console
virtual, você descomentar a linha adequada em /etc/inittab para que
o console virtual inicie um prompt de log-in.
Listagem de código 3.6: Ativando suporte a hvc ou hvsi no /etc/inittab |
hvc0:12345:respawn:/sbin/agetty -L 9600 hvc0
hvsi:12345:respawn:/sbin/agetty -L 19200 hvsi0
|
Você também deve proveitar para verificar se o console adequado está listado em
/etc/securetty.
Você pode agora continuar com Instalando as
ferramentas de sistema necessárias.
9. Instalando as ferramentas de sistema necessárias
9.a. Logger do sistema
Algumas ferramentas estão faltando do arquivo de stage3 porque vários
pacotes oferecem a mesma funcionalidade. Agora está na hora de você escolher
quais você quer instalar.
A primeira ferramenta que você precisa escolher deve fornecer capacidades de
registro para nosso sistema. Unix e Linux têm um excelente histórico com relação
a registros -- se você desejar, você pode registrar tudo que acontece em seu
sistema em arquivos de registro. Isto é feito através do logger de
sistema.
O Gentoo oferece muitos loggers de sistema para escolher. Há o sysklogd,
que é o conjunto tradicional de daemons de registro de sistema,
syslog-ng, um logger de sistema avançado e o metalog, que é um
logger de sistema altamente configurável. Outros podem estar disponíveis pelo
Portage também - nosso número de pacotes disponíveis aumenta diariamente.
Se você pretende usar sysklogd ou syslog-ng, você deve instalar o
logrotate mais tarde, já que esses loggers de sistema não oferecem nenhum
mecanismo de rotação para os arquivos de registro.
Para instalar o logger de sistema de sua escolha, faça um emerge nele e
adicione-o ao runlevel default usando rc-update. O exemplo seguinte
instala o syslog-ng. É claro, substitua pelo logger de sua escolha:
Listagem de código 1.1: Instalando um logger de sistema |
# emerge syslog-ng
# rc-update add syslog-ng default
|
9.b. Opcional: daemon de cron
O próximo é o daemon de cron. Apesar de opcional e não necessário para o
sistema, é interessante instalá-lo. Mas o que será daemon de cron? Um daemon de
cron executa comandos agendados. É uma mão na roda se você necessita executar
alguns comandos regularmente (seja ele diário, semanal ou mensal).
Nós fornecemos apenas vixie-cron para instalações sem internet. Se você
deseja instalar outro daemon de cron, você pode esperar e instalá-lo mais tarde.
Listagem de código 2.1: Instalando um daemon de cron |
# emerge vixie-cron
# rc-update add vixie-cron default
|
9.c. Opcional: Indexamento de Arquivos
Se você deseja catalogar seus arquivos de sistema para que você possa
localizá-los rapidamente usando a ferramenta locate, você precisa
instalar sys-apps/slocate.
Listagem de código 3.1: Instalando slocate |
# emerge slocate
|
9.d. Ferramentas de sistema de arquivo
Dependendo do sistema de arquivos que você está usando, você precisa instalar
alguns utilitários (para verificar a integridade do sistema de arquivos, criar
sistemas de arquivos adicionais, etc...).
A tabela seguinte lista as ferramentas que você precisa instalar para cada
sistema de arquivo. Nem todos sistemas de arquivos estão disponíveis para todas
arquiteturas, no entanto.
| Sistema de Arquivo |
Ferramenta |
Comando de Instalação |
| XFS |
xfsprogs |
emerge xfsprogs |
| ReiserFS |
reiserfsprogs |
emerge reiserfsprogs |
| JFS |
jfsutils |
emerge jfsutils |
Se você é um usuário de EVMS, você precisa instalar emvs:
Listagem de código 4.1: Instalando utilitários de EVMS |
# USE="-gtk" emerge evms
|
O USE="-gtk" irá prevenir a instalação de dependências. Se você quiser
ativar as ferramentas gráficas do evms, você pode recompilar o
evms mais tarde.
Se você não precisa de mais nenhuma ferramenta relacionada com rede (como
rp-pppoe ou cliente dhcp) continue com
Configurando o gerenciador de inicialização.
9.e. Ferramentas de rede
Opcional: Instalando um cliente de DHCP
Se você quiser que o Gentoo obtenha automaticamente um endereço IP para sua(s)
interface(s), você precisa instalar dhcpcd (ou qualquer outro cliente de
DHCP) em seu sistema. Se você não o fizer agora, você pode não conseguir
conectar-se à internet após a instalação!
Listagem de código 5.1: Instalando dhcpcd |
# emerge dhcpcd
|
Opcional: instalando um cliente de PPPoE
Se você precisa de rp-pppoe para conectar à net, você precisa disso.
Listagem de código 5.2: Instalando rp-pppoe |
# USE="-X" emerge rp-pppoe
|
O USE="-X" irá excluir a instalação do xorg-x11 como dependência
(rp-pppoe possui ferramentas gráficas; se você deseja ativá-las, você
pode recompilar o rp-pppoe mais tarde ou instalar xorg-x11 agora -- o que
vai levar um bom tempo para compilar).
Continue agora com Configurando o gerenciador de
inicialização.
10. Configurando o gerenciador de inicialização
10.a. Fazendo sua escolha
Introdução
Agora que seu kernel está configurado e compilado e os arquivos necessários para
a configuração do sistema foram preenchidos corretamente, está na hora de
instalar um programa que irá carregar seu kernel quando você iniciar o sistema.
O programa é chamado de gerenciador de inicialização.
Em Linux/PPC64 nós só temos o yaBoot como um gerenciador de inicialização até
que o grub2 esteja completo.
10.b. Usando o yaBoot
Introdução
Importante:
Para ferramentas de usuário de 64-bits, use yaboot-static ao invés de yaboot, já
que o yaboot não irá compilar em sistemas de ferramentas de usuário de 64-bits.
Para ferramentas de usuário de 32-bits, use o yaboot como você usaria
normalmente.
|
Existem dois jeitos de configurar o yaBoot para seu sistema. Você pode usar o
novo e melhorado yabootconfig incluído com o yaboot-1.3.8-r1
e versões mais recentes para configurar o yaboot automaticamente. Se por algum
motivo você não quer rodar o yabootconfig para configurar automaticamente
o /etc/yaboot.conf, ou se você está instalando o Gentoo em um G5
(no qual o yabootconfig nem sempre funciona), você pode simplesmente
editar o arquivo de amostra que já está instalado em seu sistema.
Importante:
Se você estiver instalando em um G5 usando instalação online e não usou stages
de G5 otimizados, você deve mudar o profile a que você está ligado agora. Se
você não mudar, você não obterá as dependências necessárias para o yaboot rodar
em equipamento da Apple. No comando abaixo troque (userland) com seu
nível de bits de ferramentas de usuário escolhido. Se você estiver instalando em
um G5 em uma instalação offline, você terá que instalar os pacotes manualmente.
|
Listagem de código 2.1: (INSTALAÇÃO ONLINE PARA USUÁRIOS DE G5 SOMENTE) mudando seu profile |
# rm /etc/make.profile
# ln -sf /usr/portage/profiles/default-linux/ppc/2005.1/ppc64/(userland)/970/pmac /etc/make.profile
|
Listagem de código 2.2: (INSTALAÇÃO OFFLINE PARA USUÁRIOS DE G5 SOMENTE) instalando ferramentas de sistema de arquivos necessárias |
# emerge hfsutils hfsplusutils
|
Listagem de código 2.3: Instalando o gerenciador de inicialização |
# emerge --update yaboot-static
# emerge --update yaboot
|
Importante:
yabootconfig/ybin não funcionam com IBMs. Você tem que instalar o yaboot de outro jeito:
Usando o yaboot com hardware da IBM
|
Nota:
Se seu sistema de arquivos raiz (root) for JFS, você deve adicionar ro à
linha kernel. O JFS precisa rodar seu registro antes de permitir a montagem de
leitura-escrita.
|
Padrão: Usando o yabootconfig
O yabootconfig irá auto-detectar suas partições em sua máquina e irá
configurar combinações de boot paralelo com o Linux, Mac OS e Mac OS X.
Para usar o yabootconfig, seu dispositivo deve ter uma partição de
bootstrap, e o /etc/fstab deve estar configurado com suas partições
de Linux. Ambos já devem ter sido feitos nos passos anteriores. Para iniciar,
certifique-se que você já tem a última versão do yaboot instalada rodando
emerge --update yaboot-static. Isto é necessário porque a última versão
pode estar disponível no Portage, mas pode não estar nos arquivos de estágio.
Agora rode o yabootconfig. O programa irá rodar e confirmar o local da
partição de bootstrap. Digite Y se estiver correto. Se não estiver,
verifique o /etc/fstab. o yabootconfig irá então escanear sua
configuração de sistema, criar o /etc/yaboot.conf e rodar
mkofboot para você. O mkofboot é usado para formatar a partição de
bootsrap, e instalar o arquivo de configuração do yaboot nela.
Você deve verificar o conteúdo do /etc/yaboot.conf. Se você fizer
mudanças no /etc/yaboot.conf (como mudar o sistema operacional
padrão de boot), certifique-se de rodar ybin -v para aplicar as mudanças
na partição de bootstrap.
Agora continue com Reiniciando o sistema.
Alternativa: Configuração manual do yaBoot
Abaixo você encontra um arquivo yaboot.conf completo. Altere-o
conforme necessário.
Listagem de código 2.4: /etc/yaboot.conf |
boot=/dev/hda2
ofboot=hd:2
device=hd:
delay=5
defaultos=macosx
timeout=30
install=/usr/lib/yaboot/yaboot
magicboot=/usr/lib/yaboot/ofboot
image=/boot/kernel-2.6.12-gentoo-r10
label=Linux
root=/dev/hda3
partition=3
read-only
macos=hd:13
macosx=hd:12
enablecdboot
enableofboot
|
Uma vez que o yaboot.conf estiver configurado do jeito que você
quer, rode mkofboot -v para instalar as configurações na partição de
bootstrap. Não se esqueça disso! Confirme quando o mkofboot pedir
para criar um novo sistema de arquivos.
Se tudo for bem, e você tiver as mesmas opções que na amostra acima, seu próximo
reboot irá lhe dar um simples menu de boot com cinco entradas. Se você atualizar
a configuração do yaboot mais para a frente, você precisará rodar ybin -v
para atualizar a partição de bootstrap - o mkofboot só serve para a
configuração inicial.
Para mais informação sobre o yaboot, veja o projeto do yaboot. Por
hora, continue a instalação com Reiniciando o sistema.
10.c. Usando o yaboot com hardware da IBM
Em hardware da IBM você não pode rodar yabootconfig ou ybin. Você deve proceder
com os seguintes passos:
- Instale o yaboot-static
-
Rode 'dd if=/usr/lib/yaboot/yaboot.chrp of=/dev/sdXX' (troque XX com seu disco
e partição para a partição PReP; no nosso exemplo isso era /dev/sda1)
-
Agora construa seu próprio arquivo yaboot.conf e coloque em /etc. (Veja o
arquivo acima ou leia as páginas de man do yaboot.conf ou veja o exemplo de
yaboot.conf abaixo)
-
Presumindo que seu dispositivo de boot em OF está apontando para o disco
rígido que sua partição de prep boot está, isto irá simplesmente funcionar, se
não na hora do IPL, vá no menu de multiboot e configure o dispositivo de
inicialização para ser aquele com sua partição de prep boot.
- E é só!
Listagem de código 3.1: yaboot.conf para hardware IBM |
device=disk:
partition=2
root=/dev/sda2
default=2.6.12-gentoo-r10
timeout=50
image=/boot/kernel-2.6.12-gentoo-r10
label=Linux
append="console=ttyS0,9600"
read-only
|
Para hardware baseado em POWER4, POWER5 e blade onde a partição de disco PReP e
a partição de disco que contém seu kernel estão no mesmo disco físico, você pode
usar um yaboot.conf simplificado. O seguinte deve ser o suficiente:
Listagem de código 3.2: yaboot.conf para hardware PReP |
default = linux
timeout = 100
image=/boot/kernel-2.6.12-gentoo-r10
label=linux
read-only
root = /dev/sda2
append="root=/dev/sda2"
|
Para verificar se o yaboot foi copiado para a partição PReP:
Listagem de código 3.3: Verificando a instalação do yaboot no PReP |
# dd if=/dev/sda1 count=10 | grep ELF
Binary file (standard input) matches
10+0 records in
10+0 records out
|
Um "match" significa que o yaboot foi instalado corretamente.
10.d. Reiniciando o sistema
Saia do ambiente de chroot e desmonte todas partições montadas. Então digite
aquele comando mágico que você estava esperando: reboot.
Listagem de código 4.1: Saindo do chroot, desmontando todas partições e reiniciando |
# exit
~# cd
~# umount /mnt/gentoo/boot /mnt/gentoo/dev /mnt/gentoo/proc /mnt/gentoo
~# reboot
|
Claro, não se esqueça de tirar o CD carregável, ou o CD será carregado novamente
ao invés de seu sistema Gentoo.
Uma vez iniciada sua instalação do Gentoo, termine com Completando sua instalação do Gentoo.
11. Finalizando a instalação do Gentoo
11.a. Administração de usuários
Adicionando um usuário para uso diário
Trabalhar como administrador (root) em um sistema Unix/Linux é perigoso e
deve ser evitado sempre que possível. Por isso é altamente recomendável
adicionar um usuário para o uso no dia-a-dia.
Os grupos de que um usuário é membro definem que atividades o usuário pode
fazer. A tabela seguinte lista um número de grupos importantes que você pode
usar:
| Grupo |
Descrição |
| audio |
poder acessar dispositivos de áudio |
| cdrom |
poder acessar dispositivos óticos diretamente |
| floppy |
poder acessar dispositivos de disquete diretamente |
| games |
poder jogar jogos |
| portage |
poder usar o comando emerge --pretend como usuário normal |
| usb |
poder acessar dispositivos USB |
| plugdev |
Poder montar e usar dispositivos plugáveis como câmeras e sticks USB
|
| video |
poder acessar hardware de captura de vídeo e usar aceleração
de hardware
|
| wheel |
poder usar o su
|
Por exemplo, para criar um usuário chamado joao que é membro dos grupos
wheel, users e audio, entre como administrador (root)
primeiro (só o administrador pode criar usuários) e rode useradd:
Listagem de código 1.1: Adicionando um usuário para o uso do dia-a-dia |
Login: root
Password:
# useradd -m -G users,wheel,audio -s /bin/bash joao
# passwd joao
Password:
Re-enter password:
|
Se um usuário precisar fazer alguma tarefa como administrador (root), ele pode
usar su - para receber privilégios de administrador (root)
temporariamente. Outro jeito é usar o pacote sudo, que é muito seguro, se
configurado corretamente.
11.b. Opcional: instale pacotes GRP
Importante:
Esta parte é só para usuários de GRP. Outros usuários devem pular esta parte e
continuar com E agora, para onde ir?.
|
Agora que seu sistema foi carregado, faça log-in como o usuário que você criou
(por exemplo, joao) e use su - para obter privilégios de
administrador (root):
Listagem de código 2.1: Obtendo privilégios de administrador (root) |
$ su -
Password:
|
Agora nós precisamos mudar a configuração do Portage para procurar pelos
binários pré-construídos do segundo CD (CD de pacotes do Gentoo). Primeiro monte
o CD:
Listagem de código 3.7: Montando o CD de pacotes |
# mount /mnt/cdrom
|
Agora configure o Portage para usar /mnt/cdrom para seus pacotes
pré-construídos:
Listagem de código 2.3: Configurando o Portage para usar /mnt/cdrom |
# ls /mnt/cdrom
# export PKGDIR="/mnt/cdrom/packages"
# export PKGDIR="/mnt/cdrom"
|
Agora instale os pacotes que você quer. O CD de pacotes contém vários binários
pré-construídos, por exemplo o KDE e o GNOME.
Listagem de código 2.4: Instalando o GNOME |
# emerge --usepkg gnome
|
Para descobrir que pacotes pré-construídos estão disponíveis, faça uma listagem
rápida de todos arquivos em /mnt/cdrom/All. Por exemplo, para
descobrir se o KDE está disponível para instalação:
Listagem de código 2.5: Descobrindo se o KDE está disponível |
# ls /mnt/cdrom/All/kde*
|
Certifique-se de instalar os binários agora. Quando você fizer um
emerge --sync para atualizar o Portage (como você verá mais tarde), os
binários pré-construídos podem não bater contra as ebuilds em seu Portage
atualizado. Você pode contornar isso usando emerge --usepkgonly ao invés
de emerge --usepkg.
Parabéns, seu sistema agora está totalmente equipado! Continue com E agora, para onde ir? para aprender mais sobre
o Gentoo.
12. E agora, para onde ir?
12.a. Documentação
Parabéns! Você tem um sistema funcionando com o Gentoo. Mas para onde ir depois
disto? Quais são suas opções agora? O que explorar primeiro? O Gentoo oferece a
seus usuários várias possibilidades, e portanto muitas características
documentadas (ou menos documentadas).
Certamente você deve olhar a próxima parte do Manual do Gentoo intitulada Trabalhando com o Gentoo, que explica como
manter os programas atualizados, como instalar mais programas, o que são as
variáveis de USE, como o sistema de inicialização do Gentoo funciona, etc...
Se você estiver interessado na otimização do sistema para desktop, ou quiser
aprender como configurar seu sistema para se ter um desktop completo e
funcional, consulte nossos extensos Recursos relacionados ao Desktop do
Gentoo. Além disso, você pode usar nosso guia de localização para adequar
seu sistema ao seu país.
Também temos o Manual de segurança do
Gentoo, que vale ser lido.
Para uma listagem completa da documentação disponível verifique nossa página de
Recursos de documentação.
12.b. Gentoo Online
Você, é claro, sempre bem-vindo em nossos Fóruns do Gentoo ou em um de nossos vários
canais de IRC do Gentoo.
Nós também temos várias listas de e-mail abertas a todos nossos
usuários. Informações de como cadastrar-se estão contidas naquela página.
Iremos calar-nos agora e deixar você aproveitar sua instalação :)
12.c. Mudanças no Gentoo desde a versão 2005.1
Mudanças?
Ainda não houve mudanças significantes.
B. Trabalhando com o Gentoo
1. Uma introdução ao Portage
1.a. Bem-vindo ao Portage
O Portage é provavelmente a inovação mais notável do Gentoo no gerenciamento de
software. Com sua alta flexibilidade e enorme quantidade de funções, é
freqüentemente visto como a melhor ferramenta de gerenciamento de software
disponível para Linux.
O Portage é completamente escrito em Python e Bash e portanto totalmente
visíveis a seus usuários já que as duas são linguagens de scripting.
A maior parte dos usuários usa o Portage através da ferramenta emerge.
Este capítulo não é feito para duplicar a informação disponível na página de man
do emerge. Para uma listagem completa das opções do emerge, por favor consulte
sua página de man:
Listagem de código 1.1: Lendo a página de man do emerge |
$ man emerge
|
1.b. A árvore do Portage
Ebuilds
Quando nós falamos de pacotes, nós queremos dizer títulos de software que estão
disponíveis para os usuários do Gentoo através da árvore do Portage. A árvore do
Portage é uma coleção de ebuilds, arquivos que contêm toda informação
que o Portage precisa para manter o software (instalar, procurar, ...). As
ebuilds residem em /usr/portage por padrão.
Quando você pedir ao Portage tomar alguma ação com relação a títulos de
software, ele usará as ebuilds em seu sistema como base. Logo, é importante que
você atualize as ebuilds em seu sistema regularmente para que o Portage saiba
sobre novo software, atualizações de segurança, etc...
Atualizando a árvore do Portage
A árvore do Portage é normalmente atualizada com o rsync, um programa rápido de transferência
de arquivos incremental. Atualizar é simples, já que o comando emerge tem
um front-end para o rsync:
Listagem de código 2.1: Atualizando a árvore do Portage |
# emerge --sync
|
Se você não consegue fazer rsync devido a restrições de firewall, você ainda
pode atualizar sua árvore do Portage usando nossos snapshots diários da árvore
do Portage. A ferramenta emerge-webrsync baixa e instala o último
snapshot em seu sistema automaticamente:
Listagem de código 2.2: Rodando emerge-webrsync |
# emerge-webrsync
|
1.c. Mantendo software
Procurando software
Para procurar títulos de software na árvore do Portage, você pode usar as
funções de procura incluídas no emerge. Por padrão,
emerge --search retorna os nomes dos pacotes cujos títulos coincidem
(inteiramente ou parcialmente) com o termo de procura.
Por exemplo, para procurar por todos pacotes que tenham "pdf" em seu nome:
Listagem de código 3.1: Procurando todos pacotes com nome contendo pdf |
$ emerge --search pdf
|
Se você deseja pesquisar também as descrições você pode usar a opção
--searchdesc (ou -S):
Listagem de código 3.2: Procurando pacotes relacionados a pdf |
$ emerge --searchdesc pdf
|
Quando você vir a saída, você perceberá que ela dá muita informação a você. Os
campos são claramente marcados para que nós não termos que adivinhar seus
significados:
Listagem de código 3.3: Exemplo de saída de emerge --search |
* net-print/cups-pdf
Latest version available: 1.5.2
Latest version installed: [ Not Installed ]
Size of downloaded files: 15 kB
Homepage: http://cip.physik.uni-wuerzburg.de/~vrbehr/cups-pdf/
Description: Provides a virtual printer for CUPS to produce PDF files.
License: GPL-2
|
Instalando software
Quando você encontrar um título de software de que você gosta, você pode
instalá-lo facilmente com o emerge: simplesmente adicione o nome do
pacote. Por exemplo, para instalar o gnumeric:
Listagem de código 3.4: Instalando o gnumeric |
# emerge gnumeric
|
Já que muitas aplicações dependem uma da outra, qualquer tentativa de instalar
um certo pacote pode resultar na instalação de várias dependências também. Não
se preocupe, o Portage lida bem com dependências. Se você quiser descobrir o que
o Portage instalaria quando você pedir para ele instalar um certo pacote,
adicione a opção --pretend. Por exemplo:
Listagem de código 3.5: Fingir instalar o gnumeric |
# emerge --pretend gnumeric
|
Quando você pede ao Portage para instalar um pacote, ele irá baixar o código
fonte necessário da Internet (se necessário) e gravá-lo por padrão em
/usr/portage/distfiles. Depois disso irá descompactar, compilar e
instalar o pacote. Se você quiser que o Portage só baixe as fontes sem
instalá-las, adicione a opção --fetchonly ao comando emerge:
Listagem de código 3.6: Baixando o código-fonte do gnumeric |
# emerge --fetchonly gnumeric
|
Encontrando documentação instalada por pacotes
Muitos pacotes vêm com sua própria documentação. Às vezes, a opções de USE
doc determina se documentação do pacote deve ser instalada ou não.
Você pode verificar a existência de uma opção de USE doc com o comando
emerge -vp <nome do pacote>.
Listagem de código 3.7: Verificando a existência de uma opção de USE doc |
# emerge -vp alsa-lib
[ebuild N ] media-libs/alsa-lib-1.0.9_rc3 +doc -jack 674 kB
|
Você pode ativar ou desativar a opção de USE doc tanto globalmente no
arquivo /etc/make.conf como por pacote no arquivo
/etc/portage/package.use. O capítulo Variáveis de USE cobre este aspecto com detalhe.
Uma vez o pacote instalado, sua documentação geralmente é encontrada em um
subdiretório com o nome do pacote no diretório /usr/share/doc. Você
também pode listar todos arquivos instalados com a ferramenta equery, que
é parte do pacote
app-portage/gentoolkit.
Listagem de código 3.8: Localizando documentação de pacote |
# ls -l /usr/share/doc/alsa-lib-1.0.9_rc3
total 28
-rw-r--r-- 1 root root 669 May 17 21:54 ChangeLog.gz
-rw-r--r-- 1 root root 9373 May 17 21:54 COPYING.gz
drwxr-xr-x 2 root root 8560 May 17 21:54 html
-rw-r--r-- 1 root root 196 May 17 21:54 TODO.gz
# equery files alsa-lib | less
media-libs/alsa-lib-1.0.9_rc3
* Contents of media-libs/alsa-lib-1.0.9_rc3:
/usr
/usr/bin
/usr/bin/alsalisp
|
Removendo software
Quando você quiser remover um pacote de software de seu sistema, use emerge
--unmerge. Isto dirá para o Portage remover todas arquivos instalados por
aquele pacote de seu sistema exceto os arquivos de configuração da
aplicação se você os alterou depois da instalação. Deixar os arquivos de
configuração permite que você continue trabalhando com o pacote se você decidir
que quer instalá-lo novamente.
Todavia, um grande aviso é aplicável: o Portage não irá
verificar se o pacote que você quer remover é necessário para outro pacote.
Ele irá, no entanto, avisar quando você quiser remover um pacote importante que
quebraria seu sistema se você desinstalasse-lo.
Listagem de código 3.9: Removendo o gnumeric do sistema |
# emerge --unmerge gnumeric
|
Quando você remove um pacote de seu sistema, as dependências do pacote que foram
instaladas automaticamente são deixadas. Para que o Portage localize todas
dependências que podem ser removidas agora, use a função --depclean do
emerge. Nós iremos falar mais disso adiante.
Atualizando seu sistema
Para manter seu sistema em perfeita forma (e sem mencionar instalar as últimas
atualizações de segurança) você precisa atualizar seu sistema regularmente. Uma
vez que o Portage só verifica as ebuilds em sua árvore do Portage, você primeiro
tem que atualizar sua árvore do Portage. Quando sua árvore do Portage é
atualizada, você pode atualizar seu sistema com emerge --update world. No
próximo exemplo, também usaremos a opção ask para dizer ao Portage para
mostrar a lista de pacotes que ele quer atualizar e perguntar para você se você
quer continuar:
Listagem de código 3.10: Atualizando seu sistema |
# emerge --update --ask world
|
O Portage irá procurar novas versões das aplicações que você tem instaladas.
Todavia, ele só irá verificar as versões das aplicações que você instalou
explicitamente - não as dependências. Se você quiser atualizar todos pacotes em
seu sistema, adicione o argumento --deep:
Listagem de código 3.11: Atualizando o sistema inteiro |
# emerge --update --deep world
|
Já que atualizações de segurança também acontecem em pacotes que você não
instalou explicitamente em seu sistema (mas que são puxados como dependências de
outros programas), também é recomendado que você rode isto de vez em quando.
Se você alterou qualquer uma das suas variáveis
de USE, você deve adicionar --newuse também. O Portage irá então
verificar se a mudança necessita a instalação de novos pacotes ou recompilação
dos instalados:
Listagem de código 3.12: Fazendo um update completo |
# emerge --update --deep --newuse world
|
Meta pacotes
Alguns pacotes na árvore do Portage não têm nenhum conteúdo real, mas são usados
para instalar uma coleção de pacotes. Por exemplo, o pacote kde irá
instalar um ambiente KDE completo em seu sistema ao instalar os vários pacotes
relacionados ao KDE como dependências.
Se você quiser remover um pacote desses de seu sistema, rodar emerge
--unmerge neste pacote não terá muito efeito já que as dependências
permanecem no sistema.
O Portage tem a funcionalidade de remover dependências órfãs também, mas já que
a disponibilidade do software é dinamicamente dependente, você primeiro precisar
atualizar seu sistema completamente, incluindo as novas mudanças que você fez
quando mudou as opções de USE. Depois disso você pode rodar
emerge --depclean para remover as dependências órfãs. Quando isso é
feito, você precisa reconstruir as aplicações que foram linkadas dinamicamente
aos títulos de software a que foram linkados dinamicamente mas que não são mais
necessários.
Tudo isso é feito com os três seguintes comandos:
Listagem de código 3.13: Removendo dependências órfãs |
# emerge --update --deep --newuse world
# emerge --depclean
# revdep-rebuild
|
O revdep-rebuild é fornecido pelo pacote gentoolkit; não se
esqueça de instalá-lo primeiro:
Listagem de código 3.14: Instalando o pacote |
# emerge gentoolkit
|
1.d. Quando o Portage estiver reclamando...
Sobre SLOTs, virtuals, branches, arquiteturas e profiles
Como dissemos antes, o Portage é extremamente poderoso e suporta muitas funções
que outras ferramentas de gerenciamento de software não têm. Para entender isso,
nós explicamos alguns dos aspectos do Portage sem entrar em muitos detalhes.
Com o Portage, as diferentes versões de um único pacote podem coexistir em um
sistema. Enquanto outras distribuições costumam nomear os pacotes com as versões
(como freetype e freetype2), o Portage usa uma tecnologia chamada
SLOTs. Uma ebuild declara um certo SLOT para sua versão. Ebuilds com
SLOTs diferentes podem coexistir em um mesmo sistema. Por exemplo, o pacote
freetype tem ebuilds com SLOT="1" e SLOT="2".
Também existem pacotes que fornecem a mesma funcionalidade, mas que são
implementados de maneira diferente. Por exemplo, metalogd,
sysklogd e syslog-ng são todos loggers de sistema. Aplicações que
dependem da disponibilidade de um "logger de sistema" não podem depender, por
exemplo, do metalogd, já que outros loggers de sistema são tão bons
quanto. O Portage permite o uso de virtuals: cada logger de sistema
fornece a dependência virtual/syslog para que as aplicações possam
depender de virtual/syslog.
O software na árvore do Portage pode residir em diferentes ramos. Por padrão seu
sistema só aceita pacotes que o Gentoo considera estável. A maior parte dos
títulos de software novos, quando colocados na árvore, são adicionados no ramo
de testes, significando que mais testes devem ser feitos antes de serem marcados
estáveis. Embora você veja as ebuilds deste software na árvore do Portage, o
Portage não irá atualizá-los antes de serem colocados no ramo estável.
Alguns softwares só estão disponíveis para algumas arquiteturas. Ou o software
não funciona em outras arquiteturas, ou precisa de mais testes, ou o
desenvolvedor que colocou o software na árvore do Portage não pôde verificar se
o pacote funciona em arquiteturas diferentes.
Cada instalação do Gentoo adere a um certo profile (perfil) que contém,
entre outras informações, a lista de pacotes que são necessários para que um
sistema funcione normalmente.
Pacotes bloqueados
Listagem de código 4.1: Aviso do Portage sobre pacotes bloqueados (com --pretend) |
[blocks B ] mail-mta/ssmtp (is blocking mail-mta/postfix-2.2.2-r1)
|
Listagem de código 4.2: Aviso do Portage sobre pacotes bloqueados (sem --pretend) |
!!! Error: the mail-mta/postfix package conflicts with another package.
!!! both can't be installed on the same system together.
!!! Please use 'emerge --pretend' to determine blockers.
|
As ebuilds contêm certos campos específicos que informam ao Portage sobre suas
dependências. Existem duas dependências possíveis: dependências de construção,
declaradas em DEPEND e dependências de execução, declaradas em
RDEPEND. Quando uma dessas dependências marca um pacote ou virtual como
sendo explicitamente não compatível, ele faz um bloqueio.
Para consertar um bloqueio, você pode escolher não instalar o pacote ou
desinstalar o pacote conflituoso primeiro. No exemplo dado, você pode não
instalar o postfix ou remover o ssmtp primeiro.
Também é possível que dois pacotes que ainda não foram instalados bloqueiem um
ao outro. Neste caso raro, você deve descobrir por que você precisa instalar os
dois. Na maior parte dos casos, você pode se satisfazer com um pacote. Se não,
por favor relate um bug no Sistema de
rastreamento de bugs do Gentoo.
Pacotes mascarados
Listagem de código 4.3: Aviso do Portage sobre pacotes mascarados |
!!! all ebuilds that could satisfy "bootsplash" have been masked.
|
Listagem de código 4.4: Aviso do Portage sobre pacotes mascarados - motivo |
!!! possible candidates are:
- gnome-base/gnome-2.8.0_pre1 (masked by: ~x86 keyword)
- lm-sensors/lm-sensors-2.8.7 (masked by: -sparc keyword)
- sys-libs/glibc-2.3.4.20040808 (masked by: -* keyword)
- dev-util/cvsd-1.0.2 (masked by: missing keyword)
- media-video/ati-gatos-4.3.0 (masked by: package.mask)
- sys-libs/glibc-2.3.2-r11 (masked by: profile)
|
Quando você quiser instalar um pacote que não está disponível em seu sistema,
você receberá este erro de máscara. Você pode tentar instalar uma aplicação
diferente que está disponível para seu sistema ou esperar até que o pacote fique
disponível. Sempre existe um motivo para um pacote estar mascarado:
-
~arch keyword significa que a aplicação não foi testada o suficiente
para estar no ramo estável. Espere alguns dias ou semanas e tente novamente.
-
-arch keyword ou -* keyword significa que a aplicação não
funciona em sua arquitetura. Se você acredita que o pacote funciona preencha
um bug em nosso website do bugzilla.
-
missing keyword significa que a aplicação não foi testada na
sua arquitetura ainda. Peça ao time de porting de arquiteturas que teste o
pacote ou teste para eles e relate sua experiência em nosso website do bugzilla.
-
package.mask significa que o pacote está corrupto, instável ou pior e
foi deliberadamente marcado como não usável.
-
profile significa que o pacote não é cabível a seu profile. A
aplicação pode quebrar seu sistema se for instalada ou simplesmente não é
compatível com o profile que você usa.
Dependências faltando
Listagem de código 4.5: Aviso do Portage sobre dependências faltando |
emerge: there are no ebuilds to satisfy ">=sys-devel/gcc-3.4.2-r4".
!!! Problem with ebuild sys-devel/gcc-3.4.2-r2
!!! Possibly a DEPEND/*DEPEND problem.
|
A aplicação que você está tentando instalar depende em um outro pacote que não
está disponível para seu sistema. Veja no bugzilla se o problema é conhecido, e se não
for, por favor relate-o. A menos que você esteja misturando ramos isso não deve
acontecer e logo é um bug.
Nomes de ebuild ambíguos
Listagem de código 4.6: Aviso do Portage sobre nomes de ebuild ambíguos |
!!! The short ebuild name "aterm" is ambiguous. Please specify
!!! one of the following fully-qualified ebuild names instead:
dev-libs/aterm
x11-terms/aterm
|
A aplicação que você quer instalar tem um nome que corresponde a mais de um
pacote. Você precisa dar a categoria também. O Portage irá informar você sobre
as possíveis alternativas a se escolher.
Dependências circulares
Listagem de código 4.7: Aviso do Portage sobre dependências circulares |
!!! Error: circular dependencies:
ebuild / net-print/cups-1.1.15-r2 depends on ebuild / app-text/ghostscript-7.05.3-r1
ebuild / app-text/ghostscript-7.05.3-r1 depends on ebuild / net-print/cups-1.1.15-r2
|
Dois (ou mais) pacotes que você quer instalar dependem um do outro e logo não
podem ser instalados. Isto é provavelmente um bug na árvore do Portage. Por
favor sincronize depois de um tempo e tente novamente. Você também pode ver no
bugzilla se o problema é conhecido, e
se não for, relatá-lo.
Problema ao baixar arquivos
Listagem de código 4.8: Aviso do Portage sobre problema ao baixar arquivos |
!!! Fetch failed for sys-libs/ncurses-5.4-r5, continuing...
!!! Some fetch errors were encountered. Please see above for details.
|
O Portage não conseguiu baixar as fontes para a aplicação dada e tentará
continuar com as outras aplicações (se aplicável). Este problema pode ser devido
a um servidor que não sincronizou corretamente ou porque a ebuild aponta para um
local incorreto. O servidor onde residem as fontes também pode estar desligado
por algum motivo.
Tente de novo uma hora depois para ver se o problema ainda persiste.
Proteção de sistema pelo profile
Listagem de código 4.9: Aviso do Portage sobre pacotes protegidos pelo profile |
!!! Trying to unmerge package(s) in system profile. 'sys-apps/portage'
!!! This could be damaging to your system.
|
Você pediu para remover um pacote que é central para o seu sistema. Ele está
listado em seu profile como necessário e não deve ser removido de seu sistema.
2. Variáveis de USE
2.a. O que são as opções de USE?
As idéias por trás das opções de USE
Quando você está instalando o Gentoo (ou qualquer outra distribuição, até mesmo
sistema operacional) você faz escolhas que dependem do ambiente com que você
está trabalhando. Uma configuração para servidores difere de uma configuração de
uma estação de trabalho. Uma estação de jogos difere de uma estação de gráficos
3D.
Isso não somente é verdade para os pacotes que você quer instalar, mas também
que funções um pacote deve suportar. Se você não precisa de OpenGL, por que se
preocupar em instalar o OpenGL e construir suporte para OpenGL na maior parte de
seus pacotes? Se você não quer usar o KDE, por que compilar pacotes com suporte
a KDE se eles irão funcionar perfeitamente sem suporte a KDE?
Para ajudar os usuários na decisão sobre o que instalar/ativar e o que não, nós
quisemos que o usuário especificasse seu ambiente de uma maneira fácil. Isto
força o usuário a decidir sobre o que eles realmente querem e facilita o
processo para o Portage, nosso sistema de gerenciamento de pacotes, tornando as
decisões úteis.
Definição de uma opção de USE
Entre com as opções de USE. Tal opção é uma palavra-chave que junta suporte e
informações de dependências com um certo conceito. Se você define uma certa
opção de USE, o Portage saberá que você quer suporte para a palavra-chave
escolhida. Claro que isso também altera as informações de dependências de um
pacote.
Vamos ver um exemplo específico: a palavra-chave kde. Se você não tiver
esta palavra-chave na sua variável de USE, todos pacotes que tem suporte
opcional ao KDE serão compilados sem suporte ao KDE. Todos pacotes
que tem uma dependência opcional do KDE serão instalados sem
instalar as bibliotecas do KDE (como dependência). Se você definiu a
palavra-chave kde, então estes pacotes serão compilados com
suporte a KDE, e as bibliotecas do KDE serão instaladas como dependência.
Ao definir as palavras-chave corretamente você recebe um sistema feito
especificamente para suas necessidades.
Que opções de USE existem?
Existem dois tipos de opções de USE: variáveis globais e locais.
-
Uma opção de USE global é usada por vários pacotes, pelo sistema
inteiro. Isto é o que a maior parte das pessoas entende como opções de USE.
-
Uma opção de USE local é usada só por um único pacote para decisões
específicas a ele.
Uma lista das opções de USE disponíveis globalmente pode ser encontrada online ou localmente em
/usr/portage/profiles/use.desc.
Uma lista de opções de USE locais pode ser encontrada localmente em
/usr/portage/profiles/use.local.desc.
2.b. Usando as opções de USE
Declarando opções de USE permanentes
Esperando ter convencido você da importância das opções de USE, nós iremos
informá-lo sobre como declarar as opções de USE.
Como mencionado anteriormente, todas opções de USE são declaradas dentro da
variável de USE. Para facilitar ao usuários a busca e escolha de opções
de USE, nós já fornecemos uma configuração de USE padrão. Esta
configuração é uma coleção de opções de USE que achamos ser usada comumente
pelos usuários do Gentoo. A configuração padrão é declarada na parte dos
arquivos make.defaults de seu profile (perfil).
O profile que seu sistema escuta é apontado pelo link simbólico
/etc/make.profile. Cada profile funciona em cima de outro profile
maior, e o resultado final é a soma de todos profiles. O profile de topo
é o profile base (/usr/portage/profiles/base).
Vamos ver a configuração padrão para o profile 2004.3:
Listagem de código 2.1: Variável de USE cumulativa para o profile 2004.3 |
USE="x86 oss apm arts avi berkdb bitmap-fonts crypt cups encode fortran f77
foomaticdb gdbm gif gpm gtk imlib jpeg kde gnome libg++ libwww mad
mikmod motif mpeg ncurses nls oggvorbis opengl pam pdflib png python qt
quicktime readline sdl spell ssl svga tcpd truetype X xml2 xmms xv zlib"
|
Como você pode ver, esta variável já contém várias palavras-chave. Não
altere nada no arquivo make.defaults para ajustar as variáveis de
USE às suas necessidades: mudanças nesse arquivo serão desfeitas quando
você atualizar o Portage!
Para mudar este ajuste padrão, você precisa adicionar ou remover palavras-chave
à variável USE. Isto é feito globalmente ao definir a variável USE
no arquivo /etc/make.conf. Nesta variável você pode adicionar
opções de USE adicionais de que você precisa, ou remover as opções de USE que
você não quer. Para remover opções, coloque a palavra-chave prefixada do sinal
de menos ("-").
Por exemplo, para remover suporte para KDE e QT e adicionar suporte para ldap,
as seguintes opções de USE podem ser definidas no
/etc/make.conf:
Listagem de código 3.7: Um exemplo de configuração de USE no /etc/make.conf |
USE="-kde -qt ldap"
|
Declarando opções de USE para pacotes individuais
Às vezes você quer declarar uma opção de USE para umas (ou algumas) aplicações,
mas não para todo o sistema. Para fazê-lo, você precisará criar o diretório
/etc/portage (se ainda não existir) e editar o arquivo
/etc/portage/package.use.
Por exemplo, se você não quiser suporte de berkdb global, mas você quer
ele para o mysql, você deve adicionar:
Listagem de código 2.3: exemplo de /etc/portage/package.use |
dev-db/mysql berkdb
|
Você pode, lógico, também desligar opções de USE para uma certa
aplicação. Por exemplo, se você não quer suporte de java no PHP:
Listagem de código 2.4: segundo exemplo de /etc/portage/package.use |
dev-php/php -java
|
Declarando opções de USE temporárias
Às vezes você quer que um certa opção de USE só uma vez. Ao invés de editar o
/etc/make.conf duas vezes (para fazer e desfazer mudanças à
variável de USE) você pode simplesmente declarar a variável de USE como uma
variável de ambiente. Lembre-se disso, quando você fizer emerge novamente ou
atualizar a aplicação (tanto explicitamente como parte de uma atualização de
sistema) suas mudanças serão perdidas!
Como um exemplo nós iremos remover o java temporariamente das opções de USE
durante a instalação do mozilla.
Listagem de código 2.5: Usando a USE como variável de ambiente |
# USE="-java" emerge mozilla
|
Opções de USE automáticas
Depois de certos pacotes terem sido instalados, opções adicionais de USE serão
automaticamente ativadas para você se você não desativá-las explicitamente. Para
ver a lista de pacotes que ligam opções de USE automáticas, por favor veja os
arquivos /etc/make.profile/use.defaults e use.defaults
dos profiles pais.
Listagem de código 2.6: Um trecho de /etc/make.profile/use.defaults |
gnome gnome-base/gnome
gtk x11-libs/gtk+
qt x11-libs/qt
kde kde-base/kdebase
motif x11-libs/openmotif
|
Precedência
Lógico que há uma certa precedência sobre qual configuração tem prioridade sobre
a variável de USE. Você não deve querer declarar USE="-java" só para
descobrir que java é ainda usado devido a um ajuste que tem maior
prioridade. A precedência para o ajuste de USE é, em ordem de prioridade (o
primeiro tem menor prioridade):
-
Configurações padrões declarada nos arquivos do make.defaults,
parte de seu profile
-
Configurações de USE herdadas se um pacote do profile
use.defaults for instalado
-
Configurações de USE definidas pelo usuário em /etc/make.conf
-
Configurações de USE definidas pelo usuário em
/etc/portage/package.use
-
Configurações definidas pelo usuário como uma variável de ambiente
Para ver a configuração de USE final como o Portage enxerga ela, rode
emerge --info. Isto irá listar todas variáveis relevantes (incluindo a
variável de USE) com o conteúdo usado pelo Portage.
Listagem de código 2.7: Rodando emerge --info |
# emerge info
|
Adaptando seu sistema inteiro a novas opções de USE
Se você alterou suas opções de USE e quiser atualizar seu sistema inteiro para
que ele use as novas flags de USE, use a opção --newuse do emerge:
Listagem de código 2.8: Reconstruindo seu sistema inteiro |
# emerge --update --deep --newuse world
|
A seguir, rode o depclean do Portage para remover quaisquer dependências
condicionais que foram instaladas em seu sistema "antigo", mas que viraram
obsoletas com as novas opções de USE.
Aviso:
Rodar emerge --depclean é uma operação perigosa e deve ser feita com
cuidado. Verifique a lista de pacotes "obsoletos" dada para ter certeza que
nenhum pacote de que você precisa seja removido. No exemplo seguinte nós
adicionamos a opção -p para que o depclean só liste os pacotes sem
removê-los.
|
Listagem de código 2.9: Removendo pacotes obsoletos |
# emerge -p --depclean
|
Quando o depclean terminar, rode revdep-rebuild para reconstruir as
aplicações que são linkadas dinamicamente contra objetos compartilhados
fornecidos por pacotes possivelmente removidos. O revdep-rebuild é parte
do pacote gentoolkit; não se esqueça de fazer emerge dele primeiro:
Listagem de código 2.10: Rodando revdep-rebuild |
# revdep-rebuild
|
Quando tudo isso for feito, seu sistema estará usando as novas opções de USE.
2.c. Opções de USE específicas a pacotes
Vendo opções de USE disponíveis
Vamos tomar o exemplo do mozilla: que opções de USE ele escuta? Para
descobrir, nós usamos o emerge com as opções --pretend e
--verbose:
Listagem de código 3.1: Vendo todas opções de USE |
# emerge --pretend --verbose mozilla
These are the packages that I would merge, in order:
Calculating dependencies ...done!
[ebuild R ] www-client/mozilla-1.7.12-r2 USE="crypt gnome java mozsvg ssl
truetype xprint -debug -ipv6 -ldap -mozcalendar -mozdevelop -moznocompose
-moznoirc -moznomail -moznoxft -postgres -xinerama" 0 kB
|
O emerge não é a única ferramenta para esta tarefa. Na verdade, temos uma
ferramenta dedicada a informações de pacotes chamada equery que reside
no pacote gentoolkit. Primeiro, instale o gentoolkit:
Listagem de código 3.2: Instalando o gentoolkit |
# emerge gentoolkit
|
Agora rode equery com o argumento uses para ver as opções de USE
de um certo pacote. Por exemplo, para o pacote gnumeric:
Listagem de código 3.3: Usando o equery para ver opções de USE |
# equery uses gnumeric
[ Colour Code : set ]
[ Legend : (U) Col 1 - Current USE flags ]
[ : (I) Col 2 - Installed With USE flags ]
U I [ Found these USE variables in : app-office/gnumeric-1.2.0 ]
- - : Adds GNU Data Access (CORBA wrapper) support for gnumeric
- - : unknown
+ + python : Adds support/bindings for the Python language
+ + bonobo : Adds support for gnome-base/bonobo (Gnome CORBA interfaces)
|
3. Funcionalidades do Portage
3.a. Funcionalidades do Portage
O Portage tem várias funções adicionais que tornam sua experiência com o Gentoo
ainda melhor. Várias dessas funcionalidades dependem de algumas ferramentas de
software que melhoram performance, confiabilidade, segurança ...
Para ligar ou desligar algumas funcionalidades do Portage você precisa editar a
variável FEATURES do arquivo /etc/make.conf, que contém as
várias palavras-chave de funcionalidades, separadas por espaços em branco. Em
vários casos você também precisará instalar uma ferramenta adicional de qual a
funcionalidade depende.
Nem todas as funções que o Portage suporta estão listadas aqui. Para uma lista
completa, consulte a página de manual do make.conf:
Listagem de código 1.1: Consultando a página de manual do make.conf |
$ man make.conf
|
Para descobrir o que está ajustado por padrão em FEATURES, rode
emerge --info e procure pela variável FEATURES ou pegue-a com o grep:
Listagem de código 1.2: Descobrindo o que já está na variável FEATURES |
$ emerge --info | grep FEATURES
|
3.b. Compilação distribuída
Usando distcc
O distcc é um programa usado para distribuir compilações através de
várias máquinas, não necessariamente idênticas, em uma rede. O cliente de
distcc envia toda informação necessária para os servidores de distcc
(rodando distccd) para que eles possam compilar pedaços de código fonte
para o cliente. O resultado final é um tempo de compilação menor.
Você pode encontrar mais informações sobre o distcc (e como fazer com que
funcione com o Gentoo em nossa Documentação de
distcc do Gentoo.
Instalando o distcc
O distcc vem com um monitor gráfico para controlar tarefas que o seu computador
está enviando para compilação. Se você usa Gnome, coloque 'gnome' em sua
variável de USE. Senão, se você não usa gnome e ainda quiser ter o monitor, você
deve colocar 'gtk' na variável de USE.
Listagem de código 2.1: Instalando o distcc |
# emerge distcc
|
Ativando suporte no Portage
Adicione distcc à variável FEATURES dentro de
/etc/make.conf. A seguir, edite a variável MAKEOPTS de acordo com
sua preferência. Um guia padrão é colocar "-jX" onde X é o número de CPUs
rodando distccd (incluindo o host atual) mais um, mas você pode ter
resultados melhores com outros números.
Agora rode distcc-config e digite a lista de servidores de distcc
disponíveis. Por simples exemplo, presumimos que os servidores de DistCC
disponíveis são 192.168.1.102 (o host atual), 192.168.1.103 e 192.168.1.104
(dois hosts remotos):
Listagem de código 2.2: Configurando o distcc para usar os três servidores de distcc disponíveis |
# distcc-config --set-hosts "192.168.1.102 192.168.1.103 192.168.1.104"
|
Não se esqueça de rodar o daemon de distccd também:
Listagem de código 2.3: Iniciando os daemons de distccd |
# rc-update add distccd default
# /etc/init.d/distccd start
|
3.c. Fazendo cachê da compilação
Sobre o ccache
O ccache é um cachê para compilações rápidas. Quando você compila um
programa, ele fará cachê de resultados intermediários para que, quando quer que
você recompilar o mesmo programa, o tempo de compilação seja drasticamente
reduzido. Em compilações comuns isso pode resultar em compilações de 5 a 10
vezes mais rápidas.
Se você estiver interessado no funcionamento do ccache, por favor visite a
homepage do ccache.
Instalando o ccache
Para instalar o ccache, rode emerge ccache:
Listagem de código 3.1: Instalando o ccache |
# emerge ccache
|
Ativando suporte no Portage
Abra o /etc/make.conf e coloque ccache na variável FEATURES.
A seguir, adicione a variável chamada CCACHE_SIZE e ajuste-a para "2G":
Listagem de código 3.2: Editando o CCACHE_SIZE no /etc/make.conf |
CCACHE_SIZE="2G"
|
Para ver se o ccache está funcionando, peça ao ccache que dê suas estatísticas.
Já que o Portage usa um diretório de home de ccache diferente, você também
precisa configurar a variável CCACHE_DIR:
Listagem de código 3.3: Vendo estatísticas do ccache |
# CCACHE_DIR="/var/tmp/ccache" ccache -s
|
O local /var/tmp/ccache é o diretório home de ccache padrão do
Portage; se você quiser alterar este ajuste, você pode configurar a variável
CCACHE_DIR no /etc/make.conf.
No entanto, se você rodar ccache, ele irá usar o local padrão
${HOME}/.ccache, motivo pelo qual você precisou configurar a
variável CCACHE_DIR na hora de pedir as estatísticas de ccache (do
Portage).
Usando o ccache em compilações alheias ao Portage
Se você quiser usar o ccache para compilações alheias ao Portage, adicione
/usr/lib/ccache/bin ao começo de sua variável PATH (antes de
/usr/bin). Isto pode ser feito editando
/etc/env.d/00basic, que é o primeiro arquivo ambiental que define a
variável PATH:
Listagem de código 3.4: Editando /etc/env.d/00basic |
PATH="/usr/lib/ccache/bin:/opt/bin"
|
3.d. Suporte a pacotes binários
Criando pacotes pré-construídos
O Portage suporta a instalação de pacotes pré-construídos. Embora o Gentoo não
forneça pacotes construídos (fora os snapshots de GRP), pode-se tornar o Portage
totalmente ciente de pacotes pré-construídos.
Para criar um pacote pré-construído você pode usar o comando quickpkg se
o pacote já estiver instalado em seu sistema, ou emerge com as opções
--buildpkg ou --buildpkgonly.
Se você quiser que o Portage crie pacotes pré-construídos de cada pacote que
você instalar, adicione buildpkg à variável FEATURES.
Suporte estendido para criar estágios de pacotes pré-construídos pode ser
obtido com o catalyst. Para mais informações sobre o catalyst por favor
leia o Manual de Referência
do Catalyst e o Guia de
perguntas freqüentes do Catalyst.
Instalando pacotes pré-construídos
Embora o Gentoo não forneça um, você pode criar um repositório central onde você
grava pacotes pré-construídos. Se você quiser usar este repositório, você
precisa tornar o Portage ciente dele fazendo com que a variável PORTAGE_BINHOST
aponte para ele. Por exemplo, se os pacotes pré-construídos estiverem em
ftp://buildhost/gentoo:
Listagem de código 4.1: Configurando PORTAGE_BINHOST no /etc/make.conf |
PORTAGE_BINHOST="ftp://buildhost/gentoo"
|
Quando você quiser instalar um pacote pré-construído, adicione a opção
--getbinpkg ao comando emerge junto com a opção --usepkg. A
primeira opção diz ao emerge para baixar os pacotes pré-construídos do servidor
definido anteriormente, enquanto a segunda pede ao emerge que tente instalar o
pacote pré-construído primeiro antes de baixar as fontes e compilá-las.
Por exemplo, para instalar o gnumeric com pacotes pré-construídos:
Listagem de código 4.2: Instalando um pacote pré-construído do gnumeric |
# emerge --usepkg --getbinpkg gnumeric
|
Mais informações sobre as opções dos pacotes pré-construídos do emerge podem ser
encontradas na página de manual do emerge:
Listagem de código 4.3: Lendo a página de manual do emerge |
$ man emerge
|
4. Scripts de inicialização
4.a. Runlevels
Carregando seu sistema
Quando você carregar seu sistema, você perceberá textos passarem. Se você prestar
atenção, você verá que o texto é o mesmo toda vez que você reinicia
seu sistema. A seqüência dessas ações é chamada de seqüência de
início e é (mais ou menos) definida estaticamente.
Primeiro, seu gerenciador de inicialização irá carregar a imagem de kernel que você tem definida na
configuração do gerenciador na memória, depois falando para a CPU rodar o
kernel. Quando o kernel é carregado e rodado, ele inicializa todas estruturas e tarefas
específicas do kernel e roda o processo de init.
O processo então verifica que todos sistemas de arquivos (definidos em
/etc/fstab) estão montados e prontos para serem usados. Então ele executa
vários scripts localizados em /etc/init.d, o que inicia os
serviços que você precisa para ter um sistema carregado com sucesso.
Finalmente, quando todos scripts são executados, o init ativa os terminais
(na maior parte só os consoles virtuais que estão escondidos através de Alt-F1,
Alt-F2, etc.) chamando um processo especial chamado agetty.
Este processo irá então certificar-se que você poder se logar nos terminais
rodando login.
Scripts de init
O init não roda os scripts em /etc/init.d aleatoriamente.
Mais ainda, ele não roda todos scripts em /etc/init.d,
só os que são ditos para ele executar. Ele decide que scripts executar
olhando em /etc/runlevels.
Primeiro, o init roda todos scripts de /etc/init.d que têm
links simbólicos dentro de /etc/runlevels/boot. Normalmente, ele irá
iniciar os scripts em ordem alfabética, mas alguns scripts tem informações sobre
dependências neles, avisando o sistema de que outro script deve ser rodado antes
dele poder ser iniciado.
Quando todos scripts de referência de /etc/runlevels/boot são executados,
o init continua carregando os scripts que têm um link simbólico para eles
em /etc/runlevels/default. Novamente, ele usa a ordem alfabética
para decidir que script rodar primeiro, a menos que um script tenha informações
de dependências nele, caso em que a ordem é mudada para a fornecer uma
seqüência de inicialização válida.
Como o init funciona
Claro que o init decide tudo sozinho. Ele precisa de um
arquivo de configuração que especifica que ações devem ser tomadas. Este
arquivo de configuração chama-se /etc/inittab.
Se você lembra da seqüência de inicialização que acabamos de descrever, você irá lembrar-se
que a primeira ação do init é montar os sistemas de arquivos. Isto é definido
na seguinte linha do /etc/inittab:
Listagem de código 1.1: A linha de inicialização de sistema em /etc/inittab |
si::sysinit:/sbin/rc sysinit
|
A linha diz para o init que ele deve rodar /sbin/rc sysinit para
inicializar o sistema. O script /sbin/rc toma conta da
inicialização, o que permite que você diga que o init não faz tanto -- ele
delega tarefas de inicialização do sistema para outro processo.
Segundo, o init executou todos scripts que tinham links simbólicos em
/etc/runlevels/boot. Isto é definido na seguinte linha:
Listagem de código 1.2: A inicialização do sistema, continuado |
rc::bootwait:/sbin/rc boot
|
Novamente o script rc faz as tarefas necessárias. Note que a opção
dada para o rc (boot) é a mesma que o subdiretório de
/etc/runlevels que é usado.
Neste ponto o init verifica seu arquivo de configuração para ver que runlevel ele
deve rodar. Para decidir isso, ele lê a seguinte linha do
/etc/inittab:
Listagem de código 1.3: A linha initdefault |
id:3:initdefault:
|
Neste caso (que é o que a maioria dos usuários do Gentoo usam), o id do runlevel
é 3. Usando essa informação, o init verifica o que ele deverodar para iniciar o
runlevel 3:
Listagem de código 1.4: As definições de runlevel |
l0:0:wait:/sbin/rc shutdown
l1:S1:wait:/sbin/rc single
l2:2:wait:/sbin/rc nonetwork
l3:3:wait:/sbin/rc default
l4:4:wait:/sbin/rc default
l5:5:wait:/sbin/rc default
l6:6:wait:/sbin/rc reboot
|
A linha que define o level 3, novamente, usa o script rc para iniciar os
serviços (agora com o argumento default). Novamente note que o argumento do
rc é o mesmo que o subdiretório de /etc/runlevels.
Quando o rc termina, o init decide que consoles virtuais ele deve
ativar e que comandos precisam ser rodados em cada console:
Listagem de código 1.5: A definição de consoles virtuais |
c1:12345:respawn:/sbin/agetty 38400 tty1 linux
c2:12345:respawn:/sbin/agetty 38400 tty2 linux
c3:12345:respawn:/sbin/agetty 38400 tty3 linux
c4:12345:respawn:/sbin/agetty 38400 tty4 linux
c5:12345:respawn:/sbin/agetty 38400 tty5 linux
c6:12345:respawn:/sbin/agetty 38400 tty6 linux
|
O que é um runlevel?
Você viu que o init usa um esquema de numeração para decidir que
runlevel ele deve ativar. Um runlevel é um estado em que seu sistema
está rodando e contém uma coleção de scripts (scripts de runlevel ou
initscripts) que devem ser executados quando você entra ou sai de um runlevel.
No Gentoo, existem sete runlevels definidos: três runlevels internos, e quatro
definidos pelo usuário. Os runlevels internos são chamados de sysinit,
shutdown e reboot e fazem exatamente o que seus nomes implicam:
iniciar o sistema, desligar o sistema e reiniciar o sistema.
Os runlevels definidos por usuário são aqueles com um subdiretório
/etc/runlevels acompanhante: boot,
default, nonetwork e single. O runlevel
boot inicia todos serviços necessários ao sistema que os outros
runlevels usam. Os três runlevels restantes diferem em que serviços eles iniciam:
O default é usado para operações rotineiras, nonetwork
é usado em caso nenhuma conexão de rede é necessária, e single é
usado para quando você necessita consertar o sistema.
Trabalhando com scripts de init
Os scripts que o processo rc chama podem ser executados com os argumentos
start, stop, restart, pause, zap,
status, ineed, iuse, needsme, usesme ou
broken.
Para iniciar, parar ou reiniciar um serviço (e todos serviços dependentes),
start, stop e restart devem ser usados:
Listagem de código 1.6: Iniciando o postfix |
# /etc/init.d/postfix start
|
Nota:
Só os serviços que precisam (need) do serviço são parados ou reiniciados.
Os outros serviços dependentes (aqueles que usam (use) o serviço mas não precisam
dele) não são tocados.
|
Se você quiser parar um serviço, mas não os serviços que dependem dele, você pode
usar o argumento pause:
Listagem de código 1.7: Parando o postfix mas mantendo os serviços dependentes rodando |
# /etc/init.d/postfix pause
|
Se você quiser ver que status um serviço tem (iniciado, parado, pausado, ...) você
pode usar o argumento status:
Listagem de código 1.8: Informações de status do postfix |
# /etc/init.d/postfix status
|
Se as informações de status disserem que o serviço está rodando, mas você sabe
que não, você pode voltar o status da informação para "parado" com o
argumento zap:
Listagem de código 1.9: Voltando as informações de status para o postfix |
# /etc/init.d/postfix zap
|
Para também pedir que dependências um serviço tem, você pode usar iuse ou
ineed. Com ineed você pode ver que serviços são realmente
necessários para o funcionamento correto do serviço. iuse por outro
lado mostra que serviços são usados pelo serviço, mas não são necessários
para o funcionamento correto.
Listagem de código 1.10: Pedindo uma lista de todos serviços necessários do qual o postfix depende |
# /etc/init.d/postfix ineed
|
De maneira parecida, você pode perguntar que serviços necessitam do serviço (needsme) ou podem
usá-lo (usesme):
Listagem de código 1.11: Pedindo uma lista de todos serviços que precisam do postfix |
# /etc/init.d/postfix needsme
|
Finalmente, você pode perguntar que dependências o serviço precisa que estão faltando:
Listagem de código 1.12: Pedindo uma lista de dependências que estão faltando para o postfix |
# /etc/init.d/postfix broken
|
4.b. Trabalhando com o rc-update
O que é o rc-update?
O sistema de inicialização do Gentoo usa uma árvore de dependências para decidir que serviço precisa ser
iniciado primeiro. Como isso é uma tarefa tediosa e não poderíamos esperar que nossos usuários tivessem
de fazê-lo manualmente, nós criamos ferramentas que facilitam a administração dos
runlevels e scripts de init.
Com o rc-update você pode adicionar ou remover scripts de init de um runlevel. A
ferramenta rc-update irá então pedir automaticamente para o script depscan.sh
reconstruir a árvore de dependências.
Adicionando e removendo serviços
Você já adicionou os scripts de init ao runlevel "default" durante a
instalação do Gentoo. Naquela hora você talvez não tinha idéia do que
"default" era, mas agora você deve ter. O script rc-update necessita de
um segundo argumento que define a ação: add (adicionar), del (remover) ou show (mostrar).
Para adicionar ou remover um script de init, apenas dê ao rc-update o argumento add (adicionar) ou
del (remover), seguido pelo script de init e runlevel. Por exemplo:
Listagem de código 2.1: Removendo o postfix do runlevel default |
# rc-update del postfix default
|
O comando rc-update show irá mostrar todos scripts de init disponíveis e
listar em que runlevels eles executam:
Listagem de código 2.2: Recebendo informações dos scripts de init |
# rc-update show
|
4.c. Configurando serviços
Por que a necessidade de configuração adicional?
Os scripts de init podem ser bem complexos. Portanto, não é realmente desejável fazer
com que os usuários editem o script de init diretamente, o que faria a tarefa mais
capaz de erros. No entanto, é importante poder configurar tal serviço. Por exemplo,
você pode querer dar mais opções ao serviço.
Um segundo motivo para ter a configuração fora do script de init é poder
atualizar os scripts de init sem medo de que mudanças na configuração
sejam desfeitas.
O diretório /etc/conf.d
O Gentoo fornece um jeito fácil de configurar um serviço: cada script de init
que pode ser configurado em um arquivo em /etc/conf.d. Por exemplo,
o script de init do apache2 (chamado de /etc/init.d/apache2) tem um
arquivo de configuração chamado de /etc/conf.d/apache2, que pode conter
as opções que você quer dar ao servidor do Apache 2 quando ele é iniciado:
Listagem de código 3.1: Variável definida em /etc/conf.d/apache2 |
APACHE2_OPTS="-D PHP4"
|
Um arquivo de configuração contém variáveis e somente variáveis (como o
/etc/make.conf), tornando fácil a configuração de serviços. Também
permite a nos dar mais informações sobre as variáveis (como comentários).
4.d. Escrevendo scripts de init
O que eu tenho que fazer?
Não, escrever um script de init não é normalmente necessário já que o Gentoo fornece
scripts de init prontos para todos os serviços fornecidos. No entanto, talvez você queira
instalar um serviço sem usar o Portage, casto tal em que você provavelmente vai ter que
criar um script de init.
Não use o script de init fornecido pelo serviço se ele não for explicitamente
escrito para o Gentoo: os scripts de init do Gentoo não são compatíveis com os
scripts de init usados por outras distribuições!
Arranjo
O arranjo básico de um script de init é mostrado abaixo.
Listagem de código 4.1: Arranjo básico de um script de init |
#!/sbin/runscript
depend() {
}
start() {
}
stop() {
}
restart() {
}
|
Qualquer script de init precisa de uma função start() definida. Todas
outras seções são opcionais.
Dependências
Existem duas dependências que você pode definir: use e need. Como nós
já mencionamos, a dependência need é mais rígida que a dependência
use. Após o tipo de dependência você digitar o serviço de que
você depende, ou a dependência virtual.
Uma dependência virtual é uma dependência que um serviço fornece, mas não é
somente fornecido por aquele serviço. Seu script de init pode depender de um logger
de sistema, mas existem muitos loggers de sistema disponíveis (metalogd, syslog-ng,
sysklogd, ...). Como você não pode precisar (need) de cada um deles (nenhum sistema
normal tem todos esses loggers de sistemas instalados e rodando) nós nos certificamos que
todos esses serviços fornecem (provide) uma dependência virtual.
Vamos ver as informações de dependência do serviço do postfix.
Listagem de código 4.2: Informações de dependência do postfix |
depend() {
need net
use logger dns
provide mta
}
|
Como você pode ver, o serviço do postfix:
-
precisa duma dependência (virtual) net (que é fornecida, por exemplo,
por /etc/init.d/net.eth0)
-
usa uma dependência (virtual) logger (que é fornecida, por exemplo,
por /etc/init.d/syslog-ng)
-
usa uma dependência (virtual) dns (que é fornecida, por exemplo,
por /etc/init.d/named)
-
fornece a dependência (virtual) mta (que é comum para todos servidores de
e-mail)
Controlando a ordem
Em alguns casos você pode não precisar de um serviço, mas que querer que seu serviço seja
iniciado antes (before) (ou depois, after) de outro serviço se ele estiver
disponível no sistema (note a condição - não é mais uma dependência)
e rodar no mesmo runlevel (note a condição - só serviços do
mesmo runlevel estão envolvidos). Você pode fornecer esta informação usando os
ajustes before e after.
Como um exemplo nós vemos as configurações do serviço portmap:
Listagem de código 4.3: A função depend() no serviço portmap |
depend() {
need net
before inetd
before xinetd
}
|
Você também pode usar "*" para englobar todos serviços do mesmo runlevel,
embora isso não seja recomendável.
Listagem de código 4.4: Rodando um script de init como o primeiro script do runlevel |
depend() {
before *
}
|
Funções padrão
Próximo da função do depend(),você também precisa definir a função
start(). Esta contém todos comandos necessários para
iniciar seu serviço. É recomendável usar as funções ebegin e
eend para informar o usuário sobre o que está acontecendo:
Listagem de código 4.5: Exemplo de função start() |
start() {
ebegin "Iniciando meu_serviço"
start-stop-daemon --start --quiet --exec /caminho/para/meu_serviço
eend $?
}
|
Se você precisa de mais exemplos da função start(), por favor leia o código
fonte de scritps de init disponíveis no diretório /etc/init.d.
Para o start-stop-daemon, existe uma excelente página de man disponível se você
precisar de mais informações:
Listagem de código 4.6: Lendo a página de man para o start-stop-daemon |
# man start-stop-daemon
|
Outras funções que você pode definir são: stop() e restart(). Você
não é obrigado a definir essas funções! Nosso sistema de init é inteligente o suficiente para
preencher essas funções sozinho se você usar o start-stop-daemon.
A sintaxe do script de init do Gentoo é baseada em Bourne Again Shell (bash), então você é
livre para usar construções compatíveis com bash dentro de seu script de init.
Adicionando opções personalizadas
Se você quiser que seu script de init suporte mais opções que as que você já
encontrou, você deve adicionar a opção à variável opts variable, e
criar uma função com o mesmo nome da opção. Por exemplo, para suportar uma opção
chamada restartdelay:
Listagem de código 4.7: Suportando a opção restartdelay |
opts="${opts} restartdelay"
restartdelay() {
stop
sleep 3
start
}
|
Variáveis de configuração de serviço
Você não precisa fazer nada para suportar um arquivo de configuração em
/etc/conf.d: se seu script de init é executado, os seguintes arquivos
são automaticamente lidos (isto é, as variáveis estão disponíveis para uso):
- /etc/conf.d/<seu script de init>
- /etc/conf.d/basic
- /etc/rc.conf
Também, se seu script de init fornece uma dependência virtual (como net),
o arquivo associado com aquela dependência (como /etc/conf.d/net)
será lido também.
4.e. Mudando o comportamento do runlevel
Quem pode tirar proveito disso?
Muitos usuários de laptop conhecem a situação: em casa precisam iniciar o net.eth0,
enquanto você não quer iniciar o net.eth0 quando você está fora (já
que não há rede disponível). Como o Gentoo você pode mudar o comportamento do runlevel de
acordo com sua vontade.
Por exemplo você pode criar um segundo runlevel "default" que você pode iniciar que
tem scripts de init associados. Você pode então selecionar na hora da inicialização
que runlevel default você quer usar.
Usando o softlevel
Antes de tudo, criamos o diretório runlevel para o segundo runlevel "default".
Como um exemplo, nós criamos o runlevel offline:
Listagem de código 5.1: Criando um diretório de runlevel |
# mkdir /etc/runlevels/offline
|
Adicione os scripts de init aos runlevels recentemente criados. Por exemplo, se
você quer ter uma cópia exata de seu runlevel default atual sem
o net.eth0:
Listagem de código 5.2: Adicionando os scripts de init necessários |
# cd /etc/runlevels/default
# for service in *; do rc-update add $service offline; done
# rc-update del net.eth0 offline
# rc-update show offline
acpid | offline
domainname | offline
local | offline
net.eth0 |
|
Agora edite sua configuração de gerenciador de inicialização e adicione uma entrada para o
runlevel offline. Por exemplo, no /boot/grub/grub.conf:
Listagem de código 5.3: Adicionando uma entrada para o runlevel offline |
title Gentoo Linux uso offline
root (hd0,0)
kernel (hd0,0)/kernel-2.4.25 root=/dev/hda3 softlevel=offline
|
Pronto, está tudo configurado. Se você iniciar seu sistema e selecionar a nova entrada
na inicialização, o runlevel offline será usado no lugar do
default.
Usando o bootlevel
Usar o bootlevel é completamente análogo ao softlevel. A única
diferença aqui é que você define um segundo runlevel de "boot" ao invés de um segundo
runlevel "default".
5. Variáveis de ambiente
5.a. Variáveis de ambiente?
O que são
Uma variável de ambiente é um objeto nomeado que contém informações usadas por
um ou mais aplicativos. Muitos usuários (especialmente os novos no Linux) acham
isso um pouco estranho e inútil. Mas isso é errado: as variáveis de ambiente
permitem modificar a configuração de um ou mais aplicativos facilmente.
Exemplos importantes
A tabela a seguir lista diversas variáveis usadas por um sistema Linux e
descreve seu uso. Valores de exemplo são apresentados após a tabela.
| Variável |
Descrição |
| PATH |
Esta variável contém uma lista de diretórios separados por dois-pontos nos
quais o seu sistema procurará arquivos executáveis. Se você entrar com o
nome de um executável (como por exemplo ls, rc-update ou
emerge), mas esse executável não estiver localizado num diretório
listado, o seu sistema não o executará (a menos que você entre o caminho
completo no comando, como /bin/ls).
|
| ROOTPATH |
Esta variável tem a mesma função de PATH, porém só lista os
diretórios que devem ser verificados quando o superusuário digitar um
comando.
|
| LDPATH |
Esta variável contém uma lista de diretórios separados por dois-pontos nos
quais o linkador dinâmico procura bibliotecas.
|
| MANPATH |
Esta variável contém uma lista de diretórios separados por dois-pontos nos
quais o comando man deve procurar as páginas de manual.
|
| INFODIR |
Esta variável contém uma lista de diretórios separados por dois-pontos nos
quais o comando info procura as páginas de info.
|
| PAGER |
Esta variável contém o caminho para o programa usado para listar os conteúdos
dos arquivos (como less ou more, por exemplo).
|
| EDITOR |
Esta variável contém o caminho para o programa usado para modificar o
conteúdo de arquivos (como nano ou vi).
|
| KDEDIRS |
Esta variável contém uma lista de diretórios separados por dois-pontos que
contém material específico do KDE.
|
| CLASSPATH |
Esta variável contém uma lista de diretórios separados por dois-pontos que
contêm as classes de Java.
|
| CONFIG_PROTECT |
Esta variável contém uma lista delimitada por espaçosde diretórios
que devem ser protegidos pelo Portage durante atualizações.
|
| CONFIG_PROTECT_MASK |
Esta variável contém uma lista de diretórios separados por espaços
que devem ser protegidos pelo Portage durante as atualizações.
|
Abaixo você encontra um exemplo de definição de todas essas variáveis:
Listagem de código 1.1: Exemplos de definições |
PATH="/bin:/usr/bin:/usr/local/bin:/opt/bin:/usr/games/bin"
ROOTPATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin"
LDPATH="/lib:/usr/lib:/usr/local/lib:/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"
MANPATH="/usr/share/man:/usr/local/share/man"
INFODIR="/usr/share/info:/usr/local/share/info"
PAGER="/usr/bin/less"
EDITOR="/usr/bin/vim"
KDEDIRS="/usr"
CLASSPATH="/opt/blackdown-jre-1.4.1/lib/rt.jar:."
CONFIG_PROTECT="/usr/X11R6/lib/X11/xkb /opt/tomcat/conf \
/usr/kde/3.1/share/config /usr/share/texmf/tex/generic/config/ \
/usr/share/texmf/tex/platex/config/ /usr/share/config"
CONFIG_PROTECT_MASK="/etc/gconf
|
5.b. Definindo variáveis globalmente
O diretório /etc/env.d
Para centralizar as definições dessas variáveis, o Gentoo introduziu o diretório
/etc/env.d. Dentro deste diretório você encontrará diversos
arquivos, como por exemplo 00basic, 05gcc, etc... que
contêm as variáveis necessárias para o aplicativo mencionado no nome.
Por exemplo, quando você instalou o gcc, um arquivo chamado
05gcc foi criado pelo ebuild, contendo as definições das seguintes
variáveis:
Listagem de código 2.1: /etc/env.d/05gcc |
PATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2"
ROOTPATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2"
MANPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/man"
INFOPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/info"
CC="gcc"
CXX="g++"
LDPATH="/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"
|
Outras distribuições dizem para você alterar ou adicionar essas variáveis de
ambiente em /etc/profile ou outros locais. O Gentoo, por outro
lado, torna fácil para você (e para o Portage) manter e gerenciar as variáveis
de ambiente sem ter que prestar atenção aos inúmeros arquivos que podem
contê-las.
Por exemplo, quando o gcc é atualizado, o arquivo
/etc/env.d/05gcc também é atualizado sem precisar de interação com
o usuário.
Isto beneficia não só o Portage, mas você também, como usuário. Eventualmente
pode ser pedido a você que determine uma certa variável de ambiente de sistema.
Como exemplo, vejamos a variável http_proxy. Em vez de mexer em
/etc/profile, você agora pode simplesmente criar um arquivo
(/etc/env.d/99local) e entrar as suas definições nele:
Listagem de código 2.2: /etc/env.d/99local |
http_proxy="proxy.server.com:8080"
|
Usar o mesmo arquivo para todas as suas variáveis é uma forma de ter uma rápida
visão das variáveis que você definiu pessoalmente.
O script env-update
Vários arquivos em /etc/env.d definem a variável PATH. Isto
não está errado: quando você executa env-update, as várias definições são
adicionadas antes de atualizar as variáveis de ambiente, desta forma tornando
fácil para os pacotes (ou usuários) adicionarem suas próprias definições de
variáveis de ambiente sem interferir com os valores já existentes.
O script env-update acrescentará os valores em ordem alfabética dos
arquivos em /etc/env.d. Os nomes de arquivos devem começar com dois
dígitos decimais.
Listagem de código 2.3: Ordem de atualização usada pelo env-update |
00basic 99kde-env 99local
+-------------+----------------+-------------+
PATH="/bin:/usr/bin:/usr/kde/3.2/bin:/usr/local/bin"
|
A concatenação de variáveis nem sempre acontece, só com as seguintes variáveis:
KDEDIRS, PATH, CLASSPATH, LDPATH, MANPATH,
INFODIR, INFOPATH, ROOTPATH, CONFIG_PROTECT,
CONFIG_PROTECT_MASK, PRELINK_PATH e PRELINK_PATH_MASK. Para
todas outras variáveis, o último valor definido (em ordem alfabética dos
arquivos em /etc/env.d) é usado.
Quando você executa env-update, o script cria todas as variáveis de
ambiente e as coloca em /etc/profile.env (que é usado pelo
/etc/profile). Ele também extrai as informações da variável
LDPATH e as usa para criar o /etc/ld.so.conf. Em seguida,
ele roda o ldconfig para recriar o arquivo /etc/ld.so.cache
usado pelo linkador dinâmico.
Se você quiser ter uma idéia do efeito do env-update, imediatamente após
rodá-lo execute o seguinte comando para atualizar seu ambiente. Os usuários que
instalaram eles próprios o Gentoo provavelmente se lembrarão disso das
instruções de instalação:
Listagem de código 2.4: Atualizando o ambiente |
# env-update && source /etc/profile
|
Nota:
O comando acima só atualiza as variáveis em seu terminal atual, novos
consoles e seus derivados. Portanto, se você estiver trabalhando no X11, você
precisará ou digitar source /etc/profile em cada novo terminal que você
abrir ou reiniciar o X para que todos novos terminais herdem as novas variáveis.
Se você usar um gerenciador de log-in, torne-se administrador (root) e digite
/etc/init.d/xdm restart. Se não, você precisará fazer log-out e log-in
para que o X abra novos terminais com os novos valores de variáveis.
|
5.c. Definindo variáveis localmente
Especificas do usuário
Nem sempre você deve definir uma variável de ambiente globalmente. Por exemplo,
você pode querer adicionar o diretório /home/usuario/bin e o
diretório de trabalho atual (o diretório em que você está) à variável
PATH, sem que todos os outros usuários do sistema a tenham em seus
PATHs. Se você quiser definir uma variável de ambiente localmente, deve
usar o ~/.bashrc ou o ~/.bash_profile:
Listagem de código 3.1: Estendendo o PATH para uso local no ~/.bashrc |
PATH="${PATH}:/home/usuario/bin"
|
Quando você re-logar, a sua variável PATH será atualizada.
Específico para a sessão
Às vezes definições ainda mais estritas são necessárias. Você pode querer usar
binários de um diretório temporário que você criou sem usar o caminho até os
binários nem editar o ~/.bashrc para o pouco tempo que você
precisará dele.
Neste caso, você pode simplesmente definir a variável PATH na sua sessão
atual usando o comando export. Enquanto você não se deslogar, a variável
PATH usará as definições temporárias.
Listagem de código 3.2: Definindo uma variável de ambiente específica a uma sessão |
# export PATH="${PATH}:/home/meu_usuário/tmp/usr/bin"
|
C. Trabalhando com o Portage
1. Arquivos e diretórios
5.a. Arquivos do Portage
Diretivas de configuração
O Portage vem com um arquivo de configuração padrão gravado em
/etc/make.globals. Quando você olhar, perceberá que toda
configuração do Portage é feita através de variáveis. Quais variáveis o Portage
escuta e para que servem é descrito mais adiante.
Já que muitas diretivas de configuração diferem entre arquiteturas, o Portage
também tem o arquivos de configuração padrão como parte de seu profile (perfil).
Seu profile é apontado pelo link simbólico /etc/make.profile; As
configurações do Portage estão gravadas nos arquivos make.defaults
de seu profile e todos outros profiles. Nós iremos explicar mais sobre os
profiles e o diretório /etc/make.profile mais adiante.
Se você estiver planejando mudar uma variável de configuração, não altere
/etc/make.globals ou make.defaults. Ao invés disso,
use o arquivo /etc/make.conf que tem precedência sobre os arquivos
anteriores. Você também irá encontrar um /etc/make.conf.example.
Como o nome indica, é meramente um arquivo de exemplo - que o Portage não lê.
Você também pode definir uma variável de configuração do Portage como uma
variável de ambiente, mas não recomendamos fazer isso.
Informações específicas de profiles (perfis)
Nós já encontramos o diretório /etc/make.profile Bem, esse não é
exatamente um diretório, mas um link simbólico para um profile, por padrão um
dentro de /usr/portage/profiles, embora você possa criar seu
próprio profile em outro lugar e apontar para ele. O profile para o qual esse
link simbólico aponta é o profile a que seu sistema adere.
Um profile contém informações de específicas de cada arquitetura para o Portage,
como uma lista de pacotes que pertencem ao sistema correspondendo àquele
profile, uma lista de pacotes que não funcionam (ou estão mascarados) para
aquele profile, etc...
Configurações específicas de usuário
Quando você precisar sobre-escrever o comportamento do Portage em relação à
instalação de software, você deverá editar arquivos dentro de
/etc/portage. É muito recomendável que você use os arquivos
dentro de /etc/portage e muito desencorajado a sobre-escrita
através de variáveis de ambiente!
Dentro de /etc/portage você pode criar os seguintes arquivos:
-
package.mask que lista os pacotes que você nunca quer que o
Portage instale
-
package.unmask que lista os pacotes que você quer poder
instalar, embora os desenvolvedores do Gentoo desencorajem que você
os instale
-
package.keywords que lista que pacotes você quer poder
instalar, embora o pacote (ainda) não tenha sido tido como apropriado
para seu sistema ou arquitetura
-
package.use que lista as opções de USE que você quer usar para
certos pacotes sem que o sistema inteiro use essas opções de USE
Mais informações sobre o diretório /etc/portage e uma lista
completa de arquivos possíveis que você pode criar podem ser encontrados na
página de man do Portage:
Listagem de código 1.1: Lendo a página de man do Portage |
$ man portage
|
Mudando locais de arquivos & diretórios do Portage
Os arquivos de configuração mencionados anteriormente não podem ser guardados em
outros locais - o Portage sempre irá buscar os arquivos de configuração nesses
locais exatos. Todavia, o Portage usa outros locais para vários outros
propósitos: diretório de construção, armazenamento de código-fonte, local da
árvore do Portage, ...
Todos os propósitos tem locais padrões bem conhecidos, mas que podem ser
alterados para seu próprio gosto através do /etc/make.conf. O resto
deste capítulo explica que locais de propósito especial o Portage usa e como
alterar sua colocação em seu sistema de arquivos.
Este documento não é para ser tomado como referência, no entanto. Se você
precisa de cobertura 100% completa, por favor consulte as páginas de man do
Portage e do make.conf:
Listagem de código 1.2: Lendo as páginas de man do Portage e do make.conf |
$ man portage
$ man make.conf
|
1.b. Gravando arquivos
A árvore do Portage
O local padrão da árvore do Portage é /usr/portage. Isto é definido
pela variável PORTDIR. Quando você grava a árvore do Portage em outro lugar (ao
alterar esta variável), não se esqueça de mudar o link simbólico
/etc/make.profile de acordo.
Se você alterar a variável PORTDIR, você deve alterar as seguintes variáveis já
que elas não irão notar a mudança do PORTDIR. Isto é devido a como o Portage
lida com as variáveis: PKGDIR, DISTDIR, RPMDIR.
Binários pré-construídos
Embora o Portage não use pacotes binários pré-construídos por padrão, ele tem
suporte extensivo para eles. Quando você pede para o Portage trabalhar com
pacotes pré-construídos, ele irá procurá-los em
/usr/portage/packages. Este local é definido pela variável PKGDIR.
Código-fonte
O código-fonte das aplicações é gravado em /usr/portage/distfiles
por padrão. Este local é definido pela variável DISTDIR.
Arquivos RPM
Embora o Portage não possa usar arquivos RPM, é possível gerá-los usando o
comando ebuild (veja A aplicação
ebuild). O local padrão onde o Portage armazena arquivos RMP é
/usr/portage/rpm e é definido pela variável RPMDIR.
Banco de dados do Portage
O Portage guarda o estado de seu sistema (que pacotes são instalados, que
arquivos pertencem a cada pacote, ...) em /var/db/pkg. Não
altere estes arquivos manualmente! Pode causar problemas no conhecido do Portage
sobre seu sistema.
Cachê do Portage
O cachê do Portage (com horas de modificação, virtuals, informações da árvore de
dependência, ...) é guardado em /var/cache/edb. Este local é
realmente um cachê: você pode limpá-lo senão estiver rodando nenhuma aplicação
relacionada ao Portage no momento.
1.c. Construindo software
Arquivos temporários do Portage
Os arquivos temporários do Portage são gravados em /var/tmp por
padrão. Isto é definido pela variável PORTAGE_TMPDIR.
Se você alterar a variável PORTAGE_TMPDIR, você deve alterar as seguintes
variáveis já que elas não irão perceber a mudança da PORTAGE_TMPDIR. Isto é
devido ao modo com que o Portage lida com variáveis: BUILD_PREFIX.
Diretório de construção
O Portage cria diretórios específicos para cada pacote que eles instalada dentro
de /var/tmp/portage. Este local é definido pela variável
BUILD_PREFIX.
Local de sistema de arquivos em uso
Por padrão o Portage instala todos arquivos no sistema de arquivos atual
(/), mas você pode mudar este ajuste usando a variável de ambiente
ROOT. Isto é útil quando você quer criar imagens de construção.
1.d. Funções de registro
Registro de ebuilds
O Portage pode criar arquivos de registro por ebuild, mas só quando a variável
PORT_LOGDIR está configurada para algum lugar onde o Portage pode escrever (o
usuário portage). Por padrão a variável está em branco.
2. Configuração através de variáveis
2.a. Configuração do Portage
Como notamos anteriormente, o Portage é configurado através de muitas variáveis que
você deve definir em /etc/make.conf. Por favor verifique o manual do
make.conf para informações mais completas:
Listagem de código 1.1: Lendo a página de man do make.conf |
$ man make.conf
|
2.b. Opções específicas de construção
Opções de configuração e compilação
Quando o Portage constrói aplicações, ele passa os conteúdos das seguintes
variáveis aos scripts de compilador e configuração:
-
CFLAGS & CXXFLAGS definem as opções de compilador para a compilação de
C e C++.
-
CHOST define informações da máquina de construção para o script de configuração
da aplicações
-
MAKEOPTS é passado ao comando make e normalmente é usado para definir
a quantidade de paralelismo usado durante a compilação. Mais informações
sobre opções de make podem ser encontradas na página de man do make.
A variável de USE também é usada durante configuração e compilação, mas já foi
explicada com grande detalhe em capítulos anteriores.
Opções de instalação
Quando o Portage instalou uma nova versão de um certo título de software, ele irá
remover os arquivos obsoletos de uma versão mais antiga de seu sistema. O Portage dá
ao usuário 5 segundos de espera antes de desinstalar a versão antiga. Esses 5 segundos
são definidos pela variável CLEAN_DELAY.
2.c. Proteção de arquivos de configuração
Locais protegidos do Portage
O Portage sobre-escreve arquivos fornecidos por novas versões de um título se os
arquivos não estão gravados em um local protegido. Estes locais protegidos
são definidos pela variável CONFIG_PROTECT e são geralmente locais de arquivos
de configuração. A lista de diretórios é delimitada por espaços.
Um arquivo que seria escrito em um local protegido é renomeado e o
usuário é avisado sobre uma nova versão do arquivo (presumivelmente)
de configuração.
Você pode saber o ajuste atual do CONFIG_PROTECT usando a saída do comando emerge
--info:
Listagem de código 3.1: Obtendo o ajuste de CONFIG_PROTECT |
$ emerge --info | grep 'CONFIG_PROTECT='
|
Mais informações sobre a proteção de arquivos de configuração do Portage está disponível
através do emerge:
Listagem de código 3.2: Mais informações sobre a proteção de arquivos de configuração do Portage |
$ emerge --help config
|
Excluindo diretórios
Para 'desproteger' certos sub-diretórios de locais protegidos você pode usar
a variável CONFIG_PROTECT_MASK.
2.d. Opções para baixar arquivos
Locais dos servidores
Quando a informação ou dado pedido não está disponível em seu sistema, o Portage
irá baixar da Internet. As localizações de servidores para os vários
canais de informações e dados são definidos pelas seguintes variáveis:
-
GENTOO_MIRRORS define uma lista de locais de servidores que
contêm código fonte (distfiles)
-
PORTAGE_BINHOST define um local de um servidor particular que contém
pacotes pre-construídos para seu sistema
Um terceiro ajuste envolve a localização do servidor de rsync que você pode usar
quando atualizar sua árvore do Portage:
-
SYNC define um servidor particular que o Portage usa para sincronizar
a árvore do Portage
As variáveis GENTOO_MIRRORS e SYNC podem ser configuradas automaticamente através
da aplicação mirrorselect. Você precisa fazer emerge mirrorselect primeiro
antes de poder usá-la. Para mais informações, veja a informação online
do mirrorselect:
Listagem de código 4.1: Mais informações sobre o mirrorselect |
# mirrorselect --help
|
Se seu ambiente necessita que você use um servidor de proxy, você pode usar
as variáveis HTTP_PROXY, FTP_PROXY e RSYNC_PROXY para declarar um servidor de proxy.
Comandos para baixar
Quando o Portage precisa baixar código-fonte, ele usa o comando wget por padrão. Você
pode usar isso através da variável FETCHCOMMAND.
O Portage pode continuar a baixar arquivos de código-fonte parcilamente baixado. Ele usa o wget
por padrão, mas isso pode ser alterado através da variável RESUMECOMMAND.
Certifique-se de que seu FETCHCOMMAND e RESUMECOMMAND gravem o código-fonte no
local correto. Dentro das variáveis você deve usar \${URI} e \${DISTDIR} para
apontar o local de código-fonte e de distfiles respectivamente.
Você também pode definir ajustes específicos de protocolo com FETCHCOMMAND_HTTP,
FETCHCOMMAND_FTP, RESUMECOMMAND_HTTP, RESUMECOMMAND_FTP, e assim em diante.
Ajustes de rsync
Você não pode alterar o comando de rsync usado pelo Portage para atualizar a ávore do Portage,
mas você pode ajustar algumas variáveis relacionadas ao comando rsync:
-
RSYNC_EXCLUDEFROM aponta para uma lista de arquivos com pacotes e/ou categorias que
o rsync deve ignorar durante o processo de atualização
-
RSYNC_RETRIES define quantas vezes o rsync deve tentar conectar ao
servidor apontado pela variável SYNC antes de desistir. O padrão da variável
é 3.
-
RSYNC_TIMEOUT define quantos segundos uma conexão de rsync pode ficar ociosa
antes de o rsync ver a conexão como "timed-out". Esta variável tem como padrão 180,
mas usuários de conexão discada provavelmente devem mudar isso para 300 ou mais.
2.e. Configuração do Gentoo
Seleção de ramos
Você pode mudar seu ramo padrão com a variável ACCEPT_KEYWORDS. Como padrão
ela aponta para o ramo estável de seu arquitetura. Mais informações sobre os ramos
do Gentoo pode ser encontrada no próximo capítulo.
Funções do Portage
Você pode ativar certas funções do Portage através da variável FEATURES. As
funções do Portage foram discutidas nos capítulos anteriores, como em Funções do Portage.
2.f. Comportamento do Portage
Gerenciamento de recursos
Com a variável PORTAGE_NICENESS você pode augmentar ou reduzir o valor de nice
com que o Portage roda. O valor PORTAGE_NICENESS é adicionado ao valor
de nice atual.
Para mais informações sobre valores de nice, veja as páginas de man do nice:
Listagem de código 6.1: Mais informações sobre o nice |
$ man nice
|
Comportamento da saída
A variável NOCOLOR, que tem como padrão "false", define se o Portage deve desligar
o uso de saídas coloridas.
3. Misturando ramos de software
3.a. Usando um ramo
O ramo estável
A variável ACCEPT_KEYWORDS define que ramo de software você usa em seu sistema.
Por padrão ela é o ramo de software estável para sua arquitetura, por exemplo,
x86.
Nós recomendados que você só uso o ramo estável. No entanto, se você não se
importa muito com estabilidade e quer ajudar o Gentoo enviando relatos para o
http://bugs.gentoo.org, leia mais.
O ramo de testes
Se você quiser usar o software mais recente disponível, você pode considerar
usar o ramo de testes. Para que o Portage use o ramo de testes, adicione um ~ na
frente de sua arquitetura.
O ramo de testes é exatamente o que diz ser - de testes Se um pacote
estiver em testes, significa que os desenvolvedores acham que funciona, mas não
foi testado completamente. Você pode muito bem ser o primeiro a descobrir um bug
no pacote, caso em que você pode fazer um relato de bug para que os desenvolvedores
saibam sobre ele.
Esteja alerta, no entanto, de que você pode perceber problemas de estabilidade,
manuseio incorreto de pacotes (como dependências erradas/faltando), atualizações
muito freqüentes (resultando em muita construção) ou pacotes quebrados. Se você
não sabe como o Gentoo funciona e como resolver problemas, nós recomendamos que
você fique com o ramo estável e testado.
Por exemplo, para selecionar o ramo de testes da arquitetura x86, edite o
/etc/make.conf e coloque:
Listagem de código 1.1: Configurando a variável ACCEPT_KEYWORDS |
ACCEPT_KEYWORDS="~x86"
|
Se você atualizar seu sistema agora, você verá que muitos pacotes serão
atualizados. Esteja avisado, no entanto: quando você tiver atualizado seu
sistema para usar o ramo de testes, normalmente não há jeito fácil de voltar ao
ramo estável oficial (exceto com o uso de backups, claro).
3.b. Misturando ramo estável com de testes
O arquivo package.keywords
Você pode pedir ao Portage para permitir o ramo de testes para um pacote em
especial, mas usar o ramo estável para o resto do sistema. Para fazer isso,
adicione a categoria do pacote e nome que você quer usar ao ramo de testes no
arquivo /etc/portage/package.keywords. Por exemplo, para usar o
ramo de testes para o gnumeric:
Listagem de código 2.1: configuração do /etc/portage/package.keywords para gnumerica, linha completa |
app-office/gnumeric ~x86
|
Versões de teste particulares
Se você quiser usar uma versão específica de um software do ramo de testes, mas
você não quiser que o Portage use o ramo de testes para versões subseqüentes,
você deve adicionar a versão no arquivo package.keywords. Neste
caso você deve usar o operador =. Você também pode colocar uma amplitude
de versões usando os operadores <=, <, > ou >=.
De qualquer forma, se você colocar informações de versão, você deve usar
um operador. Se você deixar informações de versão de fora, você não pode
usar um operador.
No exemplo seguinte nós pedimos que o Portage aceite o gnumeric-1.2.13:
Listagem de código 2.2: Ativando uma versão de testes em particular do gnumeric |
=app-office/gnumeric-1.2.13 ~x86
|
3.c. Usando pacotes mascarados
O arquivo package.unmask
Os desenvolvedores do Gentoo não suportam o uso destes arquivos. Por
favor tome o cuidado necessário na hora de usá-los. Pedidos de suporte
relacionados a package.unmask e/ou package.mask não serão
respondidos. Você foi avisado.
Quando um pacote foi mascarado pelos desenvolvedores do Gentoo e você ainda quer
usá-lo, mesmo depois de ler o motivo mencionado no arquivo
package.mask (localizado em /usr/portage/profiles por
padrão), adicione a exata mesma linha em
/etc/portage/package.unmask.
Por exemplo, se o =net-mail/hotwayd-0.8 estiver mascarado, você pode
tirar a máscara adicionando a mesma exata linha no arquivo
package.unmask:
Listagem de código 3.1: /etc/portage/package.unmask |
=net-mail/hotwayd-0.8
|
O arquivo package.mask
Quando você não quer que o Portage leve um certo pacote ou versão específica em
consideração, você pode mascará-la você mesmo colocando uma linha apropriada em
/etc/portage/package.mask.
Por exemplo se você não quer que o Portage instale novas fontes de kernel acima da
gentoo-sources-2.6.8.1, você adiciona a seguinte linha ao
package.mask:
Listagem de código 3.2: exemplo de /etc/portage/package.mask |
>sys-kernel/gentoo-sources-2.6.8.1
|
4. Ferramentas do Portage adicionais
4.a. etc-update
O etc-update é uma ferramenta que ajuda na instalação de arquivos
._cfg0000_<nome>. Ele fornece um ambiente de instalação
interativo e também pode instalar automaticamente mudanças triviais. Arquivos
._cfg0000_<nome> são gerados pelo Portage quando ele quer
sobre-escrever um arquivo em um diretório protegido pela variável
CONFIG_PROTECT.
Rodar o etc-update é bem simples:
Listagem de código 1.1: Rodando o etc-update |
# etc-update
|
Depois de instalar as mudanças simples, você verá uma lista com arquivos
protegidos que tem uma atualização pendente. No final você verá as opções
possíveis:
Listagem de código 1.2: opções de etc-update |
Please select a file to edit by entering the corresponding number.
(-1 to exit) (-3 to auto merge all remaining files)
(-5 to auto-merge AND not use 'mv -i'):
|
Se você digitar -1, o etc-update irá sair sem fazer mais
alterações. Se você apertar -3 ou -5, todos arquivos de
configuração listados serão sobre-escritos com novas versões. É, portanto, muito
importante selecionar primeiro os arquivos de configuração que não devem ser
atualizados automaticamente. Isto é feito digitando o número listado à esquerda
do arquivo de configuração.
Como um exemplo, nós selecionamos o arquivo de configuração
/etc/pear.conf:
Listagem de código 1.3: Atualizando um arquivo de configuração específico |
Beginning of differences between /etc/pear.conf and /etc/._cfg0000_pear.conf
End of differences between /etc/pear.conf and /etc/._cfg0000_pear.conf
1) Replace original with update
2) Delete update, keeping original as is
3) Interactively merge original with update
4) Show differences again
|
Você pode ver agora as diferenças entre os dois arquivos. Se você acredita que o
arquivo de configuração atualizado pode ser usado sem problemas, digite
1. Se você acredita que o arquivo de configuração atualizado não é
necessário, ou não dá nenhuma informação nova ou útil, digite 2. Se você
quiser atualizar o arquivo de configuração atual interativamente, digite
3.
Não existe motivo para elaborar o processo de atualização interativo aqui. Para
sermos mais completos, nós listaremos os comando possíveis que você pode usar
quando você está juntando dois arquivos interativamente. Você verá duas linhas
(a original e a proposta) e um prompt no qual você pode digitar um dos seguintes
comandos:
Listagem de código 1.4: Comandos disponíveis para atualização interativa |
ed: Editar e usar as duas versões, cada uma decorada com um cabeçalho.
eb: Editar e usar as duas versões.
el: Editar e usar a versão da esquerda.
er: Editar e usar a versão da direita.
e: Editar uma versão nova.
l: Usar a versão da esquerda.
r: Usar a versão da direita.
s: Incluir silenciosamente linhas comuns.
v: Incluir linhas comuns de maneira verbal.
q: Sair.
|
Quando você terminar de atualizar os arquivos de configuração importantes, você
pode atualizar automaticamente todos outros arquivos de configuração. O
etc-update irá sair se não encontrar mais arquivos de configuração que
podem ser atualizados.
4.b. dispatch-conf
Ao usar o dispatch-conf você pode juntar atualizações a seus arquivos de
configuração, monitorando todas mudanças. O dispatch-conf grava as
diferenças entre os arquivos de configuração como patches ou usando o sistema de
revisão RCS.
Como com o etc-update, você pode pedir para manter o arquivo de
configuração como está, usar o novo arquivo de configuração, editar o atual ou
juntar as mudanças interativamente. No entanto, o dispatch-conf também
tem funções adicionais úteis:
-
Juntar atualizações de arquivos de configuração automaticamente para
atualizações somente de comentários
-
Juntar atualizações de arquivos de configuração automaticamente para
atualizações que só variam em número espaços usados
Certifique-se de editar o /etc/dispatch-conf.conf primeiro e crie o
diretório referenciado pela variável archive-dir.
Para mais informações, veja a página de manual do dispatch-conf:
Listagem de código 2.1: Lendo a página de manual do dispatch-conf |
$ man dispatch-conf
|
4.c. quickpkg
Com o quickpkg você pode criar arquivos dos pacotes que já estão
instalados em seu sistema. Esses arquivos podem ser usados como pacotes
pré-construídos. Rodar quickpkg é simples: só adicione os nomes dos
pacotes que você quer arquivar.
Por exemplo, para arquivar curl, arts e procps:
Listagem de código 3.1: Exemplo de uso do quickpkg |
# quickpkg curl arts procps
|
Os pacotes pré-construídos serão gravados em $PKGDIR/All
(/usr/portage/packages/All por padrão). Links simbólicos que
apontam para esses pacotes são colocados em
$PKGDIR/<categoria>.
5. Divergindo da árvore oficial
5.a. Usando um sub-conjunto da árvore do Portage
Excluindo pacotes/categorias
Você pode fazer atualizações seletivas de certas categorias/pacotes e ignorar as
outras categorias/pacotes. Nós podemos fazer isso ao dizer para o rsync
excluir categorias/pacotes durante o passo emerge --sync.
Você precisa definir o nome do arquivo que contém os padrões de exclusão na
variável RSYNC_EXCLUDEFROM em seu /etc/make.conf.
Listagem de código 1.1: Definindo o arquivo de exclusão em /etc/make.conf |
RSYNC_EXCLUDEFROM=/etc/portage/rsync_excludes
|
Listagem de código 1.2: Excluindo todos tipos de games em /etc/portage/rsync_excludes |
games-*/*
|
Note, no entanto, que isso pode levar a problemas de dependência, já que novos
pacotes permitidos podem dependender de novos pacotes que foram excluídos na
atualização.
5.b. Adicionando ebuilds não-oficiais
Definindo um diretório de overlay para o Portage
Você pode pedir para o Portage usar ebuilds que não estão disponíveis
oficialmente através da árvore do Portage. Crie um novo diretório (por exemplo
/usr/local/portage) em que você grava ebuilds de terceiros. Use a
mesma estrutura de diretórios da árvore oficial do Portage!
Defina PORTDIR_OVERLAY no /etc/make.conf e faça com que aponte para
o diretório definido anteriormente. Quando você usar o Portage agora, ele irá
considerar essas ebuilds também sem removê-las/sobre-escrevê-las da próxima vez
que você rodar emerge --sync.
Trabalhando com vários overlays
Para os usuários avançados que desenvolvem usando vários overlays, testam
pacotes antes de chegar na árvore do Portage ou só querem usar ebuilds
não-oficiais de várias fontes, o pacote app-portage/gentoolkit-dev traz
gensync, uma ferramenta para ajudá-lo a manter os repositórios de overlay
atualizados.
Com gensync você pode atualizar todos repositórios de uma vez, ou
selecionar apenas alguns deles. Cada repositório deve ter um arquivo chamado
.syncsource no diretório de configuração
/etc/gensync/, contendo local do repositório, nome, identificação,
etc...
Suponha que você tem dois repositórios adicionais chamados java (para
ebuilds de java em desenvolvimento) e entapps (para aplicativos
desenvolvidos em casa para seu negócio). Você pode atualizar estes repositórios
da seguinte maneira:
Listagem de código 2.1: Usando gensync para atualizar repositórios |
# gensync java entapps
|
5.c. Software não-gerenciado pelo Portage
Usando o Portage com software gerenciado manualmente
Em alguns casos você quer configurar, instalar e manter software você mesmo, sem
que o Portage automatize o processo para você, mesmo se o Portage puder fornecer
os títulos de software. Casos comuns são fontes de kernel e drivers da nvidia.
Você pode configurar o Portage para que ele saiba que certo pacote está
instalado manualmente em seu sistema. Este processo é chamado de injeção
e é suportado pelo Portage através do arquivo
/etc/portage/profile/package.provided.
Por exemplo, se você quer informar o Portage sobre o
vanilla-sources-2.6.11.6 que você instalou manualmente, adicione a
seguinte linha ao /etc/portage/profile/package.provided:
Listagem de código 3.1: Linha de exemplo para o package.provided |
sys-kernel/vanilla-sources-2.6.11.6
|
6. A aplicação ebuild
6.a. Emerge e ebuild
A aplicação ebuild é uma interface de baixo nível com o sistema do Portage.
Usando a aplicação você pode executar ações específicas em uma dada ebuild.
Por exemplo, você pode fazer passos de instalação individuais você mesmo.
Usar ebuild serve mais para propósitos de desenvolvimento; mais informações sobre
ebuild pode, logo, ser encontrado no Manual dos Desenvolvedores, em inglês. No entanto,
iremos explicar que instâncias do ebuild são invocados pelo Portage durante o processo
de instalação de um certo título de software, e como invocar os passos de pós-configuração
que algumas ebuilds pedem que você faça.
6.b. Instalando software manualmente
Baixando as fontes & fazendo checksum delas
Quando você invoca ebuild em um dado arquivo de ebuild, ele verifica se
as checksums de todos arquivos envolvidos são iguais às do
Manifest acompanhante ou arquivo
files/digest-<nome>-<versão>. Isso
só acontece depois das fontes terem sido baixadas.
Para baixar as fontes usando ebuild, rode:
Listagem de código 2.1: Baixando as fontes |
# ebuild path/to/ebuild fetch
|
Se o md5sum da ebuild não bater com o listado no arquivo
Manifest, ou uma das fontes baixadas não bater com as
litadas no arquivo files/digest-<pacote>, você irá receber um
erro parecido com o seguinte:
Listagem de código 2.2: Erro no checksum de um ebuild |
!!! File is corrupt or incomplete. (Digests do not match)
>>> our recorded digest: db20421ce35e8e54346e3ef19e60e4ee
>>> your file's digest: f10392b7c0b2bbc463ad09642606a7d6
|
A linha subseqüente irá mencionar o arquivo com erro.
Se você tiver certeza que as fontes que você baixou e o ebuild em si são
válidos, você pode gerar manualmente o Manifest e o arquivo
digest-<pacote> usando a função digest do
ebuild:
Listagem de código 2.3: Gerando novo Manifest e digest |
# ebuild caminho/para/ebuild digest
|
Desempacotando as fontes
Para desempacotar as fontes em /var/tmp/portage (ou qualquer outro local
que você especificou em /etc/make.conf), rode a função unpack da
ebuild:
Listagem de código 2.4: Desempacotando as fontes |
# ebuild caminho/para/ebuild unpack
|
Isto irá executar a função src_unpack() da ebuild (que tem como padrão a
extração normal se nenhuma função src_unpack() é definida). É também nesse passo que
todos patches necessários são aplicados.
Compilando as fontes
O próximo passo no processo de instalação é compilar as fontes. A
função compile da ebuild faz esse passo ao executar a função
src_compile() da ebuild. Isto também faz os passos de configuração se
necessários.
Listagem de código 2.5: Compilando as fontes |
# ebuild caminho/para/ebuild compile
|
É recomendado que você edite a função src_compile() da ebuild se você quiser
mudar as instruções de compilação. No entanto, você também pode enganar o Portage a
acreditar que a aplicação ebuild terminou os passos de compilação. Rode
todos comandos necessários você mesmo e crie um arquivo vazio chamado
.compiled no diretório de trabalho:
Listagem de código 2.6: Informando o Portage sobre trabalhos de compilação terminados |
# touch .compiled
|
Instalando os arquivos em um local temporário
No próximo passo o Portage irá instalar todos arquivos necessários em um local
temporário. Este diretório irá conter todos arquivos que serão instalados
no sistema de arquivos de uso. Você pode fazer isso rodando a função install
da ebuild, que executa a função src_install() da ebuild:
Listagem de código 2.7: Instalando os arquivos |
# ebuild caminho/para/ebuild install
|
Instalando os arquivos em um sistema de arquivos de uso
O passo final é instalar todos arquivos no sistema de arquivos de uso e registrá-los
no backend do Portage. O ebuild chama o passo de "qmerge" e envolve os
seguintes passos:
- Executar a função pkg_preinst() se especificada
- Copiar todos arquivos para o sistema de arquivos de uso
- Registrar os arquivos no backend do Portage
- Executar a função pkg_postinst() se especificada
Rode a função qmerge do ebuild para fazer esses passos:
Listagem de código 2.8: Instalando so arquivos no sistema de arquivos de uso |
# ebuild caminho/para/ebuild qmerge
|
Limpando o diretório temporário
Finalmente, você pode limpar o diretório temporário usando a função clean
do ebuild:
Listagem de código 2.9: Limpando o diretório temporário |
# ebuild caminho/para/ebuild clean
|
6.c. Funções adicionais do ebuild
Rodando todos comandos relacionados ao merge
Usando a função merge do ebuild você pode rodar os comando fetch, unpack,
compile, install e qmerge de uma só vez:
Listagem de código 3.1: Instalando software |
# ebuild caminho/para/ebuild merge
|
Fazendo ações de configuração
Algumas aplicações incluem instruções que configuram o pacote para uso
em seu sistema. As instruções podem ser interativa e portanto não são
executadas automaticamente. Para rodar os passos de configuração, que estão listadas
na função opcional config() da ebuild, use a função config do
ebuild:
Listagem de código 3.2: Configurando um pacote |
# ebuild caminho/para/ebuild config
|
Construindo um pacote (RPM)
Você pode instruir o Portage para criar um pacote binário de uma ebuild ou até mesmo um
arquivo RPM. Use a função package ou rpm do ebuild para criar os arquivos.
Existem algumas diferenças entre as duas funções, todavia:
-
A função package é bem parecida com a função merge, executando
todos passos necessários (fetch, unpack, compile, install) antes de criar
o pacote
-
A função rpm cria um pacote RPM dos arquivos criados
depois de ter rodado a função install do ebuild
Listagem de código 3.3: Criando pacotes |
# ebuild caminho/para/ebuild package
# ebuild caminho/para/ebuild rpm
|
O arquivo RPM criado, no entanto, não tem a informação de dependências da
ebuild.
6.d. Mais informações
Por favor, consulte as seguintes páginas de man para mais informações sobre o Portage, a
aplicação ebuild e os arquivos do ebuild:
Listagem de código 4.1: Página de man |
$ man portage
$ man emerge
$ man ebuild
$ man 5 ebuild
|
Você também pode encontrar mais informações relacionadas a desenvolvimento no Manual dos Desenvolvedores, em inglês.
D. Configuração de rede do Gentoo
1. Começando
1.a. Começando
Nota:
Este documento presume que você configurou seu kernel corretamente, seus módulos
para seu hardware e que você conhece o nome de interface de seu hardware. Também
presumimos que você está configurando eth0, mas também pode ser
eth1, wlan0, etc.
|
Nota:
Este documento precisa de que você esteja rodando baselayout-1.11.11 ou
superior.
|
Para iniciar a configuração de sua placa de rede, você precisa contar ao sistema
de RC do Gentoo sobre ela. Isto é feito criando um link simbólico de
net.lo para net.eth0 em /etc/init.d
Listagem de código 1.1: Fazendo link simbólico de net.eth0 para net.lo |
# cd /etc/init.d
# ln -s net.lo net.eth0
|
O sistema de RC do Gentoo agora conhece a intercace. Ele também precisa saber
como configurá-la. Todas interfaces de rede são configuradas em
/etc/conf.d/net. Abaixo está um exemplo de configuração para DHCP e
endereços estáticos.
Listagem de código 1.2: Exemplos para /etc/conf.d/net |
config_eth0=( "dhcp" )
config_eth0=( "192.168.0.7/24" )
routes_eth0=( "default via 192.168.0.1" )
config_eth0=( "192.168.0.7 netmask 255.255.255.0" )
routes_eth0=( "default gw 192.168.0.1" )
|
Nota:
Se você não especificar uma configuração para sua interface, DHCP é presumido.
|
Nota:
CIDR significa Classless InterDomain Routing. Originalmente, endereços de IPv4
eram classificados como A, B, ou C. O sistema de classificação inicial não
englobou a popularidade massiva da Internet e está em perigo de não ter
endereços singulares novos. CIDR é um esquema de endereçamento que permite que
um endereço IP designe muitos endereços IP. Um endereço IP CIDR parece igual ao
um endereço IP normal, exceto por terminar com uma barra seguida de um número;
por exemplo, 192.168.0.0/16. CIDR é descrito no RFC 1519.
|
Agora que nós configuramos nossa interface, nós podemos iniciá-la e pará-la
usando os comandos abaixo.
Listagem de código 1.3: Iniciando e parando scripts de rede |
# /etc/init.d/net.eth0 start
# /etc/init.d/net.eth0 stop
|
Importante:
Durante a resolução de problemas de rede, é recomendável configurar
RC_VERBOSE="yes" no /etc/conf.d/rc para que você obtenha
mais informações sobre o que está acontecendo.
|
Agora que você iniciou e parou sua interface de rede, você pode querer iniciá-la
automaticamente quando o Gentoo iniciar. Aqui está como fazê-lo. O último
comando "rc" instrui o Gentoo a iniciar quaisquer scripts no runlevel atual que
não foram iniciados ainda.
Listagem de código 1.4: Configurando uma interface de rede para carregar durante a inicialização |
# rc-update add net.eth0 default
# rc
|
2. Configuração avançada
2.a. Configuração avançada
A variável config_eth0 é o coração da configuração de uma interface.
É uma lista de instruções de alto nível para configurar a interface (eth0
neste caso). Cada comando na lista de instruções é feito seqüencialmente.
A interface é considerada OK se pelo menos um comando funcionar.
Aqui está uma lista de instruções internas.
| Comando |
Descrição |
| null |
Não fazer nada |
| noop |
Se a interface estiver levantada e houver um endereço, abortar a
configuração com sucesso
|
| um endereço IPv4 ou IPv6 |
Adicionar o endereço à interfaceAdicionar o endereço à interface |
|
dhcp, adsl ou apipa (ou comando personalizado de um
módulo de terceiros)
|
Rodar o módulo que fornece o comando. Por exemplo, dhcp irá
rodar um módulo que fornece DHCP, que pode ser tanto dhcpcd,
udhcpc, dhclient ou pump.
|
Se um comando falhar, você pode especificar uma alternativa. A alternativa tem
que bater com a estrutura de configuração exatamente.
Você pode encadear estes comandos juntamente. Aqui estão alguns exemplos do
mundo real.
Listagem de código 1.1: Exemplos de configuração |
config_eth0=(
"192.168.0.2/24"
"192.168.0.3/24"
"192.168.0.4/24"
)
config_eth0=(
"192.168.0.2/24"
"4321:0:1:2:3:4:567:89ab"
"4321:0:1:2:3:4:567:89ac"
)
config_eth0=(
"noop"
"dhcp"
)
fallback_eth0=(
"null"
"apipa"
)
|
Nota:
Quando usar o módulo ifconfig e adicionar mais que um endereço, aliases
de interface são criados para cada endereço adicional. Com os dois exemplos
acima, você obterá as interfaces eth0, eth0:1 e eth0:2.
Você não pode fazer nada especial com essas interfaces, já que o kernel e outros
programas irão simplesmente tratar eth0:1 e eth0:2 como
eth0.
|
Importante:
A ordem da alternativa é importante! Se você não especificar a opção
null, o comando apipa só será rodado se o comando noop
falhar.
|
Nota:
APIPA e
DHCP são discutidos mais tarde.
|
2.b. Dependências de rede
Scripts de init em /etc/init.d podem depender de uma interface
de rede específica ou só net. net pode ser definido em
/etc/conf.d/rc para significar diferentes coisas usando a variável
RC_NET_STRICT_CHECKING.
| Valor |
Descrição |
| none |
O serviço net é considerado como sempre funcionando |
| no |
Basicamente significa que pelo menos um serviço net.* fora
net.lo deve estar funcionando. Isto pode ser usado por usuários
de notebooks que têm wifi e um nic estático, e só precisam de um funcionando
para que o serviço net seja visto como funcionando.
|
| lo |
É igual a opção no, mas net.lo também é contado.
Deve ser útil para pessoas que não se importam se alguma interface
específica está funcionando durante o carregamento.
|
| yes |
TODAS interfaces de rede DEVEM estar funcionando para o serviço
net ser considerado como funcionando.
|
Mas e o net.br0 dependendo de net.eth0 e
net.eth1? net.eth1 pode ser um dispositivo wireless ou
ppp que precisa de configuração antes de ser adicionado à ponte. Isto não pode
ser feito em /etc/init.d/net.br0 já que é um link simbólico para
net.lo.
É resposta é criar sua própria função depend() em
/etc/conf.d/net.
Listagem de código 2.1: dependência net.br0 em /etc/conf.d/net |
depend_br0() {
need net.eth0 net.eth1
}
|
Para uma discussão mais detalhada sobre dependência, consulte a seção
Escrevendo scripts de init no
Manual do Gentoo.
2.c. Nomes de variáveis e valores
Nomes de variáveis são dinâmicos. Normalmente seguem a estrutura
variable_${interface|mac|essid|apmac}. Por exemplo, a variável
dhcpcd_eth0 tem os valores das opções de dhcpcd para eth0 e
dhcpcd_essid tem o valor das opções de dhcpcd quando qualquer interface
conecta-se ao ESSID "essid".
No entanto, não existe nenhuma regra rígida e pronta que diz que nomes de
interface devem ser ethx. Na verdade, muitas interfaces wireless têm nomes como
wlanx, rax bem como ethx. Também, algumas intercaces definidas por usuários como
pontes podem receber qualquer nome, como foo. Para tornar a vida mais
interessante, pontos de acesso (AP) de wireless podem ter nomes com caracteres
não alfa-numéricos neles - isto é importante porque você pode configurar
parâmetros de rede por ESSID.
O ponto negativo disto é que o Gentoo usa variáveis de bash para rede -
e o bash não pode usar nada fora caracteres ingleses alfa-numéricos. Para
contornar esta limitação nós trocamos cada caractere que não é inglês
alfa-numérico em um caractere _.
Outro ponto negativo do bash é o conteúdo das variáveis - alguns caracteres
precisam de escape. Isto pode ser feito colocando o caractere \ na frente
do caractere que precisa ser escapado. A seguinte lista de caracteres precisa
ser escapada do seguinte jeito: ", ' e \.
Neste exemplo nós usados ESSID de wireless já que contêm o maior escopo de
caracteres. Nós usaremos a ESSID My "\ NET:
Listagem de código 3.1: exemplo de nome de variável |
dns_domain_My____NET="My \"\\ NET"
|
3. Rede modular
3.a. Módulos de rede
Nós agora suportamos scripts de rede modulares, o que significa que nós podemos
facilmente adicionar suporte para novos tipos de interface e módulos de
configuração, mantendo compatibilidade com os existentes.
Os módulos carregam por padrão se o pacote de que eles precisam está instalado.
Se você especificar um módulo aqui que não tem seu pacote instalado, você obtém
um erro dizendo que pacote você precisa instalar. Idealmente, você só usa o
ajuste de módulos quando você tem dois ou mais pacotes instalados que fornecem o
mesmo serviço e você precisa escolher um no lugar do outro.
Listagem de código 1.1: Preferência de módulo |
modules=( "iproute2" )
modules_eth0=( "udhcpc" )
modules=( "!iwconfig" )
|
3.b. Gerenciadores de interface
Nós atualmente oferecemos dois gerenciadores de interface: ifconfig e
iproute2. Você precisa de um deles para qualquer tipo de configuração de
rede.
ifconfig é o padrão do Gentoo e é incluído no profile (perfil) de
sistema. iproute2 é um pacote mais poderoso e flexível, mas não é
incluído por padrão.
Listagem de código 2.1: Para instalar iproute2 |
# emerge sys-apps/iproute2
modules=( "iproute2" )
|
Já que ambos ifconfig e iproute2 fazem coisas parecidas, nós
precisamos que sua configuração básica funcione com os dois. Por exemplo, os
dois trechos de código abaixo funcionam com qualquer módulo que você estiver
usando.
Listagem de código 2.2: exemplos de ifconfig e iproute2 |
config_eth0=( "192.168.0.2/24" )
config_eth0=( "192.168.0.2 netmask 255.255.255.0" )
config_eth0=( "192.168.0.2/24 brd 192.168.0.255" )
config_eth0=( "192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255" )
|
3.c. DHCP
DHCP é um meio de obter informação de rede (endereço de IP, servidores de DNS,
roteador, etc) de um servidor de DHCP. Isto significa que se há um servidor de
DHCP rodando na rede, você só tem que dizer a cada cliente para usar DHCP e ele
irá configurar a rede sozinho. Claro, você terá que configurar outras coisas
como wireless, PPP ou outras coisas se forem necessárias antes de poder usar
DHCP.
DHCP pode ser fornecido por dhclient, dhcpcd, pump ou
udhcpc. Cada módulo de DHCP tem seus prós e contras - aqui está uma
rápida lista.
| Módulo de DHCP |
Pacote |
Prós |
Contras |
| dhclient |
net-misc/dhcp |
Feito pela ISC, as mesmas pessoas por trás do software BIND DNS. Muito
configurável
|
Configuração demasiadamente complexa, software é bem inflado, não pode obter
servidores de NTP do DHCP, não envia nome de host por padrão
|
| dhcpcd |
net-misc/dhcpcd |
Padrão do Gentoo por muito tempo, não precisa de ferramentas exteriores
|
Não é mais mantido pelos desenvolvedores, pode ser lento às vezes, não vira
daemon quando o lease é infinito
|
| pump |
net-misc/pump |
Peso leve, não precisa de ferramentas exteriores
|
Não é mais mantido pelos desenvolvedores, não confiável, em especial com
modems, não pode obter servidores de NIS do DHCP
|
| udhcpc |
net-misc/udhcp |
Peso leve - menor cliente de DHCP existente, feito para sistemas embedded
|
Não testado - nenhuma distribuição usa por padrão, não pode definir um
timeout maior que 3 segundos
|
Se você tiver mais de um cliente de DHCP instalado, você precisa especificar
qual usar - caso contrário o padrão é dhcpcd se disponível.
Para enviar opções específicas para o módulo de DHCP, use
module_eth0="..." (troque module pelo módulo de DHCP que você está
usando - por exemplo dhcpcd_eth0)
Nós tentamos e tornamos o DHCP relativamente agnóstico - assim nós suportamos os
seguintes comandos usando a variável dhcp_eth0. O padrão é não usar
nenhum deles.
-
release - solta o endereço de IP para novo uso
-
nodns - não sobre-escrever /etc/resolv.conf
-
nontp - não sobre-escrever /etc/ntp.conf
-
nonis - não sobre-escrever /etc/yp.conf
Listagem de código 3.1: Exemplo de configuração de DHCP em /etc/conf.d/net |
modules=( "dhcpcd" )
config_eth0=( "dhcp" )
dhcpcd_eth0="-t 10"
dhcp_eth0="release nodns nontp nonis"
|
Nota:
dhcpcd, udhcpc e pump enviam o nome de host atual para o
servidor de DHCP por padrão, então você não precisa mais especificá-lo.
|
3.d. Modem ADSL
Primeiro nós precisamos instalar o software ADSL.
Listagem de código 4.1: Install the rp-pppoe package |
# emerge net-dialup/rp-pppoe
|
Aviso:
baselayout-1.11.x só suporta PPPoE
Espera-se que versões futuras suportem PPPoA
|
Agora nós precisamos instruir configure eth0 para ser uma interface de
ADSL e digitar nosso nome de usuário.
Listagem de código 4.2: Configure eth0 para ADSL |
config_eth0=( "adsl" )
adsl_user_eth0="nomedeusuario"
|
Finalmente você precisa definir seu nome de usuário e senha em
/etc/ppp/pap-secrets.
Listagem de código 4.3: exemplo de /etc/ppp/pap-secrets |
"usuario" * "senha"
|
3.e. APIPA (Automatic Private IP Addressing)
APIPA tenta encontrar um endereço livre no alcance 169.254.0.0-169.254.255.255
enviando arps de endereços aleatórios no alcance da interface. Se nenhuma
resposta é ouvida, nós designamos o endereço à interface.
Isto só é útil para LANs onde não há servidor de DHCP e você não conecta-se
diretamente à Internet e todos outros computadores usam APIPA.
Para suporte a APIPA, faça emerge net-misc/iputils ou
net-analyzer/arping.
Listagem de código 5.1: Configuração de APIPA em /etc/conf.d/net |
config_eth0=( "dhcp" )
fallback_eth0=( "apipa" )
config_eth0=( "apipa" )
|
3.f. Bonding (junção)
Para bonding/trunking de links, faça emerge net-misc/ifenslave
Bonding é usado para aumentar a banda da rede. Se você tem duas placas de rede
usando a mesma rede, você pode fazer bond delas para que suas aplicações vejam
só uma interface, mas na verdade usem as duas.
Listagem de código 6.1: configuração de bonding em /etc/conf.d/net |
slaves_bond0="eth0 eth1 eth2"
config_bond0=( "null" )
depend_bond0() {
need net.eth0 net.eth1 net.eth2
}
|
3.g. Bridging (ponte) (suporte a 802.1d)
Para suporte a bridging, faça emerge net-misc/bridge-utils
Bridging é usado para unir duas redes. Por exemplo, você pode ter um servidor
que conecta-se à Internet via um modem ADSL e uma placa de acesso wireless para
permitir que outros computadores conectem-se à rede via o modem ADSL. Você pode
criar uma ponte para unir as duas interfaces.
Listagem de código 7.1: Configuração de ponte em /etc/conf.d/net |
brctl_br0=( "setfd 0" "sethello 0" "stp off" )
bridge_br0="eth0 eth1"
config_eth0=( "null" )
config_eth1=( "null" )
config_br0=( "192.168.0.1/24" )
depend_br0() {
need net.eth0 net.eth1
}
|
Importante:
Para usar algumas configurações de ponte, você pode consultar a documentação de
nome de variável.
|
3.h. Endereço de MAC
Você não precisa instalar nada para mudar o endereço MAC de sua interface se
você tiver sys-apps/baselayout-1.11.14 ou mais novo e quiser mudar para
um endereço de MAC específico. No entanto, se você precisa mudar para um
endereço de MAC aleatório ou tem um baselayout mais antigo que a versão
mencionada acima, você precisa fazer emerge de net-analyzer/macchanger
para poder fazer uso desta funcionalidade.
Listagem de código 8.1: Exemplo de mudança de endereço de MAC |
mac_eth0="00:11:22:33:44:55"
mac_eth0="random-ending"
mac_eth0="random-samekind"
mac_eth0="random-anykind"
mac_eth0="random-full"
|
3.i. Tunnelling (túneis)
Você não precisa instalar nada para fazer túneis já que o gerenciador de
interfaces pode fazê-lo para você.
Listagem de código 9.1: Configuração de túneis em /etc/conf.d/net |
iptunnel_vpn0="mode gre remote 207.170.82.1 key 0xffffffff ttl 255"
iptunnel_vpn0="mode ipip remote 207.170.82.2 ttl 255"
config_vpn0=( "192.168.0.2 peer 192.168.1.1" )
|
3.j. VLAN (suporte a 802.1q)
Para suporte a VLAN, faça emerge net-misc/vconfig.
Virtual LAN é um grupo de dispositivos de rede que agem como se estivessem
conectados a um único segmento de rede - embora possam não estar. Membros de
VLAN só podem ser membros da mesma VLAN, mesmo que estejam dentro da mesma rede
física.
Listagem de código 10.1: configuração de VLAN em /etc/conf.d/net |
vlans_eth0="1 2"
vconfig_eth0=( "set_name_type VLAN_PLUS_VID_NO_PAD" )
vconfig_vlan1=( "set_flag 1" "set_egress_map 2 6" )
config_vlan1=( "172.16.3.1 netmask 255.255.254.0" )
config_vlan2=( "172.16.2.1 netmask 255.255.254.0" )
|
Importante:
Para usar algumas configurações de VLAN, você pode precisar consultar a
documentação de nomes de
variáveis.
|
4. Rede wireless
4.a. Introdução
Atualmente nós suportamos configurações wireless tanto através de
wireless-tools ou wpa_supplicant. É importante lembrar que você
deve configurar para redes wireless com base global e não com base em interface.
wpa_suppliant é a melhor escolha, mas não suporta todos drivers. Para uma
lista de drivers suportados, leia o site do
wpa_supplicant. Também, o wpa_supplicant só pode conectar
atualmente a um SSID que você tenha configurado.
wireless-tools suporta quase todos cartões e drivers, mas não pode
conectar a pontos de acesso (APs) só de WPA.
Aviso:
O driver linux-wlan-ng não é suportado pelo baselayout neste momento.
Isto ocorre porque o linux-wlan-ng tem seus próprios ajustes e
configuração que são completamente diferentes do resto. Existe um boato de que
os desenvolvedores do linux-wlan-ng estejam mudando sua configuração para
a do wireless-tools - quando isto acontecer, você poderá usar o
linux-wlan-ng com o baselayout.
|
4.b. WPA Supplicant (suplicante)
WPA Supplicant é
um pacote que permite que você se conecte a pontos de acesso com WPA. Sua
configuração é bagunçada já que ainda está em beta - no entanto, funciona bem na
maior parte.
Listagem de código 2.1: Instale o wpa_supplicant |
# emerge net-wireless/wpa_supplicant
|
Importante:
Você deve ter CONFIG_PACKET ativado em seu kernel para que o
wpa_supplicant funcione.
|
Agora nós configuramos o /etc/conf.d/net para que prefiramos
wpa_supplicant ao invés de wireless-tools (se ambos estiverem
instalados, o wireless-tools é o padrão).
Listagem de código 2.2: configure /etc/conf.d/net para wpa_supplicant |
modules=( "wpa_supplicant" )
wpa_supplicant_eth0="-Dmadwifi"
|
Nota:
Se você estiver usando o driver host-ap, você precisará colocar o cartão em
modo gerenciado antes de poder ser usado com wpa_supplicant
corretamente. Você pode usar iwconfig_eth0="mode managed" para fazer isto
no /etc/conf.d/net.
|
Foi simples, não foi? Todavia, ainda precisamos configurar o próprio
wpa_supplicant, o que é um pouco complicado dependendo da segurança dos
pontos de acesso a que você está tentando conectar. O exemplo abaixo é tirado e
simplificado do /etc/wpa_supplicant.conf.example que vem com o
wpa_supplicant.
Listagem de código 2.3: um exemplo de /etc/wpa_supplicant.conf |
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
ap_scan=1
network={
ssid="simples"
psk="senha super secreta"
priority=5
}
network={
ssid="segundo ssid"
scan_ssid=1
psk="senha super secreta"
priority=2
}
network={
ssid="exemplo"
proto=WPA
key_mgmt=WPA-PSK
pairwise=CCMP TKIP
group=CCMP TKIP WEP104 WEP40
psk=06b4be19da289f475aa46a33cb793029d4ab3db7a23ee92382eb0106c72ac7bb
priority=2
}
network={
ssid="textosimples-teste"
key_mgmt=NONE
}
network={
ssid="static-wep-test"
key_mgmt=NONE
wep_key0="abcde"
wep_key1=0102030405
wep_key2="1234567890123"
wep_tx_keyidx=0
priority=5
}
network={
ssid="static-wep-test2"
key_mgmt=NONE
wep_key0="abcde"
wep_key1=0102030405
wep_key2="1234567890123"
wep_tx_keyidx=0
priority=5
auth_alg=SHARED
}
network={
ssid="test adhoc"
mode=1
proto=WPA
key_mgmt=WPA-NONE
pairwise=NONE
group=TKIP
psk="senha secreta"
}
|
4.c. Wireless Tools (ferramentas de wireless)
Configuração inicial e modo gerenciado
Wireless Tools fornecem um modo genérico de configurar interfaces de
wireless básicas até o nível de segurança WEP. Embora o WEP seja um método de
segurança fraco, também é o predominante.
A configuração do Wireless Tools é controlada por algumas variáveis principais.
O arquivo de configuração abaixo deve descrever tudo de que você precisa. Uma
coisa para ter em mente é que nenhuma configuração significa "conectar ao ponto
de acesso sem criptografia mais forte" - nós sempre iremos tentar e conectar
você com alguma coisa.
Listagem de código 3.1: Instale o wireless-tools |
# emerge net-wireless/wireless-tools
|
Nota:
Embora você possa gravar seus ajustes de wireless em
/etc/conf.d/wireless este guia recomenda que você guarde-os em
/etc/conf.d/net.
|
Importante:
Você irá precisar consultar a documentação de nomes de variáveis.
|
Listagem de código 3.2: exemplo de ajuste de iwconfig em /etc/conf.d/net |
modules=( "iwconfig" )
key_ESSID1="[1] s:suachaveaqui key [1] enc open"
key_ESSID2="[1] aaaa-bbbb-cccc-dd key [1] enc restricted"
preferred_aps=( "ESSID1" "ESSID2" )
|
Ajustes finos de seleção de pontos de acesso
Você pode encontrar algumas opções adicionais para fazer ajustes finos a sua
seleção de pontos de acesso, mas não são normalmente necessários.
Você pode decidir se apenas conectamos aos pontos de acesso preferidos ou não.
Por padrão, se tudo configurado falhar e pudermos conectar a um ponto de acesso
sem criptografia, faremos isso. Isto pode ser controlado pela variável
associate_order. Aqui está uma tabela de valores e como eles controlam
isso.
| Valor |
Descrição |
| any |
Comportamento padrão |
| preferredonly |
Só iremos conectar a pontos de acesso visíveis na lista de
preferência
|
| forcepreferred |
Nós iremos forçar a conexão a pontos de acesso na ordem preferida se não
forem encontrados em um escaneamento
|
| forcepreferredonly |
Não escanear pontos de acesso - ao invés disso, conectar-se a cada um em
ordem
|
| forceany |
Igual a forcepreferred + conectar a qualquer outro ponto de acesso
disponível
|
Finalmente nós temos algumas seleções de blacklist_aps e
unique_ap. blacklist_aps funciona de uma forma parecida a
preferred_aps. unique_ap é um valor yes ou no que
diz se uma segunda interface de wireless pode conectar-se ao mesmo ponto de
acesso que a primeira interface.
Listagem de código 3.3: exemplo de blacklist_aps e unique_ap |
blacklist_aps=( "ESSID3" "ESSID4" )
unique_ap="yes"
|
Modos Ad-Hoc e Master
Se você quiser configurar-se como um node de Ad-Hoc se você não conseguir se
conectar a nenhum ponto de acesso em modo gerenciado, você também pode fazê-lo.
Listagem de código 3.4: alternativa de modo ad-hoc |
adhoc_essid_eth0="Este node de Adhoc"
|
E conectar-se a redes Ad-Hoc ou rodar em modo Master para tornar-se um ponto de
acesso? Aqui está uma configuração para isto! Você pode precisar especificar
chaves de WEP como mostrado acima.
Listagem de código 3.5: exemplo de configuração de ad-hoc/master |
mode_eth0="ad-hoc"
essid_eth0="Este node de Adhoc"
channel_eth0="9"
|
Importante:
O abaixo é tirado diretamente da documentação de wavelan do BSD encontrada na
documentação do NetBSD. Existem 14 canais possíveis; É dito a nós que os
canais 1-11 são legais para a América do Norte, canais 1-13 para a maior parte
da Europa, canais 10-13 para a França, e só canal 14 para o Japão. Se em dúvida,
por favor faça referência à documentação que veio junto com seu cartão ou ponto
de acesso. Certifique-se de que o canal que você selecionar é o mesmo canal de
seu ponto acesso (ou o mesmo cartão na rede ad-hoc). O padrão para cartões
vendidos na América do Norte e a maior parte da Europa é 3; o padrão para
cartões vendidos na França é 11, e o padrão para cartões vendidos no Japão é 14.
|
Resolvendo problemas com o Wireless Tools
Existem mais algumas variáveis que você pode usar para colocar sua conexão
wireless para funcionar devido a problemas de driver ou ambiente. Aqui está uma
tabela com outras coisas que você pode tentar.
| Variável |
Valor padrão |
Descrição |
| iwconfig_eth0 |
|
Veja a página de manual do iwconfig para detalhes sobre o que enviar ao
iwconfig
|
| iwpriv_eth0 |
|
Ver a página de manual do iwpriv para detalhes sobre o que enviar ao
iwpriv
|
| sleep_scan_eth0 |
0 |
O número de segundos para dormir antes de tentar escanear. Isto é
necessário quando o driver/firmware precisa de mais tempo para ser ativado
antes de ser usado.
|
| sleep_associate_eth0 |
5 |
O número de segundos para esperar que a interface se associe com um
ponto de acesso antes de tentar o próximo
|
| associate_test_eth0 |
MAC |
Alguns drivers não resetam o endereço de MAC associado com um inválido
quando perdem ou tentam associação. Alguns drivers não resetam o nível de
qualidade quando perdem ou tentam associação. Valores válidos são
MAC, quality e all.
|
| scan_mode_eth0 |
|
Alguns drivers aqui tem que escanear em modo ad-hoc, então se o
escaneamento falhar, tentar configurar ad-hoc aqui
|
| iwpriv_scan_pre_eth0 |
|
Envia alguns comandos de iwpriv para a interface antes de escanear.
Ver a página de manual do iwpriv para mais detalhes
|
| iwpriv_scan_post_eth0 |
|
Envia alguns comandos de iwpriv para a interface após escanear.
Ver a página de manual do iwpriv para mais detalhes
|
4.d. Definindo configuração de rede por ESSID
Às vezes, você precisa de um IP estático quando você se conecta ao ESSID1
e você precisa de DHCP quando você se conecta ao ESSID2. Na verdade, a
maior parte das variáveis de módulos podem ser definidas por ESSID. Aqui está
como fazemos isto.
Nota:
O seguinte funciona se você estiver usando WPA Supplicant ou Wireless Tools.
|
Importante:
Você irá precisar consultar a
documentação de
nomes de variáveis.
|
Listagem de código 4.1: sobrepor ajustes de rede por ESSID |
config_ESSID1=( "192.168.0.3/24 brd 192.168.0.255" )
routes_ESSID1=( "default via 192.168.0.1" )
config_ESSID2=( "dhcp" )
fallback_ESSID2=( "192.168.3.4/24" )
fallback_route_ESSID2=( "default via 192.168.3.1" )
dns_servers_ESSID1=( "192.168.0.1" "192.168.0.2" )
dns_domain_ESSID1="algum.domínio"
dns_search_domains_ESSID1="procurar.este.domínio. procurar.aquele.domínio"
config_001122334455=( "dhcp" )
dhcpcd_001122334455="-t 10"
dns_servers_001122334455=( "192.168.0.1" "192.168.0.2" )
|
5. Adicionando funcionalidade
4.a. Ganchos de função padrão
Quatro funções podem ser definidas que serão chamadas em torno das operações
start/stop. As funções são chamadas com o nome da interface
primeiro para que uma função possa controlar múltiplos adaptadores.
Os valores de retorno para as funções preup() e predown devem ser
0 (sucesso) para indicar que a configuração ou desconfiguração da
interface pode continuar. Se preup() retornar um valor não-nulo, então
a configuração de interface será abortada. Se o predown() retornar um
valor não-nulo, então a interface não poderá continuar a
desconfiguração.
Os valores de retorno para as funções postup() e postdown são
ignorados, já que não há nada a fazer se eles indicarem falhas.
${IFACE} é configurado para a interface ser levantada/abaixada.
${IFVAR} é ${IFACE} convertido para um nome de variável permitido
pelo bash
Listagem de código 1.1: exemplos de função pre/post up/down |
preup() {
if mii-tool ${IFACE} 2> /dev/null | grep -q 'no link'; then
ewarn "No link on ${IFACE}, aborting configuration"
return 1
fi
if ethtool ${IFACE} | grep -q 'Link detected: no'; then
ewarn "No link on ${IFACE}, aborting configuration"
return 1
fi
return 0
}
predown() {
if is_net_fs /; then
eerror "sistema de arquivos raiz está montado em rede -- ${IFACE} não pode ser parada"
return 1
fi
return 0
}
postup() {
return 0
}
postdown() {
return 0
}
|
5.b. Ganchos de função para ferramentas wireless
Nota:
Isto não irá funcionar com WPA suplicante - mas as variáveis ${ESSID} e
${ESSIDVAR} estão disponíveis na função postup().
|
Duas funções podem ser definidas que irão ser chamadas em torno da
função associada. As funções são chamadas com o nome da interface primeiro
para que uma função possa controlar múltiplos adaptadores.
Os valores de retorno para uma função preassociate() devem ser 0
(sucesso) para indicar que a configuração ou desconfiguração da
interface pode continuar. Se preassociate() retornar um valor não-nulo,
então a configuração de interface será abortada.
O valor de retorno para a função postassociate() é ignorado
já que não há nada a fazer se indicar falha.
${ESSID} é configurado como o ESSID exato do AP a que você está se
conectando.
${ESSIDVAR} é ${ESSID} convertido para um nome de variável
permitido pelo bash
Listagem de código 2.1: funções pre/post association |
preassociate() {
local user pass
eval user=\"\$\{leap_user_${ESSIDVAR}\}\"
eval pass=\"\$\{leap_pass_${ESSIDVAR}\}\"
if [[ -n ${user} && -n ${pass} ]]; then
if [[ ! -x /opt/cisco/bin/leapscript ]]; then
eend "Para suporte a LEAP support, por favor faça emerge net-misc/cisco-aironet-client-utils"
return 1
fi
einfo "Esperando autenticação de LEAP em \"${ESSID//\\\\//}\""
if /opt/cisco/bin/leapscript ${user} ${pass} | grep -q 'Login incorrect'; then
ewarn "Login falhou para ${user}"
return 1
fi
fi
return 0
}
postassociate() {
return 0
}
|
Nota:
${ESSID} e ${ESSIDVAR} não estão disponíveis nas funções
predown() e postdown().
|
6. Gerenciamento de rede
6.a. Gerenciamento de rede
Se você e seu computador estiverem sempre em tráfego, você pode nem sempre ter
um cabo de ethernet plugado ou um ponto de acesso (AP) disponível. Também, nós
podemos desejar que a rede funcione automaticamente se um cabo de ethernet for
plugado ou um ponto de acesso encontrado.
Aqui você encontra algumas ferramentas que ajudam a gerenciar isto.
Nota:
Este documento só fala sobre o ifplugd, mas existem alternativas que você
pode considerar, como quickswitch.
|
6.b. ifplugd
ifplugd é um
daemon que iniciar e pára interfaces quando um cabo de ethernet é inserido ou
removido. Também pode gerenciar a detecção de associação a pontos de acesso ou
quando novos entram em alcance.
Listagem de código 2.1: Instalando o ifplugd |
# emerge sys-apps/ifplugd
|
A configuração do ifplugd é bem simples também. O arquivo de configuração
fica em /etc/conf.d/ifplugd. Rode
man ifplugd para detalhes sobre o que fazem as variáveis.
Listagem de código 2.2: exemplo de configuração de ifplug |
INTERFACES="eth0"
AUTO="no"
BEEP="yes"
IGNORE_FAIL="yes"
IGNORE_FAIL_POSITIVE="no"
IGNORE_RETVAL="yes"
POLL_TIME="1"
DELAY_UP="0"
DELAY_DOWN="0"
API_MODE="auto"
SHUTDOWN="no"
WAIT_ON_FORK="no"
MONITOR="no"
ARGS=""
MONITOR_wlan0="yes"
DELAY_UP_wlan0="5"
DELAY_DOWN_wlan0="5"
|
O conteúdo deste documento está licenciado pela licença Creative Commons -
Attribution / Share Alike.
|