Monday, 22 October 2012

Avira Rescue, ImDisk and RockRidge!

Recently, I was asked to look at making Avira Rescue ISO boot from a bootable grub4dos USB drive (see Tutorial here). It turns out that most of the Avira Rescue iso's content actually needs to be in 'flat file' form (i.e. exist as files and folders on the USB drive) and so I needed to extract the contents of the iso file to the USB drive.

Now my favourite tool for this is ImDisk to mount the iso as a virtual drive volume and then copy over the files and folders that I think (guess!) that Avira might need. However, when I did this I found a problem - the resulting Avira linux boot pen did not fully boot to the Avira GUI desktop and stopped at ' Press Alt+F7 to return to the graphical User Interface '.



After much head-scratching, I found that the problem was caused by the case of the files. All of the files appeared in the ImDisk virtual drive as upper-case file names and folder names, yet when the Avira iso file contents were displayed by the 7Zip GUI, most of the files were lower-case. If I extracted all the files from the Avira ISO using 7Zip and copied them to the USB stick, it booted fine, up to the full GUI.


I realised that this must be due the ISO standard that the Avira ISO file was made with and an interesting discussion evolved on my favourite boot forum reboot.pro (see here).

It turns out that we just can't trust the Windows CD filesystem as it does not support the RockRidge enhancements used by *nix OS's. This means that utilities like ImDisk and SlySoft Virtual CloneDrive may shows filenames as all uppercase if a non-Joliet (i.e. RockRidge only) ISO is mounted under Windows.

Windows 8 supports the mounting of ISO files natively, no utility is needed - but it still does not support RockRidge! (come on MS - this is 2012!).

The moral of this story is, if you are extracting files from a linux ISO file, don't use a virtual drive to mount the ISO because the filenames 'case' cannot be trusted - instead use an extraction utility like 7Zip which will detect that the ISO is a RockRidge ISO and use the correct case for the files and folders.