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... 研究起来是比较有意思的.
 

上一篇:理解Linux的启动过程javascript

下一篇:个人友情连接html

相关文章
相关标签/搜索