Rebuilding OLPC kernel: Difference between revisions
m (added categories) |
|||
Line 29: | Line 29: | ||
== Building the RPM (from scratch) == |
== Building the RPM (from scratch) == |
||
This is the way that the official kernel RPMs are built. Note that this allows you to build within a subdirectory somewhere (rather than using /usr/src/redhat). |
This is the way that the official kernel RPMs are built. Note that this allows you to build within a subdirectory somewhere (rather than using /usr/src/redhat). |
||
First, grab the kernel sources: |
|||
⚫ | |||
⚫ | |||
git clone --quiet git://dev.laptop.org/olpc-2.6 |
|||
⚫ | |||
git checkout origin/stable |
|||
⚫ | |||
⚫ | |||
Now construct the build directory structure: |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
You need to build a config file for the kernel. This is done in the source directory checked out using git: |
|||
⚫ | |||
⚫ | |||
The git://dev.laptop.org/users/dilinger/olpc-2.6-rpm repository contains the RPM SPEC file and other things necessary do bootstrap the RPM. 'olpc-2.6' is assumed to be your source tree. When complete, the RPMs will be in build/RPMS/i586/. |
The git://dev.laptop.org/users/dilinger/olpc-2.6-rpm repository contains the RPM SPEC file and other things necessary do bootstrap the RPM. 'olpc-2.6' is assumed to be your source tree. When complete, the RPMs will be in build/RPMS/i586/. |
Revision as of 07:41, 9 August 2007
This document describes building an OLPC kernel from the olpc-2.6 git repository or SRPM. You will want to do this on a Fedora Core 6 machine.
The OLPC kernel sources
The first step involves grabbing the kernel sources; either do a 'git clone' of the kernel git repository, or install the kernel SRPM. Both steps are described on the Kernel page.
Installing the SRPM will place the sources in /usr/src/redhat/SOURCES/olpc-2.6.tar.bz2
Building the RPM (the easy way)
The simplest way to build the kernel RPM involves downloading the SRPM, installing it, and then running the rpmbuild command. The "dist", "olpc", and "head" macros should be defined when building:
- rpm -ivh kernel-2.6.*-20061026_dc5079fafb767e4olpc1.src.rpm
- rpmbuild -ba --define "dist olpc1" --define "olpc 1" --define "head dc5079fafb767e4" --target=i586 /usr/src/redhat/SPECS/olpc-2.6.spec
After the build finishes, the newly build RPMs will be in /usr/src/redhat/RPMS, and the build tree that was used will be in /usr/src/redhat/BUILD. To make quick changes to the source, for example you can:
# cd /usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.i586 # vi drivers/video/geode/gxfb_dcon.c # make # scp drivers/video/geode/gxfb_dcon.ko testboard: # ssh testboard "rmmod gxfb_dcon; insmod ./gxfb_dcon.ko"
Building the RPM (from scratch)
This is the way that the official kernel RPMs are built. Note that this allows you to build within a subdirectory somewhere (rather than using /usr/src/redhat).
First, grab the kernel sources:
git clone --quiet git://dev.laptop.org/olpc-2.6 git checkout origin/stable
Now construct the build directory structure:
BASE=`pwd`/build; CUR=0 git clone --quiet git://dev.laptop.org/users/dilinger/olpc-2.6-rpm $BASE (cd $BASE && mkdir -p BUILD RPMS SOURCES SPECS SRPMS) tar -jc --exclude=.git -f $BASE/SOURCES/olpc-2.6.tar.bz2 olpc-2.6
You need to build a config file for the kernel. This is done in the source directory checked out using git:
cp olpc-2.6/.config $BASE/SOURCES/kernel-olpc-custom.config
rpmbuild -ba --define "dist 1.olpc" --define "olpc 1" --define "head `echo $CUR|cut -b1-15`" --target=i586 --define "_topdir $BASE" $BASE/SPECS/olpc-2.6.spec
The git://dev.laptop.org/users/dilinger/olpc-2.6-rpm repository contains the RPM SPEC file and other things necessary do bootstrap the RPM. 'olpc-2.6' is assumed to be your source tree. When complete, the RPMs will be in build/RPMS/i586/.