当前位置:操作系统 > Unix/Linux >>

多系统启动菜单的终结方案

前言

  实现多重引导的工具很多,如System Commander,bootstar, Linux的lilo,和WindowsNT自带的OS Loader等等。其原理不外乎两种:一是修改MBR(Master Boot Record),在MBR的最后用jmp指令跳到自己的代码上来,从而控制引导过程;另一种方法是修改主分区里第一个扇区的引导代码,来实现多重引导。

  MBR(即主引导记录),指的是硬盘的第0个柱面(cylinder)的第0磁道(track)的第0扇区(sector)。主分区,对于dos,windows等使用fat文件系统的操作系统来说,就是C盘; 在Linux下,则是指root文件系统所在的分区。

  System Commander和lilo用的是修改MBR的方法;OS Loader则用后一种方法。修改MBR会造成严重的兼容问题,可能被某些杀毒软件误认为是病毒杀掉。我不喜欢乱改MBR,所以一般用OS Loader。下面以linux为例说说怎么利用OS Loader来实现多重引导:

  一、安装OS Loader:

  假如想在硬盘上同时装上Windows98,windowsNT和Redhat Linux,你可以先装Windows98,然后安装WindowsNT。WindowsNT装完以后,OS Loader也就自动装上了。如果这个顺序有错误,你需要用到附件里的程序和脚本,它可以为你安装上OS Loader,这时你的系统其实已经可以进行多重引导了。

  二、获取各种OS的引导文件:

  在OS Loader再加一些操作系统,需要在装完WindowsNT以后想办法把其它OS的引导代码读出来,存到文件里去,也就是要把主分区第一扇区的512字节读出来。在DOS下,这可以用debug或是norton diskedit来做,也可以自己写一个小程序来实现。

  其实装完OS Loader以后系统就已经有了一个bootsect.dos,这个就是win9x的引导文件。下面用debug的方法通常不会用到。

  debug

  -R cx

  cx 0000

  200//设置读取长度CX为512字节

  -L 100 2 0 1

  //读取主引导扇区至内存ds:100处

  -N bootsect.w98 //假设你是在Win98下,

  将引导扇区文件存为bootsect.w98

  -W 100//写bootsect.w98文件

  -Q//退出Debug程序

  Linux里有一个现成的实用程序可以用来直接读写扇区。

  安装Linux有两点要注意的地方。

  第一:在安装lilo的时候,一定不要把lilo装到MBR里去,因为现在是想用OS Loader来做多重引导。应该把lilo装到主分区的第一扇区里(注意,这里的主分区指的不是C盘,而是安装Linux的那个分区)。

  第二:应该做一张启动软盘(bootdisk),以便你能够进入到Linux里。因为现在lilo没有装在MBR里,暂时还不能直接从硬盘引导到Linux。在Linux中则按下面方法可得到Linux的引导扇区文件:

  以Red Hat Linux 6.0为例:

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

  这里假设你Red Hat Linux LILO安装在/hda3上,引导扇区文件存为bootsect.lnx。

  以FreeBSD3.2为例:

  #dd if=/dev/rwd02 of=bootsect.bsd bs=512 count=1

  这里假设你FreeBSD安装在第二个基本分区上,引导扇区文件存为bootsect.bsd。

  将Linux引导扇区文件存入DOS分区

  按上述方法获取的Linux引导扇区文件会存放在Linux分区上,NT OS Loader无法直接读取,需要将它保存在NT OS Loader所在的分区上,一般是C盘。

  以Red Hat Linux 6.0为例:

  #mount -t msdos /dev/hda1 /mnt

  #cp bootsect.lnx /mnt/bootsect.lnx

  以FreeBSD3.2为例:

  #mount -t msdos /dev/wd0s1 /mnt

  #cp bootsect.bsd /mnt/bootsect.bsd

  三、修改boot.ini文件

  打开Boot.ini文件,加入你想要引导的操作系统引导记录,即可大功告成。如:

  [boot loader]

  timeout=30

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

  [operating systems]

  C:\bootsect.w98="Microsoft Windows 98"

  C:\bootsect.lux="Red Hat Linux 6.0"

  C:\bootsect.bsd="FreeBSD Release 3.2"

  multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Professional" /fastdetect

  四、附件:

  本文件为DOS下的RAR自解文件,下载后改名为.exe,可以在dos或windows下自解压到c:\os目录下(其中install脚本基于c:\os目录创建),大家可根据自已的实际情况修改。

  本文件只提供了创建OS Loader菜单的功能,若要启动其它OS,再次强调:请注意不要将其安装到MBR,只将它的引导模块安装到自身分区。,然后将其第一个扇区(512字节)提取来存成文件,加入boot.ini即可。

  详细请参阅压缩包内的manual文件。

  下载OSLOADER.RAR

  

上一个:挑战记忆极限,实现LDAP的用户管理(一)
下一个:你会在Linux下用POP3收Web电子邮箱吗?

更多Unix/Linux疑问解答:
路由原理介绍
子网掩码快速算法
改变网络接口的速度和协商方式的工具miitool和ethtool
Loopback口的作用汇总
OSPF的童话
增强的ACL修改功能
三层交换机和路由器的比较
用三层交换机组建校园网
4到7层交换识别内容
SPARC中如何安装Linux系统(2)
SPARC中如何安装Linux系统(1)
用Swatch做Linux日志分析
实战多种Linux操作系统共存
浅析Linux系统帐户的管理和审计
Linux2.6对新型CPU的支持(2)
电脑通通透
玩转网络
IE/注册表
DOS/Win9x
Windows Xp
Windows 2000
Windows 2003
Windows Vista
Windows 2008
Windows7
Unix/Linux
苹果机Mac OS
windows8
安卓/Android
Windows10
如果你遇到操作系统难题:
访问www.zzzyk.com 试试
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,