解决Linux和Windows双系统的引导问题

尺有所长, 寸有所短. 虽然能完全用Linux工作, 娱乐. 但计算机只是为人类服务的. 怎么方便怎么来, 操作系统亦然, Linux和Windows都给装上.

本文中, Windows使用XP, Linux选用Ubuntu. 但其实基本思想是一样的: Linux现在流行的bootloader是grub. xp和nt采用的是ntloader.

Ubuntu论坛里的这篇文章主张采用这样的引导方式: ntloader -> grub -> win/lin. 但正如有的网友所说, grub考虑到了引导windows, 而ntloader还没有考虑过引导windows之外的其他系统. 而且, 使用ntloader来引导比较繁琐. 不如使用grub引导简便. 这里我使用grub来作为bootloader.

先补充一下基础知识: 理解Linux的启动过程. 另外, 手头要有xp和Ubuntu的安装光盘. (Ubuntu的LiveCD, 用以挂载硬盘分区以及恢复mbr). 在开始之前, 要知道这样几个事实: (1) PC启动时, 在加载bios之后, 紧接着就加载位于mbr中的bootloader, 这个bootloader可以是ntloader, 也可以是grub. (2)安装windows系统时, 安装程序会把ntloader写入到mbr作为bootloader. (3)grub可以被安装到mbr, 也可以安装到其他位置. 但Ubuntu的liveCD进行安装时是默认安在mbr中的.

这样问题就来了: 怎么才能保证双系统能正常启动呢? 如果重装了其中的一个系统, 如何保证另外一个系统不受影响呢? 这就是这里要说的问题.

第一次安装

先安装Windows, 然后安装Linux. 采用这样的顺序不光是为了避免ntloader覆盖掉grub(就算被覆盖了, 也有解决办法, 在后面介绍), 更因为Linux可以被装在扩展分区而Windows不行. 另外, 安装linux时, grub会检测到已有的分区, 从而生成合适的启动选项来加载windows系统.

要注意的一点就是文件系统, 可以采用这样的方法: 在最开始安装windows时把计划给linux用的空间分为一个区, 之后在安装Linux时将这个区删除, 然后重新创建新的多个分区. Ubuntu liveCD已经做得很傻瓜化, 安装不会碰到任何问题.

恢复MBR

相比Linux, Windows会比较频繁地重装, 重装之后的mbr会被覆盖, 从而无法引导linux系统. 解决整个问题只需要恢复以前的MBR. 重装Linux则不存在任何问题. 因为grub会检测到已有的windows分区.

首先备份mbr, 使用dd命令将硬盘第一个扇区的头446字节'抓'下来保存. 之后重装完windows之后再恢复mbr. 这需要用到linux启动光盘. 启动进入命令行, 挂载那个被保存的mbr文件所在的分区, 然后用dd命令恢复就可以了.(注意我的是SCSI硬盘, 所以是sda, IED硬盘为hda)

备份MBR:

# dd if=/dev/sda of=/boot/boot.NNNN bs=446 count=1

恢复MBR:

# dd if=/boot/boot.NNNN of=/dev/sda bs=446 count=1

-为什么不是512呢, 主引导扇区是一个扇区(512字节呀)?

-只把主引导扇区的备份文件boot.NNNN的前446个字节重写入主引导扇区。

boot.NNNN是我们在安装Linux之前整个主引导分区的备份。如果我们把

512个字节全部写入主引导扇区就可能会把安装了Linux后改变了的硬盘

DPT表也破坏掉.

MBR-> Main/Master Boot Record, 有些书上是写成Master的.

我认为可以分成三个部分吧, MBR+DPT+MagicNumber(446+64+2=512)

这也就是为什么进行MBR备份的时候要指定bs=512 或者 bs=1k, count=1的原因. 然后恢复时经常看到HOWTO里面是bs=446 count=1. 这个446就是指令部分的恢复, 不是DPT的恢复. 往往MBR里面的第一个指令是cli... 研究起来是比较有意思的.

(0)

相关推荐

  • 完美解决 Linux 和 Windows 双启动带来的时间同步问题

    想在保留 Windows 系统的前提下尝试其他 Linux 发行版,双启动是个常用的做法.这种方法如此风行是因为实现双启动是一件很容易的事情.然而这也带来了一个大问题,那就是 时间. 是的,你没有看错 ...

  • 如何解决Ubuntu与Windows双系统时间不同步

    不知道有没朋友跟我一样是 Ubuntu 和 Windows 双系统?今天有朋友问到我,当他从 Ubuntu 系统重新启动到 Windows 时,会发现 Windows 中的时间变了,他问我有没办法修复 ...

  • Linux和Windows双系统Grub丢失恢复

    当我们每次要重装WIN的时候,MBR都会被重写,这样原来的GRUB或LILO就会不见了,或者由于某些原因使得原来的GRUB不见了,这个时候只要重装GRUB就行了。 GRUB的重装方法有很多,这种方法不 ...

  • 红旗Linux与Windows双系统中开机时自动进入windows

    安装了Windows XP而后又安装了红旗Linux6.0开机时默认的启动系统是红旗linux6,那么我们怎样使默认的启动系统是XP啊? 其实很简单,进入/boot/grub/,编辑menu.lst文 ...

  • linux和windows双系统安装引导方法

    Linux的普及让很多网友都装上了linux和windows的双系统,双系统的引导是一个比较复杂的工作,双系统安装引导该怎么做,下面给大家介绍方法: 应用环境:已经分区,没有free space,在不 ...

  • 修复win7/win8双系统开机引导菜单的方法

    考虑到Win8的稳定性和兼容性,相信很多人都是装的Win7与Win8的双系统,但是大家装了以后就会发现引导菜单会带来很多问题。下面我们就来解决修复修复Win7/Win8双系统开机引导菜单的问题。 首先 ...

  • windows双系统下如何卸载win8系统的方法

    现在很多人都在自己的电脑中安装了双系统,两个系统之间可以不停的相互切换,针对不同的需求可以选择相应的系统,但是最近小编统计发现了一个现象,就是很多安装了双系统的用户都选择卸载了win8的系统,不知道是 ...

  • linux的简介 linux与windows服务器系统的区别

    通过什么是服务器?一文我们了解到,服务器系统主要有linux与windows系统,对于windows系统大家可能都熟悉些,虽然windows服务器系统,如windows 2008、windows200 ...

  • Linux与windows服务器系统的区别

    Linux操作系统主要包括UNIX 操作系统、MINIX 操作系统、GNU 计划、POSIX 标准和Internet 网络。windows操作系统包括windows2003、windows2008、X ...