ottaky@ottaky.com
 
HTML OK
CSS OK
 
 
ottaky.com supports..
ORG
no2id

Puppy Linux on the SanDisk Cruzer Micro

Author: sjb (Steve Brown) - ottaky@ottaky.com
Date: 16th February 2006
See also: QEMU-Puppy
Syslinux
QEMU
Puppy Linux
SanDisk's product page

A brief HOWTO

click for larger

NB
I'm not claiming that any of this is my own work ;-) This guide is basically an amalgamation of the documentation from the sites listed above and a quick recap of how I got QEMU-Puppy working on my flash drive. Questions regarding the individual packages used should be directed to the authors or maintainers of those packages as it's unlikely that I will be able to help you.

Before I start, I'd like to say a big "thank you" to Erik Veenstra for putting QEMU-Puppy together and, in effect, taking all the hard work out of getting this to work. Erik's software is very clever - it can boot Puppy Linux using Syslinux so that it runs directly on the PC or, alternatively, it can run Puppy Linux in an emulated environment on top of Windows or Linux. That's 3 different ways to run the same copy of Linux which should cover pretty much every situation where you want to do such a thing.

Installation

First off, you'll probably want to format your flash drive. Mine came with some software pre-installed that I'll never use, so I just deleted it - you can, of course, copy it somewhere safe if you feel you might have a use for it in the future. The flash drive needs to be formatted as FAT (not FAT32, not NTFS, but FAT). The easiest way to do this is to plug the flash drive into a Windows PC and use Window's format applet. A "quick" format is sufficient for our needs. If you can't face using windows you can always use mkfs.

From this point forward I will assume that you're running Linux and that you have mounted your flash drive somewhere. In my case the actual device used by the flash drive was /dev/sda1 and I mounted it on /media/usb but it may be different for you, so remember to substitute your mountpoint for /media/usb and your device location for /dev/sda1.

Now it's time to download the packages required ..

'tar zxvf' the qemu-puppy package somewhere convenient. Erik's page contains a manifest that describes the purpose of all of the files. Since my flash drive is a 1GB model, I opted to use a different pup100 file from the default. If you decompress pup100s.tar.gz you'll end up with 4 new files ..

pup100.0032M
pup100.0064M
pup100.0128M
pup100.0256M

I decided to use the 256MB version, so ..

mv pup100.0256M pup100
rm pup100.0*
rm pup100s.tar.gz

Next you need to copy all of the files to your flash drive ..

cp * /media/usb/
sync

When that's complete, you need to make the drive bootable. One of the files you just copied to your flash drive, syslinux.com, is a DOS utility to make the flash drive bootable by copying the Syslinux bootloader to the MBR, but I had no joy whatsoever getting this to work in Windows XP or Windows 2000. Luckily, you've already downloaded a tool to do this that will work in Linux. Decompress the syslinux package you downloaded earlier, and ..

./syslinux-3.11/unix/syslinux /dev/sda1

.. and that, in theory, is pretty much all there is to it. Your drive should now boot on a PC that allows USB booting, and you should be able to run Puppy in Windows by clicking on puppy.exe and in Linux by typing '. ./puppy.sh' (see Erik's page for more details).

Erik's page also has a couple of very useful scripts on it, 'pup100checkspace' and 'pup100commit' which you'll almost definitely want to put onto your flash drive and run before exiting Puppy. I put them both into /root/my-applications/bin/. I also created another script called 'shutdown' in the same directory which calls pup100commit and then issues a poweroff command to synch everything and then exit Puppy.

If you're curious, after the installation my 1GB drive showed 328MB used, 649MB free with a total capacity of 977MB.

In use

To boot from the flash drive you'll need a PC that supports booting from USB (obviously) and you'll probably have to mess around in your BIOS settings to get the PC to boot from USB before the HDD. The actual boot process takes a while, but once Puppy is running it's suprisingly quick.

To run Puppy on top of Windows you need to insert the flash drive and wait for Windows to recognise it. Once the drive is recognised you just need to click on the puppy.exe file. You can't miss it - it's the one with the puppy icon ;-)

To run Puppy on top of another Linux session, mount the flash drive, open an xterm and navigate to the root of the drive before typing ..

. ./puppy.sh

.. the reasons for which are explained on Erik's web page.

As mentioned previously and explained on Erik's page, you should remember to commit any changes that might be pending before exiting Puppy - I'm not fully up to speed on Puppy internals so I don't know if that should happen automatically, but it won't hurt (much) to commit everything before powering down.

I've created a disc image (using dd) of my drive in a near virgin state so that I can restore if necessary. If you encounter huge problems getting Puppy to work for you, and you have an FTP server with 76MB of spare capacity, I'd be happy to share the image. But, remember, the image is for my flash drive (1GB SanDisk Cruzer) and probably won't be much use to you unless you have something pretty similar.