使用qemu运行指定内核

qemu除了是运行虚拟机的工具,也是内核开发调试的好帮手。内核开发者和测试人员常常在qemu中运行指定的内核来验证功能。

这么做有几个好处

  • 同一台物理机上可以运行多个qemu
  • 内核编译和虚拟机本身分离
  • 代码只需要在主机上有副本,而不需要在虚拟机内也有
  • 减少了对虚拟机内系统配置要求
  • 相对物理机启动虚拟机的时间要短
  • 内核调试

总之,这个功能真的很不错,而且其实并不难。

命令行

sudo qemu-system-x86_64 -m 4096 \
-smp 4 --enable-kvm \
-drive file=/home/richard/guest/ubuntu.img \
-kernel /boot/vmlinuz-4.7.0+ \
-initrd /boot/initrd.img-4.7.0+ \
-append 'root=/dev/sda1 ro  quiet splash'  \
-vnc :4

通扑通命令之间相差的就是那三个参数。

  • kernel 就是你要运行的内核了
  • initrd 对应的initrd
  • append 传给内核的参数

前面两个好说,最后那个可以看引导程序中的参数,抄过来就可以了。

另外需要注意一点,如果主机和虚拟机使用的是同一个发行版,安装方式是一样的,这么做没有什么问题。但是如果不一样可能会遇到问题。比如我遇到过的问题是虚拟机中使用了lvm,这样需要initrd中也有相应的模块,否则会找不到根文件系统。

这篇比较简单,大家有空回去试试吧~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章