Difference between revisions of "Hacking Linux for chumby"

From Chumby Wiki
Jump to: navigation, search
(Link to documentation about existing CLI scripts and software. Can someone please put this on the Main Page under Hacks/Software?)
Line 1: Line 1:
 +
=Existing Software=
 +
See existing [[Chumby Software Applications, Scripts and Tools]] already on your Chumby stock linux distro.
 +
 
=Alpha Prototype=
 
=Alpha Prototype=
 
The Alpha Prototype chumby runs a modified linux 2.4.20 kernel.
 
The Alpha Prototype chumby runs a modified linux 2.4.20 kernel.

Revision as of 09:18, 16 November 2007

Existing Software

See existing Chumby Software Applications, Scripts and Tools already on your Chumby stock linux distro.

Alpha Prototype

The Alpha Prototype chumby runs a modified linux 2.4.20 kernel.

Compiling the Kernel

First, install the GCC Toolchain.

In order to build the chumby kernel, you can download the kernel source from chumby_kernel.tgz and build by doing the following:

# mkdir kernel
# cd kernel
# tar zxvf chumby_kernel.tgz
# make menuconfig
(then immediately exit and save the config)
# make dep
# make Image

If all goes well, you should end up with an uncompressed kernel image at arch/arm/boot/Image.

Ironforge

The "Ironforge" production chumby runs Linux 2.6.16 kernel.

First install the GNU Toolchain

In order to build the chumby kernel, you can download the kernel source from linux-2.6.16-chumby-1.0.tar.gz and build by doing the following:

# mkdir kernel
# cd kernel
# tar zxvf linux-2.6.16-chumby-1.0.tar.gz
# cd linux-2.6.16
# ARCH=arm BOARD=mx21ads CROSS_COMPILE=arm-linux- make menuconfig
(then immediately exit and save the config)
# ARCH=arm BOARD=mx21ads CROSS_COMPILE=arm-linux- make

If all goes well, you should end up with a compressed kernel image at arch/arm/boot/zImage and all of loadable kernel modules under the drivers directory.

To find all of the drivers, run:

# find drivers -name *.ko

Which should return:

drivers/media/video/cpia.ko
drivers/media/video/compat_ioctl32.ko
drivers/media/video/cpia_usb.ko
drivers/media/video/v4l1-compat.ko
drivers/media/video/v4l2-common.ko
drivers/media/video/videodev.ko
drivers/bluetooth/hci_usb.ko
drivers/bluetooth/hci_vhci.ko
drivers/video/console/bitblit.ko
drivers/video/console/fbcon.ko
drivers/video/console/fbcon_ccw.ko
drivers/video/console/fbcon_cw.ko
drivers/video/console/fbcon_rotate.ko
drivers/video/console/fbcon_ud.ko
drivers/video/console/font.ko
drivers/video/console/softcursor.ko
drivers/char/chumby_accel.ko
drivers/char/chumby_sense1.ko
drivers/char/chumby_timer.ko
drivers/usb/media/dsbr100.ko
drivers/usb/net/asix.ko
drivers/usb/net/cdc_ether.ko
drivers/usb/net/pegasus.ko
drivers/usb/net/usbnet.ko
drivers/usb/input/usbhid.ko
drivers/mfd/chumby-tsc2100.ko

Flashing the Kernel

Directions provided by Bunnie in the forum: [1]

If you want to reflash the kernel image, the quickest way to do it is to take the zImage file,
zip it, and copy it to a VFAT formatted USB disk, and put it in a directory called "update2" by
the name of k1.bin.zip. Even though zImage is already compressed, you need to zip it again because
of the way the firmware updater works.

Then, power on the chumby while pressing the touchscreen, and continue pressing it until you get
into special options. Select the menu option to update the chumby, and then select update via USB. 
This will take the kernel image on the USB disk and flash it into the device.

You can completely destroy the k1.bin.zip image and recover from this, because this update mechanism
uses its own copy of the kernel that is unaffected by the update to k1.bin.zip.

If you want to add more apps, you need to build a cramfs filesystem, and use a similar procedure
but name the resulting cramfs binary image rfs1.bin.zip, also stuck in the update2/ directory on
the USB drive.