1. Name
grml2usb - install grml ISO(s) on usb device for booting
grml2usb - install Grml ISO(s) on usb device for booting
2. Synopsis
grml2usb [ options ] <ISO[s]> <device>
3. Introduction
grml2usb installs grml on a given partition of your usb device and makes it -bootable. It provides multi-iso support, meaning you can specify several grml -ISOs on the command line at once and select the grml flavour you would like to -boot on the bootprompt then. Note that the first ISO specified on the grml2usb -command line will become the default one (that’s the one that will boot when -just pressing enter on the bootprompt or wait until the boot timeout matches).
grml2usb installs Grml on a given partition of your usb device and makes +it bootable. It provides multiboot ISO support, meaning you can specify +several Grml ISOs on the command line at once and select the Grml +flavour you would like to boot on the bootprompt then. Note that the +first ISO specified on the grml2usb command line will become the +default one (that’s the one that will boot when just pressing enter on +the bootprompt or wait until the boot timeout matches).
@@ -590,20 +778,13 @@ MBR using the --skip-mbr option or if you encounter any problems with t default MBR consider using --syslinux-mbr instead. |
- - | -Whereas grml2usb is the script to install recent grml ISOs (>=2009.10) the -script grml2usb-compat supports older grml releases (<2009.10) as well. | -
4. Options
The ISO[s] should be the path to one or multiple grml-ISOs and/or the path to -the currently running live-system (being /live/image).
ISO[s] should be the path to one or multiple grml-ISOs and/or the path to +the currently running live-system (being /lib/live/mount/medium).
The device either might be a device name like /dev/sdX1 or a directory. When specifying a device name the device is mounted automatically. When specifying a directory grml2usb is assuming that you did set up a bootloader on your own (or @@ -616,7 +797,8 @@ don’t need one) and a bootloader won’t be installed automatically.
Use specified bootoptions as default. To use flavour name as a argument for a -boot parameter use %flavour which will be expanded to the flavour name. +boot parameter use %flavour which will be expanded to the flavour name. To add +multiple bootoptions you can specify the option multiple time.
Avoid executing commands, instead show what would be executed. Warning: please notice that the ISO has to be mounted anyway, otherwise -identifying the grml flavour would not be possible. +identifying the Grml flavour would not be possible.
- ---lilo-binary=… - -
-
-
-Use specified lilo executable for installing master boot record (MBR) when using -the --syslinux-mbr option. By default any system wide (from $PATH) lilo -executable is taken. If there can not be find any lilo executable the -statically compiled version of the grml2usb Debian package (see -/usr/share/grml2usb/lilo/lilo.static.[amd64|i386]) is taken. -
-
- - --mbr-menu
-
@@ -739,8 +909,15 @@ Do not install /boot/addons/ files (like dos, grub, memdisk,…).
Remove specified bootoption (could be a regex) from existing boot options. Use -multiple entries for removing different bootoptions at once. (Note: this option -is not support in grml2usb-compat.) +multiple entries for removing different bootoptions at once. +
+ - +--skip-bootflag + +
-
+
+Do not check for presence of bootflag on target device.
-
@@ -772,6 +949,16 @@ file no matter whether you’re using grub or syslinux as bootloader.
- +--skip-usb-check +
+ -
+
+Skip check to verify whether given device is a removable device. +Some USB devices are known to report wrong information, when using +such a device you can skip grml2usb’s removable device check. +
+
+ - --syslinux
- @@ -791,8 +978,7 @@ Install syslinux' master boot record (MBR, which is booting from the partition with the "active" flag set) instead of the default one. If you encounter any problems with the default MBR you can try using the syslinux MBR instead. If that works for you please let us know so we can adjust our default -MBR accordingly. Note: When using the --syslinux-mbr option lilo is executed -before the MBR is installed so the according partitions are set active. +MBR accordingly.
5. Developers Corner
5.1. Directory layout on usb device
+5.1. Directory layout on usb device
boot/ -> ++ `-- [....] [several further config files for syslinux]boot/ -> |-- addons/ | |-- allinone.img [grub - all in one image] | |-- bsd4grml/ [MirBSD] @@ -854,13 +1043,13 @@ Enable verbose mode. `-- syslinux/ |-- grml.png [graphical bootsplash background image for syslinux] |-- syslinux.cfg [main configuration file for syslinux] - `-- [....] [several further config files for syslinux]
grml/ ++ `-- logo.pnggrml/ |-- grml2usb.txt [not yet implemented] - |-- grml-cheatcodes.txt [list of bootoptions for grml] + |-- grml-cheatcodes.txt [list of bootoptions for Grml] |-- grml-version.txt [file containing information about grml-version] |-- LICENSE.txt [license information] |-- md5sums [md5sums of original ISO] @@ -872,11 +1061,11 @@ Enable verbose mode. |-- button.png |-- favicon.png |-- linux.jpg - `-- logo.png
live/ ++ `-- ...live/ |-- grml/ | |-- filesystem.module [module specifying which squashfs should be used for grml] | `-- grml.squashfs [squashfs file for grml] @@ -886,44 +1075,53 @@ Enable verbose mode. |-- grml-small/ | |-- filesystem.module [module specifying which squashfs should be used for grml-medium] | `-- grml-small.squashfs [squashfs file for grml-small] - `-- ...
5.2. Grabbing the source
+5.2. Grabbing the source
% git clone git://git.grml.org/grml2usb.git+
% git clone git://git.grml.org/grml2usb.git
5.3. Developers Debugging Hints
+5.3. Developers Debugging Hints
To play with grml2usb you can avoid using a real device via a loopback file setup, like:
# dd if=/dev/zero of=~/loopback bs=1M count=100 # adjust size to your needs -# losetup /dev/loop1 ~/loopback+
# dd if=/dev/zero of=~/loopback bs=1M count=100 # adjust size to your needs
+# losetup /dev/loop1 ~/loopback
Then create according partitions either running for example:
# echo -en "n\np\n1\n\n\nt\n6\na\n1\n w\n" | fdisk /dev/loop1+
# echo -en "n\np\n1\n\n\nt\n6\na\n1\n w\n" | fdisk /dev/loop1
or:
# parted /dev/loop1 -s "mkpart primary fat16 0 -1s mkfs 1 fat16"+
# parted /dev/loop1 -s "mkpart primary fat16 0 -1s mkfs 1 fat16"
Finally create a filesystem and execute grml2usb as needed:
# mkfs.vfat /dev/loop1 -# grml2usb --bootloader-only /grml/isos/grml-small_2009.10.iso /dev/loop1+
# mkfs.vfat /dev/loop1
+# grml2usb --bootloader-only /grml/isos/grml-small_2013.01.iso /dev/loop1
5.4. Performance tracing
+5.4. Performance tracing
# blktrace -d /dev/sdX -o - | blkparse -i - -# grml2usb grml_2009.10.iso /dev/sdX1+
# blktrace -d /dev/sdX -o - | blkparse -i -
+# grml2usb grml_2013.01.iso /dev/sdX1
6. Troubleshooting and Pitfalls when booting
Here is a list of common error messages from BIOS/bootloader when trying to boot @@ -1081,19 +1279,22 @@ isolinux/syslinux fixes the problem.
7. Frequently Asked Questions (FAQ)
7.1. Where can I get grml2usb?
+7.1. Where can I get grml2usb?
grml2usb is available as Debian package via the grml-testing Debian repository.
If you do not want to (or can’t) use the grml2usb Debian package you can either use the grml2usb git tree running:
git clone git://git.grml.org/grml2usb.git ++sudo ./grml2usb ...git clone git://git.grml.org/grml2usb.git cd grml2usb make -C mbr -sudo ./grml2usb ...
or download the provided http://grml.org/grml2usb/grml2usb.tgz @@ -1109,20 +1310,10 @@ files provided either via the Debian package, the git tree or the file grml2usb.tgz.
7.2. What’s the difference between grml2hd and grml2usb?
-grml2hd installs a running grml system to a harddisk. When rebooting the -harddisk installation can be modified and changes will find their way to the -harddisk immediately. grml2usb copies just the compressed chroot filesystem -(being the squashfs file), some further informational files and a bootloader to -your device. This way you don’t need as much space as with a harddisk -installation (just a USB device with >=ISO size) and when rebooting the system -your changes will be lost (unless you are using the persistency feature, see -http://wiki.grml.org/doku.php?id=persistency). -Think of using a better CD version: booting is (usually) faster, you don’t need -to burn a new CD when a new ISO version arrives (just install the new ISO using -grml2usb) and you can carry additional files on a writable medium with yourself.
7.3. Why can’t I just dd the ISO to a USB device?
-Well, you can. :) Starting with grml 2009.10 the ISOs are dd-able straight out-of-the-box.
7.2. Why can’t I just dd the ISO to a USB device?
+Well, you can. :) Starting with Grml 2009.10 the ISOs are dd-able straight out-of-the-box.
@@ -1137,89 +1328,93 @@ using the dd approach. | system available) running:FAT32 is supported since syslinux version 3.0. |
7.16. I think I’ve got a really cool idea!
+7.14. Addons → Hardware Detection Tool freezes
+This usually means that the machine you ran grml2usb on had syslinux 3.x +installed. The version of hdt (Hardware detection tool) shipping with Grml +2010.12 and newer requires syslinux 4.x.
7.15. I think I’ve got a really cool idea!
Great! Please check out the TODO file. Feel free to report your wishes to the author. Patches highly appreciated.
7.17. I’ve problems with booting from USB.
+7.16. I’ve problems with booting from USB.
Check out Troubleshooting and Pitfalls when booting.
7.18. I’ve found a bug!
+7.17. I’ve found a bug!
Please report it to the author. Please provide usage examples and output of your grml2usb commandline (consider using the "--verbose" option).
8. Usage examples
# grml2usb /home/grml/grml_2009.10.iso /dev/sdX1+
# grml2usb /home/grml/grml_2013.01.iso /dev/sdX1
Install specified ISO on device /dev/sdX1.
# grml2usb /home/grml/grml_2009.10.iso /home/grml/grml_small_2009.10.iso /dev/sdX1+
# grml2usb /home/grml/grml_2013.01.iso /home/grml/grml_small_2013.01.iso /dev/sdX1
Install specified ISOs on device /dev/sdX1 for multibooting ISOs.
# grml2usb /live/image /dev/sdX1+
# grml2usb /lib/live/mount/medium /dev/sdX1
Install currently running grml live system on device /dev/sdX1.
Install currently running Grml live system on device /dev/sdX1.
# grml2usb /live/image /home/grml/grml_2009.10.iso /dev/sdX1+
# grml2usb /lib/live/mount/medium /home/grml/grml_2013.01.iso /dev/sdX1
Install currently running grml live system and the specified +
Install currently running Grml live system and the specified ISO on device /dev/sdX1 for multibooting.
# grml2usb --fat16 /home/grml/grml_2009.10.iso /dev/sdX1+
# grml2usb --fat16 /home/grml/grml_2013.01.iso /dev/sdX1
Install specified ISO on device /dev/sdX1 and format partition /dev/sdX1 with FAT16 filesystem.
# grml2usb --grub --grub-mbr /home/grml/grml_2009.10.iso /dev/sdX1+
# grml2usb --grub --grub-mbr /home/grml/grml_2013.01.iso /dev/sdX1
Install specified ISO on device /dev/sdX1 and use grub as bootloader (instead of syslinux being the default) and install a master boot record (MBR) to the MBR of /dev/sdX.
# grml2usb-compat /home/grml/grml_2009.05.iso /dev/sdX1-
Install older grml ISO on device /dev/sdX1.
# grml2usb --bootoptions="lang=de ssh=mysecret" grml_2009.10.iso /dev/sdX1+
# grml2usb --bootoptions="lang=de ssh=mysecret" grml_2013.01.iso /dev/sdX1
+# grml2usb --bootoptions="lang=de" --bootoptions="ssh=mysecret" grml_2013.01.iso /dev/sdX1
Install specified ISO on device /dev/sdX1 and use "lang=de ssh=mysecret" as default bootoptions.
# grml2usb --remove-bootoption="vga=791" --remove-bootoption="quiet" grml_2009.10.iso /dev/sdX1+
# grml2usb --remove-bootoption="vga=791" --remove-bootoption="nomce" grml_2013.01.iso /dev/sdX1
Install specified ISO on device /dev/sdX1 remove vga=791 and quiet from existing bootoptions.
Install specified ISO on device /dev/sdX1 remove vga=791 and nomce from existing bootoptions.
# grml2usb --bootoptions="persistent-path=%flavour_name" grml64_2010.04.iso grml_2010.04.iso /dev/sdX1+
# grml2usb --bootoptions="persistent-path=%flavour_name" grml64_2010.04.iso grml_2010.04.iso /dev/sdX1
Install specified Isos on device /dev/sdx and add parameter persisten-path +
Install specified ISOs on device /dev/sdx and add parameter persistent-path to every menu entry. %flavour_name will be expanded to the flavour of the specific iso, e.g. grml64 and grml.
9. Online Ressources
Check out the grml2usb webpage and the grml2usb git repository.
10. Bugs
Please report feedback, bugreports and wishes to the author.
11. Author
Michael Prokop <mika@grml.org>