仮想ディスクに grub を入れる

仮想ディスクに grub を入れる

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)

おすすめ記事