Hyper-V Linux

      在〈Hyper-V Linux〉中尚無留言

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

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *