deepin 与 Windows 双系统硬盘安装方法总结(续)

deepin 与 Windows 双系统硬盘安装方法总结(续)

上一篇文章基本已经总结了相关方法,但其中 deepin 中安装 Windows 部分的方法,只在 UEFI 模式下有效,似乎不太普遍适用。最近想到可以用其他方法来处理此问题。


测试环境

操作系统:deepin 15.11

宿主环境:主要为 VirtualBox 虚拟机,部分为物理机(戴尔笔记本)。

deepin 中安装 Windows(续)

Legacy 模式

将 Windows ISO 文件中的内容复制到 ntfs 分区(主分区,fat32 分区也可以)根目录。稍后系统也将安装在此分区。当然,若担心混淆,可另建分区用来安装系统。

下载 grub4dos,将其中的 grldr 和 menu.lst(可自建)放到 ntfs 分区根目录。这里不再直接用 grub2 引导安装文件,而是通过 grub2 引导 grub4dos(适用于 MBR 分区表),再由 grub4dos 引导安装文件。

在 menu.lst 文件中写入如下内容:

title Windows Installer
root (hdx,y)
chainloader /bootmgr

root 定义为 ntfs 分区。其中 x 从 0 开始,y 从 0 开始。

在 /etc/grub.d/40_custom 中添加如下内容:

menuentry "grub4dos" {
  insmod part_msdos
  insmod ntfs
  insmod ntldr
      
  set root=(hdx,y)
  
  ntldr /grldr
}

root 定义为 ntfs 分区。其中 x 从 0 开始,y 从 1 开始。

终端执行 sudo update-grub,更新引导项。

重启选择引导项 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,消除引导项。

如果添加了临时分区,记得删除并将空间合并到其他分区。

UEFI 模式

将 Windows ISO 文件中的内容复制到 FAT32 分区(临时分区)根目录。

这里不再直接用 grub2 引导安装文件,而是改用 efibootmgr 来添加 UEFI 引导项。当然了,效果是一样的,这里只是换个思路而已。efibootmgr 在 deepin 中默认已安装 。

sudo efibootmgr -c -w -L “Windows” -d /dev/sda -p 1 -l \\efi\\boot\\bootx64.efi

其中

  • -L 输入引导项的显示名称
  • -d 输入引导项所在磁盘的设备文件名称,例如 /dev/sda、/dev/sdb。
  • -p 输入引导项所在分区的编号,/dev/sda1 用 -p 1,/dev/sda2 用 -p 2。(可以先用 df -h 看下)
  • -l 输入引导项指向的 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

挂载后就可以复制了。


Share Tweet Send
0 Comments
Loading...
You've successfully subscribed to 隔窗听雨
Great! Next, complete checkout for full access to 隔窗听雨
Welcome back! You've successfully signed in
Success! Your account is fully activated, you now have access to all content.
豫ICP备19045256号-1