实现 Windows 与 Linux 操作系统双启动的方法之一是将 grub 启动加载程序安装到 Linux 分区上,这样您就可以保留 Windows 启动加载程序并让 Windows 处理双启动过程。
grub 引导加载程序可以部分覆盖 Linux 分区开头的数据并损坏文件,这有什么奇怪的? grub 是否真的在写入其引导加载程序之前检查分区开头是否有数据并将其移动到分区上的其他位置?
答案1
根据您输入的信息,您正在使用 ext4,因此 grub 不会破坏您的文件系统。ext2 以引导扇区的空间开始:http://www.makelinux.net/books/ulk3/understandlk-CHP-18-SECT-2
答案2
GRUB 不会随意将其文件安装在分区中,它使用文件系统驱动程序,因此永远不会覆盖现有文件。但是,当前的 GRUB 文档不鼓励将文件安装到 Linux 文件系统的做法,并认为该方法“脆弱”。它是否比将文件安装到 MBR 和第一个分区开头之间的无人区更脆弱尚有争议。众所周知,有几个程序会将数据写入该区域,目前,每当发现新的此类程序时,GRUB 开发人员就不得不在 GRUB 代码中包含临时解决方法。基本问题似乎是 ext* 文件系统不提供引导代码的固定位置(文件系统引导块除外,这是不够的),因此 GRUB 使用简单的块列表,但无法确保这些块保持不变。这与 NTFS 文件系统形成对比,NTFS 文件系统的引导代码是通过固定位置指针和文件访问的。
答案3
Windows(Vista、7 和 8 都是如此)通常会尝试创建一个单独的分区用于启动。即使这样做了,它对于文件管理器等常规 Windows 程序来说几乎总是不可见的。
通常,此 Windows 启动分区为 100MEG,具有名为“系统保留”的卷名,并且未指定驱动器号。当然,您仍然可以将 Windows 安装到一个分区中而不走这条路,但在安装 Windows 时您必须费力才能做到这一点。
因此,请使用 diskmgmt.msc 之类的程序(将其输入到 Windows 开始菜单搜索窗格中以使用该实用程序)再次查看驱动器分区,看看您是否没有 100Meg“系统保留”分区。这有点没意义,但我只是想表明,Windows 可能有两个分区 - 而不是一个。
无论如何,我们在这里谈论的其实是启动管理器。如果 Grub 确实犯了错误,那么将发生的一切就是您可能无法启动 Windows。但您的所有内容仍应是安全的 - 甚至可以访问。它仍然可以修复,但显然也有点麻烦。(我发现修复此类问题的唯一“简单”方法是格式化启动分区或故意搞砸启动标志或类似的东西,然后让 DVD 上的 Windows 系统恢复修复它)。
因此,简而言之,Grub 会覆盖内容实际上是不可能的,甚至不是一个问题。当然,如果你的硬盘出现故障,SMART 标志被触发,或者即使数据严重碎片化,那也是另一回事。只是不要通过调整分区或特别格式化它们让情况变得更糟。
说到这...我希望你是自行对 Windows 分区进行碎片整理前使用 GParted 等 Linux 工具。在缩小分区或以任何方式调整分区之前不进行碎片整理可能会引发一系列新问题。(所以你不能说我没有警告过你。)