如何使用自定义内核启动 ubuntu 云镜像

时间:2021-07-29 11:36:50

标签: linux linux-kernel qemu

我尝试将我自己从源代码构建的 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)

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

你引用的日志说磁盘映像是分区的:也就是说,sda是整个(虚拟)磁盘,它有一个分区表,其中有一个名为sda1的分区。您的“追加”命令行要求使用“/dev/sda”,就好像磁盘映像上只有一个文件系统一样。改为尝试“/dev/sda1”。