O que são runlevels e como funcionam?

2

Eu não tenho um entendimento claro dos níveis de execução e de como eles funcionam.

Eu sei que runlevels são um dígito indicando quais processos devem ser iniciados por init . Praticamente falando: na inicialização init vê este dígito do script rcS e decide se o script deve ser iniciado ou não?

Busybox não tem runlevels: ele inicia qualquer script presente no rcS ... correto? Praticamente falando, ele não verifica o dígito do script?

Última pergunta: por que systemd não usa runlevels? No meu computador eu vejo um diretório rcS com vários scripts e seu dígito associado (número de runlevel).

    
por Drew Ber 06.10.2018 / 09:23

1 resposta

1

Esqueça os runlevels.

Quando os níveis de execução foram introduzidos no AT & T Unix System 3 (Sim, /etc/inittab chegou no System 3 e não no System 5.) houve mutterings no mundo BSD e os BSDs nunca adotaram este sistema. Todos esses anos mais tarde, a maioria das partes do mundo do System 5 acabou com os níveis de execução.

No IBM AIX, o número de níveis de execução usados na prática diminuiu para 1 na versão 3.1, com o advento do System Resource Controller. A IBM pensou que as pessoas poderiam esquecer os níveis de execução em 1990. Os níveis de execução 1 e 3 a 9 estavam "reservados" a partir daquele momento.

As pessoas do sistema declararam que os runlevels são "obsoletos" em seu documento, cerca de duas décadas depois. Como o SRC antes dele, e como outros sistemas, como o Solaris 'SMF ou o s6-rc da Laurent Bercot ou o runit-init da Gerrit Pape ou o conjunto de ferramentas de gerenciamento do sistema nosh; O systemd não os requer, ou o conceito que eles incorporam. Em vez disso, existem mecanismos melhores , de vários tipos, nesses sistemas.

( runit tem o conceito de alternar entre vários diretórios de varredura. s6-rc tem o conceito de mudar o "estado vivo" . O nosh system-control tem o conceito de pacotes de serviços de destino que want/ ou conflict/ com outros pacotes de serviços. A SMF do Solaris tem "marcos" como milestone/multi-user-server , milestone/self-assembly-complete e milestone/name-services . E assim por diante.)

BusyBox init tem um arquivo de configuração inittab , mas isso é diferente do mais comum, e não contém nenhuma noção de níveis de execução.

Então:

  • Não, init não procura coisas nesses diretórios e scripts com base nos números de nível de execução. Apenas dois sistemas init já fizeram , e mesmo em um deles havia a opção de um rc que usava um arquivo de dados em vez de links simbólicos em /etc/rc.d/ .
  • Não, mesmo no sistema AT & T Unix System 3 (e em seu sucessor e clones), não foi init que analisou esses scripts. Foi rc .
  • Nos sistemas operacionais systemd, os scripts /etc/init.d/ são processados por um mecanismo de compatibilidade com versões anteriores que os transforma em unidades de serviço nativas. Isso ignora em grande parte as informações fornecidas em nível de execução, tanto nos próprios scripts quanto nos subdiretórios /etc/rc.d/ , e apenas cria alguns destinos em seu código.
  • Não, os níveis de execução não eram dígitos. S é um nível de execução e não um dígito, assim como m , h e a , b e c do AIX. (Eu não vou entrar em detalhes aqui sobre o que eram, porque isso é algo que você pode esquecer .

O único sistema que contraria a tendência é o TrueOS. Baseado no FreeBSD, que ainda usa Mewburn rc e FreeBSD init , nenhum dos quais possui um mecanismo de nível de execução, ele adotou o OpenRC para substituir o Mewburn rc . Ironicamente, isso está adicionando níveis de execução do Sistema 5 a um BSD no momento em que o lado do Sistema 5 do universo finalmente consignou níveis de execução para a lata de lixo da história. ☺

Leitura adicional

por 06.10.2018 / 13:33

Tags