2.6 ARMカーネルをQEMUで実行するにはどのような手順がありますか?

2.6 ARMカーネルをQEMUで実行するにはどのような手順がありますか?

QEMUを使用してARM用のLinux 2.6カーネルをクロスコンパイルして起動しようとしています。私は基本的に次のガイドラインに従いました。すべてのチュートリアルこのトピックについて。

具体的には:

  1. カーネルのダウンロードとコンパイル

    $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- versatile_defconfig
    $ #Disabled loadable modules and enabled initramfs
    $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- all
    
  2. Busyboxのコンパイル

    $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- arm
    $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- install
    
  3. _installBusyboxディレクトリからcpioアーカイブを作成する

    $ cd $BUSYBOX/_install
    $ find . | cpio -o -Hnewc | gzip > ../initramfs.gz
    
  4. qemu-system-armの使用を開始

    $ qemu-system-arm -M versatilepb -m 200M -kernel $KERNEL/arch/arm/boot/zImage -initrd $BUSYBOX/initramfs.gz -append "root=/dev/ram0"
    

結果は次のとおりです。

ここに画像の説明を入力してください。

カーネルがファイルシステムを認識していないようですが、どのように解決するのかわかりません。これは基本的に各チュートリアルで従うべき正確なステップです。カーネルのソースコードには「cpiofs」のようなものが有効になっていません。

答え1

成功!

提案されているように、解決策はCONFIG_INITRAMFS_SOURCEを私のBusyBoxの "_install"ディレクトリに指定してinitrdイメージをカーネルに含めることでした。アドバイスをいただいたjc__に深く感謝します。

また、これを試している他の人は、Busybox _installディレクトリに次のものを作成する必要があることに注意する価値があります。

  • 開発/コンソール
  • 開発/ループ0

この記事で述べたように: https://www.kernel.org/doc/Documentation/filesystems/ramfs-rootfs-initramfs.txt

関連情報