Update: Just now, after composing this page, I decided to check the DL forums and what do I see! DL 3.0 Final is out there and it does support USB! Hilarious for me 🙂 I’m between being a bit sad I spent this time hacking the RC3 Beta, but happy of the new advertised feature of actually mounting the USB in Read/Write mode (which mean keeping the data between reboots!). Yey, way to go richs!

Sorry people, I guess this tutorial is outdated 10 mins after posting it online.

As I saw many visits from Dreamlinux’s forums [hello guys! sweet and clean distribution :)], I decided to investigate how to create a DreamLinux 3.0 beta bootable USB Pen Drive.

The steps are these:

a) You should format the stick (for Windows you might look up a tool named “HP USB Format Tool”). It seems that this tool is elusive, some time you find it on one page, then it’s gone. Search for it. Also, Stick should be able to hold at least 1Gb (I am using a Kingston DataTraveler II, 2Gb).

Warning: If you do not know that formating the stick will cause all data on the stick to be lost, then you should not continue this tutorial!

b) Grab syslinux.cfg, initrd.gz, logo.jpg and vesamenu.c32. You also need syslinux utility as well as an utility to unpack the .iso file (I use WinRAR).

c) Unpack the .ISO file (I used DL3.0-RC3.iso) onto the USB Stick.

d) Put syslinux.cfg, logo.jpg and vesamenu.c32 on the USB Stick’s filesystem root (on Windows that is directly on the X:\ directory, where X is the USB stick’s drive letter given by Windows after you inserted the stick).

e) Overwrite the X:\boot\initrd.gz file with the one above.

f) Unpack syslinux distribution somewhere on your hard drive, go to the win32 directory and issue the command:

syslinux.exe -ma X:

That’s it, it will work now, if you boot from your USB.

Why replacing initrd ?

The issues were related to initrd.gz, but given the beta stage of the distro, I understand if there were some issues.

Here they are, hopefully they will be integrated in the final release:

a) USB Modules were not yet loaded even if this was 3 lines of code away 🙂 which makes me think that the programmers do have the intents of offering bootable USB images:

b) There was some bugs when enumerating the USB (other than CDROM in fact) devices:

Instead of

for scsi_cdrom in /dev/sd[a-b][0-16] /dev/scd[0-16] /dev/sr[0-16]; do
if [ -e “$scsi_cdrom” ]; then
CDROM_LIST=$scsi_cdrom
fi
done

The better way is:

for scsi_cdrom in /dev/sd[a-d][0-16] /dev/scd[0-16] /dev/sr[0-16]; do
if [ -e “$scsi_cdrom” ]; then
CDROM_LIST=”$CDROM_LIST $scsi_cdrom”
fi
done

I have a SATA raid, another USB stick I keep for backup purposes and the DL USB Stick which will get resolved to /dev/sdd1 in fact.

Second, on the linuxrc file inside the initrd.gz archive, I added support for a bootusb parameter (ideea taken from DL 2.2) which, when passed as argument to the kernel, will first attempt to search the image on USB devices, and then fail back to CDROMs if the USB devices are not found.

So that’s it. You don’t have to know how to replace linuxrc file inside initrd.gz, you can just overwrite the one on the ISO with the one I provided (and which only has the linuxrc file updated per the explanations above).

I tested on my laptop (HP 6720s with Intel C2D T5470) and on my desktop which right now is an Intel E6400 + Asus P5B Deluxe. I see no reason Dreamlinux can’t boot on your hardware unless your hardware is broken, can’t boot from USB or worse!! there are bugs on linuxrc file 0:-) in which case please use the forum here and let me know.

Thank you,