Esta versão do LFS usa um aparato especial de inicialização chamado SysVinit, baseado em uma série de níveis de execução. O procedimento de inicialização pode ser bem diferente de um sistema para outro; o fato de que as coisas funcionam de uma maneira em uma distribuição específica do Linux não garante que elas funcionarão da mesma forma no LFS. O LFS tem a própria maneira de fazer as coisas, mas ele respeita os padrões geralmente aceitos.
Existe um procedimento alternativo de inicialização chamado systemd. Nós não mais discutiremos esse processo de inicialização aqui. Para uma descrição detalhada, visite-se https://www.linux.com/training-tutorials/understanding-and-using-systemd/.
SysVinit (o qual será referido como “init” daqui pra frente) usa um esquema de níveis de execução. Existem sete níveis de execução, numerados de 0 a 6. (Atualmente, existem mais níveis de execução, mas os outros são para casos especiais e geralmente não são usados. Veja-se init(8) para mais detalhes). Cada um dos sete corresponde às ações que o computador é suposto realizar quando ele inicia ou desliga. O nível de execução padrão é o 3. Aqui estão as descrições dos diferentes níveis de execução conforme eles estão implementados no LFS:
0: parar o computador
1: Modo de usuário(a) único(a)
2: Reservado para personalização, do contrário faz o mesmo que 3
3: Modo de multiusuário(a), com rede de comunicação
4: Reservado para personalização, do contrário faz o mesmo que 3
5: Mesmo que 4, ele é usado usualmente para login GUI (como o gdm do GNOME ou o lxdm do LXDE)
6: reinicializar o computador
Classicamente, o nível de execução 2 acima era definido como “modo de multiusuário(a), sem rede de comunicação”, porém isso somente foi o caso muitos anos atrás quando múltiplos(as) usuários(as) podiam se conectar a um sistema via portas seriais. No ambiente da atualidade isso não faz sentido e agora nós dizemos que ele está “reservado”.
Durante a inicialização do núcleo, o primeiro aplicativo que é
executado (se não substituído na linha de comando) é o init. Esse aplicativo lê o
arquivo de inicialização /etc/inittab
. Crie esse arquivo com:
cat > /etc/inittab << "EOF"
# Inicia /etc/inittab
id:3:initdefault:
si::sysinit:/etc/rc.d/init.d/rc S
l0:0:wait:/etc/rc.d/init.d/rc 0
l1:S1:wait:/etc/rc.d/init.d/rc 1
l2:2:wait:/etc/rc.d/init.d/rc 2
l3:3:wait:/etc/rc.d/init.d/rc 3
l4:4:wait:/etc/rc.d/init.d/rc 4
l5:5:wait:/etc/rc.d/init.d/rc 5
l6:6:wait:/etc/rc.d/init.d/rc 6
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
su:S06:once:/sbin/sulogin
s1:1:respawn:/sbin/sulogin
1:2345:respawn:/sbin/agetty --noclear tty1 9600
2:2345:respawn:/sbin/agetty tty2 9600
3:2345:respawn:/sbin/agetty tty3 9600
4:2345:respawn:/sbin/agetty tty4 9600
5:2345:respawn:/sbin/agetty tty5 9600
6:2345:respawn:/sbin/agetty tty6 9600
# Termina /etc/inittab
EOF
Uma explicação desse arquivo de inicialização está na página de
manual para inittab. No LFS,
o comando chave é rc.
O arquivo de inicialização acima instrui rc a executar todos os conjuntos
de comandos sequenciais começando com um S no diretório
/etc/rc.d/rcS.d
seguido por todos os
conjuntos de comandos sequenciais começando com um S no diretório
/etc/rc.d/rc?.d
onde o ponto de
interrogação é especificado pelo valor de initdefault.
Como uma conveniência, o conjunto de comando sequenciais
rc lê uma biblioteca
de funções em /lib/lsb/init-functions
. Essa biblioteca também
lê um arquivo de configuração opcional, /etc/sysconfig/rc.site
. Quaisquer dos parâmetros
de configuração do sistema descritos em seções subsequentes podem
ser colocados nesse arquivo, permitindo a consolidação de todos os
parâmetros do sistema nesse único arquivo.
Como uma conveniência de depuração, o conjunto de comandos
sequenciais de funções também registra todas as saídas geradas em
/run/var/bootlog
. Dado que o
diretório /run
é um tmpfs, esse
arquivo não é persistente ao longo de inicializações; entretanto,
ele é adicionado ao arquivo mais permanente /var/log/boot.log
ao final do processo de
inicialização.
A mudança de níveis de execução é feita com init <nível de
execução>
, onde <nível de execução>
é o
nível de execução alvo. Por exemplo, para reinicializar o
computador, um(a) usuário(a) poderia emitir o comando
init 6, o qual é um
apelido para o comando reboot. Da mesma forma,
init 0 é um apelido
para o comando halt.
Existe um número de diretórios sob /etc/rc.d
que se parecem com rc?.d
(onde ? é o número do nível de execução)
e rcS.d
, todos contendo um número
de links simbólicos. Alguns links começam com um K; os outros começam com um
S, e todos eles tem dois
números seguindo a letra inicial. O K significa parar (kill) um
serviço e o S significa iniciar um serviço. Os números determinam
a ordem na qual os conjuntos de comandos sequenciais são
executados, de 00 a 99—quanto menor o número, mais cedo o
conjunto de comandos sequenciais executa. Quando init comuta para outro nível de
execução, os serviços adequados são tanto iniciados quanto
parados, dependendo do nível de execução escolhido.
Os conjuntos reais de comandos sequenciais estão em /etc/rc.d/init.d
. Eles fazem o trabalho atual e
os links simbólicos todos apontam para eles. Os links K e os
links S apontam para o mesmo conjunto de comandos sequenciais em
/etc/rc.d/init.d
. Isso é porque os
conjuntos de comandos sequenciais podem ser chamados com
parâmetros diferentes como start
, stop
, restart
, reload
e status
. Quando um link K é
encontrado, o conjunto de comandos sequenciais apropriado é
executado com o argumento stop
. Quando um link S é
encontrado, o conjunto de comandos sequenciais apropriado é
executado com o argumento start
.
Estas são descrições do que os argumentos fazem os conjuntos de comandos sequenciais fazer:
start
O serviço é iniciado.
stop
O serviço é parado.
restart
O serviço é parado e então iniciado novamente.
reload
A configuração do serviço é atualizada. Isso é usado depois que o arquivo de configuração de um serviço foi modificado, quando o serviço não precisa ser reiniciado.
status
Diz se o serviço está executando e com quais PIDs.
Sinta-se livre para modificar a maneira como o processo de inicialização funciona (afinal de contas, este é seu próprio sistema LFS). Os arquivos dados aqui são um exemplo de como isso pode ser feito.
O conjunto de comandos sequenciais de iniciação /etc/rc.d/init.d/udev
inicia o udevd, aciona quaisquer
dispositivos "plugue frio" que já tenham sido criados pelo núcleo e
aguarda por quaisquer regras para completar. O conjunto de comandos
sequenciais também desconfigura o manuseador do uevent oriundo do
padrão do /sbin/hotplug
. Isso é
feito, pois o núcleo não mais precisa chamar um binário externo. Em
vez disso, o udevd
escutará em um soquete de link de rede os uevents que o núcleo
gera.
O conjunto de comandos sequenciais /etc/rc.d/init.d/udev_retry se
ocupa de redeflagrar eventos para subsistemas cujas regras
possivelmente dependam de sistemas de arquivos que não estão
montados até que o conjunto de comandos sequenciais mountfs seja executado (em
particular, /usr
e /var
possivelmente causem isso). Esse conjunto de
comandos sequenciais executa depois do conjunto de comandos
sequenciais mountfs,
de forma que aquelas regras (se redeflagradas) deveriam prosperar
na segunda vez. Ele é configurado pelo arquivo /etc/sysconfig/udev_retry
; quaisquer palavras
nesse arquivo outras que comentários são consideradas nomes de
subsistema para acionar ao tempo de retentativa. Para encontrar o
subsistema de um dispositivo, use udevadm info --attribute-walk
<dispositivo>, onde <dispositivo> é um
caminho absoluto em /dev ou /sys, tais como /dev/sr0 ou
/sys/class/rtc.
Para informação acerca de carregamento de módulo do núcleo e udev, veja-se Seção 9.3.2.3, “Carregamento de Módulo.”
O conjunto de comandos sequenciais setclock lê a hora a partir do
relógio do hardware, também conhecido como relógio do BIOS ou do
Complementary Metal Oxide Semiconductor (CMOS). Se o relógio do
hardware estiver configurado para UTC, esse conjunto de comandos
sequenciais converterá a hora do relógio do hardware para a hora
local usando o arquivo /etc/localtime
(o qual diz ao aplicativo hwclock qual fuso horário usar).
Não existe maneira de detectar se o relógio do hardware está ou não
configurado para UTC, de forma que isso precisa ser configurado
manualmente.
O programa setclock é executado via udev quando o núcleo detecta o recurso do hardware em consequência da inicialização. Ele também pode ser executado manualmente com o parâmetro pare para armazenar a hora do sistema para o relógio do CMOS.
Se você não conseguir lembrar se o relógio do hardware está ou não
configurado para UTC, descubra executando o comando hwclock --localtime --show
. Isso
mostrará o que é a hora atual de acordo com o relógio do hardware.
Se essa hora corresponder à que o seu relógio diz, então o relógio
do hardware está configurado para hora local. Se a saída gerada
originária do hwclock
não for a hora local, as chances são as de que ele esteja
configurado para hora UTC. Verifique isso adicionando ou subtraindo
a número apropriado de horas para o seu fuso horário à (da) hora
mostrada pelo hwclock. Por exemplo, se você
estiver atualmente no fuso horário MST, o qual é conhecido também
como GMT -0700, adicione sete horas à hora local.
Mude o valor da variável UTC
abaixo para
um valor de 0
(zero) se o
relógio do hardware NÃO
estiver configurado para hora UTC.
Crie um novo arquivo /etc/sysconfig/clock
executando o seguinte:
cat > /etc/sysconfig/clock << "EOF"
# Inicia /etc/sysconfig/clock
UTC=1
# Configure isto para quaisquer opções que você pudesse precisar dar para hwclock,
# tais como tipo do relógio de hardware de máquina para Alphas.
CLOCKPARAMS=
# Termina /etc/sysconfig/clock
EOF
Uma boa dica explicando como lidar com hora no LFS está disponível
em https://www.linuxfromscratch.org/hints/downloads/files/time.txt.
Ela explica problemas como fusos horários, UTC e a variável de
ambiente TZ
.
Os parâmetros CLOCKPARAMS e UTC também possivelmente sejam
configurados no arquivo /etc/sysconfig/rc.site
.
Esta seção discute como configurar o conjunto de comandos
sequenciais de inicialização console que configura o mapa de
teclado, fonte do console e nível de registro do núcleo do console.
Se caracteres não-ASCII (por exemplo, o sinal de direitos autorais,
o sinal da libra britânica e o símbolo do Euro) não serão usados e
o teclado for um dos Estados Unidos da América do Norte, muito
desta seção pode ser pulada. Sem o arquivo de configuração, (ou
configurações equivalentes em rc.site
), o conjunto de comandos sequenciais de
inicialização console
não fará nada.
O conjunto de comandos sequenciais console lê o arquivo /etc/sysconfig/console
para informação de
configuração. Decida qual mapa de teclas e fonte de tela serão
usados. Vários HOWTOs específicos de idiomas também podem ajudar
com isso; veja-se https://tldp.org/HOWTO/HOWTO-INDEX/other-lang.html.
Se ainda em dúvida, olhe nos diretórios /usr/share/keymaps
e /usr/share/consolefonts
para mapas de teclas
válidos e fontes de tela. Leiam-se as páginas de manual loadkeys(1) e
setfont(8) para
determinar os argumentos corretos para esses aplicativos.
O arquivo /etc/sysconfig/console
deveria conter linhas da forma: VARIÁVEL=valor
. As seguintes variáveis são
reconhecidas:
Essa variável especifica o nível de registro para mensagens
do núcleo enviadas para o console, conforme configurado por
dmesg -n.
Níveis válidos são de 1
(sem
mensagens) até 8
. O nível padrão
é 7
, que é bastante verboso.
Essa variável especifica os argumentos para o programa
loadkeys,
tipicamente, o nome do mapa de teclas a carregar, por
exemplo, it
. Se essa variável
não estiver configurada, o conjunto de comandos sequenciais
de inicialização não executará o programa loadkeys e o mapa padrão de
teclas do núcleo será usado. Observe que uns poucos mapas de
teclas tem múltiplas versões com o mesmo nome (cz e variantes
dele em qwerty/ e qwertz/; es em olpc/ e qwerty/; e trf em
fgGIod/ e qwerty/). Nesses casos, o diretório ancestral
também deveria ser especificado (por exemplo, qwerty/es) para
garantir que o mapa de teclas adequado seja carregado.
Essa (raramente usada) variável especifica os argumentos para
a segunda chamada ao programa loadkeys. Isso é útil se o
mapa padrão de teclas não for completamente satisfatório e um
pequeno ajuste tenha que ser feito. Por exemplo, para incluir
o símbolo do Euro em um mapa de teclas que normalmente não o
tem, configure essa variável para euro2
.
Essa variável especifica os argumentos para o programa
setfont.
Tipicamente, isso inclui o nome da fonte, -m
, e o nome do mapa de caracteres de
aplicação a carregar. Por exemplo, para a finalidade de
carregar a fonte “lat1-16” juntamente com o mapa de
caracteres de aplicação “8859-1” (apropriado nos Estados Unidos
da América do Norte), configure essa variável para
lat1-16 -m 8859-1
. Em modo
UTF-8, o núcleo usa o mapa de caracteres de aplicação para
converter os códigos de tecla de 8 bits para UTF-8. Dessa
maneira, o argumento do parâmetro -m deveria ser configurado
para a codificação dos códigos compostos de tecla no mapa de
teclas.
Configure essa variável para 1
,
yes
ou true
para a finalidade de colocar o console
em modo UTF-8. Isso é útil em localidades baseadas em UTF-8 e
danoso em outras.
Para muitos esquemas de teclado, não existe mapa padrão de teclado Unicode no pacote Kbd. O conjunto de comandos sequenciais de inicialização console converterá um mapa de teclas disponível para UTF-8 em tempo real se essa variável estiver configurada para a codificação do mapa disponível de teclas não-UTF-8.
Alguns exemplos:
Usaremos C.UTF-8
como localidade
para sessões interativas no console do Linux na Seção 9.7,
“Configurando a Localidade do Sistema,” de forma que
deveríamos configurar UNICODE
para 1
. E as fontes do console
enviadas pelo pacote Kbd
contendo os glifos para todos os caracteres provenientes das
mensagens do aplicativo na localidade C.UTF-8
são LatArCyrHeb*.psfu. gz
, LatGrkCyr*.psfu.gz
, Lat2-Terminus16.psfu.gz
e pancyrillic.f16.psfu.gz
em /usr/share/consolefonts
(as outras fontes
de console fornecidas carecem de glifos de alguns caracteres,
como as aspas esquerda/direita do Unicode e o travessão do
Unicode em inglês). Portanto, configure uma delas, por
exemplo Lat2-Terminus16.psfu.gz
como fonte padrão do console:
cat > /etc/sysconfig/console << "EOF"
# Inicia /etc/sysconfig/console
UNICODE="1"
FONT="Lat2-Terminus16"
# Termina /etc/sysconfig/console
EOF
Para uma configuração não Unicode, somente as variáveis KEYMAP e FONT geralmente são necessárias. Por exemplo, para uma configuração em polonês, alguém usaria:
cat > /etc/sysconfig/console << "EOF"
# Inicia /etc/sysconfig/console
KEYMAP="pl2"
FONT="lat2a-16 -m 8859-2"
# Termina /etc/sysconfig/console
EOF
Como mencionado acima, às vezes é necessário ajustar um mapa padrão de teclas um pouco. O exemplo seguinte adiciona o símbolo do Euro ao mapa de teclas alemão:
cat > /etc/sysconfig/console << "EOF"
# Inicia /etc/sysconfig/console
KEYMAP="de-latin1"
KEYMAP_CORRECTIONS="euro2"
FONT="lat0-16 -m 8859-15"
UNICODE="1"
# Termina /etc/sysconfig/console
EOF
O seguinte é um exemplo habilitado para Unicode para búlgaro, onde um mapa padrão de teclas UTF-8 existe:
cat > /etc/sysconfig/console << "EOF"
# Inicia /etc/sysconfig/console
UNICODE="1"
KEYMAP="bg_bds-utf8"
FONT="LatArCyrHeb-16"
# Termina /etc/sysconfig/console
EOF
Devido ao uso de uma fonte LatArCyrHeb-16 de 512 glifos no exemplo anterior, cores brilhantes não mais estão disponíveis no console do Linux, a menos que um framebuffer seja usado. Se alguém quiser ter cores brilhantes sem um framebuffer e puder viver sem caracteres não pertencentes ao idioma dele(a), ainda é possível usar uma fonte de 256 glifos específica para o idioma, conforme ilustrado abaixo:
cat > /etc/sysconfig/console << "EOF"
# Inicia /etc/sysconfig/console
UNICODE="1"
KEYMAP="bg_bds-utf8"
FONT="cyr-sun16"
# Termina /etc/sysconfig/console
EOF
O seguinte exemplo ilustra conversão automática de mapa de teclas de ISO-8859-15 para UTF-8 e habilitação de teclas mortas em modo Unicode:
cat > /etc/sysconfig/console << "EOF"
# Inicia /etc/sysconfig/console
UNICODE="1"
KEYMAP="de-latin1"
KEYMAP_CORRECTIONS="euro2"
LEGACY_CHARSET="iso-8859-15"
FONT="LatArCyrHeb-16 -m 8859-15"
# Termina /etc/sysconfig/console
EOF
Alguns mapas de teclas tem teclas mortas (isto é, teclas que não produzem um carácter por elas próprias, mas põem um acento no carácter produzido pela próxima tecla) ou definem regras de composição (tais como: “pressione Ctrl+. A E para obter Æ” no mapa de teclas padrão). O Linux-6.13.4 interpreta teclas mortas e regras de composição no mapa de teclas corretamente somente quando os caracteres fonte a serem compostos juntos não são multi byte. Essa deficiência não afeta mapas de teclas para idiomas europeus, pois lá acentos são adicionados a caracteres ASCII não acentuados, ou dois caracteres ASCII são compostos juntos. Entretanto, em modo UTF-8 isso é um problema; por exemplo, para o idioma grego, onde alguém de vez em quando precisa colocar um acento na letra α. A solução é a de, ou evitar o uso de UTF-8, ou instalar o sistema de janelas X, que não tem essa limitação no manuseio de entradas geradas dele.
Para chinês, japonês, coreano e alguns outros idiomas, o console do Linux não pode ser configurado para exibir os caracteres necessários. Usuários(as) que precisam de tais idiomas deveriam instalar o Sistema de Janelas X, fontes que cobrem os intervalos necessários de caracteres, e o método de entrada adequado (por exemplo, SCIM, suporta uma ampla variedade de idiomas).
O arquivo /etc/sysconfig/console
somente controla a localização do console de texto do Linux. Ele
não tem nada a ver com configurar o esquema adequado de teclado e
fontes de terminal no Sistema de Janelas X; com sessões do ssh;
ou com um console serial. Em tais situações, as limitações
mencionadas nos últimos dois itens de lista acima não se aplicam.
De vez em quando, é desejável criar arquivos em tempo de
inicialização. Por exemplo, o diretório /tmp/.ICE-unix
frequentemente é necessário. Isso
pode ser feito criando-se uma entrada no conjunto de comandos
sequenciais de configuração /etc/sysconfig/createfiles
. O formato desse
arquivo está embutido nos comentários do arquivo padrão de
configuração.
O conjunto de comandos sequenciais sysklogd
invoca o aplicativo syslogd como uma parte da
inicialização do System V. A opção -m
0
desliga a marca periódica de carimbo de tempo que o
syslogd escreve nos
arquivos de registro a cada 20 minutos por padrão. Se você quiser
ligar essa marca periódica de carimbo de tempo, edite /etc/sysconfig/rc.site
e defina a variável
SYSKLOGD_PARMS para o valor desejado. Por exemplo, para remover
todos os parâmetros, configure a variável para um valor nulo:
SYSKLOGD_PARMS=
Veja-se man syslogd
para mais opções.
O arquivo opcional /etc/sysconfig/rc.site
contém configurações que
são automaticamente configuradas para cada conjunto de comandos
sequenciais de inicialização do SystemV. Ele pode alternativamente
configurar os valores especificados nos arquivos hostname
, console
e
clock
no diretório /etc/sysconfig/
. Se as variáveis associadas
estiverem presentes em ambos desses arquivos separados e
rc.site
, os valores nos arquivos
específicos de conjunto de comandos sequenciais tem precedência.
rc.site
também contém parâmetros que
podem personalizar outros aspectos do processo de inicialização.
Configurar a variável IPROMPT habilitará a execução seletiva de
conjuntos de comandos sequenciais de inicialização. Outras opções
estão descritas nos comentários de arquivo. A versão padrão do
arquivo é como se segue:
# rc.site # Optional parameters for boot scripts. # Distro Information # These values, if specified here, override the defaults #DISTRO="Linux From Scratch" # The distro name #DISTRO_CONTACT="lfs-dev@lists.linuxfromscratch.org" # Bug report address #DISTRO_MINI="LFS" # Short name used in filenames for distro config # Define custom colors used in messages printed to the screen # Please consult `man console_codes` for more information # under the "ECMA-48 Set Graphics Rendition" section # # Warning: when switching from a 8bit to a 9bit font, # the linux console will reinterpret the bold (1;) to # the top 256 glyphs of the 9bit font. This does # not affect framebuffer consoles # These values, if specified here, override the defaults #BRACKET="\\033[1;34m" # Blue #FAILURE="\\033[1;31m" # Red #INFO="\\033[1;36m" # Cyan #NORMAL="\\033[0;39m" # Grey #SUCCESS="\\033[1;32m" # Green #WARNING="\\033[1;33m" # Yellow # Use a colored prefix # These values, if specified here, override the defaults #BMPREFIX=" " #SUCCESS_PREFIX="${SUCCESS} * ${NORMAL} " #FAILURE_PREFIX="${FAILURE}*****${NORMAL} " #WARNING_PREFIX="${WARNING} *** ${NORMAL} " # Manually set the right edge of message output (characters) # Useful when resetting console font during boot to override # automatic screen width detection #COLUMNS=120 # Interactive startup #IPROMPT="yes" # Whether to display the interactive boot prompt #itime="3" # The amount of time (in seconds) to display the prompt # The total length of the distro welcome string, without escape codes #wlen=$(echo "Welcome to ${DISTRO}" | wc -c ) #welcome_message="Welcome to ${INFO}${DISTRO}${NORMAL}" # The total length of the interactive string, without escape codes #ilen=$(echo "Press 'I' to enter interactive startup" | wc -c ) #i_message="Press '${FAILURE}I${NORMAL}' to enter interactive startup" # Set scripts to skip the file system check on reboot #FASTBOOT=yes # Skip reading from the console #HEADLESS=yes # Write out fsck progress if yes #VERBOSE_FSCK=no # Speed up boot without waiting for settle in udev #OMIT_UDEV_SETTLE=y # Speed up boot without waiting for settle in udev_retry #OMIT_UDEV_RETRY_SETTLE=yes # Skip cleaning /tmp if yes #SKIPTMPCLEAN=no # For setclock #UTC=1 #CLOCKPARAMS= # For consolelog (Note that the default, 7=debug, is noisy) #LOGLEVEL=7 # For network #HOSTNAME=mylfs # Delay between TERM and KILL signals at shutdown #KILLDELAY=3 # Optional sysklogd parameters #SYSKLOGD_PARMS="-m 0" # Console parameters #UNICODE=1 #KEYMAP="de-latin1" #KEYMAP_CORRECTIONS="euro2" #FONT="lat0-16 -m 8859-15" #LEGACY_CHARSET=
Os conjuntos de comandos sequenciais de inicialização do LFS
inicializam e desligam um sistema de uma maneira bastante
eficiente, porém existem uns poucos ajustes que você pode fazer
no arquivo rc.site para aumentar a velocidade ainda mais e
ajustar mensagens de acordo com suas preferências. Para fazer
isso, ajuste as configurações no arquivo /etc/sysconfig/rc.site
acima.
Durante o conjunto de comandos sequenciais de inicialização
udev
, existe uma chamada para
udev settle
que exige algum tempo para completar. Esse tempo
possivelmente ou possivelmente não seja exigido dependendo
dos dispositivos no sistema. Se você tiver somente
partições simples e uma placa ethernet, o processo de
inicialização provavelmente não precisará esperar por esse
comando. Para pulá-lo, configure a variável
OMIT_UDEV_SETTLE=y.
O conjunto de comandos sequenciais de inicialização
udev_retry
também executa
udev settle
por padrão. Esse comando é necessário somente se o
diretório /var
for montado
separadamente, pois o relógio precisa do arquivo
/var/lib/hwclock/adjtime
.
Outras personalizações possivelmente também precisem
esperar que o Udev complete, porém em muitas instalações
ele não é necessário. Pule o comando configurando a
variável OMIT_UDEV_RETRY_SETTLE=y.
Por padrão, as verificações do sistema de arquivos são silenciosas. Isso pode parecer um atraso durante o processo de inicialização. Para ligar a saída gerada do fsck, configure a variável VERBOSE_FSCK=y.
Quando reinicializar, você possivelmente queira pular a
verificação do sistema de arquivos, fsck, completamente. Para
fazer isso, ou crie o arquivo /fastboot
ou reinicialize o sistema com o
comando /sbin/shutdown -f -r
now. Por outro lado, você pode forçar que
todos os sistemas de arquivos sejam verificados criando
/forcefsck
ou executando
shutdown com
o parâmetro -F
em
vez de -f
.
Configurar a variável FASTBOOT=y desabilitará fsck durante o processo de inicialização até que ela seja removida. Isso não é recomendado em uma base permanente.
Normalmente, todos os arquivos no diretório /tmp
são deletados em tempo de
inicialização. Dependendo do número de arquivos ou
diretórios presentes, isso pode causar um atraso notável no
processo de inicialização. Para pular a remoção desses
arquivos configure a variável SKIPTMPCLEAN=y.
Durante o desligamento, o programa init envia um sinal TERM para cada programa que ele tenha iniciado (por exemplo agetty), espera um tempo configurado (padrão 3 segundos), então envia a cada processo um sinal KILL e aguarda novamente. Esse processo é repetido no conjunto de comandos sequenciais sendsignals para quaisquer processos que não sejam desligados pelos conjuntos próprios de comandos sequenciais deles. O atraso para init pode ser configurado passando-se um parâmetro. Por exemplo, para remover o atraso no init, passe o parâmetro -t0 quando desligar ou reinicializar (por exemplo /sbin/shutdown -t0 -r now). O atraso para o conjunto de comandos sequenciais sendsignals pode ser pulado configurando-se o parâmetro KILLDELAY=0.