Create Bootable Hirens CD on USB using Linux

Overview

This howto outlines the procedures for creating a bootable version of Hirens on a USB drive using Linux. The problem arises when attempting to create the the bootable USB using the traditional (and generally reliable) isohybrid + dd approach. There is one fine which needs to be renamed, and in order to do that, we must unpack the ISO, make that change, and then repack the ISO prior to creating our bootable thumb drive.

Procedure

After downloading Hirens Boot CD, unzip the file, and mount the ISO image:

unzip Hirens-BootCD-15.2.zip
mount -t iso9660 -o loop Hirens-BootCD-15.2.iso /mnt/myCD

Now copy the contents of that mounted image to a temporary directory (the mounted ISO is read-only):

cd /tmp/someDir
rsync -av /mnt/myCD/* .

Your resulting file directory listing will look something like this:

autorun.inf  changes.txt  HBCD  HBCDMenu.cmd  HBCD.txt

Navigate to the HBCD directory, which will have the following contents:

cd
ls
Boot  Dos  grldr  HBCDMenu.exe  isolinux.bin  menu-custom.lst  menu.lst  Programs  isolinux.cfg  XP

Now merely change the file “isolinux.cfg” to “syslinux.cfg”:

mv isolinux.cfg syslinux.cfg

That should do it for the changes. Now repackage the ISO from the root directory where you unzipped the files:

cd /tmp/myCD
mkisofs -o /tmp/myHIRENS.iso -b HBCD/isolinux.bin -c HBCD/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -J -R -V "Hirens Boot CD" .

Now you can follow the procedure for creating a bootable USB drive on Linux (lets assume our USB drive is /dev/sdd):

cd /tmp
isohybrid myHIRENS.iso
dd if=myHIRENS.iso of=/dev/sdd
sync

Now test, you should be done!

13 thoughts on “Create Bootable Hirens CD on USB using Linux”

  1. May be it is a stupid question: why not just copy the iso to the usb using dd and then mount the usb and rename the file?

  2. The moment I mount the .iso, the mount point becomes unreadable (ls: cannot open directory ‘/mnt/myCD’: Permission denied). I can’t rsync from it into my ~/tmpHirens directory. I’ve tried chown on the mount point…it changes until I mount the .iso, then becomes unreadable again. Any ideas?

    1. Are you doing the mount as “root” and what permissions/ownership are set on /mnt/myCD when the iso is mounted? As what user are you attempting to do the rsync and does it differ from the mount owner after the iso is mounted?

      You might also try adding explicit read and permissions to the mount command, e.g. mount -t iso9660 -o loop,umask=000 Hirens-BootCD-15.2.iso /mnt/myCD

      1. I have tried the mount both as myself and as root (via sudo). I created the mount point (/mnt/myCD) as root, and later used chown to change the ownership to me. I’ve tried the rsync with and without sudo. Once the ISO is mounted (using your suggestion in the original article) the ownership changes to “nobody:401” and the permissions are “rwx——“, even though prior to the mount, the permissions for /mnt/myCD are “rwxrwxr–“.

        When I try your suggestion of adding explicit read permissions to the mount command it fails as follows:
        john@MainWkstn:~$ sudo mount -t iso9660 -o loop,umask=000 Hirens-BootCD-15.2.iso /mnt/myCD
        mount: /mnt/myCD: wrong fs type, bad option, bad superblock on /dev/loop41, missing codepage or helper program, or other error.

        I don’t own a “Windows” machine (except the one I plan to use Hiren’s on to break into), or I would would just use the provided utilities to create the bootable USB in Windows.

        That last might sound a little nefarious. I bought a laptop from my employer at the beginning of 2018. They were selling it because no one remembered the password and when I suggested Hiren’s they didn’t want to bother. I figured I’d buy it, break in using Hiren’s, and give it to someone who could use it. I now have someone I’d like to give it to and I’m trying to get in.

  3. Update: I think I may have solved it. I used uid=1000,gid=1000 in the mount options.
    Now the ownership is john:john and I can get an ls of the root of the mounted iso.

    I need to do more experimenting (try the rsync) before I know for sure, but wanted to let you know of the progress, lest you spend any time thinking about this if I’ve solved it.

  4. Confirmed: Solved by using the uid and gid parameters in the options. I have a working, bootable, USB stick with Hiren’s 15.2 on it.

  5. I just tried this a little earlier. It more or less works, but all the programs inside the Mini XP environment are missing. Only drives X (MiniXP itself) and B (a RAM drive?) show up. There’s no “HBCD Menu” entry on top of the start menu as there should be.

    What might be causing this?

    1. There *should* be a folder “HBCD” on the drive that contains the programs. The current ISO (https://www.hirensbootcd.org/download/) does contain programs, although IIRC earlier versions of Hirens required the user to separately unzip an HBCD folder onto their USB – though that should no longer be necessary. Silly question – is the folder there when you do a browse of the contents? Also, is your thumb drive large enough (capacity)?

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.