到目前为止,我有一个 500GB 的硬盘,Windows 先安装在一个分区上,Ubuntu 安装在另一个分区上。由于 Ubuntu 是第二个安装的,因此它检测到了 Windows 分区,并且 Grub 提供了双重启动。有时,在安装 Ubuntu 后,Windows 驱动器号 C 会变为 D,并且 Windows 无法启动。
问题是,当我想安装较新版本的 Windows 时,我安装了它,现在系统直接启动到 Windows。没有提供启动到 Linux 的选项。
所以有两个问题:
1.当我想重新安装较新版本的 Windows 或 Linux 时,如何防止双启动选项被忽略?
2.有没有办法让 Windows 分区和 Linux 分区完全不互相感知?也许可以使用第三方引导加载程序,它可以检测磁盘上有哪些操作系统并允许我选择要引导到哪个操作系统,还允许我完全删除/替换其中一个操作系统,并且仍然能够引导到该操作系统 (Windows) 或未受影响的 Linux 操作系统?
答案1
重新安装 Windows 的问题在于它不能与其他操作系统(其他操作系统)很好地兼容,它会自动覆盖 MBR 以指向其自身,这就是为什么您必须重新安装引导加载程序以便能够获得双重启动。
将引导加载程序安装到 USB 棒怎么样?这样,您就可以毫不费力地继续安装/更新 Windows,而当您想要启动 Linux 时,只需插入 USB 棒,它就会启动 Linux。您甚至可以在 Linux 中更改 fstab,这样它就不会挂载 Windows 分区。
安装 Linux,然后从新的 Linux 安装内部:
将 USB 归零
dd if=/dev/zero of=/dev/sdd
在 USB 的起始处创建一个 128 MB 的分区
fdisk /dev/sdd ... 使用'n'创建分区 mkfs -t ext2 /dev/sdd1 mkdir /tmp/myusb mount /dev/sdd1 /tmp/myusb mkdir /tmp/myusb/boot
将 grub 安装到 USB,确保启动目录位于 USB 驱动器上:
grub-install --boot-directory=/tmp/myusb/boot /dev/sdd
编辑 /etc/grub.d/40_custom 并添加以下内容(msdos1 是第一个 Windows 分区)
menuentry "WINDOWS"{ set root='(hd0,msdos1)' chainloader +1 }
更新 grub 配置,输出到 USB。
更新-grub --output=/tmp/myusb/boot/grub/grub.cfg
大部分信息来自以下博客: http://jarrodla.blogspot.co.uk/2014/04/hp-microserver-gen8-boot-from-5th-sata.html