[[labs.beatcraft.com]]~
[[bc9/Software/OpenEmbedded/kernel2.6.29(2/2)]]~
*kernel update [#ke5bcff7]
On gumstix-oe, currently we can choose kernel version 2.6.21, 2.6.22 and 2.6.24.~
But even 2.6.24 is almost 2 years older than current kernel.~
So we upgrade kernel to version 2.6.29.~
Followings are the procedures.
*Setting up microSD boot environment [#teb7ccfb]
When upgrade kernel, prepare new userland for upgrade kernel.~
For convenience of kernel upgrade operation, we don't choose the way to write new kernel into Flash ROM but~
we choose the way to make up new bootable environment on microSD.
**Setting up gumstix build environment [#qdddd844]
This section describes setting up procedure of build environment for bc9 (gumstix).~
We use gumstix-oe, modified and adjusted version of [[OpenEmbedded:http://wiki.openembedded.net/index.php/Main_Page]] build environment (bitbake) by [[Gumstix,Inc.:http://www.gumstix.com/]] .~
Please refer to setting up procedure of gumstix build environment in advance.
-[[gumstix developer site - Getting started:http://www.gumstix.net/Software/cat/Getting-started/111.html]]
-[[gumstix developer site - Setting up a build environment:http://www.gumstix.net/Software/view/Getting-started/Setting-up-a-build-environment/111.html]]
-[[gumstix developer site - Replacing the file system image:http://www.gumstix.net/Software/view/Getting-started/Replacing-the-file-system-image/111.html]]
However, we build microSD boot image instead of built-in Frash ROM boot image.~
So build procedure is rather different to site above.
We suppose that following operation executes by "beat" account on Ubuntu 8.04LTS.~
(When you want to use Ubuntu8.10, refer to [[Build Environment Ubuntu 8.10:http://www.gumstix.net/wiki/index.php?title=Build_Environment_Ubuntu_8.10]]~
When you want to use Ubuntu9.04, refer to [[Build Environment Ubuntu 9.04:http://www.gumstix.net/wiki/index.php?title=Build_Environment_Ubuntu_9.04]]~
and adjust procedure.)
**Adjusting sh [#z410340b]
On Ubuntu, /bin/sh is symlink to dash, not to bash and sometime this cause problem.~
So in order to avoid build time failure of bitbake, reconfigure /bin/sh as follows:
$ sudo dpkg-reconfigure dash
Choose "no" when you asked that setting up /bin/sh to symlink of dash.
**Instlation of required applications [#p9922790]
Install bitbake required applications as follows:
$ sudo apt-get install build-essential help2man diffstat texi2html texinfo libncurses5-dev cvs gawk ¥
python-dev python-pysqlite2 python-psyco ckermit lrzsz subversion
**Checking out gumstix-oe [#qf2bae2d]
$ mkdir ~/gumstix
$ cd ~/gumstix
$ svn co https://gumstix.svn.sourceforge.net/svnroot/gumstix/trunk gumstix-oe
**Setting shell environment variables [#b3f6a0c3]
If you prefer to setting up permanently, do as follows.
$ cat gumstix-oe/extras/profile >> ~/.bashrc
or if you prefer to setting up temporally, do as follows,
$ . ~/gumstix/gumstix-oe/extras/profile
or
$ source ~/gumstix/gumstix-oe/extras/profile
**Setting source code caching directories [#hebcab0e]
Gumstix-oe is designed to download source codes during build procedures.~
Default setting store downloaded source codes into /usr/share/sources. ~
But for easy handling, we change to store source codes into gumstix/sources.
$ svn diff build/conf/site.conf
Index: build/conf/site.conf
===================================================================
--- build/conf/site.conf (revision 318)
+++ build/conf/site.conf (working copy)
@@ -1,5 +1,6 @@
# specifies where BitBake should place the downloaded sources
-DL_DIR = "/usr/share/sources"
+DL_DIR = "/home/beat/gumstix/sources"
# specifies where BitBake should create its temporary files
TMPDIR = ${GUMSTIXTOP}/tmp
**Adjusting build setting [#w4ce1bb7]
To utilize PXA270 effectively, edit as follows:~
$ svn diff com.gumstix.collection/conf/machine/include/tune-iwmmxt.inc
Index: com.gumstix.collection/conf/machine/include/tune-iwmmxt.inc
===================================================================
--- com.gumstix.collection/conf/machine/include/tune-iwmmxt.inc (revision 318)
+++ com.gumstix.collection/conf/machine/include/tune-iwmmxt.inc (working copy)
@@ -1,6 +1,9 @@
# Configurations for the Intel PXA27x Appications Processor Family.
# Please use tune-xscale for PXA255/PXA26x based processors.
-TARGET_CC_ARCH = "-march=iwmmxt -mcpu=iwmmxt -mtune=iwmmxt"
+FEED_ARCH = "iwmmxt"
+TARGET_CC_ARCH = "-march=iwmmxt -mtune=iwmmxt"
+TARGET_CC_KERNEL_ARCH = "-march=iwmmxt -mtune=iwmmxt"
PACKAGE_ARCH = "iwmmxt"
PACKAGE_EXTRA_ARCHS += "iwmmxt"
Kernel maximum size limitation doesn't need for microSD bootable image. So increase kernel size.
$ svn diff com.gumstix.collection/conf/machine/include/gumstix.inc
Index: com.gumstix.collection/conf/machine/include/gumstix.inc
===================================================================
--- com.gumstix.collection/conf/machine/include/gumstix.inc (revision 318)
+++ com.gumstix.collection/conf/machine/include/gumstix.inc (working copy)
@@ -10,6 +10,7 @@
KERNEL_IMAGETYPE = "uImage"
RDEPENDS_kernel-base = ""
-KERNEL_IMAGE_MAXSIZE = "1048577"
+KERNEL_IMAGE_MAXSIZE = "2197154" // incleased for mmcboot
UBOOT_ENTRYPOINT = "a0008000"
@@ -35,7 +35,7 @@
PREFERRED_PROVIDER_bluez-utils-dbus = "bluez-utils"
PREFERRED_PROVIDER_gsmd="libgsmd"
-PREFERRED_VERSION_gumstix-kernel = "2.6.21"
+PREFERRED_VERSION_gumstix-kernel = "2.6.24"
PREFERRED_VERSION_udev = "118"
PREFERRED_VERSION_gnuplot = "4.0.0"
PREFERRED_VERSION_dropbear = "0.47"
To generate microSD bootable image, acivate mmcboot setting.~
And few adjustments for bc9 are added.
$ svn diff com.gumstix.collection/conf/machine/gumstix-custom-verdex.conf
Index: com.gumstix.collection/conf/machine/gumstix-custom-verdex.conf
===================================================================
--- com.gumstix.collection/conf/machine/gumstix-custom-verdex.conf (revision 318)
+++ com.gumstix.collection/conf/machine/gumstix-custom-verdex.conf (working copy)
@@ -5,12 +5,12 @@
MACHINE_FEATURES += "verdex"
MACHINE_FEATURES += "iwmmxt"
require conf/machine/include/gumstix.inc
-require conf/machine/include/tune-xscale.inc
+require conf/machine/include/tune-iwmmxt.inc
#
# Your flash size = Total flash (in MB) - 1 (for linux kernel partition)
-ROOT_FLASH_SIZE = "15"
-#ROOT_FLASH_SIZE = "31"
+#ROOT_FLASH_SIZE = "15"
+ROOT_FLASH_SIZE = "31"
#
# Enable use of virtual terminal for LCD on tty1 if USE_VT = "1"
@@ -28,7 +28,7 @@
#MACHINE_FEATURES += "spi"
MACHINE_FEATURES += "serial"
-MACHINE_FEATURES += "bluetooth"
+#MACHINE_FEATURES += "bluetooth"
MACHINE_FEATURES += "sound"
# if you enable robostix you will need to disable both "lcd" and "touchscreen" features
@@ -51,7 +51,7 @@
MACHINE_FEATURES += "fat"
# enable one of the following if you want to target build for uimage/rootfs on mmc/microSD or CF
-#MACHINE_FEATURES += "mmcroot"
+MACHINE_FEATURES += "mmcroot"
#MACHINE_FEATURES += "cfroot"
#
Module for gumstix expansion board wifistix is known to become build error.~
So we remove this module's build setting.(bc9 originally doesn't use this module.)
$ svn diff com.gumstix.collection/packages/tasks/task-base-gumstix.bb
Index: com.gumstix.collection/packages/tasks/task-base-gumstix.bb
===================================================================
--- com.gumstix.collection/packages/tasks/task-base-gumstix.bb (revision 318)
+++ com.gumstix.collection/packages/tasks/task-base-gumstix.bb (working copy)
@@ -201,7 +201,6 @@
RDEPENDS_task-base-gumstix-wifi = "¥
task-base-gumstix-pcmcia ¥
- wifistix-modules ¥
wireless-tools ¥
wpa-supplicant ¥
"
In above modification we change FEED_ARCH from armv5te to iwmmxt.~
So if you want to install applications with ipkg command, you can only install self build ipks built with iwmmxt optimized.~
If you want to use prebuild ipks prepared by gumstix,inc., please don't require tune-iwmmxt.inc in gumstix-custom-verdex.conf~
but require tune-xscale.inc and build armv5te optimized ipks.
**Build [#d7af3fe0]
Build kernel, kernel modules, userland by following command.~
Build is starting from arm cross-toolchain and it takes few hours or almost a half day to finish.
$ bitbake gumstix-directfb-image
When build was successfully finished, following files should be generated.
$ ls -al tmp/deploy/glibc/images/gumstix-custom-verdex/
Total 21780
drwxr-xr-x 2 beat beat 4096 2009-06-23 00:01 .
drwxr-xr-x 3 beat beat 4096 2009-06-22 22:58 ..
-rw-r--r-- 1 beat beat 10402796 2009-06-23 00:01 Angstrom-gumstix-directfb-image-glibc-ipk-2007.9-test-20090622-gumstix-custom-verdex.rootfs.jffs2
-rw-rw-r-- 1 beat beat 8713428 2009-06-23 00:01 Angstrom-gumstix-directfb-image-glibc-ipk-2007.9-test-20090622-gumstix-custom-verdex.rootfs.tar.gz
lrwxrwxrwx 1 beat beat 97 2009-06-23 00:01 gumstix-directfb-image-gumstix-custom-verdex.jffs2 -> Angstrom-gumstix-directfb-image-glibc-ipk-2007.9-test-20090622-gumstix-custom-verdex.rootfs.jffs2
lrwxrwxrwx 1 beat beat 98 2009-06-23 00:01 gumstix-directfb-image-gumstix-custom-verdex.tar.gz -> Angstrom-gumstix-directfb-image-glibc-ipk-2007.9-test-20090622-gumstix-custom-verdex.rootfs.tar.gz
-rw-rw-r-- 1 beat beat 1929321 2009-06-22 22:58 modules-2.6.24-r1-gumstix-custom-verdex.tgz
-rw-r--r-- 1 beat beat 1191276 2009-06-22 22:58 uImage-2.6.24-r1-gumstix-custom-verdex.bin
**Formatting microSD [#ldd29d26]
In order to make microSD bootable and layout kernel and userland on it, make two partitions and format it.~
At least 128M bytes are required.~
1. Format first 40M bytes of microSD as FAT16~
2. Format remains as ext2~
(Use fdisk、mkvfat、mkext2 or gparted etc.)~
On the condition that vfat partition is mounted to /media/disk and ext2 partition to /media/disk-1,~
copy required files to appropriate directory as follows:
$ sudo cp ~/gumstix/gumstix-oe/extras/mmc-root/gumstix-factory.script /media/disk/
$ sudo cp ~/gumstix/gumstix-oe/tmp/deploy/glibc/images/gumstix-custom-verdex/uImage-2.6.24-r1-gumstix-custom-verdex.bin /media/disk/uimage
$ sudo tar -C /media/disk-1/ -xvfz ~/gumstix/gumstix-oe/tmp/deploy/glibc/images/gumstix-custom-verdex/gumstix-directfb-image-gumstix-custom-verdex.tar.gz
$ sudo tar -C /media/disk-1/ -xvfz ~/gumstix/gumstix-oe/tmp/deploy/glibc/images/gumstix-custom-verdex/modules-2.6.24-r1-gumstix-custom-verdex.tgz
**microSD boot [#od92c2fb]
**Booting from microSD[#od92c2fb]
Insert ready microSD into bc9's microSD slot, connect serial cable to PC and power on.~
Boot message appear on serial console and bc9 boot from microSD.~
(But beware: nothing appear on LCD when first boot time.)~
During first time boot locale setting and ssh_key generation are executed. ~
So first time boot take slightly longer time.~
When boot completed, login from serial console and set kernel modules as follows:
$ depmod
$ vi /etc/modules/pxafb
write only pxafb and save.
$ vi /etc/modules/fbcon
write only fbcon and save.
$ update-modules
Then prompt appear on LCD and pxa frame buffer activated after second time boot.
-----------------
RIGHT:by Satoshi OTSUKA