HypriotOS를 부팅하려고 합니다(https://github.com/hypriot/image-builder-rpi/releases/) QEMU의 RPi 이미지
나는 사용하고있다https://github.com/dhruvvyas90/qemu-rpi-kernel그리고 다음 명령을 사용하여 QEMU용 이미지를 준비합니다.https://github.com/duquesnay/prepare-hypriot-qemu
이미지의 루트 파티션이 마운트 가능하고 괜찮아 보이는지 테스트했습니다.
$ sudo fdisk -lu hypriotos-rpi-v1.1.3-qemu01.imgDisco hypriotos-rpi-v1.1.3-qemu01.img: 8 GiB, 8589934592 bytes, 16777216 sectores
Unidades: sectores de 1 * 512 = 512 bytes
Tamaño de sector (lógico/físico): 512 bytes / 512 bytes
Tamaño de E/S (mínimo/óptimo): 512 bytes / 512 bytes
Tipo de etiqueta de disco: dos
Identificador del disco: 0x00000000
Disposit. Inicio Comienzo Final Sectores Tamaño Id Tipo
hypriotos-rpi-v1.1.3-qemu01.img1 2048 133119 131072 64M c W95 FAT32 (LBA)
hypriotos-rpi-v1.1.3-qemu01.img2 133120 16777215 16644096 8G 83 Linux
$ sudo mount -o loop,offset=68157440 hypriotos-rpi-v1.1.3-qemu01.img /mnt/
$ ls /mnt/
bin boot dev etc home lib lost+found media mnt opt proc root run sbin srv sys tmp usr var
그러나 다음 매개변수를 사용하여 실행하려고 하면 실패합니다.
$ export APPEND_ARGS="root=/dev/sda2 panic=1 rw loglevel=8 console=ttyAMA0,115200"
$ qemu-system-arm -cpu arm1176 -m 256 -M versatilepb -no-reboot \
-dtb ../../qemu-rpi-kernel/versatile-pb.dtb -serial stdio -append "${APPEND_ARGS}" \
-kernel ../../qemu-rpi-kernel/kernel-qemu-4.4.34-jessie \
-net nic -net user,restrict=off -hda hypriotos-rpi-v1.1.3-qemu01.img
출력에는 /dev/sda2
부팅 시 감지되었다고 표시되지만 어떤 이유로 커널은 마운트할 수 없다고 계속 불평합니다.
답변1
이 문제를 해결하는 열쇠는 DTB에서 DTB에 대한 지침을 엄격하게 따르는 것입니다.https://github.com/dhruvvyas90/qemu-rpi-kernel#choosing-a-kernel-image
커널 이미지 선택
저장소에는 세 가지 유형의 커널 이미지가 포함되어 있습니다.
kernel-qemu-4.*.*-buster
Raspbian Buster 및 Stretch와 호환되는 최신 이미지입니다. 이러한 이미지를 사용하려면 이 저장소에도 포함된 Versatile-pb.dtb 파일이 필요합니다. 다른 커널이 필요하다고 확신하지 않는 한, 이러한 이미지의 최신 버전이 아마도 여러분이 원하는 것일 것입니다.
kernel-qemu-4.*.*-stretch
이미지는 Raspbian Stretch 및 Jessie와 호환됩니다. 이러한 이미지를 사용하려면versatile-pb.dtb
이 저장소에도 포함된 파일이 필요합니다.
kernel-qemu-4.4.*-jessie
이미지는 Raspbian Jessie 및 Wheezy와 호환됩니다.
kernel-qemu-3.10.25-wheezy
xecdesign.com의 원본 이미지이며 Raspbian Wheezy와만 호환됩니다.
다음 두 명령은 이미지를 성공적으로 시작했습니다.
커널 4.19.50-버스터:
$ qemu-system-arm -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "${APPEND_ARGS}" -kernel ../../qemu-rpi-kernel/kernel-qemu-4.19.50-buster -dtb ../../qemu-rpi-kernel/versatile-pb.dtb -net nic -net user,restrict=off -drive file=hypriotos-rpi-v1.1.3-qemu01.img,index=0,media=disk,format=raw
커널 4.4.34-제시
$ qemu-system-arm -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "${APPEND_ARGS}" -kernel ../../qemu-rpi-kernel/kernel-qemu-4.4.34-jessie -net nic -net user,restrict=off -drive file=hypriotos-rpi-v1.1.3-qemu01.img,index=0,media=disk,format=raw