NT和Linux共存的最简单的方法就是在安装linux的lilo时选择将lilo安装在Linux主分区的引导区中然后使用win的启动盘重新启动以后运行fdisk将linux主分区设置为active这样就可以实现在系统启动时首先进入lilo选择若不选择linux则进入nt loader
但是有时候为了方便而需要使用 nt loader 来引导linux下面就是实现的方法
你应该牢牢记住的最重要的一点是许多软件产品会利用硬盘上面仅有的那个宝贵的主引导记录MBRNT是这样没有选择余地Linux也可以这样如果你喜欢机器的BIOS会执行储存在当前激活分区的信息来初始化你希望的操作系统
NT安装后MBR会被修改成去引导一个在激活分区的根目录下叫NTLDR的程序原来的MBR会被存到一个叫BOOTSECTDOS的小文件中NT安装完成后要记住绝不能覆盖这个MBR 否则NT将无法启动以防万一 NT的用户需要NT的应急修复磁盘(Emergency Repair DiskERD)
记住了这些后就要注意设定LILO时***不能***装到MBR中去而是装到Linux的root分区中去这样对NT而言不会带来问题而Linux没有MBR也可以活下去
NT的引导过程
当NTLDR启动 NT用户看到OS Loader Vxx 后它会切换处理器到状态并启动一个非常小的文件系统接着它会去读BOOTINI文件看是否有其它操作系统存在并显示一个选择菜单下面是一个典型的BOOTINI:
[boot loader]
timeout=
default=multi()disk()rdisk()partition()WINNT
[operating systems]
multi()disk()rdisk()partition()WINNT=NT V is here
multi()disk()rdisk()partition()WINNT=NT V VGAMODE /basevideo /sos
C:=DOS is here
BOOTINI有两部分构成 boot loader section部分指定菜单在屏幕上的停留时间和缺省菜单选项opearating systems section 部分指定可选的操作系统种类可以看到机器可以启动NT(以标准模式或VGA安全模式)和DOS从这个例子我们可以推断DOS从硬盘C:(第一个硬盘的第一个分区)启动而NT从第二个分区启动典型安装时会以DOS的FAT文件系统格式化一个C:的分区然后将NT装在另外一个NTFS(NT文件系统)的分区
如果用户选择了启动NT 另外一个程序NTDETECTCOM就会开始进行硬件检查如果一切正常NT内核就会被装入正如我们都知道的那样
再来看如果启动的不是NT的情形此时NTLDR 需要知道非NT OS引导所必需的引导扇区是哪个此时相应的引导扇区映象必须要在一个小小的字节的文件中比如要引导DOSNTLDR 将会寻找一个叫BOOTSECTDOS的引导扇区映象文件 这个映象文件是NT的安装程序产生的
那么 引导Linux又是怎样呢?这很简单需要的只是一个引导扇区映象文件姑且称之为BOOTSECTLIN (在本文稍后会看到如何得到这个文件) 必须将BOOTSECTLIN 放到C: 并要修改 BOOTINI此时operating systems ection部分看起来应该是这样的
[operating systems]
multi()disk()rdisk()partition()WINNT=NT V is here
multi()disk()rdisk()partition()WINNT=NT V VGAMODE /basevideo /sos
C:=DOS is here
C:BOOTSECTLIN=Now Linux is here
修改BOOTINI 可以用任何普通ASCII文本编辑器(比如记事本)这个文件的正常属性为系统隐藏只读所以你必须用 attrib DOS 命令或在NT中用文件属性对话框中来变更属性
现在我们将注意力转到Linux我们需要安装Linux定制LILO产生BOOTSECTLIN文件
第一步是装好Linux我们都知道怎么做为Linux选适当的系统SWAP和用户分区运行安装程序等等一切顺利时这一步在分钟之内就可以完成
接下去就要定制LILO我们知道怎么做但要注意*不能* 将LILO装到MBR中去(除非你想将NT吞了:))设定LILO时要选择将它装到你Linux 的root分区如果你还不知道如何设定LILO 就花几分钟读读HOWTO文献或者就用一些好的安装程序我是用SuSE的 因此我的安装程序就是 yast (Yet Another Setup Tool)
LILO定制好之后(为行文方便 此处假设Linux的root分区是/dev/hda)我们必须用dd来产生引导记录映象文件以root Login后按以下做:
# dd if=/dev/hda bs= count= of=/dosc/bootsectlin
如果没有能将FAT C: partition mount成为 /dosc譬如说由于这个分区被以NTFS方式格式化不能访问这个分区此时可以将 BOOTSECTLIN写到一个以DOS方式格式化的磁盘中或者NT能读的其它什么分区也可以如果BOOTSECTLIN不是被放到C:要记住此时应相应修改BOOTINI文件
现在你老板可以从她的NT Loader菜单中选择Linux了NTLDR将会装载BOOTSECTINI她就可以看到LILO的提示她就可以去尝试她新的Linux机器了最后你可以设定LILO在选择提示时能去引导Linux和C: 上的DOS你的老板就可以再次回到C: 分区上的NT Loader前文描述的方法可以反复进行如果你希望能选择引导多个Linux就必须为每一个Linux都产生一个相应的引导扇区映象文件