chrootディレクトリで起動すると、ルートパーティションは読み取り専用になります。

chrootディレクトリで起動すると、ルートパーティションは読み取り専用になります。

Slackware Linux インストールを含む chroot ディレクトリ /slack に grub をブートさせようとしています。このディレクトリは、次のコマンドを発行して作成されました。

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

ここで、a/ ディレクトリには、Slackware の基本的な a/ インストール パッケージが含まれています。私は /slack に chroot し、mkinitcpio コマンドを実行して initrd イメージを作成しました。

最後に、/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 は /slack に chroot するスクリプトです。

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

システムは正常に起動しますが、「rw」オプションを指定しても、ルート パーティションは読み取り専用としてマウントされます。この問題に関する警告メッセージがいくつか表示され、最終的にシステムがハングします。解決策はありますか?

(参照:http://forum.soft32.com/linux2/booting-chrooted-directory-ftopict51395.html 翻訳: 翻訳: 翻訳: 翻訳元 ...

答え1

を指定しているのに、ファイルシステムが読み取り専用でマウントされている理由がわかりませんrw。カーネルが実際には initrd イメージを読み取り/書き込みでマウントしていて、その initrd イメージがルート ファイルシステムを読み取り専用としてマウントしている可能性があります。

いずれにしても、通常、カーネルはルート ファイル システム (fs) を読み取り専用でマウントし、その後、ある時点でinit読み取り/書き込みで再マウントすることが想定されます。

おそらく、chrootinit最初にその手順を実行するようにスクリプトを変更できるでしょう:

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

関連情報