How can I create a multi-boot USB with persistence?

This is what I would like to have on it...

  1. Windows installation media and OS.

  2. Xubuntu 18.04 LTS and Xubuntu 20.04 LTS...one persistent, and the other not...sometimes. And other times both persistent.

  3. Unlimited storage.

Yes I did see this question. It started off promising, but it went nowhere, unfortunately.

EDIT: by "unlimited" I mean as much as the capacity of the USB would allow.


Ventoy

Ventoy will accomplish all three easily:

  1. Ventoy will boot the Windows installer ISO. If you want to actually run Windows from USB, Rufus has an option to install Windows to Go. it takes hours and hours to install.

  2. Ventoy will boot an ISO either Live or Persistent modes. It will boot multiple ISO's.

  3. Ventoy will make persistence files greater than 4GB and having exFAT file system has "unlimited storage". Information on the persistence plugin is on this page: https://www.ventoy.net/en/plugin_persistence.html

If you want help with persistence me know.


Multiboot USB - Windows to Go + Ubuntu Full install + ISO's

Creating a USB drive that will run Windows to Go, Ubuntu Full install and boot Linux and Windows ISO's is a little more complicated than installing Ventoy.

I will outline the process that worked for me:

  • Use Rufus to install Windows to Go. This is a very slow process and may take overnight.

enter image description here

  • Use a Ubuntu Live pendrive to install Ubuntu alongside Windows on the USB, in the same BIOS/UEFI mode as Windows.

enter image description here

  • Drop the Linux ISO's of interest into a folder on a ext4 or NTFS partition. (ISO's on a NTFS partition may have trouble shutting down). Windows ISO must go on a XFAT or NTFS partition.

  • Edit /boot/grub/grub.cfg adding menuentries for the ISO files.

  menuentry "ubuntu-20.04.1-desktop-amd64.iso" {
     rmmod tpm
     set isofile="/ubuntu-20.04.1/ubuntu-20.04.1-desktop-amd64.iso"
     loopback loop (hd0,1)$isofile
     linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noprompt noeject quiet splash maybe-ubiquity persistent persistent-path=/ubuntu-20.04.1/ fsck.mode=skip toram --
     initrd (loop)/casper/initrd
  }

For booting Windows ISO on MSDOS partition table:

menuentry 'Windows Recovery Environment (on /dev/sda1)' --class windows --class os $menuentry_id_option 'osprober-chain-592C85254E2CD0B7' {
    insmod part_msdos
    insmod ntfs
    set root='hd0,msdos1'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1  592C85254E2CD0B7
    else
      search --no-floppy --fs-uuid --set=root 592C85254E2CD0B7
    fi
    parttool ${root} hidden-
    drivemap -s (hd0) ${root}
    chainloader +1
    ntldr /bootmgr
}

For booting Windows ISO on GPT partition table substitute:

    insmod part_gpt
    insmod ntfs
    set root='hd0,gpt1'
  • Add persistence folders and files for the ISO's if required.

Reference:

How to Create a Full Install of Ubuntu 20.04 to USB Device Step by Step

BIOS/UEFI Template Image for Booting ISO Files

Installing Windows 10 without USB with ubuntu 18.04: this is not a bootable disk error