QEMUでAARCH64 Linuxカーネルを実行できません

QEMUでAARCH64 Linuxカーネルを実行できません

QEMUでAARCH64 Linuxカーネルを実行しようとしています。

ただし、エラーが発生し、エラーログは次のとおりです。

rom: requested regions overlap (rom bootloader. free=0x00000000422c0a00, addr=0x0000000040000000)
qemu-system-aarch64: rom check and register reset failed

私の開発環境は次のとおりです

host: x86_64 Ubuntu 18.04
linux kernel source version: v5.19
busybox version: 1_36_stable

まず、確認する必要があるものが見つかりません。だから助けが必要です。

私の目標を達成するために私がしたことは次のとおりです。

  1. AARCH64用のLinuxカーネルの構築
  • 基本構成の適用
make ARCH=arm64 defconfig -j$(nproc) CROSS_COMPILE=aarch64-linux-gnu-
  • menuconfigを使用してRAMディスクを使用するようにCONFIG_BLK_DEV_RAM設定を設定します。
  • カーネルビルド
make ARCH=arm64 -j$(nproc) CROSS_COMPILE=aarch64-linux-gnu-
  1. initramfs.gzを作成するために 'busybox'を構築します。
  • 基本構成の適用
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- defconfig
  • menuconfigを使用してライブラリを静的ライブラリとして構築し、「CONFIG_STATIC」設定を設定します。
  • ビジーボックスの構築
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j$(nproc)
  • ビジーボックスの設置
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- install
  • initramfs.gzの作成
cd _install
mkdir -p dev etc/init.d home/root lib mnt proc root sys tmp usr/lib var
cp -v /usr/aarch64-linux-gnu/lib/* ./lib/

cat > etc/init.d/rcS << EOF
#!/bin/sh
mount -t proc none /proc
mount -t sysfs none /sys
/sbin/mdev -s
[ ! -h /etc/mtab ]  && ln -s /proc/mounts /etc/mtab
[ ! -f /etc/resolv.conf ] && cat /proc/net/pnp > /etc/resolv.conf
EOF

chmod +x etc/init.d/rcS
find . | cpio -o --format=newc > ../initramfs
cd ..
gzip -vc initramfs > initramfs.gz
  • qemuのインストール
sudo apt install qemu-system-arm qemu-efi-aarch64
  • qemu 実行
qemu-system-aarch64 \
-machine virt \
-cpu cortex-a57 \
-smp 4 \
-m 2048 \
-kernel arch/arm64/boot/Image \
-initrd busybox/initramfs.gz \
-append "rdinit=/sbin/init root=/dev/ram rootfstype=ramfs rw nokaslr" \
-nographic

この問題についてどんな考えがあれば、私を助けてください。ありがとうございます!

ベストアンサー1

おすすめ記事