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中也有相應的模塊,否則會找不到根文件系統。
這篇比較簡單,大家有空回去試試吧~