Вход в систему как корень опасен, поскольку корень всесилен. Вы научитесь на горьком опыте, когда Вы сделаете "комнату-rf *" в неправильном месте.
Если Вы хотите запустить некоторую программу как корень каждая начальная загрузка, необходимо настроить systemd, таким образом, это запускается каждый раз. Посмотрите на соответствующие страницы справочника и возможно воруйте некоторые идеи от, например, файлы, на которые ссылаются в/lib/systemd/system/sysinit.target.wants
Хорошо, я провел много обширных исследований и выяснил, что было не так. Начнем один за другим:
initramfs
первым процессом, на который ссылается ядро, является скрипт /init
. Ядро никогда не будет пытаться выполнить /sbin/init
напрямую. /init
назначен идентификатор процесса 1. Это очень важно! /init
может быть запущен только как PID 1
, но мы уже запустили /init
как PID 1. /выполнение /sbin/init
, пока мы находимся внутри /init
. Таким образом, новый процесс (которым является /sbin/init
) унаследует PID от своего родителя (/init
с PID 1), и это все, что нам нужно сделать. Проблема, которую я испытывал с моей первоначальной конфигурации (см. вопрос) была связана с тем, что последнее, что мой /init
сценарий делает, это породить новый /bin/sh
процесс, который назначен совершенно новый PID. С этого момента невозможно запустить /sbin/init
непосредственно из интерактивной консоли, потому что даже когда мы выполняем командную строку exec /sbin/init
, лучшее, что мы достигаем - это присваиваем тот же самый PID, который уже был присвоен оболочке, и этот PID определенно не PID 1.
Короче говоря, выполните командную строку exec /sbin/init
непосредственно из /init
и все.