flock -x lockfile -c команда[113366].
После начала сеанса SSH, другие сеансы могут писать и там, записывая в /dev/pts/
. Поэтому, чтобы увидеть, что происходит, так как я уже могу контролировать, какой PID 1 будет в конечном итоге запущен, мне просто нужно заставить его написать туда. Используя exec 0<>/dev/pts/0 1<>/dev/pts/0 2<>/dev/pts/0
из PID 1 и убедившись, что там больше ничего не читается/не записывается, я могу увидеть, что происходит. Когда в конце концов это не удаётся, скрипт init дистрибутива спрашивает, что делать, и даже правильно отвечает мне, вводя R
, чтобы перезагрузиться.
Похоже, что реальная проблема, с которой я столкнулся, вызвана тем, что требуемые модули ядра не загружаются. Несмотря на то, что я смог заставить всё работать вручную, что, очевидно, означает наличие и загрузку модулей блоков, RAID и файловой системы, initscript дистрибутива полагается на udev, и оказывается, что требуется несколько дополнительных модулей, в частности unix
(который я бы никогда не выбрал сам, чтобы не встраиваться в ядро).
Общая идея для этого заключается в замене init на скрипт, который порождает initrd-основанный бутскрипт в фоновом режиме, переходит к монтированию системного корня и делает [ -x /root/sbini/init ] && exec chroot /root /sbin/init. (Поместите некоторый код ниже, чтобы справиться с несуществующим.)
.