Para facilitar o acompanhamento, diversas convenções são usadas ao longo do livro. Aqui estão alguns exemplos:
./configure --prefix=/usr
Essa forma de texto deveria ser digitada exatamente como mostrado, salvo indicação em contrário no texto ao redor. Também é usado para identificar referências a comandos específicos.
install-info: unknown option
`--dir-file=/mnt/lfs/usr/info/dir'
Essa forma de texto (fonte de largura fixa) mostra a saída gerada de tela, provavelmente o resultado da emissão de um comando. Também é usada para mostrar nomes de arquivos como
/boot/grub/grub.conf
Ênfase
Essa forma de texto é usada para diversos fins, mas principalmente para enfatizar pontos importantes, ou para dar exemplos do que digitar.
https://www.linuxfromscratch.org/
Essa forma de texto é usada para links externos de hipertexto para o livro, como "HowTos", locais de transferência, sítios da "web", etc.
Essa forma de texto é usada para links internos para o livro, como outra seção que descreve um pacote diferente.
cat > $LFS/etc/group << "EOF"
root:x:0:
bin:x:1:
......
EOF
Esse estilo é usado principalmente ao criar arquivos de configuração. O primeiro comando (em negrito) diz ao sistema para criar o arquivo
$LFS/etc/group
a partir do que for digitado nas linhas seguintes, até que a sequência "EOF" seja encontrada. Portanto, toda essa seção geralmente é digitada exatamente como mostrada. Lembre-se, copiar e colar é seu(a) amigo(a)!
<TEXTO SUBSTITUÍDO>
Essa forma de texto é usada para encapsular o texto que deveria ser modificado e não é para ser digitado conforme mostrado, nem copiado e colado. Os colchetes angulares não são parte do texto literal; eles são parte da substituição.
root
Essa forma de texto é usada para mostrar uma referência específica a um(a) usuário(a) ou grupo do sistema nas instruções.
Quando novos pacotes são criados, os(as) autores(as) do logiciário dependem de trabalhos anteriores. Para a finalidade de construir um pacote no BLFS, essas dependências precisam ser construídas antes que o pacote desejado possa ser compilado. Para cada pacote, os pré-requisitos estão listados em uma ou mais seções separadas: Exigidas, Recomendadas e Opcionais.
Essas dependências são o mínimo necessário para construir o pacote. Pacotes no LFS e as dependências exigidas desses pacotes exigidos estão omitidos dessa lista. Lembre-se sempre de verificar dependências aninhadas. Se uma dependência for considerada “tempo de execução”, então ela não será necessária para construir o pacote, mas somente para usá-lo depois da instalação.
Essas são dependências que os(as) editores(as) do BLFS determinaram serem importantes para fornecer recursos razoáveis para o pacote. Se uma dependência recomendada não for considerada “tempo de execução”, as instruções de instalação do pacote assumem que ela está instalada. Se não estiver instalada, as instruções possivelmente exijam modificações para acomodar o pacote ausente. Uma dependência de “tempo de execução” recomendada não precisa ser instalada antes de construir o pacote, mas precisa ser construída posteriormente para executar o pacote com capacidades razoáveis.
Essas são dependências que o pacote possivelmente use. A integração de dependências opcionais possivelmente seja automática pelo pacote, ou etapas adicionais não apresentadas pelo BLFS possivelmente sejam necessárias. Dependências opcionais são, ocasionalmente, listadas sem instruções BLFS explícitas. Nesse caso, você mesmo(a) precisa determinar como realizar a instalação.
Alguns pacotes exigem opções específicas de configuração do núcleo. O esquema geral para esses se parece com isto:
Master section ---> Subsection ---> [*] Required parameter [REQU_PAR] <*> Required parameter (not as module) [REQU_PAR_NMOD] <*/M> Required parameter (could be a module) [REQU_PAR_MOD] <M> Required parameter (as a module) [REQU_PAR_MOD_ONLY] < /*/M> Optional parameter [OPT_PAR] < /M> Optional parameter (as a module if enabled) [OPT_PAR_MOD_ONLY] [ ] Incompatible parameter [INCOMP_PAR] < > Incompatible parameter (even as module) [INCOMP_PAR_MOD]
[...] na direita fornece o nome simbólico da opção, de forma que
você pode facilmente verificar se ela está configurada no teu
arquivo config
. Observe que o arquivo
.config
contém um prefixo
CONFIG_
antes de todos os nomes
simbólicos. O significado das várias entradas é:
Seção mestre item do topo do menu Subseção item do submenu Parâmetro exigido a opção pode ou estar integrada ou não selecionada: ela precisa ser selecionada Parâmetro exigido (não como módulo) a opção pode ser integrada, um módulo ou não selecionada ("tri-state"): ela precisa ser selecionada como integrada Parâmetro exigido (poderia ser um módulo) a opção pode ser integrada, um módulo, ou não selecionada: ela precisa ser selecionada, ou como integrada ou como um módulo Parâmetro exigido (como um módulo) a opção pode ser integrada, um módulo, ou não selecionada: ela precisa ser selecionada como um módulo; selecioná-la como integrada possivelmente cause efeitos indesejados Parâmetro opcional a opção pode ser integrada, um módulo, ou não selecionada: ela possivelmente seja selecionada como um módulo ou integrada se você precisar dela para controlar o hardware ou recursos opcionais do núcleo Parâmetro opcional (como um módulo se habilitado) a opção pode ser integrada, um módulo, ou não selecionada: ela possivelmente seja selecionada como um módulo se você precisar dela para controlar o hardware ou recursos opcionais do núcleo, mas selecioná-la como integrada possivelmente cause efeitos indesejados Parâmetro incompatível a opção pode ser ou integrada ou não selecionada: ela precisa não ser selecionada Parâmetro incompatível (mesmo como módulo) a opção pode ser integrada, um módulo ou não selecionada: ela precisa não ser selecionada
Observe que, dependendo de outras seleções, os colchetes angulares (<>) no menu de configuração possivelmente apareçam como chaves ({}), se a opção não puder ser desmarcada; ou mesmo traços (-*- ou -M-), quando a escolha for imposta. O texto de ajuda descrevente da opção especifica as outras seleções das quais essa opção depende e como aquelas outras seleções são configuradas.
A letra em azul é a tecla de atalho para essa opção. Se você estiver executando make menuconfig, você pode pressionar uma tecla para percorrer rapidamente todas as opções com essa tecla como a tecla de atalho na tela.
Assim como no LFS, cada pacote no BLFS tem um tempo de construção listado em Unidades Padrão de Construção ("UPCs"). Esses tempos são relativos ao tempo que levou para construir "binutils" no LFS e são destinados a fornecer algumas dicas sobre quanto tempo levará para construir um pacote. A maioria dos tempos listados é para um processador ou núcleo para construir o pacote. Em alguns casos, compilações grandes e de longa duração testadas em sistemas de múltiplos núcleos tem tempos de "UPC" listados com comentários como '(paralelismo=4)'. Esses valores indicam que o teste foi feito usando vários núcleos. Observe que, embora isso acelere a construção em sistemas com o "hardware" apropriado, a aceleração não é linear e, até certo ponto, depende do pacote individual e do "hardware" específico usado.
Para pacotes que usam "Ninja" (ou seja, qualquer coisa que use "Meson") ou "Rust", por padrão todos os núcleos são usados; comentários semelhantes serão vistos em tais pacotes mesmo quando o tempo de construção for mínimo.
Mesmo que uma construção paralela leve mais de quinze (15) "UPCs", em certas máquinas o tempo possivelmente seja consideravelmente maior, mesmo quando a construção não usa troca. Em particular, diferentes microarquiteturas construirão alguns arquivos a diferentes velocidades relativas, e isso pode introduzir atrasos quando certos alvos do "Make" aguardam que outro arquivo seja criado. Onde uma construção grande usa muitos arquivos "C++", os processadores com Multi Camadas Simultâneas compartilharão a Unidade de Ponto Flutuante e podem levar quarenta e cinco inteiros por cento (45%) mais tempo que ao usar quatro núcleos 'principais' (medido em um Intel i7 usando o conjunto de tarefas e mantendo os outros núcleos ociosos).
Alguns pacotes não suportam construções paralelas; para esses, o comando "make" precisa especificar "-j1". Os pacotes que são conhecidos por imporem tais limites estão assim marcados no texto.