KernelBuild
Size: 1469
Comment:
|
Size: 2540
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
<<Include(Nexus7/Header)>> |
|
Line 8: | Line 10: |
sudo apt-get install gcc-arm-linux-gnueabihf ccache | sudo apt-get install gcc-arm-linux-gnueabihf ccache git kernel-wedge |
Line 14: | Line 16: |
git clone git://kernel.ubuntu.com/jani/ubuntu-nexus7.git | git clone git://kernel.ubuntu.com/hwe/ubuntu-nexus7.git }}} Create an alias called fdr that points to fakeroot debian/rules. You can stick this in ~/.bash_aliases and then source the file to make it permanent. {{{ alias fdr="fakeroot debian/rules" |
Line 18: | Line 26: |
$cd ubuntu-nexus7 $git clean -xdf |
|
Line 21: | Line 27: |
You may want to do this to disable cross-building of the linux-tools binary package, as that requires multiarch setup and some armhf libs installed in the host system. | Go to the source directory |
Line 23: | Line 29: |
$sed -i '/do_tools/ s/true/false/' debian.linaro/rules.d/armhf.mk | {{{ cd ubuntu-nexus7 }}} |
Line 25: | Line 33: |
$fdr clean (fdr is the shell alias for fakeroot debian/rules, useful as it is typed quite often while working with the kernel package) $debuild -eDEB_BUILD_OPTIONS="parallel=3" -eCROSS_COMPILE="ccache arm-linux-gnueabihf-" -b -aarmhf -us -uc -nc |
Remove leftover from previous builds or other cruft {{{ git clean -xdf }}} You need to do the following in order to disable cross-building of the linux-tools binary package, as that requires multiarch setup and some armhf libs installed in the host system. {{{ sed -i '/do_tools/ s/true/false/' debian.linaro/rules.d/armhf.mk }}} Calling fakeroot debian/rules (fdr) clean is necessary before each build. {{{ fdr clean }}} Next we create the package, and depending on your system speed, ccache and on the kernel configurations that are enabled it can take anywhere between 3 minutes and a couple of hours. The value for parallel works best when it equals the number of CPUs in your system + 1. {{{ debuild -eDEB_BUILD_OPTIONS="parallel=3" -eCROSS_COMPILE="ccache arm-linux-gnueabihf-" -b -aarmhf -us -uc -nc }}} == Change the configuration == The configuration file is in debian.linaro/config/config.common.ubuntu Bring up menuconfig {{{ fdr editconfigs }}} See what you have changed {{{ git diff }}} Or edit that file manually and then updateconfigs so it checks your changes and fixes up any possible side-effects {{{ fdr updateconfigs }}} Then run debuild again as above |
Line 32: | Line 86: |
This does an out of source tree build of a zImage (no modules) using the current Ubuntu configs | This does an out of source tree build of a zImage (no modules) using the current Ubuntu configs. Faster than a full package build. Like the value for parallel mentioned above, the -j value works best when it is number of CPUs + 1. |
Line 34: | Line 88: |
$cd ubuntu-nexus7 $mkdir ../build $cp debian.linaro/config/config.common.ubuntu ../build/.config $CROSS_COMPILE="ccache arm-linux-gnueabihf-" ARCH=arm make O=../build -j 8 zImage In the above snippets -j and parallel= are obviously to be adjusted depending on need. |
{{{ cd ubuntu-nexus7 mkdir ../build cp debian.linaro/config/config.common.ubuntu ../build/.config CROSS_COMPILE="ccache arm-linux-gnueabihf-" ARCH=arm make O=../build -j3 zImage }}} |
Installing Ubuntu on the Nexus7 |
This project is no longer maintained. You might be interested in Ubuntu Touch though. |
Here's how to cross-build the kernel from the git repository.
Initial setup
Having ccache installed is optional but helpful if you are often rebuilding the package from scratch with minor modifications.
sudo apt-get install gcc-arm-linux-gnueabihf ccache git kernel-wedge
Get the source
git clone git://kernel.ubuntu.com/hwe/ubuntu-nexus7.git
Create an alias called fdr that points to fakeroot debian/rules. You can stick this in ~/.bash_aliases and then source the file to make it permanent.
alias fdr="fakeroot debian/rules"
Rebuild the package
Go to the source directory
cd ubuntu-nexus7
Remove leftover from previous builds or other cruft
git clean -xdf
You need to do the following in order to disable cross-building of the linux-tools binary package, as that requires multiarch setup and some armhf libs installed in the host system.
sed -i '/do_tools/ s/true/false/' debian.linaro/rules.d/armhf.mk
Calling fakeroot debian/rules (fdr) clean is necessary before each build.
fdr clean
Next we create the package, and depending on your system speed, ccache and on the kernel configurations that are enabled it can take anywhere between 3 minutes and a couple of hours. The value for parallel works best when it equals the number of CPUs in your system + 1.
debuild -eDEB_BUILD_OPTIONS="parallel=3" -eCROSS_COMPILE="ccache arm-linux-gnueabihf-" -b -aarmhf -us -uc -nc
Change the configuration
The configuration file is in debian.linaro/config/config.common.ubuntu
Bring up menuconfig
fdr editconfigs
See what you have changed
git diff
Or edit that file manually and then updateconfigs so it checks your changes and fixes up any possible side-effects
fdr updateconfigs
Then run debuild again as above
Build zImage only
Sometimes you just want a zImage for a quick test such as inserting it in a boot.img and trying it out without a full deb installation.
This does an out of source tree build of a zImage (no modules) using the current Ubuntu configs. Faster than a full package build. Like the value for parallel mentioned above, the -j value works best when it is number of CPUs + 1.
cd ubuntu-nexus7 mkdir ../build cp debian.linaro/config/config.common.ubuntu ../build/.config CROSS_COMPILE="ccache arm-linux-gnueabihf-" ARCH=arm make O=../build -j3 zImage
Nexus7/KernelBuild (last edited 2012-11-13 11:07:36 by dholbach)