EBC Exercise 23 Configuring the Kernel
Embedded Linux Class by Mark A. Yoder
These instructions are for the 3.8 kernel. See EBC Exercise 23 Configuring the Kernel - bitbake for the 3.2 kernel.
Finding the kernel sources
First set up the environment and go to the kernel directory
host$ source ~/crossCompileEnv.sh (set up in EBC Exercise 08a Cross-Compiling) host$ cd ~/BeagleBoard/linux-dev/KERNEL
Getting kernel make help
Once there try some of the make commands. Help is a good place to start.
host$ make help | less Cleaning targets: clean - Remove most generated files but keep the config and enough build support to build external modules mrproper - Remove all generated files + config + various backup files distclean - mrproper + remove editor backup and patch files Configuration targets: config - Update current config utilising a line-oriented program menuconfig - Update current config utilising a menu based program xconfig - Update current config utilising a QT based front-end gconfig - Update current config utilising a GTK based front-end ...
This produces a list of common make targets.
Finding and installing support software
There are several ways to configure the kernel. make config will prompt you line-by-line for each of the settings, very tedious, not recommended. Try
host$ make menuconfig *** Unable to find the ncurses libraries or the *** required header files. *** 'make menuconfig' requires the ncurses libraries. *** *** Install ncurses (ncurses-devel) and try again. *** make: *** [scripts/kconfig/dochecklxdialog] Error 1 make: *** [menuconfig] Error 2
If you get the error above, you need to install the ncurses library. Here are notes on how to discover what to install and installing it.
NOTE FOR UBUNTU USERS: 'sudo apt-get install libncurses5-dev' without quotes will install ncurses
Configuring the kernel
Try the various interfaces for configuring the kernel.
host$ make menuconfig host$ make xconfig host$ make gconfig
I had to run the following to get these to work.
host$ sudo apt-get install libncurses5-dev host$ sudo apt-get install qt3-dev-tools host$ sudo apt-get install libglade2-dev
Making and Installing the kernel
Once you have the kernel configured it's easy to make and install it on the bone.
host$ cd linux-dev host$ tools/rebuild.sh
You'll be given a chance to configure, you can exit without saving if you don't want to change anything.
After a while (depending on the number of cores) you will see.
CHK include/generated/uapi/linux/version.h CHK include/generated/utsrelease.h make: `include/generated/mach-types.h' is up to date. CALL scripts/checksyscalls.sh ... LD [M] sound/usb/caiaq/snd-usb-caiaq.ko LD [M] sound/usb/misc/snd-ua101.ko LD [M] sound/usb/snd-usb-audio.ko LD [M] sound/usb/snd-usbmidi-lib.ko
Now you are ready to install. Have your Bone running and on the network. On your host run:
host$ cd linux-dev/tools host$ ln -s ../../exercises/setup/beagle_install_kernel.sh ../../exercises/setup/remote_install_kernel.sh .
This will link in two files from the git repository that we'll use. Edit remote_install_kernel.sh and change BeagleAddr to the address of your beagle. Then run:
host$ ./remote_install_kernel.sh Image Name: 3.8.13-bone26.1 Created: Tue Sep 3 13:33:35 2013 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 3340904 Bytes = 3262.60 kB = 3.19 MB Load Address: 80008000 Entry Point: 80008000 utsrelease.h 100% 38 0.0KB/s 00:00 beagle_install_kernel.sh 100% 3043 3.0KB/s 00:00 version.sh 100% 915 0.9KB/s 00:00 system.sh 100% 1446 1.4KB/s 00:00 3.8.13-bone26.1.config 100% 107KB 106.5KB/s 00:00 uImage-3.8.13-bone26.1 100% 3263KB 1.6MB/s 00:02 3.8.13-bone26.1-firmware.tar.gz 100% 1198KB 1.2MB/s 00:00 3.8.13-bone26.1-dtbs.tar.gz 100% 33KB 32.7KB/s 00:00 3.8.13-bone26.1.zImage 100% 3263KB 1.1MB/s 00:03 3.8.13-bone26.1-modules.tar.gz 100% 11MB 5.7MB/s 00:02
This copies several files to your Bone. Then, on the Bone run:
beagle$ cd linux-dev beagle$ tools/beagle_install.sh No manual entry for git-pull Installing 3.8.13-bone26.1-modules.tar.gz Installing 3.8.13-bone26.1-firmware.tar.gz `/home/root/linux-dev/deploy/tmp/BB-ADC-00A0.dtbo' -> `/home/root/linux-dev/deploy/disk/lib/firmware/BB-ADC-00A0.dtbo' ... `/home/root/linux-dev/deploy/tmp/cape-bone-weather-00A0.dtbo' -> `/home/root/linux-dev/deploy/disk/lib/firmware/cape-bone-weather-00A0.dtbo' `/home/root/linux-dev/deploy/tmp/cape-boneblack-hdmi-00A0.dtbo' -> `/home/root/linux-dev/deploy/disk/lib/firmware/cape-boneblack-hdmi-00A0.dtbo' `/home/root/linux-dev/deploy/tmp/cape-boneblack-hdmin-00A0.dtbo' -> `/home/root/linux-dev/deploy/disk/lib/firmware/cape-boneblack-hdmin-00A0.dtbo'
This uncompresses and installs the modules and firmware. You are now ready to reboot.
If your Beagle fails to boot, follow the EBC_Exercise_22_Recovering instructions to recover.
Embedded Linux Class by Mark A. Yoder