Multiboot on usb with syslinux

9

5

I'm trying to make a multiboot usb with Ubuntu, Backtrack and Mantra-OS on it (all ubuntu as you can see). Those are the steps I've done:

sudo su
unmount /dev/sdb1                          # unmount the drive
mkfs.vfat -F 32 -n disqus /dev/sdb1        # Format the disk with vfat
syslinux -maf /dev/sdb1                    # Install syslinux and the mbr
mkdir /media/disqus                        # Mount for the disk
mount /dev/sdb1 /media/disqus
mkdir /media/disqus/syslinux               # Syslinux configuration folder
cp /usr/lib/syslinux/{vesamenu.c32,reboot.c32,poweroff.com} /media/disqus/syslinux          # Files needed for syslinux
mkdir /media/disqus/syslinux/iso           # A folder that will contain extracted isos
mkdir /media/disqus/syslinux/iso/ubuntu
mkdir /media/disqus/syslinux/iso/backtrack
mkdir /media/disqus/syslinux/iso/mantra-os

After that I mounted and copied files in the respective ISOs to folders I've made:

mkdir /media/iso
mount -t iso9660 -o loop,ro /home/nizar/Destkop/ubuntu.iso /media/iso
cp -r /media/iso/* /media/disqus/syslinux/iso/ubuntu
umount /media/iso/
mount -t iso9660 -o loop,ro /home/nizar/Destkop/backtrack.iso /media/iso
cp -r /media/iso/* /media/disqus/syslinux/iso/backtrack
umount /media/iso/
mount -t iso9660 -o loop,ro /home/nizar/Destkop/mantra-os.iso /media/iso
cp -r /media/iso/* /media/disqus/syslinux/iso/mantra-os
umount /media/iso/
rmdir /media/iso/

After that I filled on the configuration file syslinux.cfg in /media/diqus/syslinux with this:

DEFAULT Backtrack
PROMPT 0
allowoptions 0
TIMEOUT 100
UI vesamenu.c32

MENU TITLE Disqus: The Ultimate Disk
MENU BACKGROUND anon1.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 5
MENU VSHIFT 10
MENU TIMEOUTROW 13
MENU TABMSGROW 18
MENU CMDLINEROW 11
MENU HELPMSGROW 16
MENU HELPMSGENDROW 29

LABEL Backtrack
    MENU LABEL Backtrack
    kernel iso/backtrack/casper/vmlinuz
    append initrd=iso/backtrack/casper/initrdf.gz file=/cdrom/preseed/custom.seed boot=casper quiet splash --

LABEL Ubuntu
    MENU LABEL Ubuntu
    kernel iso/ubuntu/casper/vmlinuz
    append initrd=iso/ubuntu/casper/initrd.lz file=/cdrom/preseed/ubuntu.seed boot=casper quiet splash --

LABEL Mantra-OS
    MENU LABEL Mantra-OS
    kernel /mantra-os/casper/vmlinuz
    append initrd=/mantra-os/casper/initrd.lz file=/cdrom/preseed/xubuntu.seed boot=casper quiet splash --

LABEL Reboot
MENU LABEL Reboot
COM32 reboot.c32

LABEL Power Off
MENU LABEL Power Off
COMBOOT poweroff.com

(anon1.png: 640x480 8bit png in /media/disqus/syslinux/)

Now everything is going alright and I'm able to boot, I have the syslinux menu and even load vmlinuz and initrd! The os is actually loading (I have the splash screen) but then I have the error (something about Busybox):

 (initramfs) unable to find a medium containing a live file system

I'm not quite sure what's the problem but I think it's about relative paths and the CDROM "thing". I've tested many of them (even relative and absolute) but nothing works.

The answer must not be about MultiBootUSB, MultiSystem, Yummi or any other tool; it must not be also about grub or grub2 or any other bootloader. I want to make my approach work.

pr.nizar

Posted 2013-04-18T18:13:26.977

Reputation: 265

Why not Grub2? That would be easier since it doen't require you to extract the ISOs. – Zoredache – 2013-04-18T18:47:50.633

@Zoredache I have done already with grub2 but I want it with syslinux and without the memdisk. – pr.nizar – 2013-04-18T19:06:24.647

1PenDriveLinux Multiboot will do everything that you need to do. That's why I said that this was a dupe. – James Mertz – 2013-04-18T19:08:07.297

Answers

1

I actually solved this and it works! I found a cheat code called: live-media-path=path/to/casper/folder along with ignore_uuid. So the modified working code:

DEFAULT Backtrack
PROMPT 0
allowoptions 0
TIMEOUT 100
UI vesamenu.c32
MENU TITLE Disqus: The Ultimate Disk
MENU BACKGROUND anon1.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 5
MENU VSHIFT 10
MENU TIMEOUTROW 13
MENU TABMSGROW 18
MENU CMDLINEROW 11
MENU HELPMSGROW 16
MENU HELPMSGENDROW 29

LABEL Backtrack
MENU LABEL Backtrack
kernel /syslinux/iso/backtrack/casper/vmlinuz
append initrd=/syslinux/iso/backtrack/casper/initrdf.gz live-media-path=/syslinux/iso/backtrack/casper ignore_uuid boot=casper quiet splash --

LABEL Ubuntu
MENU LABEL Ubuntu
kernel /syslinux/iso/ubuntu/casper/vmlinuz
append initrd=/syslinux/iso/ubuntu/casper/initrd.lz live-media-path=/syslinux/iso/ubuntu/casper ignore_uuid boot=casper quiet splash --

LABEL Mantra-OS
MENU LABEL Mantra-OS
kernel /syslinux/iso/mantra-os/casper/vmlinuz
append initrd=/syslinux/iso/mantra-os/casper/initrd.lz live-media-path=/syslinux/iso/mantra-os/casper ignore_uuid boot=casper quiet splash --

LABEL Reboot
MENU LABEL Reboot
COM32 reboot.c32

LABEL Power Off
MENU LABEL Power Off
COMBOOT poweroff.com

Many thanks!

P.S: For other distros you may look for syslinux configuration files in Yumi's repository at GitHub: https://github.com/bwnickle/YUMI/blob/master/src/menu/

pr.nizar

Posted 2013-04-18T18:13:26.977

Reputation: 265

Well done. pr.nizar. Just for the record, the ignore_uuid can be omitted; also, for anyone that want to copy the minimum set of files from CD, check out http://sfxpt.wordpress.com/2014/02/18/ubuntu-frugal-multiboot-installation-without-burning-any-cddvd/#new. I.e., rsync -vuaR .disk casper /mnt/usbpen/boot/lub1310.

– xpt – 2014-02-19T02:28:16.153

0

Ok, since you aren't interested in alternate solutions, then you are going need to take more time to understand how the book process works.

The bootloader loads the kernel and initrd into memory, and then passes execution to the kernel. After that point all execution is passed off to the init/upstart process in the initrd, and any scripts that first process calls. The scripts within the initrd, do not really know anything about the filesystem, or relative pathos of where it was loaded from. They cannot simply reference some big caspar filesystem in that directory.

The Initrd of livecds, contain scripts that permit them to locate the filesystem. For Ubuntu system it looks for a particular file in a particular folder within the root of every known filesystem on every drive that it can see. If it cannot find anything you get the error you mentioned.

You can pass the ISO-SCAN option to as part of your append line. This argument will tell the script that instead of scanning filesystems, it will loopback mount an ISO, and read the files from within that.

Just dropping files in some random directory you define is probably not supported. I haven't looked at the livecd initrd scripts lately, but I am not aware of any options that permit you to specify some arbitrary directory for the extracted files.

If you want behavior that hasn't already been designed by the developers, then you are going to have to re-build your initrds with your own scripts and tools to load the root filesystem. Leaving the ISO on the filesystem, and then using the iso-scan/filename=$isofile option is the method you can use without having to rebuild your initrd.

Zoredache

Posted 2013-04-18T18:13:26.977

Reputation: 18 453

The problem is that BT5R3 still doesn't support the iso-scan/filename parameter... I have to patch casper/initrd.gz file. http://this.is.thoughtcrime.org.nz/multi-boot-bt5-from-usb-with-grub2 Is there any other solutions to my problem?

– pr.nizar – 2013-04-18T19:24:54.083

If you had added that detail to your original question, you would have gotten a lot less flak about your question being a duplicate. There is almost certainly a solution, but I don't know it at the moment. – Zoredache – 2013-04-18T19:28:00.927

I can make the same things that unetbootin does but the problem is that it won't be the same directory structure as I made.. (http://www.youtube.com/watch?v=MH-khdiXqYs)

– pr.nizar – 2013-04-18T19:29:29.400