Linuxブートプロセスを理解するために、grubをディスクイメージファイルに入れ、qemuでブートしようとしました。まだカーネルイメージをドライブに入れていません。ただグラブです。私は以下を使用してgrubをインストールしました。
kpartx -av mydrive.img
losetup /dev/loop1 /dev/mapper/loop0p1
mount /dev/loop1 mnt/mydrive/
cd mnt/mydrive/boot
grub-install --no-floppy --boot-directory=. -v /dev/loop0
起動順序を段階的に進めたいので、 grub でカーネルが欠落していると主張し、カーネルをインストールして X までエントリを追加して問題を解決したいと思います。
今は理解
エラー:該当するデバイスがありません
しかし予想される
エラー:設定ファイルがありません。
構造メッセージを作成してls
提供してください。
(hd0) (fd0)
質問:*grubが探しているデバイスは何ですか?これはホストシステムを意味しますか? [一部解決済み、UUIDが仮想ファイルシステムのUUIDと同じ] * Grubがデバイスを見つけられないのはなぜですか?
VM内のlive-cdからgrub(grubのみインストール)をインストールすると(小さなバイナリディストリビューションであるため、Bodhi-linuxを選択しました)、すべてがうまく機能します。 qemuはブートパーティションに外部で使用されているものとは異なるuuidを提供しますか?
以下は、仮想ドライブのパーティションテーブルです。
Disk mydrive.img: 264 MB, 264241152 byte
32 huvuden, 63 sektorer/spår, 256 cylindrar, totalt 516096 sektorer
Enheter = sektorer av 1 · 512 = 512 byte
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Diskidentifierare: 0xebe6ebdb
Enhet Start Början Slut Block Id System
mydrive.img1 2048 516095 257024 83 Linux
ベストアンサー1
grubはデフォルトでこのパーティションタイプのモジュールをインストールしないようです(DOS / MBRパーティションラベルであると仮定します)。core.img。
次のコマンドを使用して必要なモジュールをインストールすることもできます。
grub-install --modules part_msdos --root-directory=. /dev/loop0
その後、grubはパーティションテーブル、ファイルシステム、およびmnt/mydrive/boot
。
したがって、grubコマンドはls
次のように出力する必要があります。
(hd0) (hd0,msdos1) (hd0)