How to update Chrubuntu 12.04 to Ubuntu 13.04

There are many users of so-called Chrubuntu which have Ubuntu 12.04 running on their Samsung ARM Chromebooks. And I do not support them with any updates so they wonder how to upgrade to 13.04 release. So I decided to spend some time and help with it.

For this I installed Chrubuntu 12.04 on SD card (not on internal as I have own installation of Ubuntu there) and I will go though upgrade to 13.04 and document all steps here.

First thing: if your Chrubuntu installation fails on fetching 4.7MB of “ubuntu-1204-binak.bz2” file then you probably started script with “sh” instead of “bash”. Abort process and run it with “bash” — it really needs it.

But ok, you got your Chromebook booted to Ubuntu desktop (running Unity 2D). Remember: your password is “user”. Open terminal (Ctrl+LAlt+t), get root and edit APT sources so they will point to “raring” instead of “precise”. Now refresh APT data and run distro upgrade (I used “apt-get dist-upgrade).

There may be some issues during upgrade. I had to run “apt-get -f install” and it removed some packages including “unity” and “ubuntu-desktop”. To get them back I needed “apt-get install ubuntu-desktop gnome-control-center nautilus nautilus-share nautilus-sendto eog unity libgnome-desktop-3.4 gnome-settings-daemon” command.

Next step is adding ARM Chromebook hackers PPA: “sudo add-apt-repository ppa:chromebook-arm/ppa” and again updating APT cache.

Now it is time to install Ubuntu kernel and tools: “apt-get install cgpt vboot-kernel-utils linux-image-chromebook. During installation you will get “Warning: root device does not exist” message during creation of initrd image. Just ignore that and then remove “flash-kernel” package.

Time to sign kernel. Create file with kernel command line. I suggest “console=tty1 printk.time=1 quiet nosplash rootwait root=/dev/mmcblk1p7 rw rootfstype=ext4″ but you can adapt it as you want. Sign kernel: “vbutil_kernel --pack /tmp/kernel-to-boot-ubuntu --keyblock /usr/share/vboot/devkeys/kernel.keyblock --version 1 --signprivate /usr/share/vboot/devkeys/kernel_data_key.vbprivk --config CMDLINE_FILE --vmlinuz /boot/vmlinuz-3.4.0-5-chromebook --arch arm. And do not forget to write it to SD: “dd if=/tmp/kernel-to-boot-ubuntu of=/dev/mmcblk1p6 bs=4M.

Time to reboot to 13.04. Less kernel messages on console then before but blue screen instead of Unity desktop ;( Good that “Ctrl-LAlt-1” switches us to text console.

Login as “user” (password is “user” as I mentioned earlier), gain root and install “chromium-mali-opengles” package. Now “restart lightdm” and check how X11 looks this time. Still blue? Switch back to text console then.

Now it is time to enable “universe” part of repository (I though that it is enabled by default). Edit “/etc/apt/sources.list” file and uncomment proper lines. Now we can install “armsoc” X11 display driver. Here you can curse at me — package in repository lacks Exynos5 part of xorg.conf ;(

But this does not change situation — still no Unity. At this moment I can recommend XFCE instead. Install “xubuntu-desktop” (181MB of disk space needed).

Ok, time to switch default session to Xubuntu one. Edit “/etc/lightdm/lightdm.conf” and set “user-session” to “xubuntu”. Save and “restart lightdm. Now you should land in XFCE session.

Are icons broken? If yes then you probably need to complete distribution upgrade. I had 725 packages to process… Once it done — restart X11 session.

So now I have working XFCE desktop with latest kernel. OpenGLES is not working but I have to check why.

Was it hard?

UPDATE: fixed OpenGL ES package name and improved formating so -- were preserved. UPDATE 2: fixed PPA name and partition number.

chromebook linaro ubuntu