WildBill's Blogdom

Mongo only pawn, in game of life.

Creating Your Own Multi-boot Linux Pendrive, Courtesy of DSL

| Comments

That’s Damn Small Linux, not Digital Subscriber Line. I’ve been asked by the fellas in #linux to detail how to create a nifty multi-bootable pendrive using Damn Small Linux, so here are the instructions.

What you need:

  • USB pendrive/keychain, 64MB or higher (preferably 128) BACKUP THE DATA ON THIS BEFORE YOU BEGIN. This process will wipe the contents of the pendrive.
  • A computer that’ll boot from USB and CDROM that has 100MB of disk free
  • The DSL ISO file and the DSL embedded ZIP file
  • Some patience (truck, good luck)

So, what you’ll want to do first is get the above two files from the DSL site. Leave the dsl-embedded.zip file alone for now. Burn the DSL ISO to a CD, you’ll need it to boot from. Once you’ve got that CD burned, reboot your system into Damn Small Linux by booting from the CD. Ensure your pendrive’s plugged into the system so that DSL can “see” it when it boots.

Now that you’re in DSL, you’re going to wipe the key and put the Linux bootloader on the key. This is done with the USB-HDD installation. Right click anywhere on the DSL desktop, select Apps -> Tools -> Install to USB pendrive -> For USB-HDD pendrive. Follow the prompts and DSL will be installed to the pendrive, and it’ll make the pendrive bootable.

That’s all fine and dandy, but we’re gonna put some icing on the cake now by putting an open source emulator (QEMU) on the disk and giving you a way to boot DSL within a window, on either Linux or Windows hosts. Yep, that means you can either use your pendrive as a bootable stick, or you can pop that sucker in someone’s PC and run the SAME DSL instance in a window, without installing any software. Pretty damn trick. Here’s how to do that:

Boot back to your computer’s regular OS, wherever you’d downloaded the dsl-embedded.zip file. Once you’re there, simply unzip the contents of dsl-embedded.zip to the root of your USB key, overwriting what the USB-HDD script did. All we really wanted USB-HDD for was for the boot sector.

Now that’s done, you’ll have a dsl-windows.bat and a dsl-linux.sh script in the root of your pendrive. Double click on either (depending on the host OS you’re in) and the appropriate QEMU instance will start, and DSL will boot inside the window, bridging the host OS’s network and everything. It comes in VERY handy to be able to do this - I was able to manage some sick servers for work from a friend’s PC, but was able to use my own trusted computing environment. :)

One last tidbit: the dsl-embedded.zip file alters things so that “native” USB boot under DSL doesn’t work out of the box. All you need to do when booting native is use the following boot options at the bootprompt:
boot: dsl fromhd=/dev/sda1 qemu frugal
That’ll let the kernel know that you’re booting from a qemu-enabled image on /dev/sda1. That’s it!