quarta-feira, 17 de abril de 2013

Prefácio

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

Obrigado!

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

Atendendo a pedidos, publico aqui o texto contido no arquivo 01_LFS_pt_BR.pdf.

*****


Prefácio


Minha jornada para aprender e entender melhor Linux começou há mais de uma década, em meados de 1998. Eu havia acabado de instalar minha primeira distribuição Linux e rapidamente fiquei intrigado com todo o conceito e filosofia por trás do Linux.
Há sempre várias maneiras de se completar uma tarefa. O mesmo pode ser dito sobre distribuições Linux. Muitas surgiram através dos anos. Algumas ainda existem, outras se transformaram em outra distribuição, e ainda há outras que ficaram relegadas à nossas memórias. Todas elas executam as tarefas de maneira diferente para se adequar às necessidades de seus respectivos públicos-alvo. Devido ao fato de haver tantas maneiras diferentes de se executar uma tarefa, eu comecei a perceber que eu não tinha que me limitar à implementação de outra pessoa. Antes de descobrir o Linux, nós simplesmente lidávamos com problemas em outros sistemas operacionais como se nós não tivéssemos escolha. A coisa era o que era, não importando se você gostasse ou não. Com Linux, o conceito de escolha começou a emergir. Se você não gostou de alguma coisa, você seria livre, até encorajado, a mudá-la.
Eu tentei várias distribuições, mas não consegui me decidir por nenhuma. Elas eram ótimas distribuições em seu próprio direito. Não era mais uma questão de certo ou errado. O problema havia se transformado em uma questão de gosto pessoal. Com todas aquelas opções disponíveis, tornou-se aparente que não haveria um único sistema que seria perfeito para mim. Então eu me propus a criar meu próprio sistema Linux que estaria totalmente em conformidade com minhas preferências pessoais.
Para realmente fazer meu próprio sistema, eu resolvi compilar tudo a partir do código fonte em vez de usar pacotes pré-compilados. Esse sistema Linux “perfeito” teria a força de vários sistemas sem suas fraquezas visíveis. A princípio, a ideia era bastante amedrontadora. Mas eu me mantive comprometido à ideia de que esse sistema poderia ser construído.
Após lidar com questões como dependências recíprocas e erros durante a compilação, eu finalmente construí um sistema Linux customizado. O sistema era totalmente operacional e perfeitamente utilizável como qualquer outro sistema Linux disponível na época. Mas era minha própria criação. Montar um sistema desses foi muito gratificante. A única coisa que poderia ser melhor seria se eu mesmo tivesse escrito cada programa. Essa foi a melhor coisa que se seguiu.
Conforme eu compartilhei meus objetivos e minhas experiências com outros membros da comunidade Linux, ficou aparente que havia um interesse firme nessas ideias. Logo ficou claro que tal sistema Linux customizado não serviria apenas para as necessidades específicas dos usuários, mas também como uma oportunidade ideal para programadores e administradores elevarem suas ( existentes ) habilidades com Linux. Como resultado desse interesse amplo, o Projeto “Linux From Scratch” nasce. ( Linux From Scratch pode ser traduzido como Linux do Zero )
Este livro Linux From Scratch é o núcleo do projeto. O livro provê a base e as instruções necessárias para você modelar e construir seu próprio sistema. Mesmo este livro disponibilizando instruções que resultarão em um sistema que funciona corretamente, você é livre para alterar as instruções para adaptá-las à suas necessidades, o que é uma importante parte deste projeto. Você permanece no controle; nós só damos uma mão para ajudá-lo a começar sua própria jornada.
Eu sinceramente espero que você divirta-se trabalhando no seu próprio Linux From Scratch e faça proveito dos benefícios de construir um sistema verdadeiramente seu.

--
Gerard Beekmans

Público-alvo

Há vários motivos que o levariam a ler este livro. Uma das questões que muitas pessoas levantam é “por que passar por todo o sofrimento de construir manualmente um sistema Linux do Zero quando você pode simplesmente baixar e instalar um sistema existente?”
Uma razão importante que justifica a existência deste projeto é ajudá-lo a aprender como um sistema Linux funciona por dentro. Construir um sistema LFS ajuda a demonstrar o que faz um sistema Linux leve, e como tudo funciona e se inter-relaciona. Uma das melhores coisas que esta experiência de aprendizado pode proporcionar é a habilidade de customizar um sistema Linux para se adaptar as suas necessidades únicas.
Outro benefício chave do LFS é permitir que você tenha mais controle sobre o sistema sem ter que confiar na implementação de outra pessoa. Com LFS, você está no assento do motorista e dita cada aspecto do sistema.
LFS permite que você crie um sistema Linux muito compacto. Quando instalando uma distribuição regular, você é frequentemente forçado a instalar vários programas que provavelmente nunca serão usados ou entendidos. Esses programas desperdiçam recursos. Você pode argumentar que com os discos rígidos e as CPUs de hoje esses recursos não são mais um ponto a ser considerado. Algumas vezes, entretanto, você é limitado por questões de espaço se não por outros pontos. Pense sobre CDs inicializáveis, pendrives e sistemas embarcados. Essas são área onde LFS pode ser benéfico.
Outra vantagem de um sistema Linux customizado é a segurança. Compilando todo o sistema a partir do código fonte, você tem o poder de auditar tudo e aplicar todos as correções (patches) de segurança que quiser. Não é mais necessário esperar que alguém compile um programa que conserte uma falha de segurança. A menos que você examine o patch e implemente-o você mesmo, não há garantia de que o novo binário foi construído corretamente nem que resolve o problema.
O objetivo do LFS é construir um sistema base completo e utilizável. Se você não se interessa em construir seu sistema Linux do Zero, você não vai se beneficiar inteiramente das informações contidas neste livro.
Há muitas outras boas razões para construir seu próprio sistema LFS para listá-las aqui neste espaço limitado. No final, educação é de longe a razão mais forte. Conforme você prossegue com sua experiência, você vai descobrir a força que a informação e o conhecimento realmente trazem.

Arquiteturas

A principal arquitetura do LFS são os processadores AMD/Intel x86 (32 bits) e x86_64 (64 bits). Entretanto as instruções disponíveis neste livro funcionam, com algumas modificações, com o processador Power PC. Para construir um sistema que utiliza uma dessas CPUs, o principal pré-requisito, em adição àqueles que estão nas próximas páginas, é uma distribuição Linux existente, como um LFS previamente instalado, Ubuntu, Red Hat/Fedora, SuSE, ou outra distribuição que esteja disponível para a arquitetura que você tem. Note também que distribuições de 32-bits também podem ser instaladas e usadas em um computador com processador AMD/Intel 64-bits.
Alguns outros fatos sobre sistemas 64-bits precisam ser adicionados aqui. Quando comparado com sistemas 32-bits, o tamanho dos executáveis é um pouco maior e são um pouco mais rápidos. Por exemplo, em um teste de construção do LFS-6.5 em um processador Core2Duo os seguintes estatísticas foram verificadas:
Architecture
Build Time
Build Size
32-bit
198.5 minutes
648 MB
64-bit
190.6 minutes
709 MB


Como você pode ver, a compilação no sistema 64-bit é apenas 4% mais rápida e 9% maior que a de 32-bit. Os ganhos de um sistema 64-bit são relativamente mínimos. Claro, se você tem mais de 4GB de RAM ou quer manipular dados que excedem 4GB, as vantagens de um sistema 64-bit são substanciais.
O padrão de 64-bit compilado que é resultante do LFS é considerando um sistema 64-bit “puro”. Ou seja, ele apenas suporta executáveis 64-bit. Construir um sistema “mult-lib” requer a compilação de muitos aplicativos duas vezes, uma para 32-bit e outra para 64-bit. Não é dado suporte direto para isso porque esse procedimento iria interferir no objetivo educacional de prover instruções necessárias para um sistema Linux base limpo. Você pode procurar o projeto “Cross Linux From Scratch” para esse tópico avançado.
Este é um último comentário sobre sistemas 64-bit. Há pacotes antigos que não podem ser compilados em um sistema 64-bit “puro” ou necessitam de instruções específicas para isso. Geralmente esses pacotes tem instruções assembly 32-bit embutidas que falham quando compiladas em um sistema 64-bit. Isso inclui alguns drivers Xorg para algumas placas de vídeo antigas na página http://xorg.freedesktop.org/releases/individual/driver/. Muitos desses problemas podem ser resolvidos, mas podem necessitar de procedimentos específicos ou patches.


LFS e Padrões

A estrutura do LFS segue os padrões Linux tão rigorosamente quanto possível. Os principais padrões são:
  • POSIX.1-2008
  • Filesystem Hierarchy Standard (FHS)
  • Linux Standar Base (LSB) Specifications


O LSB tem cinco padrões separados: Core, C++, Desktop, Runtime Languages (linguagens em tempo de execução), e Printing(impressão). Em adição aos requerimentos genéricos há os requerimentos específicos de cada arquitetura. LFS tenta ficar de acordo com as arquiteturas discutidas na sessão anterior.
Nota
Muitas pessoas não concordam com as condições do LSB. O principal propósito de definir tais condições é garantir que softwares proprietários possam ser instalados e executados propriamente em um sistema que esteja de acordo com o referido padrão. Sendo o LFS baseado em código fonte, o usuário tem total controle sobre que pacotes ele quer e muitos escolhem não instalar alguns dos pacotes especificados pelo LSB.


Criar um sistema LFS capaz de passar nos testes para certificação LSB é possível, mas não sem a adição de pacotes que transcendem o escopo do LFS. Esses pacotes adicionais tem instruções para instalação no BLFS.


Pacotes disponibilizados pelo LFS que são necessários para satisfazer as condições do LSB
LSB Core: Bash, Binutils, Coreutils, Diffutils, File, Findutils, Gawk, Grep, Gzip, M4, ManDB, Ncurses, Procps, Psmisc, Sed, Shadow, Tar, Util-linux, Zlib


LSB C++: Gcc
LSB Desktop: None
LSB Runtime Languages: Perl
LSB Printing: None
LSB Multimedia: None


Pacotes disponibilizados pelo BLFS necessários para satisfazer os requerimentos do LSB
LSB Core: At, Batch (parte do At), BC, Cpio, Ed, Fcrontab, Initd-tools, Lsb_release, PAM, Sendmail ( ou Postfix ou Exim)
LSB C++: None
LSB Desktop: ATK, Cairo, Desktop-file-utils, Freetype, Fontconfig, Glib2, GTK+2, Icon-naming-utils, Libjpeg, Libpng, Libxml2, MesaLib, Pango, Qt3, Qt4, Xorg
LSB Runtime Languages: Python
LSB Printing: CUPS
LSB Multimedia: Alsa Libraries, NSPR, NSS, OpenSSL, Java, Xdg-utils


Pacotes não suportados pelo LFS ou BLFS necessários para satisfazer os requerimentos do LSB
LSB Core: None
LSB C++: None
LSB Desktop: None
LSB Runtime Languages: None
LSB Printing: None
LSB Multimedia: None


Justificativa para os pacotes no Livro

Como dito anteriormente, o objetivo do LFS é construir um sistema em nível de base completo e funcional. Isso inclui todos os pacotes necessários para replicá-lo ao tempo que disponibiliza uma base relativamente pequena sobre a qual o usuário pode customizar um sistema mais completo baseado em suas próprias escolhas. Isso não significa que o LFS é o menor sistema possível. Vários pacotes importantes estão inclusos, mas não são estritamente necessários. A lista abaixo documenta a justificativa para cada pacote no livro.
  • Autoconf: Este pacote contém programas para produzir “shell scripts” que podem configurar automaticamente o código fonte a partir de um modelo. É geralmente necessário para reconstruir um pacote após atualizações nos procedimentos de construção do referido pacote.
  • Automake: Este pacote contém programas para gerar “Make files” a partir de um modelo. É geralmente necessário para reconstruir pacotes após atualizações no processo de construção do referido pacote.
  • Bash: Este pacote satisfaz um requerimento do LFS Core para disponibilizar uma interface Burn Shell para o sistema. Foi escolhido pelo seu uso comum e por suas capacidades que transcendem as funções básicas do shell.
  • Binutils: esse pacote contém um linker, um assembler e outras ferramentas para manipular “object files”. Os programas neste pacote são necessários para compilar a maioria dos pacotes no LFS além de muitos outros.
  • Bison: Este pacote contém a versão GNU do yacc ( Yet Another Compiler Compiler) necessário para construir vários outros programas no LFS.
  • Bzip2: Este pacote contém programas para compressão e descompressão de arquivos. É necessário para descomprimir vários pacotes no LFS.
  • Check: Este pacote contém um conjunto de ferramentas de teste para outros programas. É instalado apenas nas ferramentas temporárias.
  • Coreutils: Este pacote contém vários programas essenciais para visualização e manipulação de arquivos e diretórios. Esses pacotes são necessários para o gerenciamento de arquivos por linha de comando e para a instalação de todos os pacotes do LFS.
  • DejaGNU: Este pacote contém um sistema para testar outros programas. É instalado apenas nas ferramentas temporárias.
  • Diffutils: Este pacote contém programas que mostram as diferenças entre arquivos ou diretórios. Esses programas podem ser usados para criar patches e também são usados na construção de vários pacotes.
  • E2fsprogs: Este pacote contém os utilitários para manipular os sistemas de arquivos ext2, ext3, ext4. Esses são os sistemas mais comuns e testados que o Linux suporta.
  • Expect: Este pacote contém programas que executam scripts de diálogos com outros programas interativos. É comumente usado para testar outros pacotes. É instalado apenas nas ferramentas temporárias.
  • File: Este pacote é usado para determinar o tipo de um dado arquivo ou arquivos. Poucos pacotes precisam deles para serem construídos.
  • Findutils: Este pacote contém programas para encontrar arquivos em um sistema de arquivos. É usado em muitos scripts de construção.
  • Flex: Este pacote serve para gerar programas que reconhecem padrões em textos. É a versão GNU do programa lex (lexical analizer). É necessário para construir vários programas no LFS.
  • Gawk: Este pacote contém programas para manipular arquivos de texto. É a versão GNU do awk (Aho-Weinberg-Kernighan). É usado no script de construção de vários outros pacotes.
  • Gcc: Este pacote é o Gnu Compiler Collection. Ele contém os compiladores C e C++ assim como vários outros não construídos no LFS.
  • GDBM: Este pacote contém o GNU Database Manager Library. É usado por um outro pacote no LFS, o Man-DB.
  • Gettext: Este pacote contém utilitários e bibliotecas para internacionalização e localização de vários pacotes.
  • Glibc: Este pacote contém a biblioteca C principal. Programas Linux não funcionariam sem isso.
  • GMP: Este pacote contém bibliotecas matemáticas que contém funções úteis para aritmética de precisão arbitrária. É necessário para compilar Gcc.
  • Grep: Este pacote contém programas para procurar dentro de arquivos. Esses programas são usados pela maioria dos scripts para construção de pacotes.
  • Groff: Este pacote contém programas para processamento e formatação de texto. Uma função importante desses programas é formatar páginas de manuais (man pages).
  • GRUB: Este é o Grand Unified Boot Loader. É um dos vários gerenciadores de inicialização disponíveis, mas é o mais flexível.
  • Gzip: Este pacote contém programas para compressão e descompressão de arquivos. É necessário para descomprimir vários pacotes no LFS.
  • Iana-etc: Este pacote provê dados para serviços e protocolos de rede. É necessário para habilitar suporte a rede adequado.
  • Inetutils: Este pacote contém programas para administração básica de rede.
  • IProute2: Este pacote contém programas básicos e avançados para redes IPv4 e IPv6. Foi escolhido em detrimento de outros pelo seu suporte a IPv6.
  • Kbd: Este pacote contém arquivos com tabelas de caracteres, utilitários para teclados que não são estadunidenses (non-US keyboards) e várias fontes.
  • Kmod: Este pacote contém programas para administrar os módulos do kernel do Linux.
  • Less: Este pacote contém um visualizador de textos muito bom que permite rolar o texto para cima ou para baixo. É também usado pelo Man-DB para visualizar páginas de manuais.
  • Libpipeline: O pacote Libpipeline contém bibliotecas para manipular pipelines de sub-processos de uma maneira flexível e conveniente. É necessário para pacote Man-DB.
  • Libtool: Este pacote contém bibliotecas genéricas para suporte a scripts. Ele esconde a complexidade do uso de bibliotecas compartilhadas em uma interface consistente e portável. É necessário para as ferramentas de testes de outros pacotes do LFS.
  • Linux Kernel: Este pacote é o Sistema Operacional. É o Linux no ambiente GNU/Linux.
  • M4: Este pacote contém um processador de textos útil como ferramenta de construção para outros programas.
  • Make: Este pacote contém programas para direcionar a construção de pacotes. É necessário para quase todos os pacotes no LFS.
  • Man-DB: Este pacote contém programas para encontrar e visualizar páginas de manuais. Fui escolhido em detrimento do pacote man devido a capacidades de internacionalização superiores. Ele faz as vezes do man.
  • Man-pages: Este pacote contém o conteúdo básico das páginas de manual do Linux.
  • MPC: Este pacote contém funções para aritmética de números complexos. É necessário para Gcc.
  • MPFR: Este pacote contém funções para aritmética de funções múltiplas. É necessário para Gcc.
  • Ncurses: Este pacote contém bibliotecas para manipulação de caracteres de forma independente do terminal. É utilizado geralmente para disponibilizar controle de cursor em um sistema com menus. É necessária para vários pacotes do LFS.
  • Patch: Este pacote contém um programa para modificar ou criar arquivos aplicando um arquivo “patch” tipicamente criado pelo programa diff. É necessário para construir vários pacotes LFS.
  • Perl: Este pacote é um interpretador para a linguagem PERL. É necessário para instalação e ferramentas de teste de vários pacotes no LFS.
  • Pkg-config: Este pacote contém um programa que retorna meta-dados sobre uma biblioteca ou pacote instalado.
  • Procps-NG: Este pacote contém programas para monitorar processos. Esses programas são úteis para administradores de sistemas, e são também usados pelos scripts de inicialização do LFS.
  • Psmisc: Este pacote contém programas para mostrar informações sobre processos que estão rodando. Esses programas são úteis para administradores de sistemas.
  • Readline: Este pacote é um conjunto de bibliotecas que oferecem capacidade para edição por linha de comando e histórico. É usado pelo Bash.
  • Sed: Este pacote permite a edição de texto sem abri-lo em um editor de textos. É também necessário para a maioria dos scripts de configuração dos pacotes do LFS.
  • Shadow: Este pacote contém programas para manipulação de senhas de uma maneira segura.
  • Sysklogd: Este pacote contém programas para registro de mensagens do sistema, tais como aqueles enviadas pelo kernel ou por daemons quando um evento não-usual acontece.
  • Sysvinit: Este pacote disponibiliza o programa init, o qual é “pai” de todos os outros processos no sistema Linux.
  • Tar: Este pacote provê capacidade de empacotamento e extração de virtualmente todos os pacotes usados no LFS.
  • Tcl: Este pacote contém a Linguagem de Comando de Ferramentas (Tool Command Language) usada por muitas ferramentas de teste nos pacotes do LFS. É instalado apenas nas ferramentas temporárias.
  • Texinfo: Este pacote contém programas para leitura, escrita e conversão de páginas info. É usado nos procedimentos de instalação de vários pacotes LFS.
  • Udev: Este pacote contém programas para a criação dinâmica de nós de dispositivos (device nodes). É uma alternativa à criação de milhares de dispositivos estáticos no diretório /dev.
  • Util-linux: Este pacote contém uma variedade de aplicativos utilitários. Entre eles estão ferramentas para manipulação de sistemas de arquivos, consoles, partições e mensagens.
  • Vim: Este pacote contém um editor. Ele foi escolhido por sua compatibilidade com o clássico editor vi e o número gigante de habilidades poderosas. Um editor é uma escolha muito pessoal para muitos usuários e um outro editor poderia ser substituído se assim desejar.
  • XZ Utils: Este pacote contém programas para compressão e descompressão de arquivos. Ele tem a maior taxa de compressão geralmente disponível e é útil para descomprimir pacotes nos formatos XZ ou LZMA.
  • Zlib: Este pacote contém rotinas para compressão e descompressão usadas por alguns programas.


Pré-requisitos

Construir um sistema LFS não é uma tarefa simples. Esta tarefa requer um certo nível de conhecimento de administração de sistemas Unix para resolver problemas e executar as linhas de comandos listadas corretamente. Em particular, no mínimo, você deveria ter a habilidade de usar linha de comando (shell) para copiar ou mover arquivos e diretórios, listar diretórios e conteúdos de arquivos, e navegar entre os diretórios. Também é de se esperar que você tenha um conhecimento razoável sobre como usar e instalar software no Linux.
Devido ao fato do livro LFS assumir que você tem no mínimo esse nível básico de habilidades, os vários fóruns de suporte do LFS não serão adequados para ajudá-lo nessas áreas. Você vai perceber que suas perguntas com relação a esse conhecimento básico não serão respondidas ou serão remetidas à lista de itens essenciais de pré-leitura.
Antes de construir um sistema LFS nós recomendamos a leitura dos seguintes HOWTOs:


Exigências de Sistema

O seu sistema deve ter os seguintes programas com as versões mínimas indicadas. Esse não deve ser um problema para a maioria das distribuições Linux modernas. Note também que muitas distribuições colocarão os cabeçalhos dos programas em pacotes separados, frequentemente na forma “<nome do pacote>-devel” ou “<nome do pacote>-dev”. Certifique-se de instalar tais pacotes se sua distribuição os fornece.
Versões anteriores dos programas listados podem funcionar, mas não foram testadas.
  • Bash-3.2 (/bin/sh deve ser um link simbólico ou um hard link para o bash)
  • Binutils-2.17 (versões superiores a 2.23.1 não são recomendadas porque não foram testadas)
  • Bison-2.3 (/usr/bin/yacc deve ser um link para bison ou um pequeno script que o executa)
  • Bzip2-1.0.4
  • Coreutils-6.9
  • Diffutils-2.8.1
  • Findutils-4.2.31
  • Gawk-3.1.5(/usr/bin/awk deve ser um link para gawk)
  • Gcc-4.1.2 (Versões superiores a 4.7.2 não são recomendadas porque não foram testadas)
  • Glibc-2.5.1(Versões superiores a 2.17 não são recomendadas porque não foram testadas)
  • Grep-2.5.1a
  • Gzip-1.13.12
  • Linux Kernel-2.6.25 (sendo compilado com GCC-4.1.2 ou superior)


A razão para o requisito da versão do kernel é que esta versão deve ser especificada quando compilando glibc no Capítulo 6 nas recomendações dos desenvolvedores. É também necessária para o udev.
Se o kernel do sistema anfitrião é mais antigo que 2.6.25, ou não foi compilado com GCC-4.1.2 (ou superior), você vai precisar substituir o kernel por um que esteja de acordo com as especificações. Há dois caminhos a serem seguidos nessa situação. Primeiro, veja se seu fornecedor Linux disponibiliza pacotes de kernel 2.6.25 ou posteriores. Caso sim, então instale. Se o seu fornecedor não disponibiliza um pacote de kernel aceitável, ou você prefere não instalar, você pode compilar um kernel. Instruções para compilação do kernel e configuração do boot loader (considerando que o sistema anfitrião usa o GRUB) estão localizadas no Capítulo 8.
  • M4-1.4.10
  • Make-3.81
  • Patch-2.5.4
  • Perl-5.8.8
  • Sed-4.1.5
  • Tar-1.18
  • Texinfo-4.9
  • Xz-5.0.0


Note que os links simbólicos (symlink) mencionados acima são necessários para construir um sistema LFS usando as instruções contidas neste livro. Symlinks que apontam para outros programas (como dash, mawk, etc.) podem funcionar, mas não foram testados ou não receberam suporte da equipe de desenvolvimento do LFS, e podem necessitar tanto de instruções adicionais ou patches para outros pacotes.
Para ver se seu sistema anfitrião tem todas as versões apropriadas, e a capacidade de compilar programas, execute o seguinte código:


cat > version-check.sh << "EOF"
#!/bin/bash
#Script simples para listar o numero de versao das ferramentas de desenvolvimento criticas
export LC_ALL=C
bash --version | head -n1 | cut -d" " -f2-4
echo "/bin/sh -> `readlink -f /bin/sh`"
echo -n "Binutils: "; ld --version | head -n1 | cut -d" " -f3-
bison --version | head -n1
if [ -e /usr/bin/yacc ];
then echo "/usr/bin/yacc -> `readlink -f /usr/bin/yacc`";
else echo "yacc not found"; fi
bzip2 --version 2>&1 < /dev/null | head -n1 | cut -d" " -f1,6-
echo -n "Coreutils: "; chown --version | head -n1 | cut -d")" -f2
diff --version | head -n1
find --version | head -n1
gawk --version | head -n1
if [ -e /usr/bin/awk ];
then echo "/usr/bin/awk -> `readlink -f /usr/bin/awk`";
else echo "awk not found"; fi
gcc --version | head -n1
ldd --version | head -n1 | cut -d" " -f2- # glibc version
grep --version | head -n1
gzip --version | head -n1
cat /proc/version
m4 --version | head -n1
make --version | head -n1
patch --version | head -n1
echo Perl `perl -V:version`
sed --version | head -n1
tar --version | head -n1
echo "Texinfo: `makeinfo --version | head -n1`"
xz --version | head -n1
echo 'main(){}' > dummy.c && gcc -o dummy dummy.c
if [ -x dummy ]
then echo "gcc compilation OK";
else echo "gcc compilation failed"; fi
rm -f dummy.c dummy
EOF
bash version-check.sh


Tipografia

Para fazer as coisas mas fáceis de serem seguidas, há algumas convenções tipográficas usadas neste livro. Esta sessão contém alguns exemplos da formatação tipográfica encontrada neste livro.
./configure –prefix=/usr
Esta forma de texto deve ser digitada do jeito que está, a menos que seja dito o contrário no texto. É também usada na sessão de explicação para identificar quais dos comandos estão sendo referenciados.
Em alguns casos, uma linha lógica é estendida em duas ou mais linhas físicas com uma barra invertida no final da linha.
CC="gcc -B/usr/bin/" ../binutils-2.18/configure \
--prefix=/tools --disable-nls --disable-werror
Note que a barra invertida deve ser seguida imediatamente por uma quebra de linha. Outros espaços em branco como tabulação criarão resultados incorretos.
install-info: unknown option '--dir-file=/mnt/lfs/usr/info/dir'
Esta forma de texto ( largura fixa) mostra a saída da tela, geralmente como resultado de um comando executado. Esse formato é também utilizado para mostrar nomes de arquivos, como /etc/ld.so.conf.
Ênfase
Esta forma de texto é usada para vários propósitos neste livro. Seu propósito principal é enfatizar pontos ou itens importantes.
Esta formatação é usada para hiperlinks tanto dentro da comunidade LFS quanto em páginas externas. Isso inclui HOWTOs, localizações de downloads e páginas da internet.
cat > $LFS/etc/group << "EOF"
root:x:0:
bin:x:1:
......
EOF
Esse formato é usado quando arquivos de configuração são criados. O primeiro comando diz para o sistema criar o arquivo $LFS/etc/group a partir do que quer que seja digitado nas linhas seguintes até encontrar a sequência “End Of File” (EOF). Portanto, toda essa sequência é geralmente digitada da maneira como é vista.
<TEXTO SUBSTITUÍDO>
Este formato é usado para encapsular texto que não deve ser digitado como visto ou para operações de “copiar-colar”.
[TEXTO OPCIONAL]
Este formato é usado para encapsular texto que é opcional.
passwd(5)
Este formato é usado para referir-se a uma página de manual específica (man). O número entre parênteses indica uma seção específica dentro do manual. Por exemplo, passwd tem duas páginas de manual. Conforme as instruções de instalação do LFS, essas duas páginas estarão localizadas em /usr/share/man/man1/passwd.1 e /usr/share/man/man5/passwd.5. Quando o livro usa passwd(5) ele está se referindo especificamente a /usr/share/man/man5/passwd.5. man passwd irá exibir a primeira página de manual que corresponde a “passwd”, a qual será /usr/share/man/man1/passwd.1. Para este exemplo em particular, você precisará executar o comando man 5 passwd para ler a página especifica que está sendo referenciada. Deve-se notar que a maioria das páginas de manual não possuem nomes de páginas duplicados em diferentes seções. Portanto, man <nome do programa> geralmente é suficiente.


Estrutura

Este livro é dividido nas seguintes partes.

Parte I – Introdução

Parte I explica algumas notas importantes sobre como proceder com a instalação do LFS. Essa seção também fornece meta-informação sobre o livro.

Parte II – Preparando para Construção

Parte II descreve como se preparar para o processo de construção – fazendo uma partição, baixando os pacotes, e compilando as ferramentas temporárias.

Parte II – Construindo o Sistema LFS

Parte III guia o leitor pela construção do sistema LFS – compilando e instalando todos os pacotes, um por um, configurando o script de inicialização e instalando o kernel. O sistema Linux resultante é a base sobre a qual outros programas podem ser construídos para expandir o sistema conforme desejado. No final deste livro, há uma lista de referência de fácil uso com todos os programas, bibliotecas e arquivos importantes que foram instalados.

Errata

Os programas utilizados para criar o LFS estão sendo constantemente atualizados e melhorados. Avisos de segurança e correções de erros podem ser disponibilizados após a liberação do livro LFS. Para checar se versões de pacotes ou instruções nesta versão do LFS necessitam de modificações para acomodar vulnerabilidades ou corrigir erros, por favor visite http://www.linuxfromscratch.org/lfs/errata/7.3/ antes de continuar com a construção do sistema. Você deve tomar nota de quaisquer mudanças e aplicá-las à seção relevante do livro conforme você constrói o sistema LFS.

***** 

Nenhum comentário:

Postar um comentário