跳到主要內容

QEMU安裝與測試-x86篇

QEMU安裝與測試-x86篇

以下都是在 WSL(Windows Subsystem for Linux) 第2版(WSL 2)環境下用 Ubuntu 24.04 測試的:

qemu-system-x86_64 --version

上面的指令顯示 QEMU x86_64 模擬器的版本,以下用 8.2.2 版測試安裝 Windows 10:

Windows 10 安裝光碟映像檔可以從微軟下載媒體安裝工具,然後依媒體安裝工具指示下載 ISO 檔,下載完成後準備一個虛擬磁碟機檔案進行安裝,例如:

qemu-img create -f qcow2 winten.qcow2 40G

上面的指令用 QEMU 映像檔工具建立虛擬磁碟機檔案 winten.qcow2,設定最多可以成長至40G,準備好就開始進行安裝:

sudo qemu-system-x86_64 -M q35 \
 -m 2G \
 -hda winten.qcow2 \
 -cdrom Windows.iso \
 -boot d \
 -accel kvm \
 -device qemu-xhci \
 -device usb-tablet

上面的指令用 qemu-system-x86_64 模擬 q35 晶片組的主機,加上 -m 選項模擬 2G 的記憶體,檔案 winten.qcow2 作為磁碟機,檔案 Windows.iso 作為光碟機,設定光碟開機,因為使用 x86 主機模擬 x86 架構,這裡加上 -accel kvm 選項(Kernel-based Virtual Machine)啟動核心虛擬機支援(WSL 已經可以使用),然後加入 USB 控制器,在上面加入 USB 平板以取代 PS/2 滑鼠,避免鼠標錯亂。

請按照正常程序安裝 Windows,建置好的 Windows 虛擬機也需要正常關機,以避免虛擬磁碟機檔案毀損。

由於 /dev/kvm 權限設定的關係,加上 -accel kvm 選項後 qemu-system-x86_64 需要用 root 執行,可以將執行模擬器的帳號加入 kvm 群組,避免後續問題,例如:

sudo usermod -a -G kvm username

提醒:加入群組需要重新登入後生效。Windows 安裝完成後,下次啟動 Windows 虛擬機記得改由硬碟開機,例如:

qemu-system-x86_64 -M q35 \
 -m 2G \
 -hda winten.qcow2 \
 -cdrom Windows10.iso \
 -boot c \
 -accel kvm \
 -device qemu-xhci \
 -device usb-tablet \
 -audiodev pa,id=snd0 \
 -device usb-audio,audiodev=snd0 \
 -daemonize

另外,WSLg 支援 PulseAudio 音效,Ubuntu 內建 PulseAudio 音效伺服器,上面的指令還加入 -audiodev 選項,使用 pa 音效,並加入 usb-audio 選項模擬 USB 音效卡,這樣虛擬機就可以輸出音效。加入 -daemonize 選項則是以背景模式執行。

留言

這個網誌中的熱門文章

自動建立樞紐分析表

樞紐分析表( PivotTable )是交叉分析的好幫手,還可以深入分析(drill-down)與彙總(roll-up)各個維度的資料。建立樞紐分析表也很容易,但有時候應用程式仍然有自動建立樞紐分析表的需求,Excel VBA 建立樞紐分析表的方式之一就是用 Worksheet.PivotTableWizard 方法。以Office範本藝廊的 銷售員樞紐分析表 來源資料為例: ActiveSheet.PivotTableWizard xlDatabase, Range(“A1:E800”), Range(“G3”) 即可產生樞紐分析表。如果沒有指定位置(TableDestination)的話,會放在 ActiveCell,如果也沒有 ActiveCell 的話,會放在新的工作表。 樞紐分析表會被加到  PivotTables 集合物件中,可經由 Worksheet.PivotTables 方法取得,例如: For Each oPvtTable In ActiveSheet.PivotTables   oPvtTable.TableRange2.Clear Next 會清除工作表內所有的樞紐分析表 [1] 。 應用程式也可以設定樞紐分析表的屬性,例如透過欄位清單( PivotFields )設定欄位方向( XlPivotFieldOrientation ): Set oPvtTable = ActiveSheet.PivotTableWizard(xlDatabase, Range("A1:E800")) oPvtTable.PivotFields("國家").Orientation = xl xlPageField oPvtTable.PivotFields("銷售員").Orientation = xlRowField oPvtTable.PivotFields("訂單金額").Orientation = xlDataField 此外, Worksheet.PivotTableWizard 可以從不同的資料來源( XlPivotTableSourceType )建立樞紐分析表,以Access 範本資料庫 Northwind...

WSL 與應用程式

WSL(Windows Subsystem for Linux) 是 Windows 環境下的 Linux 環境, 前面 介紹過藉由 WSL 可以從 Linux 環境執行 Windows 應用程式,也可以從 Windows 環境執行 Linux 應用程式,兩種應用程式性質有些不同,在 Linux 命令列視窗下達: notepad.exe 即可執行 Windows 裡的記事本,Windows 工作管理員會出現記事本(不會出現在 Linux 工作列表裡面)。在 Windows 命令列視窗(命令提示字元或 PowerShell)下達: wsl   vi 即可執行預設 Linux 版本裡的 vi 編輯器,Linux 工作列表裡面會出現 vi 編輯器(不會出現在 Windows 工作管理員裡面)。在 Linux 命令列視窗下達: ps   -e 即可列出 Linux 工作列表。是的,記事本不是 Linux 應用程式,不會出現在 Linux 工作列表;vi 編輯器不是 Windows 應用程式,不會出現在 Windows 工作管理員。原則上,WSL 限制 Windows 應用程式無法取得 Linux 系統管理員權限。