그래서 저는 이 문제에 대해 한동안 연구했고, 며칠 동안 답을 찾고 있었고, 이제 도움을 요청할 때라고 생각했습니다. 저는 VMWare Fusion에서 Ubuntu 10.10을 실행하고 있으며 3.2 커널 복사본을 다운로드하여 모든 기본 설정으로 빌드했습니다. make install을 호출한 후 새 커널로 부팅하려고 하면 다음 메시지가 나타납니다:
[ 1.581916] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
[ 1.582260] Pid: 1, comm: swapper/0 Not tainted 3.2.4 #1
[ 1.582444] Call Trace:
[ 1.582552] [<ffffffff815e7447>] panic+0x91/0x1a7
[ 1.582666] [<ffffffff815e75c5>] ? printk+0x68/0x6b
[ 1.582799] [<ffffffff81ad2152>] mount_block_root+0x1ea/0x29e
[ 1.582929] [<ffffffff81ad225c>] mount_root+0x56/0x5a
[ 1.583047] [<ffffffff81ad23d0>] prepare_namespace+0x170/0x1a9
[ 1.583178] [<ffffffff81ad16f7>] kernel_init+0x144/0x153
[ 1.583304] [<ffffffff815f45f4>] kernel_thread_helper+0x4/0x10
[ 1.583436] [<ffffffff81ad15b3>] ? parse_early_options+0x20/0x20
[ 1.583570] [<ffffffff815f45f0>] ? gs_change+0x13/0x13
재부팅할 때마다 이런 현상이 발생했습니다. 가상 머신의 하드 드라이브 유형을 변경하면 최소한 GRUB를 부팅할 수 있지만 새로 컴파일된 커널을 로드하려고 하면 위의 메시지가 나타납니다. 이전 커널은 이전과 같이 작동합니다. 내 루트가 실행 중인 파일 시스템인 ext4에 대한 지원을 확인하고 컴파일했습니다. 또한 "sudo update-initramfs -c -k 3.2.4"를 호출하여 initrd 파일 생성을 시도했지만 소용이 없었습니다.
나는 컴파일이 꽤 표준적이라고 생각합니다.
make menuconfig
make
make modules_install
make install
update-grub
reboot
이는 일반적인 단계입니다. 옵션 측면에서 저는 대부분 기본값을 고수했습니다. 관련이 있는 경우 내 fstab은 다음과 같습니다.
proc /proc proc nodev,noexec,nosuid 0 0
#UUID=c75eddd9-f4fa-49be-927b-8c2da7074135 / ext4 errors=remount-ro 0 1
/dev/sda1 / ext4 defaults 0 1
#UUID=5bc6915e-fdfa-479a-885f-ea03cb14f9cd none swap sw 0 0
/dev/sda5 none swap sw 0 0
/dev/fd0 /media/floppy0 auto rw,user,noauto,exec,utf8 0 0
UUID 및 /dev/sd* 표기법을 사용하여 시도해 보았습니다. 매우 실망스럽기 때문에 도움이나 조언을 주시면 대단히 감사하겠습니다.
감사해요.
답변1
커널과 함께 사용할 initrd를 빌드하는 것을 잊었습니다. 실행 update-initramfs -c -k kernelversion
한 다음 update-grub
찾아서 grub 메뉴에 추가하세요.
답변2
루트 파티션을 마운트하는 데 필요한 모든 드라이버를 내장했습니까? I/O 컨트롤러 드라이버, 파일 시스템 드라이버 등을 의미합니까?
이 오류의 의미는 커널이 루트 파일 시스템을 마운트할 수 없다는 것입니다.
unknown block
정확히 무엇인지는 기억나지 않지만 I/O 컨트롤러 드라이버가 없다는 의미인 것 같습니다.
드라이버는 커널에 내장되어야 하며 모듈은 작동하지 않습니다(모듈에 액세스하려면 파일 시스템을 마운트해야 하기 때문).