Windows 系統添加 VirtIO 驅動(Windows ISO 安裝鏡像添加驅動)
為什么要在 ISO 鏡像里添加驅動?而不是在進系統以后裝驅動?一切都是形勢所迫。如果你也是愛折騰的人,那么這也會成為一個有用的方案之一。
最近,因為在給公司研究部署 OpenStack,在制作初始鏡像(也就是使用 ISO 進行全新安裝)的時候,發現 Windows 自帶的驅動不支持 KVM 的硬盤控制器,導致找不到硬盤而無法安裝,於是解決方案便是將 VirtIO 的驅動集成進 Windows 的 ISO 安裝鏡像。順着這個思路,我嘗試了我熟悉的 WDS 方案(一個 Windows 部署方案,支持將驅動導入 WIM,並可將 WIM 導出),發現 VirtIO 的驅動是未簽名的,無法使用 WDS 集成驅動...(微軟要求 X64 驅動必須簽名才可使用。“強制禁用驅動簽名” 也只是針對系統,對 WDS 服務無效。)
於是,便折騰出了另一套方案,使用微軟的 WAIK 工具包解包 WIM、強制上驅動..(支持導入未簽名驅動)
這里,我只介紹 X64 系統環境下向 Windows ISO 鏡像中添加 VirtIO 驅動,如果你是想添加其他驅動,或者是 X86(32 位)系統環境,請在學習本篇筆記后自行舉一反三。(這並不難 ←_←
本篇筆記僅適用於 Windows Vista 及更高版本、Windows Server 2008 及更高版本系統 ISO 鏡像。
不要一出問題就找我問這問那,請先仔細檢查自己的每一步操作!求助不要評論,直接發郵件。
需要下載准備的一些東西
Windows 微軟原版 ISO 鏡像 可以在這里下載到→msdn.itellyou.cn
UltraISO 非常好用的一款 ISO 鏡像軟件,收費軟件,且很便宜,買正版還是用盜版請自行決定。【中文官網】
Windows AIK 工具包 【微軟官網下載】【百度網盤(f8dd)】(先在 cmd 里執行 dism,如果提示不是內部或外部命令,再下載工具包。如果有其他提示,說明系統已自帶工具,無需下載安裝。)
VirtIO 驅動 QEMU-KVM 所使用虛擬硬件的 Windows 驅動。【外網下載】【百度網盤(fkkb)】
安裝 WAIK 工具包
1. 先驗證一下系統是否自帶了工具包。完整版(原版)Windows10 已集成工具。先在 cmd 中執行 dism,如果提示不是內部或外部命令,再安裝,否則跳過這一部分,直接到下面准備 WIM 鏡像文件的部分。
2. 使用 UltraISO 掛載 WindowsAIK 的 ISO 鏡像到虛擬光驅。(或者使用你電腦上任意一款壓縮軟件解壓整個 ISO 鏡像)
3. 運行 wAIKAMD64 安裝工具包。
准備 WIM 映像文件
1. 使用 UltraISO 掛載 Windows ISO 鏡像到虛擬光驅。(或者使用你電腦上任意一款壓縮軟件打開 ISO 鏡像)
2. 在 sources 文件夾下復制出(或使用壓縮軟件提取出)boot.wim和install.wim兩個文件。
boot.wim 是引導進入的安裝環境,它缺少驅動時會在選擇安裝分區步驟時提示找不到硬盤、需要加載驅動等;install.wim 是系統映像,最終安裝的系統文件都在這里面,給它添加驅動,安好系統就不用再手工打驅動了。一次性添加好驅動這對於同配置硬件環境批量安裝系統的工程來講能節省大量時間和精力。
添加驅動
1. 在 D 盤(或其他位置)新建一個文件夾mnt。
2. 使用 UltraISO 掛載 VirtIO 驅動 ISO 鏡像到虛擬光驅。
這里我們一般只需要 3 個驅動:Balloon、NetKVM、viostor。你也可以直接使用你電腦上任意一款壓縮軟件直接解壓出這三個文件夾。然后進入目錄看一看,按你的 ISO 鏡像中系統的版本信息確定驅動的路徑。例如,我的 ISO 是 WindowsServer2012R2 64 位,那么驅動就是2k12r2\amd64\這個目錄下面的。
3. 以管理員身份運行 cmd 或 PowerShell,並進入 Windows AIK 工具包中 Dism 的所在目錄,我的是C:\Program Files\Windows AIK\Tools\amd64\Servicing(如果系統已自帶 dism 工具,則無需進入任何目錄)
4. 查看 wim 映像信息:
- dism /get-wiminfo /wimfile:D:\install.wim
列出的信息便是這個 ISO 鏡像所包含的所有系統版本。其中的 “索引” 便是我們下面要用到的版本編號。
5. 掛載 wim 鏡像:
- dism /mount-wim /wimfile:D:\install.wim /index:1 /mountdir:D:\mnt
這里的 “index” 就是上一步中看到的索引編號。
6. 掛載完畢后,添加驅動:
- dism /image:D:\mnt /add-driver /driver:F:\viostor\2k12R2\amd64\viostor.inf /forceunsigned
其他兩個或者更多驅動都是執行這個命令來添加驅動。驅動指定到 inf 配置文件。最后的/forceunsigned只有確定是未簽名的驅動時才用的參數,微軟認證的、簽名的驅動不需要加這個參數。VirtIO 的 X64 驅動幾乎都是未簽名的。
7. 添加完驅動,查看一下驅動情況:
- dism /image:D:\mnt /get-drivers
8. 確定驅動已經添加后,卸載並保存 wim 映像:
- dism /unmount-wim /mountdir:D:\mnt /commit
9. 重復 4~8 步驟,為 boot.wim 添加驅動。
install.wim 中的多個系統版本,你可以選擇性添加驅動。但 boot.wim 中的所有版本建議都添加驅動。
封裝新的 ISO 鏡像
1. 使用 UltraISO 打開原 Windows ISO 安裝盤鏡像。
注意,這里可就不能使用壓縮軟件了,否則會丟失 ISO 的引導數據。
2. 在 sources 文件夾下,刪除boot.wim與install.wim。
3. 將添加好驅動的boot.wim與install.wim拖到 sources 下。
4. 點擊【文件】→【另存為】,保存出一個新 ISO 鏡像即可。
