Hyper-V Linux
使用 Hyper-V 當虛擬機的原因是它可以啟用硬体 GPU。
雖說 VMware 也可以啟動硬体 GPU,但必需加裝 vSphere 套件。Sphere[sfɪr] 是球型、領域的意思,vSphere 可以翻譯成虛擬領域。 VMware 在 2024年2月取消 vSphere 的免費版本,造成全球的經銷商大出走,不想再替 VMware 出售它們的軟体。
另外 Hyper-V 使用系統服務可於開機時自動啟動,不像 VMware 還要自已撰寫服務程式,所以 Hyper-V 看起來方便許多。
Hyper-V 也可以設定橋接器,直接變成另一台 Linux 電腦,而且跟宿主機同網域。這比 WSL2 只能使用 NAT強很多。
另有市面常見的 Android 模擬器,比如 BlueStack, 雷電等,新版本都已可以支援 Hyper-V 了。
安裝虛擬機
啟動 Hyper-V
開始/Windows 工具系統/控制台/程式集/開啟或關閉 Windows 功能,將 Hyper-V 勾選,然後重新開機。
然後開啟 “開始/Windows 工具系統/Hyper-V 管理員“,連線到伺服器,選擇本機電腦。
虛擬交換器
虛擬交換器是為了得到一個能產生 bridge (橋接器) 的虛擬網卡。請選取虛擬交換器管理員,選外部,再按下建立虛擬交換器,名稱填入 HV_Bridge
此時打開網卡設定視窗,多了 vEthernet(HV_Bridge) 這張虛擬網卡,宿主機會改用 HV_Bridge 這張網卡上網。

特別注意,如果原本宿主機有自訂 IP 時,此時宿主機不能上網,這是因為 Hyper-V 將 HV_Bridge 網卡的 DNS 刪除掉了,所以需進入 HV_Bridge 手動填入 DNS,這應該是 Hyper-V 的 Bug。
慣用 DNS 伺器(P) : 168.95.1.1
其他 DNS 伺服器(A): 168.95.192.1
建立虛擬機
按下新增/虛擬機器,虛擬機名稱輸入 “Ubuntu2404“,勾選將虛擬機儲存在不同位置,然後選其它磁碟機,比如 E:\hyper

接下來的畫面,請選擇第2代,效能會比較高。

再來設定啟動記憶体,因為本人的宿主機有64G,所以就設定為 16384MB,動態記憶体不一定要取消。

接下來的連線選 “HV_Bridge”,建立虛擬硬碟的大小設定為 1024 GB,安裝作業系統選映像檔,然後選取 ubuntu 的 iso 檔。
上述設定完成後,請先不要開始安裝,因為還要設定如下幾個選項,請進入虛擬機的設定
處理器 : 虛擬處理器數目改成4~8。
安全性 : 啟用安全開機請取消,否則無法安裝 dxgkrnl 核心驅動。
動態記憶体 : 如果是 Ubuntu26.04,一定要取消動態記憶体,否則會常因 OOM 而當機。

最後在檢查點請取消啟用檢查點。然後就可以按下連線並啟動,開始進行 Ubuntu 的安裝。
Ubuntu 2604 設定
Ubuntu 26.04 有些設定跟 24.04不太一樣,需進行如下設定
vim 無法右鍵貼上
🔒 更多內容,請登入會員繼續閱讀。
立即登入啟用 ssh
ssh 已安裝完成,還需手動啟動
sudo systemctl enable ssh sudo systemctl start ssh
安裝時當機
Hyper-V 安裝 Linux 時,若當機無法關閉,請使用系統管理員開啟 Powershell,執行如下指令
Restart-Service vmms -Force Stop-VM -Name "Ubuntu2404" -Force
安裝常用套件
虛擬機安裝完成後,請依如下安裝常用的套件。
sudo add-apt-repository ppa:deadsnakes/ppa sudo apt update sudo apt install -y python3.12 python3.12-venv python3.12-dev sudo apt install net-tools sudo apt install build-essential flex bison dwarves libssl-dev libelf-dev cpio qemu-utils git dkms libncurses-dev
共用宿主機 GPU
共用宿主機 GPU 的重要性及相關知識如下。
AI 開發福音:單台 Windows 電腦即可讓獨立的 Ubuntu 虛擬機共用宿主機 GPU。
核心技術:微軟開發 dxgkrnl 核心驅動,透過 Hyper-V GPU-PV(顯卡半虛擬化)實現資源共享。
開源移植 : dxgkrnl 雖為 WSL2 打造,但藉由開源社群成熟的 dxgkrnl-dkms 專案,已能完美移植至標準 Hyper-V Linux 虛擬機。
運作原理 : 虛擬機不直接存取實體 GPU。而是在虛擬機內配置 GPU-PV 虛擬硬體,透過 dxgkrnl 驅動與宿主機的 DirectX 溝通並發送指令。
關鍵前置設定 : 掛載 GPU-PV 前,必須關閉檢查點功能,否則虛擬機會因硬體變更而無法載入。
設定路徑:Hyper-V 虛擬機設定 ➡️ 檢查點 ➡️ 取消勾選「啟用檢查點」。

新增 GPU-PV 虛擬硬体
先關閉虛擬機,然後在宿主機新增 init.ps1 檔案,並輸入如下設定
🔒 更多內容,請登入會員繼續閱讀。
立即登入使用系統管理員開啟 PowerShell,執行 init.ps1。
開啟虛擬機,輸入 lspci,就會看到多了 “3D controller: Microsoft Corporation Device 008e”,這就表示 GPU-PV 新增成功。

執行 sudo lshw -C display,就會看到新增底下紅色的框框的硬体,只是目前沒有驅動程式

安裝 dxgkrnl 驅動程式
安裝 dxgkrnl 有二種方式,第一種使用 dxgkrnl-dkms 只載入 dxgkrnl 驅動,第二種是使用微軟的 wsl2-linux-kernel 將整個核心換掉。
安裝 dxgkrnl 的網路資訊非常少,而且沒有完整的教學步驟,本篇可算是非常完整的教學說明。
第一種 dxgkrnl-dkms
這種方式只會編譯並載入 dxgkrnl.ko.zst 驅動程式,維持 ubuntu 24.04 原先 kernel 的設定,其核心版本還是 6.8.0-134-generic ,是最為穩定,最為推薦的方法。
🔒 更多內容,請登入會員繼續閱讀。
立即登入執行後如果有看到 “depmod….“,表示安裝成功,如下圖所示。

切記執行上述指令後,要執行 sudo reboot 才會生效。
此法會編譯出 dxgkrnl.ko.zst 檔案,然後安裝到 /lib/modules/6.8.0-134-generic/updates/dkms 目錄之下。
而且此法會把下載的 dxgkrnl-dkms 原始碼複製到 /usr/src/dxgkrnl-6.6-xxx 目錄,下次 ubuntu 更新核心後,會由此目錄自動重新編譯並安裝,所以 dkms 模組還是會被保留。
第二種 WSL2 Linux Kernel – 不建議
第二種方式是使用微軟專為 WSL2 Linux Kernel 所維護的專案,https://github.com/microsoft/wsl2-linux-kernel?utm_source=chatgpt.com ,將整個核心重新編譯並換掉,這非常不穩定,並不建議,僅作記錄而以。
先安裝編譯核心驅動時所需的套件
sudo apt install build-essential flex bison dwarves libssl-dev libelf-dev cpio qemu-utils libncurses-dev
下載 dxgkrnl 原始碼
git clone https://github.com/microsoft/WSL2-Linux-Kernel.git
編譯核心程式,需費時相當久的時間,約 30 分鐘到 1 小時。底下的 -j8 是啟用 8 核心編譯,視自已的設定而定。
cd WSL2-Linux-Kernel make -j8 KCONFIG_CONFIG=Microsoft/config-wsl
上述編譯超久,有時甚至會編譯錯誤,所以可到本站下載已編譯好 WSL2-Linux-Kernel.tar.gz,請置於家目錄之下,然後執行如下指令解開。如果是由原始碼從頭編譯,請跳過此操作。
cd rm -rf WSL2-Linux-Kernel tar zxvf WSL2-Linux-Kernel.tar.gz cd WSL2-Linux-Kernel
將編譯好的 kernel modules 安裝到指定的目錄
make INSTALL_MOD_PATH="$PWD/modules" modules_install
安裝 kernel 到 系統的 /boot
sudo make install
安裝好,立即重新開機
sudo reboot
完整的安裝步驟如下
sudo apt install build-essential flex bison dwarves libssl-dev libelf-dev cpio qemu-utils libncurses-dev git clone https://github.com/microsoft/WSL2-Linux-Kernel.git cd WSL2-Linux-Kernel #底下編譯核心驅動會很久,約要30分鐘 make -j8 KCONFIG_CONFIG=Microsoft/config-wsl make INSTALL_MOD_PATH="$PWD/modules" modules_install sudo make install
複制 Windows 下的驅動到虛擬機
虛擬機的顯卡不可以直接安裝 nvidia 的驅動程式,必需由宿主機的 Windows 系統 copy。請先開啟虛擬機,然後在宿主機新增 libs.ps1,輸入如下代碼。請注意下面的 $username 是登入虛擬機的帳號, $ip 是虛擬機的 ip。
🔒 更多內容,請登入會員繼續閱讀。
立即登入在 PowerShell 執行上述程式,即可將相關的檔案 copy 到虛擬機裏。
設定
在虛擬機新增 config.sh 設定相關連結,代碼如下。
🔒 更多內容,請登入會員繼續閱讀。
立即登入執行 ./config.sh 後重新開機。
測試
將虛擬機重新開機後,執行 sudo lshw -C display,即可看到驅動裝起來了。

執行 nvidia-smi ,就可以看到如下畫面了

安裝 Cuda 及 cudnn
到官網 https://developer.nvidia.com/cuda-toolkit-archive 查看相關版本的安裝指令。到 2026-07 最穩的版本為 13.0.0。
請在虛擬機新增如 cuda.sh,完整代碼如下。
🔒 更多內容,請登入會員繼續閱讀。
立即登入執行上述 script 即可神奇的自動安裝完成。安裝的第一個畫面請按 “OK”

第二個畫面,請選取 “I Agree”,然後再按 “OK”

驗証 GPU 是否啟動
請先在 Python 專案下安裝套件
🔒 更多內容,請登入會員繼續閱讀。
立即登入開機自動啟動虛擬機
停止虛擬機,在虛擬機按右鍵/設定,左邊的自動啟動動作,選擇永遠自動啟動此虛擬機器,啟動延遲要設定60秒。

然後在自動停止動作選項中,選取關閉虛擬機器

todo
