systemd

Systemd - Como ele inicia seu sistema

Systemd - Como ele inicia seu sistema
O Systemd foi desenvolvido quando os desenvolvedores descobriram que iniciar o sistema em paralelo não era possível. Os sistemas mais antigos passam por seus arquivos de inicialização do sistema um por um. Isso pode fazer com que a inicialização pare ao esperar por recursos que são lentos. Um exemplo disso é quando um processo precisa ter a rede funcionando. O uso da rede é muito lento, outros recursos não devem ter que esperar. Este problema pode ser mitigado de outras maneiras, mas com o systemd, toda inicialização é feita em paralelo sempre que possível. O resultado deve ser uma inicialização muito mais rápida para sistemas complexos, o que inclui seu sistema de desktop.

Systemd: pai de todos os outros processos

Um sistema Linux, e qualquer outro * nix, sempre inicia um processo que é o pai de todos os outros processos. Quando você usa o Systemd, esse processo é o systemd, o processo é sempre chamado de 'init' independente do sistema init. Assim que o systemd estiver em execução, ele iniciará os daemons que executam os subsistemas. Os daemons controlam quais recursos você tem e quais sistemas estão abertos. Seu prompt de login é um serviço gerenciado pelo systemd. O Systemd inicia muitos outros serviços e também monta todos os seus discos, incluindo as montagens instantâneas.

Como você controla o que começa?

Em primeiro lugar, o sistema init mais antigo tinha níveis de execução que muitos leitores reconhecerão. O nível de execução 1 era o modo de usuário único, o modo 2 multiusuário sem rede e 3-5 multiusuário e gráfico. Definir o nível de execução para 0 significava parada e 6 significava reinicialização. Os desenvolvedores do systemd acharam esses níveis pouco claros, então mudaram para serem chamados de alvos. Os alvos não são exatamente os mesmos, mas têm uma função semelhante. Quando um alvo específico está em execução, uma coleção específica de unidades está em execução. Mais sobre unidades mais tarde.

Definir o “nível de execução”, chamado de destino.

Você pode alterar o destino durante a execução, por exemplo, você pode usar um terminal para definir o seu destino como multiusuário. Isso interromperia sua GUI, X ou Wayland, mas permitiria que você e outras pessoas se conectassem com um console de texto. Use o seguinte comando.

$ systemctl isolate multiusuário.alvo

Ou, se você deseja iniciar sua área de trabalho, use o seguinte comando.

$ systemctl isolate graphical.alvo

O que você está realmente interessado é em como iniciar o nível correto, você pode descobrir o que você tem agora desta forma.

$ systemctl get-default

Para alterar o padrão, defina-o.

$ systemctl set-default graphical.alvo

Este comando faz com que muitas unidades e serviços sejam iniciados conforme você inicializa seu computador. Você pode querer iniciar ou interromper um único serviço, no entanto.

INICIANDO, parando, habilitando e desabilitando um serviço.

É aqui que você tem a chance de mudar o que acontece na inicialização e durante a operação normal. Em contraste com as metas, as unidades são especiais para um determinado serviço. Para interromper um serviço, use 'systemctl stop', da mesma forma, você pode usar 'start' e 'restart'. Para fazer um serviço iniciar na inicialização você usa 'ativar', para interrompê-lo 'desativar'. Escolha um serviço, inicie e pare-o enquanto estiver em execução.

$ systemctl status cups.serviço

Este comando mostra o status do serviço, ele também mostra uma lista de ações realizadas pelo sistema em relação ao serviço. Para parar o serviço, use o comando abaixo.

$ systemctl stop cups.serviço

O serviço foi interrompido para a sua sessão atual. Para mudar para não iniciar na próxima inicialização, use desativar.

$ systemctl disable cups.serviço

Observe que você só pode desativar o serviço, isso não afetaria sua situação atual. O serviço continua funcionando. Na próxima inicialização, porém, ele não iniciará o serviço.

O Systemd também controla montagens, dispositivos, soquetes e muito mais. As unidades são mais baixas e mais fáceis de entender, se você já lidou com um Linux antes. Você também pode definir isso, mas o maior efeito na inicialização é controlar os serviços.

Como você adiciona seus próprios scripts?

Você pode adicionar seus próprios scripts facilmente, os detalhes que são interessantes de saber são como você faz seu script ou serviço depender de outros. Isso é perfeitamente demonstrado neste arquivo de serviço de retomada de wi-fi.

[Unidade]
Descrição = Reiniciar networkmanager ao retomar
Depois = suspender.alvo
Depois = hibernar.alvo
Depois = hibrido-sono.alvo
 
[Serviço]
Type = oneshot
ExecStart = / bin / systemctl reiniciar gerenciador de rede.serviço
 
[Instalar]
WantedBy = suspender.alvo
WantedBy = hibernar.alvo
WantedBy = híbrido-sono.alvo

Este código cria um serviço que acontece uma vez (onehot) após os três alvos mencionados no código. O código que é executado é, neste caso, um único comando. Você também pode apontar o ExecStart para um script de sua escolha.

Conclusão

Alterando seu sistema, especialmente como ele inicializa, você pode fazer você mesmo, mas tome cuidado, pois isso tem muitas consequências para cada serviço, então certifique-se de que seu código seja estável e rápido de executar.

Como mostrar a sobreposição de OSD em aplicativos e jogos Linux em tela cheia
Jogar jogos em tela cheia ou usar aplicativos em modo de tela cheia sem distração pode cortar você das informações relevantes do sistema visíveis em u...
Top 5 cartas de captura de jogos
Todos nós vimos e amamos streaming de jogos no YouTube. PewDiePie, Jakesepticye e Markiplier são apenas alguns dos melhores jogadores que ganharam mil...
Como desenvolver um jogo no Linux
Uma década atrás, poucos usuários de Linux preveriam que seu sistema operacional favorito um dia seria uma plataforma de jogos popular para videogames...