Q: How can I complie Linux kernel for Zaurus ? A: Follow the below instruction. You would need the Linux kernel source for the Sharp Zaurus and the cross-compiling environment both available at Sharp's web site (http://more.sbc.co.jp/slj/index.asp). There also is a good documentation to build the kernel (http://more.sbc.co.jp/slj/source/build_image112.asp). The cross-compiling environment can be built on RedHat Linux. You will need a CompactFlash memory card (>32MB) to update the kernel. The procedure is as follows: 1. Update your FlashROM image (binary) to 1.12 or 1.13 2. Prepare the cross-compiling environment. 3. Get the kernel source. 4. Configure and build the kernel. 5. Transfer the kernel image to FlashROM. 6. Enable the IPv6 code Please note that the newly built kernel does NOT support SD cards as described in the Sharp's document. The following is the detailed procedures: 1. Update your FlashROM image (binary) to 1.12 or 1.13 The latest FlashROM image and the kernel source code is different from the shipped FlashROM image. I recommend that you first update the binary FlashROM image to the latest version which matches the version of the kernel you are going to build. The FlashROM image can be downloaded from http://more.sbc.co.jp/slj/download.asp The update procedure is documented in http://more.sbc.co.jp/slj/download/readme/readme_romimage112.asp Please read it carefully. If you use the Windows driver (Intellisync or Qtopia Desktop), you will also need to update these drivers. 2. Prepare the cross-compiling environment. The procedures and the links to necessary tools are available in http://more.sbc.co.jp/slj/source/build_image112.asp In short, you will need http://more.sbc.co.jp/slj/tool/gcc-cross-sa1100-2.95.2-0.i386.rpm http://more.sbc.co.jp/slj/tool/glibc-arm-2.2.2-0.i386.rpm http://more.sbc.co.jp/slj/tool/binutils-cross-arm-2.11.2-0.i386.rpm Install them with 'rpm -i' command, and include /opt/Embedix/tools/bin to your PATH. 3. Get the kernel source. You can either download the entire source http://more.sbc.co.jp/slj/source/linux-sl5000d-20020318.tar.bz2 or the patch to ARM-Linux kernel http://more.sbc.co.jp/slj/source/linux-2.4.6-rmk1-np2-embedix-20011228-sl5000d-20020318.gz As describe in the Sharp's document, you will also need linux-2.4.6.tar.bz2 patch-2.4.6-rmk1.gz diff-2.4.6-rmk1-np2.gz if you are going to use the patch. 4. Configure and build the kernel. As the document says, please configure the kernel as follows: $ cd linux $ make menuconfig --> Load an Alternate Configuration File input "arch/arm/def-configs/collie" select "ok" select "Exit" Do you wish to save your kernel configuration? -> Yes The default configuration does not enable IPv6, so you will also need to enable it. $ make menuconfig --> Networking options --> The IPv6 protocol (EXPERIMENTAL) You can either embed the IPv6 protocol stack to the kernel (displayed as '<*>') or make it separated as a loadable module (displayed as ''). I tried the latter. Now, you can build the kernel. $ make dep; make clean; make zImage I you are going to build the IPv6 code as a module, please do $ make modules also. 5. Transfer the kernel image to FlashROM. Copy the built kernel (linux/arm/boot/zImage) to an empty CompactFlash card. The update procedure is same as the binary update procedure except that you use the 'zImage' file instead of 'ROMIMAGE' file. Please refer http://more.sbc.co.jp/slj/download/readme/readme_romimage112.asp 6. Enable the IPv6 code If you have embedded the IPv6 protocol stack to the kernel, you are ready. You can see 'inet6 addr' lines with ifconfig command. If you have built as a module, you should copy the module and load it. Copy the linux/net/ipv6/ipv6.o to CompactFlash card, and copy it to the Zaurus's built-in ROM. # mkdir -p /lib/modules/2.4.6-rmk1-np2-embedix/kernel/net/ipv6/ # cp /mnt/cf/ipv6.o /lib/modules/2.4.6-rmk1-np2-embedix/kernel/net/ipv6/ # depmod -a # modprobe ipv6 Documented by Shinji Kobayashi