网页功能: 加入收藏 设为首页 网站搜索  
用OS Loader实现多重引导
发表日期:2006-10-04作者:[转贴] 出处:eNet学院  

  实现多重引导的工具很多,如System Commander, 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,所以一般用OS Loader。 下面说说怎么利用OS Loader来实现多重引导:



  举例来说,我想在硬盘上同时装上Windows98,windowsNT和Redhat Linux,怎样才能实现多重引导呢?

  你可以先装Windows98,然后安装WindowsNT。WindowsNT装完以后,OS Loader也就自动装上了。这时你的系统其实已经可以进行多重引导了。

  但要想在这个基础上再加一些操作系统的话,还需要再做一些工作。



  如果足够细心的话,在装完WindowsNT以后,你会发现在C盘的根目录下多了一个名叫bootsect.dos的文件,大小为512字节, 这是原来Windows98安装在主分区第一个扇区里的引导代码。

  在安装WindowsNT的时候,NT先把这个扇区的内容存到一个文件(即bootsect.dos)里,然后换上他自己的引导代码,也就是OS Loader。



  在进行多重引导的时候,如果选进入Windows98,OS Loader会把bootsect.dos读进内存然后执行,从而引导到windows98。



  在这里,我们要做的工作很简单,就是想办法把OS Loader的代码读出来,存到文件里去,也就是要把主分区第一扇区的512字节读出来。在DOS下,这可以用debug来做,也可以自己写一个小程序来实现。


  但是如果装Linux的话,问题就十分简单了。Linux里有一个现成的实用程序可以用来直接读写扇区。

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


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



  第二:应该做一张启动软盘(bootdisk),以便你能够进入到Linux里。因为现在lilo没有装在MBR里,暂时还不能直接从硬盘引导到Linux。

  现在,装完Linux后,用刚刚做的Linux启动软盘启动,引导到Linux系统。



  假设Linux装在了第一个硬盘的第六个分区,那么在提示符下可以这么敲:


  dd if=/dev/hda6 of=bootsect.lnx count=1 回车


  这句话的意思是把第一个硬盘第六分区(/dev/hda6)的第一个扇区的数据读到文件bootsect.lnx里。



  参数说明:

  if:in file(输入文件)

  of:out file(输出文件)

  count:读写次数


  同样可以把C盘第一扇区的数据读到文件bootsect.wss里:


  dd if=/dev/hda1 of=bootsect.wss count=1


  这就是OS Loader的引导代码./dev/hda1就是dos下的C盘。


  把这两个文件copy到C盘的根目录(当然也可以在其他地方)下。



  再在C盘根目录下找到boot.ini,除掉只读属性后用文本编辑工具打开。  在[operating systems]段加上:


  C:\bootsect.lnx="Linux"



  存盘退出,再把boot.ini的只读属性加上。这样就实现了用OS Loader引导Linux。


  以后再装别的操作系统时,有可能把OS Loader覆盖掉,



  这时只要再进到Linux里,使用dd命令:


  dd if=/dev/hda1 of=bootsect.new count=1


  把新装操作系统的引导代码存到bootsect.new里,然后:


  dd if=bootsect.wss of=/dev/hda1 count=1


  把OS Loader恢复回去。再在boot.ini里类似这样加上一行:


  C:\bootsect.new="new system"


  就可以引导新装的操作系统了。


  顺便提醒一下,每次重新编译了Linux的内核(kernel), 都应该把lilo再读出来:

  dd if=/dev/hda6 of=bootsect.lnx count=1

  再把bootsect.lnx copy到C盘根目录。否则使用了新内核的Linux很有可能引导失败。



  用OS Loader不是必须要装WindowsNT,可以直接把bootsect.wss写到C盘的第一扇区里, 再把boot.ini, ntldr, Ntdetect.com 拷贝到C盘根目录下。
我来说两句】 【加入收藏】 【返加顶部】 【打印本页】 【关闭窗口
中搜索 用OS Loader实现多重引导
本类热点文章
  忘记密码也能登录Win2000
  文件夹加密Easy!
  九招让你的硬盘更快,系统更稳定
  怎样删除Windows 2000自带的游戏
  “网上邻居”如何和平共处?
  去除掉Win2000系统的登录界面
  为USB移动盘建立“回收站”
  Win2000中的IP路由的安装与设置
  实现对共享文件的监控
  八招秘籍保证Windows 2000安全
  Windows资源分享隐藏小技巧
  恢复WIN2K的个人设置
最新分类信息我要发布 
最新招聘信息

关于我们 / 合作推广 / 给我留言 / 版权举报 / 意见建议 / 广告投放  
Copyright ©2003-2024 Lihuasoft.net webmaster(at)lihuasoft.net
网站编程QQ群   京ICP备05001064号 页面生成时间:0.00379