기본적인 initrd 환경을 시작하고 실행하는 데 도움을 찾고 있습니다. 내 목표는 기본 Linux 환경을 만드는 방법에 대한 이해를 높이는 것입니다. 이상적으로는 나중에 임베디드 Linux 시스템으로 전환하고 싶은데, 이것이 시작하기에 가장 좋은 곳인 것 같습니다.
나는 이 주제에 대한 좋은 기본 방법을 찾지 못했기 때문에 대부분 해당 주제에 대해 절반쯤 완성되었거나 불완전한 튜토리얼을 따랐습니다.
다음은 제가 지금까지 수행한 작업에 대한 참조용 방법에 대한 링크입니다.
- http://web.archive.org/web/20120601223451/http://blog.nasirabed.com/2012/01/minimal-linux-filesystem.html
- http://revcode.wordpress.com/2012/02/25/booting-a-minimal-busybox-based-linux-distro/
현재 환경을 부팅할 때 GRUB 프롬프트가 표시되고 여기에 grub.cfg 파일을 추가하려고 시도했지만 시스템이 부팅되고 바로 grub 프롬프트로 이동하면 무시됩니다.
현재 initrd 환경을 시작하려면 다음 명령을 제공해야 합니다.
set root=(hd0,msdos1)
linux /boot/bzImage
initrd /boot/rootfs.cpio.gz
boot
이렇게 하면 미니 OS가 부팅되지만 초기화 파일을 찾을 수 없다는 오류가 발생합니다(rootfs.cpio.gz 파일의 일부이며 해당 구조의 루트에 있음).
.
이 initrd 환경 문제를 어떻게 해결할 수 있습니까?
답변1
Linux 커널이 initramfs 파일 시스템으로 부팅되면 실행되지 않고 /sbin/init
실행됩니다 /init
. 해결 방법은 /sbin/init를 /init에 연결하는 것입니다.
업데이트: 문제를 재현하려고 시도한 결과 아마도 32비트 Linux 커널을 사용하여 64비트 비지박스를 컴파일한 것으로 나타났습니다. 따라서 리눅스 커널은 /init
64비트이기 때문에 프로그램을 어떻게 실행할지 알 수 없습니다. Linux를 다시 컴파일하고 64비트 옵션을 활성화한 다음 이전 버전을 해당 버전으로 교체합니다. 또한 이전에 말했듯이 /init를 /sbin/init에 심볼릭 링크해야 합니다.