Um guia para entender os estágios da inicialização / inicialização do Ubuntu

3

Surgiu da situação em que eu queria executar um script toda vez que o sistema fosse iniciado.

Percebi que há vários lugares, como init.d , rc.local , bash_profile , ~/config/autostart , ~/local/share/applications e uma tonelada de outros locais que são executados a cada vez que o sistema é iniciado. O que é perfeitamente compreensível. Mas mostra a imagem obscura de uma inicialização do sistema.

Posso saber se alguém pode me indicar um recurso padrão sobre como entender de forma rápida e rápida

  1. Vários estágios envolvidos na inicialização de um sistema Ubuntu e
  2. (Deixando de fora o lixo menos interessante) O que tudo poderia ser do interesse real de um usuário por suas personalizações em geral?

Por favor, considere que eu já fiz o google e encontrei recursos terríveis com detalhes incompreensíveis. Ficaria agradecido, se você puder realmente explicar por si mesmo em termos leigos ou, pelo menos, me apontar para um lugar que não é um manual de referência de grande gordura que não é legível para um leigo.

Deixe-me ser sincero para os analfabetos, essas respostas não são úteis:

Embora eles possam compartilhar alguma semelhança, todos eles claramente não conseguiram obter nada útil para iniciantes. Por exemplo, o último poderia obter apenas uma solução produtora de gráficos.

    
por Loves Probability 02.11.2016 / 05:07

1 resposta

3

O GRUB carrega o kernel, o kernel inicia o processo de inicialização (normalmente /sbin/init ). É o que acontece depois disso é tipicamente de interesse. Em vários estágios da história do Ubuntu, houve três sistemas de inicialização:

  1. SysV init , a Idade das Trevas
  2. Upstart , Ubuntu 9.10 - 14.10
  3. Systemd , do Ubuntu 15.04

Os sistemas de inicialização, em geral, iniciam os vários serviços que devem ser executados, além de outras tarefas. O que faz um sistema init?

/etc/init.d é onde residem os scripts shell de interesse do antigo sistema init sysv. Se você puder, apenas evite. Existe apenas por motivos de compatibilidade com versões anteriores.

/etc/rc.local é um script da era init do sysv, que ainda funciona devido à compatibilidade com versões anteriores. É bom que os comandos de curta duração sejam executados na inicialização do sistema como root . É executado uma vez durante a inicialização. Para tarefas de longa duração, use os serviços Upstart ( /etc/init ) ou systemd ( /etc/systemd/system ). Tanto o Upstart quanto o systemd permitem iniciar programas condicionalmente, mas a maneira como eles fazem isso é diferente.

Quando você fizer login em uma GUI, a maioria dos ambientes de desktop iniciará os aplicativos listados em ~/.config/autostart . É um bom lugar para comandos que devem ser executados depois que você fizer login em uma GUI, como iniciar seu cliente de e-mail. Eles são executados toda vez que você faz o login, então, cada vez que você fizer logout e re-login, eles serão executados (ao contrário de /etc/rc.local ).

~/.config/upstart é como ~/.config/autostart , mas é tratado por um processo Upstart por sessão que é iniciado quando você faz login em uma GUI. É mais flexível que ~/.config/autostart , que simplesmente executa os comandos no login. Isso é útil até o Ubuntu 16.10, onde o processo por sessão é agora systemd (de 15.04 a 16.04, o init principal era systemd, mas os inits por sessão eram Upstart). Veja, por exemplo, minha resposta aqui: Como executo um script no login / logoff da Unity?

Agora você provavelmente pode ter mais noção das opções em Como executar scripts na inicialização?

~/.bash_profile , ~/.profile , ~/.bashrc , etc. não são bons para iniciar comandos na inicialização. Geralmente, eles são lidos por shells da linha de comando, portanto, quando você inicia um terminal ou faz login nos TTYs. Portanto, .bashrc é bom para executar um comando toda vez que você abrir um terminal e .profile para quando você efetuar login a partir do TTY. (Veja esta resposta .) Esses arquivos também são usados principalmente na configuração de variáveis de ambiente, mas o lugar canônico para variáveis de ambiente é /etc/environment para variáveis de todo o sistema e ~/.pam_environment para variáveis específicas do usuário. Veja esta resposta .

~/.local/share/applications é irrelevante para esta discussão.

    
por muru 02.11.2016 / 06:57

Tags