Мультизагрузагчную флешку в linux в часности Debian /Ubuntu легко создать с помощью специализированой программ Ventoy (https://ventoy.net/en/index.html) или Multisystem (http://liveusb.info/multisystem/). Рассмотрим вариант создания создания "вручную".
Для этого нам потребуется:
- редактор разделов - для удобство использую Gparted, любой который знаете и понимаете как в нём работать
- загрузчик - Grub2
- эмулятор для проверки работоспособности - qemu (ничего не мешает проверять на физическом компьютере)
Создавать отдельный раздел для каждого диструбутивива на флешке не обязательно. Если необходима запись самих файлов образов, то можно скопировать их на флешку и прописать Grub загружаться с нужного ISO образа.
1. Форматирование флешки
Форматируем флешку в fat32 (возможно использование и другой, кроме NTFS). Если флешка уже смонирована необходимо её отмантировать. Необходимо сделать данный раздел загрузачным Раздел -> Управление флагом -> boot. Применяем изменения.


2. Установка загрузчика
Монтируем usb, создаём папку для хранения образов:
mkdir /mnt/USB
mount /dev/sdx1 /mnt/USB
mkdir /mnt/USB/iso/
Копируем нужные ISO образы в папку /mnt/USB/ISO
Устанавливаем загрузчик Grub2:
grub-install --root-directory=/mnt/USB/ /dev/sdx
3. Настройка меню
Создаём конфигурационный файл для загрузчика /mnt/USB/boot/USB/boot/grub2/grub.cfg:
vi /mnt/USB/boot/grub2/grub.cfg
Добавляем запись для образа:
menuentry "Ubuntu" {
loopback loop /iso/ubuntu-20.04-desktop-i386.iso
root=(loop)
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/iso /ubuntu-20.04-desktop-i386.iso noeject noprompt splash root=(loop)
initrd (loop)/casper/initrd.lz
}
Аналогичным образом создаём пункты для каждого образа, например для memtest:
menuentry "Test memory" {
linux16 /iso/mt86plus
}
Исполняемый файл mt86plus нужно скачать и положить в папку iso.
Сделаем еще пункт для запуска с жесткого диска, если флешка оказалась в разъеме случайно:
menuentry "Load Hard Disk" {
set root="(hd1)"
chainloader +1
}
Для Windows 10 запись будет выглядеть следующим образом:
menuentry "Windows 10" {
insmod ntfs
insmod ntldr
loopback loop /iso/windows.iso
root=(loop)
ntldr (loop)/bootmgr
}
4. Проверка результата
Когда завершите настройку файла, сохраните его и можно перевеять все ли получилось. Сначала отмонтируйте флешку:
sudo umount /dev/sdX1
Затем используйте qemu для загрузки системы:
qemu-system-x86_64 -hda /dev/sdX
Альтернативный вариант настройки меню
Можно использовать не iso образ, а для каждого диструбутива создать свой раздел. Распакуйте файлы из iso образа на этот раздел. Смонтируйте образ в любую папку, и просто скопируйте файлы с помощью cp:
sudo mount ~/ubuntu.iso /mnt/ISO
sudo cp -rp /mnt/ISO /mnt/USB1/
В Grub диски именуются по-другому чем в Linux. Каждый диск называется hd и имеет номер начиная с нуля, разделы именуются начиная с единицы. Например, раздел /dev/sda1 будет иметь адрес (hd0,1). Как правило, первым считается тот диск, с которого выполнена загрузка.
Таким образом, конфигурация пункта меню будет выглядеть вот так:
menuentry "Ubuntu" {
root=(hd0,1)
linux /casper/vmlinuz boot=casper noeject noprompt splash
initrd /casper/initrd.lz
}