Kernel Configuration Clarification

Hi All,

As I've said in other posts, I'm very much a newbie to the BB/Linux
and need some help. I've done plenty of googling looking for the
answer to this, but I think it is very much specific to the BB.

So please clarify this:
To reconfigure the kernel for Angstrom, is this something done with
bitbake? I know bitbake is used to install new packages and make
images. Is the idea behind bitbake to make all of this into one simple
step? I'm trying to eliminate as much stuff from startup as possible
and rc-update.d has eliminated some of it, but the rest seems to be in
the kernel itself. I need a tutorial on the kernel, but not sure where
to start since I think the Beagle Board might be unique.

Thanks.

Bitbake/OpenEmbedded is definitely an extra layer on top of normal kernel building. I'm still fairly new to building Linux, although I have a lot of stale Unix experience I'm dusting off. I find the bitbake system powerful but challenging to learn, and I've been taking shortcuts while I try to build up to using it properly. Advice I give here works for me but may be incorrect and is almost certainly not the optimal solution.

For my setup, I built the whole thing using OpenEmbedded, then I tweaked the kernel config by hand. I'm not sure I recommend it (since if I pull new stuff from the git tree I'll need to redo my config changes), but it worked for me. When I did was:
Under the OpenEmbedded root, go to tmp/work/beagleboard-angstrom-linux-gnueabi/linux-omap-2.6.28-r26/git
This where the source to the kernel lives. The config options are stored in that dir in the ".config" file, and I recommend making a copy of it before changing anything.
Then you can do a "make menuconfig", which will let you edit the config options. Exit out of the menuconfig app (saving changes) and then do "make uImage" to rebuild the kernel.
The kernel will end up under that dir as "arch/arm/boot/uImage"

I believe you can do all this properly via bitbake, and I think Koen posted some info on it a while back, so you might want to do a search in google groups and see if you can find it.

If you've never done any serious Linux development, starting with kernel building for an embedded system is really jumping in at the deep end. I highly recommend the book "Embedded Linux Primer:A Practical Real-World Approach", by Christopher Hallinan, as it explains a lot of useful info in a very clear way. It has certainly helped me quite a bit.

Brett

Awesome, thanks!

I'll give it a try and see what happens.

>Hi All,

>As I've said in other posts, I'm very much a newbie to the BB/Linux
>and need some help. I've done plenty of googling looking for the
>answer to this, but I think it is very much specific to the BB.

>So please clarify this:
>To reconfigure the kernel for Angstrom, is this something done with
>bitbake? I know bitbake is used to install new packages and make
>images. Is the idea behind bitbake to make all of this into one simple
>step? I'm trying to eliminate as much stuff from startup as possible
>and rc-update.d has eliminated some of it, but the rest seems to be in
>the kernel itself. I need a tutorial on the kernel, but not sure where
>to start since I think the Beagle Board might be unique.

Bitbake/OpenEmbedded is definitely an extra layer on top of normal
kernel building. I'm still fairly new to building Linux, although I
have a lot of stale Unix experience I'm dusting off. I find the
bitbake system powerful but challenging to learn, and I've been
taking shortcuts while I try to build up to using it properly. Advice
I give here works for me but may be incorrect and is almost certainly
not the optimal solution.

For my setup, I built the whole thing using OpenEmbedded, then I
tweaked the kernel config by hand. I'm not sure I recommend it (since
if I pull new stuff from the git tree I'll need to redo my config
changes), but it worked for me. When I did was:
Under the OpenEmbedded root, go to
tmp/work/beagleboard-angstrom-linux-gnueabi/linux-omap-2.6.28-r26/git

Note that the path depends on which version you are building.
Especially the last part (r26) will increment with every patch that
comes along.

This where the source to the kernel lives. The config options are
stored in that dir in the ".config" file, and I recommend making a
copy of it before changing anything.

I suggest also to make a copy of it *after* you make your changes, so
if you by coincidence destroy things you still have a copy of your
work.
And when r27 comes along you can just reuse that copy.
Or, alternately you could copy your .config to linux-omap-2.6.28/
beagleboard/defconfig (if my memory serves me well) and then when you
build the next version (e.g. r28) it will use your configuration
settings.

Thinking of it, if you know what you are doing you could even edit
beagleboard/defconfig directly, but I would not really recommend that
(or only for minimal changes).

Then you can do a "make menuconfig", which will let you edit the
config options. Exit out of the menuconfig app (saving changes) and
then do "make uImage" to rebuild the kernel.
The kernel will end up under that dir as "arch/arm/boot/uImage"

I believe you can do all this properly via bitbake, and I think Koen
posted some info on it a while back, so you might want to do a search
in google groups and see if you can find it.

If you've never done any serious Linux development, starting with
kernel building for an embedded system is really jumping in at the
deep end. I highly recommend the book "Embedded Linux Primer:A
Practical Real-World Approach", by Christopher Hallinan, as it
explains a lot of useful info in a very clear way. It has certainly
helped me quite a bit.

Brett

--
Brett Kuehner
b...@pobox.comhttp://www.bvk.nu

I'm highly interested in efforts that improve the boot time. I have
some experience and ideas myself, but I am not too sure if the
community would like it if I would hack defconfig.
(basically in order to optimize boot time you need to go over all
kernel options, only those things that are always needed should be
compiled in, rest should be modules. Not sure whether initramfs could
be of use.
You could also have a look at the "from naught to sixty in 5 seconds"
presentation from the last plumbers conference.
I also still need to look whether axfs could help, but that needs a
very good separation between modifiable and non-modifiable parts of
the filesystem.

FM