Как запустить обычный сеанс из пользовательского скрипта после передачи 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'])