上一篇文章基本已經(jīng)總結(jié)了相關(guān)方法,但其中 deepin 中安裝 Windows 部分的方法,只在 UEFI 模式下有效,似乎不太普遍適用。最近想到可以用其他方法來處理此問題。
操作系統(tǒng):deepin 15.11
宿主環(huán)境:主要為 VirtualBox 虛擬機(jī),部分為物理機(jī)(戴爾筆記本)。
將 Windows ISO 文件中的內(nèi)容復(fù)制到 ntfs 分區(qū)(主分區(qū),fat32 分區(qū)也可以)根目錄。稍后系統(tǒng)也將安裝在此分區(qū)。當(dāng)然,若擔(dān)心混淆,可另建分區(qū)用來安裝系統(tǒng)。
下載 grub4dos,將其中的 grldr 和 menu.lst(可自建)放到 ntfs 分區(qū)根目錄。這里不再直接用 grub2 引導(dǎo)安裝文件,而是通過 grub2 引導(dǎo) grub4dos(適用于 MBR 分區(qū)表),再由 grub4dos 引導(dǎo)安裝文件。
在 menu.lst 文件中寫入如下內(nèi)容:
title Windows Installerroot (hdx,y)chainloader /bootmgr
root 定義為 ntfs 分區(qū)。其中 x 從 0 開始,y 從 0 開始。
在 /etc/grub.d/40_custom 中添加如下內(nèi)容:
menuentry "grub4dos" { insmod part_msdos insmod ntfs insmod ntldr set root=(hdx,y) ntldr /grldr}
root 定義為 ntfs 分區(qū)。其中 x 從 0 開始,y 從 1 開始。
終端執(zhí)行 sudo update-grub,更新引導(dǎo)項(xiàng)。
重啟選擇引導(dǎo)項(xiàng) grub4dos 即可。
如果安裝 Windows 后 deepin 引導(dǎo)項(xiàng)丟失,也可以反過來用 grub4dos 引導(dǎo) grub2。
將 grldr 和 menu.lst 放到 Windows 所在分區(qū)根目錄。
在 bootice 的 bcd 智能編輯功能中添加一個(gè) grub/linux 引導(dǎo)項(xiàng),將引導(dǎo)內(nèi)容從 grldr.mbr 改為 grldr 即可。
在 menu.lst 文件中寫入如下內(nèi)容:
title grub2root (hdx,y)kernel /boot/grub/i386-pc/core.img
root 為 deepin 所在分區(qū)。其中 x 從 0 開始,y 從 0 開始。
重啟,選擇 deepin。進(jìn)入系統(tǒng)后,終端執(zhí)行
sudo update-grubsudo grub-install /dev/sda
更新引導(dǎo)項(xiàng),修復(fù)主引導(dǎo)記錄。
重啟即可看到 grub 中 Windows 的引導(dǎo)菜單了。
最后,記得刪除 /etc/grub.d/40_custom 中添加的內(nèi)容,在終端執(zhí)行 sudo update-grub,消除引導(dǎo)項(xiàng)。
如果添加了臨時(shí)分區(qū),記得刪除并將空間合并到其他分區(qū)。
將 Windows ISO 文件中的內(nèi)容復(fù)制到 FAT32 分區(qū)(臨時(shí)分區(qū))根目錄。
這里不再直接用 grub2 引導(dǎo)安裝文件,而是改用 efibootmgr 來添加 UEFI 引導(dǎo)項(xiàng)。當(dāng)然了,效果是一樣的,這里只是換個(gè)思路而已。efibootmgr 在 deepin 中默認(rèn)已安裝 。
sudo efibootmgr -c -w -L “Windows” -d /dev/sda -p 1 -l \\efi\\boot\\bootx64.efi
其中
-L 輸入引導(dǎo)項(xiàng)的顯示名稱
-d 輸入引導(dǎo)項(xiàng)所在磁盤的設(shè)備文件名稱,例如 /dev/sda、/dev/sdb。
-p 輸入引導(dǎo)項(xiàng)所在分區(qū)的編號(hào),/dev/sda1 用 -p 1,/dev/sda2 用 -p 2。(可以先用 df -h 看下)
-l 輸入引導(dǎo)項(xiàng)指向的 efi 啟動(dòng)文件在分區(qū)上的位置。請(qǐng)注意使用“\\”來表示目錄的分級(jí)。
重啟開機(jī)時(shí)按 DEL、ESC 等鍵進(jìn)入 UEFI BIOS 設(shè)置界面,選中剛才添加的引導(dǎo)項(xiàng)確定即可開始安裝。
安裝后通過重啟開機(jī)按 DEL、ESC 等鍵進(jìn)入 deepin,在終端執(zhí)行 update-grub 更新 grub2 引導(dǎo)項(xiàng)。這樣 grub 菜單中就有 Windows 的引導(dǎo)項(xiàng)了。以后從 Windows 重啟可能還是啟動(dòng) Windows,但關(guān)機(jī)的話就看到 grub 菜單了。
最后刪除剛添加用于安裝系統(tǒng)的 UEFI 引導(dǎo)項(xiàng)
efibootmgrsudo efibootmgr -b 0001 -B
其中 0001 是要?jiǎng)h除的引導(dǎo)項(xiàng)編號(hào)。
刪除剛才創(chuàng)建的臨時(shí)分區(qū),將空間合并到其他分區(qū)。
當(dāng)前系統(tǒng) | 測(cè)試系統(tǒng) | UEFI 模式 | Legacy 模式 | 備注 |
---|---|---|---|---|
deepin | Win 7 | x | √ | UEFI 到 Starting Windows 就不動(dòng)了 |
deepin | Win 10 | √ | √ |
突然想起來,Linux 下可能一般用戶沒辦法從 Windows ISO 中復(fù)制出文件來。畢竟 Windows 的 ISO 多是 UDF (iso-13346)格式鏡像,而 Linux 一般默認(rèn)為 iso-9660,所以無法直接解壓,需要特別的壓縮軟件才行。
其實(shí)可以將 ISO 文件作為 loop 設(shè)備掛載到系統(tǒng)目錄中,掛載時(shí)加入格式參數(shù)就可以了。例如,在文件管理器中 ISO 文件所在目錄,右鍵打開終端,用如下命令掛載:
mkdir ./isosudo mount -t udf -o loop filename.iso ./iso
掛載后就可以復(fù)制了。
聯(lián)系客服