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

이 문제에 대해 어떤 생각이라도 있으시면 저를 도와주세요. 감사해요!

관련 정보