Загрузка в chroot-каталог оставляет корневой раздел доступным только для чтения

Загрузка в chroot-каталог оставляет корневой раздел доступным только для чтения

Я пытаюсь заставить grub загрузиться в chroot-каталог /slack, содержащий установку Slackware Linux. Этот каталог был создан с помощью следующей команды:

  installpkg --root /slack a/*.t?z

где каталог a/ содержит основные установочные пакеты a/ из slackware. Я успешно выполнил chroot в /slack и создал образ initrd, выполнив команду mkinitcpio.

Наконец, я создал следующую запись в /boot/grub/menu.lst:

title  Slackware Linux
root   (hd0,2)
kernel /slack/boot/vmlinuz root=/dev/sda3 rw init=/slack/boot/chrootinit 
initrd /slack/boot/initrd.gz
boot

где /slack/boot/chrootinit — это скрипт, который выполняет chroot в /slack:

exec /usr/sbin/chroot /slack /sbin/init

Система успешно загружается, но даже с опцией "rw" корневой раздел монтируется как readonly. Появляется несколько предупреждающих сообщений об этой проблеме, и система в конце концов зависает. Есть какие-нибудь решения?

(ССЫЛКА:http://forum.soft32.com/linux2/Booting-chrooted-directory-ftopict51395.html)

решение1

Я не уверен, почему файловая система монтируется только для чтения, поскольку вы указали rw. Возможно, ядро ​​на самом деле монтирует образ initrd для чтения и записи, а затем этот образ initrd монтирует вашу корневую файловую систему как только для чтения.

В любом случае, как правило, ядро ​​должно смонтировать корневую файловую систему в режиме только для чтения, а затем в какой-то момент initперемонтировать ее в режиме чтения и записи.

Возможно, вы могли бы изменить свой chrootinitскрипт, чтобы выполнить этот шаг первым:

/bin/mount -o remount,rw /
exec /usr/sbin/chroot /slack /sbin/init

Связанный контент