Home Home > 2012 > 09 > 13 > live-fat-stick
Sign up | Login

Deprecation notice: openSUSE Lizards user blog platform is deprecated, and will remain read only for the time being. Learn more...

live-fat-stick

September 13th, 2012 by

So you got a bunch of different openSUSE 12.2 live isos downloaded, to test them on a real machine you have to either burn them to CD/DVD or create live USB stick. Creating CD/DVD is a total waste after booting it once or twice. Creating bootable USB stick is a better thing to do, however openSUSE Hybrid iso creates USB stick that is not usable for any other purpose and the remaining space is locked till you make another partition, and even then the partition is not available on windows(tm).

Unetbootin is nice utility that can create bootable usb stick with vfat partition so the stick can be used to carry other data, however it is also limited in a sense that there cannot be more than 1 bootable image on it unless you know what exactly you need to edit. Other thing is that unetbootin no longer works with openSUSE live isos.

Thanks to a nice isofrom feature in KIWI, here is the solution that can create bootable openSUSE live USB stick on a fat partition. Huge advantage in using this is ability to add as many openSUSE isos you like on a stick, so you may have openSUSE-Edu*.iso, openSUSE-12.2-KDE*.iso, openSUSE-12.2-GNOME*.iso, something-from-susestudio*.iso all on one usb stick, with a nice graphical menu to boot from. Unlike openSUSE Imagewriter or Unetbootin, the stick has whole iso images not a bunch or files that cannot be used for anything else.

The code is here which you can fork and send in improvements, it would be nice if Unetbootin/Imagewriter devs integrate this feature.

Install via 1-click on openSUSE 12.2. The script should work on any Linux distribution, needs syslinux package installed, get it from the code link, save it in $PATH, make it executable to run, however only recent openSUSE isos are supported at this moment, but support for other distribution that has isofrom cmdline feature(Debian may be) would be easy.

To use, plug in the usb stick with a vfat partition, find out which device it is by running live-fat-stick -l then run the following command as root (su -)

live-fat-stick /path/to/openSUSE-distro.iso /dev/sdb1

Replace the path with the actual absolute path to the image and name of the iso to the actual name of the iso. Replace /dev/sdb1 to the device your USB stick shows up as. Wait till the script completes the required process at the end of which you will have a bootable stick. You can repeat the above command with another iso, it will show up at the end of the boot menu.

Edit: Added Ubuntu live iso support, see live-fat-stick -h for howto.

Now also has a GUI.

Both comments and pings are currently closed.

8 Responses to “live-fat-stick”

  1. This sounds good, but where do I save my persistent data files?
    Ubuntu has something like an overlay file via squashfs, either as a separate partition (recognized by a label) or a flat file on the boot partition.
    So if I have multiple ISOs booting from a FAT fs, it will always find the correct persistent data via the bootflags.

    opensuse has something like clicfs, but it’s not working very well in most environments and it will definitely not work with multiple ISOs to boot from.
    I think a flat file like “persistent-data” on the FAT partition would solve the problem – but how can I mount this on top of the ISO image after initial booting? I think the ISO image must also be aware of a persistent data file, but this would require modification of all the isos boot scripts?

  2. Jigish Gohil

    you can access the stick’s vfat partition and save files there, those will be persistent, but any changes to the image or files in user’s /home are not persistent.

  3. Yes, I thought mainly of updates and system changes. Maybe it is possible to adapt the Ubuntu/Debian persistency code to openSuse?

  4. Jigish Gohil

    Install on hard disk or create disk image on http://susestudio.com if you want persistent system image that can also be deployed on usb stick. The purpose of this script is to boot openSUSE iso images from vfat partition on usb stick, ability to store files on the same stick is a bonus.

  5. Kasimir Mueller

    Not working on opensuse 12.2 i386 : The syslinux-menue-file ist not generated
    Output:

    Please make sure the following information is correct:
    iso name: openSUSE-12.2-KDE-LiveCD-x86_64.iso stick device: /dev/sdb
    stick uuid: /dev/disk/by-uuid/16:16 stick partition: 1
    continue ? [y/n]? y
    installing syslinux on /dev/sdb1
    replacing mbr of /dev/sdb with syslinux mbr.bin
    setting /dev/sdb partition 1 active
    copying /boot from iso image to /dev/sdb1
    mv: Aufruf von stat für „/run/tmpstickmount/boot/i386/loader“ nicht möglich: Datei oder Verzeichnis nicht gefunden
    mv: Aufruf von stat für „/run/tmpstickmount/boot/syslinux/linux“ nicht möglich: Datei oder Verzeichnis nicht gefunden
    mv: Aufruf von stat für „/run/tmpstickmount/boot/syslinux/initrd“ nicht möglich: Datei oder Verzeichnis nicht gefunden
    creating menu entries
    /usr/bin/live-fat-stick: Zeile 207: /run/tmpstickmount/boot/syslinux/syslinux.cfg: Datei oder Verzeichnis nicht gefunden
    /usr/bin/live-fat-stick: Zeile 144: /run/tmpstickmount/boot/syslinux/syslinux.cfg: Datei oder Verzeichnis nicht gefunden
    grep: /run/tmpstickmount/boot/syslinux/syslinux.cfg: Datei oder Verzeichnis nicht gefunden
    /usr/bin/live-fat-stick: Zeile 136: /run/tmpstickmount/boot/syslinux/syslinux.cfg: Datei oder Verzeichnis nicht gefunden
    copying openSUSE-12.2-KDE-LiveCD-x86_64.iso to usb stick
    cleaning up
    Your bootable usb stick is now ready
    have a lot of fun…

  6. tintzin

    thanks. I have been trying and failing to boot opensuse from Kingston DTs w/ unetbootin. will try this. hope it works!

  7. jeckyl

    Hmm, i get an error saying “unable to mount the usb stick partition”. root privileges don’t help.

  8. jeckyl

    oh, yeah after it fails to mount the device and bails out, should one run the script again you get
    “mkdir: cannot create directory `/run/tmpisomount’: File exists
    mkdir: cannot create directory `/run/tmpstickmount’: File exists”

    meh!