偽代碼,最初是為Windows 7 iso檔案開發的,但在線程中應用於Windows 8如何在 Linux 中建立可啟動的 Windows 8 iso 映像?但它不適用於 Windows 10 iso
# https://rwmj.wordpress.com/2010/11/04/customizing-a-windows-7-install-iso/
# https://unix.stackexchange.com/a/312477/16920
$ dd if=../en_windows_10_x64_dvd.iso \
of=boot.img bs=2048 count=8 skip=734
$ mkisofs -o ../new-win.iso -b boot.img -no-emul-boot -c BOOT.CAT \
-iso-level 2 -udf \
-J -l -D -N -joliet-long -relaxed-filenames .
在 Windows 10 映像上執行時輸出失敗
dd if=/home/masi/Downloads/en_windows_10_multiple_editions_version_1511_x64_dvd.iso of=/home/masi/Downloads/boot.img bs=2048 count=8 skip=734
8+0 records in
8+0 records out
16384 bytes (16 kB) copied, 0.000392973 s, 41.7 MB/s
所使用的 iso 檔案的以下某些欄位已更改dd
bs=2048
count=8
skip=734
如何研究哪些欄位值可用於 Windows 10 iso?
作業系統:Debian 8.5 64 位元
硬體:華碩 Zenbook UX303UA
Linux 核心:向後移植 4.6
相關主題:如何在 Linux 中建立可啟動的 Windows 7 iso 映像?,自訂 Windows 7 安裝 ISO
動機:我需要 Windows 10 才能使用 Canon P-150 雙面掃描儀,但當我啟動 Windows 時,出現錯誤0xC0000428因為 Windows 更新再次破壞了那裡的東西,而且我很少使用 Windows;我沒有多餘的 Windows 來製作可啟動媒體
答案1
我在Windows機器上嘗試了微軟描述的Win7解決方案:
https://www.microsoft.com/en-us/download/windows-usb-dvd-download-tool
並獲得了
0x80080005錯誤
因此,前往 Debian Stretch 9 嘗試使用 e5.onthehub.com 大學/學校 ISO 建置 Windows 10 可啟動 USB。
使用dd
絕對不適用於 Windows 10。使用:
dd if=my-linux-os.iso of=/dev/sdX bs=4M
注意:切勿嘗試寫入/dev/sdX1
位置X={a,b,c or d}
,並始終檢查您沒有覆蓋硬碟,這通常是/dev/sda
或/dev/sdb
!
對於 Windows 10,您可以使用 WoeUSB,但不能使用 apt/yum 儲存庫。這些已經過時了,至少對於 Debian 9 來說是這樣。
git clone https://github.com/slacka/WoeUSB.git
然後按照末尾的說明進行操作:
https://github.com/slacka/WoeUSB
您必須先安裝所有先決條件,例如 gparted 等。
我還發現在過程結束時我必須使用 sudo 運行 woeusb。所以你只需使用:
sudo woeusb --device local/of/my/windows-10-image.iso /dev/sdX
嘿,很快它就工作得非常出色。就我而言,我的硬碟/dev/sda
和 USB 隨身碟都是/dev/sdb
這樣,所以我將 ISO 寫入到/dev/sdb
(再次小心,您不想意外覆蓋您的作業系統)。然後我將其安裝在帶有 2TB 硬碟的軍用級 MSI 主機板上,BIOS 中沒有快速啟動選項,它就可以正常工作了。我首先開啟了所有 UEFI 選項,使其進入正確的狀態。
我在安裝時也遇到了問題,當使用 Gmail 電子郵件帳戶登入以及第二次重新啟動電腦時(在安裝過程中)連接網路電纜時,系統永遠掛起。如果您遇到此問題,請斷開互聯網,重新啟動計算機,建立通用帳戶,登錄,然後使用網線重新啟動
答案2
即使使用舊版/CSM 啟動,這對我也有效(Ubuntu 16.04、Windows 10 版本 1511 32 位元;您也可以使用 genisoimage 而不是 mkisofs,mkisofs 只是一個符號連結):
mkisofs \
-no-emul-boot \
-b boot/etfsboot.com \
-boot-load-seg 0x07C0 \
-boot-load-size 8 \
-iso-level 2 \
-udf \
-joliet \
-D \
-N \
-relaxed-filenames \
-o win10-1511-32bit-mod1.iso \
files/
(一長行,在 bash 中,末尾帶有反斜線以繼續行)
其中files/
是包含 Windows 10 ISO 提取內容的子目錄。
關鍵點似乎來自etfsboot.com
Windows boot/
10 ISO 的子目錄。
我可以使用傳統/CSM 啟動燒錄的光碟,沒有任何問題。
我只嘗試過win10 1511版本。如果您嘗試其他版本,請發表評論。
答案3
如果要啟動基於 UEFI 的計算機,只需安裝 Windows ISO(注意它是 UDF 格式的 ISO)並將所有檔案複製到 USB 磁碟機。只要驅動器是 FAT32 格式,UEFI 電腦就會識別它,並提供從該磁碟機啟動的選項。
另一方面,對於基於 BIOS 的計算機,最佳選擇是手動配置 syslinux 以鍊式加載 Windows 啟動。我在 Windows 8 上嘗試過/dev/sdf
此操作,但尚未在 10 上嘗試過。
- 將 USB 格式化為 FAT32
- 確保 USB 只有一個分割區,並且它是啟動活動的(GParted 將幫助解決此問題)
- 將 ISO 中的所有檔案複製到 USB 隨身碟
- 在 Linux 系統上安裝 syslinux
- 運行
syslinux -i /dev/sdf1
(U盤第一個分區,可以查看lsblk
) - 跑步
dd if=/usr/lib/syslinux/bios/mbr.bin of=/dev/sdf bs=4M
- 掛載 USB 隨身碟並建立目錄
boot/syslinux
- 將所有
*.c32
檔案複製/usr/lib/syslinux/bios
到boot/syslinux
USB 上的目錄 在 上建立一個
syslinux.cfg
文字文件boot/syslinux
,其中包含文本LABEL win10 MENU LABEL Boot Windows 10 install COM32 /boot/syslinux/chain.c32 APPEND label=win7fs ntldr=/bootmgr
編輯:我不確定 Debian 將 syslinux 檔案放在哪裡;你可以找到它們find / -name "mbr.bin" 2> /dev/null
答案4
我為這個案例找到的唯一可靠的解決方案。在 Windows 中建立可啟動 Windows。