O que acontece se você bifurcar antes de switch_root?

0

Normalmente, um script initramfs / init terminará com algo como

exec switch_root /newroot /sbin/init

efetivamente substituindo-se por systemd ou qualquer outra coisa que flutue em seu barco. Mas o que aconteceria se você forçar antes disso? O novo sistema de inicialização ainda será o pai do processo bifurcado ou será um zumbi? No caso do systemd, um processo filho criado antes do início do systemd cria "problemas de contabilidade" ou tem outros efeitos colaterais imprevistos?

Edit: Foi perguntado em um comentário por exemplo código. Não é possível ver como isso mudaria os princípios por trás da resposta, mas com certeza:

tail -f /dev/urandom &
exec switch_root /newroot /sbin/init
    
por Benjamin Lindqvist 25.06.2018 / 19:24

1 resposta

2

A resposta é que nada acontece. Você está substituindo seu processo por exec ing - o processo bifurcado só sabe que seus pais pid são 1, realmente não se importa se esse processo foi systemd ou algum initramfs /init . A única coisa obscura é que ele será um daemon sem um serviço systemd, portanto o journalctling, o reinício, etc. não funcionarão direito - a menos que você crie especificamente seu próprio serviço que "se anexa" ao processo bifurcado (provavelmente não muito difícil dado que deveria ter um pid determinista etc).

Em geral, não é recomendável ter o código initramfs em execução após a inicialização normal exatamente por esses motivos, mas ele não trava o sistema. Há alguma discussão interessante nos campos de comentários do link onde isso é discutido brevemente.

    
por 25.06.2018 / 21:18