O que é o Nível de Execução 'S' no Debian / Ubuntu para

8

Segundo a Wikipedia , 'S' deveria ser um nível de execução padrão: "Modo de Usuário Único". Mas se não me engano, o modo de usuário único no Debian é o nível de execução 1. Um artigo do Debian que encontrei afirma que 'S' é um nível de execução "que o sistema usa no caminho para outro nível de execução". Interessante...

Na verdade, eu sempre havia ignorado esse nível de execução até agora, mas hoje eu brinquei com o Firestarter (sim, realmente, um firewall de usuário final) só porque estava curioso sobre quais regras de firewall ele geraria. Mas então eu notei que ele cria um gancho de inicialização no /etc/rcS.d, e me perguntei se meu script de firewall também deveria ter isso.

Atualizar

Agora estou ainda mais interessado em saber o que realmente é no Debian / Ubuntu , porque o pacote Shorewall (que é um pacote fortemente "Debianized") também cria seu (apenas!) Gancho de inicialização no rcS.d!

Chris Lercher
fonte

Respostas:

3

Eu olho para os níveis de execução desta maneira:

 S - true single user mode usually drops you into a minimal root shell
 1 - Administrative mode, you get a standard login request before access
 2 - Multi-user without TCP/IP networking -- could use serial ports for other logins
 3 - Multi-user with TCP/IP networking and text 
 4 - To be determined by the system owner
 5 - Multi-User with TCP/IP networking and graphic console 
 6 - reboot
 0 - shutdown and power down

Portanto, um firewall é realmente necessário se o TCP / IP estiver em funcionamento e isso geralmente acontece apenas no estado de inicialização 3.

mdpc
fonte
1
Todo esse conceito de nível de execução é uma coisa herdada do passado. Atualmente, normalmente é o modo de usuário único (para manutenção) e é utilizado outro modo normal (como 2 ou 5, dependendo da distribuição). Realmente não vejo um caso de uso para mais nada.
Cstamas
Na verdade, o pior é que as distribuições mais recentes estão eliminando os níveis de execução todos juntos (atualmente sendo suportados por questões de legado) e indo para estados nomeados com dependências sob eles (veja Fedora 15).
Mdpc
3

Todos os itens acima parecem contornar uma resposta direta à pergunta.

Pelo que pude encontrar, os rcS.dscripts são implementados, como é o Scaso de " startup " e não " single ".

Todos eles são executados durante a inicialização. Se você deseja usar a execução de nível 1, os scripts rc1.dsão executados (que podem muito bem estar vazios, considerando todo o trabalho que acabamos de fazer rcS)

Mais precisamente, os rcSscripts são executados no caminho para rc3- de forma tão eficaz que o sistema se coloca no modo de usuário único, depois repensa e decide o que REALMENTE deveria estar fazendo. Muito confuso e principalmente mal documentado.

Como prova, se você examinar /etc/inittab, encontrará:

 # Boot-time system configuration/initialization script.<br>
 # This is run first except when booting in emergency (-b) mode.
si::sysinit:/etc/init.d/rcS

seguido mais tarde por muitas linhas semelhantes:

l3:3:wait:/etc/init.d/rc 3
David Collier
fonte
1

O nível de execução 1 também é conhecido como runlevel s.

Nos sistemas baseados no Debian, este é o modo de usuário único / mínimo . Veja Nível de Execução Debian :

O nível de execução é um dígito de 0 a 6 ou a letra S. Os níveis de execução 0, 6 e S são reservados para o modo de desligamento, reinicialização e usuário único, respectivamente.

jonasjacek
fonte
0

S é para o modo de usuário único.

http://wiki.debian.org/RunLevel

dmourati
fonte
Portanto, se um script tiver apenas um gancho de inicialização no nível de execução S (como, por exemplo, Shorewall), e eu inicializar no nível de execução '2', a sequência de inicialização iniciará o script?
Chris Lercher 15/07
No Linux, se o seu estado padrão (conforme descrito em / etc / inittab) for N, ao contrário do UNIX, apenas os itens 'S' em /etc/rc.d/rcN.d (esse local pode variar dependendo da distribuição do Linux) ser executado durante a inicialização, nenhum outro diretório init será usado.
Mdpc
Você normalmente define seu nível de execução padrão no inittab. Os números aumentam. Portanto, para o seu exemplo, se o seu init estiver configurado em S apenas o mesmo do nível de execução 1. Na inicialização, o sistema iniciará no nível de execução 1 e aumentará a execução de todos os scripts de init para esse nível, aumente o nível de execução e repita até que ele seja executado. chega ao nível de execução padrão especificado no inittab. Aqui são dois. Portanto, o que foi configurado para ativar 1 ou 2 estará ativado.
22411 dmourati
1
Observe que minha pergunta é específica para o Debian / Ubuntu! Eu apenas tentei o seguinte: Coloquei um script simples /etc/rcS.de /etc/rc2.d, cada um escrevendo uma mensagem curta (com um carimbo de data / hora) em um arquivo de log. Resultado: após a inicialização, tenho uma mensagem de log para rcS e 5 segundos depois uma mensagem de log para rc2.
22611 Chris Lercher
Para alterar o nível de execução padrão no qual o sistema inicializará, modifique a variável DEFAULT_RUNLEVEL no arquivo /etc/init/rc-sysinit.conf. Por exemplo, para fazer a inicialização do sistema por padrão para o modo de usuário único, set: env default_runlevel = 1
dmourati
0

Além da resposta fornecida pelo mdpc, no nível de execução 1, nenhum daemons (serviços) é iniciado.

Yasser - TechToolbox
fonte