Как запустить обычный сеанс из пользовательского скрипта после передачи init=MY_SCRIPT в записи grub

У меня есть запись в grub для запуска моего скрипта конфигурации, написанного на Python. Я хотел бы дать пользователю возможность начать нормальную сессию после завершения работы. Но я обнаружил, что /sbin/init должен иметь PID==1, поэтому при запуске в Python:

#!/usr/bin/python
...
import subprocess
subprocess.call(["/bin/bash", "-c", "exec /sbin/init 2"])
#subprocess.call("exec /sbin/init 2", shell=True)

-это заканчивается:

init: не удалось подключиться к сокету /com/ubuntu/upstart: соединение отклонено

и ядро ​​паника

Есть ли решение для этого?

1 ответ

Решение

Вам нужно запустить exec ( os.execv), а не запускать его как подпроцесс. Как это:os.execv('/sbin/init', ['/sbin/init'])

Другие вопросы по тегам