
私はフォローしていますゼロから作る最小限の Linux システム小さなフットプリント (10MB 以下) の Linux を構築するためです。
最後のポイント、つまり実際にコマンドを使ってイメージをテストするまで、エラーはなかったと確信しています。qemu-system-i386 -L . -hda minux.img
チュートリアルで示したように実際にプロンプトを起動する代わりに#
、Grub Rescue プロンプトが表示されます。起動を試みるためにkernel /boot/kernel_name
thenを使用しましたboot
が、最終的には次のエラーで失敗します。
私のものgrub.conf
は以下のとおりです。チュートリアルのものと同一です。
default 0
timeout 30
title Minux
root (hd0,0)
kernel /boot/vmlinux-2.6.21-1 root=/dev/hda1 rw
これまでのところ、私が見つけることができた唯一の違いは でfdisk
、開始セクターは 2048 です。これは fdisk を使用して設定できる最小値であり、結果としてオフセットが大きくなっているためです。もう 1 つの違いは、x86_64-pc grub を使用しており、busybox ライブラリの一部の名前が異なることですが、これは起動に影響しないはずです。
Linux を動作させるための手順を修正するにはどうすればよいでしょうか? または、10 MB 未満の Linux ディストリビューションを作成するより良い方法はありますか?
答え1
小さなシステムを作るという2番目の質問にお答えします。x86で構築しているので、組み込みチップに焼き付けるのではなく、フラッシュドライブから起動するシステムを作ることが目的だと思います。組み込みチップに焼き付けるのとはまったく別の話です。
ディスク イメージを削除し、cpio initramfs を使用することを検討してください。次に、次のように起動します。
qemu-system-i386 -kernel vmlinuz -initrd root.cpio.gz
柔軟性が高まり、ディスクの場所を混同する必要がなくなるので、これが気に入っています。
私も提案しますグラブ4dosブートローダ。名前に「dos」が付いていますが、LinuxからインストールしてLinuxカーネルを起動できます。インストールは、MBRを書いて213kのファイルを1つコピーするだけです。任意のパーティション. そして grub4dos は多くのファイルシステムを認識します。
また、あなたの設定では、GRUBが正しく設定されていないようです。救援コンソールには . と表示されましたが、kernel /boot/kernel_name
の前に "root=" と入力する必要がありますboot
。
私のマシンでは、qemu ゲスト カーネルはディスク イメージを "/dev/hda" ではなく "/dev/sda" として認識します。