runlevels de init do Debian

2

Costumava ser que quando você inicializava a maioria dos linuxes, você inicializava no runlevel 6, a menos que você fizesse alguma coisa durante o bootloading para mudar o runlevel,.

O processo procuraria em /etc/init/rcX.d (IIRC) onde X era o runlevel, e executaria todos os scripts começando com S na ordem ordenada do dicionário (então S01xxx foi executado antes de S20yyy).

Quando você passou pelo procedimento de desligamento, os scripts que começam com K seriam executados e o IIRC em ordem de classificação inversa.

Agora as coisas mudaram, os diretórios rcX.d foram movidos para / etc e um /etc/rcS.d foi adicionado, e o nível de execução padrão é 2.

Infelizmente até agora não acompanho as alterações. Alguém pode descrever o processo de inicialização e desligamento do nível de execução 2 nos sistemas atuais?

    
por Mouse.The.Lucky.Dog 28.05.2013 / 01:39

2 respostas

1

Quando o sistema transita de um nível de execução para outro, ele executa todos os scripts "K" no nível de execução existente, em ordem, e todos os scripts "S" no novo nível de execução, em ordem. O Debian implementa a inicialização paralela, portanto, a maioria dos scripts será executada simultaneamente (mas com eficiência na ordem) e há um padrão para incluir informações de dependência em cada script e ferramentas para inserir / remover scripts. Você pode desativar a simultaneidade adicionando CONCURRENCY=NONE a /etc/default/rcS .

No atual inittab do Debian, o conjunto de comandos a ser executado em cada transição de nível de execução é /etc/init.d/rc

Quando você inicializa, o sistema é considerado no runlevel S . Os scripts "S" em /etc/rcS.d são executados, em ordem (por /etc/init.d/rc ).

Quando eles são concluídos, o sistema é movido para o nível de execução que você especificou na linha de comando do kernel, ou o nível de execução padrão, que é 2, se você não tiver o X instalado.

Não há scripts "K" em /etc/rcS.d , então nada acontece - o runlevel "S" é destinado à inicialização geral do sistema. Mas então todos os scripts "S" em /etc/rc2.d são executados, em ordem.

Uma vez concluídas, você está oficialmente no runlevel 2. O comando /etc/init.d/rc retorna, e init spaws o getty está configurado para fazer e aguarda que um sinal mude o nível de execução.

Quando você desliga, um sinal é enviado para init . Então, o sistema está se movendo do nível de execução 2 para 6 (reinicialização) ou 0 (desligamento). Então todos os scripts "K" em /etc/rc2.d são executados, em ordem. Então, todos os scripts "S" em /etc/rc6.d ou /etc/rc0.d são executados, em ordem, se existirem.

Então, como este é o nível de execução 0 ou 6 (ook em /etc/init.d/rc - esse script explicitamente testa 0 ou 6), ele fará a transição imediatamente para fora do runlevel, fazendo com que todos os scripts "K" sejam executados. p>

O último script "K" para 0 ou 6 será um comando que interrompe / desliga ou reinicializa o sistema.

    
por 19.10.2014 / 23:40
0

/ etc / inittab

Direto do meu /etc/inittab (sistema Fedora):

# Default runlevel. The runlevels used are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
# 

Esta linha no meu /etc/inittab controla meu nível de execução padrão:

id:5:initdefault:

Altere assim:

$ sudo vim /etc/inittab
id:3:initdefault:

runlevels

Seu nível de execução atual é o seguinte:

$ runlevel
N 5

Portanto, meu nível de execução anterior é desconhecido ( N ) e meu atual é 5. Periodaily change your runlevel:

telinit 3

Dê uma olhada neste artigo intitulado: Gerenciador de inicialização (docs) , que explica como esse diretório está organizado sob o Debian.

Sob o Debian mostra os seguintes runlevels:

N System bootup (NONE).
S Single user mode (not to be switched to directly)
0 halt
1 single user mode
2 - 5 multi user mode
6 reboot
    
por 28.05.2013 / 03:56

Tags