上一篇文章基本已經總結了相關方法,但其中 deepin 中安裝 Windows 部分的方法,只在 UEFI 模式下有效,彷佛不太廣泛適用。最近想到能夠用其餘方法來處理此問題。linux
操做系統:deepin 15.11oop
宿主環境:主要爲 VirtualBox 虛擬機,部分爲物理機(戴爾筆記本)。測試
將 Windows ISO 文件中的內容複製到 ntfs 分區(主分區,fat32 分區也能夠)根目錄。稍後系統也將安裝在此分區。固然,若擔憂混淆,可另建分區用來安裝系統。操作系統
下載 grub4dos,將其中的 grldr 和 menu.lst(可自建)放到 ntfs 分區根目錄。這裏再也不直接用 grub2 引導安裝文件,而是經過 grub2 引導 grub4dos(適用於 MBR 分區表),再由 grub4dos 引導安裝文件。.net
在 menu.lst 文件中寫入以下內容:code
title Windows Installer root (hdx,y) chainloader /bootmgr
root 定義爲 ntfs 分區。其中 x 從 0 開始,y 從 0 開始。blog
在 /etc/grub.d/40_custom 中添加以下內容:get
menuentry "grub4dos" { insmod part_msdos insmod ntfs insmod ntldr set root=(hdx,y) ntldr /grldr }
root 定義爲 ntfs 分區。其中 x 從 0 開始,y 從 1 開始。虛擬機
終端執行 sudo update-grub,更新引導項。it
重啓選擇引導項 grub4dos 便可。
若是安裝 Windows 後 deepin 引導項丟失,也能夠反過來用 grub4dos 引導 grub2。
將 grldr 和 menu.lst 放到 Windows 所在分區根目錄。
在 bootice 的 bcd 智能編輯功能中添加一個 grub/linux 引導項,將引導內容從 grldr.mbr 改成 grldr 便可。
在 menu.lst 文件中寫入以下內容:
title grub2 root (hdx,y) kernel /boot/grub/i386-pc/core.img
root 爲 deepin 所在分區。其中 x 從 0 開始,y 從 0 開始。
重啓,選擇 deepin。進入系統後,終端執行
sudo update-grub sudo grub-install /dev/sda
更新引導項,修復主引導記錄。
重啓便可看到 grub 中 Windows 的引導菜單了。
最後,記得刪除 /etc/grub.d/40_custom 中添加的內容,在終端執行 sudo update-grub,消除引導項。
若是添加了臨時分區,記得刪除並將空間合併到其餘分區。
將 Windows ISO 文件中的內容複製到 FAT32 分區(臨時分區)根目錄。
這裏再也不直接用 grub2 引導安裝文件,而是改用 efibootmgr 來添加 UEFI 引導項。固然了,效果是同樣的,這裏只是換個思路而已。efibootmgr 在 deepin 中默認已安裝 。
sudo efibootmgr -c -w -L 「Windows」 -d /dev/sda -p 1 -l \\efi\\boot\\bootx64.efi
其中
重啓開機時按 DEL、ESC 等鍵進入 UEFI BIOS 設置界面,選中剛纔添加的引導項肯定便可開始安裝。
安裝後經過重啓開機按 DEL、ESC 等鍵進入 deepin,在終端執行 update-grub 更新 grub2 引導項。這樣 grub 菜單中就有 Windows 的引導項了。之後從 Windows 重啓可能仍是啓動 Windows,但關機的話就看到 grub 菜單了。
最後刪除剛添加用於安裝系統的 UEFI 引導項
efibootmgr sudo efibootmgr -b 0001 -B
其中 0001 是要刪除的引導項編號。
刪除剛纔建立的臨時分區,將空間合併到其餘分區。
當前系統 | 測試系統 | UEFI 模式 | Legacy 模式 | 備註 |
---|---|---|---|---|
deepin | Win 7 | x | √ | UEFI 到 Starting Windows 就不動了 |
deepin | Win 10 | √ | √ |
忽然想起來,Linux 下可能通常用戶沒辦法從 Windows ISO 中複製出文件來。畢竟 Windows 的 ISO 可能是 UDF (iso-13346)格式鏡像,而 Linux 通常默認爲 iso-9660,因此沒法直接解壓,須要特別的壓縮軟件才行。
其實能夠將 ISO 文件做爲 loop 設備掛載到系統目錄中,掛載時加入格式參數就能夠了。例如,在文件管理器中 ISO 文件所在目錄,右鍵打開終端,用以下命令掛載:
mkdir ./iso sudo mount -t udf -o loop filename.iso ./iso
掛載後就能夠複製了。