Monday, November 2, 2009

How to create OpenSolaris Live USB Stick using 'dd' utility

Several months ago, I wrote tiny utility which enable to make OpenSolaris Live USB stick on Windows box. However some of expert user asked how to create Live USB stick with 'dd' utility on one's UNIX-like OS.

OpenSolaris's USB image file ( which often distributed with '.usb' extention ) is just 'dd' image of root partition. But it is not enough to create bootable USB stick since do not contain required data such as MBR, Grub and Partition Tables.

'usbcopy' shell-script on OpenSolaris generate such data using 'grub', 'fdisk' and 'format' command internally. I have to generate using other way on Windows box.

When developing v0.02 of USB Creator, I made some pattern of required data ( I call this 'head image' ) and flash it before USB image. Header images included in may be useful for 'dd'-command user.

Please try to flash following procedure below;
  1. Download .usb image ( this example is for Ohta-san's b123 image )
  2. $ wget -O osol-1002-b123-x86-WC-EeePC.usb
  3. Download ( not v0.03 !! ) and extract
  4. $ wget '' -O
    $ unzip
    inflating: OsolLiveUSB002/headimg/0.dat
    inflating: OsolLiveUSB002/headimg/1.dat
    inflating: OsolLiveUSB002/headimg/2.dat
    inflating: OsolLiveUSB002/headimg/3.dat
    inflating: OsolLiveUSB002/OsolLiveUSB.exe
  5. De-compress header images
  6. $ gzip -dc OsolLiveUSB002/headimg/0.dat > 1gb_headimg.dat
    $ gzip -dc OsolLiveUSB002/headimg/1.dat > 2gb_headimg.dat
    $ gzip -dc OsolLiveUSB002/headimg/2.dat > 4gb_headimg.dat
    $ gzip -dc OsolLiveUSB002/headimg/3.dat > 8gb_headimg.dat
  7. Flash your USB stick with concatinating header and .usb image
  8. I used 2GB-Stick of head image this time;
    (become superuser)
    # cat 2gb_headimg.dat osol-1002-b123-x86-WC-EeePC.usb | \
    dd of=(USB Device) (Additional Options)


  1. ah.. so that's why simply dd'ing the image to disk didn't work, thanks :)

  2. thank you very much, i've been looking all over the net for this.

    by the way, i simply can't understand why the folks at genunix don' generate dd'able usb images..

  3. Hi jhol, Robert, casaubon,

    Thanks for visiting my blog.
    And I am happy that you got over some difficulty :)

  4. you're a lifesaver. i finally was able to install opensolaris. unfortunately i found that it is not yet ready for laptop usage. it's at the stage where linux was some five years ago. wpa and bt mouse was a pain to get working. i think i will stick with linux for a few years more until it (hopefully) catches up.

  5. Greeting from Hungary, nice job...

  6. And what if we have USB drives with less than 1GB?

    I am trying to do this with a 256MB drive and used the 1GB header. I hope this works.

  7. Thanks for posting this blog! Yes i think i will stick with Linux for a few years more until it (hopefully) catches up.

  8. Thanks so much, I've been struggling with this problem for quite a while now without being able to come up with a solution. Everything's fine now, thanks again.

  9. Could u also prepare a head file for 16gb usb sticks?

  10. Thanks for this nice utility. :) I don't know how Oracle expects someone to install from the USB flash image if Solaris and usbcopy aren't already installed. I was able to use your instructions to install Solaris Express 2010.11 from Windows 7, though it wouldn't work if I used the USB003 utility: I had to use USB002.

  11. done all through this program, but on the flash drive did not appear distribution

  12. Interesting. Do you know how to create the files (FAT32) for a boot with syslinux? (on usb).
    Reason: I have an usb with different distros (knoppix, TCL) and would like to add milax to the list.
    It will help in 1 week in order to show to my brothers in law in Ireland the taste of linux (and not paying buggy OSs).

  13. Hi ... thanks for this info.

    I'm trying to install Dilos or illumos via usb on a net book starting from Debian Linux. I can't say I have found it easy. With Debian I needed a hybrid-iso file ... I'm beginning to think that I'd need the same with Unix.

    Thanks again!