domingo, 28 de abril de 2013

Capítulo 4

Mudamos para novo endereço: http://sourceforge.net/projects/lfsptbr/

Obrigado!

********************

Essa semana foi longa, muito longa e trabalhosa.

Aconteceu muita coisa, desde um alagamento inexplicável em meu carro (tive que literalmente tirar água de dentro dele com um balde) até um acidente de trabalho com meu pai, o que exigiu minha atenção.

O alagamento no carro resultou em pane elétrica e fim da minha bateria que já estava pela hora da morte mesmo (=P), mas isso me tomou um tempo precioso.
Meu pai felizmente está totalmente recuperado do acidente e já voltou ao trbalho.
Felizmente tudo terminou bem. =D

Devido a essas e outras questões pessoais que não cabem no escopo desse projeto, só agora disponibilizo o Capítulo 4.

Segue o pdf: 05_LFS_pt_BR.pdf

Segue o texto:

*****

Capítulo 4. Preparações Finais

4.1. Sobre a variável $LFS

A variável de ambiente LFS será usada durante todo o livro. É imprescindível que esta variável sempre esteja definida. Ela deve ser configurada para indicar o ponto de montagem da partição LFS. Cheque se a variável LFS está configurada propriamente com o comando:
echo $LFS
Certifique-se que a saída mostra o caminho para o ponto de montagem da partição LFS, que seria /mnt/lfs caso o exemplo tenho sido seguido. Se a saída não estiver correta, a variável pode ser configurada com:
export LFS=/mnt/lfs
Ter essa variável configurada é útil uma vez que comandos como mkdir $LFS/tools podem ser digitados exatamente como apresentados no livro. O shell irá substituir automaticamente o “$LFS” por “/mnt/lfs” (ou com o qualquer outro valor atribuído a variável) quando ele processar a linha de comando.
Não esqueça de verificar se a variável $LFS está configurada quando você deixar ou retornar ao ambiente de trabalho ( quando se executa um su para entrar como root ou outro usuário).

4.2. Criando o diretório $LFS/tools

Todos os programas compilados no Capítulo 5 serão instalados no diretório $LFS/tools para mantê-los separados dos programas compilados no Capítulo 6. Os programas compilados aqui serão ferramentas temporárias e não serão parte do sistema LFS final. Mantendo esses programas em um diretório separado, eles podem facilmente ser descartados após seu uso. Isso também previne que esses programas terminem nos diretórios de produção do sistema anfitrião ( fácil de acontecer acidentalmente no Capítulo 5).
Crie os diretórios solicitado executando o comando seguinte como root:
mkdir -v $LFS/tools
O próximo passo é criar um link simbólico /tools no sistema anfitrião. Esse link vai apontar para o diretório recém-criado na partição LFS. Execute o comando como root:
ln -sv $LFS/tools /
Nota
O comando acima está correto. O comando ln tem algumas variações sintáticas, então certifique-se de checar info coreutils ln e ln(1) antes de reportar o que você pode achar que seja um erro.
O link simbólico criado habilita as ferramentas utilizadas na construção do sistema a serem compiladas de tal forma que sempre se faz referência a /tools, significando que o compilador, assembler e linker funcionarão tanto no Capítulo 5 ( quando nós ainda usaremos algumas ferramentas do sistema anfitrião) quanto no seguinte (quando nós mudaremos, chroot, para a partição LFS).

4.3. Adicionando o usuário LFS

Quando logado como usuário root, cometer um simples erro pode danificar ou destruir um sistema. Portanto, nós recomendamos construir os pacotes neste capítulo como um usuário sem privilégios. Você poderia usar seu próprio usuário, mas para facilitar a configuração de um ambiente de trabalho limpo, crie um novo usuário chamado lfs como um membro de um novo grupo (também chamado lfs) e use esse usuário durante o processo de instalação. Como root, execute os seguintes comandos para adicionar o novo usuário:
groupadd lfs
useradd -s /bin/bash -g lfs -m -k /dev/null lfs
O significado das opções do comando:
-s /bin/bash
Faz do bash o shell padrão para o usuário lfs.
-g lfs
Adiciona o usuário lfs ao grupo lfs.
-m
Esta opção cria um diretório de usuário (home) para o usuário lfs.
-k /dev/null
Esse parâmetro previne a possível cópia de arquivos do esqueleto de diretório (ou diretório esqueleto, cujo padrão é /etc/skel) mudando a localização de entrada para o dispositivo especial nulo (null).
lfs
Esse é o nome real para o grupo e usuário criados.
Para entrar como lfs (em oposição a mudar para o usuário lfs quando logado como root, o que não querer que o usuário lfs tenha uma senha), dê ao usuário lfs uma senha:
passwd lfs
Garanta ao usuário lfs acesso total ao diretório $LFS/tools fazendo o usuário lfs dono do diretório:
chown -v lfs $LFS/tools
Se um diretório de trabalho separado foi criado como sugerido, dê ao usuário lfs a posse do mesmo:
chown -v lfs $LFS/sources
Em seguida, entre como usuário lfs. Isso pode ser feito via terminal virtual, através de um gerenciador de tela, ou com o comando seguinte para mudança de usuário:
su – lfs
O “–“ instrui o comando su a iniciar um shell de login em vez de um shell non-login. A diferença entre esses dois tipos de shell pode ser encontrada em detalhes em bash(1) e info bash.

4.4. Configurando o Ambiente

Configure um bom ambiente de trabalho criando dois novos arquivos de inicialização para o shell bash. Enquanto logado como usuário lfs, execute o comando seguinte para criar um novo arquivo .bash_profile:
cat > ~/.bash_profile << "EOF"
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
EOF
Enquanto logado como usuário lfs, o shell inicial é geralmente o shell de login que lê o arquivo /etc/profile do sistema anfitrião (que provavelmente contém algumas configurações e variáveis de ambiente) e então lê o arquivo .bash_profile. O comando exec env -i.../bin/bash no arquivo .bash_profile substitui o shell em utilização por um novo com um ambiente completamente vazio, exceto pelas variáveis HOME, TERM e PS1. Isso garante que nenhuma variável de ambiente indesejável e potencialmente danosa do sistema anfitrião vaze para o listema em construção. A técnica usada aqui faz com que se alcance o objetivo de um ambiente limpo.
A nova instância do shell é um shell non-login, que não lê os arquivos /etc/profile e .bash_profile, mas lê o arquivo .bashrc. Crie o arquivo .bashrc agora:
cat > ~/.bashrc << "EOF"
set +h
umask 022
LFS=/mnt/lfs
LC_ALL=POSIX
LFS_TGT=$(uname -m)-lfs-linux-gnu
PATH=/tools/bin:/bin:/usr/bin
export LFS LC_ALL LFS_TGT PATH
EOF
O comando set +h desativa a função hash do bash. Geralmente “hashing” é uma característica útil – bash usa uma tabela hash (tabela de dispersão ou tabela de espalhamento) para lembrar o caminho completo de arquivos executáveis evitando procurar no PATH várias vezes pelo mesmo executável. Entretanto, as novas ferramentas devem ser usadas tão logo estejam instaladas. Desativando a função hasg, o shell vai sempre procurar no PATH quando um programa estiver para ser executado. Dessa forma, o shell encontrará as ferramentas recém compiladas em $LFS/tools tão logo elas estejam disponíveis sem lembrar da versão anterior dos mesmos programas que estavam em uma localização diferente.
Configurando a máscara de criação de arquivos do usuário (umask) para 022 garante que somente o dono dos arquivos e diretórios recém-criados tem poder de escrita, mas eles podem ser lidos e executados por qualquer um (assumindo que os modos padrão são usados pelas chamadas de sistema open(2), novos arquivos ficam com permissão 644 e diretórios com modo 755).
A variável LFS deve ser configurada para o ponto de montagem escolhido.
A variável LC_ALL controla a localização de certos programas, fazendo duas mensagens seguirem as convenções de um país específico. Se o sistema anfitrião usa uma Glibc mais velha que 2.2.4, ter LC_ALL configurado para qualquer coisa diferente de “POSIX” ou “C” (durante esse capítulo) pode causar problemas se você deixar o ambiente de trabalho de desejar retornar depois. Configurando LC_ALL para “POSIX” ou “C” (as duas são equivalentes) garante que tudo vai funcionar como esperado no ambiente de trabalho.
A variável LFS_TGT define uma descrição de máquina fora do padrão, mas compatível para uso quando construindo nosso compilador cruzado (cross compiler) e linker e quando usando os mesmos para compilação do conjunto de ferramentas para desenvolvimento (toolchain). Mais informações estão disponíveis na Seção 5.2, “Notas Técnicas sobre as ferramentas de desenvolvimento”.
Colocando /tools/bin antes do padrão no PATH, todos os programas instalados no Capítulo 5 são encontrados pelo shell imediatamente após sua instalação. Isso, combinado com a desativação do hashing, limita o risco de programas velhos do sistema anfitrião serem usados quando os mesmos programas estão disponíveis no ambiente do Capítulo 5.
Finalmente, para ter o ambiente totalmente preparado para construção das ferramentas temporárias, use o comando source no recém-criado aquivo .bash_profile:
source ~/.bash_profile

4.5. Sobre SBUs

Muitas pessoas gostariam de saber de antemão quanto tempo aproximadamente leva para compilar e instalar cada pacote. Devido ao fato do Linux From Scratch poder ser construído em vários sistemas diferentes, é impossível disponibilizar estimativas de tempo apuradas. O maior pacote (Glibc) levará aproximadamente 20 minutos em sistemas mais rápidos, mas poderia levar até 3 dias em sistemas mais lentos! Em vez de disponibilizar tempos, a unidade de medida padrão de construção SBU (Standard Build Unit) será usada.
A unidade SBU será usada como se segue. O primeiro pacote a ser compilado neste livro é Binutils no Capítulo 5. O tempo necessário para compilar esse pacote é que será referência como SBU. Todos os outros tempos de compilação serão expressos relativamente a esse tempo.
Por exemplo, considere um pacote cujo tempo de compilação é 4.5 SBUs. Isso significa que se um sistema precisou de 10 minutos para compilar e instalar a primeira passagem do Binutils, será necessário aproximadamente 45 minutos para construir esse pacote exemplo. Felizmente, a maioria dos tempos de construção são menores do que o tempo para o Binutils.
De maneira geral, SBUs não são totalmente acuradas porque dependem de muitos fatores, incluindo a versão do GCC do sistema anfitrião. Elas são disponibilizadas aqui para dar uma estimativa de quanto tempo pode levar para instalar um pacote, mas os números podem varia por dúzias de minutos em alguns casos.
Para ver o tempo real para algumas máquinas específicas, nós recomendamos The LinuxFromScratch SBU Home Page no endereço http://www.linuxfromscratch.org/~sbu/.
Nota
Para muitos sistemas modernos com múltiplos processadores (ou cores) o tempo de compilação para um pacote pode ser reduzido usando um “parallel make”, o que pode ser feito tanto configurando uma variável de ambiente ou dizendo para o programa make quantos processadores estão disponíveis. For exemplo, um Core2Duo pode suportar dois processos simultâneos com:
export MAKEFLAGS='-j 2'
ou só construindo com:
make -j2
Quando múltiplos processadores são usados dessa maneira, as unidades SBU no livro irão variar mais do que normalmente aconteceria. Analisando a saída dos processos de construção também será mais difícil porque as linhas dos diferentes processos estarão intercaladas. Se você tiver problemas com uma passagem durante a construção, retorne para um único processador para analisar devidamente as mensagens de erro.

4.6. Sobre as Ferramentas de Teste (Suites de Teste)

A maioria dos pacotes disponibiliza ferramentas de teste. Rodas as ferramentas de teste para um pacote recém construído é uma boa ideia porque isso pode prover um “cheque de sanidade” indicando que tudo foi devidamente compilado. Uma ferramenta de testes que executa seu conjunto de checagens geralmente prova que o pacote está funcionando como o desenvolvedor pretendia. Entretanto isso não garante que o pacote está totalmente livre de bugs.
Algumas suites de teste são mais importantes que outras. Por exemplo, as suites de teste para os pacotes principais das ferramentas de desenvolvimento (toolchain) – GCC, Binutils e Glibc – são de máxima importância devido a seu papel central em um sistema que funcione corretamente. As suites de teste para GCC e Glibc podem levar bastante tempo para completarem, especialmente em uma máquina lenta, mas são fortemente recomendadas.
Nota
Experiência tem mostrado que há pouco a se ganhar executando as suites de teste no Capítulo 5. Não há escapatória ao fato de que o sistema anfitrião sempre exerce alguma influência sobre os testes naquele capítulo, geralmente causando falhas inexplicáveis. Devido ao fato das ferramentas construídas no Capítulo 5 serem temporárias e eventualmente descartadas, nós não recomendamos executar as suites de teste no Capítulo 5 para a maioria dos leitores. As instruções para a execução dessas suites de testes são disponibilizadas para beneficiar os desenvolvedores e analistas (testers), mas elas são opcionais.
Um problema comum enquanto executando as suites de teste para Binutils e GCC é ficar sem pseudo terminais (PTYs). Isso pode resultar em um alto número de testes com falhas. Isso pode acontecer por diversos motivos, mas a causa mais provável é que o sistema anfitrião não tem os arquivos de sistema devpts configurados corretamente. Esse problema é discutido em maiores detalhes na página http://www.linuxfromscratch.org//lfs/faq.html#no-ptys.
Algumas vezes suites de testes falham, mas por razões das quais os desenvolvedores estão cientes e não são consideradas críticas. Consulte os registros (logs) localizados em http://www.linuxfromscratch.org/lfs/build-logs/7.3/ para verificar quando essas falhas são esperadas ou não. Este site é válido para todos os testes durante este livro.

*****
Até o próximo!

terça-feira, 23 de abril de 2013

Capítulo 3

Mudamos para novo endereço: http://sourceforge.net/projects/lfsptbr/

Obrigado!

********************

Mais uma noite, mais um capítulo.
Finalmente Capítulo 3, baixando pacotes e patches. Para nossa sorte, todos os pacotes e patches estavam nos endereços informados no livro. =D

Segue o pdf: 04_LFS_pt_BR.pdf

Segue texto:

*****


Capítulo 3. Pacotes e Patches

3.1. Introdução

Este capítulo inclui uma lista de pacotes que precisam ser baixados para construir um sistema Linux básico. Os números de versão listados correspondem a versões dos software cujo funcionamento foi testado e nas quais este livro é baseado. Nós recomendamos veementemente que não se utilize versões novas, uma vez que os comandos para construção de uma versão podem não funcionar em uma nova versão. A nova versão do pacote também pode ter problemas que precisem ser corrigidos. Essas correções serão desenvolvidas e estabilizadas na versão do livro que está em fase de desenvolvimento.
Links de downloads nem sempre podem estar acessíveis. Se a localização de uma página de download mudou desde a publicação deste livro, Google (http://www.google.com/) disponibiliza uma ferramenta de busca útil para localizar a maioria dos pacotes. Se a busca não for bem sucedida, tente um dos meios alternativos de download discutidos na página http://www.linuxfromscratch.org/lfs/packages.html#packages.
Pacotes e pactches baixados precisam ser armazenados em algum lugar que esteja convenientemente disponível durante todo o procedimento de construção do sistema. Um diretório de trabalho também se faz necessário para extrair as fontes e contruí-las. $LFS/sources pode ser usado como um local para armazenar os arquivos compactados e patches e como diretório de trabalho. Usando este diretório, os elementos necessários estarão localizados na partição LFS e estarão disponíveis durante todos os estágios do processo de construção.
Para criar esse diretório, execute o comando seguinte, como usuário root, antes de começar a seção download.
mkdir -v $LFS/sources
Faça com que este diretório esteja disponível para que múltiplos usuários tenham permissão de escrita, mas só o dono possa deletar seus arquivos ( usa-se o termo “Sticky”, pegajoso, para se referir a esse tipo de configuração de permissões). O comando seguinte habilitará o modo de escrita e o sticky:
chmod -v a+wt $LFS/sources
Uma maneira fácil de baixar todos os pacotes e patches é utilizar uma lista (wget-list) como entrada para o comando wget. Por exemplo:
wget -i wget-list -P $LFS/sources
Adicionalmente, começando com o LFS-7.0, há um arquivo separado, md5sums, que pode ser usado para verificar se todos os pacotes corretos estão disponíveis antes de prosseguir. Coloque o arquivo no diretório $LFS/sources e execute os comandos:
pushd $LFS/sources
md5sum -c md5sums
popd

3.2. Todos os Pacotes

Baixe ou obtenha de outra forma os seguintes pacotes:
  • Autoconf (2.69) - 1,186 KB:
Home page: http://www.gnu.org/software/autoconf/
MD5 sum: 50f97f4159805e374639a73e2636f22e
  • Automake (1.13.1) - 1,392 KB:
Home page: http://www.gnu.org/software/automake/
MD5 sum: a60380ab11e1481376b7747d1b42ced2
  • Bash (4.2) - 6,845 KB:
Home page: http://www.gnu.org/software/bash/
MD5 sum: 3fb927c7c33022f1c327f14a81c0d4b0
  • Binutils (2.23.1) - 20,953 KB:
Home page: http://www.gnu.org/software/binutils/
MD5 sum: 33adb18c3048d057ac58d07a3f1adb38
  • Bison (2.7) - 1,735 KB:
Home page: http://www.gnu.org/software/bison/
MD5 sum: 234cdfac99257cf99ac4a03c898f37b9
  • Bzip2 (1.0.6) - 764 KB:
Home page: http://www.bzip.org/
MD5 sum: 00b516f4704d4a7cb50a1d97e6e8e15b
  • Check (0.9.9) - 589 KB:
Home page: http://check.sourceforge.net/
MD5 sum: f3702f2fcfc19ce3f62dca66c241a168
  • Coreutils (8.21) - 5,248 KB:
Home page: http://www.gnu.org/software/coreutils/
MD5 sum: 065ba41828644eca5dd8163446de5d64
  • DejaGNU (1.5) - 563 KB:
Home page: http://www.gnu.org/software/dejagnu/
MD5 sum: 3df1cbca885e751e22d3ebd1ac64dc3c
  • Diffutils (3.2) - 1,976 KB:
Home page: http://www.gnu.org/software/diffutils/
MD5 sum: 22e4deef5d8949a727b159d6bc65c1cc
  • E2fsprogs (1.42.7) - 5,856 KB:
Home page: http://e2fsprogs.sourceforge.net/
MD5 sum: a1ec22ef003688dae9f76c74881b22b9
  • Expect (5.45) - 614 KB:
Home page: http://expect.sourceforge.net/
MD5 sum: 44e1a4f4c877e9ddc5a542dfa7ecc92b
  • File (5.13) - 627 KB:
Home page: http://www.darwinsys.com/file/
MD5 sum: d60c1364ba956eff7d21f8250808fc6d
Nota
File (5.13) pode não estar disponível na localização listada. Os administradores do site ocasionalmente removem versões antigas quando novas são liberadas. Uma localização de download alternativa que pode ter a versão correta pode ser encontrada na pagina: http://www.linuxfromscratch.org/lfs/download.html#ftp.
  • Findutils (4.4.2) - 2,100 KB:
Home page: http://www.gnu.org/software/findutils/
MD5 sum: 351cc4adb07d54877fa15f75fb77d39f
  • Flex (2.5.37) - 1,280 KB:
Home page: http://flex.sourceforge.net
MD5 sum: c75940e1fc25108f2a7b3ef42abdae06
  • Gawk (4.0.2) - 1,589 KB:
Home page: http://www.gnu.org/software/gawk/
MD5 sum: 8a9b2f1170ac9dcd3eb13716b5ec4021
  • GCC (4.7.2) - 80,942 KB:
Home page: http://gcc.gnu.org/
MD5 sum: cc308a0891e778cfda7a151ab8a6e762
  • GDBM (1.10) - 640 KB:
Home page: http://www.gnu.org/software/gdbm/
MD5 sum: 88770493c2559dc80b561293e39d3570
  • Gettext (0.18.2) - 15,330 KB:
Home page: http://www.gnu.org/software/gettext/
MD5 sum: 0c86e5af70c195ab8bd651d17d783928
  • Glibc (2.17) - 10,725 KB:
Home page: http://www.gnu.org/software/libc/
MD5 sum: 87bf675c8ee523ebda4803e8e1cec638
  • GMP (5.1.1) - 1,771 KB:
Home page: http://www.gnu.org/software/gmp/
MD5 sum: 485b1296e6287fa381e6015b19767989
  • Grep (2.14) - 1,172 KB:
Home page: http://www.gnu.org/software/grep/
MD5 sum: d4a3f03849d1e17ce56ab76aa5a24cab
  • Groff (1.22.2) - 3,926 KB:
Home page: http://www.gnu.org/software/groff/
MD5 sum: 9f4cd592a5efc7e36481d8d8d8af6d16
  • GRUB (2.00) - 5,016 KB:
Home page: http://www.gnu.org/software/grub/
MD5 sum: a1043102fbc7bcedbf53e7ee3d17ab91
  • Gzip (1.5) - 704 KB:
Home page: http://www.gnu.org/software/gzip/
MD5 sum: 2a431e169b6f62f7332ef6d47cc53bae
  • Iana-Etc (2.30) - 201 KB:
Home page: http://freshmeat.net/projects/iana-etc/
MD5 sum: 3ba3afb1d1b261383d247f46cb135ee8
  • Inetutils (1.9.1) - 1,941 KB:
Home page: http://www.gnu.org/software/inetutils/
MD5 sum: 944f7196a2b3dba2d400e9088576000c
  • IPRoute2 (3.8.0) - 398 KB:
Home page: http://www.kernel.org/pub/linux/utils/net/iproute2/
MD5 sum: 951622fd770428116dc165acba375414
  • Kbd (1.15.5) - 1,690 KB:
Home page: http://ftp.altlinux.org/pub/people/legion/kbd
MD5 sum: 34c71feead8ab9c01ec638acea8cd877
  • Kmod (12) - 1,245 KB:
MD5 sum: 3d63b146c8ee5a04dfbef4be97f8226b
  • Less (451) - 303 KB:
Home page: http://www.greenwoodsoftware.com/less/
MD5 sum: 765f082658002b2b46b86af4a0da1842
  • LFS-Bootscripts (20130123) - 33 KB:
MD5 sum: 2a53fcba68e9f5ed6770c47f05987959
  • Libpipeline (1.2.2) - 733 KB:
Home page: http://libpipeline.nongnu.org/
MD5 sum: 4367a3f598d171fd43dfa8620ed16d55
  • Libtool (2.4.2) - 2,571 KB:
Home page: http://www.gnu.org/software/libtool/
MD5 sum: d2f3b7d4627e69e13514a40e72a24d50
  • Linux (3.8.1) - 69,3292 KB:
Home page: http://www.kernel.org/
MD5 sum: 093b172f907d5455a6746418ad18f5bc
Nota
O kernel Linux é atualizado com relativa frequência, muitas vezes devido a descoberta de vulnerabilidades de segurança. A última versão 3.8.x disponível deveria ser usada, a menos que a página de errata diga o contrário.
Para usuários com velocidade limitada ou largura de banda cara que queiram atualizar o kernel Linux, uma versão deste pacote e os patches podem ser baixados separadamente. Isso pode salvar algum tempo ou dinheiro para uma atualização subsequente em nível de patch de uma versão inferior.
  • M4 (1.4.16) - 1,229 KB:
Home page: http://www.gnu.org/software/m4/
MD5 sum: 8a7cef47fecab6272eb86a6be6363b2f
  • Make (3.82) - 1,213 KB:
Home page: http://www.gnu.org/software/make/
MD5 sum: 1a11100f3c63fcf5753818e59d63088f
  • Man-DB (2.6.3) - 1,356 KB:
Home page: http://www.nongnu.org/man-db/
MD5 sum: a593a095599ae97bcacf8d038659a146
  • Man-pages (3.47) - 1,108 KB:
Home page: http://www.kernel.org/doc/man-pages/
MD5 sum: 2046259794d3003f4dc4dbe4b688ba2f
  • MPC (1.0.1) - 610 KB:
Home page: http://www.multiprecision.org/
MD5 sum: b32a2e1a3daa392372fbd586d1ed3679
  • MPFR (3.1.1) - 1,047 KB:
Home page: http://www.mpfr.org/
MD5 sum: 91d51c41fcf2799e4ee7a7126fc95c17
  • Ncurses (5.9) - 2,760 KB:
Home page: http://www.gnu.org/software/ncurses/
MD5 sum: 8cb9c412e5f2d96bc6f459aa8c6282a1
  • Patch (2.7.1) - 660 KB:
Home page: http://savannah.gnu.org/projects/patch/
MD5 sum: e9ae5393426d3ad783a300a338c09b72
  • Perl (5.16.2) - 13,403 KB:
Home page: http://www.perl.org/
MD5 sum: 2818ab01672f005a4e552a713aa27b08
  • Pkg-config (0.28) - 1,892 KB:
Home page: http://www.freedesktop.org/wiki/Software/pkg-config
MD5 sum: aa3c86e67551adc3ac865160e34a2a0d
  • Procps (3.3.6) - 528 KB:
Home page: http://sourceforge.net/projects/procps-ng
MD5 sum: 0a050d9be531921db3cd38f1371e73e3
  • Psmisc (22.20) - 422 KB:
Home page: http://psmisc.sourceforge.net/
MD5 sum: a25fc99a6dc7fa7ae6e4549be80b401f
  • Readline (6.2) - 2,225 KB:
Home page: http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html
MD5 sum: 67948acb2ca081f23359d0256e9a271c
  • Sed (4.2.2) - 1,035 KB:
Home page: http://www.gnu.org/software/sed/
MD5 sum: 7ffe1c7cdc3233e1e0c4b502df253974
  • Shadow (4.1.5.1) - 2,142 KB:
Home page: http://pkg-shadow.alioth.debian.org/
MD5 sum: a00449aa439c69287b6d472191dc2247
  • Sysklogd (1.5) - 85 KB:
Home page: http://www.infodrom.org/projects/sysklogd/
MD5 sum: e053094e8103165f98ddafe828f6ae4b
  • Sysvinit (2.88dsf) - 108 KB:
Home page: http://savannah.nongnu.org/projects/sysvinit
MD5 sum: 6eda8a97b86e0a6f59dabbf25202aa6f
  • Tar (1.26) - 2,285 KB:
Home page: http://www.gnu.org/software/tar/
MD5 sum: 2cee42a2ff4f1cd4f9298eeeb2264519
  • Tcl (8.6.0) - 8,435 KB:
Home page: http://tcl.sourceforge.net/
MD5 sum: 573aa5fe678e9185ef2b3c56b24658d3
  • Time Zone Data (2012j) - 209 KB:
Home page: http://www.iana.org/time-zones
MD5 sum: ba2f92ae7ad099090e8f86cff2f2d799
  • Texinfo (5.0) - 3,000 KB:
Home page: http://www.gnu.org/software/texinfo/
MD5 sum: ef2fad34c71ddc95b20c7d6a08c0d7a6
  • Systemd (197) - 2,012 KB:
Home page: http://www.freedesktop.org/wiki/Software/systemd/
MD5 sum: 56a860dceadfafe59f40141eb5223743
  • Udev-lfs Tarball (197) - 17 KB:
MD5 sum: f4272c121514caf0c2a6245fbffeb047
  • Util-linux (2.22.2) - 3,028 KB:
Home page: http://userweb.kernel.org/~kzak/util-linux/
MD5 sum: eeacbfdd2556acd899a2d0ffdb446185
  • Vim (7.3) - 8,675 KB:
Home page: http://www.vim.org
MD5 sum: 5b9510a17074e2b37d8bb38ae09edbf2
  • Xz Utils (5.0.4) - 894 KB:
Home page: http://tukaani.org/xz
MD5 sum: 161015c4a65b1f293d31810e1df93090
  • Zlib (1.2.7) - 493 KB:
Home page: http://www.zlib.net/
MD5 sum: 2ab442d169156f34c379c968f3f482dd
Tamanho total desses pacotes: aproximadamente 915 MB.

3.3. Patches Necessários

Em adição aos pacotes, vários patches são necessários. Esses patches corrigem quaisquer erros nos pacotes que deveriam ser consertados por seus mantenedores. Os patches também fazem pequenas modificações para fazer com que os pacotes sejam mais fáceis de se trabalhar. Os seguintes patches serão necessários para construir o sistema LFS:
  • Bash Upstream Fixes Patch - 55 KB:
MD5 sum: 366672f68e7cf214bdbef2ef14b13c23
  • Binutils Test Suite Patch - 2.0 KB:
MD5 sum: cb47fae1bc572d45f4b0cff8ae8ecba8
  • Bzip2 Documentation Patch - 1.6 KB:
MD5 sum: 6a5ac7e89b791aae556de0f745916f7f
  • Coreutils Internationalization Fixes Patch - 132 KB:
MD5 sum: ada0ea6e1c00c4b7e0d634f49827943e
  • Flex Regression Tests Patch - 2.8 KB:
MD5 sum: d5b001ef9bdbbe32e2f27576d97d8ff0
  • Kbd Backspace/Delete Fix Patch - 12 KB:
MD5 sum: f75cca16a38da6caa7d52151f7136895
  • Make Upstream Fixes Patch - 10 KB:
MD5 sum: 95027ab5b53d01699845d9b7e1dc878d
  • Perl Libc Patch - 1.6 KB:
MD5 sum: daf5c64fd7311e924966842680535f8f
  • Readline Upstream Fixes Patch - 1.3 KB:
MD5 sum: 3c185f7b76001d3d0af614f6f2cd5dfa
Tamanho total desses patches: cerca de 218,3KB
Em adição aos patches requeridos acima, há uma variedade de patches criados pela comunidade LFS. Esses patches opcionais resolvem problemas menores ou habilitam funcionalidades que não são habilitadas por padrão. Sinta-se livre para examinar o banco de patches localizado no endereço http://www.linuxfromscratch.org/patches/downloads/ e obtenha quaisquer patches adicionais que sirvam às necessidades de seu sistema.

*****
Inté!!! =P

sábado, 20 de abril de 2013

Capítulo 2

Mudamos para novo endereço: http://sourceforge.net/projects/lfsptbr/

Obrigado!

********************

Mais um capítulo pronto.

No meu sistema, Kubuntu 12.04, não houve qualquer problema. Todos os comandos e verificações solicitadas pelo livro foram facilmente executadas sem quaisquer transtornos.

Até agora tudo bem.

Segue o pdf: 03_LFS_pt_BR.pdf

E o texto:

*****

Parte II – Preparação para construção do Sistema

Capítulo 2. Preparando uma nova partição

2.1. Introdução

Neste capítulo, a partição que recebe o sistema LFS é preparada. Nós criaremos a partição, o sistema de arquivos e montaremos o mesmo.

2.2. Criando uma nova Partição

Como muitos outros sistemas operacionais, LFS é geralmente instalado em uma partição dedicada. A abordagem recomendada para construir um sistema LFS é usar uma partição vazia ou, se você tem espaço suficiente em disco, criar uma nova partição.
Um sistema mínimo necessita de uma partição com cerca de 2.8 gigabytes (GB). Isso é espaço suficiente para armazenar e compilar todos os pacotes. Entretanto, se você pretende usar o sistema LFS como sistema Linux principal, mais programas provavelmente serão instalados e você precisará de mais espaço. Uma partição de 10GB é um tamanho razoável que permite crescimento do sistema. O sistema LFS em si não vai usar muito espaço. Uma boa parte desse espaço requerido é para proporcionar espaço para armazenamento temporário. A compilação de pacotes pode necessitar de muito espaço de disco que será recuperado após a instalação dos pacotes.
Devido ao fato de nem sempre haver memória RAM (Random Access Memory – Memória de acesso aleatório) suficiente para os processos de compilação, seria uma boa idéia usar uma pequena partição como swap. A partição swap para o sistema LFS pode ser a mesma usada pelo sistema anfitrião, nesse caso não seria necessário criar outra partição.
Inicie um programa de particionamento de disco como cfdisk ou fdisck com a opção em linha de comando indicando o disco rígido no qual a partição será criada – por exemplo /dev/hda para o primeiro disco IDE ( Integrated Drive Electronics).
Crie uma partição Linux nativa e uma partição swap, se necessário. Por favor, recorra ao cfdisk(8) ou fdisk(8) se você ainda não sabe como usar esses programas.
Nota
Para usuários experientes, é possível usar outros esquemas de partição. O novo sistema LFS pode ser instalado em um volume lógico LVM ou RAID. Entretanto, algumas dessas opções requerem um initramfs, o que é um tópico avançado. Esses métodos de partição não são recomendados para quem usa o LFS pela primeira vez.
Lembre-se da designação da nova partição (e.g., hda5). Este livro irá se referir a esta partição como partição LFS. Sempre-se também da designação da partição swap. Esses nomes serão necessários posteriormente para o arquivo /etc/fstab.

2.2.1. Outros assuntos relacionados a Partições

Pedidos de ajuda com relação a particionamento de disco são frequentemente enviados à lista de correio do LFS. Esse é um assunto muito subjetivo. O padrão para a maioria das distribuições é usar todo o disco, exceto uma pequena partição para swap. Isso não é ideal para o LFS por vários motivos. Isso reduz flexibilidade, faz com que o compartilhamento de dados entre múltiplas distribuições ou entre sistemas LFS seja mais difícil, faz com que backups consumam mais tempo, e podem desperdiçar espaço de disco devido à alocação indeficiente do sistema de arquivos.
2.2.1.1. A partição raiz (root partition)
Uma partição raiz no sistema LFS (não confundir partição raiz (root partition) / com /root) com 10GB é uma boa escolha para muitos sistemas. Ela disponibiliza espaço suficiente para construir o LFS e muito do BLFS, mas é pequena o suficiente para permitir que outras partições sejam criadas facilmente para experimentação.
2.2.1.2. A Partição Swap
A maioria das distribuições automaticamente cria uma partição swap. Geralmente o tamanho recomendado da swap é o dobro da memória RAM, entretanto isso raramente é necessário. Se há limitações com relação a espaço de disco, mantenha a partição swap com 2GB e monitore o a quantidade de memória swap que é consumida.
O uso da memória swap nunca é uma coisa boa. Geralmente você pode dizer se o sistema está usando a swap simplesmente prestando atenção na atividade de disco e observando como o sistema reage a comandos. A primeira reação em caso de uso da swap deve ser verificar o uso irracional de algum comando, por exemplo a tentativa de editar um arquivo de 5GB. Se o uso da memória swap se tornar uma ocorrência normal, a melhor solução é comprar mais memória RAM para seu sistema.
2.2.1.3. Partições de Conveniência
Há várias outras partições que não são necessárias, mas deveriam ser consideradas quando do design do layout do disco. A lista seguinte não é abrangente, mas serve como um guia.
  • /boot – Altamente recomendada. Use essa partição para armazenar o kernel e outras informações relacionadas ao boot. Para minimizar potenciais problemas de inicialização com discos grandes, maça dessa partição a primeira na partição física no seu primeiro disco. O tamanho de 100MB é adequado.
  • /home – Altamente recomendada. Compartilhe seu diretório de usuário (home) e personalizações entre múltiplas distribuições ou sistemas LFS. O tamanho é geralmente grande e depende do espaço de disco disponível.
  • /usr – Uma partição /usr separada é geralmente usada quando se disponibiliza um servidor para um cliente com pouca demanda ou uma estação de trabalho sem disco. Normalmente não é necessário para o LFS. O tamanho de 5GB vai servir para a maioria das instalações.
  • /opt – Esse diretório é mais útil para o BLFS onde múltiplas instalações de pacotes grandes como Gnome ou KDE podem ser instalados sem embutir os arquivos na hierarquia da pasta /usr. Se usado, 5 a 10GB geralmente é suficiente.
  • /tmp – Um diretório /tmp separado é raro, mas útil se configurando um cliente com poucos recursos. Esta partição, se usada, geralmente não precisará exceder 2GB.
  • /usr/src – Esta partição é muito útil para disponibilizar uma localização para armazenar os arquivos-fontes do BLFS e compartilhá-los entre os sistemas LFS. Também pode ser utilizado como um local para construção dos pacotes BLFS. Uma partição razoavelmente grande de 30-50GB é o suficiente.


Quaisquer partições separadas que você queira que sejam montadas durante o boot precisam ser especificadas no arquivo /etc/fstab.

2.3. Criando um Sistema de Arquivos na Partição

Agora que uma partição em branco foi construída, o sistema de arquivos pode ser criado. O sistema mais amplamente usado no mundo Linux é o “second extended file system” (ext2), mas com os novos discos de alta capacidades, sistemas de arquivos com journaling estão se tornando cada vez mais populares. O “third extended filesystem” (ext3) é um melhoramento do ext2 e é amplamente usado, apresentando capacidade de journaling e compatibilidade com os utilitários E2fsprogs. Nós criaremos um sistema de arquivos ext3. Instruções para a criação de outros sistemas de arquivos podem ser encontradas na página http://www.linuxfromscratch.org/blfs/view/svn/postlfs/filesystems.html.
Para criar um sistema de arquivos ext3 na partição LFS, execute o seguinte comando:
mke2fs -jv /dev/<xxx>
Substitua <xxx> com o nome da partição LFS (hda5 no nosso exemplo anterior).
Nota
Algumas distribuições usam algumas customizações nas suas ferramentas de ciração de sistemas de arquivos (E2fsprogs). Isso pode causar problemas quando inicializando no seu novo LFS no Capítulo 9, uma vez que essas características não serão suportadas pelo E2fsprogs instalado no LFS; você receberá uma mensagem de erro similar a “características de sistema de arquivo não suportadas, atualize seu e2fsprogs” (“unsupported filesystem features, upgrade your e2fsprogs”). Para verificar se seu sistema usa melhoramentos customizados, execute o seguinte comando:
debugfs -R feature /dev/<xxx>
Se a saída contiver características além de has_journal, ext_attr, resize_inode, dir_index, filetype, sparse_super, large_file ou needs_recovery, então seu sistema anfitrião pode ter melhoramentos customizados. Neste caso, para evitar problemas, você deveria compilar o pacote normal E2fsprogs e usar os binários resultantes para recriar o sistema de arquivos na sua partição LFS:
cd /tmp
tar -xzvf /path/to/sources/e2fsprogs-1.42.7.tar.gz
cd e2fsprogs-1.42.7
mkdir -v build
cd build
../configure
make #note que não rodamos 'make install' aqui intencionalmente!
./misc/mke2fs -jv /dev/<xxx>
cd /tmp
rm -rfv e2fsprogs-1.42.7


Se você está usando uma partição swap existem, não há necessidade de formatá-la. Se uma nova partição swap foi criada, ela deve ser inicializada com este comando:
mkswap /dev/<yyy>
Substitua <yyy> com o nome da partição swap.

2.4. Montando a Nova Partição

Agora que um sistema de arquivos foi criado, a partição precisa se tornar acessível. Para fazer isso, a partição precisa ser montada em um ponto de montagem arbitrário. Para os propósitos deste livro, assume-se que o sistema de arquivos está montado na pasta /mnt/lfs, mas cabe a você escoher o diretório.
Escolha um ponto de montagem e atribua o mesmo à variável de ambiente LFS executando:
export LFS=/mnt/lfs
A seguir, crie o ponto de montagem e monte o sistema de arquivos do LFS executando:
mkdir -pv $LFS
mount -v -t ext3 /dev/<xxx> $LFS
Substitua <xxx> com a designação da partição LFS.
Se estiver usando múltiplas partições para o LFS (e.g., uma para / e outra para /usr), monte as partições usando:
mkdir -pv $LFS
mount -v -t ext3 /dev/<xxx> $LFS
mkdir -v $LFS/usr
mount -v -t ext3 /dev/<yyy> $LFS/usr
Substitua <xxx> e <yyy> com os nomes das partições apropriados.
Assegure-se de que essa nova partição não está montada com permissões que são muito restritivas (tais como nosuid ou nodev). Execute o comando mount sem quaisquer parâmetros para ver que opções são usadas na partição LFS montada. Se as opções nosuid ou nodev, e/ou noatime estão sendo usadas, a partição deve ser remontada.
Se você estiver usando uma partição swap, assegure-se de que ela está habilitada com o comando swapon:
/sbin/swapon -v /dev/<zzz>
Substitua <zzz> com o nome da partição swap.
Agora que há um lugar estabelecido para o trabalho, é hora de baixar os pacotes.


*****

Vamos ao Capítulo 3. ;-)