프로젝트의 경우 압축되지 않은 Linux 커널을 실행할 수 있어야 합니다. QEMU를 사용하여 이를 에뮬레이트하는 것이 제안되었습니다. 이는 머신에서 직접 실행하는 것보다 덜 복잡하기 때문입니다. 하지만 QEMU에서는 커널을 올바르게 로드할 수 없습니다. 저는 아치 리눅스를 사용하고 있습니다.
그것을 사용하여 이미지를 생성했습니다 mkinitcpio --generate customImage3.img --kernel 5.9.1-arch1-1
. 그런 다음 다양한 명령줄 옵션 조합을 사용하여 QEMU를 실행해 보았습니다. 최신 내용은 다음과 같습니다.
sudo qemu-system-x86_64 -kernel ../kernel-build/linux-5.9.1/vmlinux -nographic -initrd customImage3.img -append "console=ttyS0" -m 512 --enable-kvm -cpu host
root=/dev/sda3
예를 들어 추가 섹션에 "root"를 지정하려고 시도했지만 오류가 발생하는 것은 변경되지 않습니다.
QEMU를 실행할 때의 출력은 다음과 같습니다.
SeaBIOS (version ArchLinux 1.14.0-1)
iPXE (http://ipxe.org) 00:03.0 CA00 PCI2.10 PnP PMM+1FF912A0+1FEF12A0 CA00
Booting from ROM..mount: /proc: must be superuser to use mount.
mount: /sys: must be superuser to use mount.
mount: /dev: must be superuser to use mount.
mount: /run: must be superuser to use mount.
/init: line 13: can't open /proc/cmdline: no such file
:: running early hook [udev]
Warning: /lib/modules/5.9.1/modules.devname not found - ignoring
Failed to parse kernel command line, ignoring: No such file or directory
Starting version 246.6-1-arch
:: running hook [udev]
:: Triggering uevents...
Failed to scan subsystems: No such file or directory
Failed to scan devices: No such file or directory
ERROR: device '' not found. Skipping fsck.
:: mounting '' on real root
mount: /new_root: mount failed: Operation not permitted.
You are now being dropped into an emergency shell.
sh: can't access tty; job control turned off
[rootfs ]#
부팅할 장치 등 필요한 것을 찾을 수 없는 것 같습니다. 몇 가지 주요 옵션이 누락된 것 같지만 아무리 검색해도 필요한 것이 무엇인지 파악하는 데 도움이 될 수 없습니다. 이 상황에 관한 도움을 주시면 대단히 감사하겠습니다.
답변1
이것은 mkinitcpio의 버그입니다:아카이브의 uid=0 gid=0 설정 수정
해결책은 sudo를 사용하여 mkinitcpio를 호출하는 것입니다.