I currently run Angstrom Linux 2.6.32 on BeagleBoard-xM (ARM architecture). Can I upgrade my Linux kernel from 2.6.32 to 3.0.7 and what is the difficulty level in case upgrade is possible?


Image that BB-xM runs, was built from Narcissus with Bootloader Files (x-load/u-boot/scripts). I recently downloaded kernel sources from kernel.org and copied them to /usr/src on BB-xM. After making the configuration (make menuconfig), I build (make) and installed (make install) kernel directly to BB-xM (native toolchain).


I know that attention must be given as well, to the bootloader, in case it has to be manually configured, in order to boot the new kernel. In the initial Angstrom image, boot directory contained:

  • u-boot-scripts
  • MLO-beagleboard-1.5.0+r24+gitr04b1732220078d47c18a84cbafc52e45db71f13d-r24
  • u-boot-beagleboard-2011.02+r75+gitrc7977858dcf1f656cbe91ea0dc3cb9139c6a8cc8-r75
  • uImage-2.6.32

After, configuring and installing kernel, boot directory contains:

root@beagleboard:/boot# ls

I didn't configure the bootloader, and BB-xM boots the newly configured kernel.


I'm not a beagle board user, so the first thing you want to do is make sure you have an appropriate kernel source. The vanilla source does support various Cortex-A8 (ARMv7) chips, including "OMAP3 BeagleBoard", but I can't say for sure whether that is good enough without further patches.

The 3.x kernel should be backward compatible with a 2.6 oriented userland, so there should not be any problems unless Angstrom relies in some significant way on features implemented by their own patches (in which case, you'd need to apply those). This is not an issue with mainstream distros -- although they do custom patch their kernels and recommend you use their patched sources, I have never run into a problem using the vanilla tree -- but Angstrom is somewhat specialized, I think. If Angstrom already has a 3.0.7 source you are all set. If not, it probably will not hurt to try with the vanilla kernel.org source (if it boots ok, it's probably going to be fine from there).

I'm presuming you already have a working cross-compiler toolchain which works for the BeagleBoard. If not, you will need one (I can provide some tips about this too) since it will take a number of hours directly on the BeagleBoard (it apparently takes 5+ on the raspberry pi) and there will likely be some trial and error. However, on a contemporary multi-core multi-Ghz machine it shouldn't take much more than 10 minutes, so you will not have to stress out about the configuration each time. Cross-compiling the kernel is relatively simple, since it does not have any build dependencies that aren't already part of the toolchain.

For some specifics about configuring and compiling the kernel, see here. Follow the tip about not using make install in step #5 (i.e, install the kernel to the BeagleBoard yourself appropriately; I do not know if it uses a normal bootloader, etc.), and set INSTALL_MOD_PATH to the sysroot of your cross toolchain before you run make modules_install, e.g.

export INSTALL_MOD_PATH=/x-tool/sysroot
make modules_install

This will leave an appropriate module directory in /x-tool/sysroot/lib/modules which you can copy directly to the BeagleBoard's /lib/modules directory.

  • I edited my question. Do I have to do exactly the same thing as I did with kernel sources 2.6.32 (except installing kernel)? If I understood, I 'll have to configure the GRUB 2 bootloader, in order new kernel be able to boot. However, there is no grub2 directory on boot neither grub.d directory on etc. – dempap Mar 27 '14 at 19:10
  • Yeah, that would only apply to systems that use grub as a bootloader. E.g., the raspberry pi can only be used with custom bootloader on a special partition that has its own style of configuration. Googling quickly implies the BeagleBoard uses, or can use, U-boot. That (where to put the kernel, how to configure the boot loader if required, etc.) is something you'll have to find out about and the best place to ask would be on a beagleboard forum or mail list. Looks like they also have an IRC chat channel on freenode (#beagle), those can be helpful places if there are enough users. – goldilocks Mar 27 '14 at 19:33
  • If what you did with 2.6.32 worked, it will work with 3.x too. make install copies zImage into /boot and creates a symlink vmlinuz. If that's what the bootloader is looking for there's nothing else you have to do. I'd have a look at that and back up your existing kernel first though. – goldilocks Mar 27 '14 at 19:42
  • I edited my question with boot directory, before and after installing kernel. It seems to me, that bootloader gets updated automatically. If I 'm wrong, please let me know. Thank you in advance. – dempap Mar 28 '14 at 19:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.