[fedora-arm] Fedora 2.6.38 kernel for ARM-OMAP

David A. Marlin dmarlin at redhat.com
Thu May 12 05:09:47 UTC 2011


I was looking to try a newer kernel on the beagle board and panda board 
I was using (both running F13), and decided to try building 2.6.38 from 
the Fedora 15 SRPM.  I modified the spec file to include an option to 
build for armv7l, and added an armv7l config file, as well as armv7l 
support in Makefile.config.  I also included one 2.6.39 upstream patch 
(PandaBoard-remove-unused-power-regulators).

All the source and binary packages I built are in:
    http://people.redhat.com/dmarlin/packages/FedoraArm/

I built a kernel from the following source package:
    SRPMS/kernel-2.6.38.5-24.01.fc13.src.rpm

using the F13 tools on the panda board, and installed and booted it on 
both the beagle and panda boards.  The command I use to build it is:
    rpmbuild -bb --target=armv7l SPECS/kernel.spec

Before installing the kernel binary RPM, I installed new linux-firmware 
and grubby RPMs on the boards.  The 2.6.38 kernel requires a newer 
version of linux-firmware than is available in the F13 ARM repo, so I 
rebuilt the one from F15.  The new grubby package is not really 
necessary, but I patched it to be armv7l aware, otherwise it defaults to 
x86 (and looks for lilo or grub bootloaders).  The modifications also 
provide a placeholder in case I wanted to modify it further to create 
the uboot images for the beagle/panda boards.

To install the kernel on the panda board I just use:
    rpm -ivh kernel-omap-2.6.38.5-24.01.fc13.armv7l.rpm

It takes a while to install, since it has to install all the modules, 
make an initramfs, etc.

I keep all the uboot files in /boot/uboot.  To build the uboot images 
for this kernel I use:

   cd /boot
   mkimage -A arm -O linux -T kernel -C none -a 0x80008000 -e 0x80008000 
-n 2.6.38.5-24.01.fc13.armv7l.omap -d 
vmlinuz-2.6.38.5-24.01.fc13.armv7l.omap 
uboot/uImage-2.6.38.5-24.01.fc13.armv7l.omap
   mkimage -A arm -O linux -T ramdisk -C none -a 0 -e 0 -n initramfs -d 
initramfs-2.6.38.5-24.01.fc13.armv7l.omap.img 
uboot/uInitrd-2.6.38.5-24.01.fc13.armv7l.omap

I then reboot the board from the console, and interrupt the auto-boot 
script.  The commands I use to boot and test the new kernel on the panda 
board are:

    setenv mpurate 800
    setenv bootargs console=ttyO2,115200n8 mem=463M ro rootwait 
root=/dev/mmcblk0p4 mpurate=${mpurate} init=/sbin/init earlyprintk 
rd_NO_PLYMOUTH
    setenv bootcmd 'mmc rescan 0; mmc init; fatload mmc 0:1 0x80300000 
uImage-2.6.38.5-24.01.fc13.armv7l.omap; fatload mmc 0:1 0x81600000 
uInitrd-2.6.38.5-24.01.fc13.armv7l.omap; bootm 0x80300000 0x81600000'
    boot

Your options may differ, depending on your flash configuration, uboot 
version, etc., but these work for me.

I have not preformed extensive testing, but it does boot and seems to 
work well on the F13 rootfs.

Notes:
  I have only modified this to build for armv7l.  Further modifications 
will be necessary for other variants.
  The config file I used is based on an older existing ARM config, so 
I'm sure the options are not optimal. 
  The config file does not follow the Fedora conventions (broken down 
between the generic, arch, and board config files). 
      I'm not sure the best way to break this out and maintain it, so 
suggestions are welcome.

Please let me know if you have any questions, comments, or suggestions.


d.marlin



More information about the arm mailing list