Monday 13 May 2013

grub4dos and environment variables

Whilst developing Easy2Boot, I found that I kept running out of variables space.
grub4dos has a meagre limit of only 60 variables  (and up to 512 bytes per value). Try to define any more than 60 and it simply refuses to put them into the environment.
I devised some nifty grub4dos code that would count how many variables I had left (see below).
This led me to realise that I could not use variables to store the names of all the files in a folder - thus reducing the number of files I could allow in a folder.
So I had to re-write Easy2Boot so that it used system memory to store the variables and then find and retrieve the value of a specified variable from memory when I wanted it!

VarsLeft.g4b
=========
!BAT
# grub4dos can have only 60 variables defined (512 bytes max per value)
# set *   will clear all variables - to find the max limit use set * followed by calling this batch file.

# take a copy of the current environment
setlocal

# Now lets fill up the environment until it fails!

# n is our counter
set n=1
:LOOP
# any more than 600 and it is probably not worth worrying about!
if "%n%"=="600" goto :end
set AAA%n%=FFF
# on first loop AAA1=FFF
# now we need to read back AAA1 by writing a small batch file in memory - e.g.
# !BAT
# set B=%AAA1%
echo -e !BAT\nset B=%^AAA%n%%% > (md)0x3000+1
# now call the batch file we just made to set B to the value of AAA1
call (md)0x3000+1
if not "%B%"=="FFF" echo Approx. %n% Variables left! && exit
# increment n for next loop
set /a n=%n%+1  > nul
goto :LOOP

# restore the copy of the current environment
# this is not really required as 'exit' also restore the environment
endlocal
# quit!
exit



Easy2Boot BETA29v5 available

This version has some more tidying up.
All headings can now be set in the Menu.lst (of course, you should not change menu.lst but copy it to MyMenu.lst and it will be used instead!).
The Footer help colour doesn't need to be the same colour as the heading now - it can be set in mymenu.lst.

I have also included two optional test files (delete them if you don't want them!):
blue.bmp.gz - a background picture
TEST_MyMenu.lst - rename this to MyMenu.lst to see how you can change the colours, background and menu position, menu headings and footer text, etc. (see screenshot below).

As well as some text colours being changed, the headings have been padded out to be central (ish) on the menu box. Also, the console background is dark blue to match the bitmap colour better. Try it for some inspiration!

Note with the TEST_MyMenu.lst file, the menu has been moved to the centre. This causes problems with the help text just under the menu as grub4dos can only print help text up to column 79 before it wraps the text to the next line - see below.


Easy2Boot BETA29v4 available

I had a brain wave last night (I don't get many of them these days!).
The main change in v4 is that I don't use environment variables to store the filenames any more. This caused a limitation as to the number of files you could have, especially if you used lots of variables in mymenu.lst to change the default menu text to suit your own preference/language. The more variables you defined or files you had, the more limited was the number of files displayed!

You can have as many .xml and .key files as you like now (i.e. that will fit on the screen before scrolling off = approx 34 in 800x600 mode!)
It may also mean I can add more variables for the menu title variables so that you can change the headings for all the menus in mymenu.lst.
I also changed some filenames from grub\xx.mnu to xxx.hdr to avoid confusing them with proper .mnu files.
Still a few more revisions to go, I feel, but it is nearly finished!

BETA29v3 - bugfix for FASTLOAD

If you enable FASTLOAD then when you hit the Return to Main Menu entry it bombs out to the grub4dos command line. Now fixed.

Sunday 12 May 2013

Easy2Boot v1 BETA29 v2 now available

No major bugfixes.
\Autounattend.xml files now 100K as it seems there are some big custom xml files out there!
Various tweaks and tidy ups.
Win8 and 2012 Pick_from_a_list.key file has lots of keys added.
I think this is almost getting ready to fully release  (he says hopefully...)
Please update and test!
Let me have any bug reports, niggles, text changes, feedback on new 800x600 size (go back to 640?), colours OK, etc.
Is menu.lst easy to understand?
I will NOT make any changes once it is fully released (except for major bugs) - though I may release Beta versions after the full release.

Easy2Boot v1.0  will be the first full release
v1.0a  will be a beta release if any non-essential tweaks are required (a small letter indicates a beta), then 1.0b, then 1.0c, then 1.0d until full release which will be v1.1.

Thanks
Steve

BETA29v2 has been re-uploaded (7pm Sunday 12 May) so please re-download. You can now have spaces in filenames without them appearing as File\ with\ a\ space.key! I have renamed the pick_from_a_list.key file now to CHOOSE FROM A LIST.key to make it stand out more. I have also added lots more product keys to the 2 files (win8/svr2012). Plus lots of small tweaks, text changes, etc.
Now added a 'NO KEY  (choose a version to install).xml' file for Win8 and SVR2012 - so you can choose what SKU you want that is contained inside the install.wim file once it boots to Setup.

Saturday 11 May 2013

Easy2Boot BETA29 now available!

This version now has grub4dos menus for the Vista/7/8/2K8/2012 menus.
The .iso files will now be listed in a grub4dos menu instead of the console window.

In addition, you can create a .txt file if you want a nice name to appear in the menu instead of the filename - just like for the MainMenu and AUTO folder functionality.

e.g. two files:
Windows_8_64_Preview.iso
Windows_8_64_Preview.txt

contents of Windows_8_64_Preview.txt:
title Windows 8 64-bit Developers Preview\n Use this for a demonstration of Windows 8


In addition there is a bugfix (thanks halikus!) for anyone using an NTFS formatted Easy2Boot drive.

Also, you can now have all your product keys in one file. Look in the Win8 and SVR2012 folders for a Pick_from_a_list.key file. You can edit this file to add all of your keys. Here is what it looks like:


!BAT
echo 1=46V6N-VCBYR-KT9KT-6Y4YF-QGJYH  Windows 8 Core
echo 2=V7C3N-3W6CM-PDKR2-KW8DQ-RJMRD  Windows 8 Pro
echo 3=XKY4K-2NRWR-8F6P2-448RF-CRYQH  Enterprise 90Day Eval
echo
set /p ask=Choose a key :
if "%ask%"=="1" set KEY=46V6N-VCBYR-KT9KT-6Y4YF-QGJYH
if "%ask%"=="2" set KEY=V7C3N-3W6CM-PDKR2-KW8DQ-RJMRD
if "%ask%"=="3" set KEY=XKY4K-2NRWR-8F6P2-448RF-CRYQH


Just add more lines or change the ones that are there already.
If you have just a few keys then make .key files for each one (see sample files) and delete the Pick_from_a_list.key file. If you only want to pick from a list, delete all the other .key files to avoid confusion.

With the help of several people and after testing myself for most of the day (!!!phew!!!), I hope all the bugs have now mostly been ironed out. Test scenarios include (I have not done every one of these in every combination!):

  • Easy2Boot USB Flash FAT32
  • Easy2Boot USB Flash NTFS
  • Easy2Boot USB HDD FAT32 + NTFS Helper flash drive
  • Easy2Boot USB HDD NTFS + FAT32 Helper flash drive

    For each of these....
  • XP install using 2-Step firadisk process
  • XP install using WinPE
  • Vista install with Easy2Boot unattend.xml file
  • Vista install with sample xml file
  • <ditto> for 7 and SVR2K8R2
  • <ditto> for 8 and SVR2012 + pick a key
  • <ditto> for 8 and SVR2012 + use user xml
  • <ditto> for 8 and SVR2012 + enter a key manually








Downloads are under here








Easy2Boot BETA28v4 - major bugfix!

If you are using a flash drive for Easy2boot and testing Vista or later OS installs - it won't work!
Please use v4! Sorry for this oversight. There were major changes and I tested using a USB HDD+Flash combination only which worked!
There are still some bugs to fix when using your own unattend.xml - v5 to come shortly!

BETA28v5 now here: fix user unattend.xml issu + fast reload of main menu.

Friday 10 May 2013

Easy2Boot BETA28v1

I have completely changed the Windows install menus and method.
There has been a drastic re-write for all Windows installs!
This makes it much more flexible and no special name are needed and you can have as many different ISOs as you have room for.

  • For Win XP Firadisk installs - just put your XP ISOs in the XP folder. 
  • For Win XP WinPE installs - add any unattend.txt files you want to the XP folder
  • For Vista/SVR2K8/7 - add your ISOs and unattend.xml files (optional)
  • For Win8/Server2012 - add your ISOs and unattend.xml and Product Key files

This version seems to work OK, so please try it out!

Product Key files are actually small grub4dos batch files, so make sure you get them right (set must be lower case)
!BAT
set KEY=<29 character key goes here>

You can find the new version at the bottom of this page (in the downloads area) as usual.

Note: all your unattend.xml files MUST have the <RunSynchronous> section from the Sample.xml file provided added to them (in the windowsPE settings section). Otherwise you won't see the blue text console window appear (Repair Y/N?) and the 'DVD' will not be found when Setup runs.

BETA28v2 - poss. fix for hanging at '/AutoUnattend.xml and /Unattend.xml files...' which I occasionally get and then the symptom disappears again! Increased size of .xml files in case user has a large xml. Added a few more alternative Win8 product key files.

BETA28v3 - fix my stupid typo mistake in XP+WinPE install (it listed win7 files not XP files!) - Thanks halikus for spotting it!
Also now suppress graphics bmp load and graphicsmode change on reload of main menu.
Few tweaks to menu.lst. Now in 800x600 mode, if you change GMODE to 640 then the menu box and help text position will change automatically too! QRUN.g4b has been tweaked and new file extensions added which may be useful.

BETA28v4 - major error corrected (thanks Tomas). The Autounattend.xml on the Easy2Boot USB drive was blank when doing Win installs!

BETA28v5 - Similar bug in Win7/Vista installs now fixed.

BETA28v6 - problem with menu item 0 'set default and timeout' fixed.

Thursday 9 May 2013

Easy2Boot BETA27 v3 - IMPORTANT BUG FIX!

Win7/8 and probably Vista/SVR2K8R2 and SVR2012 installs may get an 'Invalid Unattend.xml' error near the very end of installation after the 1st reboot. This was due to a blank \Unattend.xml file in the root of the USB flash drive. This version fixes the problem by writing blank <> sections into it.
Many thanks to Fabrizio (and Antonio) who kept insisting that there was a problem!
BETA27v3 is here.  Please update E2B!

Monday 6 May 2013

Easy2Boot BETA26 (fixes 'bad unattend.xml' error)

Found a bug!
If you run a Win8 install and then abort it and then run a Win7 install, you may get a 'bad unattend.xml' error from Win7 Setup before you can choose an OS. This was caused by the AutoUnattend.xml file on the flash drive not being wiped before the new Win7 text was added in. This left some old text at the end of the file and so the xml format was invalid (it had extra <> sections at the end which were not properly closed with a > symbol).
This is now fixed in BETA26.
BETA26v2 Win7_32_sp0 bugfix!
BETA26v5 - speeded up file enumeration - mainmenu should load faster now!
BETA26v6 - no functional change that you will notice, but now you can set a password in mymenu.lst to prevent users from being able to edit the menu entries in grub4dos by pressing 'e' or getting to the grub4dos command line by pressing 'c'. This avoids users getting confused if they accidentally hit e or c. More details here.