私はコンパイルしてインストールした小さなルートファイルシステムのカーネルバージョン(linux-2.6.32.68 - パッチなし)を使ってシステムを起動しようとしています。
次のコマンドを使用して小さなext2ファイルシステムを作成しました。
dd if=/dev/zero of=rootfs.img bs=1k count=8000
mkfs.ext2 -i 1024 -F rootfs.img
私はそれを埋めるために次のガイドに従いました。http://blog.braslavsky.org/2010/01/embedded-linux-from-scratch-in-90.html したがって、実行に必要なビジボックスバイナリと初期化スクリプトがあります。
QEMUを使用して実際のマシンをエミュレートすると、これらすべてがうまく機能します。つまり、カーネルがロードされ、rootfsがマウントされます。たとえば、次のようになります。
qemu-system-x86_64 -m 64 -hda ./rootfs.img -kernel linux-2.6.32.68/arch/x86/boot/bzImage -append "root=/dev/sda init=/sbin/init"
しかし、Fedora 22を実行している仮想マシンにカーネルバイナリ(bzImage)とrootfs(rootfs.img)を追加して起動するために使用できるようにしました。カーネルを/bootに追加し、必要に応じて名前を変更しました。その後、grub updateまたは再構築/boot/grub2/grub.cfgに似たものを実行し、正常に新しいカーネルを選択しました。すべてがうまくいっているようで、仮想マシンのブートローダメニューが表示されます。
ファイルシステムをマウントするために、grub.cfgファイルを手動で編集してみました(例:root = / rootfs.img)。
ただし、カーネルを起動しようとするとロードは行われますが、停止して特定のVFSをマウントできないと文句を言い、カーネルパニックが発生します。
どんなアイデアがありますか?ルートファイルシステムを誤って指定しましたか? rootfsをext3に変換してみましたが、あまり違いはありませんでした。
私のアプローチは失敗する運命ですか?