Grub 2をインストールしたい1Gb HDDイメージ(Bochsのbximageを使用して作成)があります。
私が知る限り、Grubのインストールは3つの部分で構成されています。
- boot.img イメージ、最初のセクターを占める
- core.img イメージは、最初のセクターの後から次のトラックが始まるまでのスペースを占めます。
- grub.cfgと他のモジュールがある/boot/grub/ディレクトリ。
まず、/boot/grub/ディレクトリにある私のLinux boot.imgイメージを使用します。
次に、次のコマンドを使用してcore.imgイメージを作成しました。
sudo grub-mkimage -v --format=i386-pc -o core.img -p\(hd0,msdos1\)/boot/grub ls ext2 part_msdos
最終ディスクイメージにインストールするには、次のコマンドを使用します。
sudo dd if=boot.img of=/dev/loop0 bs=446 count=1
上書きを防ぐには、446ブロックサイズを使用してください。MBRのパーティションデータsudo dd if=core.img of=/dev/loop0 bs=512 seek=1
ここでのseek=1
目的は、作成したばかりのMBRを上書きすることではありません。
ディスクは、2048セクタで始まり最後のセクタで終わるext2パーティションとしてフォーマットされており、grub.cfg(何もロードしない偽のメニュー項目を含む)を含むboot / grub /ディレクトリと/のモジュールが含まれています。 boot/grub/i386-pc/ ディレクトリ。
Bochs は、この grub インストールを grub> プロンプトで正常に起動しました。 〜のようにこのUbuntuガイドこの動作は grub.cfg が見つからないことを示します。
通話後にls
興味深い問題に直面しました。接続されたデバイスがまったくないようです!
問題の性質をより詳細に説明するために、スレーブドライブからイメージを起動すると、回復grub-mkrescue
ドライブへls
の呼び出しが自分のイメージを表示することが観察されました。そして以前に「存在しなかった」プライマリディスクドライブとext2パーティション。 /boot/grub.cfgが実際にアクセス可能であることを確認しました。
この観察に基づいて、私はcore.imgにいくつかの基本的なモジュールや機能が欠けていると仮定します。しかし、どのように修正しますか?
また、USBスティックを使用して実際のコンピュータでこの練習を実行しましたが、同じことが起こり、問題がBochsにないことを確認できます。
ベストアンサー1
実際には、次のモジュール、特にディスクドライバが欠落していることがわかりましたbiosdisk
。
OSDev Wikiから:
biosdisk - This module is required for GRUB 2 to be able to boot from a LiveCD.