[简介]
常用网名: 猪头三
出生日期: 1981.XX.XX
QQ: 643439947
个人网站: 80x86汇编小站 https://www.x86asm.org
编程生涯: 2001年~至今[共22年]
职业生涯: 20年
开发语言: C/C++、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python
开发工具: Visual Studio、Delphi、XCode、Eclipse、C++ Builder
技能种类: 逆向 驱动 磁盘 文件
研发领域: Windows应用软件安全/Windows系统内核安全/Windows系统磁盘数据安全/macOS应用软件安全
项目经历: 磁盘性能优化/文件系统数据恢复/文件信息采集/敏感文件监测跟踪/网络安全检测
[序言]
Clover引导工具虽然都比较自动化了, 但由于电脑硬件种类过于繁多, 所以还是会存在很多兼容性的问题. 比如最常见的就是没有办法找到正确的系统引导分区, 比如Windows, linux, macOS等各种系统. 那么遇到这种情况如何处理呢? 方法肯定有的, 那就是手工配置config.plist文件.
[通过手工配置config.plist文件, 硬性指向正确的Windows启动分区]
废话就不多说了, 马上开始进入主题...
1> 进入文件夹EFI\CLOVER, 找到config.plist, 并用文本编辑器打开
2> 搜索找到<key>#Scan</key>, 并把#去掉, 形成<key>Scan</key>, 表示引导扫描功能开启.
3> 搜索找到<key>GUI</key>之后,往下拉看到<key>#Custom</key>, 这是把#去掉, 形成<key>Custom</key>
4> 仔细看紧接的下面如下代码, 看到这样类似的代码片段, 就根据我下面标注的提示, 进行删除掉.
<key>Custom</key>
<dict>
<key>Entries</key>
<array>
<dict>
//由于代码太多, 省略1.... 直接删除
</dict>
<dict>
//由于代码太多, 省略1.... 直接删除
</dict>
<dict>
//由于代码太多, 省略1.... 直接删除
</dict>
</array>
<key>Legacy</key>
<array>
<dict>
<key>Disabled</key>
<true/>
<key>Hidden</key>
<false/>
<key>Hotkey</key>
<string>L</string>
<key>Title</key>
<string>MyLegacyEntry</string>
<key>Type</key>
<string>Windows</string>
<key>Volume</key>
<string>89433CD3-21F2-4D3C-95FC-722C48066D3A</string>
</dict>
</array>
<key>Tool</key>
<array>
<dict>
<key>Arguments</key>
<string>-b</string>
<key>Disabled</key>
<false/>
<key>Hidden</key>
<false/>
<key>Hotkey</key>
<string>S</string>
<key>Path</key>
<string>\EFI\CLOVER\TOOLS\Shell64-v1.efi</string>
<key>Title</key>
<string>MyCustomShell</string>
<key>Volume</key>
<string>D68F1885-571C-4441-8DD5-F14803EFEF54</string>
</dict>
</array>
</dict>
5> 按照第4步骤的操作, 删除之后形成的效果如下:
<key>Custom</key>
<dict>
<key>Entries</key>
<array>
// 补全代码
</array>
<key>Legacy</key>
<array>
<dict>
<key>Disabled</key>
<true/>
<key>Hidden</key>
<false/>
<key>Hotkey</key>
<string>L</string>
<key>Title</key>
<string>MyLegacyEntry</string>
<key>Type</key>
<string>Windows</string>
<key>Volume</key>
<string>89433CD3-21F2-4D3C-95FC-722C48066D3A</string>
</dict>
</array>
<key>Tool</key>
<array>
<dict>
<key>Arguments</key>
<string>-b</string>
<key>Disabled</key>
<false/>
<key>Hidden</key>
<false/>
<key>Hotkey</key>
<string>S</string>
<key>Path</key>
<string>\EFI\CLOVER\TOOLS\Shell64-v1.efi</string>
<key>Title</key>
<string>MyCustomShell</string>
<key>Volume</key>
<string>D68F1885-571C-4441-8DD5-F14803EFEF54</string>
</dict>
</array>
</dict>
6> 完成第5步骤操作之后, 在"补全代码"处 添加如下代码
<dict>
<key>Disabled</key>
<false/>
<key>Hidden</key>
<false/>
<key>Image</key>
<string>os_mageia</string>
<key>Path</key>
<string>\EFI\BOOT\BOOTX64.efi</string>
<key>Title</key>
<string>Windows 11 PE</string>
<key>Type</key>
<string>Windows</string>
<key>Volume</key>
<string>A179FB97-2A24-4B69-B96E-7E9CD5A3322C</string>
</dict>
这个代码表示: 当Clover引导进入界面之后, 会在界面上多出一个名为:Boot Microsoft EFI Boot from Windows 11 PE的引导选项.
7> 如果完成了第6步骤的操作, 那么最终效果如下:
<key>Custom</key>
<dict>
<key>Entries</key>
<array>
<dict>
<key>Disabled</key>
<false/>
<key>Hidden</key>
<false/>
<key>Image</key>
<string>os_mageia</string>
<key>Path</key>
<string>\EFI\BOOT\BOOTX64.efi</string>
<key>Title</key>
<string>Windows 11 PE</string>
<key>Type</key>
<string>Windows</string>
<key>Volume</key>
<string>A179FB97-2A24-4B69-B96E-7E9CD5A3322C</string>
</dict>
</array>
<key>Legacy</key>
<array>
<dict>
<key>Disabled</key>
<true/>
<key>Hidden</key>
<false/>
<key>Hotkey</key>
<string>L</string>
<key>Title</key>
<string>MyLegacyEntry</string>
<key>Type</key>
<string>Windows</string>
<key>Volume</key>
<string>89433CD3-21F2-4D3C-95FC-722C48066D3A</string>
</dict>
</array>
<key>Tool</key>
<array>
<dict>
<key>Arguments</key>
<string>-b</string>
<key>Disabled</key>
<false/>
<key>Hidden</key>
<false/>
<key>Hotkey</key>
<string>S</string>
<key>Path</key>
<string>\EFI\CLOVER\TOOLS\Shell64-v1.efi</string>
<key>Title</key>
<string>MyCustomShell</string>
<key>Volume</key>
<string>D68F1885-571C-4441-8DD5-F14803EFEF54</string>
</dict>
</array>
</dict>
[现在讲解一下补全代码的每一行意思]
<dict>
<key>Disabled</key> // 是否禁用当前启动项
<false/> // false 表示不禁用
<key>Hidden</key> // 是否隐藏当前启动项
<false/> // false 表示不隐藏
<key>Image</key> // 为启动项设置图标
<string>os_mageia</string> // 使用默认图标, 名为:os_mageia
<key>Path</key> // 设置引导文件路径
<string>\EFI\BOOT\BOOTX64.efi</string> // Windows引导文件全路径+名字
<key>Title</key> // 引导项名称, 用于在引导界面显示的
<string>Windows 11 PE</string> // 这里命名为Windows 11 PE, 当然根据你喜好可以随便起名字
<key>Type</key> // 操作系统类型
<string>Windows</string> // 这里是Windows
<key>Volume</key> // 启动分区的卷名, 其实就是存放引导文件的分区
<string>A179FB97-2A24-4B69-B96E-7E9CD5A3322C</string> // 启动分区的唯一标识符. (这个很重要, 下一节教你如何获取)
</dict>
[如何获取启动分区的唯一标识符]
这个是非常重要的, 因为Clover引起要启动一个操作系统, 是以来搜索启动分区来处理的. 如果你是手工指定的话, 就要自己去把启动分区对应的唯一标识符提取出来. 方式如下:
1> 根据我的第一篇文章成功安装Clover引导并进入引导界面之后, 移动光标至左下角第一个图标(文章的结尾会附上图片), 它会显示名称为: Start UEFI Shell 64
2> 进入"Start UEFI Shell 64"之后,就是一个黑黑的命令提示框, 然后输入 map > map_log.txt 这时map_log.txt会被生成在某个分区的根目录下.
备注: 如果你不想生成文件, 也可以通过 map -b 命令, 通过翻页的形式进行查找.
3> 然后输入: exit 命令退出黑黑的命令提示框, 重新引导Windows系统
4> 然后一个一个分区去找, 在某个分区的根目录会有map_log.txt这个文件, 然后用文本编辑器打开, 得到如下内容(注意这个内容每个机器不一样的):
Mapping table
FS2: Alias(s):HD1e0e0b:;BLK7:
PciRoot(0x0)/Pci(0x15,0x1)/Pci(0x0,0x0)/USB(0x4,0x0)/USB(0x4,0x0)/HD(1,MBR,0x0070105A,0x3F,0x64000)
FS0: Alias(s):HD0d65535a2:;BLK2:
PciRoot(0x0)/Pci(0x11,0x0)/Sata(0x3,0xFFFF,0x0)/HD(2,GPT,3A857A4A-94E3-452D-B1C1-3A1B0B316259,0x8000,0x96000)
FS1: Alias(s):HD0d65535a5:;BLK5:
PciRoot(0x0)/Pci(0x11,0x0)/Sata(0x3,0xFFFF,0x0)/HD(5,GPT,A179FB97-2A24-4B69-B96E-7E9CD5A3322C,0x37866800,0x5DC000)
FS3: Alias(s):HD2b:;BLK10:
PciRoot(0x0)/Pci(0x3,0x0)/Pci(0x0,0x0)/NVMe(0x1,9A-47-B3-11-59-38-25-00)/HD(1,GPT,11416C46-6A57-4FC3-B21F-33AF2BA3766A,0x800,0x32000)
BLK6: Alias(s):
PciRoot(0x0)/Pci(0x15,0x1)/Pci(0x0,0x0)/USB(0x4,0x0)/USB(0x4,0x0)
BLK8: Alias(s):
PciRoot(0x0)/Pci(0x15,0x1)/Pci(0x0,0x0)/USB(0x4,0x0)/USB(0x4,0x0)/HD(2,MBR,0x0070105A,0x6403F,0x1CE1FC1)
BLK0: Alias(s):
PciRoot(0x0)/Pci(0x11,0x0)/Sata(0x3,0xFFFF,0x0)
BLK1: Alias(s):
PciRoot(0x0)/Pci(0x11,0x0)/Sata(0x3,0xFFFF,0x0)/HD(1,GPT,D69A03EF-6BB4-422F-8826-7CBECBCBB8AE,0x22,0x7FDE)
BLK3: Alias(s):
PciRoot(0x0)/Pci(0x11,0x0)/Sata(0x3,0xFFFF,0x0)/HD(3,GPT,11C70982-7A7D-4741-99CD-612DC5419F6F,0x9E000,0x1388000)
BLK4: Alias(s):
PciRoot(0x0)/Pci(0x11,0x0)/Sata(0x3,0xFFFF,0x0)/HD(4,GPT,8E63086E-E02A-47B5-AACF-568A4C1824EA,0x1426000,0x36440800)
BLK9: Alias(s):
PciRoot(0x0)/Pci(0x3,0x0)/Pci(0x0,0x0)/NVMe(0x1,9A-47-B3-11-59-38-25-00)
BLK11: Alias(s):
PciRoot(0x0)/Pci(0x3,0x0)/Pci(0x0,0x0)/NVMe(0x1,9A-47-B3-11-59-38-25-00)/HD(2,GPT,C8CD8CF9-BE1D-4DD7-A0E7-61C7D9139D1A,0x32800,0x8000)
BLK12: Alias(s):
PciRoot(0x0)/Pci(0x3,0x0)/Pci(0x0,0x0)/NVMe(0x1,9A-47-B3-11-59-38-25-00)/HD(3,GPT,C84330C4-A1AD-454A-A5D4-74B77356CBF4,0x3A800,0x3A1A8A7D)
BLK13: Alias(s):
PciRoot(0x0)/Pci(0x3,0x0)/Pci(0x0,0x0)/NVMe(0x1,9A-47-B3-11-59-38-25-00)/HD(4,GPT,D12D9342-A6C6-4CDA-9197-42B8BA561B8C,0x3A1E3800,0x1A1800)
5> 看到上面内容不要惊慌, 只需要关注有FS前缀就行了, 因为FS表示包含有引导文件的分区. 上面表示有FS0 FS1 FS2 FS3. 这4个FS行, 都对应有一串GUI字符, 这就是启动分区的唯一标识符.
FS0 对应 3A857A4A-94E3-452D-B1C1-3A1B0B316259
FS1 对应 A179FB97-2A24-4B69-B96E-7E9CD5A3322C
FS2 对应 0x0070105A (这个有点特殊, 因为他是U盘)
FS3 对应 11416C46-6A57-4FC3-B21F-33AF2BA3766A
[如何区分哪个是你要的启动分区标识符呢]
方法1: FS行内容是否包含有/HD /NVMe的就行了, /USB的基本排除, 因为/USB表示U盘启动
方法2: 通过上面的过滤,剩下就是 FS0 FS1 FS3了. 这时需要重启Windows系统再次进入Clover界面选择"Start UEFI Shell 64"进入, 在黑黑的命令提示框, 输入 FS0 或者 FS1 或者 FS3, 然后回车, 就可以进入对应的启动分区了, 然后通过ls命令列出分区里面的文件并查看, 只能通过这样原始的方式来判断是不是你想要的目标启动分区.
其实我也是按照上面的2个方法来确定的, 最终确定我想要的启动分区是 FS3 对应 11416C46-6A57-4FC3-B21F-33AF2BA3766A
[总结]
这篇文章的内容比较多, 也繁琐, 你们在按照内容去摸索的时候, 要多操作几次, 才会找到感觉. 一开始会比较生疏, 不要着急, 多折腾几次就熟悉了. 最后希望这篇文章对大家有帮助. 目前Clover引导工具的玩法, 也介绍完了. 因为平时我用到的维护技术也就是这些, 没有其他太过于深奥的东西的了. Clover引导工具是很强大的, 需要慢慢体会, 比如装黑苹果, 装多操作系统并存, 它是最佳的选择.
[关于Clover的UEFI Shell 64界面]