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




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

2022-07-20 21:07:13 网络知识 官方管理员

尺有所长,寸有所短.虽然能完全用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时将这个区删除,然后重新创建新的多个分区.UbuntuliveCD已经做得很傻瓜化,安装不会碰到任何问题.

  恢复MBR

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

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

  备份MBR:

  #ddif=/dev/sdaof=/boot/boot.NNNNbs=446count=1

  恢复MBR:

  #ddif=/boot/boot.NNNNof=/dev/sdabs=446count=1

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

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

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

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

  DPT表也破坏掉.

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

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

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


发表评论:

最近发表
网站分类
标签列表