Grub4dos Example Menus
'Getting started with grub4dos' - Latest eBook PDF for 2020
Complete grub4dos guide with exercises and full command reference.
The menu entries below cannot just be cut and pasted into one large menu.lst file! You need to just take the bits that you need!
Testing
Use a path and filename that does not contain spaces - e.g. ubuntu_x64_test.iso
Test on a real system (not just a Virtual Machine)
Test on 32-bit and 64-bit systems
Test using a USB 2.0 port on an old system (some OS's don't have modern USB controller drivers, e.g .Win7)
Test using a non-UASP USB device (some OS's don't have UASP drivers)
Test on a FAT32 formatted USB drive if an NTFS drive does not work
Test using a Removable-type Flash drive as well as a Fixed-type USB drive
EXAMPLES
The grub4dos menus and code snippets below should be copied into your own menu - DO NOT JUST COPY THIS WHOLE PAGE!
ALWAYS TEST USING A FILENAME THAT DOES NOT CONTAIN ANY SPACES!
NOTE: Kernel parameter values (xxxxx=yyyyy) cannot cope with spaces. Ensure that the ISO filename and path does not contain spaces if you are using a kernel parameter such as fromiso= or iso-scan/filename=. Usually 'escaping' the filename with quotes or using \x20 does not work for the ISO filename.
Please search this site for the relevant tutorials!
Easy2Boot contains better key map batch files for grub4dos 0.4.6a 2020+.
#check version of grub4dos is later than 01-02-2012
checkrange 20120201:-1 read 0x8278 || pause --wait=3 Please use grub4dos-0.4.5c-2012-02-01 or later! && exit 1
#reset key map
setkey
#change key map for UK keyboard
setkey
setkey at doublequote
setkey doublequote at
setkey tilde bar
setkey numbersign backslash
#French
setkey
setkey less backquote
setkey greater tilde
setkey ampersand 1
setkey 1 exclam
setkey tilde 2
setkey 2 at
setkey doublequote 3
setkey 3 numbersign
setkey quote 4
setkey 4 dollar
setkey parenleft 5
setkey 5 percent
setkey minus 6
setkey 6 caret
setkey backquote 7
setkey 7 ampersand
setkey underscore 8
setkey 8 asterisk
setkey backslash 9
setkey 9 parenleft
setkey at 0
setkey 0 parenright
setkey parenright minus
setkey numbersign underscore
:: no change for equal
:: no change for plus
setkey a q
setkey A Q
setkey z w
setkey Z W
setkey caret bracketleft
:: no equivalent for diaresis => we keep the US braceleft
setkey dollar bracketright
:: no equivalent for pound => we keep the US braceright
setkey q a
setkey Q A
setkey m semicolon
setkey M colon
setkey bracketleft quote
setkey percent doublequote
setkey asterisk backslash
setkey bracketright bar
setkey w z
setkey W Z
setkey comma m
setkey question M
setkey semicolon comma
setkey period less
setkey colon period
setkey slash greater
setkey exclam slash
setkey bar question
#Japan 106
setkey
setkey at bracketleft
setkey doublequote at
setkey ampersand caret
setkey quote ampersand
setkey parenleft asterisk
setkey parenright parenleft
setkey underscore parenright
setkey equal underscore
setkey plus colon
setkey colon quote
setkey asterisk doublequote
setkey bracketleft bracketright
setkey braceleft braceright
setkey bracketright backslash
setkey braceright bar
setkey backslash backquote
setkey tilde plus
setkey caret equal
setkey backquote braceleft
setkey bar tilde
# to set a german keyboard use these setkey commands before the first title command
setkey
setkey yz
setkey zy
setkey YZ
setkey ZY
setkey equal parenright
setkey parenright parenleft
setkey parenleft asterisk
setkey doublequote at
setkey plus bracket right
setkey minus slash
setkey slash ampersand
setkey ampersand percent
setkey percent caret
setkey underscore question
setkey question underscore
setkey semicolon less
setkey less number sign
setkey number sign backslash
setkey colon greater
setkey greater bar
setkey asterisk braceright
# set AZERTY ketyboard
setkey
setkey a q
setkey A Q
setkey z w
setkey Z W
setkey q a
setkey Q A
setkey m semicolon
setkey M colon
setkey w z
setkey W Z
setkey comma m
setkey question M
setkey semicolon comma
setkey period less
setkey colon period
setkey slash greater
setkey exclam slash
setkey dollar bracketright
setkey asterisk backslash
setkey percent doublequote
setkey ampersand 1
setkey 1 exclam
setkey tilde 2
setkey 2 at
setkey doublequote 3
setkey 3 numbersign
setkey quote 4
setkey 4 dollar
setkey parenleft 5
setkey 5 percent
setkey minus 6
setkey 6 caret
setkey backquote 7
setkey 7 ampersand
setkey underscore 8
setkey 8 asterisk
setkey caret 9
setkey 9 parenleft
setkey at 0
setkey 0 parenright
setkey parenright minus
setkey less backquote
setkey greater tilde
setkey numbersign braceright
setkey backslash question
setkey bracketright braceleft
setkey braceleft quote
setkey braceright underscore
#QWERTZ keyboard
setkey
setkey y z
setkey z y
setkey Y Z
setkey Z Y
setkey equal parenright
setkey parenright parenleft
setkey parenleft asterisk
setkey doublequote at
setkey backquote equal
setkey plus bracketright
setkey minus slash
setkey slash ampersand
setkey ampersand percent
setkey percent caret
setkey underscore question
setkey question underscore
setkey semicolon less
setkey less numbersign
setkey numbersign backslash
setkey colon greater
setkey greater bar
setkey asterisk braceright
setkey caret backquote
setkey backslash minus
# ensure not in debug=2 mode or gfxmenu will need two key presses!
debug 1
gfxmenu /message
color black/cyan yellow/cyan
timeout 1
default 0
# line below will ensure the gfxmenu is always loaded even after an error
configfile (bd)/menu.lst
# if booting from a USB Flash drive get the UUID like this
debug 1
uuid (bd) > (md)0x220+1
cat --skip=18 --length=9 (md)0x220+1 | set UUID=
# if booting from HDD use --length=16
echo UUID of boot device is %UUID%
# Ignore boot device and boot to Windows XP, Vista, 7 or 8 from the internal hard disk
# This works by mapping the boot device (bd) which may have bootmgr or ntldr on it, to a virtual memory drive so that files on it are not found by the find command
title Boot to Windows from an internal hard disk
map --mem (md)+8 (bd)
map --hook
find --set-root --ignore-floppies --ignore-cd /bootmgr || find --set-root --ignore-floppies --ignore-cd /ntldr
map (bd) (bd)
map --rehook
chainloader /bootmgr || chainloader /ntldr
#This entry sends an ESC character which can be used to exit from the GFXMenu back to the grub4dos text menu (or the user can just press ESC instead)
#The file esc.txt must exist and contain the ESC character (0x1b or 27 or 033 octal) - the esc.txt file is in Beta Downloads section if you want it!
title grub4dos menu
cat /esc.txt && clear
title List partitions
clear
cat (hd0,0)+1 > (md)800+1 && parttype (hd0,0) && echo Contents of (hd0,0): && ls (hd0,0)/ && echo && echo --------
cat (hd0,1)+1 > (md)800+1 && parttype (hd0,1) && echo Contents of (hd0,1): && ls (hd0,1)/ && echo && echo --------
cat (hd0,2)+1 > (md)800+1 && parttype (hd0,2) && echo Contents of (hd0,2): && ls (hd0,2)/ && echo && echo --------
cat (hd0,3)+1 > (md)800+1 && parttype (hd0,3) && echo Contents of (hd0,3): && ls (hd0,3)/ && echo && echo --------
cat (hd0,4)+1 > (md)800+1 && parttype (hd0,4) && echo Contents of (hd0,4): && ls (hd0,4)/ && echo && echo --------
cat (hd1,0)+1 > (md)800+1 && parttype (hd1,0) && echo Contents of (hd1,0): && ls (hd1,0)/ && echo && echo --------
cat (hd1,1)+1 > (md)800+1 && parttype (hd1,1) && echo Contents of (hd1,1): && ls (hd1,1)/ && echo && echo --------
cat (hd1,2)+1 > (md)800+1 && parttype (hd1,2) && echo Contents of (hd1,2): && ls (hd1,2)/ && echo && echo --------
cat (hd1,3)+1 > (md)800+1 && parttype (hd1,3) && echo Contents of (hd1,3): && ls (hd1,3)/ && echo && echo --------
cat (hd1,4)+1 > (md)800+1 && parttype (hd1,4) && echo Contents of (hd1,4): && ls (hd1,4)/ && echo && echo --------
echo
pause --wait=10 Please check available partitions...
configfile (bd)/menu.lst
title Reboot
reboot
title Switch Off
halt
#hotkey and autonumber example
color white/blue
write --bytes=2 0x8274 0x2001
## run hotkey once to enable hotkey.
/hotkey
## show this menu only if /ntldr can be found
iftitle [find /ntldr] ^Ctrl+F1 Press Ctrl+F1 to boot /ntldr
find --set-root /ntldr
chainloader /ntldr
# Check this CD/USB drive is not too old - see Tutorial #71 for details
# Usage: /checkdate.g4b <Release Year> <Release Month> <Release DayOfMonth> <ExpiresInDays> [<SILENT>]
/checkdate.g4b 2012 12 3 2
pause
if NOT "%CHECKDATE%"=="OK" reboot
#Boot using the original backup MBR sector (copied to LBA1 by grub4dos on install)
#This will boot the system as it would before grub4dos was installed
title Normal Windows Boot
rootnoverify (hd0)
chainloader (hd0)1+1
#this assumes you have booted from a USB drive and you want to boot from the hard disk
title Boot from 1st Hard Disk \nBoot from MBR of first hard disk
map (hd0) (hd1)
map (hd1) (hd0)
map --hook
chainloader (hd0)+1
rootnoverify (hd0)
title FreeDOS
find --set-root /kernel.sys
chainloader /kernel.sys
title MSDOS
find --set-root /io.sys
chainloader /io.sys
title FreeDOS (AS HDD)
map (hd0) (hd1)
map (hd1) (hd0)
map --hook
rootnoverify (hd1,0)
chainloader /kernel.sys
title FreeDOS (AS FLOPPY)
map (hd0,0)+1 (fd0)
map (hd0) (hd1)
map (hd1) (hd0)
map --hook
chainloader (fd0)/kernel.sys
rootnoverify (fd0)
map --floppies=1
title MS-DOS (AS HDD)
rootnoverify (hd0,0)
chainloader (hd0,0)/io.sys
title Always boot from USB to MS-DOS AS FLOPPY DISK A:
checkrange 0x80 read 0x8280 && map (hd0,0)+1 (fd0)
checkrange 0x80 read 0x8280 && map (hd1) (hd0)
checkrange 0x80 read 0x8280 && map --hook
ls (fd0)/io.sys && clear && pause --wait=1 /IO.SYS found on floppy disk
ls (fd0)/io.sys || pause --wait=3 /IO.SYS not found on floppy disk
ls (fd0)/io.sys && chainloader (fd0)/io.sys
ls (fd0)/io.sys && rootnoverify (fd0)
ls (fd0)/io.sys && map --floppies=1
ls (fd0)/io.sys && map --harddrives=1
clear
boot
title MS-DOS (AS FLOPPY) AND HDD as HDD0
map (hd0,0)+1 (fd0)
# map the first partition of the hard disk as a floppy disk
map (hd0) (hd32)
# map the UFD as a virtual cd
map (hd1) (hd0)
# map the real hard disk as hard disk 0
map --hook
# hook Int13 interrupts so all map changes take affect
chainloader (fd0)/io.sys
# load the io.sys code into memory from the floppy disk (now ufd is fd0)
rootnoverify (fd0)
# set the file root as the floppy disk
map --floppies=1
map --harddrives=1
# Tweak BIOS device numbers so DOS sees 1 floppy and 1 hd
title MS-DOS (AS FLOPPY) AND HDD as HDD0 (no comments)
map (hd0,0)+1 (fd0)
map (hd0) (hd32)
map (hd1) (hd0)
map --hook
chainloader (fd0)/io.sys
rootnoverify (fd0)
map --floppies=1
map --harddrives=1
#boot from floppy image with internal hdd as hd0 (no other hdds) (use ImDisk to create a large floppy .ima file)
title Install Win98\n Install Win98 using large .ima file
map /Win98_SE.ima (fd0)
map --hook
set A=
if exist (fd0)/IO.SYS set A=1
if exist (fd0)/KERNEL.SYS set A=1
if not exist A set /p A=ERROR: No DOS boot files found in .ima file! && chainloader /grldr
map (hd1) (hd0)
map --hook
#set just one HDD and one floppy
map --harddrives=1
map --floppies=1
root (fd0)
chainloader /IO.SYS || chainloader /KERNEL.SYS
# http://www.partition-saving.com/
title savepart.iso
# map the iso file as a virtual cd
map /savepart.iso (0xff)
# hook the int 13 interrupt so the BIOS sees it as a CD
map --hook
# set the root path to the new virtual CD
root (0xff)
# boot from the CD
chainloader (0xff)
title spartbdk.img
# map the 1.44MB floppy image as fd0
map /spartbdk.img (fd0)
map --hook
root (fd0)
# load the freedos kernel.sys as the boot file
chainloader /kernel.sys
# Use SHIFT to boot linux in safe mode
title Run Linux\nPress SHIFT+ENTER for safe mode
/bios int=0x16 eax=0x00000200 > (md)0x300+1 && cat --skip=12 --length=2 (md)0x300+1 | set /a n=0x > nul
set /a n=%n% & 0x03 > nul && if %n%>=1 echo SHIFT PRESSED!
#LShift=01,RShift=02,CTRL=04,ALT=08,SCROLL=10,NUM=20,CAPS=40,INS=80
#set /a n=%n% & 0x04 > nul && if %n%>=1 echo CTRL PRESSED!
set sf=
if %n%>=1 set sf=acpi=off irqpoll noapic noapm nodma nomce nolapic nosmp
kernel /casper/vmlinuz file=/cdrom/preseed/ubuntu.seed boot=casper %sf% splash
initrd /casper/initrd.img
title WinPe v2
map /bootmgr (rd)
chainloader (rd)+1
root ()
;Note: make sure the 'cheat code' fromusb is present and also the bootfromiso path to the iso file on the USB drive starts with a forward slash /
;The ISO filename needs to be 8.3 and is case sensitive too!
title PCLinuxOS LiveCD \n * Boot direct from ISO file
map --unhook
map --unmap=0:0xff
find --set-root --ignore-floppies /pclos.iso
map --heads=0 --sectors-per-track=0 /pclos.iso (0xff)
map --hook
root (0xff)
kernel (0xff)/isolinux/vmlinuz fromusb bootfromiso=/pclos.iso livecd=livecd root=/dev/rd/3 acpi=on vga=788 keyb=en vmalloc=256M edd=off
initrd (0xff)/isolinux/initrd.gz
title BackTrack 4 Final LiveCD (extracted ISO contents to bt4 folder)
find --set-root /bt4/boot/vmlinuz
kernel /bt4/boot/vmlinuz BOOT=/bt4/casper boot=/bt4/casper nopersistent rw quiet vga=0x315
initrd /bt4/boot/initrd.gz
title MEMTEST86+
find --set-root /mt410.iso
map /mt410.iso (hd32)
map --hook
root (hd32)
chainloader (hd32)
#This method of running memtest86+ works on more PCs than the previous one
title memtest.img (memtest.img obtained from ISO)
find --set-root /memtest.img
map /memtest.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
map --floppies=1
title memtest86+ (bin file)
find --set-root /memtest.bin
kernel /memtest.bin
# USB Boot -> Fat32 Formatted
title Norton Ghost 15 (hd32)
find --set-root /iso/Ghost15.iso
map /iso/Ghost15.iso (hd32)
map --hook
root (hd32)
chainloader /BOOTMGR
title Ultimate Boot CD (UBCD) v5.0 final\nthis is the 14 May 2010 edition,its an all in one Free Bootable CD for IT Pros, the cd consolidate as many diagnostic tools as possible into one bootable CD.
find --set-root /ubcd50.iso
map /ubcd50.iso (hd32)
map --hook
root (hd32)
chainloader (hd32)
title Ultimate Boot CD (UBCD) v5.11 \nthis is the August 2011 edition,its an all in one Free Bootable CD for IT Pros, the cd consolidate as many diagnostic tools as possible into one bootable CD.
find --set-root /ubcd511.iso
map /ubcd511.iso (hd32)
map --hook
root (hd32)
chainloader (hd32)
# only about 2MB is saved by using 7zip to compress the iso to a .gz file
title Hirens Boot CD 13.1 using firadisk \nBoot to Hirens Boot CD in RAM
find --set-root --ignore-floppies --ignore-cd /HirensBCD.13.1.iso.gz
map --mem /firadisk.gz (fd0)
map --mem /HirensBCD.13.1.iso.gz (0xff)
map --hook
root (0xff)
chainloader (0xff)
#iPXE boot - see the iPXE Tutorial for details
title ipxe
map /ISO/ipxe.iso (0xff) || map --mem /ISO/ipxe.iso (0xff)
map --hook
root (0xff)
chainloader (0xff)
# ---- GPARTED ---
title 1 GParted Live (0.8.1-3)
find --set-root --ignore-floppies /live/vmlinuz
kernel /live/vmlinuz boot=live config noswap noprompt ip=frommedia nosplash
initrd /live/initrd.img
title 2 GParted Live (0.8.1-3) ToRAM
find --set-root --ignore-floppies /live/vmlinuz
kernel /live/vmlinuz boot=live config noswap noprompt toram=filesystem.squashfs ip=frommedia nosplash
initrd /live/initrd.img
title 3 GParted Live (0.8.1-3) without framebuffer
find --set-root --ignore-floppies /live/vmlinuz
kernel /live/vmlinuz boot=live config noswap noprompt ip=frommedia nomodeset vga=normal nosplash
initrd /live/initrd.img
title 4 GParted Live (0.8.1-3) failsafe
find --set-root --ignore-floppies /live/vmlinuz
kernel /live/vmlinuz boot=live config noswap noprompt acpi=off irqpoll noapic noapm nodma nomce nolapic nosmp ip=frommedia nomodeset vga=normal nosplash
initrd /live/initrd.img
#Note: if using FAT filesystem, the findiso pathname is CaSeSeNsItIvE!
# http://sourceforge.net/projects/gparted/files/latest/download
title gparted 11.0 live from ISO
find --set-root /gparted-live-0.11.0-10.iso
map /gparted-live-0.11.0-10.iso (0xff) || map --mem /gparted-live-0.11.0-10.iso (0xff)
map --hook
root (0xff)
kernel /live/vmlinuz boot=live config union=aufs noswap noprompt vga=788 ip=frommedia findiso= /gparted-live-0.11.0-10.iso toram=filesystem.squashfs
initrd /live/initrd.img
#Note: if using FAT filesystem, the findiso pathname is CaSeSeNsItIvE!
# http://sourceforge.net/projects/gparted/files/latest/download
title gparted 0.12.1-5 live from ISO
find --set-root /gparted-live-0.12.1-5.iso
map /gparted-live-0.12.1-5.iso (0xff) || map --mem /gparted-live-0.12.1-5.iso (0xff)
map --hook
root (0xff)
kernel /live/vmlinuz boot=live config ip=frommedia findiso=/gparted-live-0.12.1-5.iso
initrd /live/initrd.img
# for failsafe add ...
#noapic noapm nodma nomce nolapic nomodeset nosmp vga=normal
# -----
# http://hdt-project.org/wiki/hdt-0.5.0#Downloads - examine the hardware PCIID's etc. in a system (v small and quick!)
title HDT (Hardware Detection Tool\nhdt-project.org\nType MENU for a GUI menu
map /hdt-0.5.0.iso (0xff)
map --hook
root (0xff)
chainloader (0xff)
#You must first copy the /slax folder from the ISO file and place it on your USB pen
title slax 6.1.2
map /iso/slax-6.1.2.iso (0xff) || map --mem /iso/slax-6.1.2.iso (0xff)
map --hook
root (0xff)
kernel /boot/vmlinuz from=/iso/slax-6.1.2.iso ramdisk_size=6666 root=/dev/ram0 rw
initrd /boot/initrd.gz
title Kasperksy AV 2010 Rescue.iso
map /rescue/rescue.iso (0xff) || --mem /rescue/rescue.iso (0xff)
map --hook
root (0xff)
chainloader (0xff)
title BartPE (from \MININT)
find --set-root /minint/SETUPLDR.BIN
chainloader /minint/SETUPLDR.BIN
title SeaTools ISO
map /SeaToolsDOS223ALL.ISO (0xff)
map --hook
map (0xff)/seatools.ima (fd0)
map --hook
root (fd0)
chainloader /kernel.sys
# boot from the .iso file (160MB) or use 7Zip to compress it to a .gz file (68MB)
title BartPE ISO using firadisk \nBoot to BartPE in RAM
find --set-root --ignore-floppies --ignore-cd /Bartpe.iso
map --mem /firadisk.gz (fd0)
map --mem /Bartpe.iso (0xff)
map --hook
root (0xff)
chainloader (0xff)
title DSLinux ISO
find --set-root /dsl4410.iso
map /dsl4410.iso (hd32)
map --hook
root (hd32)
chainloader (hd32)
# boot knoppix from ISO file (no need to modify ISO with 6.7+)
# works with iso in root or subfolder (thanks to cdob from reboot.pro for workaround for subfolder!)
# ISO boot discussion at http://reboot.pro/16252/
# iso path and filename are Case Sensitive!!!
# Knoppix cheat codes listed at http://www.pendrivelinux.com/knoppix-cheatcodes/
# Set a unique variable (e.g. K1109) in each iftitle line
iftitle [if exist /_ISO/ ADRIANE-KNOPPIX_V6.7.1CD-2011-09-14-EN.iso set K1109=/_ISO/ ADRIANE-KNOPPIX_V6.7.1CD-2011-09-14-EN.iso ] Boot %K1109%
set ISO=%K1109%
ls %ISO% > nul || find --set-root --devices=hf %ISO%
map %ISO% (0xff) || echo %ISO% not contiguous - so need to load it all into memory... && map --mem %ISO% (0xff)
map --hook
root (0xff)
kernel /boot/isolinux/linux bootfrom=/./%ISO% noeject noprompt ramdisk_size=100000 lang=en vt.default_utf8=0 apm=power-off nomce libata.force=noncq hpsa.hpsa_allow_any=1 loglevel=1 tz=localtime
initrd /boot/isolinux/minirt.gz
iftitle [if exist /KNOPPIX_V7.0.4CD-2012-08-20-EN.iso] Boot KNOPPIX
set ISO=/KNOPPIX_V7.0.4CD-2012-08-20-EN.iso
ls %ISO% > nul || find --set-root --devices=hf %ISO%
map %ISO% (0xff) || echo %ISO% not contiguous - so need to load it all into memory... && map --mem %ISO% (0xff)
map --hook
root (0xff)
kernel /boot/isolinux/linux bootfrom=/./%ISO% noeject noprompt ramdisk_size=100000 lang=en vt.default_utf8=0 apm=power-off nomce libata.force=noncq hpsa.hpsa_allow_any=1 loglevel=1 tz=localtime
initrd /boot/isolinux/minirt.gz
title KNOPPIX\nAt boot prompt type - knoppix bootfrom=/dev/hda0/KNOPPIX155.iso
map /KNOPPIX511.iso (hd32) || map --mem /KNOPPIX511.iso (hd32)
map --hook
root (hd32)
chainloader (hd32)
title Knoppix 7
#http://www.knopper.net/knoppix-info/index-en.html
set lang=en
set ISOfile=/images/KNOPPIX_V7.0.5.iso
cat --length=0 %ISOfile% > nul || find --set-root --devices=hf %ISOfile%
map %ISOfile% (0xff)
map --hook
root (0xff)
kernel /boot/isolinux/linux bootfrom=/dev/*%ISOfile% noeject noprompt ramdisk_size=100000 lang=%lang% vt.default_utf8=0 apm=power-off nomce libata.force=noncq hpsa.hpsa_allow_any=1 loglevel=1 tz=localtime
initrd /boot/isolinux/minirt.gz
title KNOPPIX 6.2.1\nNote: Must use modified initrd.gz to boot from ISO - Note: version specific - does not work with 6.7.0!
#http://knol.google.com/k/yoshihide-nomura/how-to-boot-knoppix-directly-from-iso/2vzr3sm0dzndc/1#
#http://www.knoppix.net/wiki/Cheat_Codes
#http://archive.yoshimov.com/knoppix/initrd-mod-6.2.1.gz has modified initrd file
#iso file and modifed initrd placed in ISO folder in this example
find --set-root /iso/KNOPPIX_V6.2.1CD-2010-01-31-EN.iso
map /iso/KNOPPIX_V6.2.1CD-2010-01-31-EN.iso (hd32) || map --mem /iso/KNOPPIX_V6.2.1CD-2010-01-31-EN.iso (hd32)
map --hook
root (hd32)
echo "Loading kernel.."
kernel /boot/isolinux/linux ramdisk_size=100000 lang=en vt.default_utf8=0 apm=power-off vga=791 nomce noeject noprompt quiet loglevel=0 tz=localtime fromiso=iso/KNOPPIX_V6.2.1CD-2010-01-31-EN.iso edd=off --
echo "Loading modified initrd downloaded from http://archive.yoshimov.com/knoppix/initrd-mod-6.2.1.gz"
initrd (bd)/iso/initrd-mod-6.2.1.gz || initrd (hd0,0)/iso/initrd-6.2.1.gz
# Run from hd0,2 partition as flat file installation - Knoppix will find correct partition
title Boot Knoppix v7.6\n Run KNOPPIX
root (hd0,2)/multiboot/KNOPPIX_V7.6.1DVD-2016-01-16-EN/boot/isolinux
kernel /linux knoppix_dir=/multiboot/KNOPPIX_V7.6.1DVD-2016-01-16-EN/KNOPPIX lang=en apm=power-off nomce libata.force=noncq hpsa.hpsa_allow_any=1 loglevel=1
initrd /minirt.gz boot
# -- PUPPY LINUX -----
#The following cheat codes have been tried with precise, slacko and tahr and none work!!
#iso_filename=%ISOSCAN% isofrom_system=%ISOSCAN% isoboot=%ISOSCAN% isoloop=%ISOSCAN% img_loop=%ISOSCAN%
#bootfromiso=%ISOSCAN% findiso=%ISOSCAN% fromiso=%ISOSCAN% from=%ISOSCAN%
#isofrom=%UUID%:%ISOSCAN% iso-scan/filename=%ISOSCAN% isofrom_device=/dev/disk/by-uuid/%UUID% isofrom_system=%ISOSCAN%
#iso-scan/filename=%ISOSCAN% isofrom_device=/dev/disk/by-uuid/%UUID% isofrom_system=%ISOSCAN%
#boot from ISO - sqfs file must be extracted to level1 folder (any name of folder - e.g. \fred)
#e.g. \xyzzy\puppy_precise_5.7.1.sfs and puppy will find it - does not work if level2 folder or below (e.g. \xyxxy\fred\xxx.sfs will not work)
#works for FAT32 or NTFS - name of .sfs file must be lower case (extract using 7zip on ISO file)
#many diferent .sfs files can be placed in the same folder for other versions too
title Puppy Precise boot from ISO
map /_ISO/Linux/precise-5.7.1.iso (0xff)
map --hook
root (0xff)
#pmedia can be (nothing) ='auto', or usbhd, satahd, idehd, scsihd, usbflash
kernel /vmlinuz pmedia= psavemark=1
initrd /initrd.gz
# Only the ISO file is required for this menu - 4th ptn on USB drive must be empty!
iftitle [if exist (bd)/_ISO/Linux/precise-5.4.3.iso] Puppy Precise 5.4.3\n Puppy with persistence
partnew (hd0,3) 0x00 (bd)/_ISO/Linux/precise-5.4.3.iso
map (bd)/_ISO/Linux/precise-5.4.3.iso (0xff)
map --hook
root (0xff)
kernel /vmlinuz pmedia=usbflash psavemark=1 fix=fsck
#You need to use pmedia=usbhd if you are booting from a USB HDD.
#kernel /vmlinuz pmedia=usbhd psavemark=1 fix=fsck
initrd /initrd.gz
# -- CLONEZILLA ---
title CLONEZILLA (wait 2-3 minutes and hit Enter twice!)
;long wait at splash screen but it works!
kernel /live/vmlinuz1 locale=us boot=live persistent
initrd /live/initrd1.img
title CLONEZILLA hd0<->hd1 (wait 2-3 minutes and hit Enter twice!)
;long wait at splash screen but it works!
map (hd0) (hd1)
map (hd1) (hd0)
kernel /live/vmlinuz1 locale=us boot=live persistent
initrd /live/initrd1.img
title Parted Magic /ISO/pmagic_2013_02_28.iso (booting the kernel)
map /ISO/pmagic_2013_02_28.iso (0xff)
map --hook
root (0xff)
kernel /pmagic/bzImage edd=off load_ramdisk=1 prompt_ramdisk=0 rw vga=normal sleep=10 loglevel=0 max_loop=256 vmalloc=384MiB keymap=us iso_filename=/ISO/pmagic_2013_02_28.iso
initrd /pmagic/initrd.img
title pmagic_2012_06_07.iso
#name must be in pmagic-yyyy_mm_dd.iso format and in root folder or will not find the .sqfs file
find --set-root /pmagic_2012_06_07.iso
map --heads=0 --sectors-per-track=0 /pmagic_2012_06_07.iso (0xff)
map --hook
root (0xff)
chainloader (0xff)
title Parted Magic 4.10 ISO
find --set-root /pmagic.iso
map /pmagic.iso (hd32)
map --hook
root (hd32)
kernel /pmagic/bzImage noapic load_ramdisk=1 prompt_ramdisk=0 rw vga=791 sleep=10 loglevel=0 keymap=uk iso_filename=/pmagic.iso
initrd /pmagic/initramfs
map --unmap=0:0xff
title Parted Magic 5.2 (direct memory mapping and booting the kernel)
find --set-root /pm52.iso
map --mem /pm52.iso (hd32)
map --hook
root (hd32)
kernel /pmagic/bzImage noapic load_ramdisk=1 prompt_ramdisk=0 rw vga=791 sleep=10 loglevel=0 keymap=us iso_filename=/pm52.iso
initrd /pmagic/initramfs
map --unmap=0:0xff
title Acronis True Image 2009 / 2013
find --set-root /acronis.iso
map /acronis.iso (hd32)
map --hook
root (hd32)
chainloader (hd32)
title Acronis Recovery 2013
kernel /Recovery\ Manager/kernel.dat quiet media_for_linux vga=ask
initrd /Recovery\ Manager/ramdisk.dat
title Windows Password reset
find --set-root /cd100627.iso
map /cd100627.iso (0xff)
map --hook
chainloader (0xff)
title OphCrack Password Cracker XP 2.3.1
find --set-root /ophcrack_xp/boot/bzImage
kernel /ophcrack_xp/boot/bzImage rw root=/dev/null vga=normal ophcrack=lowram lang=C kmap=uk screen=1024x768x16 autologin
initrd /ophcrack_xp/boot/rootfs.gz
title OphCrack Password Cracker Vista 2.3.1
find --set-root /ophcrack_vista/boot/bzImage
kernel /ophcrack_vista/boot/bzImage rw root=/dev/null vga=normal ophcrack=lowram lang=C kmap=uk screen=1024x768x16 autologin
initrd /ophcrack_vista/boot/rootfs.gz
#name must be in pmagic-x.y.iso format or will not find sqfs file
title PC CMOS Cleaner and Parted Magic 5.7 ISO
find --set-root /pmagic-5.7.iso
map --heads=0 --sectors-per-track=0 /pmagic-5.7.iso (hd32)
map --hook
root (hd32)
chainloader (hd32)
title Slitaz 4 RC1 Live
find --set-root /slitaz-4.0-RC1.iso
map --heads=0 --sectors-per-track=0 /slitaz-4.0-RC1.iso (0xff)
map --hook
root (0xff)
chainloader /boot/isolinux/isolinux.bin
title SliTaz Cooking (may be no kbd in GUI?)
find --set-root /slitaz-cooking.iso
map --heads=0 --sectors-per-track=0 /slitaz-cooking.iso (0xff)
map --hook
root (0xff)
kernel /boot/bzImage rw root=/dev/null
#vga=normal lang=C kmap=uk screen=1024x768x16 autologin
initrd /boot/rootfs.gz
title SliTaz 3.0
find --set-root /slitaz-3.0.iso
map --heads=0 --sectors-per-track=0 /slitaz-3.0.iso (0xff)
map --hook
root (0xff)
kernel /boot/bzImage rw root=/dev/null
#vga=normal lang=C kmap=uk screen=1024x768x16 autologin
initrd /boot/rootfs.gz
# - - - - - - - - - #
# GENERIC ANY LINUX BOOT FROM ISO TECHNIQUE!
# See Tutorial 93 for details
# This menu can be used for to boot any linux iso file
# It is especially useful if your boot drive is NTFS but linux does not understand NTFS once it boots and so cannot boot further
# WARNING: permanently alters the boot device's partition table (adds a 4th ptn entry)!
# Use with care as it will obliterate ptn 4 on the boot device if it already exists!
# see http://reboot.pro/topic/9916-grub4dos-isohybrided/page-2#entry88531 for details
iftitle [if exist /tails-i386-0.15.iso] Tails (boot from ISO)
set ISO=tails-i386-0.15.iso
find --set-root %ISO%
parttype (hd0,3) | set check=
set check=%check:~-5,4%
if %check%==0x00 partnew (hd0,3) 0x00 %ISO%
if NOT %check%==0x00 echo ERROR: Partion Table entry 4 already exists! && pause --wait=3 && configfile /menu.lst
map /%ISO% (0xff)
echo -e \r\n
map --hook
root (0xff)
chainloader (0xff)
#some examples not using iftitle so they will always be listed even if the ISO file does not exist!
title raring-dvd-i386.iso\nEdubuntu 13.04 Alpha 1 Test Build
set ISO=/raring-dvd-i386.iso
find --set-root %ISO%
parttype (hd0,3) | set check=
set check=%check:~-5,4%
if %check%==0x00 partnew (hd0,3) 0x00 %ISO%
if NOT %check%==0x00 echo ERROR: Partion Table entry 4 already exists! && pause --wait=3 && configfile /menu.lst
map %ISO% (0xff)
map --hook
root (0xff)
chainloader (0xff)
title systemrescuecd-x86-3.1.2.iso\nSystemRescueCD
set ISO=/systemrescuecd-x86-3.1.2.iso
find --set-root %ISO%
parttype (hd0,3) | set check=
set check=%check:~-5,4%
if %check%==0x00 partnew (hd0,3) 0x00 %ISO%
if NOT %check%==0x00 echo ERROR: Partion Table entry 4 already exists! && pause --wait=3 && configfile /menu.lst
map %ISO% (0xff)
map --hook
root (0xff)
chainloader (0xff)
# - - - - - - - - END OF GENERIC ISO EXAMPLES - - - - - #
#load a gzipped floppy disk image (convert to .gz using gzip or 7Zip)
title MSDOS 6.22 using chainloader from gz file
find --set-root /dos622.ima.gz
map --mem /dos622.ima.gz (fd0)
map --hook
rootnoverify (fd0)
chainloader (fd0)+1
title PLD RescueCD - Linux RCDx86_298.iso\nhttp://rescuecd.pld-linux.org/
find --set-root /RCDx86_298.iso
map /RCDx86_298.iso (hd32)
map --hook
root (hd32)
chainloader (hd32)
# ActiveBootDisk (pe 3.1 based)
# extract the two files _bootDisk.ini and BOOTDISK.KEY from ISO and place in the root of the drive first!
title Active@ Boot Disk 6.5
map /ISO/ActiveBootDisk.ISO (0xff) || map --mem /ISO/ActiveBootDisk.ISO (0xff)
map --hook
root (0xff)
chainloader (0xff) || chainloader (0xff)/BOOTMGR
#Error 43: The BPB hidden_sectors should not be zero for a hard-disk partition boot sector
#See Wonko's post at http://reboot.pro/topic/16429-easy2boot-development-discussion/page-30#entry185771
# This error may be found when attempting to chainload to a partition - e.g. chainloader (hd0,1)+1
# The following code assumes partition 4 is empty/unused
set BOOTPTN=(hd0,1)
debug normal
parttype (hd0,3) | set check=
set check=%check:~-5,4%
#create new ptn4 (also fixes up the BPB hidden sectors in %BOOTPTN%)
if %check%==0x00 partnew (hd0,3) 0x00 %BOOTPTN%
# remove new partition entry
if %check%==0x00 partnew (hd0,3) 0 0 0 0
if NOT %check%==0x00 echo ERROR: Partion Table entry 4 already exists! && pause --wait=3 && configfile /menu.lst
chainloader %BOOTPTN%+0x50
boot
#MEMDISK is not really needed as the built in grub4dos CHAINLOADER command is similar in action and allows for direct drive remapping, However, it is useful in being able to load .zip files which chainloader cannot (chainloader can load .gz compressed files however).
#MEMDISK allows booting legacy operating systems. MEMDISK can boot floppy images, hard disk images and some ISO images see here for details.
#MEMDISK simulates a disk by claiming a chunk of high memory for the disk and a (very small - 2K typical) chunk of low (DOS) memory for the driver itself, then hooking the INT 13h (disk driver) and INT 15h (memory query) BIOS interrupts. The memdisk binary can be obtained from the syslinux project here .
#initrd loads the specified file into the ramdrive (initialise ramdrive)
title Memtest 86+
kernel /memdisk raw
initrd /memtest.img
title MEMTEST86+ iso using memdisk
kernel /memdisk iso
initrd /mt410.iso
#use raw mode (raw access to protected mode)
title MSDOS floppy disk image
kernel /memdisk raw
initrd /dos622.ima
title MSDOS 6.22 using memdisk raw from zip file of floppy disk image (1.44MB image compressed as .zip file)
kernel /memdisk raw
initrd /dos622.zip
title MSDOS 6.22 using memdisk raw from .gz file of floppy disk image (1.44MB image compressed as .gz file)
kernel /memdisk raw
initrd /dos622.ima.gz
# http://www.mepis.org/
# Mount the SimplyMEPIS-1.5G_11.0.12_32.iso file
# Copy the mepis folder to your USB drive
# Copy the boot folder to the inside of the mepis folder
# USB Drive folders:
# /mepis has large mepis file
# /mepis/boot has initrd.gz and vmlinuz
# Use either "root" for user and "root" for password, or "demo" for user and "demo" for password.
title SimpleMEPIS Default
kernel /mepis/boot/vmlinuz vga=788 quiet splash
initrd /mepis/boot/initrd.gz
title SimpleMEPIS AUFS_rw_filesystem\nNothing is stored on the flash drive, all changes are temporary
kernel /mepis/boot/vmlinuz vga=788 quiet splash aufs
initrd /mepis/boot/initrd.gz
# Look for specific BIOS or System type
#0x680 = D000:0 - the start of the DMI and BIOS area
#0x180 = 30000h - the length of the search, so it will finish at F000:FFFFh - i.e. end of BIOS area
#So if the DMI string was 'EeePC' on one system and 'DELL' on another, then use
set SYSTEM=
if "%SYSTEM%"=="" cat --locate=\x45\x65\x65\x50\x43 (md)0x680+0x180 > nul && set SYSTEM=EeePC
if "%SYSTEM%"=="" cat --locate=\x44\x45\x4C (md)0x680+0x180 > nul && set SYSTEM=DELL
<more here>
if "%SYSTEM%"=="" pause --wait=3 ERROR: No BIOS strings found that I recognise! && configfile /menu.lst
echo "%SYSTEM%" found:
# Next line displays the hex string and following bytes for user interest!
cat --hex --length=0x80 --skip=%?% (md)0x680+0x180
if "%SYSTEM%"=="DELL" set MYISO=/dell.iso
if "%SYSTEM%"=="EeePC" set MYISO=/EeePC.iso
<more here>
# now do stuff with the correct ISO!
# check mainboard MAC address - e.g. MAC address is 00:23:54:58:32:6b
cat --locate=\x00\x23\x54\x58\x32\x6b (md)0x680+0x180 || pause --wait=3 WRONG SYSTEM! && halt
# Lock a menu entry to a MAC address (so that this will only work on one system which has MAC address = 00:23:54:58:32:6b!)
# Use SCANBIOH.exe DOS tool from Beta Downloads page to find the correct memory location that contains your MAC address
# You can also use this technique to match against your mainboard serial number or model type
# See http://reboot.pro/14640/page__view__findpost__p__130251 for details.
title Run MSSS only on my EeePC!
#prevent checkrange from printing contents on the screen so it looks neater!
debug off
#check for the MAC address in BIOS RAM area
checkrange 0x58542300 read 0xf0757 && checkrange 0x6b32 calc *0xf075b & 0xffff && echo OK - MAC ADDRESS 00:23:54:58:32:6b FOUND
#if not correct MAC address then reload menu
checkrange 0x58542300 read 0xf0757 || pause --wait=3 INCORRECT MAC ADDRESS! && exit
checkrange 0x6b32 calc *0xf075b & 0xffff || pause --wait=3 INCORRECT MAC ADDRESS! && exit
#now do any commands as normal
find --set-root /MSSS_Media32.iso
map /MSSS_Media32.iso (0xff) || map /MSSS_Media32.iso (0xff)
map --hook
chainloader (0xff)
#Note: if you want to check a byte at any memory location use:
checkrange 0x32 calc *0xf075b & 0xff || pause --wait=3 INCORRECT MAC ADDRESS! && exit
#Note: if you want to check a word at any memory location use:
checkrange 0x6b32 calc *0xf075b & 0xffff || pause --wait=3 INCORRECT MAC ADDRESS! && exit
#Note: if you want to check a 3 bytes at any memory location use:
checkrange 0x066b32 calc *0xf075b & 0xffffff || pause --wait=3 INCORRECT MAC ADDRESS! && exit
#Note: if you want to check a DWORD (4 bytes) at any memory location use:
checkrange 0x05066b32 read 0xf075b || pause --wait=3 INCORRECT MAC ADDRESS! && exit
or
checkrange 0x05066b32 calc *0xf075b & 0xFFFFffff || pause --wait=3 INCORRECT MAC ADDRESS! && exit
checkrange can also be used to check a range of values - e.g. checkrange 0x00:0x10 or checkrange 0x00,0x02,0x04
#is64bit - checks 64bit and PAE status
#returns value bit0=PAE supported, bit1=AMD64/Intel64 supported"
iftitle [checkrange 0,1 is64bit] 32bit system
#(menu here)
iftitle [checkrange 2,3 is64bit] 64bit system
#(menu here)
iftitle [checkrange 1,3 is64bit] PAE system
#(menu here)
iftitle [checkrange 0,1 read 0x82Bc] 32Bit system
#(menu here)
#Example for calc
calc *0x6000=0x8280+4 - put result of adding 0x8280 + 4 into memory at 0x6000
#Norton Bootable Recovery Tool
#The ISO is WinPE 3 based. To make it work, it needs to find the NBRTSTRT.exe file in the root of the drive
#and also you need to copy two folders from inside the ISO to your USB drive, so as well as the ISO file on your USb drive you need:
#
#\NBRTSTRT.exe
#\Sources\DRIVERS
#\Sources\SYMANTEC_NBRT
title NBRT
map /_ISO/NBRT.iso (0xff)
map --hook
chainloader (0xff)
#COMODO RESCUE DISK - antivirus cleaning tool inc. COMODO CLEANING ESSENTIALS
#Copy the contents of the ISO /boot folder to /comodo/boot on the USB drive
splashimage /comodo/boot/grub/SPLASH_X.GZ
title Comodo Rescue Disk 1.1.232326.14
kernel /comodo/boot/bzimage
initrd /comodo/boot/rootfs.gz
title Comodo Rescue Disk 1.1.232326.14
map /comodo_rescue_disk_1.1.232326.14.iso (0xff)
map --hook
root (0xff)
kernel /boot/bzimage
initrd /boot/rootfs.gz
title DaRT70Win764\nMS DART ISO
set MYISO=dartwin70.iso
map /images/%MYISO% (0xff)
map (hd0) (hd1)
map (hd1) (hd0)
map --hook
chainloader (0xff)/BOOTMGR || chainloader (0xff)
Click here to see the 'God-on-a-stick' menu.lst and folder contents for lots more examples of menu.lst entries.
For booting ISOs with persistence see the example .mnu files in the Easy2Boot download.
FAT+NTFS TWO Partition USB Drive
This code will swap over the grub4dos ptn table first two entries to make the NTFS ptn the first ptn (if it is not already)
title set NTFS as 1st partition
debug off
# This always sets the first partition to NTFS (if NTFS+FAT32 in ptn table)
# first get MBR into two areas of memory
dd if=(hd0) of=(md)0x3000+1 count=1
dd if=(hd0) of=(md)0x3100+1 count=1
echo PTN TABLE WAS...
cat --hex --length=32 --skip=446 (md)0x3000+1
#Now overwrite 2nd copy with tables from 1st copy but change the order...
set /A m=*0x6001be
write 0x6201ce %m%
set /A m=*0x6001c2
write 0x6201d2 %m%
set /A m=*0x6001c6
write 0x6201d6 %m%
set /A m=*0x6001ca
write 0x6201da %m%
set /A m=*0x6001ce
write 0x6201be %m%
set /A m=*0x6001d2
write 0x6201c2 %m%
set /A m=*0x6001d6
write 0x6201c6 %m%
set /A m=*0x6001da
write 0x6201ca %m%
echo NEW TABLE WILL BE...
cat --hex --length=32 --skip=446 (md)0x3100+1
# get value of original 1st ptn ID = 7=NTFS
set /A n=*0x6001c2 & 0xff
if /i "%n%"=="0x7" echo 1st ptn entry is already NTFS - NO NEED TO SWAP!
set /A m=*0x6201c2 & 0xff
if not /i "%m%"=="0x7" echo WARNING: NO NTFS FOUND IN 1st OR 2nd PARTITION (1st=%n% 2nd=%m%)!
set ASK=N && echo
if /i "%m%"=="0x7" set /p ASK=OK TO RE-ORDER PTN TABLE AND WRITE MBR TO (hd0) (Y/N)? :
if /i "%m%"=="0x7" if not /i "%ASK%"=="Y" configfile /menu.lst
if /i "%ASK%"=="Y" dd if=(md)0x3100+1 of=(hd0) count=1
if /i "%m%"=="0x7" clear && echo -e \r\nNOW PTN TABLE SET TO...
if /i "%m%"=="0x7" cat --hex --length=0x20 --skip=0x1be (hd0)+1
pause
# Now boot or whatever!
#PROXMOX 4.4
# place ISO and this .mnu file in \_ISO folder.
# vga=791 is required or will get Installation aborted error.
# lvm2root must be set to the E2B USB drive partition which is mapped to the ISO
# Partition 4 table entry will be destroyed and must be empty/unused
iftitle [if exist /ISO/proxmox-ve_4.4-eb2d6f1e-2.iso] proxmox 4.4\n You must enter the correct USB device name.
set ISO=proxmox-ve_4.4-eb2d6f1e-2.iso
#don't echo of values on screen
debug off
#make sure all drives are unmapped as this can change the count
#reset hdcount in BIOS to default
map --unhook
map --unmap=0:0xff
root (bd)
#set number of hard disks in system from BIOS location 475h
set /a HDCNT=*0x475 & 0xff > nul
# cannot install to E2B drive!
if %HDCNT%==1 pause --wait=3 ERROR: No internal hard disk detected && configfile /menu.lst
# add 0x60 so drive 1 = a, drive 2 = b
set /A ldisk=%HDCNT%+0x60 > nul
call echo -e sd\%ldisk:~1,4% | set ldisk=
echo %HDCNT% disks in system including USB drive
echo
echo -e I guess the USB drive will be $[0104]%ldisk%
echo
set /p ldisk=Enter linux device name for USB drive, e.g. sdb or sdc (A=abort, ESC=%ldisk%) :
echo
# must start with sd
if not "%ldisk:~0,2%"=="sd" pause --wait=3 ERROR: Must begin with "sd" && configfile /menu.lst
pause --wait=3 Will use /dev/%ldisk%4 for ISO file
# WARNING: partition 4 MUST be free! The next line overwrites it!
partnew (hd0,3) 0x0 /ISO/%ISO%
map /ISO/%ISO% (0xff)
map --hook
root (0xff)
kernel /boot/linux26 ro ramdisk_size=16777216 lvm2root=/dev/%ldisk%4 vga=791 rw quiet splash=silent
initrd /boot/initrd.img
boot
Example menu to map a disk image to the next available device
title boot from dos image as next available hard disk
find --set-root /DOS.img
map /DOS.img (hd) || map --mem /DOS.img (hd)
map --hook
root (hd-1,0)
chainloader /IO.SYS
clear
#turn off echo of values on screen
debug off
#make sure all drives are unmapped as this can change the count
#reset hdcount in BIOS to default
map --unhook
map --unmap=0:0xff
root (bd)
#set number of hard disks in system from BIOS location 475h
set /a HDCNT=*0x475 & 0xff
set NEWHD=(hd%HDCNT%)
if %HDCNT%>=2 echo %HDCNT% Hard disks in system, next free drive is %NEWHD% && pause --wait=3
title map floppy image as next hd
map --unmap=0:0xff
map --unhook
#set number of hard disks in system from BIOS location 475h
set /a HDCNT=*0x475 & 0xff
set NEWHD=(hd%HDCNT%)
if %HDCNT%>=2 echo %HDCNT% Hard disks in system, next free drive is %NEWHD% && pause --wait=3
echo Mapping /fd002880.ima as %NEWHD%
map /fd002880.ima %NEWHD%
map --hook
root %NEWHD%
ls %NEWHD%/
pause
chainloader %NEWHD%+1
title Map as a new HD from test.ima from PXE root folder
set /a hdn=*0x475 & 0xff
map --mem (pd)/test.ima (hd%hdn%)
map --hook
OR just use:
map --mem (pd)/test.ima (hd)
map --hook
Example to find correct 'devices' switch (using 'fh' to include floppy disks when there is no floppy drive can cause long delays of 5 minutes or more!)
#bit 0 in 410 indicates a boot floppy is present
set /a FLP=*0x410 & 0x01
echo There is a boot floppy present && pause
set dev=h
if %FLP%>=1 set dev=fh && set ignore=--ignore-floppies
find --set-root %ignore% --ignore-cd /ntldr
#alternatively use
find --set-root --devices=%dev% /myfile.iso
#add rest of commands here...