为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

移动硬盘启动备忘录

2017-10-25 14页 doc 130KB 30阅读

用户头像

is_435706

暂无简介

举报
移动硬盘启动备忘录移动硬盘启动备忘录 刚开始做U盘引导总要接触到Grub、Avldr,但又不知道它们之间是怎么一个调用关系,难以下手。而且各自的文档比较散,没有系统的说明各个文件都是做什么的,如何生成,如此以来更是没有头绪来做。我在这里根据几天的搜索,结合自己做移动硬盘和CD引导的实践整理出一个比较完整的流程,让大家了解PC机是如何引导XP系统,而我们又是如何利用NTLDR加上第三方引导器Avldr,Grub,BCDW来做自己的启动盘。写这文章也是给自己一个备忘录,要不然时间一长都不记得怎么做出来的了。 在使用EasyBoot以前还不知道B...
移动硬盘启动备忘录
移动硬盘启动备忘录 刚开始做U盘引导总要接触到Grub、Avldr,但又不知道它们之间是怎么一个调用关系,难以下手。而且各自的文档比较散,没有系统的各个文件都是做什么的,如何生成,如此以来更是没有头绪来做。我在这里根据几天的搜索,结合自己做移动硬盘和CD引导的实践整理出一个比较完整的流程,让大家了解PC机是如何引导XP系统,而我们又是如何利用NTLDR加上第三方引导器Avldr,Grub,BCDW来做自己的启动盘。写这文章也是给自己一个备忘录,要不然时间一长都不记得怎么做出来的了。 在使用EasyBoot以前还不知道BCDW?的存在。一直使用GRUB和Avldr来引导我的移动硬盘。我是按照《13in1多功能U盘、移动硬盘启动盘(特别添加WinPE2003)》为例来做的。 1.单独给160G的移动硬盘划分出4G主分区,格式化为FAT32文件系统,卷标改为“UBOOT”,盘符为“K:”。 2.在WINDOWS XP的磁盘管理中把“UBOOT”设置为活动分区。 3.使用DISKGEN,WINDOWS XP安装盘的控制台的FIXMBR,或者WINDOWS7的Bootsect来写入MBR。 4.使用命令C:\>Bootsect /n52 K: 回车?来向“UBOOT”写入PBR,这样它才能装载NTLDR。 5.复制下列文件到UBOOT卷根目录下。 Avldr.bin Avldrng 8K版 grub.sys 简化版GRUB4DOS或是AsmGrub生成的(13ini中这个文件被改成了Avlgo.sys,误人子弟~) Boot.ini 引导菜单 bootfont.bin boot.ini显示菜单时用到的字库 Ntdetect.com 搜索计算机硬件 Ntldr NT Loader,是系统加载程序 MENU.LST GRUB的菜单 grldr GRUB for NTLDR 可以由NTLDR直接引导的GRUB grubidx.txt 在MENU.LST中有一句“find --set-root /grubidx.txt”用来定位Grub 路径的地标文件。 ------------------上面是引导的核心文件,下面就是工具要用的文件了--------------- /LDR2003 老毛桃 WinPE 2003的Loader win03.xpe 老毛桃 WinPE 2003的核心文件指向 winnt.001 XP故障恢复控制台的核心文件指向 DOS工具IMG镜像集,菜单背景图片 老九 WinPE 老毛桃修改之撒手不管版(Build 070911) 毛桃 WinPE 2003 (2007.03.05) 6.开机时在BIOS中"First Boot"选择USB-HDD。 加载次序就是: NTLDR------>Boot.ini------>avldr.bin------>grub.sys------>MENU.LST BOOT.INI,修改为如下内容 [boot loader] timeout=10 default=c:\avldr.bin [operating systems] C:\Avldr.bin="superboot" c:\grldr="Start GRUB4DOS" 附录: 注释: ?BCDW英文全名为 Bootable CD Wizard,其作者在2004年秋季推出bcdw 2.01a之后就在网络上失去联系了(在911论坛上看到的)。软件不是开源的,因此很难得到源码。 EasyBoot 是一款菜单制作工具,它可以制作中文彩色菜光盘启动菜单。5.08.523版开始? 完美支持BCDW的传递变量和调用INI文件。 调用INI文件方法: bcdw \ezboot\bcdw.ini (注意必须写上完整的INI文件路径) 假定有一个GHOSTA.IMG,如果要在主菜单里直接引导DOS工具包里的某个工具,比如那个“清除系统密码”的工具。用UltraEdit,32打开bcdw.bin,搜索“bcdw\bcdw.ini”(引号内),改成“xpp3\xpp3.ini”(小写),修改后保存。在此目录建一个dos3.ini文件,里面的内容为(绿色): [MenuItems] \dos3\dos.ima ; ; ; PW PW,在DOS状态下是执行的命令是“PW”。 ?bcdl是bcdw的一部分,bcdl很多时候甚至好于bios本身的cd引导模块。sbm的cd引导模块有严重问题,而bcdl的兼容性遥远好于sbm。 ?bootsect.exe是一个vista安装盘下的小工具,分为x86和X64两个版本,可以用它来更新PBR,分别指向 NTLDR 和 BOOTMGR 从而引导XP/2003或者VISTA,也可以用来修复电脑的PBR。 格式: bootsect {/help|/nt60|/nt52} {SYS|ALL|//:} [/force] 更详细的说明就输入C:\boot>bootsect /, Bootsect /nt60 是切换到vista 的BOOTMGR Bootsect /nt52 是切换到xp/2k3 的NTLDR 例如:C:\boot>bootsect /nt52 D: 回车? 这样可以把D盘的引导标志改为ntldr 如果当前盘被程序占用可以使用/force参数强制卸载。估计C盘不会让你这么干的。 WINDOWS7下的bootsect.exe 比VISTA的多支持一个参数/MBR,可以用来写MBC VISTA的bootsect.exe 是写分区引导扇区 PBR,不是MBR ?NTLDR全称是NT Loader,是系统加载程序 ? MBC(Master Boot Code)是MBR的前446字节,MBR(主引导记录)控制从哪个分区启 动,在PBR(分区引导记录)里才控制启动dos,ntldr,bootmgr Structure of a Master Boot Record Address Size Description in Hex Oct Dec bytes 440 0000 0000 0 Code Area (max. 446) Optional Disk 01B8 0670 440 4 signature Usually 01BC 0674 444 2 Nulls; 0x0000 Table of primary partitions 01BE 0676 446 (Four 16-byte 64 entries, IBM Partition Table scheme) 01FE 0776 510 55h MBR signature; 2 01FF 0777 511 AAh 0xAA55 MBR, total size: 446 + 64 + 2 512 = 一段健壮的MBR记录,与fdisk的MBR功能相同,其功能是从活动分区的分区引导记录上启 动。 33C08ED0BC007CFB5007501FFC50BE007CBF0006B90002F3A4BF1E0657CB33DB33D2BEBE07B104F 6048074038BD64383C610E2F383FB017409BEC400B91700EB719052B441B280BBAA55CD135A81FB 55AA7533F6C101742EB80042BEAD07B110C6040046E2FABEAD078BFAC60410C6440201C74404007 C8B5D08895C088B5D0A895C0AEB0F90B80102BB007C8BF28B4C028A7401B280CD13BEFE7D813C55 AA7409BEDB00B91800EB099033C050B8007C50CB81C60006ACBB0700B40ECD10E2F6B10FE2FC496 E76616C696420706172746974696F6E207461626C654D697373696E67206F7065726174696E6720 73797374656D00000000000000000000000000 注意从0x00处开始写入0xFF处结尾。该段长度比MBR的446字节长度要小,只有256字节,后面的留空或者不做改动即可。注意如果想看着干净,用0填充时,注意不要碰到1BD及以后的数据,那是分区表和分区有效标识,所以建议新手不要动即可。该MBR在U盘,硬盘上工作良好 ?PBR (Partitions Boot Recorder)分区引导扇区位于分区的第一扇区。当分区被激活为当前活动分区时,则由前面提到的主引导记录把分区引导扇区的引导程序载入内存,并把控制权转交给分区引导程序。 分区引导扇区的前三个字节是一条跳转指令,然后是8个字节长的OEM ID(厂家标识)和版本号,其后是简称为BPB的BIOS参数块(BIOS Parameter Block)。虽然BPB的总长度在过去若干年随着硬盘存取技术的发展不断增加,而且为了留给未来后续内容的扩展而未加定义,但前64个字节的内容是确定了的。BPB以非对齐的紧凑格式储存。BPB中每个字段的字节偏移、长度和含义参见微软的FAT32文件系统的。 ?XP系统的引导过程: 1、通电,BIOS自检程序开始运行。 2、MBR主引导记录被装入内存,并且程序开始执行。 3、PBR活动分区的引导扇区被装入内存。 4、NTLDR从引导扇区被装入并初始化。 5、将处理器的实模式改为32位平滑内存模式。 6、NTLDR开始运行适当的小文件系统驱动程序。 小文件系统驱动程序是建立在NTLDR内部的,它能读FAT或NTFS。 7、NTLDR读boot.ini文件。 8、NTLDR装载所选操作系统。 如果NT/XP被选择,NTLDR运行Ntdetect.com 。 对于其他的操作系统,NTLDR装载并运行Bootsect.dos然后向它传递控制。 windows NT过程结束。 9.Ntdetect.com 搜索计算机硬件并将列表传送给NTLDR,以便将这些信息写进\\HKE Y_LOCAL_MACHINE\HARDWARE中。 10.然后NTLDR装载Ntoskrnl.exe,Hal.dll和系统信息集合。 11.Ntldr搜索系统信息集合,并装载设备驱动配置以便设备在启动时开始工作 12.Ntldr把控制权交给Ntoskrnl.exe,这时,启动程序结束,装载阶段开始 ?Avlgomgr 是Avlgo 在Windows 平台下的装配工具,它是自由软件,但不是开源的。但作者打算在 2008 年的适当时候,与 ISOEmu 的代码一并开放。 Avlgomgr的衍生路线:Avldr -> Alvdrng -> Avlgo/Avlgomgr。 Avldr:AviatoR Loader, based on 7zBoot, Grub.exe, isoemu and PE。它是一个三栖程序:能同时在 MS-DOS / Windows / NTLDR 启动环境下运行。是Avldr系列工具的始祖,AviatoR 构思阶段演示程序。 Avlgomgr 会操作三个对象: Avldrng、Avlgo、Boot.ini; AvldrNG: Avldr for NTldr/Grldr/ieldr by Gandalf; 它能上下兼容于 Windows 2000/XP/VI 的引导器,这个小工具是 Avldr.exe 系列中的一支。它的功能可以理解为 Avldr4ntldr, Avldr4bootmgr, Avldr4PELdr, Avldr4GRLDR 的三合一工具包。也就是说,通过这个版本的 Avldr 的自装配特性,可以在同一环境中加载微软的不同版本的 Windows 载入程序,以及 Grub。此外,它还可以在纯 DOS 环境下载入命令行参数所指定的Windows/Grub 载入器。 i. 支持FAT/NTFS/ 文件系统(支持所以Windows 分区类型); ii. 支持第一块硬盘、第一个软驱; iii. 支持 <= 8KB 的引导扇区文件; iv. 支持 <= 320 KB 的 ntldr 类型的引导器 (不直接支持 Grub/Freeldr); v. 支持魔力键 Alt(在 Avldrng 载入的过程中,按住 Alt 不放,将会出现一个隐藏菜单,用以转换启动方式); vi. 支持硬盘上的隐藏分区; 是一个精简版的 Grub 0.97; Avlgo: i. 支持 FAT/NTFS/Romfs/ext2 文件系统 (支持所以Windows 分区类型); ii. 内建 ISOEmu,所以支持光盘虚拟,以及非模拟方式启动; iii. 内建 memdisk,所以支持软盘、硬盘镜像的虚拟; iv. 支持使用 gzip/pkzip 压缩的软盘、硬盘镜像文件(ISOEmu 不支持此方式),以节省磁盘空间和节省文件载入时间; v. 通常对磁盘镜像文件(ISO/FDD/HDD) 的大小没有限制; vi. 支持在磁盘分区上非连续存放的磁盘镜像文件; Boot.ini: 则是 NTLDR/Bootmgr 的配置文件。 不论是加载“虚拟磁盘”还是“引导程序”,Avlgomgr都会生成一个8K大小的Avldr.bin(独立发行的Avldr和AvldrNG大小分别是170k和65k)。我分别加载的是BOOTDISK.IMG和NTLDR,对应生成的两个Avldr.bin文件内容只是Avlgo.sys和NTLDR字段的不同[见上图],这16个字节的其它区域为什么不同就不清楚了,我猜测可能是更新字符串时写入的脏数据,或许是参数。这些就不得而知了,希望Avldr能开放源代码。加载的是BOOTDISK.IMG时还会多产生一个Avlgo.sys文件,用WINHEX查看内容中存在“BOOTDISK.IMG”字样。Avldr.bin文件结尾处有一个0x55AA标志,这个标志一般用于注明引导扇区的结束。 有一点比较奇怪的是Avldr.bin文件中有一些,诸如“2002-2008Version 2.xx”的字符串是破碎的,好像是内存的垃圾数据。 搞到了Avlgomgr的源代码但文件有点多,大体的思路不清楚,只能自己摸索。看到上面资料里好多人自己修改Avldr.bin文件,里面包含Avlgo.sys字段。那么推测是按时NTLDR--->boot.ini--->Avldr.bin--->Avlgo.sys次序加载的。使用WINHEX查看Avlgo.sys文件头部,发现其实它就是GRUB。 但是不是Avlgo.sys--->Menu.lst呢, 如何将任意版本的 Grub 转移到由 Avldr.bin 载入? 那就是Avlgomgr的辅助工具 - AsmGrub.exe 的用途。 AsmGrub X:\grub.sys d:\grub.exe /boot/menu.lst AsmGrub.exe 目标文件(可以使用 Avlgomgr 装配) 源 Grub 文件(可以是 grldr, grub.exe, stage2...) 菜单文件路径,如何得到 (hdx,y) 的值,请使用 Avlgomgr.exe; 比对生成的 grub.sys 和 Grub.exe 文件结论如下: “Grub的一部分程序”+“Menu.lst的路径”=>grub.sys 生成的 grub.sys 被识别为Windows NTLDR类型[见盾牌]。装配后生成的Avldr.bin文件中上文提到的字段变成了grub.sys。 boot.ini文件中多了一行: U:\Avldr.bin="Avlgo - grub.sys" Avlgomgr GUI生成的Avlgo.sys文件也一样可以直接用。如果您对于 Avlgo.sys 比较感兴趣,请参见参考文档《Avlgo 代码以及在 Windows 上可编译的 Grub》。 下面是一些摘录,对理解Avlgomgr可能有帮助,不过有点儿乱。 1. 先备份C盘的Boot.ini文件到,注意默认状态看不到这个系统、隐藏属性的文件,需要到资源管理器里面“工具”菜单“文件夹选项”当中修改查看方式,取消“隐藏受保护的操作系统文件”复选框,并切换为显示所有文件。启动Avlgomgr,在“虚拟磁盘完整路径”浏览找到刚才用WinImage制作的镜像文件,然后点击“装配”按钮,Avlgomgr自动修改Boot.ini文件,并在目标盘(本例为C盘)生成我们需要的Avldr.bin和 Avlgo.sys两个关键文件,把这两个文件拷贝到某处备用。完成以后恢复原C盘的Boot.ini文件。 启动UltraEdit,先打开Avldr.bin,在编辑屏右边的ASC?码区域可以找到“AVLGO.SYS”的字符串,把它改成“AVDOS.SYS”,文件另存为Avldr.dos。 然后打开Avlgo.sys,在右边ASC?码区域找“(hd0,0)/DOS.IMA”字符串,把它修改成“(fd0)/DOS.IMA”。修改的时候要注意,由于修改后的字符串比修改前的短,为保证文件长度不变,剩下的部分要切换到左边16进制码区域,用“00”填充,这样才能保证文件长度不变。修改完后另存为Avdos.sys。 把前面UltraEdit编辑生成的Avldr.dos和Avdos.sys两个文件拷贝到U盘根目录,对 照Boot.ini文件可知,这两个文件是对应于菜单中第三行 for USB-FDD模式。如果启动的时候选择第三项“MS-DOS 7.1 form USB-FDD”,系统将依照 NTLDR------>avldr.dos------>avdos.sys------>DOS.ima这个顺序链把电脑启动到 MS-DOS环境下。 2.下载AVLGOMGR,用这个工具装配你的U盘上的IMG文件. 在“虚拟磁盘处”选择你的U盘上BOOT文件夹里的IMG文件, 在“系统启动时所使用的BOOT.INI所在的完整路径”处选择你的U盘上BOOT.INI文件点“装配”即可。 这样在U盘的根目录会形成AVLGO.SYS文件,BOOT.INI文件的最后一行会加入 X:\AVLDR.BIN="XXX IMG",删除它。 3. 硬盘启动和光盘启动类似,但是因为直接在boot.ini中写入setupldr.bin文件是无法引导的(原因不明),所以必须使用 avldr.bin(或其它,比如grub)“绕”一下,avldr.bin是使用Avlgomgr工具根据setupldr.bin生成的,在 boot.ini中写入 “c:\avldr.bin=......”就可以了,注意setupldr.bin必须在硬盘根目录中。avldr.bin加载并执行setupldr.bin后面的步骤就和光盘启动一样了。很多版本的PE装到硬盘上后把avldr.bin改名为avldr,把 setupldr.bin改名为peldr,个人不赞成修改,因为虽然名字和ntldr相比“顺”了,但是失去了原汁原味,而且会让初学者摸不着头脑。 还有一点需要注意的是光盘引导记录和setupldr.bin文件默认的Windows系统目录都是“I386”,很多PE改成了其它目录(比如WXPE),如果要这样做,那么就必须对光盘引导记录和setupldr.bin动手术了,个人也不赞同这样做,毫无意义。 ?GRUB GRUB4DOS is an universal boot loader based on GNU GRUB. It can boot off DOS/LINUX, or via Windows boot manager/syslinux/lilo, or from MBR/CD. It also has builtin BIOS disk emulation, ATAPI CDROM driver, etc. 使用的grldr 和grub.exe 有两个版本,要支持中文的否则菜单是乱码。再提一次,grub.sys 是由grub.exe 生成的。 ED2K下载链接: ?13in1多功能U盘、移动硬盘启动盘(特别添加WinPE2003).rar 192MB PE为老毛桃070911撒手不管版 ?WinPE老毛桃070911 hhh333修改版 213MB 参考文档: 更健壮~) ?发一段健壮的MBR记录(与fdisk的MBR功能相同,但?DOS, Windows 等几大操作系统的 MBR 和 PBR 的重写方法 ?Master boot record ?NTLDR ?sbm存在严重问题,寻求它的开源替代品 ?vista安装目录\boot>bootsect /help的英文译本 ?利用2K大小的XP启动引导文件做多重启动菜单 ?08.1.31 13in1 U盘、移动硬盘启动盘(老毛桃PEXP+PE2003+矮人+急救盘+红叶) ?DOS/WinPE双启动移动硬盘制作详解 ?Avlgo 代码以及在 Windows 上可编译的 Grub
/
本文档为【移动硬盘启动备忘录】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索