将U盘分区,根据需要在第一个FAT分区中为ISO映像提供空间。
运行`lsblk`命令来识别您的U盘设备,例如`/dev/sdb`,其中第一个分区是FAT分区,例如`/dev/sdb1`。将其挂载,例如`/media/user/PENDRIVE`。
将此分区标记为可引导,您可以使用磁盘工具完成此操作。
运行以下命令:
警告!下面是危险的命令,可能会损坏您的系统!建议:在虚拟机中执行此操作,或者如果有多余的U盘,则在实时环境中执行(更容易)。
```
sudo apt install grub-efi-amd64
dirs=(dev bin sbin etc sys usr proc lib lib64)
for dir in "${dirs[@]}"; do
mkdir -p /media/user/PENDRIVE/$dir
sudo mount --bind /$dir /media/user/PENDRIVE/$dir
done
sudo chroot /media/user/PENDRIVE/ grub-install --force --removable --target=x86_64-efi --efi-directory=/ /dev/sdb1
sudo chroot /media/user/PENDRIVE/ grub-install --force --removable --target=i386-pc --boot-directory=/ /dev/sdb
```
等待命令执行完毕。
取消挂载绑定的目录并删除它们:
```
for dir in "${dirs[@]}"; do
sudo umount /media/user/PENDRIVE/$dir
rm -r /media/user/PENDRIVE/$dir
done
```
在`/media/user/PENDRIVE/grub/`下创建一个名为`grub.cfg`的文件,内容如下:
```
set root='(hd0,1)'
configfile /boot/grub/grub.cfg
```
挂载Ubuntu ISO并将`grub.cfg`文件复制到`/media/user/PENDRIVE/boot/grub/`中。
根据需要修改文件¹,例如使用`ubuntu-20.04.1-desktop-amd64.iso`。
set root='(hd0,1)'
set iso_path=/ubuntu-20.04.1-desktop-amd64.iso
loopback loop $iso_path
menuentry "Ubuntu" {
set gfxpayload=keep
linux (loop)/casper/vmlinuz iso-scan/filename=$iso_path file=/cdrom/preseed/ubuntu.seed maybe-ubiquity quiet splash ---
initrd (loop)/casper/initrd
}
- 将ISO映像复制到分区中(第一个FAT分区)。
准备好了,现在你有一个带有你创建的分区的EFI/i386可启动的U盘。
¹ 你可以修改所有的条目,而保留其余部分不变,在我的例子中我进行了简化。