- Code: Select all
user@ubuntu:~$ ls -al /angstrom/sources/openembedded/recipes/linux/linux-2.6.37/
total 1648
drwxr-xr-x 16 user user 4096 2011-03-27 20:07 .
drwxr-xr-x 205 user user 20480 2011-08-12 07:31 ..
drwxr-xr-x 2 user user 4096 2011-03-20 10:35 om-gta01
drwxr-xr-x 2 user user 4096 2011-03-20 10:35 om-gta02
-rw-r--r-- 1 user user 1564402 2011-03-20 10:35 openmoko.patch
drwxr-xr-x 2 user user 4096 2011-03-20 10:35 openrd-base
drwxr-xr-x 2 user user 4096 2011-03-20 10:35 openrd-client
drwxr-xr-x 2 user user 4096 2011-03-20 10:35 qemuarm
drwxr-xr-x 2 user user 4096 2011-03-20 10:35 qemumips
drwxr-xr-x 2 user user 4096 2011-03-20 10:35 qemumips64
drwxr-xr-x 2 user user 4096 2011-03-20 10:35 qemumipsel
drwxr-xr-x 2 user user 4096 2011-03-20 10:35 qemuppc
drwxr-xr-x 2 user user 4096 2011-03-20 10:35 qemush4
drwxr-xr-x 2 user user 4096 2011-03-20 10:35 qemux86
drwxr-xr-x 2 user user 4096 2011-03-20 10:35 sheevaplug
-rw-r--r-- 1 user user 34985 2011-03-20 10:35 shr.patch
drwxr-xr-x 2 user user 4096 2011-03-20 10:36 spitz
drwxr-xr-x 2 user user 4096 2011-03-20 10:35 visstrim_m10
Next few steps demonstrate process of configuring and building latest linux kernel in Angstrom distribution. First build the kernel normally with bitbake by running this command:
- Code: Select all
bitbake virtual/kernel
This will create a source directory in /angstrom/build/tmp-angstrom_2008_1/work/cs-e9302-angstrom-linux-gnueabi/. In this case it will be /angstrom/build/tmp-angstrom_2008_1/work/cs-e9302-angstrom-linux-gnueabi/linux-2.6.24-r46/
Add the following file in your build configuration directory
- Code: Select all
nano /angstrom/build/conf/site.conf
and add preferred version of linux kernel
- Code: Select all
PREFERRED_VERSION_linux ?= "2.6.37"
Now we have to configure linux kernel. Run the following command
- Code: Select all
bitbake -c configure virtual/kernel
This will create a source directory in
- Code: Select all
/angstrom/build/tmp-angstrom_2008_1/work/cs-e9302-angstrom-linux-gnueabi/
In this case it will be
- Code: Select all
/angstrom/build/tmp-angstrom_2008_1/work/cs-e9302-angstrom-linux-gnueabi/linux-2.6.37-r4/
Next step is to modify the kernel configuration based on the existing configuration. Please ensure you have ncurses development package installed
- Code: Select all
apt-get install libncurses5-dev
Copy default configuration file from linux kernel sources.
- Code: Select all
cp /angstrom/build/tmp-angstrom_2008_1/work/cs-e9302-angstrom-linux-gnueabi/linux-2.6.37-r4/linux-2.6.37/arch/arm/configs/ep93xx_defconfig /angstrom/build/tmp-angstrom_2008_1/work/cs-e9302-angstrom-linux-gnueabi/linux-2.6.37-r4/linux-2.6.37/.config
Let’s modify linux kernel configuration. Do this by passing a command argument to bitbake.
- Code: Select all
bitbake –c menuconfig virtual/kernel
This invokes one of the standard kernel configuration tools menuconfig which provides a minimalist GUI based on the ncurses library.
NOTE: If this command does not launch an ncurses window, you are likely missing some tools on your workstation. For Ubuntu users, I have a check-installed.py script you can use to check your system. You can find it here - oe-build-essentials-project.
We are going to change some options in kernel configuration:
- Code: Select all
System type:
[Enter] Cirrus EP93XX Implementation Options
[Disable] Support ADC Sphere
[Disable] Support Cirrus Logic EDB9301
[Disable] Support Cirrus Logic EDB9307
[Disable] Support Cirrus Logic EDB9312
[Disable] Support Cirrus Logic EDB9315
[Disable] Support Glomation GESBC-9312-sx
[Disable] Support Contec Micro9-High
[Disable] Support Contec Micro9-Lite
[Disable] Support Technologic Systems TS-72xx SBC
Device drivers:
[Enter] Memory Technology Device:
[Disable] NAND Device Support
[Enter] Block Devices:
[Module] Loopback device support
[Module] Network block device support
[Enter] Network device support:
[Disable] Ethernet (1000 Mbit)
[Disable] Ethernet (10000 Mbit)
[Disable] Wireless LAN
[Enter] USB Network Adapters
[Module] USB KLSI KL5USB101-based ethernet device support
[Module] USB Pegasus/Pegasus-II based ethernet device support
[Module] USB RTL8150 based ethernet device support
[Module] Multi-purpose USB Networking Framework
[Module] Davicom DM9601 based 1.1 10/100 ethernet devices
[Module] SMSC LAN75XX based USB 2.0 gigabit ethernet devices
[Module] SMSC LAN75XX based USB 2.0 10/100 ethernet devices
[Module] GeneSys GL620USB-A based cables
[Module] Profilic PL-2301/2302 based cables
[Module] MosChip MCS7830 based Ethernet adapters
[Module] Host for RNDIS and ActiveSync devices
[Disable] eTEK based host-to-host cables (Advance, Belkin, …)
[Disable] Embedded Arm Linux links (iPaq, …)
[Disable] Sharp Zaurus (stock ROMs) and compatible
[Enter] I2C support:
[Disable] I2C Core Debugging Messages
[Disable] I2C Algorithm Debugging Messages
[Disable] I2C Bus Debugging Messages
[Enable] SPI support
[Enter] SPI support:
[Enable] Cirrus Logic EP93XX SPI controller
[Enable] User mode SPI device driver support
[Enter] GPIO support:
[Enable] /sys/class/gpio…(sysfs interface)
[Disable] Multifunction Device Drivers
[Enter] USB support:
[Enable] USB Modem (CDC ACM) support
[Enable] USB Atached SCSI
[Enter] USB Serial Converter Support
[Enable] USB Generic Serial Driver
[Module] USB AIRCable Bluetooth Dongle Driver
[Module] USB ARK Micro 3116 USB Serial Driver
[Module] USB Belkin and Peracom Single Port Serial Driver
[Module] USB Winchiphead CH341 Single Port Serial Driver
[Module] USB Digi International AccelePort USB Serial Driver
[Module] USB CP210x family of UART Bridge Controllers
[Module] USB Cypress M8 USB Serial Driver
[Module] USB Empeg empeg-car MARK I/II Driver
[Module] USB FTDI Single Port Serial Driver
[Module] USB Fundamental Software Dongle Driver
[Module] USB Handspring Visor / Palm m50x / Sony Clie Driver
[Module] USB IR Dongle Serial Driver
[Module] USB Garmin GPS Driver
[Module] USB IPWirelless (3G UMTS TDD) Driver
[Module] USB Infinity USB Unlimited Phoenix Driver
[Module] USB Moschip 7720 Serial Driver
[Module] USB Moschip 7840/7820 USB Serial Driver
[Module] USB Prolific 2303 Single Port Serial Driver
[Module] USB Ours Technology Inc. OTi-6858 USB To RS232 Bridge Controller
[Module] USB Qualcomm Auxiliary Serial Port Driver
[Module] USB Qualcomm Serial Modem
[Module] USB SPCP8x5 USB To Serial Driver
[Enable] USB Gadget support
[Enter] USB Gadget support
[Module] Gadget Zero (DEVELOPMENT)
[Module] Ethernet Gadget (with CDC Ethernet support)
[Module] Mass Storage Gadget
[Module] Serial Gadget (with CDC ACM and CDC OBEX support)
[Module] CDC Composite Device (Ethernet and ACM)
[Module] HID Gadget
[Enter] Real time clock:
[Disable] Dallas/Maxim DS1307/37/38/39/40, ST M4T00, EPSON RX-8025
[Disable] ST M48T86/Dallas DS12887
[Enable] MMC/SD/SDIO card support
File systems
[Enter] Miscellaneous filesystems
[Enable] JFFS2 summary support
[Enable] Advanced compression options for JFFS2
[Enter] DOS/FAT/NT Filesystems
[Module] MSDOS fs support
[Module] VFAT (Windows-95) fs support
[Module] NTFS file system support
Kernel hacking:
[Disable] Kernel debugging
When you are done, the new kernel configuration file can be found here
- Code: Select all
/angstrom/build/tmp-angstrom_2008_1/work/cs-e9302-angstrom-linux-gnueabi/linux-2.6.37-r4/linux-2.6.37/.config
We have to add linux recipe in our repository. Create directory
- Code: Select all
mkdir -p /angstrom/sources/local/recipes/linux
First let's copy the bbfile recipe of linux kernel from OpenEmbedded repository:
- Code: Select all
cp /angstrom/sources/openembedded/recipes/linux/linux_2.6.37.bb /angstrom/sources/local/recipes/linux/linux_2.6.37.bb
Now edit file
- Code: Select all
nano /angstrom/sources/local/recipes/linux/linux_2.6.37.bb
and change line
- Code: Select all
require linux.inc
to
- Code: Select all
require ${BBFILE_PATTERN_oe}/recipes/linux/linux.inc
Then we have to create linux configuration file directory
- Code: Select all
mkdir -p /angstrom/sources/local/recipes/linux/linux-2.6.37/cs-e9302/
Copy configuration file to local repository
- Code: Select all
cp /angstrom/build/tmp-angstrom_2008_1/work/cs-e9302-angstrom-linux-gnueabi/linux-2.6.37-r4/linux-2.6.37/.config /angstrom/sources/local/recipes/linux/linux-2.6.37/cs-e9302/defconfig
Finally build the kernel
- Code: Select all
bitbake virtual/kernel
After building the image file could be found at
- Code: Select all
/angstrom/build/tmp-angstrom_2008_1/deploy/glibc/images/cs-e9302/