Friday 8 August 2014

New .cfg file extension recognised by Easy2Boot

The new version 1.55 of E2B recognises the .cfg file extension which can be used for changing the 'theme' of E2B  (non-volatile, the change will be remembered on reboot).

Any .cfg files that are in a menu folder (e.g. \_ISO\MAINMENU or \_ISO\UTILITIES, etc.) will be enumerated and listed in the relevant menu.

The contents of the .cfg file should be the same as the contents of a valid MyE2B.cfg file.
When you select a .cfg file from the menu, QRUN.g4b runs and copies the contents of the file to the \_ISO\MyE2B.cfg file (which, of course, must be present).

The \_ISO\MyE2B.cfg file must be at least as big as your .cfg file.

To change the menu entry from just listing the filename+extension, you can make a .txt file for each .cfg file (containing a 'title' entry) in the usual way or use the 'set EXTOFF=1' line in the \_ISO\MyE2B.cfg file.

In this way you can switch to any 'theme' from a menu entry.


Jolene.cfg added to MAINMENU

To demo E2B menu capabilities or compare 'themes'  see http://www.easy2boot.com/configuring-e2b/demo-mode/ for ideas.

Thursday 7 August 2014

Add graphics adapter resolution auto-detection into Easy2Boot

You may want to display your E2B menu in the highest/best resolution possible.
For instance, some odd systems may not support 800x600 mode.

I always advise you to use the most common display resolution so that the menu will appear correctly on all systems. However, you can arrange E2B so that it will cope with a variety of different systems.

You will need a range of wallpaper bitmaps for each resolution (though in some cases the largest bitmap may work for smaller resolution displays).

Auto-Detect highest resolution and use correct wallpaper

The code below can be used in a \_ISO\MyE2B.cfg menu to auto-detect the highest resolution available and then set the graphicsmode and wallpaper for that resolution. 

Note that the position of the menu will remain the same (unless you also add extra code - e.g. if "%GMODE%"=="1024 768 24" set rstart=5) and so will the text colours, etc. See the Sample MyE2B.cfg file for an example.

So each wallpaper bitmap should be similar in colour and content because the menu position and text colours will not change.

# allow vbeprobe command to output text
debug 1
# list all available BIOS graphics adpapter modes
vbeprobe > (md)0x220+5
# turn off text output for future commands
debug off
# look for 640, 800 and 1024 modes - be careful to only use x24 or x32 modes for full colour bitmaps
cat --locate=", 640x480x24"  (md)0x220+5 > nul && set GMODE=640 480 24 && set MYWBMPGZ=/_ISO/nice640.bmp.gz
cat --locate=", 800x600x24"  (md)0x220+5 > nul && set GMODE=800 600 24 && set MYWBMPGZ=/_ISO/nice800.bmp.gz
cat --locate=", 1024x768x24" (md)0x220+5 > nul && set GMODE=1024 768 24 && set MYWBMPGZ=/_ISO/nice1024.bmp.gz

# DELETE THESE TWO LINES ONCE IT IS WORKING
cat (md)0x220+5
echo GMODE=%GMODE%  MYWBMPGZ=%MYWBMPGZ% && pause

Add a Change Language menu entry to Easy2Boot

This Change_Language.mnu file will be in the Sample mnu Files folder in v1.55 and later versions.
It allows the user to temporarily change the language strings (until reboot).

Using this and the Change_Theme.mnu, you can demo E2B to your colleagues!

You can modify it by adding or removing languages or write it in a different language other than English (save the file as UTF-8 if using non ASCII characters).

title Change the E2B Language\n Change the standard E2B menus to a different language
echo
echo Change Language
echo -e ===============
echo
echo Only the standard E2B menu entries, headings and some prompts will change.
echo  Note: This does not change the E2B Header or the Footer help text
echo
echo Please choose a language...
echo
echo 1 English
echo 2 Spanish
echo 3 German
echo 4 Brazilian Portuguese
echo 5 Simplified Chinese
echo 6 Traditional Chinese
echo
set ask=
set /p ask=Please enter a number : 
set LANG=ENG
if "%ask%"=="2" set LANG=SPANISH
if "%ask%"=="3" set LANG=GERMAN
if "%ask%"=="4" set LANG=PORTU_BRAZIL
if "%ask%"=="5" set LANG=SIMP_CHINESE
if "%ask%"=="6" set LANG=TRAD_CHINESE

configfile /%grub%/Menu.lst



Note that you can set a default language in your \_ISO\MyE2B.cfg file, but it must be set using a line like this - otherwise the Change Language menu will not work:

if "%LANG%"=="" set LANG=SPANISH



Add a 'Change Theme' menu to Easy2Boot

It is fairly easy to add a .mnu file which allows the user to choose a different background wallpaper:

title Change Wallpaper\n Choose a new E2B menu background
set CHOSEN=
call /%grub%/pickafile.g4b /_ISO .gz
if "%CHOSEN%"=="" configfile (md)0xa000+0x50
clear
splashimage /_ISO/%CHOSEN%
configfile (md)0xa000+0x50

The .gz files must contain a bitmap of exactly the correct resolution size - e.g. 800x600  (801x588 will NOT work!). The actual existing menu text and border positions, etc. is not changed however, so the images that you use should work with the same settings used by E2B as the default (or as used in your \_ISO\MyE2B.cfg file). So you will need to pick your images carefully (plain colour ones work best).


Today, devdevadev asked me if he could have a menu to switch between themes. You can use this to demo E2B, e.g. switch backgrounds, language, font, colours, etc.

A menu would prompt you to pick a .cfg file as shown below:



Here is the .mnu file that I came up with:

# Place all MyE2B.cfg and wallpaper files in \_ISO\mythemes and all rename .cfg files (amd any message GFXBoot file if more than one)
# Edit each \_ISO\mythemes\xx.cfg file so background or GFX has correct path
# e.g. set MYWBMPGZ=/_ISO/mythemes/stripedflat.bmp.gz  OR set GFX=mythemes/message  (note: no /_ISO/ for GFX path)
# Rename \_ISO\Sample_MyE2B.cfg to \_ISO\MyE2B.cfg (must be >1KB and larger than largest xxx.cfg file)
# For the default E2B theme, make a \_ISO\mythemes\Default_Theme.cfg file with just !BAT on the first line
# \_ISO\MyE2B.cfg file must be contiguous due to bug in grub4dos!

title Change Theme\n Choose a new E2B Theme

if not exist /_ISO/MyE2B.cfg echo ERROR: Please create a large \_ISO\MyE2B.cfg file && pause && configfile (md)0xa000+0x50
set CHOSEN=
errorcheck on
debug normal
graphicsmode 3
clear
echo Pick a Theme...
call /%grub%/pickafile.g4b /_ISO/mythemes .cfg
if "%CHOSEN%"=="" set DONEMENU= && configfile ()/%grub%/menu.lst
echo
echo Overwriting \_ISO\MyE2B.cfg file with \_ISO\mythemes\%CHOSEN%...
# fill (rd) with 0's , 0x82d0 is rd-base mem address, Fn24 is memset - fill memory  <addr> <string> <size>
map (md)0x300+200 (rd) > nul ;; read 0x82d0 > nul ;; call Fn.24  %@retval% 0x20  102400 > nul  
dd if=(rd)+1 of=()/_ISO/MYE2B.cfg > nul
if exist ()/_ISO/mythemes/%CHOSEN% dd if=()/_ISO/mythemes/%CHOSEN% of=()/_ISO/MyE2B.cfg > nul
if exist ()/_ISO/mythemes/%CHOSEN% chainloader /grldr
boot

I tested this using these files in the E2B \_ISO\mythemes folder :


The 'graphicsmode 3switch is required only if you use GFX Boot menus such as the sample Jolene_GFX.mnu. You can delete it if you don't have any GFXBoot .cfg files. If you do use GFXBoot menus, you will also need to copy all the \_ISO\docs\GFXSubMenu Files .mnu files into \_ISO\MAINMENU or else some menu entries will be missing from the GFXBoot menu when selected (this applies to any GFXBoot menu).

Both .mnu files will be in the Sample mnu Files folder in v1.55 of E2B and I will also put them in the Alternate Download area for a while too.

v1.55 will have the mythemes folder and a selection of .cfg files to choose from. You will just need to copy a $Default E2B Menu.cfg file to \_ISO\MyE2B.cfg and the .mnu file to \_ISO\MAINMENU.

Notes: due to a bug I just discovered in grub4dos, make sure you run WinContig on the E2B drive to make all files contiguous. It seems there is a problem with grub4dos and NTFS volumes if this is not done (if the target file is fragmented, then only the first 8096 bytes are actually copied when using dd on some files!).

And due to another bug, the full path for the bitmap file needs to be kept shorter than approx 64 characters as the splashimage command cannot handle long pathnames!



Saturday 2 August 2014

Easy2Boot v1.54 released


Improvements over 1.53 are:
  1. Bugfix for forcing file extension using qrun.g4b and .isowb files
  2. memtest86 32-bit UEFI boot file added - if you UEFI-boot a 32-bit or 64-bit system from a FAT32 E2B USB drive it will now run memtest86 
  3. Make_E2B_USB_Drive.cmd now checks for Admin rights and also removes EFI folder to save space if you formatted it as NTFS (as you cannot directly UEFI-boot from an NTFS partition). 
  4. New .imgPTNAUTO file extension supported (no user prompt to switch partitions). 
  5. AUTOCSM variable in MyE2B.cfg will now cause all .imgPTN files to auto-run, just as if they all had the .imgPTNAUTO file extension.
  6. Added a 'Measure USB Performance' menu entry into Utilities menu to allow testing of BIOSes with slow USB access
  7. Bugfix for ISOs with long filenames ending in .isoWB. 
  8. Sample WinBuilder .mnu changed for same fix as above. 
  9. New grub4dos 0.4.5c grldr version. 
  10. File enumeration speed improvements - should make for faster booting on systems with slow BIOSes. 
  11. linux script fmt.sh added to format a USB drive as an E2B drive under linux.

Slow to load the Main Menu?

Several people have reported in the E2B forum that E2B takes several minutes to get to the Main menu even when using a fast USB 3.0 flash drive. This is due to the particular system BIOS having very poor quality USB 'drivers' which makes USB communication very slow. Because E2B needs to access all files in the \_ISO\MAINMENU folders and \_ISO\WINDOWS folders several times during start-up, this can result in a long wait on systems with these slow BIOSes. The speed does not depend on how fast the CPU is or how fast the USB drive is (though that can affect timings), it depends on how well written the USB driver code is in the BIOS (good code will use interrupts and DMA, bad quality code will use polling which can cause long delays as each USB bus 'message' is sent or received). Because BIOS vendors tend to use the same code modules for different systems, you may find that the same 'family' always have poor USB performance (e.g. AWARD V6.00PG BIOS). Of course, once you boot to an Operating System  such as linux or Windows, the OS uses it's own USB drivers and we will get decent USB communication speeds.

You can now run a 'Measure USB Performance' test from the Utilities menu (which is really measuring the BIOS USB driver performance as well as USB speed!) to see how long 100 file accesses takes (and also 1000 file accesses). You should see that most systems take between 2-5 seconds for 100 accesses, but slow BIOSes can take 60 seconds!

Note that this test does not measure data transfer performance, just directory access speeds. Also, grub4dos produces faster results on FAT32 USB drives than on NTFS drives, so if comparing times between different USB drives, always use the same formatting for E2B.
Virtual Box + E2B on a USB HDD (100lp=0.8 seconds)

An indication of a BIOS problem, is that booting to E2B using the RMPrepUSB - QEMU button (which is normally much slower than a real system) is faster than when booting on the real 'bad' system using the system's BIOS USB code.

QEMU is normally slower than a real system.
QEMU + E2B on a slow USB Flash drive - 100 loops=16 seconds
On an EeePC (an average BIOS), the same USB drive - 100 loops=3 seconds.

To check for a bad BIOS, boot to E2B on the 'bad' system, and then switch to grub4dos 0.4.6a (it is listed in the Main menu) and then load the grub4dos 0.4.6a USB 2.0 chipset driver (which is listed in the Main menu after loading 0.4.6a). If the USB driver loads successfully and detects your USB drive, you can repeat the  'Measure USB Performance' test to see if file access speeds have improved. Typically, 100 accesses will take less than 2 seconds when the grub4dos USB driver is loaded (if it has recognised the USB 2.0 chipset in the system)! You can use a USB 3.0 drive, but it must be connected to a USB 2.0 port. Unfortunately, the grub4dos USB driver does not recognise all USB 2.0 chipsets/adapters and so it is pot luck whether it works or not on each system.


If the grub4dos USB driver does work, you can enable it on each E2B start-up by setting a variable in the \_ISO\MyE2B.cfg file (set GRUB_USB=Y).

If the grub4dos USB driver does not recognise your chipset or for tips on getting E2B to load faster, see the FAQ page.

If you already have an earlier version of E2B, just download the smaller 1.54 (non-DPMS) version and overwrite the files on your E2B USB drive.

Download page is here as usual

Please tick 'funny' 'interesting' or 'cool' or add a comment to let me know which posts you most enjoy.

grub4dos secrets!

As you may know, E2B and most of the Tutorials on www.rmprepusb.com use grub4dos. I have got to know grub4dos pretty well and I love it's flexibility. It has been improved quite a bit in the last few years (thanks chenall and tinybit!) and there have been some changes which have not been reflected in previous documentation or guides.

So, I just thought I would point out a few articles on the www.rmprepusb.com website which you might find useful:

Tutorial 21 is a grub4dos tutorial - useful for beginners and the more advanced user.

Tutorial 71 is about some of the programs which you can run under the grub4dos environment, such as wenv, hotkey, chkpci, fat and bios. It also describes how to run grub4dos batch files.

Tutorial 57 is about configuring grub4dos menus, hiding startup messages, making a silent splash screen, configuring 'secret' keys, etc.

Finally, Here you will find a page about the special hidden, secret and undocumented features of modern grub4dos, also what memory areas grub4dos uses, what internal variables are available, new commands and operators, the undocumented Fn. functions calls and lots of other goodies!

If you want to get a feel for grub4dos batch files, have a look at any of the Easy2Boot grub4dos batch files (they usually have a file extension of .g4b) - an advanced coding example can be found in the dpms2.g4b batch file if you are feeling really geeky!

Please tick 'funny' 'interesting' or 'cool' or add a comment to let me know which posts you most enjoy.

Linux script to install Easy2Boot to a USB drive

The latest version now includes a fmt.sh bash shell script which can be run from a linux OS and it will format a partition as FAT32 on the specified drive, copy over the E2B files and then run bootlace to install grub4dos. There is also a fmt_ntfs.sh script to create an NTFS E2B drive (v1.83+).

I have tested it in a VM (VBox)  using Linux Mint Debian Edition (64-bit) and Ubuntu 14.04.
Of course, there are lots of linux distros and it may not work on all of them.
As it formats a partition, you need to be careful when using it - you have been warned (but it has been independently tested here)!

The E2B download is on this page (linux users will probably not need to use the much larger DPMS version which you will only want if you are intending to install XP from E2B).

Once you have made your E2B FAT32 USB drive, just add all your ISO files to any one of the menu folders - e.g. \_ISO\MAINMENU or \_ISO\LINUX.

Alternatively, you can add your payload files into the downloaded files first, before you run the fmt.sh script. This is useful if you want to make a fresh, contiguous E2B drive and it is often quicker to make a fresh drive, rather than running defragfs to make any added/changed files contiguous.

Here is a screenshot of the script in action. You need to run chmod first before you can run the script.
The script can be found in the \_ISO\docs\linux_utils folder after extracting the files from the download (the folder also contains defragfs which you can use to make your ISO files contiguous - only works on FAT32 volumes).


Please tick 'funny' 'interesting' or 'cool' or add a comment to let me know which posts you most enjoy.

E2B v1.83+ includes a fmt_ntfs.sh script to format a drive as NTFS, plus the udefrag utility to defragment an NTFS drive. Read the ReadMe file for details.

Tuesday 29 July 2014

.imgPTNAUTO file extension is supported in E2B v1.54

E2B v1.54 will support the new .imgPTNAUTO file extension.

This differs from the .imgPTN file extension in that the user does not see the prompt to press a key to switch to the new partition; instead as soon as you select the menu entry, the partition is switched and you are immediately presented with the CSM menu.

For the other variations of .imgPTN files, you can make a special .mnu file, e.g. both of these will go straight to the CSM menu:

title Clonezilla AutoCSM
/%grub%/qrun.g4b    FORCE.imgPTNAUTO     $HOME$/clonezilla-live-2.2.2-37-i686-pae.imgPTN
boot

title Clonezilla AutoCSM
set AUTOCSM=1
/%grub%/qrun.g4b    $HOME$/clonezilla-live-2.2.2-37-i686-pae.imgPTNLBAa23
boot

You can also use  set AUTOCSM=1  in a \_ISO\MyE2B.cfg file to make all types of  .imgPTNxxxx files auto-run to the CSM menu.

The new QRUN.g4b file that supports this is available for download in the easy2boot Alternative download areas (see V1.54Beta.zip file).

Please tick 'funny' 'interesting' or 'cool' or add a comment to let me know which posts you most enjoy.

Monday 28 July 2014

UEFI-boot FatDog (Puppy) linux from your Easy2Boot USB drive

FatDog (a 64-bit version of Puppy) now supports 64-bit UEFI booting. Here is how to add it to Easy2Boot and enable UEFI booting.



1. Download FatDog64-631.iso from here
2. Extract the contents of the ISO to a new empty folder on your Windows hard drive - e.g. C:\temp\fatdog631
3. Extract all the files from the efiboot.img file to the C:\temp\fatdog631 folder - you should now have a C:\temp\fatdog631\efi folder (amongst others)...

4. (optional) delete the [BOOT] folder if there is one and the efiboot.img file
5. Drag-and-drop the C:\temp\fatdog631 folder onto the Windows Desktop MPI_FAT32 shortcut to make a .imgPTN file (see www.easy2boot.com - MakePartImage for details). if you want the persistence feature (Save file), increase the size of the FAT32 partition (e.g. add 500MB).

Note that if there is not enough space and Puppy creates a very small Save file, it will not boot until you delete the Save file!

6. Copy the .imgPTN file to your E2B USB drive's \_ISO\MAINMENU folder (or other menu folder)

You can now boot to E2B in the normal way and select the new .imgPTN file. Once you have switched partitions you can UEFI-boot from it (64-bit systems only) or use Clover to UEFI-boot directly or use the CSM menu to boot in MBR mode.

This is the first reFind UEFI boot screen


This is the next menu after pressing [ENTER]


Note: If you wish you can skip the reFind UEFI boot menu and also save some file space as follows (do this after step 4 above or in the partition image itself):

1. Delete all files and folders under the C:\temp\fatdog632\EFI\boot folder
2. Move the \EFI\grub2\grub2.efi file to the \EFI\boot folder
3. Rename the \EFI\boot\grub2.efi file to bootx64.efi

You should now have a single file under the \EFI folder called \EFI\boot\bootx64.efi. When you UEFI-boot, you will see the black menu screen shown above.

Please tick 'funny' 'interesting' or 'cool' or add a comment to let me know which posts you most enjoy.



64-bit and 32-bit UEFI for Puppy ISOs

You can drag-and-drop the ISO onto the MPI_FAT32 shortcut to convert it to a .imgPTN file (choose 37 for linux option). I used tahr-6.0.6-uefi.iso. Don't forget to increase the default size suggested if you want to use the Save feature and have persistence.

Switch to the .imgPTN file and the FAT32 partition.

Now extract the contents of the \efi.img file to the root of the E2B drive (i.e. the new FAT32 partition should now contain \EFI\BOOT\BOOTX64.EFI).

Now it will be UEFI-64-bit bootable.

To add the 32-bit grub boot file, download http://distro.ibibli...2.00-i686-1.txz

Extract the \grub2-efi32-2.00-i686-1.txz\grub2-efi32-2.00-i686-1.tar\usr\share\grub2-efi\grubia32.efi file using 7Zip

Copy it to the \EFI\BOOT folder and rename it to bootia32.EFI, so you have now...

  • \EFI\BOOT\bootia32.efi
  • \EFI\BOOT\bootx64.efi
  • \grub.cfg (should already be present)
Now you should be able to UEFI 32-bit/64-bit and MBR boot.





Saturday 26 July 2014

Have you tried PXE booting yet?

Nearly all modern computers support Network Booting (aka PXE booting).
You may have seen the option to boot from the network listed in the BIOS boot options of a BIOS Setup menu.

Tutorial #76 on my RMPrepUSB site describes how to set up SERVA which is an incredible Windows utility which can set up any Windows system to function as a PXE server (as well as a normal PC).

Normally, you would need to have access to the network DHCP server (the one that dishes out IP addresses to all the computers on the network) in order to configure PXE booting. The unique thing about SERVA is that you don't need to fiddle with the network DHCP server at all. This is a real boon for home users who usually use their router as the DHCP server. It is also a boon for companies who have a multi-server network and don't allow or want their employees to fiddle with the servers.


The home site for SERVA is here and it has lots of documentation on how to boot loads of different OS's - see here for a list of non-Windows payloads that you can network boot (includes Fedora, Ubuntu, Kali linux, Debian, android x86, GParted and even FreeDos for performing a BIOS upgrade).
To install Windows across the network, it is necessary to ensure that the OS you are booting to has the necessary network drivers included, because once it boots to the Windows PE environment, it will need to pull the install files across the network from the SERVA PC to copy onto the systems hard disk.
SERVA was featured in PC WELT recently (Issue 5 - pg.55)

The free 'Non-Supporter' home-trial version of SERVA can be used to install Windows across the network. The 'Supporter' version is 29.99 and has more features and is used by many companies - see here for a list.

Something to try during the Summer holidays perhaps?

Please tick 'funny' 'interesting' or 'cool' or add a comment to let me know which posts you most enjoy.