Difference between revisions of "EBC Exercise 23 Configuring the Kernel"

From eLinux.org
Jump to: navigation, search
m
m (Updated for 3.8 kernel)
(25 intermediate revisions by 4 users not shown)
Line 1: Line 1:
[[Category:ECE597]]
+
[[Category:ECE497]]
 
[[Category:BeagleBoard]]
 
[[Category:BeagleBoard]]
 +
{{YoderHead}}
 +
{{EBC3.8}}These instructions are for the 3.8 kernel. See [[EBC Exercise 23 Configuring the Kernel - bitbake]] for the 3.2 kernel.
  
There are several ways to get and configure the kernel. You could go to the [www.kernel.org The Linux Kernel Archives] find the ---arm--- branch, download a kernel and patch it for the omap.  You could use [http://git-scm.com/ git] to get a kernel.  Or you could just use [http://bitbake.berlios.de/manual/ bitbake] like we did before.
+
In a previous exercises ([[EBC Exercise 08a Cross-Compiling]] and [[EBC Exercise 08 Installing Development Tools]]) you learned how to get and compile the kernel.  Here we'll look at configuring it.
  
Let's first learn how to do it the bitbake way.
+
== Finding the kernel sources ==
  
== bitbake ==
+
First set up the environment and go to the kernel directory
  
When you did [[ECE597 Installing The Ångström Distribution]] you used bitbake to build '''console-image'''. During that build the kernel was downloaded and compiled.  If you used the default configure, the source code was removed once it was done.  Check and see:
+
host$ '''source ~/crossCompileEnv.sh'''  (set up in [[EBC Exercise 08a Cross-Compiling]])
<pre>
+
  host$ '''cd ~/BeagleBoard/linux-dev/KERNEL'''
cd ${OETREE}/angstrom-dev/work/beagleboard-angstrom-linux-gnueabi
+
ls
+
</pre>
+
You should see a directory starting with <code>linux-omap-</code>. The rest of the name tells what version you have.  Change to that directory and see what's there:
+
<pre>
+
cd linux-omap-2.6.29-r46
+
ls
+
</pre>
+
If you see a '''git''' directory, you are in luck. If you see just a '''temp''' directory you need to do the following to reload the sources:
+
<pre>
+
cd ${OETREE}/build/conf
+
gedit local.conf
+
</pre>
+
Find the line near the top that says <code>INHERIT += " rm_work "</code> and comment it out.
+
<pre>
+
# INHERIT += " rm_work "
+
</pre>
+
Save the file and then:
+
<pre>
+
cd ${OETREE}/openembedded
+
$ bitbake -c clean linux-omap-2.6.29
+
$ bitbake -f -c compile linux-omap-2.6.29
+
</pre>
+
''Note:  These instructions are based on
+
[http://wh1t3s.com/2009/05/11/oe-bitake-kernel-mods/ this] which is a good reference on finding and modifying the kernel in the oe distribution. In fact, [http://wh1t3s.com/ wh1t3s] seems to have several nice tips.''
+
  
This took some three hours on my machine.  Your mileage may vary.  Once done go back to
+
== Getting kernel make help ==
<pre>
+
Once there try some of the make commandsHelp is a good place to start.
cd ${OETREE}/angstrom-dev/work/beagleboard/angstrom-linux-gnueabi/linux-omap-2.6.29-r46
+
ls
+
</pre>
+
You should now see the '''git''' directorycd to it and look around.
+
  
You can now configure the kernel.
+
host$ '''make help | less'''
<pre>
+
Cleaning targets:
sudo apt-get install libqt3-mt-dev
+
  clean          - Remove most generated files but keep the config and
make xconfig
+
                    enough build support to build external modules
</pre>
+
  mrproper        - Remove all generated files + config + various backup files
After saving the configuration changes to update the .config file, it is a simple matter of rerunning the forced compile step from above to rebuild the kernel:
+
  distclean      - mrproper + remove editor backup and patch files
<pre>
+
$ bitbake -f -c compile linux-omap-2.6.29
+
Configuration targets:
$ bitbake -f -c deploy linux-omap-2.6.29
+
  config         - Update current config utilising a line-oriented program
</pre>
+
  menuconfig      - Update current config utilising a menu based program
If your kernel configuration modifications happen to result in the generation of any loadable modules, then you will wind up with another file in the deployment images folder:
+
  xconfig        - Update current config utilising a QT based front-end
<pre>
+
  gconfig        - Update current config utilising a GTK based front-end
$ cd ${OETREE}/angstrom-dev/deploy/glibc/images/beagleboard
+
...
$ ls
+
This produces a list of common make targets.
</pre>
+
  
== Doing it yourself ==
+
== Finding and installing support software ==
If you would prefer to maintain your own kernel source tree outside of OE, see these directions:
+
[[BeagleBoardLinuxKernel]]
+
  
Alternatively it is possible to run the official omap branch of the linux kernel.  Take a peek at this page.
+
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
[[BeagleBoard#Linux_kernel]]
+
  
It is important to note that the kernel in the official branch will be newer then the ones that OE provides (2.6.33 at the time of this writing), and as such there are no OE related patches to apply.
+
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[1]: *** [scripts/kconfig/dochecklxdialog] Error 1
 +
make: *** [menuconfig] Error 2
 +
If you get the error above, you need to install the ncurses library. [[ECE497_Tips_and_Tricks#On_the_host | 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'''
 +
 
 +
{{YoderFoot}}

Revision as of 16:51, 3 June 2013

thumb‎ Embedded Linux Class by Mark A. Yoder


3.8 Kernel

These instructions are for the 3.8 kernel. See EBC Exercise 23 Configuring the Kernel - bitbake for the 3.2 kernel.

In a previous exercises (EBC Exercise 08a Cross-Compiling and EBC Exercise 08 Installing Development Tools) you learned how to get and compile the kernel. Here we'll look at configuring it.

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[1]: *** [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




thumb‎ Embedded Linux Class by Mark A. Yoder