Home

Installing Ubuntu on the Nexus7
Get started here!

FAQ

Using the Device

Start hacking

Known Issues

This project is no longer maintained. You might be interested in Ubuntu Touch though.

So you're interested in the Ubuntu kernel running on the Nexus7? That's great. We need people helping us out with the kernel.

General information

Nexus 7 Kernel Notes

This is a collection of notes about the nexus 7 kernel relevant to discussions planned for UDS-R.

Kernel Delta

The nexus 7 kernel is based off of the 3.1.10 stable kernel with approximately 6100 additional non-merge commits. Many (likely most) of these are related to hardware support, including support for the tegra 3 SoC, nexus 7 board, and additional devices.

The following sections outline hardware support in the nexus 7 kernel that is not in mainline Linux as of the 3.7 merge window. Note that the list is a work in progress -- some hardware may be missing, and some drivers in the list may not actually be needed for the nexus 7.

Also noteworthy is the fact that in some places Google has squashed together a bunch of individual commits into a single commit. Therefore the raw change counts below may not be representative of the actual number of changes. The Original Google repository can be found at https://android.googlesource.com/kernel/tegra/. We sync up with new branches corresponding to new firmware updates there as Google makes them available.

Tegra 3 SoC Support

Device Drivers

Other Significant Changes

Breakdown of changes on top of 3.1.10

Paths with no changes were omitted.

Restricted Drivers

This page is a running record of any third party or restricted drivers utilized within the Nexus7 image.

Overview

See https://developers.google.com/android/nexus/drivers for the latest OTA update available and Nexus7 specific drivers.

Currently: the Nexus7 image is only shipping the Broadcom wireless and bluetooth firmware which is required for functionality within the linux-firmware package as well as nvidia-tegra3 which is provided from the Ubuntu archive. Lastly, Cardhu video codecs have been included from nVidia to support video playback.

Possible: no further inclusions planned

component

source

present in image

notes

wireless

Google

YES

Required for functionality provided via linux-firmware

bluetooth

Google

YES

Required for functionality, provided via linux-firmware

graphics

Ubuntu Archive

YES

Required for functionality, provided via nvidia-tegra3 package

video codecs

nVidia

YES

Required for functionality, video playback support

touchscreen

Google

NO

May be required if full functionality is not present with in-tree firmware investigation

Building the kernel

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 libncursesw5-dev

Get the source:

git clone git://kernel.ubuntu.com/ubuntu/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/Kernel (last edited 2012-12-04 15:06:34 by 79-119-113-201)