OSLoader 实现多系统方案
时间:2007-02-17 来源:PHP爱好者
现今有许多系统引导程序,例如bootstart,bootselect,OS bootmanager...当然少不了
著名的System com-mander 。但是这些程序有的要占用一个主引导区,有的每次开机的时
候都要写一次MBR,总之使用虽然挺方便但是很容易被一些杀毒软件认为MBR有病毒(我曾
经使用SC4.0后用KV300杀毒,结果KV300“发现”MBR有病毒,杀掉后SC4就有问题了)。
而且每次开机都写一遍mbr,自己心里总觉得有点不舒服。于是希望使用一种安全又没有
上述软件缺点的多系统引导程序,以满足我既希望使用MS的系统,又想尝试Unix的稳定和
强大的愿望。
微软的Win NT 本身就附带了一个很好的多系统引导程序--OS Loader。
1.使用OS Loader的好处
它不单独占用一个主区,而且每次启动时不需要重写MBr,增加启动的item也很方便。
因此我选择了它。但是它有个比较大的毛病--当新安装了其他类型的系统,它是不能够
检测得到,而且也不会自动增加相应的item .飧鑫侍馕彝ü?慰妓?厩寤狟BS上面的方
法结合个人的实践已经得到了比较满意
的解决。可以实现MS
OS+Linux+BSD+Unix多启动。如果要增加其他类型的系统的话,也相当容易。
2.如何安装OS Loader实现多启动
首先你不需要真正地安装Winnt 4.0/5.0,你现在需要的是只是OSLoader这能进行多引
导的部分。方法如下:
在windows下的命令行提示符下,假设你的光驱是I:(我的光驱就是I:)。可以按照下面的
做法去做(#号是注释)
" md c:ntboot #建立一个专门的目录
md c:ntbootsystem32 #建立放置ntoskrnl.exe的目录
md c:ntbootwinnt #放置winnt.exe和dosnet.inf的目录
copy I:i386winnt.exe c:ntbootwinnt
copy I:i386dosnet.inf c:ntbootwinnt
copy I:i386ntldr c:
expand I:i386ntoskrnl.ex_ c:ntbootsystem32ntoskrnl.exe #解压缩NT的核心
copy I:i386bootfont.* c: #拷贝文字文件以便在开机是可以显示中文
"
你或者将上面的命令行写成批处理文件来自动完成。复制好后,退到纯dos7下,运行
lock命令,要不然安装OS Loader的时候一定会报错而当机。接着运行
" c:ntbootwinntwinnt.exe /b" 。随后它会报错,不理会它。
按F3退出。这时候OS Loader已经将MBR重些了一次。下一次启动的时候就会出现OS
Loader的启动画面。不过
你还得自己手动改C:boot.ini的内容以适合你的要求。
3.哪些文件是必须的
要使用OS Loader,必须的文件只有4个: ntldr、dosnet.inf、winnt.exe、
ntoskrnl.exe。在上面安装的过
程中可以看得很清楚,总共才不到1MB。如果你嫌麻烦,可以到我的主页上下载安装文件
(是我制作好的标准
安装程序)。另外,你如果使用的是NT 4.0中文版,那么你可以将bootfont.bin文件也拷
贝到c:,这样启动
菜单就可以显示中文。
4.如何使用
一般在第一次使用时,先退到dos下,进入ntbootwinnt目录,不过注意在执行
winnt.exe之前必须对分区进
行解锁,也就是键入“lock”命令,否则一运行winnt.exe就会导致当机。Lock完成以后
,键入"winnt/b",安
装程序会报错,无须理会它,按f3推出即可。OS Loader已经重写了MBR,并且可以引导你
的操作系统了。不过
它只能够识别到Dos6.22或者Windows(我估计是通过检查c盘的io.sys,
command.com,msdos.sys 等文件来识
别的)。要想引导其他类型的系统还要费些工夫。
5.多引导的原理
根据水木清华BBS上面的相关文章,结合我自己的实际经验和理解,我认为0OS Loader
的原理是:把来自其它
操作系统的启动扇区信息变成一个文件,大小一般是512字节,在启动OS Loader 的时候,
它读入这文件并启动
选择的操作系统,也就是说,这个系统或是不同模式的Windows NT,或是任何其它类型的
操作系统,例如Linux
、FreeBSD。
根据以上原理,我们可以知道要引导多系统的话,关键是如何获取相应的启动扇区前
512字节的启动信息。一
般对于Linux等类Unix系统,可以用dd 命令来获取。而对于Windows/Dos/Nt,一般没有类
似dd这类命令。如果
是想获取不是c盘的启动信息,可能要进入Linux等系统下面,用dd命令来获取。
6.如何引导其它类型的系统的实例
a.Linux 系列
我的方法是用PQmagic4.0建立一个Linux ext2主分区并激活为活动分区,然后建立一个
Swap分区。重新启动
后用RedHat 的安装光盘来启动,正常安装Linux。注意:在选取安装LILO在MBR还是它所
在的主分区的时候,
一定要选安装在Linux分区上!否则LILO将会代替OS Loader。
安装结束后,进入Linux的命令行,然后先将C盘挂上。方法如下:
#mkdir /mnt/c #建立一个c文件夹,C盘准备挂在c上
#mount -t vfat /dev/hda1 /mnt/c #将C盘挂在c上 ,不过是否hda1则要看你的c盘
是不是第一个主分区
#如果是第二个主分区就是hda2,如此类推
然后,确定你的Linux分区(指Ext2分区)是那个设备,例如hda2。如果你不知道,可
以键入" mount"看看就
可以了。弄清楚后,假设你的Linux 分区是hda2 ,在命令行下输入:
#dd if= /dev/hda2 of=/mnt/ntboot.lnx bs=512 count=1
对以上命令我想解释一下,它的大致意思是: dd if= Linux分区的盘号(或者对应的设
备) of=启动扇区文件
存放的路径 bs=对应扇区前?字节 count=1 。在本例中Linux分区的盘号是/dev目录下的
hda2 ,将启动扇区前51
2字节存成名称为ntboot.lnx,在/mnt目录下的文件。
然后输入:
#cp /mnt/ntboot.* /mnt/c
把扇区文件拷贝到C盘下面。这样获取启动扇区前512字节信息的任务就完成了。Reboot
后在进入C盘,再用回
Pqmagic将C盘激活成活动分区,并且在c:boot.ini里面添加一下信息:
" c:ntboot.lnx = "RedHat Linux 6.0 " " 注意它的格式,它是增加在[Operating
System]下面的。
B.FreeBSD 系列
在水木清华的BBS上面,关于引导FreeBSD的方法大致是做一张Linux的引导盘,含有
LILO的。然后用软盘上
的LILO启动FreeBSD,获取软盘上的扇区文件才能正常引导等等(由于一时间找不到相关
资料,所以这些只是
凭印象的记忆,可能有误)。而根据上面的原理,我认为完全可以仿照获取Linux启动扇
区的方法来获取BSD启
动扇区信息。只是要小心分辨到底在BSD下面那个是它的引导分区。
具体做法是:
正常安装FreeBSD,在选取将引导程序安装的位置和方式的时候,注意一定不要选安装
在MBR,选第三项。目
的也是和上面的一样,让MBR由OS Loader来占有。
重新启动的时候进入BSD(如果在安装FreeBSD的时候你没有将它激活为活动分区的话,
你只能通过软盘启动
FreeBSD了),也是使用dd命令。不过相对于Linux对于硬盘命名而言,FreeBSD不是用had
或者hdb等命名方法。
它用wds0,wds1等命名。在本例中FreeBSD的分区是wds03。先将c盘挂上,然后所以输入:
#dd if =/dev/wds03 of=/mnt/ntboot.bsd bs=512 count=1
#cp /mnt/ntboot.* /mnt/c
最后Reboot,进入c盘,用Pqmagic将C盘重新激活成活动的,并且在boot.ini中增加相
应的item即可。可以说
安装FreeBSD并且实现多引导并不象水木清华BBS上讲的那么复杂,不过也许是因为我使用
的FreeBSD版本较高,
以及我是在FreeBSD下获取启动扇区的原因吧。
7.关于使用OS Loader的一些FAQ
a.如果想引导Dos6.22如何做?
可以这样做,做一张Dos6.22启动盘备用,另外先备份c:bootsect.dos为ntboot.w98。
然后在进入windows之
前按F8,进入第七项。启动硬盘上的Dos6.22这是c盘上的windows的dos7的io.sys等文件
都会变成了后缀是.w40
的文件了。这是重新启动,用刚才的软盘启动。然后在A:下sys c:。进入C盘的
ntbootwinnt目录,运行"winnt
/b",这时候生成的c:bootsect.dos就是Dos6.22的启动扇区文件(刚才的ntboot.w98就
是Win98的启动扇区文
件)。同样将c:bootsect.dos 备份成ntboot.dos。然后在boot.ini中添加相应的item。
B.怎样修改默认的启动选项
编辑c:boot.ini,注意在[Boot Loader]下面有一个Default=?的行,修改?成为你希望
作为默认系统所对应
的启动扇区文件即可。例如我改成:Default= c:ntboot.lnx ,对应就是启动时默认进
入Linux。
C.对于大硬盘如何解决多系统的安装
这是个挺麻烦的问题,一般对于>1024柱面,采用LBA模式的硬盘是不能够将Linux 或者
FreeBSD等系统安装在
超过8.4GB之后的。因为由于这个限制使LILO或者Boot Easy失效或安装失败。一般尽可能
将要启动的系统安装
在<1024柱面的空间。详细的解决方法可以参考我另外一篇文章《10.1G硬盘安装多系统手
记》。
8.后记
通过以上方法,我已经成功地安装了Windows9x/NT /dos6.22 ,Linux,FreeBSD等系,
Unix也尝试过,不过由
于Linux等也和Unix差不多,所以没有长期使用Unix。在Win95/98, Win NT4.0/5.0 中英
文版,Dos6.22, Red
-Hat Linux 5.0/5.1/5.2/6.0,FreeBSD 2.2.6/3.0/3.2上通过。现在给出我一直使用的
boot.ini内容给各位参
考#这个文件很简单,但是包含了三类系统。尽管BSD和Linux都是类Unix,但是还是不同。
[Boot Loader]
Timeout=30
Default=C:
[Operating Systems]
c:ntboot.lnx = "RedHat Linux release-6.0 "
c:ntboot.bsd = "FreeBSD stable ver 2.2.6 "
C: = "MS Windows 98 4.10--1998"
对于最庞大的多系统引导文件可以如下:
[Boot Loader]
Timeout=30
Default=C:
[Operating Systems]
multi(0)disk(0)rdisk(0)partition(1)WINNT="Windows NT 中文工作站4.00"
multi(0)disk(0)rdisk(0)partition(1)WINNT="Windows NT 中文工作站4.00 [安全模式
]" /basevideo /sos
multi(0)disk(0)rdisk(0)partition(2)WINNT="Windows 2000 专业版"
multi(0)disk(0)rdisk(0)partition(2)WINNT="Windows 2000 专业版 [安全模式]"
/basevideo /sos
C: ="主引导区记录"
C:ntboot.w98="Microsoft Windows 98"
C:ntboot.dos="MS-DOS 6.22" /Win95DOS
C:ntboot.bsd="Free BSD 2.2.6"
C:ntboot.rh6="RedHat Linux 6.0"
C:ntboot.s35="Slackware Linux 3.4"
总共10个item,屏幕几乎都被占满了,也真够吓人的。我想即使是要求很高的用户也会
对OS Loader满意吧。
因为System Commander能做的它也基本上能做,关键是不会去抢MBR,不用次次都擦写MBR
。如果配合NT 中文
版的OS Loader V4.00,那么就可以在启动菜单显示中文,这可是其它的引导软件没有的
优点啊!
关于使用NT OS Loader来实现多系统引导的原理、方法和实战到这里就结束了。至于安
装多少个系统,有没
有必要使用它,这就看个人需要了。
非常全面的一个php技术网站,php爱好者站 http://www.phpfans.net 有相当丰富的文章和源代码.
著名的System com-mander 。但是这些程序有的要占用一个主引导区,有的每次开机的时
候都要写一次MBR,总之使用虽然挺方便但是很容易被一些杀毒软件认为MBR有病毒(我曾
经使用SC4.0后用KV300杀毒,结果KV300“发现”MBR有病毒,杀掉后SC4就有问题了)。
而且每次开机都写一遍mbr,自己心里总觉得有点不舒服。于是希望使用一种安全又没有
上述软件缺点的多系统引导程序,以满足我既希望使用MS的系统,又想尝试Unix的稳定和
强大的愿望。
微软的Win NT 本身就附带了一个很好的多系统引导程序--OS Loader。
1.使用OS Loader的好处
它不单独占用一个主区,而且每次启动时不需要重写MBr,增加启动的item也很方便。
因此我选择了它。但是它有个比较大的毛病--当新安装了其他类型的系统,它是不能够
检测得到,而且也不会自动增加相应的item .飧鑫侍馕彝ü?慰妓?厩寤狟BS上面的方
法结合个人的实践已经得到了比较满意
的解决。可以实现MS
OS+Linux+BSD+Unix多启动。如果要增加其他类型的系统的话,也相当容易。
2.如何安装OS Loader实现多启动
首先你不需要真正地安装Winnt 4.0/5.0,你现在需要的是只是OSLoader这能进行多引
导的部分。方法如下:
在windows下的命令行提示符下,假设你的光驱是I:(我的光驱就是I:)。可以按照下面的
做法去做(#号是注释)
" md c:ntboot #建立一个专门的目录
md c:ntbootsystem32 #建立放置ntoskrnl.exe的目录
md c:ntbootwinnt #放置winnt.exe和dosnet.inf的目录
copy I:i386winnt.exe c:ntbootwinnt
copy I:i386dosnet.inf c:ntbootwinnt
copy I:i386ntldr c:
expand I:i386ntoskrnl.ex_ c:ntbootsystem32ntoskrnl.exe #解压缩NT的核心
copy I:i386bootfont.* c: #拷贝文字文件以便在开机是可以显示中文
"
你或者将上面的命令行写成批处理文件来自动完成。复制好后,退到纯dos7下,运行
lock命令,要不然安装OS Loader的时候一定会报错而当机。接着运行
" c:ntbootwinntwinnt.exe /b" 。随后它会报错,不理会它。
按F3退出。这时候OS Loader已经将MBR重些了一次。下一次启动的时候就会出现OS
Loader的启动画面。不过
你还得自己手动改C:boot.ini的内容以适合你的要求。
3.哪些文件是必须的
要使用OS Loader,必须的文件只有4个: ntldr、dosnet.inf、winnt.exe、
ntoskrnl.exe。在上面安装的过
程中可以看得很清楚,总共才不到1MB。如果你嫌麻烦,可以到我的主页上下载安装文件
(是我制作好的标准
安装程序)。另外,你如果使用的是NT 4.0中文版,那么你可以将bootfont.bin文件也拷
贝到c:,这样启动
菜单就可以显示中文。
4.如何使用
一般在第一次使用时,先退到dos下,进入ntbootwinnt目录,不过注意在执行
winnt.exe之前必须对分区进
行解锁,也就是键入“lock”命令,否则一运行winnt.exe就会导致当机。Lock完成以后
,键入"winnt/b",安
装程序会报错,无须理会它,按f3推出即可。OS Loader已经重写了MBR,并且可以引导你
的操作系统了。不过
它只能够识别到Dos6.22或者Windows(我估计是通过检查c盘的io.sys,
command.com,msdos.sys 等文件来识
别的)。要想引导其他类型的系统还要费些工夫。
5.多引导的原理
根据水木清华BBS上面的相关文章,结合我自己的实际经验和理解,我认为0OS Loader
的原理是:把来自其它
操作系统的启动扇区信息变成一个文件,大小一般是512字节,在启动OS Loader 的时候,
它读入这文件并启动
选择的操作系统,也就是说,这个系统或是不同模式的Windows NT,或是任何其它类型的
操作系统,例如Linux
、FreeBSD。
根据以上原理,我们可以知道要引导多系统的话,关键是如何获取相应的启动扇区前
512字节的启动信息。一
般对于Linux等类Unix系统,可以用dd 命令来获取。而对于Windows/Dos/Nt,一般没有类
似dd这类命令。如果
是想获取不是c盘的启动信息,可能要进入Linux等系统下面,用dd命令来获取。
6.如何引导其它类型的系统的实例
a.Linux 系列
我的方法是用PQmagic4.0建立一个Linux ext2主分区并激活为活动分区,然后建立一个
Swap分区。重新启动
后用RedHat 的安装光盘来启动,正常安装Linux。注意:在选取安装LILO在MBR还是它所
在的主分区的时候,
一定要选安装在Linux分区上!否则LILO将会代替OS Loader。
安装结束后,进入Linux的命令行,然后先将C盘挂上。方法如下:
#mkdir /mnt/c #建立一个c文件夹,C盘准备挂在c上
#mount -t vfat /dev/hda1 /mnt/c #将C盘挂在c上 ,不过是否hda1则要看你的c盘
是不是第一个主分区
#如果是第二个主分区就是hda2,如此类推
然后,确定你的Linux分区(指Ext2分区)是那个设备,例如hda2。如果你不知道,可
以键入" mount"看看就
可以了。弄清楚后,假设你的Linux 分区是hda2 ,在命令行下输入:
#dd if= /dev/hda2 of=/mnt/ntboot.lnx bs=512 count=1
对以上命令我想解释一下,它的大致意思是: dd if= Linux分区的盘号(或者对应的设
备) of=启动扇区文件
存放的路径 bs=对应扇区前?字节 count=1 。在本例中Linux分区的盘号是/dev目录下的
hda2 ,将启动扇区前51
2字节存成名称为ntboot.lnx,在/mnt目录下的文件。
然后输入:
#cp /mnt/ntboot.* /mnt/c
把扇区文件拷贝到C盘下面。这样获取启动扇区前512字节信息的任务就完成了。Reboot
后在进入C盘,再用回
Pqmagic将C盘激活成活动分区,并且在c:boot.ini里面添加一下信息:
" c:ntboot.lnx = "RedHat Linux 6.0 " " 注意它的格式,它是增加在[Operating
System]下面的。
B.FreeBSD 系列
在水木清华的BBS上面,关于引导FreeBSD的方法大致是做一张Linux的引导盘,含有
LILO的。然后用软盘上
的LILO启动FreeBSD,获取软盘上的扇区文件才能正常引导等等(由于一时间找不到相关
资料,所以这些只是
凭印象的记忆,可能有误)。而根据上面的原理,我认为完全可以仿照获取Linux启动扇
区的方法来获取BSD启
动扇区信息。只是要小心分辨到底在BSD下面那个是它的引导分区。
具体做法是:
正常安装FreeBSD,在选取将引导程序安装的位置和方式的时候,注意一定不要选安装
在MBR,选第三项。目
的也是和上面的一样,让MBR由OS Loader来占有。
重新启动的时候进入BSD(如果在安装FreeBSD的时候你没有将它激活为活动分区的话,
你只能通过软盘启动
FreeBSD了),也是使用dd命令。不过相对于Linux对于硬盘命名而言,FreeBSD不是用had
或者hdb等命名方法。
它用wds0,wds1等命名。在本例中FreeBSD的分区是wds03。先将c盘挂上,然后所以输入:
#dd if =/dev/wds03 of=/mnt/ntboot.bsd bs=512 count=1
#cp /mnt/ntboot.* /mnt/c
最后Reboot,进入c盘,用Pqmagic将C盘重新激活成活动的,并且在boot.ini中增加相
应的item即可。可以说
安装FreeBSD并且实现多引导并不象水木清华BBS上讲的那么复杂,不过也许是因为我使用
的FreeBSD版本较高,
以及我是在FreeBSD下获取启动扇区的原因吧。
7.关于使用OS Loader的一些FAQ
a.如果想引导Dos6.22如何做?
可以这样做,做一张Dos6.22启动盘备用,另外先备份c:bootsect.dos为ntboot.w98。
然后在进入windows之
前按F8,进入第七项。启动硬盘上的Dos6.22这是c盘上的windows的dos7的io.sys等文件
都会变成了后缀是.w40
的文件了。这是重新启动,用刚才的软盘启动。然后在A:下sys c:。进入C盘的
ntbootwinnt目录,运行"winnt
/b",这时候生成的c:bootsect.dos就是Dos6.22的启动扇区文件(刚才的ntboot.w98就
是Win98的启动扇区文
件)。同样将c:bootsect.dos 备份成ntboot.dos。然后在boot.ini中添加相应的item。
B.怎样修改默认的启动选项
编辑c:boot.ini,注意在[Boot Loader]下面有一个Default=?的行,修改?成为你希望
作为默认系统所对应
的启动扇区文件即可。例如我改成:Default= c:ntboot.lnx ,对应就是启动时默认进
入Linux。
C.对于大硬盘如何解决多系统的安装
这是个挺麻烦的问题,一般对于>1024柱面,采用LBA模式的硬盘是不能够将Linux 或者
FreeBSD等系统安装在
超过8.4GB之后的。因为由于这个限制使LILO或者Boot Easy失效或安装失败。一般尽可能
将要启动的系统安装
在<1024柱面的空间。详细的解决方法可以参考我另外一篇文章《10.1G硬盘安装多系统手
记》。
8.后记
通过以上方法,我已经成功地安装了Windows9x/NT /dos6.22 ,Linux,FreeBSD等系,
Unix也尝试过,不过由
于Linux等也和Unix差不多,所以没有长期使用Unix。在Win95/98, Win NT4.0/5.0 中英
文版,Dos6.22, Red
-Hat Linux 5.0/5.1/5.2/6.0,FreeBSD 2.2.6/3.0/3.2上通过。现在给出我一直使用的
boot.ini内容给各位参
考#这个文件很简单,但是包含了三类系统。尽管BSD和Linux都是类Unix,但是还是不同。
[Boot Loader]
Timeout=30
Default=C:
[Operating Systems]
c:ntboot.lnx = "RedHat Linux release-6.0 "
c:ntboot.bsd = "FreeBSD stable ver 2.2.6 "
C: = "MS Windows 98 4.10--1998"
对于最庞大的多系统引导文件可以如下:
[Boot Loader]
Timeout=30
Default=C:
[Operating Systems]
multi(0)disk(0)rdisk(0)partition(1)WINNT="Windows NT 中文工作站4.00"
multi(0)disk(0)rdisk(0)partition(1)WINNT="Windows NT 中文工作站4.00 [安全模式
]" /basevideo /sos
multi(0)disk(0)rdisk(0)partition(2)WINNT="Windows 2000 专业版"
multi(0)disk(0)rdisk(0)partition(2)WINNT="Windows 2000 专业版 [安全模式]"
/basevideo /sos
C: ="主引导区记录"
C:ntboot.w98="Microsoft Windows 98"
C:ntboot.dos="MS-DOS 6.22" /Win95DOS
C:ntboot.bsd="Free BSD 2.2.6"
C:ntboot.rh6="RedHat Linux 6.0"
C:ntboot.s35="Slackware Linux 3.4"
总共10个item,屏幕几乎都被占满了,也真够吓人的。我想即使是要求很高的用户也会
对OS Loader满意吧。
因为System Commander能做的它也基本上能做,关键是不会去抢MBR,不用次次都擦写MBR
。如果配合NT 中文
版的OS Loader V4.00,那么就可以在启动菜单显示中文,这可是其它的引导软件没有的
优点啊!
关于使用NT OS Loader来实现多系统引导的原理、方法和实战到这里就结束了。至于安
装多少个系统,有没
有必要使用它,这就看个人需要了。
非常全面的一个php技术网站,php爱好者站 http://www.phpfans.net 有相当丰富的文章和源代码.
相关阅读 更多 +