虛擬機器現況
(個人認為)在虛擬界裡,幾個有名的包含
- VMWare:最強最貴,相容性最好
- VirtualBox:免費,還算可以。Windows / Linux 也都有。
- VirtualPC:Microsoft 的,沒用過…
- KVM:Linux 的,也挺快的,不過就是週邊裝置支援有限
前2個我用的比較普遍,KVM就是介面不太ok,所以也沒在用。但是有另外一套,我很早就知道,也稍微用過一下,就是今天要提的 QEMU。QEMU 就是 Quick EMULator 的縮寫,在Windows和Linux上都可使用。以現在的標準,他事實上的慢到靠杯了。但也不能怪他,因為他堅持的是 User Mode 的 Emulator。而且他至少支援30幾種不同的 CPU 架構,所以在模擬界也算是不可缺的一角,不然一些奇奇怪怪的CPU,連實機都很難找了,還去哪找模擬器。
另外他很重要的一個特性是免安裝!解壓縮就可以用,這有一點類似沙盒的作用,方便來驗証一些東西。
INTEL 讓 QEMU 變快了
但在x86上,QEMU也受惠 Intel 對虛擬化VT技術的硬體支援,速度也跟著飛快起來。在 Linux 可利用 KVM 的支援,在 Windows 上則使用 Intel 的 HAXM 介面,使得 QEMU 在使用者層級模擬有很大的改善 (其實也不能這樣說,因為有其它層提供了Kernel層的支援)。
如果你覺得用 VMWare, Virtualbox 就好了,幹麻用 QEMU。這點我也不能否認,前面2者的UI,週邊支援都打趴 QEMU。但 QEMU 最大的優點就是他可以透過命令列做所有的操作,這對寫 Script 來做自動化非常的方便。雖然我目前也還用不上,不過剛好這2天有研究一下,就把實用的命令先記下來吧。
實用QEMU簡例
2018/12/22 更新:由於 QEMU 持有在進版,使的參數用法有變。現有參數導致在 Windows Host 無法安裝 Windows Guest,但可裝 Linux Guest。另外 Intel HAXM 硬體加速也無法使用,我退了好幾版的 QEMU 都無法解決,也許是 Intel HAXM 更新後的相容性問題。
2020/04/29 更新:最新試驗的 HAXM (7.5.6) 與 QEMU (20200201) 搭配下,目前 Linux 有加速效果!已將檔案放在分享連結內,以免哪天有不正常了。
1. 創造磁碟映象檔
1 2 |
qemu-img create -f [qcow2|raw] fs.img 40G ; -f 指定檔案格式,qcow2 的檔案會慢慢長大,而 raw 則是一次分配完。qcow2 還有其它功能,一般用 qcow2 就可以了 |
2. 啟動虛擬機。QEMU 沒太多廢話,所有的虛擬機周邊都在參數裡設定. 2024/02/10 更新, Intel 已不在支援 HAXM 了, 改由 Windows 的 Hyper-V接手。改使用 whpx 加速器。
這邊由於 QEMU 指令太長,加了斷行符號。在 Windows 是 “^”,而在 Linux 是 “\”
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
qemu-system-x86_64 -boot c -cdrom d:\ubuntu.iso -drive file=fs.img -m 2048 -device e1000,netdev=net0 ^ -netdev user,id=net0,hostfwd=tcp::2223-:22,hostfwd=tcp::1199-:3389 ^ [-enable-kvm|-accel hax|-accel whpx] ^ -device usb-ehci,id=usb,bus=pci.0,addr=0x4 -device usb-mouse -device usb-tablet -device usb-kbd ^ -vnc :1 -smp 4 ; -boot ==> 設定開機來源, c是磁碟, d是光碟。也可以從軟碟開機,目前沒研究 ; -cdrom ==> cdrom 要掛載的 ISO 檔 ; -drive ==> 指定磁碟要掛載的檔案,就是剛創造的 image ; -m ==> 指定記憶體的大小 ; -device e1000,netdev=net0 -netdev user,id=net0,hostfwd=tcp::2223-:22,hostfwd=tcp::1199-:3389 ; ==> 上面的參數不是很充份瞭解,但最重要的是可以讓 ; 虛擬機連接上網 (<strong>但是 PING 不行用</strong>) ; 可以透過本機的 127.0.0.1:2223 連進虛擬機的TCP 22和127.0.0.1:1199連進TCP 3389 Port,這兩個分別是SSH與RDP在用的 ; -enable-kvm ==> 這是 Linux 上使用 KVM 加速。支援 Hyper-V 的使用 -accel whpx,若是舊版使用 Intel HAXM 的參數是 -accel hax。若會當機,就不要加這些參數。但是會"非常"慢 ; -device usb-ehci,id=usb,bus=pci.0,addr=0x4 -device usb-mouse -device usb-tablet -device usb-kbd ==> 模擬 USB 鍵盤滑鼠 ; -vnc :1 ==> 啟用 VNC, 在操作上會比 QEMU 自帶的 GUI 視窗方便 |
參考
- 我的免費有線分享器: qemu/kvm 虛擬區網
- Gentoo Linux QEMU Options
- [轉貼] 虛擬機器-QEMU簡介
- Accelerating QEMU on Windows with HAXM
Latest Comments