U 盘分区安装 deepin live 和 win10 pe 2 个系统,并支持 UEFI 和 LEGACY
分四个分区,ESP 100M fat32,deepin live 500M fat32,win10 pe 500M fat32,其他数据分区
legacy 模式安装
grub-install /dev/sda
uefi 模式,先将 efi 分区挂载到 /boot/efi,然后 grub-install
LEGACY 主引导记录在 ESP 分区。通过 grub 控制
bootice 分区管理,选中 ESP 分区,激活;选中其他分区,隐藏;选中数据分区,设为可见
U 盘用 grub4dos 实现多分区多系统估计会更简单点,不过这里采用 grub2,不完美,不过也足够了。
U 盘分区
在分区编辑器中将 U 盘分为你需要的分区,注意 UEFI 引导分区用 fat32 文件系统。当然了,各个系统的安装分区都改成 fat32 文件系统,UEFI 分别启动,也可以。分区少的话采用 MBR 分区表就行,这里分了三个区分别是 live、pe,数据。
安装系统
分别将系统安装到各个分区上。
如果是 PE 或 livecd,可以直接将文件从 ISO 中复制到分区上。或者先用安装工具安装到其他 U 盘上,再从其他 U 盘上复制到当前制作 U 盘对应分区。
系统引导
如果是安装系统,注意引导工具的安装位置一定要是当前 U 盘。如果是直接复制的,则需要手工安装引导工具
Legacy 引导模式,需要修复主引导记录 MBR。在文件管理器中导航到要引导系统所在分区挂载的文件夹,然后右键-打开终端
sudo grub-install --target=i386-pc --boot-directory=./boot /dev/sdb
UEFI 引导模式,可以使用各个分区自己的 EFI 引导文件。如果创建了单独的 EFI 分区(sdb1)的话,可以在文件管理器中导航到要引导系统所在分区挂载的文件夹,然后右键-打开终端
mount /dev/sdb1 /mnt
sudo grub-install --target=x86_64-efi --efi-directory=/mnt --boot-directory=./boot --removable
有需要的话应该也可以安装 ia32-efi,不过系统中默认没安装相关文件,需要安装。
然后编辑 ./boot/grub/grub.cfg,添加 U 盘上的引导项。具体怎么添加可参考硬盘系统上的版本 /boot/grub/grub.cfg
Windows 或 WINPE 最好使用 grub4dos 来引导。将 grldr 放到引导分区根目录,同目录创建 menu.lst,内容
default 0
timeout 0
title Windows PE
root (hd0,1)
chainloader /bootmgr
grub.cfg 添加
menuentry "WinPE" {
insmod part_msdos
insmod ntfs
insmod ntldr
set root=(hd0,2)
ntldr /grldr
}
如果添加了 EFI 分区,需要将 EFI 引导菜单聚合,可以修改 EFI 分区的 grub.cfg。不过个人感觉 U 盘并不需要。
隐藏分区
有些维护用系统可能不太希望被看到,可以在分区编辑器中给分区添加隐藏参数 hidden
想了想,还是改成带 ESP 分区的好了。不然 UEFI 启动菜单显示 UEFI:INIT13(USB:0x80),鬼知道什么意思。
分区方案:ESP、live(ext4)、pe(ntfs)、数据(ntfs) 四个分区
在 live 分区
sudo grub-install --target=i386-pc --boot-directory=./boot /dev/sdb
在 esp 分区
sudo grub-install --target=x86_64-efi --efi-directory=./ --boot-directory=./boot --removable
没想到 UEFI 这样还无法引导。只能复制了 livecd 的 EFI 和 boot 文件夹到 ESP 分区。
奇怪,UEFI 下同一个磁盘居然不是 hd0,而是 hd2。不知道通用不通用。
ext4 分区在分区编辑器中还不能隐藏?只能在 Windows 分区工具中隐藏。
esp 分区 100MB 足够了,只需要 grub 的引导文件,不需要系统本身的引导文件。