QEMU에서 bzImage 실행: 알 수 없는 블록(0.0)에 루트 파일 시스템을 마운트할 수 없습니다.

QEMU에서 bzImage 실행: 알 수 없는 블록(0.0)에 루트 파일 시스템을 마운트할 수 없습니다.

make menuconfig커널을 실행하고 컴파일하여 실행했습니다 make. qemu에서 bzImage를 성공하지 못한 채 실행하려고 하는데 qemu -kernel bzImage오류 메시지가 나타납니다.

Unable to mount root fs on unknown-block(0.0)

리눅스 커널 오류

어떻게 해결할 수 있나요? qemu에서 bzImage를 실행하는 방법은 무엇입니까?

답변1

효과가 있었습니다. 커널이 정상적으로 시작됩니다. 오류는 다음과 같습니다

알 수 없는 블록(0.0)에 루트 파일 시스템을 마운트할 수 없습니다.

커널은 루트 파일 시스템을 찾고 있습니다. 하나를 제공해야 합니다. 커널에서 프로세스를 실행하지 않으면 커널과 상호 작용할 수 없으며 초기 프로세스는 어딘가에서 로드되어야 합니다. 커널이 시작되면 디렉토리(루트 파일 시스템)에 파일 시스템을 마운트합니다. /, 그리고 프로그램을 실행/sbin/init. init 프로그램은 일반적으로 부팅 스크립트 실행과 사용자 로그인을 허용하는 프로그램을 포함한 서비스 시작을 담당합니다.

커널이 루트 파일 시스템을 마운트할 수 있는지 확인해야 합니다. 파일 시스템 유형 및 블록 장치(디스크 컨트롤러(SCSI/SATA/IDE/USB/...어댑터), 파티션 유형 등)와 관련된 모든 계층에 대한 드라이버가 있어야 합니다.

Linux는 루트 파일 시스템을 찾고 마운트하기 위해 부팅 중에 사용되는 RAM에 초기 파일 시스템을 로드할 수 있는 또 다른 가능성을 제공합니다. 초기 파일 시스템에는 루트 파일 시스템의 장치 및 파일 시스템 유형을 처리하는 모듈이 포함될 수 있습니다. 약간 다른 두 가지 메커니즘이 있습니다.초기화 프로그램그리고 initramfs.

답변2

파일 시스템은 커널과 별도로 컴파일되지만 커널을 실행하려면 RAM에 존재할 초기 파일 시스템을 만들어야 합니다. 이 초기 램 파일 시스템을 생성하려면 mkinitrd가 사용됩니다. 우분투에서는 대신 mkinitramfs를 사용하십시오

CD ~/linux/linux-2.6.32.59/arch/i386/boot

mkinitramfs -o initrd.img-2.6.32.59

그런 다음 qemu에서 커널을 실행하십시오.

qemu-system-i386-커널 bzImage-initrd initrd.img-2.6.32.59-m 512M

-initrd는 초기 램 파일 시스템을 나타냅니다.

/boot/initramfs-linux.img에서 ram 파일 시스템을 찾을 수 있습니다.

관련 정보