2.6 ARM 커널을 QEMU에서 실행하려면 어떤 단계를 놓치고 있나요?

2.6 ARM 커널을 QEMU에서 실행하려면 어떤 단계를 놓치고 있나요?

QEMU를 사용하여 ARM용 Linux 2.6 커널을 크로스 컴파일하고 부팅하려고 합니다. 나는 기본적으로 다음과 같은 지침을 따랐습니다.모든 튜토리얼이 주제에 대해.

구체적으로:

  1. 커널 다운로드 및 컴파일

    $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- versatile_defconfig
    $ #Disabled loadable modules and enabled initramfs
    $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- all
    
  2. Busybox 컴파일

    $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- arm
    $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- install
    
  3. _installBusybox 디렉토리에서 cpio 아카이브 생성

    $ cd $BUSYBOX/_install
    $ find . | cpio -o -Hnewc | gzip > ../initramfs.gz
    
  4. qemu-system-arm 사용 시작

    $ qemu-system-arm -M versatilepb -m 200M -kernel $KERNEL/arch/arm/boot/zImage -initrd $BUSYBOX/initramfs.gz -append "root=/dev/ram0"
    

결과는 다음과 같습니다.

여기에 이미지 설명을 입력하세요.

커널이 파일 시스템을 인식하지 못하는 것 같은데 어떻게 해결해야 할지 모르겠습니다. 이는 기본적으로 각 튜토리얼에서 따라야 할 정확한 단계입니다. 커널 소스 코드에는 "cpiofs"와 같은 것이 활성화되어 있지 않습니다.

답변1

성공!

제안된 대로 해결책은 CONFIG_INITRAMFS_SOURCE를 내 BusyBox의 "_install" 디렉터리로 지정하여 initrd 이미지를 커널에 포함시키는 것이었습니다. 조언을 주신 jc__에게 깊은 감사를 드립니다.

또한 이 작업을 시도하는 다른 사람이라면 Busybox _install 디렉토리에서 다음을 생성해야 한다는 점에 주목할 가치가 있습니다.

  • 개발/콘솔
  • 개발/루프0

이 기사에서 언급한 바와 같이: https://www.kernel.org/doc/Documentation/filesystems/ramfs-rootfs-initramfs.txt

관련 정보