現在的 PC 上面有很多虛擬化技術,
像是 virtualbox、 xen、 vmware、 ...
等等都可以創建虛擬機, 把 guest OS
關在一個視窗裡面獨立執行。
於是你可以在 windows 裡面跑 linux 或反之亦然。
但是如果你只是想測試一下開機光碟或開機隨身碟,
而沒有要把 (關在視窗裡面執行的) guest OS
安裝到硬碟上, 那麼最簡單、 最不囉嗦的方式就是使用 qemu:
一個指令啟動, 免設定!
以下假設你的電腦用
debian linux 開機, 並且硬碟裡已經有一個
xyz.iso 的光碟映像檔 -- 例如
阿貴版 finnix 救援光碟。
[2/26 更新: 或直接用 ckhung15c
版之後的阿貴版 finnix 開機也可以。 請把所有
kvm ...
指令改成
qemu-system-x86_64 -enable-kvm ...
然後你就可以玩
虛擬機俄羅斯套娃]
Windows 用戶請先檢查你的 windows 是 32 bit 還是 64 bit: win7 / win8 然後下載 windows 版 qemu。 但是在 windows 底下, qemu 無法使用 svm/vmx 加速功能。
以下假設讀者使用的是 debian linux。 iso 檔已經下載完畢了嗎? 計時開始。
首先測試一下你的 cpu 是否支援硬體虛擬化:
egrep --color=auto 'svm|vmx' /proc/cpuinfo
如果有看到 svm, 那麼你擁有一顆支援硬體虛擬化的 amd cpu;
如果有看到 vmx, 那麼你擁有一顆支援硬體虛擬化的 intel cpu。
總之, 你可以安裝 qemu-kvm 套件:
apt-get install qemu-kvm
。
(詳見
howtogeek 文章)
如果都沒有... 那就哭吧。 還是可以用 qemu 跑虛擬機,
但速度會超慢。 請把以下的 kvm ...
指令全部改成
qemu-system-x86_64 ...
(模擬 64bit 機器)
或 qemu-system-i386 ...
(模擬 32bit 機器)
以下是我自己最常用的命令列參數及控制鍵。
不必任何設定, 直接下: kvm -cdrom xyz.iso
開機完成, 進入先前下載的免安裝 live CD。
看! 沒超過五分鐘, 對吧? 進入之後, 網路會自動連線。
根據
官網文件, ping 指令失效, 但其他諸如瀏覽下載都正常。
如果不小心滑鼠被 guest 吃掉了, 按 ctrl-alt 可以逃離。
(其實 qemu 視窗最上面有提示。)
啟動 guest 的同時, 可以保留一個下指令的命令列:
kvm -monitor stdio -cdrom xyz.iso
這個命令列叫做 qemu-kvm 的 monitor。
我最常用的指令是 sendkey。
比方說如果 guest 當在圖形介面底下, 或圖形介面亂掉,
這時可以從 qemu-kvm 的 monitor 下這個指令:
sendkey ctrl-alt-f3
切換到 vt3
(第三個 虛擬終端機 virtual terminal),
再下 sendkey ctrl-alt-delete
可以正常關機並且重新啟動 guest。
更多 qemu monitor 的指令請見
「使用 monitor command 监控 QEMU 运行状态」 及
wikibooks。
又, 如果啟動時沒有加上 「-monitor stdio」 的選項,
後來才想到要用, 也可以在虛擬機視窗底下按
「ctrl-alt-2」 切換至 monitor。 下完 qemu 的指令之後,
按 「ctrl-alt-1」 就切換回虛擬機。
Qemu 預設模擬 cirrus 顯示卡
(詳見 man qemu-system
)
某些狀況下, linux 的 live CD 無法進入圖形介面
(我遇過 antix 跟 puppy linux 都是可以進入文字虛擬終端機,但無法進入圖形介面)。
這時可考慮改模擬不同的顯示卡, 例如 virtio 或 VGA 等等。
詳見 man qemu-system-i386
。
我喜歡用 -vga virtio 因為進入 guest 之後可以下 arandr 任意修改解析度。
另外, 預設只配給每部虛擬機 128MB 的記憶體, 完全不夠用。
[2023/08/08] 以下是我用來啟動 32bit 版 antiX 22 的命令列:
qemu-system-i386 -enable-kvm -monitor stdio -vga virtio -m 2048 antiX-22_386-full.iso
如果手邊有開機隨身碟的話, 也一樣。 請先下:
fdisk -s /dev/sd?
,
然後插入開機隨身碟, 再下一次
fdisk -s /dev/sd?
,
比較兩次的差異, 就可看出這顆隨身碟的代號。
(注意! 等一下要給虛擬機用, 所以
不可以 把隨身碟掛載起來!)
假設它叫做 /dev/sdx。 那麼可以拿它來開啟虛擬機:
kvm -monitor stdio /dev/sdx
。
警告! 玩完了, 要記得從 guest 裡面正常關機。
如果直接關掉視窗, 就等同於暴力關機,
可能會傷害隨身碟上的作業系統。
也可以讓 qemu 同時看到光碟跟隨身碟,
這樣可以從光碟開機、 把作業系統安裝到隨身碟上:
kvm -monitor stdio -m 1024 -cdrom xyz.iso
-boot order=dc /dev/sdb
。 這裡的 "-boot order=dc"
意思是先試著從 d: (光碟機) 開機, 其次再試著從 c:
(被當成硬碟的隨身碟) 開機。
例如, 你可以用這個方式練習
安裝 Debian 8.0 Jessie RC1。
注意: 安裝在隨身碟上、 未經進一步調校的作業系統,
只適合拿來短暫實驗。 如果拿來每天使用,
有可能因為寫入過於頻繁而導致隨身碟毀壞。
不小心把視窗拉變形了嗎? (太胖或太瘦) 按 ctrl-alt-u 可以按照 guest 的解析度恢復正常大小。
滑鼠不能動嗎? qemu-kvm 預設的 ps2 滑鼠模擬有時會出問題。
啟動時請多加一段: -usbdevice mouse
改成模擬 usb 滑鼠試試看。
guest 的視窗好像不夠大, 不論如何放大縮小, 最上面或最下面會有一橫列的畫面看不見嗎? 試著把 guest 的解析度改成 1280x720 看看。 詳見 這篇。
你也可以在硬碟上挖一個檔案作為硬碟映象檔拿來給虛擬機用, 這樣就沒有寫入過於頻繁的問題。 詳見 用 qemu-img 與 qemu-nbd 管理 qcow2 虛擬硬碟。
我在我的 root 的 .bashrc 裡面加了這兩句:
alias mykvm='kvm -monitor stdio -redir tcp:8022::22 -m 1024 -vga std -cpu host -usbdevice mouse' alias myfkvm='mykvm -cdrom /x/cdrom/finnix-ckhung16c.iso -boot order=dc'
這樣以後命令列就不必打那麼長了。
現在再回頭看 「android-x86 在電腦裡面玩平板」 是不是更簡單一些了呢?
進一步推薦閱讀:
- 虛擬機器-QEMU簡介
- 很長的官網文件
man qemu-system
[2021/8/9] kvm 指令很適合測試 live CD 這樣一次性的工作; 如果需要長期使用一部虛擬機, 或是需要把虛擬機拉到 host 層級的 LAN, 這些情況我現在都改用 virt-manager 比較方便。
沒有留言:
張貼留言
因為垃圾留言太多,現在改為審核後才發佈,請耐心等候一兩天。