创建空白的引导分区用于使用Grub4Dos启动硬盘上的所有系统

今天花费了几乎一天的时间解决这个问题。写篇文章记录下过程,以作记录.
 
 
背景:
 
之前一直做linux下的开发,所有一直使用linux系统,主要是Ubuntu,Kubuntu和OpenSUSE。硬盘上系统很多,不管使用 grub还是xp管理启动项都不太和我的心意。xp肯定不可能关系linux的启动项;grub可以管理所有系统的启动,但又没有Grub4Dos的一些特性。所以之前都是一直使用一个大小512MB左右的Grub4Dos启动分区独立管理启动列表。但这个分区是很早之前就做好了的,后面由于重装系统等操作,致使其内容发生变化(下面详述原因),GHOST到另外一台机器上后不能正常使用。
 
 
今年公司有新的项目要用Qt统一3个平台下的软件,所以要重新做架构。这个工作交给了我,并且先只做Windows下的,那么开发环境就需要转换到windows(win7)下。公司给配了台4核的新机器,所以想把老机器上的linux系统迁过去,并且新机器上也用Grub4Dos做启动管理。
 
 
老机器上只有一个Win7系统。
 
 
过程:
 
1. 使用Ubuntu安装盘,用GParted调整分区(安全,windows下的工具老造成分区表丢失等很烦人的问题)。
 
2. 从老机器上把Grub4Dos分区GHOST到新机器,不可用。
 
3. 之前的启动U盘不可用,从网上下载大白菜启动U盘制作工具V3.5,重新制作了启动U盘。
 
4. 用启动U盘,启动到WinPE。
 
5. 修复MBR到XP。
 
6. 设置新机器上得Grub4Dos分区为活动分区(下简称为D)。
 
7. 拷贝ntldr文件到D。
 
8. 下载最新的Grub4Dos,V4.4。
 
9. 拷贝grldr和menu.lst到D。
 
10. 创建boot.ini文件并正确书写内容。
 
11. 重启系统——> 失败。
 
 
其实从上边的过程看其实没有什么问题,所以失败后一直不知道什么原因。花费很多时间尝试,都没能解决问题,主要是确认是不是只需要ntldr文件;修改Boot.ini并测试;查找资料等等。还花费时间尝试在老机器的XP系统上搭一个虚拟机测试下。
 
 
问题原因:
 
新机器没有光驱,之前为了启动到Ubuntu的Live系统,在win7下装了个Grub4Dos。也就是在C盘下有一个grldr文件。
 
所以boot.ini中的“c:\grldr=“Grub4Dos””,一直启动到之前的C盘下的grldr文件。
 
而类似“multi(0)disk(0)rdisk(0)partition(x)\grldr”的启动项,都不能启动系统。x代表我试了好多数值从1-4。
 
 
解决办法:
 
1. 删除C盘下有一个grldr文件,因为Grub4Dos是从第一个分区开始搜索grldr文件,所以一直找不到D盘下的(这个问题其实之前知道的,只是好长时间不用Windows,都忘了)。
 
2. 启动,一切正常。
 
 
总结:
 
一个Grub4Dos启动分区需要的全部文件:
 
1. ntldr文件
 
2. boot.ini文件
 
3. grldr
 
4. menu.lst
 
 
启动的过程是:
 
硬盘的MBR被加载——>寻找硬盘上的活动分区——>加载ntldr文件——>解析boot.ini——>加载grldr——>解析menu.lst
 
 
先写这些后续继续完善。
原文地址:https://www.cnblogs.com/huapox/p/3299966.html