Multi-Distro Live USB

These notes demonstrate how to setup a multi-distro live USB drive: a bootable USB flash drive, aka UFD, capable of launching multiple live distributions of GNU/Linux systems, such as Fedora, Parted Magic, Ubuntu, etc. Here, any general-purpose GNU/Linux platform serves as the host computer for configuring the UFD, and GRUB or Extlinux/Syslinux serves as the boot loader.

These notes specifically demonstrate the distributions below. For context and broader discussion, first have a look at the big picture, below. If your distribution is not treated here, read the tips for other distributions as well.

The examples assume that your UFD has label "multilive" and mounts at /media/multilive. That's a non-binding convention, and you can label and mount according to your tastes. Just amend the instructions on the fly. In addition, your UFD must be bootable and have GRUB or Extlinux or perhaps some other boot loader installed. Finally, all of the examples use much the same language. Kindly accept the deliberate repetition as a reasonable expository expedience for author and reader alike.

Big Picture

Your job in adding a live distribution to your multi-distro live UFD is to provide the five parts that collaborate to bring up the system: the Linux kernel, initial ramdisk, root filesystem, boot parameters, and loader's configuration file. The boot loader arranges the kernel, ramdisk, and boot parameters in RAM. For this, it follows instructions from its configuration file; each distribution has a few lines of simple instructions, called a stanza. Once it puts the pieces into their proper places, the boot loader abdicates control in favor of the kernel and silently retires. The kernel is now running. Guided by the boot parameters and using the tools of the ramdisk, the kernel initializes the operating system and mounts the root filesystem. The system goes live and waits to serve you.

Overview

The general process turns out to be easy. Add each desired distribution as follows:

  1. Download the distribution's ISO image to the host computer.
  2. Extract the distribution's kernel, initial ramdisk, and root filesystem from the ISO image to the UFD.
  3. Add a stanza for the distribution to the configuration file for GRUB (grub.conf) or Extlinux (extlinux.conf) on the drive.

Only the UFD's capacity limits the number of live distributions installed.

For specificity, the notes use wget to download the ISO image. For example:

-> wget --continue http://mirror.cs.vt.edu/pub/MEPIS/SimplyMEPIS-CD_8.5.03-rel1_32.iso

The handy option --continue permits wget to resume an interrupted download from the end of a partially retrieved file; otherwise wget would start afresh. You can fetch the file however you like, of course.

What kind of digital critters are the kernel, initial ramdisk, and root filesystem? These notes view them simply as the three files you'll need to extract from the ISO image and copy onto the UFD. Actually, there are some exceptions to this rule of three, as illustrated herein, but usually three. The names vary with distribution, and the examples give the details. The kernel has a name like vmlinuz, bzImage, or linux. The initial ramdisk is actually a compressed archive of many files that the kernel employs to setup the system. It has a name like initrd.gz or initrd.img, for example. The system's root filesystem also comes tidily packaged in a single archive file. Names for it vary a lot, and some distributions even use two archives.

The notes use 7z (package p7zip or p7zip-plugins) to extract these files from their parent ISO image and copy them onto the UFD in one fell swoop; like so:

-> 7z e -o/media/multilive/fedora-gnome Fedora-16-i686-Live-Desktop.iso \
         isolinux/vmlinuz0 isolinux/initrd0.img LiveOS/osmin.img LiveOS/squashfs.img

This command extracts four files from the ISO image and puts them into directory /media/multilive/fedora-gnome. If you do not have 7z in your toolbox, instead mount the ISO image as a loop device and use cp to put the required files onto the UFD. For instance:

-> su -c 'mount -o ro,loop Fedora-16-i686-Live-Desktop.iso /mnt'
-> mkdir /media/multilive/fedora-gnome
-> cp /mnt/isolinux/{vmlinuz0,initrd0.img} /media/multilive/fedora-gnome
-> cp /mnt/LiveOS/{osmin.img,squashfs.img} /media/multilive/fedora-gnome
-> su -c 'umount /mnt'

Take your choice--succinct or verbose; either approach does the job.

In specifying boot parameters, the examples tend to use only what's required. Most attend to the distribution's initialization script rather than to the kernel. Your job is just to add them to grub.conf or extlinux.conf. For some distributions, the notes link pointers to other boot options (or "cheat codes"), which you can use in addition to standard kernel options. So you can tinker according to your tastes.

Finally, the notes merge configuration information for GRUB and Extlinux since the actual stanzas differ so little. For example, the Fedora settings are presented this way:

Linux kernel: /fedora-gnome/vmlinuz0
Initial ramdisk: /fedora-gnome/initrd0.img
Boot parameters: root=live:LABEL=multilive live_dir=/fedora-gnome liveimg

For GRUB, this means add the following stanza to grub.conf:

title Fedora with GNOME desktop
   root (hd0,0)
   kernel /fedora-gnome/vmlinuz0 root=live:LABEL=multilive live_dir=/fedora-gnome liveimg
   initrd /fedora-gnome/initrd0.img

Or with Extlinux, add this stanza to extlinux.conf:

label fedora-gnome
   menu label Fedora with GNOME desktop
   kernel /fedora-gnome/vmlinuz0
   initrd /fedora-gnome/initrd0.img 
   append root=live:LABEL=multilive live_dir=/fedora-gnome liveimg

Compare and Contrast

So, how does this approach compare and contrast to other tools for creating live USB drives? My take follows.

First, the approach used here is generic in the sense that it works from any general-purpose GNU/Linux distribution. It requires only basic facilities typically available. Also, it is cross-platform in the sense that it handles many live GNU/Linux distributions. For example, the multiple distributions treated here were tested from a Fedora workstation. UNetbootin is likewise generic and cross-platform, and it offers automatic download of many ISO images as well. In contrast, tools like Fedora's liveusb-creator and Ubuntu's usb-creator are specific to their parent distribution: liveusb-creator runs under Fedora to produce a Fedora live USB drive, whereas usb-creator runs under Ubuntu to produce an Ubuntu live USB drive.

Second, this approach supports installing multiple live distributions on a single USB drive. In contrast, the other tools mentioned permit only a single live distribution on the USB drive. It accomplishes this by putting each distribution's files in a separate directory to avoid name conflicts and then accordingly adjusting the boot parameters given to GRUB or Extlinux. Often, the main challenge was determining the proper boot parameter to locate the root filesystem on the UFD. [To vet: Multisystem also installs multiple distributions to a single UFD, but it runs under Ubuntu or an Ubuntu derivative.]

Third, this approach accommodates both GRUB and Extlinux boot loaders and hence the Linux filesystem formats they support--ext2, ext3, ext4, btrfs. In contrast, a FAT substrate with Syslinux appears to predominate in other live USB tools.

Fourth, this approach aims to produce a minimal and clean installation for each distribution just to make clear how things work--a main motivation for this project. The others typically produce more files.

[To vet: The multi-live-usb-config site appears to have a spirit similar to this approach. ]

See Also

FedoraLiveCD Wiki. Multiboot Live DVDs. UNetbootin. Ubuntu LiveCD. The LiveCD List. Penndrivlinux.com. Wikipedia articles: Live USB, Live CD, List of tools to create Live USB systems.

Other Distributions

Here are some tips for extrapolating these notes to other live distributions.

Given the distribution's ISO image, your challenge breaks down into four parts: Identify the Linux kernel, initial ramdisk image, final root filesystem(s), and boot parameters. To examine the ISO image, mount it as a loop device (cf. Big Picture). Or from file manager Nautilus, at least, conveniently open the ISO file with Archive Mounter (package gvfs-archive) and browse from the GUI. Alternatively, use 7z to list the image's contents. If the distribution derives from one of those demonstrated herein, use that example as a guide, but keep an eye peeled for different assumptions about the filesystem's name, location, and boot parameters.

Isolinux (Syslinux for ISO images) predominates as the boot loader for live distributions. So start off by looking for the Isolinux configuration file isolinux.cfg or possibly syslinux.cfg. You'll often find that in directory isolinux; if not, check /boot/isolinux or the root directory. Open this file in your favorite text editor. It may tell you much of what you need to know.

The kernel and initial ramdisk are usually easy to determine. With Isolinux, a line or two in isolinux.cfg explicitly locates these files, typically residing in directory isolinux. For the kernel, expect a file like vmlinuz, bzImage, or linux. For the initial RAM disk, look for a file with base name similar to initrd or minirt and extension "img," "gz," "lz." Once identified, the kernel and initial RAM disk are simple to manage on your UFD, since only GRUB or Extlinux needs to know about them. Copy these files to any directory you wish, and then register their paths in grub.conf or extlinux.cfg; that's it.

Next, identify the root file system. There's lots of variation here in both name and extension. Alas, the Isolinux configuration file does not typically help. Instead, look for a big compressed file. If there is a directory named live or LiveOS or similar, look there. If there is a directory named after the distribution, as for KNOPPIX and mepis, look there. A squashFS file is a good candidate: filesystem.squashfs, squashfs.img, extension "sfs," or extension "sqfs," for instance. A file named after the distribution is also a good candidate, like KNOPPIX and mepis. Most distributions use a single file here. Fedora and spins use two, however, namely squashfs.img and osmin.img. Once you have found the file, copy it to your UFD. You'll likely need to specify its location via a boot parameter; that's part of the next step.

Finally, determine any boot parameters that the live system requires. The configuration file likely provides good hints if not most of what you need. Focus on the parameters intended for the distribution's initialization script rather than for the kernel. For example, you can safely omit "quiet," "rhgb," "splash" and such if you wish to monitor boot progress. Parameters with "live" or "dir" in the name are low-hanging fruit. Both Grub and Extlinux let you edit the boot command interactively. Avail yourself of this kindness in order to experiment easily with parameters.

But you'll likely need to ferret out that key parameter for guiding the system's initialization script to the root filesystem. This is the hard part, typically, and to tackle it you read the script. Mount the initial RAM disk, and open /init or /linxrc in a handy text editor highlighting shell-script syntax. With good luck, you can quickly find where the script processes its command line by searching for "/proc/cmdline" and then descry the prized parameter nearby. With less luck, you'll have to parse more code to dig deeper. With bad luck, you may discover that the script hard-codes inconvenient assumptions about where the filesystem resides. If so, resort to a work-around in organizing your UFD's directories (cf. MeeGo and Tiny Core). With lousy luck, you'll be stumped. In this case, decide that you are not that interested in this particular distribution after all.

Clonezilla

Here's how to setup a multi-live USB drive to boot Clonezilla.

Download the ISO image; for example:

-> wget --continue http://iweb.dl.sourceforge.net/project/clonezilla/clonezilla_live_alternative/20120127-oneiric/clonezilla-live-20120127-oneiric.iso

Copy the kernel, ramdisk, and root filesystem from the ISO image into directory clonezilla on the UFD mounted as /media/multilive:

-> 7z e -o/media/multilive/clonezilla clonezilla-live-20120127-oneiric.iso \
   live/vmlinuz live/initrd.img live/filesystem.squashfs

The name "clonezilla" for the parent directory on the UFD is not mandatory.

Configure GRUB or Extlinux/Syslinux with these settings:

Linux kernel: /clonezilla/vmlinuz
Initial filesystem: /clonezilla/initrd.img
Boot parameters: boot=live config live-media-path=clonezilla ocs_lang="en_US.UTF-8" ocs_live_keymap="NONE"

See also: Clonzilla boot parameters.

Damn Small Linux

Here's how to setup a multi-distro live UFD to boot Damn Small Linux.

Download the ISO image; for example:

-> wget --continue http://distro.ibiblio.org/pub/linux/distributions/damnsmall/current/dsl-4.4.10.iso

Copy the kernel, ramdisk, and root filesystem from the ISO image into directory dsl on the UFD mounted as /media/multilive:

-> 7z e -o/media/multilive/dsl dsl-4.4.10.iso \
   boot/isolinux/linux24 boot/isolinux/minirt24.gz KNOPPIX/KNOPPIX

The name "dsl" for the parent directory on the UFD is not mandatory.

Configure GRUB or Extlinux/Syslinux with these settings:

Linux kernel: /dsl/linux24
Initial ramdisk: /dsl/minirt24.gz
Boot parameters: knoppix_dir=/dsl noprompt noeject

The value of parameter knoppix_dir identifies the name of the directory holding the compressed filesystem (cloop file KNOPPIX) essential to booting. That directory is /dsl in this example.

Debian

Here's how to setup a multi-distro live UFD to boot Debian Live, GNOME flavor.

Download the ISO image; for example:

-> wget --continue http://cdimage.debian.org/debian-cd/current-live/i386/iso-hybrid/debian-live-6.0.3-i386-gnome-desktop.iso

Copy the kernel, ramdisk, and root filesystem from the ISO image into directory debian-gnome on the UFD mounted as /media/multilive:

-> 7z e -o/media/multilive/debian-gnome debian-live-6.0.3-i386-gnome-desktop.iso \
   live/vmlinuz live/initrd.img live/filesystem.squashfs

The name "debian-gnome" for the parent directory on the UFD is not mandatory.

Configure GRUB or Extlinux/Syslinux with these settings:

Linux kernel: /debian-gnome/vmlinuz
Initial ramdisk: /debian-gnome/initrd.img
Boot parameters: boot=live live-media-path=debian-gnome config

The setting "boot=live" is required as given. The value of parameter live-media-path identifies the name of the directory holding the compressed root filesystem (filesystem.squashfs) essential to booting. That directory is debian in this example. The man page for live-intramfs describes the boot options for Debian Live systems (beyond kernel options).

See also: Live Install Images.

Flavors

Download the ISO images for the other Debian flavors using the same base URL given for the GNOME flavor, but change the ISO filenames as indicated below.

KDE desktop
-> 7z e -o/media/multilive/debian-kde debian-live-6.0.3-i386-kde-desktop.iso \
   live/vmlinuz live/initrd.img live/filesystem.squashfs
LXDE desktop
-> 7z e -o/media/multilive/debian-lxde debian-live-6.0.3-i386-lxde-desktop.iso \
   live/vmlinuz live/initrd.img live/filesystem.squashfs
XFCE desktop
-> 7z e -o/media/multilive/debian-xfce debian-live-6.0.3-i386-xfce-desktop.iso \
   live/vmlinuz live/initrd.img live/filesystem.squashfs

Fedora

Here's how to setup a multi-distro live UFD to boot Fedora Live. This example uses the default GNOME desktop but easily generalizes to Fedora spins.

Download the ISO image; for example:

-> wget --continue http://download.fedoraproject.org/pub/fedora/linux/releases/16/Live/i686/Fedora-16-i686-Live-Desktop.iso

Copy the kernel, ramdisk, and root filesystem from the ISO image into directory fedora-gnome on the UFD mounted as /media/multilive:

-> 7z e -o/media/multilive/fedora-gnome Fedora-16-i686-Live-Desktop.iso \
         isolinux/vmlinuz0 isolinux/initrd0.img LiveOS/osmin.img LiveOS/squashfs.img

The name "fedora-gnome" for the parent directory on the UFD is not mandatory.

Configure GRUB or Extlinux/Syslinux with these settings:

Linux kernel: /fedora-gnome/vmlinuz0
Initial ramdisk: /fedora-gnome/initrd0.img
Boot parameters: root=live:LABEL=multilive live_dir=/fedora-gnome liveimg

The values of parameters root=live:LABEL and live_dir together identify the disk partition and directory holding the compressed root filesystem (squashfs.img). The partition is labeled multilive and the directory is named fedora-gnome in this example. With parameter liveimg, the live system permits login without a password. Without parameter liveimg, the boot process instead prompts the user to create a username and password required for subsequent login. (For more boot options to Fedora Live, expand initrd0.img and parse the scripts in directories cmdline, pre-trigger, and maybe others.)

Spins

For the KDE spin, use the same base URL as for the GNOME desktop. For all other spins, use the following base URL instead:

http://download.fedoraproject.org/pub/alt/spins/linux/releases/16/Spins/i686

Choose the ISO filenames as indicated below.

Design Suite
-> 7z e -o/media/multilive/fedora-design Fedora-16-i686-Live-Design-suite.iso \
         isolinux/vmlinuz0 isolinux/initrd0.img LiveOS/osmin.img LiveOS/squashfs.img
KDE
-> 7z e -o/media/multilive/fedora-kde Fedora-16-i686-Live-KDE.iso \
         isolinux/vmlinuz0 isolinux/initrd0.img LiveOS/osmin.img LiveOS/squashfs.img
LXDE Desktop
-> 7z e -o/media/multilive/fedora-lxde Fedora-16-i686-Live-LXDE.iso \
         isolinux/vmlinuz0 isolinux/initrd0.img LiveOS/osmin.img LiveOS/squashfs.img
Scientific KDE
-> 7z e -o/media/multilive/fedora-scikde Fedora-16-i686-Live-Scientific.iso \
         isolinux/vmlinuz0 isolinux/initrd0.img LiveOS/osmin.img LiveOS/squashfs.img
Security Lab
-> 7z e -o/media/multilive/fedora-seclab Fedora-16-i686-Live-Security.iso\
         isolinux/vmlinuz0 isolinux/initrd0.img LiveOS/osmin.img LiveOS/squashfs.img
Sugar on a Stick
-> 7z e -o/media/multilive/fedora-soas Fedora-16-i686-Live-SoaS.iso \
         isolinux/vmlinuz0 isolinux/initrd0.img LiveOS/osmin.img LiveOS/squashfs.img
XFCE Desktop
-> 7z e -o/media/multilive/fedora-xfce Fedora-16-i686-Live-XFCE.iso \
         isolinux/vmlinuz0 isolinux/initrd0.img LiveOS/osmin.img LiveOS/squashfs.img

gNewSense

Here's how to setup a multi-distro live UFD to boot gNewSense.

Download the ISO image; for example:

-> wget --continue http://cdimage.gnewsense.org/gnewsense-livecd-deltah-i386-2.3.iso

Copy the kernel, ramdisk, and root filesystem from the ISO image into directory gnewsense on the UFD mounted as /media/multilive:

-> 7z e -o/media/multilive/gnewsense gnewsense-livecd-deltah-i386-2.3.iso \
   isolinux/vmlinuz isolinux/initrd.gz casper/filesystem.squashfs
-> (cd /media/multilive; ln -s gnewsense casper)

The name "gnewsense" for the parent directory on the UFD is not mandatory, but a symbolic link "casper" to the chosen directory is required here. Alternatively, just use "casper" instead of "gnewsense" for the directory name. (The initialization script (/init in initrd.gz) expects sub-path casper/squashfs.img, and it does not provide an option to drop the casper. The symbolic link fulfills the expectation.)

Configure GRUB or Extlinux/Syslinux with these settings:

Linux kernel: /gnewsense/vmlinuz
Initial ramdisk: /gnewsense/initrd.gz
Boot parameters: boot=casper

The setting "boot=casper" is required as given. The value of parameter live-media-path identifies the name of the directory holding the compressed filesystem (filesystem.squashfs) essential to booting. That directory is /gnewsense in this example.

gNewSense derives from Debian?.

GParted

Here's how to setup a multi-distro live UFD to boot Gparted Live.

Download the ISO image; for example:

-> wget --continue http://sourceforge.net/projects/gparted/files/gparted-live-stable/0.11.0-7/gparted-live-0.11.0-7.iso/download

Copy the kernel, ramdisk, and root filesystem from the ISO image into directory gparted on the UFD mounted as /media/multilive:

-> 7z e -o/media/multilive/gparted gparted-live-0.11.0-7.iso \
   live/vmlinuz live/initrd.img live/filesystem.squashfs

The name "gparted" for the parent directory on the UFD is not mandatory.

Configure GRUB or Extlinux/Syslinux with these settings:

Linux kernel: /gparted/vmlinuz
Initial ramdisk: /gparted/initrd.img
Boot parameters: boot=live live-media-path=/gparted config gl_lang=en keyb=us gl_batch

The setting "boot=live" is required as given. The value of parameter live-media-path identifies the name of the directory holding the compressed filesystem (filesystem.squashfs) essential to booting. That directory is /gparted in this example. (See also: GParted Live Boot Parameters. Debian's live-intramfs man page.)

GParted Live derives from Debian Live.

Knoppix

Here's how to setup a multi-distro live UFD to boot Knoppix.

Download the ISO image; for example:

-> wget --continue http://ftp.uni-kl.de/pub/linux/knoppix/KNOPPIX_V6.7.0CD-2011-08-01-EN.iso

Copy the kernel, ramdisk, root filesystem, and cloop modules from the ISO image into directory knoppix on the UFD mounted as /media/multilive:

-> 7z e -o/media/multilive/knoppix KNOPPIX_V6.7.0CD-2011-08-01-EN.iso \
    boot/isolinux/linux boot/isolinux/minirt.gz KNOPPIX/KNOPPIX

The name "knoppix" for the parent directory on the UFD is not mandatory.

Configure GRUB or Extlinux/Syslinux with these settings:

Linux kernel: /knoppix/linux
Initial ramdisk: /knoppix/minirt.gz
Boot parameters: knoppix_dir=knoppix noimage

The value of parameter knoppix_dir identifies the name of the directory holding the compressed filesystem (cloop file KNOPPIX) essential to booting. That directory is /knoppix in this example. The parameter noimage disables persistent memory. See KNOPPIX Cheat Codes for more kernel options.

MeeGo

Here's how to setup a multi-distro live UFD to boot MeeGo for netbooks.

Download the ISO image; for example:

-> wget --continue http://repo.meego.com/MeeGo/releases/1.2.0/images/meego-netbook-ia32/meego-netbook-ia32-1.2.0.img

Copy the kernel, ramdisk, and root filesystem from the ISO image into directory meego on the UFD mounted as /media/multilive:

-> 7z e -o/media/multilive/meego meego-netbook-ia32-1.2.0.img \
         isolinux/vmlinuz0 isolinux/initrd0.img LiveOS/osmin.img LiveOS/squashfs.img
-> (cd /media/multilive/; ln -s meego LiveOS)

The name "meego" for the parent directory on the UFD is not mandatory, but a symbolic link LiveOS to the chosen directory is required here. Alternatively, just use "LiveOS" instead of "meego" for the directory name. (The initialization script (/init in initrd.img) expects sub-path LiveOS/squashfs.img, and it does not provide an option to drop the LiveOS. The symbolic link fulfills the expectation.)

Configure GRUB or Extlinux/Syslinux with these settings:

Linux kernel: /meego/vmlinuz0
Initial ramdisk: /meego/initrd0.img
Boot parameters: root=LABEL=multilive liveimg nosplash

The setting root=LABEL=multilive identifies root device; that device is the multilive USB drive in this example. Without the parameter liveimg the Meego installer runs.

To shutdown Meego, press the power button for a moment.

Memtest86+

Here's how to setup a multi-distro live UFD to boot and run Memtest86+.

Install the memtest86+ package:

-> su -c 'yum install memtest86+'

Copy the memtest86+ executable into directory memtest86+ on the UFD mounted as /media/multilive:

-> mkdir /media/multilive/memtest86+
-> cp /boot/memtest86+-4.20 /media/multilive/memtest86+

Configure GRUB or Extlinux/Syslinux with these settings:

Linux kernel: /memtest86+/memtest86+-4.20

MEPIS

Here's how to setup a multi-distro live UFD to boot Simply MEPIS. See below for other editions and derivatives.

Download the ISO image; for example:

-> wget --continue http://mirror.cs.vt.edu/pub/MEPIS/SimplyMEPIS-CD_8.5.03-rel1_32.iso

Copy the kernel, ramdisk, and root filesystem from the ISO image into directory mepis-simply on the UFD mounted as /media/multilive:

-> 7z e -o/media/multilive/mepis-simply SimplyMEPIS-CD_8.5.03-rel1_32.iso \
  boot/vmlinuz boot/initrd.gz mepis/mepis

The name "mepis-simply" for the parent directory on the UFD is not mandatory.

Configure GRUB or Extlinux/Syslinux with these settings:

Linux kernel: /mepis-simply/vmlinuz
Initial ramdisk: /mepis-simply/initrd.gz
Boot parameters: image_dir=mepis-simply rootdelay=1

The value of parameter image_dir identifies the parent directory holding the final root filesystem (mepis); that directory is mepis-simply in this example. This setting can be dropped if the parent directory is named "mepis" instead. Without the setting rootdelay=1 (or similar), ostensibly, the initialization script (/linuxrc in initrd.gz) cannot find the final root filesystem. To login to the live system, use "demo" for both the username and password.

Other Editions

MEPIS-11 in 1.5G ISO
-> wget -c http://mirror.cs.vt.edu/pub/MEPIS/SimplyMEPIS-1.5G_11.0.00_32.iso
-> 7z e -o/media/multilive/mepis-simply SimplyMEPIS-1.5G_11.0.00_32.iso \
  boot/vmlinuz boot/initrd.gz mepis/mepis
antiX
-> wget --continue http://mirror.cs.vt.edu/pub/MEPIS/antix/antiX-M11-686.iso
-> 7z e -o/media/multilive/mepis-antix antiX-M11-686.iso \
   boot/vmlinuz boot/initrd.gz antiX/antiX
antiX base
-> wget --continue http://mirror.cs.vt.edu/pub/MEPIS/antix/antiX-M11-base-686.iso
-> 7z e -o/media/multilive/mepis-antix-base antiX-M11-base-686.iso \
   boot/vmlinuz boot/initrd.gz antiX/antiX

These distributions do not need the setting rootdelay=1 to boot.

Mint

Here's how to setup a multi-distro live UFD to boot the GNOME edition of Linux Mint; see below for other editions.

Download the ISO image; for example:

-> wget -c http://ftp.heanet.ie/pub/linuxmint.com/stable/12/linuxmint-12-gnome-cd-nocodecs-32bit.iso

Copy the kernel, ramdisk, and root filesystem from the ISO image into directory mint-gnome on the UFD mounted as /media/multilive:

-> 7z e -o/media/multilive/mint-gnome linuxmint-12-gnome-cd-nocodecs-32bit.iso \
   casper/vmlinuz casper/initrd.lz casper/filesystem.squashfs

The name "mint-gnome" for the parent directory on the UFD is not mandatory.

Configure GRUB or Extlinux/Syslinux with these settings:

Linux kernel: /mint-gnome/vmlinuz
Initial ramdisk: /mint-gnome/initrd.lz
Boot parameters: boot=casper live-media-path=/mint-gnome

The setting "boot=casper" is required as given. The value of parameter live-media-path identifies the name of the directory holding the compressed filesystem (filesystem.squashfs) essential to booting. That directory is mint-gnome in this example. The ignore_uuid option prevents the boot process from searching for filesystem.squashfs on a device with the UUID embedded in initrd.lz at its creation. Such a search would not work here because the UUID of the USB drive is assigned by mke2fs or similar.

Other Editions

LXDE
-> wget --continue http://ftp.heanet.ie/pub/linuxmint.com/stable/11/linuxmint-11-lxde-cd-32bit.iso
-> 7z e -o/media/multilive/mint-lxde linuxmint-11-lxde-cd-32bit.iso \
   casper/vmlinuz casper/initrd.lz casper/filesystem.squashfs

openSUSE

Here's how to setup a multi-distro live UFD to boot openSUSE with the GNOME desktop; see below for other desktops.

Download the ISO image; for example:

-> wget --continue http://download.opensuse.org/distribution/12.1/iso/openSUSE-12.1-GNOME-LiveCD-i686.iso

Copy the kernel, ramdisk, root filesystem, and special configuration file from the ISO image into directory osuse-gnome on the UFD mounted as /media/multilive:

-> 7z e -o/media/multilive/osuse-gnome openSUSE-12.1-GNOME-LiveCD-i686.iso \
   boot/i386/loader/linux boot/i386/loader/initrd config.isoclient \
   openSUSE-12.1-livecd-gnome-read-only.i686-2.8.0
-> perl -pi -e 's{open}{osuse-gnome/open}' /media/multilive/osuse-gnome/config.isoclient

The name "osuse-gnome" for the parent directory on the UFD is not mandatory. The file config.isoclient identifies the filesystem archive. The directory name "osuse-gnome" must be pre-pended to the name, however, and that's what the Perl command does.

Configure GRUB or Extlinux/Syslinux with these settings:

Linux kernel: /osuse-gnome/linux
Initial ramdisk: /osuse-gnome/initrd
Boot parameters: cddev=/dev/disk/by-label/multilive livecd_config=/cdrom/osuse-gnome/config.isoclient

Here, parameter cddev makes the UFD a proxy for a CD drive, and parameter livecd_config locates the special configuration file. (Note the leading "/cdrom" in the latter setting.) Together, they guide the initialization script to the adjusted configuration file osuse-gnome/config.isoclient on the UFD.

Other Desktops

KDE
-> wget --continue http://download.opensuse.org/distribution/12.1/iso/openSUSE-12.1-KDE-LiveCD-i686.iso
-> 7z e -o/media/multilive/osuse-kde openSUSE-12.1-KDE-LiveCD-i686.iso \
   boot/i386/loader/linux boot/i386/loader/initrd config.isoclient \
   openSUSE-12.1-livecd-kde-read-only.i686-2.8.0
-> perl -pi -e 's{open}{osuse-kde/open}' /media/multilive/osuse-kde/config.isoclient

Parted Magic

Here's how to setup a multi-distro live UFD to boot Parted Magic.

Download the ISO image; for example:

-> wget --continue 'http://sourceforge.net/projects/partedmagic/files/partedmagic/Parted Magic 2011_12_30/pmagic_2011_12_30.iso'

Copy the kernel, ramdisk, and root filesystem from the ISO image into directory pmagic on the UFD mounted as /media/multilive:

-> 7z x -o/media/multilive pmagic_2011_12_30.iso pmagic

Although not mandatory, the name "pmagic" for the parent directory on the UFD simplifies setup; see below to use another name.

Configure GRUB or Extlinux/Syslinux with these settings:

Linux kernel: /pmagic/bzImage
Initial ramdisk: /pmagic/initrd.img
Boot parameters: append label=multilive directory=/pmagic

The value of parameter directory identifies the parent directory of the mandatory sub-path pmagic/pmodules. In this example, that directory is /partedmagic, and the kernel finds its filesystem in /partedmagic/pmodules/PMAGIC_2011_11_24.sqfs. The parameter label is not required but may help to speed-up the search for the filesystem. (cf. frugal install)

Parted Magic's initialization script (/init in mounted initrd.img) requires that the filesystem have path pmagic/pmodules/PMAGIC_2011_11_24.sqfs relative to the parent directory. Thus installing under /pmagic simplifies setup a bit:

-> su -c 'mount -o ro,loop pmagic_2011_11_24_i686.iso /mnt'
-> cp -r /mnt/pmagic /media/multilive
-> su -c 'umount /mnt'

For both GRUB and Extlinux, the kernel becomes /pmagic/bzImage, the initial RAM disk becomes /pmagic/initrd.img, and the directory parameter is omitted. The kernel finds its filesystem in /pmagic/pmodules/PMAGIC_2011_11_24.sqfs.

Puppy

Here's how to setup a multi-distro live UFD to boot Slacko Puppy Linux.

Download the ISO image; for example:

-> wget -c http://distro.ibiblio.org/pub/linux/distributions/puppylinux/puppy-5.3.1/slacko-5.3.1-SCSI-MAIN.iso

Copy the kernel, ramdisk, and root filesystem from the ISO image into directory puppy-slacko on the UFD mounted as /media/multilive:

-> 7z e -o/media/multilive/puppy-slacko slacko-5.3.1-SCSI-MAIN.iso vmlinuz initrd.gz *.sfs

The name "puppy-slacko" for the parent directory on the UFD is not mandatory. The glob "*.sfs" grabs the single file puppy_slacko_5.3.1.sfs in this case. The name of the file packing the filesystem varies by version and puppy (e.g. Slacko or Lucid), and the glob here conveniently hides that variation.

Configure GRUB or Extlinux/Syslinux with these settings:

Linux kernel: /puppy-slacko/vmlinuz
Initial ramdisk: /puppy-slacko/initrd.gz
Boot parameters: (none)

See "Puppy Boot Parameters" for a few additional options (beyond standard kernel parameters).

Other Puppies

Lucid
-> wget --continue ftp://distro.ibiblio.org/puppylinux/puppy-5.2.8/lupu-528.iso
-> 7z e -o/media/multilive/puppy-lupu lupu-528.iso vmlinuz initrd.gz *.sfs

(Here the glob "*.sfs" grabs lupu_528.sfs for the filesystem.)

Tiny Core

Here's how to setup a multi-distro live UFD to boot Tiny Core Linux.

Download the ISO image; for example:

-> wget --continue http://distro.ibiblio.org/tinycorelinux/4.x/x86/release/TinyCore-current.iso

Copy the kernel, ramdisk, and application extensions (for GUI desktop) from the ISO image into directory tce on the UFD mounted as /media/multilive:

-> 7z x -o/media/multilive/tce TinyCore-current.iso boot/vmlinuz boot/core.gz
-> 7z x -o/media/multilive/tce TinyCore-current.iso cde
-> (cd /media/multilive; mv -t tce tce/cde/*; rmdir tce/cde)

The name "tce" for the parent directory on the UFD appears to be mandatory. Likewise, the layout of the application extensions also appears to be mandatory. The name "boot" for the subdirectory holding the kernel and ramdisk is not mandatory, but the documentation advises putting these two files either in their own subdirectory of /tce or else outside of /tce altogether.

Configure GRUB or Extlinux/Syslinux with these settings:

Linux kernel: /tce/boot/vmlinuz
Initial ramdisk: /tce/boot/core.gz
Boot parameters: tce=LABEL=multilive

The boot parameter here instructs Tiny Core to find its application extensions on the UFD. Without this setting, Tiny Core boots properly into a CLI shell but does not start a GUI desktop. See also: bootcodes.

Tiny Core modifies /tce on the UFD and in doing so changes this directory's owner and group:

-> ls -l /media/multilive | grep tce
drwx-w----. 5 1001 ftp  4096 Feb 25  2012 tce

This is not likely what you want if you later wish to modify /tce for your own purposes. The fix is simple; for example:

-> su -c 'chown -R ray:ray /media/multilive/tce'
-> ls -l /media/multilive | grep tce
drwx-w----. 5 ray ray  4096 Feb 25  2012 tce

Trisquel

Here's how to setup a multi-distro live UFD to boot Trisquel.

Download the ISO image; for example:

-> wget -c http://mirror.fsf.org/trisquel-images/trisquel_5.0_i686.iso

Copy the kernel, ramdisk, and root filesystem from the ISO image into directory trsiquel on the UFD mounted as /media/multilive:

 -> 7z e -o/media/multilive/trisquel trisquel_5.0_i686.iso \
   casper/vmlinuz casper/initrd casper/filesystem.squashfs

The name "trisquel" for the parent directory on the UFD is not mandatory.

Configure GRUB or Extlinux/Syslinux with these settings:

Linux kernel: /trisquel/vmlinuz
Initial ramdisk: /trisquel/initrd
Boot parameters: boot=casper live-media-path=/trisquel

The setting "boot=casper" is required. The value of parameter live-media-path identifies directory holding the final root filesystem (filesystem.squashfs); that directory is /trisquel in this example.

Other Editions

Trisquel Mini
-> wget -c http://mirror.fsf.org/trisquel-images/trisquel-mini_5.0_i686.iso
-> 7z e -o/media/multilive/trisquel-mini trisquel-mini_5.0_i686.iso \
   casper/vmlinuz casper/initrd casper/filesystem.squashfs

Ubuntu

Here's how to setup a multi-distro live UFD to boot Ubuntu.

Download the ISO image; for example:

wget --continue wget -c http://mirror.metrocast.net/ubuntu-releases/11.10/ubuntu-11.10-desktop-i386.iso
wget --continue wget -c http://releases.ubuntu.com/14.04.1/ubuntu-14.04.1-desktop-i386.iso

Copy the kernel, ramdisk, and root filesystem from the ISO image into directory /ubuntu on the UFD mounted as /media/multilive:

-> 7z e -o/media/multilive/ubuntu  ubuntu-11.10-desktop-i386.iso \
   casper/vmlinuz casper/initrd.lz casper/filesystem.squashfs

The name "ubuntu" for the parent directory on the UFD is not mandatory.

Configure GRUB or Extlinux/Syslinux with these settings:

Linux kernel: /ubuntu/vmlinuz
Initial ramdisk: /ubuntu/initrd.lz
Boot parameters: boot=casper ignore_uuid live-media-path=/ubuntu

The setting "boot=casper" and the flag ignore_uuid are required. The value of parameter live-media-path identifies the name of the directory holding the compressed filesystem (filesystem.squashfs) essential to booting. That directory is /ubuntu in this example. The live-initramfs man page describes all live-boot options.

(Version 9.04, where I happened to start off, requires that filesystem.squashfs be located under a sub-directory named casper. That version does not support the live-media-path option, either. Instead, the value of parameter iso-scan/filename identifies the name of the parent directory holding the casper sub-directory. So for this older version, at least, copy filesystem.squashfs to directory /media/ubuntu/casper, and use boot options iso-scan/filename=ubuntu and ignore_uuid.)

Ubuntu Live derives from Debian.

Derivatives

Kubuntu (KDE desktop)
-> wget --continue http://mirror.anl.gov/pub/ubuntu-iso/CDs-Kubuntu/11.10/kubuntu-11.10-desktop-i386.iso
-> 7z e -o/media/multilive/ubuntu-kubuntu kubuntu-11.10-desktop-i386.iso\
   casper/vmlinuz casper/initrd.lz casper/filesystem.squashfs
Lubuntu (LXDE desktop)
-> wget --continue http://cdimages.ubuntu.com/lubuntu/releases/11.10/release/lubuntu-11.10-desktop-i386.iso
-> 7z e -o/media/multilive/ubuntu-lubuntu lubuntu-11.10-desktop-i386.iso \
   casper/vmlinuz casper/initrd.lz casper/filesystem.squashfs
Xubuntu (XFCE desktop)
-> wget --continue http://mirror.anl.gov/pub/ubuntu-iso/CDs-Xubuntu/11.10/release/xubuntu-11.10-desktop-i386.iso
-> 7z e -o/media/multilive/ubuntu-xubuntu xubuntu-11.10-desktop-i386.iso \
   casper/vmlinuz casper/initrd.lz casper/filesystem.squashfs