This is a simple note for people who are googling this topic right now, and you are welcome.
Legacy BIOS needs bootloaders to be installed into MBR and the reserved space after it.
UEFI only needs bootloaders in ESP(EFI System Partition).
There is no resource competition between legacy BIOS and UEFI requirements.
grub-pc-bin and grub-efi-amd64-bin packages for Debian users.
An USB storage stick, MBR or GPT. Some unallocated space(1MB is enough) at the beginning of disk if you are using GPT.
A vfat partition with the “boot” flag.
# mount /dev/sdb1 /media/sdb1
# grub-install --target=i386-pc --boot-directory=/media/sdb1/boot /dev/sdb
# grub-install --target=x86_64-efi --efi-directory=/media/sdb1/ --boot-directory=/media/sdb1/boot --removable /dev/sdb
# /media/sdb1/boot/grub/grub.cfg
set root=(hd0,1)
menuentry "FreeDOS" {
linux16 /boot/freedos/memdisk
initrd16 /boot/freedos/balder10.img
}
menuentry "Memtest86+" {
loopback loop /boot/systemrescuecd-x86-x.y.z.iso
linux16 (loop)/bootdisk/memtestp
}
menuentry "Ubuntu xx.yy" {
set isofile="/boot/ubuntu-xx.yy-desktop-amd64.iso"
loopback loop $isofile
linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile noprompt noeject
initrd (loop)/casper/initrd.lz
}
menuentry "SystemRescueCd" {
set isofile="/boot/systemrescuecd-x86-x.y.z.iso"
loopback loop $isofile
linux (loop)/isolinux/rescue64 docache isoloop=$isofile
initrd (loop)/isolinux/initram.igz
}
menuentry "Install Debian GNU/Linux" {
linux /boot/debian/vmlinuz priority=low recommends=false
initrd /boot/debian/initrd.gz
}
menuentry "Debian GNU/Linux Rescue Mode" {
linux /boot/debian/vmlinuz priority=low recommends=false rescue/enable=true
initrd /boot/debian/initrd.gz
}
Done, enjoy fixing others’ computers then, which I already quit :D