我尝试将我自己从源代码构建的 Linux 内核用于 ubuntu cloud image 并使用 QEMU 启动它。我定制的内核在 ubuntu 镜像之外:
$ ls
kernel ubuntu-20.04-amd64.img ...
这是我使用的命令行:
sudo qemu-system-x86_64 \
-enable-kvm -cpu host -smp 2 -m 4096 -nographic \
-drive id=root,media=disk,file=ubuntu-20.04-amd64.img \
-kernel ./kernel/arch/x86/boot/bzImage \
-append "root=/dev/sda console=ttyS0" \
-device e1000,netdev=net0 -netdev user,id=net0,hostfwd=tcp:127.0.0.1:5555-:22
当我启动它时,我可以看到以下日志:
[ 0.875446] List of all partitions:
[ 0.875736] 0800 4194304 sda
[ 0.875736] driver: sd
[ 0.876259] 0801 4194303 sda1 00000000-01
[ 0.876259]
[ 0.876893] No filesystem could mount root, tried:
[ 0.876893] ext3
[ 0.877435] ext2
[ 0.877610] ext4
[ 0.877834]
[ 0.878149] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(8,0)
有什么建议吗?
答案 0 :(得分:1)
你引用的日志说磁盘映像是分区的:也就是说,sda是整个(虚拟)磁盘,它有一个分区表,其中有一个名为sda1的分区。您的“追加”命令行要求使用“/dev/sda”,就好像磁盘映像上只有一个文件系统一样。改为尝试“/dev/sda1”。