Hacking Linux for chumby

From Chumby Wiki
Revision as of 14:38, 23 May 2008 by Ksteele (Talk | contribs)

Jump to: navigation, search

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