Got a Canon compact camera? Then you ought to give CHDK a try. This alternative firmware turns your humble Canon point-and-shoot camera into a powerful photographic tool.
Installing CHDK onto an SD card using a Linux machine is a three-step procedure. First, if you plan to install CHDK on a card larger than 4GB, you must create two partitions on it: a small FAT16 partition for booting CHDK and a FAT32 partition that takes up the rest of the available space for storing photos. The best tool to do this is the GParted utility which is available in the software repositories of pretty much all mainstream Linux distributions. On Ubuntu and its derivatives as well as Debian-based distros, you can install GParted by running the apt-get install gparted command as root. Launch then GParted and create the two required partitions. To make it easier to identify the partitions, you might want to assign labels to them (e.g., CHDK for the FAT16 partition and CANON for the FAT32 partition).
Next step is to make the partitioned card bootable. To do this, open the terminal and run the following command as root:
echo -n BOOTDISK | sudo dd bs=1 count=8 seek=64 of=/dev/sdbx
Replace the sdbx part with the actual name of the small FAT16 partition. To find out the exact name of the partition, run the mount command which returns a list of all mounted partitions.
Next, you need to find out the firmware version of your camera. Create two empty text files called ver.req and vers.reg and save them in the root of the FAT16 partition. Insert the card into your camera, and put the camera into the Playback mode. Press and hold the FUNC SET button, then press DISP to display the firmware version. Download the CHDK package for your camera model and firmware version, and unpack the contents of the downloaded archive into the root of the FAT16 partition. Lock the card (this is important!), insert it into your camera, press the Power On button, and you should see the CHDK splash screen.