目前,我已经使用 Yumi 的 UEFI 程序创建了一个驱动器,用于为 UEFI 创建多启动 USB,但最近,我还需要一个 BIOS 驱动器。有没有办法将这两个驱动器合并到一个驱动器中?基本上支持 UEFI 和 BIOS?或者我需要两个不同的 USB?谢谢!
答案1
从头开始的多重启动 USB 棒
(修改如何在 UEFI 机器上使用 grub2 从驱动器启动 ISO 文件?)
分区
在 USB 上创建 gpt 分区表。
如上图创建分区,分区 2 选择未格式化。
创建一个casper-rw文件:
sudo dd if=/dev/zero of=casper-rw bs=1M count=512
sudo mkfs.ext3 -L casper-rw -F casper-rw
(其中count=512
持久大小以兆字节为单位,最大为 4GB)。
持久分区
在 USB-PRST 分区上为每个操作系统(需要持久性)创建一个唯一名称的文件夹。
向每个持久性文件夹添加一个 casper-rw 文件(以及可选的 home-rw 文件)。可以通过重命名 casper-rw 文件来生成 home-rw 文件。home-rw 文件就像完整安装上的单独主分区,可以在版本升级后重复使用。
数据分区
在 NTFS USB-DATA 分区上为 ISO 文件创建一个文件夹。
将一些 ISO 添加至 isos 文件夹。
启动分区
打开最新的 ISO 文件并将 boot 和 EFI 文件夹复制到 USB-BOOT 分区。
rmmod tpm
在第一个菜单项上方添加 grub.cfg安装 grub
sudo mount /dev/sdx3 /mnt
sudo grub-install --boot-directory=/mnt/boot /dev/sdx
编辑 grub.cfg 以循环挂载 ISO 文件。persistent persistent-path=/<persistent-folder-name>/
如果您想要多个持久性,请包括:。
if loadfont /boot/grub/font.pf2 ; then
set gfxmode=auto
insmod efi_gop
insmod efi_uga
insmod gfxterm
terminal_output gfxterm
rmmod tpm
fi
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
set timeout=5
menuentry "ubuntu-19.10-desktop-amd64.iso" {
set root=(hd0,1)
set isofile="/isos/ubuntu-19.10-desktop-amd64.iso"
loopback loop $isofile
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile persistent persistent-path=/persist-1/ splash --
initrd (loop)/casper/initrd
}
menuentry "lubuntu-16.04.3-desktop-amd64.iso" {
set root=(hd0,1)
set isofile="/isos/lubuntu-16.04.3-desktop-amd64.iso"
loopback loop $isofile
linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile persistent persistent-path=/persist-2/ splash --
initrd (loop)/casper/initrd.lz
}
Grub.cfg 示例
sudo parted -ls /dev/sdx
sudo lsblk -f /dev/sdx
如果将上述设备用作 USB 记忆棒,则可用于启动存储在 Windows 计算机上的 ISO。内部驱动器上不需要 Grub。
答案2
为了安全起见,请使用两个 USB,一个用于执行安装,另一个用于待安装。
将 USB 格式化为 FAT。
安装软件包
grub-efi-amd64
和grub-pc-bin
。插入 USB 并记下设备(例如
/dev/sdb
)和挂载点(例如)/media/user/USB
。创建一个
chroot
:dirs=(dev bin sbin etc sys usr proc lib lib64) for dir in ${dirs[@]}; do mkdir /media/user/USB/$dir && sudo mount --bind /$dir /media/user/USB/$dir done sudo chroot /media/user/USB/
进入 chroot 后,运行以下命令:
grub-install --force --removable --target=x86_64-efi --efi-directory=/ /dev/sdb1 grub-install --force --removable --target=i386-pc --boot-directory=/ /dev/sdb exit
现在卸载并删除目录:
for dir in ${dirs[@]}; do sudo umount /media/user/USB/$dir && rm /media/user/USB/$dir done
将 iso 复制到您的 USB。
在你的 USB 中,创建文件
/grub/grub.cfg
并添加内容:set root='(hd0,1)' configfile /boot/grub/grub.cfg
要启动 Debian 和 Kali,在此示例中(您必须根据下载的内容更改 iso 的名称),添加
/boot/grub/grub.cfg
:set root='(hd0,1)' menuentry "Kali Live system" { set iso_path=/kali-linux-2020.1b-live-i386.iso loopback loop $iso_path linux (loop)/live/vmlinuz-5.4.0-kali2-686-pae boot=live components quiet splash noeject findiso=${iso_path} initrd (loop)/live/initrd.img-5.4.0-kali2-686-pae } menuentry "Debian GNU/Linux Live (kernel 4.19.0-8-686)" { set iso_path=/debian-live-10.3.0-i386-xfce.iso loopback loop $iso_path linux (loop)/live/vmlinuz-4.19.0-8-686 boot=live findiso=$iso_path components splash quiet "${loopback}" initrd (loop)/live/initrd.img-4.19.0-8-686 }
¹ 您可以在您的机器操作系统上执行此操作,但有几个命令如果错误,可能会损害您的系统。