|
labs.beatcraft.com Updating kernel to 2.6.29 †Once you have prepared bootable microSD with kernel 2.6.24, replace its kernel with version 2.6.29. Obtaining kernel source †This time, we modify 2.6.29.4 kernel, so get it as follows: $ wget http://www.jp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.29.4.tar.bz2 $ tar xvfj linux-2.6.29.4.tar.bz2 Applying patch for bc9 †The kernel obtained from kernel.org (so called vanilla kernel) can't boot bc9 without modification, $ tar xvfz patch-kernel-2.6.29.4-bc9-r2.tgz $ ls linux-2.6.29.4 patch-kernel-2.6.29.4-bc9 $ cd linux-2.6.29.4 $ patch -p1 < ../patch-kernel-2.6.29.4-bc9/01-minimum.patch $ patch -p1 < ../patch-kernel-2.6.29.4-bc9/02-lcd.patch $ patch -p1 < ../patch-kernel-2.6.29.4-bc9/03-tsc.patch $ patch -p1 < ../patch-kernel-2.6.29.4-bc9/04-usb.patch $ patch -p1 < ../patch-kernel-2.6.29.4-bc9/05-proc-gpio.patch *snip* Rename patch applied linux-2.6.29.4 source directory. $ cd .. $ mv linux-2.6.29.4 linux-2.6.29.4-bc9 Preparing kernel build †In order to cross build patced kernel for bc9, prepare script as follows. $ vim setup_kernel_build.sh #!/bin/sh export PATH=/home/beat/gumstix/gumstix-oe/tmp/cross/bin:$PATH export ARCH=arm export CROSS_COMPILE=arm-angstrom-linux-gnueabi- $ source setup_kernel_build.sh After patch applied, there is linux-2.6.29.4-bc9/arch/arm/configs/bc9_defconfig. Copy this file as follows. $ cd linux-2.6.29.4-bc9 $ cp arch/arm/configs/bc9_defconfig .config This defconfig is already configured with make menuconfig in patched linux-2.6.29.4-bc9 kernel source. $ vim make-bc9-kernel.sh #!/bin/sh
export LANG=C
GUMSTIX_HOME="/home/beat/gumstix/gumstix-oe"
SYSMAP="./System.map"
TOOL_PREFIX="${GUMSTIX_HOME}/tmp/cross/bin/arm-angstrom-linux-gnueabi-"
DEPMOD="${TOOL_PREFIX}depmod-2.6"
OBJCOPY=${TOOL_PREFIX}objcopy
MKIMG=${GUMSTIX_HOME}/tmp/staging/i686-linux/bin/uboot-mkimage
UBOOT_ENTRYPOINT="a0008000"
MOD_WORKDIR="./mod_work"
make ARCH=arm CROSS_COMPILE=${TOOL_PREFIX} prepare
KERNREL=`make kernelrelease`
KERNVER=`make kernelversion`
KERNIMG="uImage-${KERNREL}.bin"
MODTGZ="modules-${KERNREL}.tgz"
KERNIMGLN="uImage-${KERNVER}-bc9.bin"
MODTGZLN="modules-${KERNVER}-bc9.tgz"
echo "### Cleanup"
rm -rf ${MOD_WORKDIR}
rm -f ${KERNIMG} ${MODTGZ} ${KERNIMGLN} ${MODTGZLN}
echo "### Build kernel"
make ARCH=arm CROSS_COMPILE=${TOOL_PREFIX}
if [ $? != 0 ]; then
echo "*** Failed to build kernel"
exit 1
fi
echo "### Make kernel image"
${OBJCOPY} -O binary -R .note -R .comment ¥
-S ./arch/arm/boot/compressed/vmlinux linux.bin
if [ $? != 0 ]; then
echo "*** Failed to make kernel image"
exit 1
fi
${MKIMG} -A arm -O linux -T kernel -C none -a ${UBOOT_ENTRYPOINT} ¥
-e ${UBOOT_ENTRYPOINT} -n "oe/verdex/arm" -d linux.bin ${KERNIMG}
if [ $? != 0 ]; then
echo "*** Failed to make kernel image"
exit 1
fi
ln -s ${KERNIMG} ${KERNIMGLN}
echo "### Install modules"
make ARCH=arm DEPMOD=echo INSTALL_MOD_PATH=${MOD_WORKDIR} modules_install
if [ $? != 0 ]; then
echo "*** Failed to modules_install"
exit 1
fi
${DEPMOD} -A -b ${MOD_WORKDIR} -F ${SYSMAP} ${KERNREL}
if [ $? != 0 ]; then
echo "*** Failed to depmod modules"
exit 1
fi
echo "### Make modules tar ball"
tar czvf ${MODTGZ} -C ${MOD_WORKDIR} lib
if [ $? != 0 ]; then
echo "*** Failed to make modules tarball"
exit 1
fi
ln -s ${MODTGZ} ${MODTGZLN}
echo "### Finished"
ls -l ${KERNIMG} ${MODTGZ}
kernel build †Execute this script in kernel source directory. $ mv make-bc9-kernel.sh linux-2.6.29.4-bc9 $ cd linux-2.6.29.4-bc9 $ ./make-bc9-kernel.sh When build successfully finished, you will obtain two another files in addition to "make" generating files. modules-2.6.29.4-bc9-r2.tgz uImage-bc9-2.6.29.4-bc9-r2.bin Copying to microSD †Copy those two files to kernel 2.6.24 bootable microSD as follows: $ sudo cp linux-2.6.29.4-bc9/uImage-bc9-2.6.29.4-bc9-r2.bin /media/disk/uimage $ sudo tar -C /media/disk-1/ -xvfz linux-2.6.29.4-bc9/modules-2.6.29.4-bc9-r2.tgz Booting 2.6.29.4-bc9 from microSD †Insert prepared microSD into bc9's card slot and power on bc9. $ uname -a Linux gumstix-custom-verdex 2.6.29.4-bc9-r2 #1 Tue Jun 26 20:43:33 JST 2009 armv5tel unknown by Satoshi OTSUKA
|