Sunday, 19 June 2016

SWITCH_E2B.exe bug found!

For a number of months now I have been experiencing odd issues with .imgPTN files, especially with syslinux-bootable images. Sometimes they worked fine and I could MBR-boot to syslinux using the first MBR-Boot option and also the other 1 or 2 syslinux boot options, but on other occasions, when I made a new .imgPTN file, I found they would only boot via the syslinux PBR option (#2) and not the default boot option #1 or the syslinux PBR.BIN backup file option #3.

Menus #1 and #3 may not work until you use grub4dos to select the .imgPTN file instead of SWITCH_E2B.exe.

Whilst setting up the slackware+persistence tests in the previous blog, I came across this behaviour again and I have finally found out what is going on (after nearly going crazy)!

I realised that if I used SWITCH_E2B.exe to switch to a new .imgPTN file that had never been booted via grub4dos and E2B, then I had this boot problem in the CSM menu. However, if I switched to that .imgPTN file (once!) using the E2B grub4dos menu, then from then on it would work using SWITCH_E2B.exe and using the E2B menu system.

The reason for this is that the E2B menu uses grub4dos and the partnew command which modifies the partition boot record hidden sector values (at locations 001C-001F if you are curious). SWITCH_E2B.exe does not do this.

So you must always use the E2B menu system first to switch in your .imgPTN. You only need to do this once - after that you can use SWITCH_E2B.exe if you wish.

Also, if you 'move' the .imgPTN file's position on the E2B disk (e.g. defrag it or copy it), it will obviously not alter the hidden sector values inside each .imgPTN file. So you will need to boot using the E2B menu (once) to make them work.

I will look at fixing SWITCH_E2B.exe so that it also modifies these hidden sector values.

P.S. SWITCH_E2B_v1.0.11.zip is now available from the Alternate Downloads area and has the hidden sector update fix.