虛擬機安裝Windows XP
我之前為了使用Epson印表機,折騰了驅動好一段時間,我後來打算改使用QEMU/KVM虛擬機,我們來實做看看吧。
系統環境
- Debian Testing(forky)+Linux 7.1.8+deb14
- Intel Core 5 120U
- 沒有獨顯
前置工作
- 建立一個專門放虛擬機的目錄(我是~/Data/virtual_machine)
- 關閉這一個目錄的寫時複製
sudo chattr +c ~/Data/virtual\_machine
- 檢查是否支援虛擬化(其值不為零)
sudo grep -E -c '(vmx|svm)' /proc/cpuinfo
- 檢查是否載入KVM模組(應不為空)
sudo lsmod | grep kvm
安裝虛擬機
我推薦直接看Ivon大大的〈Ubuntu安裝QEMU/KVM和Virt Manager虛擬機管理員〉即可。我下面就簡單帶一下
- 下載需要的套件
sudo apt install qemu-system libguestfs-tools libvirt-clients libvirt-daemon-system bridge-utils virt-manager ovmf swtpm
- 修改群組
sudo usermod -a -G libvirt $USER
sudo usermod -a -G kvm $USER
sudo usermod -a -G input $USER
- 啟動服務
sudo systemctl enable libvirtd
sudo systemctl start libvirtd
- 啟動虛擬機的網卡
sudo virsh net-start default
sudo virsh net-autostart default
安裝Windows XP
推薦去【Windows 全攻略】各版本Windows ISO 下載下載ISO。下載32位元的Windows XP SP3
到How to install Windows XP in QEMU下載給Windows XP的VirtIO的驅動(或是點這裡下載32位元的驅動),點這裡下載VirtIO的網卡驅動。
建立虛擬機的硬碟,可以將20GB改為你想要的容量。
qemu-img create -f qcow2 **/home/xjd/Data/virtual\_machine/winxp.qcow2** 20G
如果有空格,要加雙引號
qemu-img create -f qcow2 "/home/xjd/Data/virtual\_machine/Microsoft Windows XP.qcow2" 20G
- 打開終端機,修改下列粗體字,將其斜線內容貼入終端機。
qemu-system-i386 -M q35,usb=on,acpi=on,hpet=off \
-global q35-pcihost.x-pci-hole64-fix=false \
-m 4G -cpu host -accel kvm \
-drive if=virtio,file=**"你的qcow2的位置"** \
-drive if=floppy,file=**"你下載的xp\_q35\_x86.img位置"**,format=raw \
-device usb-tablet -device VGA,vgamem\_mb=64 \
-nic user,model=virtio -monitor stdio \
-cdrom **"**你下載的WindowsXP SP3\_ x86.iso的位置" \
-boot d
進入Windows XP的安裝界面(藍底界面),立刻按下F6,我們來安裝VirtIO的驅動。按下S鍵,選擇Intel...,按下Enter。之後會回到WIndows Setup,此時再按下S,選擇RedHat...,會再次回到WIndows Setup,再按下Enter。

完成後續的安裝步驟。
之後可以用下列命令來啟動虛擬機(-smp參數指定CPU的核心數)
qemu-system-i386 -M q35,usb=on,acpi=on,hpet=off \
-global q35-pcihost.x-pci-hole64-fix=false \
-m 4G -cpu host -smp cpus=4,sockets=1,cores=4,threads=1 -accel kvm \
-drive if=virtio,file=***"你的qcow2的位置"*** \
-device usb-tablet -device VGA,vgamem\_mb=64 \
-nic user,model=virtio -monitor stdio
安裝驅動
終端機可以看到開頭叫做「(qemu)」,我們可以在這個後面執行命令。
執行info block,查看光碟機代號,我的是ide2-cd0
(qemu) info block
virtio0 (#block165): /home/xjd/Data/virtual\_machine/winxp.qcow2 (qcow2)
Attached to: /machine/peripheral-anon/device[2]/virtio-backend
Cache mode: writeback
ide2-cd0: [not inserted]
Attached to: /machine/unattached/device[15]
Removable device: not locked, tray closed
- 掛載VirtIO驅動
change ide2-cd0 /home/xjd/Data/virtual\_machine/ISO/virtio-win-0.1.285.iso
打開XP的裝置管理員,更新網卡驅動

在「Windows是否可以連線到WIndows Update尋找軟體」,選「不,現在不要」。這一個驅動WIndows Update沒有,並且xp的Windows Update的伺服器早就關了。
選擇「從清單或是特定位置安裝(進階)」
選擇「不要搜尋...」
選擇「網路介面卡」
選擇「從磁片安裝」,完成後續安裝。

其他驅動也是依樣畫葫蘆,我就不展示了。SM Bus是光碟片裡面的qemupciserial/2k8/x86/qemupciserial.inf。任選一個Red Hat的Q35驅動即可。
可以到http://win32subsystem.live/supermium/legacy/下載supermium瀏覽器。
最後成果

參考資料
- Btrfs。Arch Wiki。
- How to install Windows XP in QEMU
- QEMU。Arch Wiki。