Debian ソースから構築したカーネルには QEMU /dev/vda は表示されません。ただし、事前に構築されたDebianカーネルでも同じ設定が機能します。

Debian ソースから構築したカーネルには QEMU /dev/vda は表示されません。ただし、事前に構築されたDebianカーネルでも同じ設定が機能します。

ARM用のDebianシステムをクロスコンパイルしようとしています。私は動作するクロスコンパイラ設定を持っており、QEMUにインストールされているDebianシステムでプログラムを実行できます。私はQEMUにコマンドラインオプションとして提供する仮想ディスク(qcow2形式)とは別のカーネルとinitramfsイメージ(ホストシステム上)を使用しています。

プリコンパイルされた Debian カーネルで起動すると、すべてがうまく動作し、システムは /dev/vda* の /dev/vda1 パーティションから起動します。私の考えでは、qcow2ディスクイメージから作成された仮想ディスクデバイスQEMUのようです。

ただし、Debianカーネルソースをインポートして(ゲストシステムからダウンロードして、そのシステムとDebianバージョンの正しいソースを取得してホストにコピーします)、ホストシステムでクロスコンパイルすると、次のようになります。カーネルはinitramfsのbusyboxのみを起動します。この時点では、/ dev / vda *デバイスが存在しないため、ルートデバイスが見つかりません。 (/dev/sd*、/dev/hd*などのデバイスもありません。)

私のカーネルにQEMU仮想ディスクデバイスがまったく表示されないのはなぜですか? (QEMUにはまったく同じコマンドラインがあります。唯一の違いはカーネルイメージファイル名です。)カーネルをビルドするときに誤って設定しましたか? (デフォルトの設定では、実際にはクライアントシステムの/ bootフォルダから取得したDebianカーネル設定ファイルから始めました。)

Debian バージョン (ゲスト) は 8.11 (jessie) です。 Linuxカーネルのバージョンは3.16.0.6-armmp-lpaeです。

私のQEMUコマンドラインは次のとおりです。

qemu-system-arm -M virt -m 1024 -kernel <the kernel image file> -initrd initrd.img-3.16.0-6-armmp-lpae -append 'root=/dev/vda2' -drive if=none,file=hda.qcow2,format=qcow2,id=hd -device virtio-blk-device,drive=hd -netdev user,id=mynet -device virtio-net-device,netdev=mynet -nographic

ベストアンサー1

少なくとも、次のカーネル構成が必要な場合があります。

CONFIG_BLOCK=y
CONFIG_BLK_DEV=y
CONFIG_DEVTMPFS=y
CONFIG_VIRTIO_MENU=y
CONFIG_VIRTIO_BLK=y

それからそれをinitrddevtmpfsにマウントすると。/dev/dev/vda

CONFIG_VIRTIO_MENUデフォルトでオンになっていても使用する場合はtinyconfig明らかに必要です。

おすすめ記事