
Я пытаюсь заставить 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