Linux 版 (精华区)

发信人: howdoit (教练让我上场!!!), 信区: Linux
标  题:  从NT引导程序来启动LINUX
发信站: 哈工大紫丁香 (Tue May 18 08:51:57 1999), 转信

《Linux公报》……让Linux更富魅力!

        从NT引导程序来启动LINUX

             原文By Gustavo Larriera     中文译文: By "o k"

    今天,象你我这些技术专家,经常不得不应付以下情形,就是让

LINUX和NT两个不同的系统在同一台机器中和平共处。 已经有了许多

相关的HOW-TO文献--去看一看是个不坏的建议--去看如何设定

LILO(The Linux Loader,Linux引导程序)以完成此类工作的那些。遗

憾的是,经典文献基本没有涉及NT 引导程序。是的,我知道对不少人

而言,Linux和NT间存在着门户之争:-) 但从一个IT技术者的角度而

言,主要目标只是如何圆满完成这个工作而已。 

    现实生活中的很多时候,要求我们安装Linux时,不能去改变已有

的NT引导方式。比如, 很可能那是你老板的机器,并且他/她非常喜欢

自己的机器永远以自己熟悉的方式启动;-) 本文将集中介绍如何设定

NT引导程序使其能引导Linux(当然也要能继续引导NT!) 

    我希望这些小技巧能使Linux的使用者以最简单的方式达到通过NT

引导程序来启动Linux的目的。以下介绍适用于采用Intel兼容CPU的

NT4.0服务器和工作站。 

引子

    你费了好多口舌,终于让老板同意在她的机器上装Linux。她NT用

得很开心,Word啦,Excel啦,还有其它小东东,得心应手。她也并不

固执,决定也可以试试Linux的啦,Linux装就装吧,不过有一个条

件:她喜欢继续通过她熟悉的,能启动NT或DOS的那菜单来引导。她的

意志就是你的意志,于是你决定不用LILO来双重引导她的机器。 

MBR有所帮助

    你应该牢牢记住的最重要的一点是,许多软件产品会利用硬盘上

面仅有的那个宝贵的主引导记录(Master Boot Record,MBR)NT是这

样,没有选择余地;Linux也可以这样,如果你喜欢。机器的BIOS会执

行储存在当前激活分区的信息,来初始化你希望的操作系统。 

    NT安装后,MBR会被修改成去引导一个在激活分区的根目录下,叫

NTLDR的程序。原来的MBR会被存到一个叫BOOTSECT.DOS的小文件中。

NT安装完成后要记住绝不能覆盖这个MBR, 否则NT将无法启动。以防万

一, NT的用户需要NT的应急修复磁盘(Emergency Repair Disk,

ERD)。 

    记住了这些后,就要注意设定LILO时*不能*装到MBR中去,而是装

到Linux的root分区中去。这样,对NT而言,不会带来问题;而Linux

没有MBR也可以活下去。 

NT之引导过程

    当NTLDR启动, NT用户看到"OS Loader V4.xx" 后,它会切换处

理器到386状态,并启动一个非常小的文件系统。接着,它会去读

BOOT.INI文件,看是否有其它操作系统存在,并显示一个选择菜单。

下面是一个典型的BOOT.INI: 

[boot loader]

timeout=30

default=multi(0)disk(0)rdisk(0)partition(2)\WINNT

[operating systems]

multi(0)disk(0)rdisk(0)partition(2)\WINNT="NT V4 is here"

multi(0)disk(0)rdisk(0)partition(2)\WINNT="NT V4 VGAMODE" /basevideo /sos

C:\="DOS is here"

    TBOOT.INI有两部分构成。 "boot loader section"部分指定菜单

在屏幕上的停留时间, 和缺省菜单选项。"opearating systems

section" 部分指定可选的操作系统种类。可以看到机器可以启动NT

(以标准模式或VGA安全模式)和DOS。从这个例子我们可以推断,DOS从

硬盘C:(第一个硬盘的第一个分区)启动,而 

NT从第二个分区启动。典型安装时,会以DOS的FAT文件系统格式化一

个C:的分区,然后将NT装在另外一个NTFS(NT文件系统)的分区。 

    如果用户选择了启动NT, 另外一个程序NTDETECT.COM,就会开始

进行硬件检查。如果一切正常,NT内核就会被装入,正如我们都知道

的那样。 

    再来看如果启动的不是NT的情形。此时,NTLDR 需要知道非NT OS

引导所必需的引导扇区是哪个。此时,相应的引导扇区映象必须要在

一个小小的512字节的文件中。比如,要引导DOS,NTLDR 将会寻找一

个叫BOOTSECT.DOS的引导扇区映象文件。 这个映象文件是NT的安装程

序产生的。 

  

    那么, 引导Linux又是怎样呢?这很简单,需要的只是一个引导

扇区映象文件,姑且称之为BOOTSECT.LIN (在本文稍后会看到如何得

到这个文件)。 必须将BOOTSECT.LIN 放到C:, 并要修改 BOOT.INI。

此时"operating systems ection"部分看起来应该是这样的: 

[operating systems]

multi(0)disk(0)rdisk(0)partition(2)\WINNT="NT V4 is here"

multi(0)disk(0)rdisk(0)partition(2)\WINNT="NT V4 VGAMODE" /basevideo /sos

C:\="DOS is here"

C:\BOOTSECT.LIN="Now Linux is here"

    修改BOOT.INI, 可以用任何普通ASCII文本编辑器(比如记事

本)。这个文件的正常属性为系统-隐藏-只读,所以你必须用

'attrib' DOS 命令或在NT中,用文件属性对话框中来变更属性。 

  

Linux侧的故事

    现在我们将注意力转到Linux。我们需要安装Linux,定制LILO,

产生BOOTSECT.LIN文件。 

    第一步是装好Linux。我们都知道怎么做:为Linux选适当的系

统,SWAP,和用户分区,运行安装程序,等等。一切顺利时,这一步在

45分钟之内就可以完成。 

    接下去就要定制LILO。我们知道怎么做,但要注意*不能* 将LILO

装到MBR中去(除非你想将NT吞了:-))。设定LILO时,要选择将它装到

你Linux 的root分区。如果你还不知道如何设定LILO, 就花几分钟读

读HOW-TO文献,或者就用一些好的安装程序,我是用S.u.S.E.的, 因

此我的安装程序就是 'yast' 

(Yet Another Setup Tool)。 

    LILO定制好之后,(为行文方便, 此处假设Linux的root分区是

/dev/hda3)我们必须用'dd'来产生引导记录映象文件。以root Login

后,按以下做: 

# dd if=/dev/hda3 bs=512 count=1 of=/dosc/bootsect.lin

    如果没有能将FAT C: partition mount成为 /dosc,譬如说由于

这个分区被以NTFS方式格式化,不能访问这个分区。此时可以将

BOOTSECT.LIN写到一个以DOS方式格式化的磁盘中,或者NT能读的其它

什么分区也可以。如果BOOTSECT.LIN不是被放到C:\,要记住此时应相

应修改BOOT.INI文件。 

  

    现在你老板可以从她的NT Loader菜单中选择Linux了。NTLDR将会

装载BOOTSECT.INI,她就可以看到LILO的提示。她就可以去尝试她新

的Linux机器了。最后,你可以设定LILO在选择提示时能去引导Linux

和C: 上的DOS。你的老板就可以再次回到C: 分区上的NT Loader。 前

文描述的方法可以反复进行,如果你希望能选择引导多个Linux,就必

须为每一个Linux都产生一个相应的引导扇区映象文件。 

                       版权所有 (C) 1999 NJLUG

           出版于第36期《Linux公报》1999年1月 中文版第三期

                            


--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: bin@mtlab.hit.edu.cn]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.698毫秒