|
转眼使用U盘装系统什么的已经5年了,从只会使用别人的什么大白菜PE 天意PE啊 老毛桃PE啊 到现在能自己修改别人的PE 始终离不开各位大神发的帖子。
然而到第5篇,首先要感谢老毛桃,用你的PE已经5年了,那个撒手不管版还在用,虽然许多功能,软件都还很老。
再次要感谢无忧论坛 grub2区 一个叫神雕的。 感谢你的那篇帖子让我知道了菜鸟应该怎么用grub2
还要感谢无忧论坛uefi区版主,是你的帖子让我等菜鸟知道了什么是uefi。
还要感谢天意PE,用你的PE很多年了。
还有很多论坛的大神帖子。无法一一表述了。
正文:
前面4篇的U盘我都有写过U盘的功能与结构,并没有以最详细的角度来表述这个U盘的详细情况。
这此帖子我将详细分析U盘的每个文件及用途。当然由于技术,知识有限可能理解或者分析错误。请见谅。
第5篇U盘采用grub2作为主引导。UEFI与bios引导分别用2个菜单来控制。使用的是无忧论坛不记得是谁发布的(efi-grub2 模版)作为EFI的引导。 还有神雕发布的winly与grub2的引导作为bios的引导。由于2个都是grub2 所以兼容很好。
我的U盘主要是有这几点
1.个性化,
2.U盘根目录文件及文件夹很清晰明了。
3.U盘不用格式化,自由添加你需要的PE或linux。
4.不用量产,不用分区,我还要继续存储文件。
5。一个U盘尽量的解决自己的全部需求。
6。自己更换背景,修改显示菜单。
先看一下bios引导初步效果图:
EFI引导效果图:
U盘根目录结构
菜单文件路径及内容—EFI引导
EFI菜单内容:
set pager=1
insmod all_video
insmod video_bochs
insmod video_cirrus
insmod efi_gop
insmod efi_uga
insmod font
insmod fat
insmod chain
insmod gfxterm
insmod gfxmenu
insmod gettext
insmod search_fs_uuid
insmod search_fs_file
insmod part_gpt
insmod halt
insmod reboot
insmod jpeg
insmod png
#加载unicode字体显示中文
loadfont /boot/bad_os_grub2/fonts/unicode.pf2
set locale_dir=/boot/bad_os_grub2/locale
set lang=zh_CN
#设置分辨率
set gfxmode=auto
terminal_output gfxterm
background_image /boot/bad_os_grub2/uefi/1957.png
#倒计时
set timeout=20
#颜色
set color_normal=white/black #正常显示颜色 白/黑
set color_highlight=white/cyan #突出显示颜色 白/蓝
menuentry "启动UEFI shell模式" --class windows --class os {
insmod part_msdos
insmod fat
chainloader /efi/boot/Shell.efi
}
menuentry "启动windows pe" {
search --file /efi/type.efi --set=root
chainloader /efi/type.efi
}
menuentry "UEFI Clover四叶草引导苹果系统" {
search --file /efi/clover_boot/bootx64.efi --set=root
chainloader ($root)/efi/clover_boot/bootx64.efi
}
menuentry "Try Ubuntu without installing" {
set gfxpayload=keep
linux /ubuntu/casper/vmlinuz.efi file=/ubuntu/preseed/ubuntu.seed boot=/ubuntu/casper quiet splash --
initrd /ubuntu/casper/initrd.lz
}
menuentry "将Ubuntu麒麟系统安装到电脑" {
search --file /casper/vmlinuz.efi --set=root
set gfxpayload=keep
linux ($root)/casper/vmlinuz.efi file=/cdrom/preseed/ubuntu.seed boot=casper only-ubiquity quiet splash --
initrd ($root)/casper/initrd.lz
}
menuentry "启动CentOS LiveCD系统" {
search --file /efi/boot/grubx64.efi --set=root
chainloader ($root)/efi/boot/grubx64.efi
}
menuentry "重启"{
reboot
}
menuentry "关机"{
halt
}
EFI与BIOS其实可以分开去看,先看EFI。
无忧论坛UEFI区版主所写:
UEFI模块包含的文件逐个分析及其引导流程
★ -----------------对于UEFI启动本身来说,这些文件是必需的
▲----------------- 对于传统BIOS引导光盘来说,这些文件是制作时必需的
▲----------------- 对于传统BIOS引导光盘来说,这些文件是引导时必需的
◆ -----------------对于UEFI引导光盘来说,这些文件是制作时必需的
◆ -----------------对于UEFI引导光盘来说,这些文件是引导时必需的
UEFI_MSPE-------------在磁盘介质上,通过UEFI启动 Windows PE 系统,这些文件是必需的
UEFI_MSHD-------------在磁盘介质上,通过UEFI启动 Windows 硬盘系统,这些文件是必需的
==================================================这些文件意义和用途:
(本说明用法:你需要查询某个文件的用处,直接找那个文件;或者你需要做什么,从上方认识标示,从本说明标示入手)
根目录
├─boot --------------------------------启动文件目录 UEFI_MSPE + ▲
│ │ BCD --------------------------------传统BIOS启动所需BCD菜单文件▲
│ │ boot.sdi --------------------------------UEFI/BIOS启动都需要 UEFI_MSPE + ▲+ ◆
│ ├─fonts --------------------------------传统BIOS启动字体文件目录(不影响启动)
│ │ chs_boot.ttf
│ │ wgl4_boot.ttf
│ └─zh-cn --------------------------------传统BIOS启动中文显示用的目录(不影响启动)
│ bootmgr.exe.mui
├─efi--------------------------------UEFI启动目录 ★ + UEFI_MSPE + UEFI_MSHD + ◆│ ├─zh-cn --------------------------------UEFI启动中文显示用的目录(不影响启动)
│ │ bootia32.efi.mui
│ │ bootx64.efi.mui
│ ├─boot--------------------------------UEFI启动文件目录 ★ + UEFI_MSPE + UEFI_MSHD + ◆
│ │ bootia32.efi--------------------------------IA32构架的启动文件 ★ + UEFI_MSPE + UEFI_MSHD + ◆│ │ bootx64.efi--------------------------------X64构架的启动文件 ★ + UEFI_MSPE + UEFI_MSHD + ◆
│ └─microsoft-------------------------------UEFI启动目录 UEFI_MSPE + UEFI_MSHD + ◆
│ ├─fonts --------------------------------UEFI启动中文字体文件目录(不影响启动)
│ │ chs_boot.ttf
│ │ wgl4_boot.ttf
│ └─boot---------------------------------UEFI启动菜单目录 UEFI_MSPE + UEFI_MSHD + ◆│ BCD-------------------------------UEFI启动菜单 UEFI_MSPE + UEFI_MSHD + ◆
│
│─MBR.bin ------------------------制作传统BIOS下的启动光盘上时的引导记录,负责引导Bootmgr,适合x64+x86 ▲
│─bootmgr -----------------------传统BIOS下的启动光盘的引导文件,适合x64+x86 ▲│─UEFI_ALL.BIN-----------------制作UEFi启动光盘上时的引导记录(已处理),可以同时支持引导IA32+X64构架,直接读取\efi\microsoft\boot\bcd ◆
│─winpe_x86.wim --------------------------------适合IA32构架的winPE,目前仅有Win8 x86 UEFI_MSPE +▲+ ◆
└─winpe_x64.wim --------------------------------适合X64构架的winPE,目前有Win7/8 x64 UEFI_MSPE+ ▲+ ◆
然后来说UEFI启动 计算机默认引导的简要流程(引导windows为例):
---->>电脑开机(假设已经设置了UEFI为打开)
---->>启动模块根据启动项顺序依次查找所有
(FAT分区):\efi\boot\bootia32.efi(IA32构架的启动文件)
或者
(FAT分区):\efi\boot\bootx64.efi(X64构架的启动文件)
---->>加载\efi\microsoft\BCD 启动菜单文件
---->>按照BCD里面的内容进一步启动,整个过程和传统的BIOS相比,没有引导记录的参与,不错不错
提示:
以上的bootia32.efi,bootx64.efi 都是一个efi应用,不同的是使用在IA32或者X64构架(详见C部分)下。你可以选择任意一个efi应用文件,然后改名替代上面的文件。
这里加载\efi\microsoft\BCD 启动菜单文件是因为当前的efi文件的内容是微软写的,efi内容下一步就指向\efi\microsoft\BCD
下面分析U盘EFI引导的文件内容及作用。
其实只需要看U盘的boot及EFI 这2个根目录文件夹就可以了
Boot文件夹下面:
bad_os_grub2=grub2的引导菜单及配置文件,来自无忧论坛grub2-efi模版作者是忘记了
type=天意PE3.0版支持EFI引导
win7x64=windows7 x64 微软原版ISO镜像文件提取的,这个其实可以不需要,但为了配合那篇EFI安装win8 可以用用。但这里有BUG。尚没有解决。
Win8pe=网上随便下载的win8pe 主要是更好的支持usb3.0 因U盘是3.0接口的
Bcd=bios引导win8pe的菜单指引文件
Bcf=bios引导天意pe的菜单指引文件
继续分析:
Bad_os_grub2这个文件夹下面
Fonts=字体文件夹
Local=字体 (具体不太清除,原作者没有说明书)
UEFI=EFI引导grub2的配置文件及菜单文件
Uefi文件夹里面:
X86_x64-efi=grub2模版的配置文件
1957.png=efi引导的菜单显示的背景图片,原尺寸是800*600像素
Grub.cfg=EFI引导下菜单文件
再看EFI文件夹:
Boot=grub2—EFI引导的文件
Microsoft=efi引导过程需要加载的bcd菜单文件路径
Type.Efi=天意pe的引导文件(efi下)
继续分析:
Apps=efi shell模式的文件
Booia32.efi=gurb2-EFI引导下32位版引导文件
Bootx64.efi=gurb2-efi模式引导下64位版
Shell.efi=EFI模式下efi shell模式的引导文件
这里只有一个bcd文件 =EFI引导下进入windows-PE需要加载的菜单文件
(后面有说明如何修改)
EFI引导过程介绍:G:=U盘盘符
看菜单第一个是efi shell模式
电脑开机---
EFI引导---
G:\efi\boot\bootx64.efi------
加载菜单G:\boot\bad_os_grub2\uefi\grub.cfg------
加载配置文件G:\boot\bad_os_grub2\fonts\等-----
你选了第一个菜单---
加载菜单配置的路径引导文件G:\efi\boot\shell.efi-----
加载配置文件G:\efi\boot\apps\
完成。。。。
看菜单第2个是windows-PE G:=U盘盘符
电脑开机
EFI引导
G:\efi\boot\bootx64.efi------
加载菜单G:\boot\bad_os_grub2\uefi\grub.cfg------
加载配置文件G:\boot\bad_os_grub2\fonts\等-----
你选了第二个菜单---
加载菜单配置的路径引导文件G:\efi\type.efi
接着加菜bcd菜单G:\efi\microsoft\boot\bcd
跳转windows 启动菜单选择栏。
如果你选择第1个
加载
启动PE了。。。
其他的EFI菜单原理类似,不多介绍了。
下面介绍本U盘重点,就是修改bcd,再参考了N个文章及帖子后终于找到一丝线索适合我等菜鸟运用。原文
【转】如何编辑BCD文件给WIN7光盘添加PE启动引导菜单
二、使用BCDEDIT.EXE编辑BCD文件
BCDEDIT.EXE文件是WIN7系统自带的。XP下没有,WIN7 PE有没有要看PE制作者是否保留它。
下面开始实例操作。例子是给WIN7光盘添加双PE,32位PE3.0和64位PE3.0。
将WIN7光盘的BOOT目录提取到F盘(F盘为例)
1、在F盘建一个CMD为后缀的批处理文件。名称:A.cmd,内容如下,并执行。
set path=f:\boot\bcd
bcdedit /store %path%
bcdedit /store %path% /timeout 20
bcdedit /store %path% /set {globalsettings} locale zh-cn
bcdedit /store %path% /set {bootloadersettings} locale zh-cn
bcdedit /store %path% /set {bootmgr} locale zh-cn
bcdedit /store %path% /set {default} locale zh-cn
bcdedit /store %path% /set {memdiag} locale zh-cn
bcdedit /store %path% /set {default} description "安装 Windows 7"
bcdedit /store %path% /copy {default} /d "启动 WinPE 3.0 (64位)"
bcdedit /store %path% /copy {default} /d "启动 WinPE 3.0 (32位)"
PAUSE
2、新建一个PEenum_all.cmd文件,内容如下:
bcdedit /store F:\boot\bcd /enum all >bcd.txt
pause
3、查看F盘是否有一个BCD.TXT文件。这个文件的部分内容如下(蓝色与绿色字细看一下):
Windows 启动管理器
---------------
标识符 {bootmgr}
description Windows Boot Manager
locale zh-cn
inherit {globalsettings}
default {default}
displayorder {default}
{18422457-4f48-11e2-a83a-003018a02f3b}
{1852d4cd-4f48-11e2-a83a-003018a02f3b}
toolsdisplayorder {memdiag}
timeout 20
Windows 启动加载器
-------------------
标识符 {18422457-4f48-11e2-a83a-003018a02f3b} 注:这一串数据随机产生的,你的不会跟例子一样的。
device ramdisk=[boot]\sources\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}
path \windows\system32\boot\winload.exe
description 启动 WinPE 3.0 (64位)
locale zh-cn
inherit {bootloadersettings}
osdevice ramdisk=[boot]\sources\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}
systemroot \windows
detecthal Yes
winpe Yes
ems Yes
Windows 启动加载器
-------------------
标识符 {1852d4cd-4f48-11e2-a83a-003018a02f3b}
device ramdisk=[boot]\sources\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}
path \windows\system32\boot\winload.exe
description 启动 WinPE 3.0 (32位)
locale zh-cn
inherit {bootloadersettings}
osdevice ramdisk=[boot]\sources\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}
systemroot \windows
detecthal Yes
winpe Yes
ems Yes
Windows 启动加载器
-------------------
标识符 {default}
device ramdisk=[boot]\sources\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}
path \windows\system32\boot\winload.exe
description 安装 Windows 7
locale zh-cn
inherit {bootloadersettings}
osdevice ramdisk=[boot]\sources\boot.wim,{7619dcc8-fafe-11d9-b411-000476eba25f}
systemroot \windows
detecthal Yes
winpe Yes
ems Yes
注意一下,启动 WinPE 3.0 (64位)和启动 WinPE 3.0 (32位)各自所在的段落的标识符是不一样的。下面会用到它。你编辑时,这些标识符不一定跟例子中的一样,不要照复制我这里例子中的标识符。
4、再建一个B.CMD文件,内容如下,并执行。注意,颜色蓝色表示64位的,绿色表示32位的,好让大家更容易理解。
set bcd_path=f:\boot\bcd
set dev={7619dcc8-fafe-11d9-b411-000476eba25f}
REM 下面2行是X64的,boot\pe_x64.wim表示将引导boot目录下的pe_x64.wim文件。
REM {18422457-4f48-11e2-a83a-003018a02f3b} 就是标识符,要跟上述查看BCD文件时要一致。
bcdedit /store %bcd_path% /set {18422457-4f48-11e2-a83a-003018a02f3b} device ramdisk=[boot]\boot\pe_x64.wim,%dev%
bcdedit /store %bcd_path% /set {18422457-4f48-11e2-a83a-003018a02f3b} osdevice ramdisk=[boot]\boot\pe_x64.wim,%dev%
REM 下面2行是X86的,boot\pe_x86.wim表示将引导boot目录下的pe_x86.wim文件。
bcdedit /store %bcd_path% /set {1852d4cd-4f48-11e2-a83a-003018a02f3b} device ramdisk=[boot]\boot\pe_x86.wim,%dev%
bcdedit /store %bcd_path% /set {1852d4cd-4f48-11e2-a83a-003018a02f3b} osdevice ramdisk=[boot]\boot\pe_x86.wim,%dev%
pause
注意点:怎么运用他说的这个。我等菜鸟根本不会什么bcdedit命令。为何要修改bcd,主要是因为bootice。Exe这个工具虽然有添加及编辑bcd菜单的功能,但是无法修改guid,就无法通过那个什么安全登录。就会报错,即使你用bootice添加一个菜单上去,路径指向都正确了,为何启动不了?是因为guid对不上,用bcdedit命令却可以修改guid
但是可以套用
先理一下思路,意思就是添加几个菜单项目,然后通过命令来分别把这几个菜单(添加的)guid修改成原来那个,注意看原文中修改的命令:
7619开头guid号那个去对比之前导出成.txt文本的那个下面这个图就是原文导出的txt,从这里可以看出他说修改18422457-4f48-11e2-a83a-003018a02f3b 这个相当于添加后2个菜单的第1个添加的菜单的guid号,那么上面7619dcc8-fafe-11d9-b411-000476eba25f这个相当于没有添加菜单的适合默认的guid。在使用他这个修改命令菜单时候要注意核对自己导出的文本中的guid号,并且还要跟上命令中前半段如:
|
评分
-
查看全部评分
|