Grub2로 부팅하기 위해 작동하는 chroot 환경 확보

Grub2로 부팅하기 위해 작동하는 chroot 환경 확보

질문

작동 중인 chroot 환경(inittab, fstab, init.d/rcS 설정), 커널 및 grub2가 설치되어 있습니다. 시스템을 작동시키려면 무엇이 더 필요합니까?

배경/세부사항

교육 목적으로 저는 부팅하고 셸을 실행할 수 있는 작은 Linux 환경을 구축하기 시작했습니다.

Virtualbox를 사용하여 가상 머신을 두 개의 하드 드라이브(각 하드 드라이브에는 하나의 파티션만 있음)에 연결합니다. 첫 번째는 Debian을 설치했고, 두 번째는 Busybox를 사용하여 작은 chroot 환경을 구축했습니다.이 기사. 나는 또한 기사에 지시된 대로 inittab, fstab, 및 대부분의 다른 파일 시스템 관련 항목을 설정했습니다 init.d/rcS. 그러나 , 및 두 번째 페이지에서는 부팅 가능한 플로피를 만들지 않은 것 같아서 두 번째 페이지에 관련 작업을 수행하지 genfromfs않았습니다 syslinux.

chroot된 시스템을 부팅하는 방법을 알아내기 위해 다음을 찾았습니다.이 게시물, 나는 도망 갔다 grub-install --root-directory=/mnt /dev/sdb. 마지막으로 완료되었다고 오류가 없습니다.

그런 다음 이번에는 두 번째 하드 드라이브를 유일한 하드 드라이브로 사용하여 새 가상 머신을 생성하고 부팅했습니다. 그것은 나에게 grub 프롬프트를 주었고, 그래서 나는더 많이 구글링했다, 그런 다음 입력했습니다.

set root=(hd0,msdos1)
linux /vmlinuz
boot

나는 가지고있다initrd/initramfs를 이해하는 것은 선택 사항입니다., 그래서 지금은 무시하기로 결정했습니다. 나는 bzImage를 make defconfig사용하여 리눅스 커널을 빌드하고 make빌드 후 x86 디렉토리에 복사했습니다.

그러나 곧 화면이 멈추는 현상이 발생했습니다.

[ 0.74.. ] md: autorun ...
[ 0.74.. ] md: ... autorun DONE.
[ 0.74.. ] Root-NFS: no NFS server address
[ 0.74.. ] VFS: Unable to mount root fs via NFS, trying floppy.
[ 0.74.. ] VFS: Cannot open root device "(null)" or unknown-block(2,0)
[ 0.74.. ] Please append a correct "root=" boot option; here are the avaialbe partitions:
[ 0.74.. ] 0800  ... sda driver: sd
[ 0.74.. ] 0801 ... sda1 ...
[ 0.74.. ] 0b00 .. sr0 driver: sr ..
[ 0.74.. ] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
[ 0.74.. ] Pid: 1, comm: swapper/0 Not tainted 3.2.6 #1
[ 0.75.. ] Call Trae:
[ 0.75.. ]  [<c16..>] panic+0x57/0x157
[ 0.75.. ]  [<c18..>] mount_block_root+0x125/0x1a7
[ 0.75.. ]  [<c10..>] ? sys_mknod+0x27/0x30
.. a few more lines of call trace ...

수동으로 입력해야 해서 일부 숫자와 마지막 몇 줄이 누락되었습니다. 필요한 경우 알려주시면 게시해 드리겠습니다.

답변1

root=grub에서 이 매개변수를 지정 해야 합니다 . 커널이 잘못된 루트 장치를 찾고 있으므로 "알 수 없는 블록" 오류가 발생합니다. 하드 드라이브를 올바르게 감지하는 것을 볼 수 있으므로 grub에서는 다음과 같은 줄을 사용해야 합니다.

linux /vmlinux root=/dev/sda1

관련 정보