Você precisa executar exec (os.execv) init, não executá-lo como um subprocesso.
Como isso:
os.execv('/sbin/init', ['/sbin/init'])
Eu tenho entrada no grub para iniciar meu script de configuração escrito em Python. Gostaria de dar a opção de usuário para iniciar a sessão normal após o trabalho estar concluído. Mas eu descobri que / sbin / init precisa ter PID == 1, então quando eu corro em Python:
#!/usr/bin/python
...
import subprocess
subprocess.call(["/bin/bash", "-c", "exec /sbin/init 2"])
#subprocess.call("exec /sbin/init 2", shell=True)
-it termina com:
init: Falha ao conectar-se ao socket / com / ubuntu / upstart: Connection recusou
e kernel panic
Existe alguma solução para isso?
Você precisa executar exec (os.execv) init, não executá-lo como um subprocesso.
Como isso:
os.execv('/sbin/init', ['/sbin/init'])