Table of Contents
Boot USB stick
Here a short instruction how to create a multiboot usb flash disk containing Syslinux (rus), Grub4dos (rus), Debian x86/64, Fedora x86/64, Ubuntu x86/64, Gentoo x86/64, Clonezilla, 4DOS, MS Windows (experimental), SystemRescueCd (Memtest86, NTpassword, FreeDOS, GAG, Ranish, HDT, DBAN, MHDD, Netboot, Grub2, Xfce, GParted).
Steps
Make a backup
Firstly backup all data on the stick (using tar/cp/rsync).
Installing SystemRescueCD
- Under MS Windows: download image SystemRescueCD-Installer.exe and follow instructions given on the link.
- Under GNU/Linux: Mount SystemRescueCd-x86-x.x.x.iso with exec option and run as root usb_inst.sh script. Use this short script replacing iso_path to path to the iso file:
Installing SystemRescueCD: iso_path - path to the dowloded iso image
iso_path=/path/to/systemrescuecd-x86-x.x.x.iso mkdir iso_dir && sudo mount -o loop,exec "$iso_path" iso_dir && sudo LANG=en TERM=screen iso_dir/usb_inst.sh \ && echo "SystemRescueCD successfully installed\! ;-)" || echo "Installation of SystemRescueCD failed\! ;-(" ; \ sudo umount iso_dir ; rmdir iso_dir
Set correct FS type
Set correct file system type to make >=DOS-7.1 understand it. Under GNU/Linux type
Set correct fs type for DOS
sudo fdisk /dev/sdX # X - is the stick vfat partition, type 't', 'b', 'w', 'Enter'
set dos fs label
sudo fatlabel /dev/sdX1 LABEL
Syslinux.cfg
Add menu items to stick:/syslinux/syslinux.cfg before first LABEL string match.
stick://syslinux/syslinux.cfg
LABEL Debian netinstall 32 bit MENU LABEL Debian netinstall 32 bit KERNEL vmlinuz-debian32 initrd initrd-debian32.gz LABEL Debian netinstall 64 bit MENU LABEL Debian netinstall 64 bit KERNEL vmlinuz-debian64 initrd initrd-debian64.gz LABEL Fedora netinstall MENU LABEL Fedora netinstall KERNEL vmlinuz-fedora LABEL Grub 4 Dos MENU LABEL 0) Grub 4 DOS KERNEL grub.exe # Firstly, Windows does not found files in /I386 folder because it searches in the root / of the stick. # Copying them to the root can make another troubles. #LABEL winxp # MENU LABEL Boot Windows 2000/XP/2003 (SETUPLDR.BIN) from CD/DVD # COM32 chain.c32 # APPEND ntldr=/I386/SETUPLDR.BIN #LABEL win7 # MENU LABEL Boot Windows Vista/2008/7 (bootmgr) from CD/DVD # COM32 chain.c32 # APPEND ntldr=/bootmgr # Solution: boot DOS >7.0 (6.0 does not see FAT32) and install under DOS. LABEL 4dos MENU LABEL 4DOS MS-DOS 7.1 RUS kernel memdisk append initrd=/bootdisk/4dos.ima floppy # Download if you need 6.22 version of DOS LABEL dos622 MENU LABEL DOS 6.22 kernel memdisk append initrd=/bootdisk/dos622.img floppy
You can download and version of Dos 6.22 and save as stick:/bootdisk/dos622.img
Grub4dos
Extract from Grub4dos grub.exe file to the stick into /syslinux/ relative path. And create stick:/menu.lst config file for Grub4dos
stick:/menu.lst
color black/cyan yellow/cyan timeout 30 default /default splashimage=/splash.xpm.gz foreground=AB82FF background=191970 # map + Contig/WinContig shows blue screen when detecting hardware # map --mem hangs in black screen for a long time, then reboot #title WinXP iso #find --set-root /winxp.iso # map /winxp.iso (hd32) # map --hook # root (hd32) # chainloader (hd32) # Way to install Windows XP, 2003, 2000, 98, 95 and restoring SYSLINUX boot loader after NTLDR rewrote it. # To install Windows XP select "Grub 4 Dos" menu item on boot screen, then select "Dos 7.1 Rus" item # and type: smartdrv ; c: ; cd c:\install\windows\i386 ; winnt.exe - Windows XP setup will start # For Windows 98 run setup.exe setup executable. # For that operations you need Windows installation CD with i386 directory. title 4DOS MS-DOS 7.1 RUS map --mem /bootdisk/4dos.ima (fd0) map --hook chainloader (fd0)+1 rootnoverify (fd0)
Debian netinstall
To get available Debian netinstall need to download kernel-32bit, initrd-32bit, kernel-64bit, initrd-64bit and move it to the stick:/syslinux directory renaming to vmlinuz-debian32, initrd-debian32.gz, vmlinuz-debian64, inird-debian64.gz accordinly. Under GNU/Linux you can do all operations by typing one command
Downloading Debian files: path - path to the mounted usb stick fs, release = stable | testing | sid
path=/mnt/flash ; release=stable ftp_url="http://ftp.debian.org/debian/dists/$release/main/installer"; \ ftp_path="current/images/netboot/debian-installer" \ && p="$ftp_url-i386/$ftp_path/i386" \ && wget "$p/linux" -O "$path/syslinux/vmlinuz-debian32" \ && wget "$p/initrd.gz" -O "$path/syslinux/initrd-debian32.gz" \ && p="$ftp_url-amd64/$ftp_path/amd64" \ && wget "$p/linux" -O "$path/syslinux/vmlinuz-debian64" \ && wget "$p/initrd.gz" -O "$path/syslinux/initrd-debian64.gz" \ && echo "Debian boot image files download successfully\! ;-)" \ || echo "Downloading Debian boot image files failed\! ;-("
Fedora netinstall
To get available Fedora netinstall download bfo.lkrn and save it as stick:/syslinux/vmlinuz-fedora. Example:
Download Fedora netinstall kernel image: path - path to the mounted stick
path=/mnt/flash wget http://dl.fedoraproject.org/pub/alt/bfo/bfo.lkrn -O $path/syslinux/vmlinuz-fedora
Ubuntu installer
Download Ubuntu iso-file. Copy /casper directory to the root of flash to get structure like this.
stick:/
stick ├── casper │ ├── filesystem.manifest │ ├── filesystem.manifest-remove │ ├── filesystem.size │ ├── filesystem.squashfs │ ├── initrd.lz │ └── vmlinuz.efi
stick://menu.lst
title Ubuntu LiveCD/Installer find --set-root /casper/initrd.lz kernel /casper/vmlinuz boot=casper live-media-path=/casper/ ignore_uuid initrd /casper/initrd.lz
Gentoo stage3
To get available Gentoo installers need to download portage-latest.tar.bz2, stage3-i686-xxx.tar.bz2 and stage3-amd64-xxx.tar.bz2 to the stick:/install/gentoo directory. Under GNU/Linux all operations can be made in one step
Downloading Gentoo portage and stages: path - path to the stick
path=/mnt/flash full_path="$path/install/gentoo"; \ url_path="http://mirrors.kernel.org/gentoo/releases"; mkdir -p "$full_path" \ && fname=`wget $url_path/x86/autobuilds/latest-stage3-i486.txt -O - 2>/dev/null | tail -n1 | cut -d' ' -f1` \ && wget "$url_path/x86/autobuilds/$fname" -O "$full_path/${fname##*/}" \ && fname=`wget $url_path/amd64/autobuilds/latest-stage3-amd64-nomultilib.txt -O - 2>/dev/null | tail -n1 | cut -d' ' -f1` \ && wget "$url_path/amd64/autobuilds/$fname" -O "$full_path/${fname##*/}" \ && fname=`wget $url_path/amd64/autobuilds/latest-stage3-amd64-hardened+nomultilib.txt -O - 2>/dev/null | tail -n1 | cut -d' ' -f1` \ && wget "$url_path/amd64/autobuilds/$fname" -O "$full_path/${fname##*/}" \ && wget "$url_path/snapshots/current/portage-latest.tar.bz2" -O "$full_path/portage-latest.tar.bz2" \ && echo "Downloading portage and stag3 success \! ;-)" \ || echo "Downloading portage and stag3 failed \! ;-("
DOS 7.1
To have DOS 7.1 on the stick download diskette image from narod.ru or this site and move to the stick:/bootdisk directory. In Bash you cat type
Downloading DOS 7.1 image: path - path to mounted stick
path=/mnt/flash wget http://www.backbone.ws/share/dist/dos/os/4dos.ima -O "$path/bootdisk/4dos.ima" \ && echo "DOS 7.1 download succes\! ;-)" || echo "DOS 7.1 download failed\! ;-("
MS Windows
However if installation of Windows success you can got to Grub4dos using NTLDR and select DOS 7.1, then type
c: ; syslinux.com c:syslinux.com must be extracted from stick:/bootprog/syslinux-x.xx.zip/dos. Also to install Windows XP you need to copy ntdetect.com from i386 installation directory and grldr from Grub4dos to the root of the stick. Menu config must be on the stick
stick:/boot.ini
[boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS [operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect C:\grldr="Grub4Dos"
Clonezilla
Installing Clonezilla. Download latest stable or testing version of Clonezilla. Unpack three files from the iso by mounting it or by using File-Roller etc. You should get such directory tree.
stick:/
stick ├── live │ ├── filesystem.squashfs │ ├── initrd.img │ └── vmlinuz
More Grub4dos options
More Grub4dos menu list examples.
stick:/menu.lst
title find and load NTLDR of Windows NT/2K/XP fallback 1 find --set-root /ntldr chainloader /ntldr savedefault --wait=2 title find and load CMLDR, the Recovery Console of Windows NT/2K/XP fallback 2 find --set-root /cmldr chainloader /cmldr #..................................... # write string "cmdcons" to memory 0000:7C03 in 2 steps: #..................................... # step 1. Write 4 chars "cmdc" at 0000:7C03 write 0x7C03 0x63646D63 # step 2. Write 3 chars "ons" and an ending null at 0000:7C07 write 0x7C07 0x00736E6F savedefault --wait=2 title find and load IO.SYS of Windows 9x/Me fallback 3 find --set-root /io.sys chainloader /io.sys savedefault --wait=2 title find and boot Mandriva with menu.lst already installed fallback 4 find --set-root /etc/mandriva-release savedefault --wait=2 configfile /boot/grub/menu.lst title find and boot Linux with menu.lst already installed fallback 5 find --set-root /sbin/init savedefault --wait=2 configfile /boot/grub/menu.lst title commandline savedefault --wait=2 commandline title floppy (fd0) chainloader (fd0)+1 rootnoverify (fd0) savedefault --wait=2 title back to dos savedefault --wait=2 quit title reboot savedefault --wait=2 reboot title halt savedefault --wait=2 halt title memdrive duplicated from floppy image file (hd0,0)/sbm.bin map --mem (hd0,0)/sbm.bin (fd0) map --hook chainloader (fd0)+1 rootnoverify (fd0) savedefault --wait=2 title memdrive based on win98 partition (hd0,6) map --mem (hd0,6)+1 (hd0) # map --mem (hd0,0)/win98.gz (hd0) map --hook chainloader (hd0)+1 rootnoverify (hd0) savedefault --wait=2 title Boot Windows XP root (hd0,1) chainloader +1 savedefault title Boot Options lock find --set-root /submenu.lst configfile /submenu.lst title Find “hdd.tag” and chainload partition find --set-root /hdd.tag chainloader +1 title Find and load “ntldr” find --set-root /ntldr chainloader /ntldr title debian-6.0.0-i386-netinst.iso (hd32 --mem) map --mem (hd0,0)/debian-6.0.0-i386-netinst.iso (hd32) map --hook root (hd32) chainloader (hd32) boot title debian-6.0.0-i386-netinst.iso (0xFF --mem) map --mem (hd0,0)/debian-6.0.0-i386-netinst.iso (0xFF) map --hook root (0xFF) chainloader (0xFF) boot title debian-6.0.0-i386-netinst.iso (hd32) map (hd0,0)/debian-6.0.0-i386-netinst.iso (hd32) map --hook root (hd32) chainloader (hd32) boot title debian-6.0.0-i386-netinst.iso (0xFF) map (hd0,0)/debian-6.0.0-i386-netinst.iso (0xFF) map --hook root (0xFF) chainloader (0xFF) boot title debian-6.0.0-i386-netinst.iso (--mem maxblast) map --mem (hd0,0)/debian-6.0.0-i386-netinst.iso (hd32) map --hook map --mem (hd32)/images/maxblast.igz (fd0) map --hook root (fd0) chainloader +1 boot title debian-6.0.0-i386-netinst.iso (--mem maxblast --mem floppy) map --mem (hd0,0)/debian-6.0.0-i386-netinst.iso (hd32) map --hook map --mem (hd32)/images/maxblast.igz (fd0) map --hook map --mem (fd0)/floppy.img.gz (fd1) map --hook root (fd1) chainloader +1 boot