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 OsolLiveUSB002.zip 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 http://kohju.justplayer.com/docs/mirror/OpenSolaris/eeepc-special/osol-1002-b123-x86-WC-EeePC.usb -O osol-1002-b123-x86-WC-EeePC.usb
  3. Download OsolLiveUSB002.zip ( not v0.03 !! ) and extract
  4. $ wget 'http://devzone.sites.pid0.org/OpenSolaris/opensolaris-liveusb-creator/OsolLiveUSB002.zip?attredirects=0' -O OsolLiveUSB002.zip
    ...
    $ unzip OsolLiveUSB002.zip
    Archive: OsolLiveUSB002.zip
    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)