Grub2で起動するために動作するchroot環境を確保する

Grub2で起動するために動作するchroot環境を確保する

質問

動作中のchroot環境(inittab、fstab、init.d / rcS設定)、カーネル、およびgrub2がインストールされています。システムを動作させるには何が必要ですか?

背景/詳細

教育目的で、私は起動してシェルを実行できる小さなLinux環境を構築し始めました。

Virtualboxを使用して、仮想マシンを2つのハードドライブ(各ハードドライブには1つのパーティションのみ)に接続します。 1つ目はDebianをインストールし、2つ目はBusyboxを使って小さなchroot環境を構築しました。この記事。私はまた、記事に示されているように、、inittabおよびfstab他のほとんどのファイルシステムに関連する項目を設定しましたinit.d/rcS。ただし、2番目のページでは起動可能なフロッピーを作成していないため、2番目のページに関連した操作を実行していgenfromfsませんsyslinux

chrootされたシステムを起動する方法を見つけるために、次のものが見つかりました。この投稿、私は逃げたgrub-install --root-directory=/mnt /dev/sdb。最後に完了したというエラーはありません。

その後、今回は、2番目のハードドライブを唯一のハードドライブとして使用して、新しい仮想マシンを作成して起動しました。それは私にgrubプロンプトを与えたので、私はもっとグーグルしました、その後、入力しました。

set root=(hd0,msdos1)
linux /vmlinuz
boot

私は持っていますinitrd/initramfsを理解するのはオプションです。だから今は無視することにしました。私はbzImageをmake defconfig使ってLinuxカーネルをビルドし、ビルドmake後にx86ディレクトリにコピーしました。

しかし、すぐに画面が止まる現象が発生しました。

[ 0.74.. ] md: autorun ...
[ 0.74.. ] md: ... autorun DONE.
[ 0.74.. ] Root-NFS: no NFS server address
[ 0.74.. ] VFS: Unable to mount root fs via NFS, trying floppy.
[ 0.74.. ] VFS: Cannot open root device "(null)" or unknown-block(2,0)
[ 0.74.. ] Please append a correct "root=" boot option; here are the avaialbe partitions:
[ 0.74.. ] 0800  ... sda driver: sd
[ 0.74.. ] 0801 ... sda1 ...
[ 0.74.. ] 0b00 .. sr0 driver: sr ..
[ 0.74.. ] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
[ 0.74.. ] Pid: 1, comm: swapper/0 Not tainted 3.2.6 #1
[ 0.75.. ] Call Trae:
[ 0.75.. ]  [<c16..>] panic+0x57/0x157
[ 0.75.. ]  [<c18..>] mount_block_root+0x125/0x1a7
[ 0.75.. ]  [<c10..>] ? sys_mknod+0x27/0x30
.. a few more lines of call trace ...

手動で入力する必要があるため、いくつかの数字と最後の数行がありません。必要に応じてお知らせください。投稿いたします。

ベストアンサー1

root=grubでこのパラメータを指定する必要があります。カーネルが誤ったルートデバイスを探しているため、「不明なブロック」エラーが発生します。ハードドライブが正しく検出されていることがわかるので、 grub では次の行を使用する必要があります。

linux /vmlinux root=/dev/sda1

おすすめ記事