制作启动U盘与定制多系统启动
说明:本文将讲述有关bootmgr引导启动与grub引导启动制作的相关经验,文中提到的知识谈不上完全正确,只是一些个人在制作U盘启动获得的心得,但我会尽力正确的解释清楚。
制作启动U盘
所需工具:
- Bootice:部署U盘/硬盘启动,必须。
- grub4dos:grub引导必备,必须。
- grubinst:功能类似Bootice,可选。
- HPUSBFW:惠普U盘存储格式化工具,可选。
- NTBOOTautofix:自动修复启动项,功能类似Bootice,可选。
- 其它工具类镜像等如一键Ghost,MaxDos等,可选。
- VHD:虚拟光驱加载工具,可选
(1).U盘引导准备:更新主引导记录
说明:一般U盘的格式为FAT32,要求单文件大小不超过4G。如果刻录的系统盘中(如合盘后的镜像)有超过4G的单文件,则需要使用NTFS格式或者ExFAT。下面以NTFS格式为例说明。
操作步骤:
- 按照需要的格式将u盘格式化。如果u盘不是usb-hdd格式的话,需要用工具HPUSBFW来把u盘格成usb-hdd格式。
- 启动BOOTICE,选中选项页"物理磁盘处理",在"目标磁盘"选中待启动的U盘(根据大小和盘符判断);
- 点击"主引导记录(M)",弹出的对话框中,选择"UltraISO
USB-HDD+/USB-ZIP+",点击"安装/配置(s)",弹出的对话框中,点击"UltraISO
USB-HDD+",提示"已成功更新主引导记录",点击"确定",再点击"取消"回到软件开始界面;
如此,U盘的主导记录更新完毕,准备工作完成。
(2).启动项部署:更新分区引导记录
1.grub引导
说明:GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。GRUB采用滚动屏幕选择想要启动的操作系统。通过向"menu.lst"文件中添加相关信息,GRUB可以控制150或者更多的启动选项,在启动时用方向键进行选择。[From:Wiki]
1.1
更新分区引导记录
方法一:grubinst方案
说明:采用此方案,可以忽略第(1)步更新主引导记录的操作。
1.管理员身份运行"grubinst_gui.exe","设备"大栏中勾选"磁盘",下拉选择相应待启动的U盘(根据大小和盘符判断);
2.点击"分区列表"后面的"刷新"按钮,然后在该栏下拉选择"整个磁盘MBR",如果没出现这一栏,则需要根据步骤(1)格式化U盘;
3."选项"大栏中勾选"不保存原来MBR"、"启动时不搜索软盘"、"不引导原来MBR",点击"安装",弹出界面,提示"The
MBR/BS has been successfully installed...",按任意键退出。
方法二:BOOTICE方案
说明:采用此方案需要通过第(1)步更新主引导记录的操作。
1.启动BOOTICE,选中选项页"物理磁盘处理",在"目标磁盘"选中待启动的U盘(根据大小和盘符判断);
2.点击"分区引导记录(P)",弹出的对话框中,选择"GRUB4DOS
0.4.5c/0.4.6a(FAT/FAT32/NTFS/ExFAT)",点击"安装/配置(s)",弹出的对话框中,使用默认设置,点击"确定",提示"成功更新分区的PBR!",点击"确定",再点击"取消"回到软件开始界面;
3.点击"分区管理(G)",弹出的对话框中,选择引导文件"GRLDR"所在的分区,点击"激活",完成启动项设置,退出。如果"激活"按钮为灰色,说明该分区已经为活动分区,无需更改,退出即可。
1.2
设计引导菜单
1.
打开文件夹grub4dos,将其中的grldr和menu.lst文件复制到U盘根目录,建议把grub.exe也复制进去。注意,如果menu.lst有中文,则应该复制grub4dos\chinese文件夹下的文件,同时需要复制额外提供的字库文件FONTS.GZ。
2.设计grub引导菜单,通过修改menu.lst实现。我的menu.lst如下,请根据其复制相应文件到指定目录,或者自定义路径并在munu.lst中做相应修改。
color black/cyan
yellow/cyan
#超时时间
timeout 30
#默认选项
default 0
fontfile /grub/fonts.gz
#背景底图
splashimage=/grub/jair.xpm.gz
#bootmgr启动
title [1] 安装Winows系统
find --set-root /bootmgr
chainloader /bootmgr
boot
#直接加载iso启动
title [2] 启动WinXPPE
fallback 6
find --set-root
/tools/LMTWINPE.iso
map /tools/LMTWINPE.iso
(0xff) || map --mem /tools/LMTWINPE.iso (0xff)
map --hook
chainloader (0xff)
savedefault --wait=2
#直接加载iso启动
title [3] 启动Win7PE系统
fallback 6
find --set-root
/tools/WIN7PE.iso
map /tools/WIN7PE.iso
(0xff) || map --mem /tools/WIN7PE.iso (0xff)
map --hook
chainloader (0xff)
savedefault --wait=2
#直接加载iso启动
title [4] 启动Win8PE系统
fallback 6
find --set-root
/tools/Ton8PE.iso
map /tools/Ton8PE.iso
(0xff) || map --mem /tools/Ton8PE.iso (0xff)
map --hook
chainloader (0xff)
savedefault --wait=2
#直接加载img启动
title [5] 启动MAXDOS9.3工具
map --mem
/tools/MAXDOS9.3.IMG (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
#直接加载img启动
title [6] 磁盘分区管理
DiskGenius
clear
#password
map --mem
/tools/DG450DOS.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
#直接加载img启动
title [7] 启动江民杀毒 KV2006
clear
#password
map --mem
/tools/kv2006.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
#直接加载img启动
title [8] 启动一键GHOST
clear
#password
map --mem
/tools/GHOST.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
#直接加载img启动
title [9] 用户密码清除工具
find --set-root
--ignore-floppies /tools/password.img
map --mem
/tools/password.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
#直接加载img启动
title [10] BIOS密码清除工具
find --set-root
--ignore-floppies /tools/cmos.img
map --mem
/tools/cmos.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
#直接加载ima启动
title [11] 启动DOS98工具
map --mem
/tools/win98j.ima (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
title [12] 重启计算机
reboot
title [13] 关闭计算机
halt
至此,grub引导启动U盘制作完毕。
1.3
常见问题
1.直接引导ISO失败的问题
如果iso文件不能成功引导,问题可能出在这个iso文件的文件系统格式不为grub4dos支持上,用UltraISO把它转为标准的iso文件即可。
2.直接引导WinPE的ISO时无法加载外置程序的问题
分析:因为PE的软件分为有全内置和外挂,而大多数的PE软件都是外挂的,外挂式PE在启动时只载入PE内核,进入系统后才从光盘中挂载外置程序,而grub引导iso启动后,不可能再给此iso分配盘符(因为grub只负责引导系统系统启动,系统启动之后的不再处理),如此也就无法加载外置程序。至于解决方案,网上有很多,下面罗列其中的四种,但不见得每一种都能有效解决问题。
- 把软件全部转化为内置式的,这个不是很好,首先对于内存小的老式电脑来说,负荷太大,其次修改PE也是需要花点功夫的,有些时候我们只是需要偶尔用一下PE而已,需要PE反而本末倒置。
- 启动后手动挂载外置程序。在u盘上存储虚拟光驱软件,在系统启动后,运行虚拟光驱,将启动用的iso载入,运行CMD,执行命令:
pecmd load X:\*** \xxx.ini
参数说明:第一个X为虚拟光驱盘符,***
为外置程序所在目录,xxx.ini为系统内核加载后,完成外置程序加载的配置文件。拿我用的老毛桃911版WinPE来说,进入PE后没有任何软件,加载iso到虚拟光驱,然后在cmd下执行pecmd
load X:\MINIPE\WinPE.INI,所有软件就会加载成功了。至于虚拟光驱,可以用微软的VCdControlTool,也可以用VHD等。 - 给PE加上firadisk驱动,这个方法也是需要修改PE的,但是相对来说对PE的进行的手术不是很大,所以可以一试。下面也是拿老毛桃911版WinPE来说命操作步骤:
- 获取Firadisk驱动文件,最新版下载地址:。
- 打开PE镜像文件,进入MINIPE
文件夹获取PE内核文件WINPE.IS_,用压缩软件解压获取WinPE.ISO; - 打开内核镜像文件WinPE.ISO,进入WXPE文件夹获取TXTSETUP.SI_文件,再将其解压获取TXTSETUP.SIF文件。
- 将Firadisk.sys文件复制到PE的/WXPE/SYSTEM32/DRIVERS目录下,修改winnt.sif,在[SCSI.Load]节加入一行"Firadisk=Firadisk.sys,4"(不包括冒号),最后用CAB打包工具CABdabgj重新打包为TXTSETUP.SI_,然后再将WinPE.ISO重新打包为WINPE.IS_即可。
- 替换之前的PE镜像文件中的PE内核文件,用UltraISO重新制作新的ISO镜像。
- 用加载firadisk镜像的方式。Grub菜单类似如下:
find --set-root /FIRADISK.IMG
map --mem /FIRADISK.IMG (fd0)
find --set-root /MYISO.ISO
map /MYISO.ISO (0xff) || map --mem /MYISO.ISO
(0xff)
map
–hookchainloader
(0xff) - 上面四种方案在我的机子上测试都出现问题,具体原因也没去深究。菜鸟纠结太多也是浪费时间,不过我自己想了一种解决方法。既然说无法分配盘符,然后找不到外置软件,那我就把外置软件的文件夹复制到U盘根目录,应该就可以找到了吧?实验证明,这种笨方法确实有效。所以就会看见,启动U盘根路径下多了一个文件夹MINIPE。还是以老毛桃911版WinPE为例说明。将该PE镜像文件中的MINIPE文件夹复制到U盘根目录,然后删除WINPE.IS_,因为这个是内核PE,可以正常加载就无需累赘了。这样的话,MINIPE文件夹下只有两个文件,OP.WIM和WINPE.INI,OP.WIM为外置软件镜像,即为所需的文件。
3.在WinPE下安装XP无法找到硬盘分区的问题
分析:机器的硬盘为SATA硬盘且主板开启了AHCI模式。
解决:
一、换一个集成了SATA驱动的PE。(这方法不太好,谁知道哪个PE集成了?难不成一个个试啊?)
二、在BIOS中更改硬盘模式为兼容模式Compatible即可。总之就是在bios中找到SATA关键字,然后把其中的值AHCI变成其它的即可。比如我的ThinkPad电脑,进入BIOS后,选择Config,然后选择进入Serial
ATA(SATA),可以看到SATA Controller Mode Option 的值为AHCI,更改为Compatible保存退出即可。
2.ntldr引导
说明:NTLDR文件是Windows
NT/windows 2000/windows XP/windows server 2003的引导文件,当此文件丢失时启动系统会提示"NTLDR is
missing..."并要求按任意键重新启动,不能正确进入系统。[From:百度百科]
利用BOOTICE部署U盘,意义不大,因为一般不会只在U盘引导XP系统,而是多启动项,后面会介绍。有关进一步ntldr引导知识请自行百度,本文不再赘述。
3.bootmgr引导
说明:bootmgr是在Windows Vista和Windows
7和win8(8.1)中使用的新的启动管理器,以代替Windows
xp中的启动管理器—NTLDR。电脑加电后,首先是启动BIOS程序,BIOS自检完毕后,找到硬盘上的主引导记录MBR,MBR读取DPT(分区表),从中找出活动的主分区,然后读取活动主分区的PBR(分区引导记录,也叫pbr),PBR再搜寻分区内的启动管理器文件bootmgr,在bootmgr被找到后,控制权就交给了bootmgr。bootmgr读取\boot\bcd文件(BCD=Boot
Configuration Data
,也就是"启动配置数据",简单地说,windows7下的bcd文件就相当于xp下的boot.ini文件),如果存在着多个操作系统并且选择操作系
统的等待时间不为0的话,这时就会在显示器上显示操作系统的选择界面。[From:百度百科]
启动项配置文件BCD文件放在磁盘分区的活动分区下,一般该分区作为保留分区(可理解为未分配驱动号的分区,一般比较小),不在此上安装操作系统。通过右键点击计算机,依次选择"管理"-"磁盘管理",找到计算机磁盘,分别点击各分区可查看哪一个为活动的分区。
注意:
如果活动的分区不为保留的分区,如安装了操作系统地分区,建议将保留分区设置为活动的分区,因为这样,下次重装系统时才不会覆盖之前的启动项配置。重新设置活动的分区后,应该运行NTBOOTautofix自动修复启动项,如此在新的活动分区上生成BCD文件。BCD文件位置:C:\Boot\BCD,注意此处的C盘泛指保留分区,一般在WinPE系统下,保留分区被分配为C盘。
更新分区引导PBR步骤:
1.启动BOOTICE,选中选项页"物理磁盘处理",在"目标磁盘"选中待启动的U盘(根据大小和盘符判断);
2.点击"分区引导记录(P)",弹出的对话框中,选择"BOOTMGR引导程序(FAT/FAT32/NTFS/ExFAT)",点击"安装/配置(s)",弹出的对话框中,使用默认设置,点击"确定",提示"成功更新分区的PBR!",点击"确定",再点击"取消"回到软件开始界面;
3.点击"分区管理(G)",弹出的对话框中,选择引导文件"GRLDR"所在的分区,点击"激活",完成启动项设置,退出。如果"激活"按钮为灰色,说明该分区已经为活动分区,无需更改,退出即可。
通过上述部署后,可将Windows 7系统版本以上的镜像文件解压到U盘,可实现U盘启动安装系统。
多系统启动
说明:有关于多系统,无非就是Windows多个版本的系统,以及Linux等多系统共存的问题。在装双系统时,经常会出现系统启动项丢失的问题,尤其是Window与Linux双系统时问题更加突出,这时就需要通过Bootice来修复启动项。要设计多系统启动项,可以使用Grub引导,与之前部署U盘启动方法一致,唯一的区别就是启动文件放在本地硬盘中,只需要注意将其放在活动分区即可。下面着重介绍bootmgr读取bcd文件启动方案,bcd文件位于活动分区的boot文件夹下,该分区可能为隐藏分区,可以进入Windows磁盘管理其中查看哪个分区为活动的分区。如果当前系统为本机硬盘中的系统,可以直接打开BOOTICE编辑BCD文件。如果进入的是U盘的WinPE系统,想编辑该BCD文件,需要先为该分区分配盘符,否则找不到该BCD文件。正式进入正题:
部署步骤:
1.打开BOOTICE,选中选项页"BCD编辑",如果进入的是本机硬盘系统,则选择"当前系统BCD",否则找到相应BCD文件编辑。然后点击"智能编辑";
2、选择"其它BCD文件",点击"..."浏览,在路径"C:\Boot\BCD"下找到BCD文件。如果该路径存在BCD文件,则进入步骤3。否则,选择"新建BCD",弹出的对话框中文件名填写"BCD",并保存在"C:\Boot"下(活动分区的Boot文件夹下),然后进入步骤3;
3、点击"智能编辑",然后自定义编辑启动项;
4、点击左侧面板的"添加",根据系统类型选择新建类型,这里以新建win8.1启动项为例,选择"新建Windows
7/8/8.1启动项"。其它的根据需求做相应选择。注意留意"设备类型"的变化,一般会根据选择的系统自动更改。
5、在右侧面板,"启动磁盘"项选择计算机本身的硬盘,可根据大小判断为哪一个;必须更改!
6、如果计算机的磁盘有很多个分区,则"启动分区"项需要选择操作系统所在的分区;必须更改!
7、"菜单标题"可改为指定的标题,如"Windows
8.1 Pro x64",其它选择保持默认的不变。选择性更改!
8、点击右侧面板下方的"保存当前系统设置",注意没添加或修改一个系统需要保存一下!
9、点击左侧面包下方的"保存全局设置",然后点击"关闭"退出编辑,点击"退出",退出软件。
另外:由于Windows系统镜像中也有BCD文件,同样也位于boot文件夹下,因此该BCD文件也可做自定义的修改,具体方法不再赘述。
[完毕]
[email protected]Jairkong,转载请注明出处!
Jairkong的CSDN博客:http://blog.csdn.net/jairkong