A multiboot USB drive with many Linux distribution it’ very useful for demo, installation or utility.
There are several tools to create it, but, in this post, I want to explain how to create a multiboot USB drive using syslinux.
For example we can create it with the following Linux distributions using syslinux on a PC with Ubuntu 14.04:
- Ubuntu desktop 14.04
- Xubuntu 14.04
- Ubuntu Mate 15.04
- Edubuntu 14.04 64bit
- Edubuntu 14.04 32bit
- Elementary OS Freya
- Kodibuntu 14.04
- System Rescue CD 64 bit
- System Rescue CD 32 bit
- Zorin Educational 64 bit
- Linux Mint 64bit Cinnamon
insert the pen drive in a USB port, then open the Terminal and give this command to understand which is the device:
fdisk -l
Supposing that the device is /dev/sdc1, we can prepare it to become a multiboot USB drive:
sudo su umount /dev/sdc1 # unmount of the device mkfs.vfat -F 32 -n MULTIBOOT /dev/sdc1 # format with file system vfat syslinux -maf /dev/sdc1 # installation of syslinux and MBR mkdir /media/mb # create point of mount mount /dev/sdc1 /media/mb # mount of the USB drive mkdir /media/mb/syslinux # create the directory for the syslinux configuration cp /usr/lib/syslinux/{vesamenu.c32,reboot.c32,poweroff.com} /media/mb/syslinux # copy same file necessary mkdir /media/mb/syslinux/iso # creation of the directory where to store every Linux distribution we want
Now we have to extract the ISO image of the Linux distributions and copy those on the USB drive:
create the mount point where mount the ISO images
mkdir /media/iso
For all Linux distributions we have to execute the following commands:
mkdir /media/mb/syslinux/iso/ubuntu_1404 mount -t iso9660 -o loop,ro /media/paolo/hd2Win/ISO/ubuntu-14.04.2-desktop-amd64.iso /media/iso cp -r /media/iso/* /media/mb/syslinux/iso/ubuntu_1404/ umount /media/iso/
obviously changing the name of the directory (ubuntu_1404) and the path where to find the ISO image in the mount command.
Then we remove the mount point created before
rmdir /media/iso/
and finally we create the configurazion file /media/mb/syslinux/syslinux.cfg with the menu that will appear when we boot from the pen drive:
DEFAULT Ubuntu_1404 PROMPT 0 allowoptions 0 TIMEOUT 100 UI vesamenu.c32 MENU TITLE USB Multiboot Key MENU BACKGROUND splash02.png MENU COLOR border 30;44 #40ffffff #a0000000 std MENU COLOR title 1;36;44 #9033ccff #a0000000 std MENU COLOR sel 7;37;40 #e0ffffff #20ffffff all MENU COLOR unsel 37;44 #50ffffff #a0000000 std MENU COLOR help 37;40 #c0ffffff #a0000000 std MENU COLOR timeout_msg 37;40 #80ffffff #00000000 std MENU COLOR timeout 1;37;40 #c0ffffff #00000000 std MENU COLOR msg07 37;40 #90ffffff #a0000000 std MENU COLOR tabmsg 31;40 #30ffffff #00000000 std MENU WIDTH 80 MENU MARGIN 10 MENU ROWS 15 # number of rows in the menu MENU TABMSGROW 18 MENU CMDLINEROW 18 MENU ENDROW -1 MENU PASSWORDROW 11 MENU TIMEOUTROW 20 MENU HELPMSGROW 22 MENU HELPMSGENDROW -1 MENU HIDDENROW -2 MENU HSHIFT 0 MENU VSHIFT 4 # vertical position of the menu LABEL Ubuntu_1404 MENU LABEL Ubuntu 14.04 Trusty Thar kernel /syslinux/iso/ubuntu_1404/casper/vmlinuz.efi append initrd=/syslinux/iso/ubuntu_1404/casper/initrd.lz live-media-path=/syslinux/iso/ubuntu_1404/casper boot=live console-setup/layoutcode=it ignore_uuid boot=casper quiet splash -- LABEL Xubuntu_1404 MENU LABEL Xubuntu 14.04 kernel /syslinux/iso/xubuntu_1404/casper/vmlinuz.efi append initrd=/syslinux/iso/xubuntu_1404/casper/initrd.lz live-media-path=/syslinux/iso/xubuntu_1404/casper console-setup/layoutcode=it ignore_uuid boot=casper quiet splash -- LABEL Ubuntu_1504_mate MENU LABEL Ubuntu Mate 15.04 kernel /syslinux/iso/ubuntu_1504_mate/casper/vmlinuz.efi append initrd=/syslinux/iso/ubuntu_1504_mate/casper/initrd.lz live-media-path=/syslinux/iso/ubuntu_1504_mate/casper console-setup/layoutcode=it ignore_uuid boot=casper quiet splash -- LABEL Edubuntu_1404_64 MENU LABEL Edubuntu 14.04 64 bit kernel /syslinux/iso/edubuntu_1404_64/casper/vmlinuz.efi append initrd=/syslinux/iso/edubuntu_1404_64/casper/initrd.lz live-media-path=/syslinux/iso/edubuntu_1404_64/casper console-setup/layoutcode=it ignore_uuid boot=casper quiet splash -- LABEL Edubuntu_1404_32 MENU LABEL Edubuntu 14.04 32 bit kernel /syslinux/iso/edubuntu_1404_32/casper/vmlinuz append initrd=/syslinux/iso/edubuntu_1404_32/casper/initrd.lz live-media-path=/syslinux/iso/edubuntu_1404_32/casper console-setup/layoutcode=it ignore_uuid boot=casper quiet splash -- LABEL Elementary_OS_Freya MENU LABEL Elementary OS Freya kernel /syslinux/iso/eos_freya/casper/vmlinuz append initrd=/syslinux/iso/eos_freya/casper/initrd.lz live-media-path=/syslinux/iso/eos_freya/casper LABEL Ubuntu_1404 MENU LABEL Ubuntu 14.04 Trusty Thar kernel /syslinux/iso/ubuntu_1404/casper/vmlinuz.efi append initrd=/syslinux/iso/ubuntu_1404/casper/initrd.lz live-media-path=/syslinux/iso/ubuntu_1404/casper boot=live console-setup/layoutcode=it ignore_uuid boot=casper quiet splash -- LABEL Xubuntu_1404 MENU LABEL Xubuntu 14.04 kernel /syslinux/iso/xubuntu_1404/casper/vmlinuz.efi append initrd=/syslinux/iso/xubuntu_1404/casper/initrd.lz live-media-path=/syslinux/iso/xubuntu_1404/casper console-setup/layoutcode=it ignore_uuid boot=casper quiet splash -- LABEL Ubuntu_1504_mate MENU LABEL Ubuntu Mate 15.04 kernel /syslinux/iso/ubuntu_1504_mate/casper/vmlinuz.efi append initrd=/syslinux/iso/ubuntu_1504_mate/casper/initrd.lz live-media-path=/syslinux/iso/ubuntu_1504_mate/casper console-setup/layoutcode=it ignore_uuid boot=casper quiet splash -- LABEL Edubuntu_1404_64 MENU LABEL Edubuntu 14.04 64 bit kernel /syslinux/iso/edubuntu_1404_64/casper/vmlinuz.efi append initrd=/syslinux/iso/edubuntu_1404_64/casper/initrd.lz live-media-path=/syslinux/iso/edubuntu_1404_64/casper console-setup/layoutcode=it ignore_uuid boot=casper quiet splash -- LABEL Edubuntu_1404_32 MENU LABEL Edubuntu 14.04 32 bit kernel /syslinux/iso/edubuntu_1404_32/casper/vmlinuz append initrd=/syslinux/iso/edubuntu_1404_32/casper/initrd.lz live-media-path=/syslinux/iso/edubuntu_1404_32/casper console-setup/layoutcode=it ignore_uuid boot=casper quiet splash -- LABEL Elementary_OS_Freya MENU LABEL Elementary OS Freya kernel /syslinux/iso/eos_freya/casper/vmlinuz append initrd=/syslinux/iso/eos_freya/casper/initrd.lz live-media-path=/syslinux/iso/eos_freya/casper console-setup/layoutcode=it ignore_uuid boot=casper quiet splash -- LABEL Kodibuntu_14_04 MENU LABEL Kodibuntu 14.04 64 bit kernel /syslinux/iso/kodibuntu_1404/casper/vmlinuz append initrd=/syslinux/iso/kodibuntu_1404/casper/initrd.lz live-media-path=/syslinux/iso/kodibuntu_1404/casper console-setup/layoutcode=it ignore_uuid boot=casper quiet splash -- LABEL System_Rescue_CD_64 MENU LABEL System Rescue CD 4.5.4 64 bit kernel /syslinux/iso/srcd/isolinux/rescue64 append initrd=/syslinux/iso/srcd/isolinux/initram.igz subdir=/syslinux/iso/srcd dostartx setkmap=it LABEL System_Rescue_CD_32 MENU LABEL System Rescue CD 4.5.4 32 bit kernel /syslinux/iso/srcd/isolinux/rescue32 append initrd=/syslinux/iso/srcd/isolinux/initram.igz subdir=/syslinux/iso/srcd dostartx setkmap=it LABEL Zorin MENU LABEL Zorin Educational 9 64 bit kernel /syslinux/iso/zorin/casper/vmlinuz.efi append initrd=/syslinux/iso/zorin/casper/initrd.lz live-media-path=/syslinux/iso/zorin/casper ignore_uuid boot=casper quiet splash -- LABEL LinuxMint MENU LABEL Linux Mint Cinnamon 17.2 64 bit kernel /syslinux/iso/mint/casper/vmlinuz append initrd=/syslinux/iso/mint/casper/initrd.lz live-media-path=/syslinux/iso/mint/casper console-setup/layoutcode=it ignore_uuid boot=casper quiet splash -- MENU SEPARATOR LABEL Reboot MENU LABEL Reboot COM32 reboot.c32 LABEL Power Off MENU LABEL Power Off COMBOOT poweroff.com
The multiboot USB drive is ready, so, we execute the last commands to unmount it and remove the mount point:
umount /media/mb # smonto la chiavetta rmdir /media/mb # elimino il punto di mount precedentemente creato
The result should be similar to this:
Let’s try it now … and have fun 😀
Comments
Good tutorial.
Perfect to multiboot isos to reversing, forensic, hacking…
Thanks!!