Еще немного покопавшись, я нашел хакерское -решение этой проблемы. Он далек от совершенства и не устраняет первопричину, но, по крайней мере, делает систему загружаемой.
Хак состоит в том, чтобы иметь скрипт в initramfs , который выполняется непосредственно перед попыткой монтирования root, но после инициализации устройства, и sleep
за мгновение до выполнения blockdev --rereadpt
.
В системе на основе Debian -просто поместите следующий файл в/etc/initramfs-tools/scripts/local-top/rereadpt
:
#!/bin/sh
PREREQ=""
prereqs()
{
echo "$PREREQ"
}
case $1 in
# get pre-requisites
prereqs)
prereqs
exit 0
;;
esac
sleep 5
blockdev --rereadpt /dev/<yourdisknode>
Вы можете использовать/dev/sda
-подобные имена, если среда вашего сайта имеет один SCSI-диск, или /dev/disk/by-id/...
или любую другую логику, чтобы убедиться, что вы инициируете повторное сканирование на правильном диске.
ОБНОВЛЕНИЕ :Если вы не хотите update-initramfs
выполнять вышеупомянутый скрипт каждый раз, когда он перестраивает образ (, даже если это предположительно, не следует?? ), вы не должны пропускать фрагменты prereqs
и case
в начале
Linux — это название ядра, основанное на имени Линуса Торвальдса — сочетание слов «Линус» и «х» по отношению к Unix.
Просто для развлечения :В «Истории случайного революционера» упоминается, что Линус изначально хотел назвать ядро Freax, посчитав Linux слишком эгоистичным. Ари Леммке, который управлял сервером, на котором первоначально размещался Linux для распространения, не понравилось имя «Freax», и вместо него он использовал имя Linux, даже не спрашивая Линуса Торвальдса.
Подробности и ссылки см. в этой статье Википедии .