GNOME 3 experience on the Nexus 7

Thanks to Ryan Lortie who did all this before I did.

Install Ubuntu

The on-screen keyboard was unresponsive on the first reboot, so I was unable to enter timezone, wifi credentials and user data. Rebooting a number of times fixed this by degrees... on the third or fourth try I got past the wifi setup, and finished on the next. The installation proceeded to completion.

Update packages

This is a two-step process, where the first line below updates the local package index, and the second line installs available upgrades.

sudo apt-get update
sudo apt-get upgrade

It may be desirable to dist-upgrade rather than upgrade; see here for the distinction.

Install gnome-shell


sudo apt-get install ubuntu-gnome-desktop ubuntu-gnome-default-settings

...and selecting GDM as the default display manager. To switch later between GDM and LightDM:

sudo dpkg-reconfigure gdm

Upgrade to gnome-shell 3.8

The sources list for the armhf platform (Nexus 7) installation points at the repository where the armhf packages are uploaded. Newer Ubuntu source packages are available in the GNOME3 Team PPA repositories, but the corresponding binary packages are only available for i386 and amd64 platforms. Building and installing from the newer source packages involves adding the repositories to your sources list, installing the gnome-shell-3.8 source package and recursively installing and building the source packages of its missing dependencies until it builds. That looks like this...

Add the repositories:

sudo add-apt-repository ppa:gnome3-team/gnome3
sudo add-apt-repository ppa:gnome3-team/gnome3-staging

The deb-src lines in the resulting .list files in /etc/apt/sources.list.d/ will need to be uncommented.

Install the source for gnome-shell and attempt to install its dependencies:

apt-get source gnome-shell
sudo apt-get build-dep gnome-shell

Determine the package name for any missing dependency. Install and build each source package according to this procedure:

apt-get source <package>
sudo apt-get build-dep <package>

If the second line results in an error indicating a further missing dependency, repeat both steps for that package. When apt-get build-dep succeeds, cd into the <package> folder and run:

dpkg-buildpackage -rfakeroot -uc -b

If the build is successful, cd .. and install the individual deb package files (I left out the -dbg packages):

sudo dpkg -i <list of resulting deb files>

Return to the previous package on the list and repeat the procedure until gnome-shell is built and installed. Ultimately I built and installed these packages from source:










(Thanks to Jeremy Bicha and Rico Tzschichholz for the source packages, and Alban Browaeys for the debugging help.)

libcogl was a missing dependency for gnome-shell, but cogl-1.14.0 has recently been packaged for armhf. It should then be sufficient to run:

sudo apt-get install libcogl-dev

Aside: I did build cogl from source, however, and was able to verify that it includes the patch for this bug. The dpkg-buildpackage step failed because of the broken libEGL SONAME. I removed the nvidia-tegra3 package, successfully re-ran dpkg-buildpackage to completion, re-installed nvidia-tegra3, then the freshly-built cogl debs.

USB access

I ordered the cable from Amazon described here:

It enables the use of an external keyboard or (for example) the 32G USB stick I've found necessary to supply the storage to attempt to jhbuild gnome-shell.

I also connect using the serial debug shell, described on the above wiki page. (The screen command needs to be preceded by sudo when run from Ubuntu or openSUSE.) From the serial console I can update packages and play around with the configuration using vi or pico.

Config files

I uncommented these lines (and added my username) in /etc/gdm/custom.conf:

AutomaticLoginEnable = true
AutomaticLogin = mike

I edit /var/lib/AccountsService/users/mike to choose between Unity:


...and GNOME Shell:


I needed to remove a line from /usr/share/gnome-session/sessions/gnome.session, according to Comment 3:

Logging in to GNOME Shell

The errors in ~/.cache/gdm/session.log suggested the removal of specific .desktop files from /etc/xdg/autostart, particularly that of Nautilus. A warning and error in the session.log also indicate this bug. I'm able to log in from GDM but the top bar is unresponsive and GNOME Shell crashes easily. (The top bar is accessible with an external keyboard using the shortcut Ctrl-Alt-Tab.) The 3.8.0 packages ran reasonably well for a number of weeks while I built 3.8.1 and then 3.8.2 packages from the gnome3-team source, but neither of the newer versions of gnome-shell would start.

Upgrade to Saucy

I attempted to upgrade to Saucy Salamander, but the resulting OS wouldn't boot. After a hiatus of a number of weeks, and buoyed by Tista's experience, I have the following versions (from source) booting:














This involved reinstalling raring with the nexus7-installer package, editing /etc/apt/sources.list to replace all occurrences of raring with saucy, then running:

sudo apt-get update
sudo apt-get dist-upgrade

I then added the ricotz testing repo, in addition to the gnome3-team repos mentioned above:

sudo add-apt-repository ppa:gnome3-team/gnome3
sudo add-apt-repository ppa:gnome3-team/gnome3-staging
sudo add-apt-repository ppa:ricotz/testing

Again, the deb-src lines in the resulting .list files in /etc/apt/sources.list.d/ needed to be uncommented. I then repeated the procedure detailed in Upgrade to gnome-shell 3.8, above. As tista discovered, the key ingredient to a bootable tablet is a downgrade:


For this I downloaded the gnome-session armhf debs in that version here and installed them manually.

The biggest current issue is invisible or disappearing fonts in apps. The Shell crashes and sometimes comes back, particularly when Activities is touched or clicked (the Super key for overview access seems more robust).

MichaelHill/Nexus7 (last edited 2013-08-23 00:20:22 by MichaelHill)