使用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中也有相應的模塊,否則會找不到根文件系統。

這篇比較簡單,大家有空回去試試吧~

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