Hacking Linux for chumby
Contents
Existing Software
See existing Chumby Software Applications, Scripts and Tools already on your Chumby stock linux distro.
Building and Installing a new chumby kernel
Building the kernel
The following instructions will compile the Linux 2.6.16 kernel shipped with chumby firmware version 1.5:
mkdir kernel cd kernel wget http://files.chumby.com/source/ironforge/build396/align.pl wget http://files.chumby.com/source/ironforge/build565/linux-2.6.16-chumby-1.5.0.tar.gz tar zxvf linux-2.6.16-chumby-1.5.0.tar.gz cd linux-2.6.16-chumby-1.5.0 ARCH=arm BOARD=mx21ads CROSS_COMPILE=arm-linux- make perl ../align.pl arch/arm/boot/zImage zip k1.bin.zip arch/arm/boot/zImage
Be sure you build with the correct toolchain!
Installing the kernel image
- create an update2 directory on the root of a USB storage drive
- copy k1.bin.zip to the update2 directory on the USB storage drive
- insert the USB storage drive into chumby
- hold the touch screen down and power on the chumby (keep holding the screen for 5 seconds)
- once the device has booted into special options mode, click Install updates
- click Install from USB flash drive
DEPRECATED
Alpha Prototype
The Alpha Prototype chumby runs a modified linux 2.4.20 kernel.
Compiling the Kernel
First, install the GCC Toolchain (gcc 3.3.2) - this toolchain is only for use with the prototypes.
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 (gcc 4.1.2) - this toolchain is for use with the production units. Older toolchains may not work.
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, NOT as root, but as a normal user.
$ mkdir kernel $ cd kernel $ tar zxvf linux-2.6.16-chumby-1.0.tar.gz $ cd linux-2.6.16 $ cp arch/arm/configs/mx21ads_defconfig .config $ ARCH=arm BOARD=mx21ads CROSS_COMPILE=arm-linux- make oldconfig (select 'Y' when asked if you wish to build in the 224 color Turbochef logo) $ 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.
By default, there are only 3 drivers built with this configuration:
$ find drivers -name *.ko
Which should return:
drivers/char/chumby_accel.ko drivers/char/chumby_sense1.ko drivers/char/chumby_timer.ko drivers/mfd/chumby-tsc2100.ko
Warning, this configuration will not get you a working kernel! Do not use just yet...
You might want to enable more modules to get the recommended:
# 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