9.6. Uso e Configuração do Conjunto de Comandos Sequenciais de Inicialização do System V

9.6.1. Como os Conjuntos de Comandos Sequenciais de Inicialização do System V funcionam?

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

[Nota]

Nota

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.

9.6.2. Configurando o SysVinit

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.

9.6.2.1. Mudando Níveis de Execuçã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.

9.6.3. Conjuntos de Comandos Sequenciais de Inicialização do Udev

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.”

9.6.4. Configurando o Relógio do Sistema

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.

[Nota]

Nota

Os parâmetros CLOCKPARAMS e UTC também possivelmente sejam configurados no arquivo /etc/sysconfig/rc.site.

9.6.5. Configurando o Console do Linux

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:

LOGLEVEL

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.

KEYMAP

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.

KEYMAP_CORRECTIONS

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.

FONT

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.

UNICODE

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.

LEGACY_CHARSET

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).

[Nota]

Nota

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.

9.6.6. Criando Arquivos na Inicialização

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.

9.6.7. Configurando o Conjunto de Comandos Sequenciais Sysklogd

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.

9.6.8. O Arquivo rc.site

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=

9.6.8.1. Personalizando os Conjuntos de Comandos Sequenciais de Inicialização e de Desligamento

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.