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.

How to update Chrubuntu 12.04 to Ubuntu 13.04

58 thoughts on “How to update Chrubuntu 12.04 to Ubuntu 13.04

  • 17th February 2013 at 01:35

    When you say latest kernel, are you talking mainline tip or chromeos 3.4 tip?

  • 17th February 2013 at 05:03

    Yes, kind of a pain! 🙂

    The package for the GLES drivers should be “chromium-mali-opengles”, not “chromium-mali-drivers”.

    Also, what does “Here you can curse at me — package in repository lacks Exynos5 part of xorg.conf ” mean? Is there something that needs to be added? For me, whenever lightdm starts, the entire machine hangs… not just a blue screen (stays black here?), and needs to be rebooted as well. Makes trying to figure out what’s going on very painful.

    • 17th February 2013 at 08:08

      It means that there is no “/etc/X11/xorg.conf.d/exynos5.conf” file to select “armsoc” x11 display driver so “fbdev” is used. But X session should start anyway.

  • 17th February 2013 at 09:07

    Not hard at all thanks to your exceptional directions. Thank you, a GREAT DEAL, this is exciting. I’m going to do this first thing when I wake tomorrow! Thanks again.

  • 17th February 2013 at 12:59

    Yesterday I tried to upgrade chrUbuntu 12.04 to 13.04 changing the sources from precise to raring. I was able to install everything,but when I rebooted the chromebook I got an error about something called playmouth that freezed the machine. Then I restored chrUbuntu to 12.04. At this time I don’t find very useful this upgrade,because I was really interested to the kernel. In fact I need to have the kernel 3.7 on my chromebook because the Xen virtualization support for the ARM architecture is on the Linux 3.7 kernel…

    • 17th February 2013 at 16:07

      Linux support for chromebooks will be mainlined for the Linux 3.9 kernel.

  • 17th February 2013 at 17:33

    Does this work for non-ARM devices as well?

  • 17th February 2013 at 17:40

    Does this work for the Acer C7 (non-ARM) chromebook?

    • 20th February 2013 at 07:12

      This seems to work on my Acer C7 up to the kernel instructions. I didn’t feel a need to upgrade my kernel at this time, but if I did, the instructions look like they’re probably work. Not sure if the chromebook hackers ppa has x86 stuff too, but it’s pretty easy to build your own kernel then bless it as shown above.

      • 21st February 2013 at 11:11

        PPA is for ARM Chromebook. On x86 ones I would rather go for normal Ubuntu kernels.

  • 17th February 2013 at 18:09

    Does it mean that I can use the generic linux kernel 3.9 on my chromebook ? but it isn’t out yet,right ?

  • 17th February 2013 at 19:15

    Let me explain what’s my project with my arm chromebook. I want to virtualize android on top of Ubuntu. I would like to use both the operating systems. I’m not very experienced in programming,but I like the computer’s world,so I’ve studied a little the scenarios. To accomplish this project I could follow more ways :

    1) to use LXC (linux containers) and build a chroot jail and virtualize android inside it. 2) to use XEN for ARM. In this case I need to use at least kernel 3.7 for ubuntu because the XEN supports starts from this kernel 3) to use QEMU+KVM 4) to use XVISOR hypervisor 5) to use CODEZERO embedded hypervisor

    Since as I said I’m not experienced,I would like that someone explains to me which way is easier and which kind of problems there are. Thanks.

    • 17th February 2013 at 19:32

      Sorry, but for such info you have to ask in other places. I suggest linaro-dev ML.

  • 17th February 2013 at 19:55

    ok. thanks.

    • 18th February 2013 at 22:22

      Sorry Mario but if you want to go to mainline then you should really know what you are doing. Asking for help on things like how to configure kernel? I suggest you to first compile standard Chromebook kernel (as this at least boots) and then make use of that knowledge with mainline.

  • 18th February 2013 at 22:40

    Basically I don’t need to know how to configure the kernel,but what are the choices that I have to make,according with the hardware of the ARM chromebook. I need something like this scheme :

    but the options selected on the picture aren’t for the ARM notebook,but for the X86 model.

    • 19th February 2013 at 18:57


      I think you can get the .config for the running kernel by doing:

      modprobe configs

      After you load the “configs” module you will have a file /proc/config.gz which is the config used to run the current kernel. You can then un-gzip that file and copy it over the .config of your kernel source.

  • 19th February 2013 at 19:18

    Another strategy if you don’t use chrubuntu and want to install 13.04 to your own root filesystem.

    1. create the new root partition on your device. format with ext4 mount it somewhere (e.g., /tmp/foo)

    2. download the “core” ubuntu disto for 12.10:

    3. untar the file downloaded from step #2: cd /tmp/foo (wherever you mounted your new partition in step #1) tar -xzf ubuntu-core-12.10-core-amd64.tar.gz

    4. chroot into your your new root partition: cd /tmp/foo (your mounted partition from step #1) mount -o bind /dev/ /tmp/foo/dev mount -t devpts devpts /tmp/foo/dev/pts mount -t sysfs sysfs /tmp/foo/sysfs mount -t proc proc /tmp/foo/proc chroot /tmp/foo bash passwd (to set the root password in your new root fs) cd /etc/apt cp sources. list sources.list.orig sed -ie ‘s/quantal/raring/g’ sources.list apt-get update && apt-get dist-upgrade && apt-get clean

      apt-get install xubuntu-desktop

    Then you can add Marcin’s PPA, enable “universe” repositotry, install the kernel, add vboot utils, etc. as described above.

    • 19th February 2013 at 19:19

      Sorry, you can remove the instructions I just posted above. The formatting is all messed up, so will probably cause more confusion than it will actually help someone.

  • 20th February 2013 at 01:11

    Thank you for these instructions. I went through and upgraded from CrUbuntu 12.04 -> 12.10 -> 13.04. Some feedback:

    1) WP formatting replaced all double dashes in options in your kernel signing example: 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.

    2) For some reason I ended up with different partition numbers — 6 for kernel and 7 for rootfs. Found that with sudo cgpt show /dev/mmcblk1 and adjusted dd command accordingly.

    XFCE desktop is very good choice. Another option is Gnome Classic/Fallback (sudo apt-get install gnome-panel), because it doesn’t require video acceleration.

    I think there is some issue with power management — it doesn’t always suspend if I close the lid.

    This little machine amazes me — I was even able to install Oracle Java for ARM (early access, hard-float enabled) and run some Grails application.

  • 20th February 2013 at 09:10

    Thanks, Jack D. I did a “make mrproper” without problems. Now what should I do to try the new kernel ? How can I install it ? I have a big confusion following the guide. It says that I need to Insert an SD card with an image that you installed with But I don’t know where is this script ? And which image ?

  • 21st February 2013 at 02:26

    I was not able to complete the upgrade, it failed to install some things, as you said it would, but trying to install those failed as well with a missing ‘hud’ package needed by unity core but not available in any repos, and it wouldn’t progress further. (apt-get -f install did not help matters).

    I am trying again, but removing unity and installing XFCE before the upgrade, but I am curious about the APT sources modification. Do I simply do a search and replace in /etc/apt/sources.list or is there more to it? (adding the PPA also failed, so I am unsure if I broke it by doing a search and replace for precise to raring in the sources.list).

    As a note, I had a completely up to date 12.04 (from the chromeos-cr48 how to) when I attempted this, not a clean 12.04 install. Any chance of a script to get 13.04 clean without going through 12.04?

      • 23rd February 2013 at 23:49

        I mean no disrespect, but I could not follow that post at all. Although you state it assumes some level of knowledge from the reader, I could still not make out enough to follow along. I am hardly a Linux novice (I have been using it almost exclusively for ten years, and have had no trouble with doing stage 2 Gentoo installs for example) but you assumed too much for me to follow. I am happy with the Arch Linux install until there is a Ubuntu install that is as trivial (i.e. a zip file that you zcat to the root of the SD). Or at least as trivial as the original chrubuntu install.

  • 21st February 2013 at 16:20

    hmm.. I did all of the above exactly as said .. but still ending up with a blue screen when trying to load xfce .. anyone get this to work?

    • 21st February 2013 at 23:20

      With a couple of changes I managed to get it to work until a final “apt-get dist-upgrade” resulted in the plymouth terminal bug.

      All that I did different was after 12.04 was installed, I removed unity and installed LXDE (the upgrade will not complete for me with Unity installed). I added the PPA manually because the line recommended in the how to didnt work for me. And I changed the mmcblk1p1 in the dd command to mmcblk1p6 (since the script I used to install 12.04 created a p6 and p7 not a p1). With that I had a working 13.04, though it had a bunch of (maybe 80 or so) “held back” packages still because something failed to update, a dist-upgrade to get those resulted in the known plymouth bug. I never actually got a blue screen or had to do anything after the initial 13.04 reboot, which just worked (well until that final update, and now its just a black screen).

      • 22nd February 2013 at 09:25

        Yeah – I corrected the ppa name as well .. also, I forgot to to do the final dist-upgrade .. I thought apt-get -f install finished things off, but no 🙂

        So .. stuck on the plymouth bug and not sure what the fix for that is .. I think we need a wiki or something to note these common issues .. or at least some sort of space where we can retire old information .. I feel like once we get a nice install going for 13.04 these comments will only mislead people 🙂

          • 23rd February 2013 at 03:44

            Intersting .. no X or anything though 🙂

          • 23rd February 2013 at 20:32

            Yeah but installing X (and a DE) is trivial. If I recall correctly, after I booted to the console, the following gave me a full XFCE (with a graphical greeter). These setups let you select your wifi connection, install xorg, xfce, and lightdm as well as set lightdm to start automatically (instead of sending you to a console on boot)

            pacman -S xorg xfce4 lightdm
            systemctl enable lightdm.service

            I did have to create a generic xorg.conf file setting the driver (I choose fbdev) but at the end of the day, with less work, I had an updated, working, fast, linux install on my chromebook, and this was more important than having a debian based install, though I would much rather that.

          • 23rd February 2013 at 20:36

            Really? Are new lines not recognized by this blog system? wifi-menu, pacman, and systemctrl are commands that begin individual lines. Please read it as such. (on a side note, a preview option would be nice, to see how the system is going to format a post!)

          • 23rd February 2013 at 21:54

            This blog uses Markdown for formatting posts and comments. I updated your comment to proper formatting.

          • 25th February 2013 at 04:00

            Hey Leto, how did you get the trackpad working in archlinux?

            I seem to be able to click but not move the pointer 🙂

          • 25th February 2013 at 04:37

            I did not do anything special to get the trackpad working. As with chrubuntu, the sensitivity is way off, so you have to press pretty hard to get the cursor to move, though after I was fully updated it fixed itself.

            Now when I was trying chrubuntu, I found this little gem that fixes the trackpad sensitivity issue also: xinput set-prop "Cypress APA Trackpad (cyapa)" "Synaptics Finger" 15 20 256

        • 25th February 2013 at 05:53

          Awesome .. seems I was just missing some packages for xinput ..

          I’m going to make a little blog entry about the archlinux option. Thanks for this.

          Did you have any luck with sound or brightness controls?

          • 25th February 2013 at 12:03

            Update kernel to R25 branch (like I did for Ubuntu). Setting mixer properly does not save you from broken apps. I got my speaker burnt second time when mixer was set properly and some application made some direct ALSA calls ;(

  • 22nd February 2013 at 10:18

    I’m trying to install the kernel 3.7 because I want to see how it works. According to the Olof Johansoon guide I need to create the kernel binary file (itb file) starting from the kernel.its file. To do this I need to create the kernel.its like this :

    root@localhost:/boot# nano kernel.its


    / { description = “Chrome OS kernel image with one or more FDT blobs”;

    address-cells = ;

    images { kernel@1{ description = “kernel”; data = /incbin/(“/boot/zImage”); type = “kernel_noload”; arch = “arm”; os = “linux”; compression = “none”; load = ; entry = ; }; fdt@1 { description = “exynos5250-snow.dtb”; data = /incbin/(“/boot/exynos5250-snow.dtb”); type = “flat_dt”; arch = “arm”; compression = “none”; hash@1{ algo = “sha1″; }; }; }; configurations { default = “conf@1″; conf@1{ kernel = “kernel@1″; fdt = “fdt@1″; }; }; };

    root@localhost:/boot# mkimage -f kernel.its

    kernel.itb sh: 1: dtc: not found mkimage: Can’t read kernel.itb.tmp: Invalid argument

    this is the error I get,how can I fix it ? I have no idea…

  • 24th February 2013 at 06:00

    I, too, was not able to complete the upgrade, though I closely followed the above instructions. I am stuck at the “plymouthd: ply-terminal.c.611: ply_terminal_open: Assertaion `terminal != ((void )0)’ failed” after a final apt-get dist-upgrade (there were no icons in X11). From ChromeOS terminal I added plymouth.override files to /etc/init/ and now I have a blank screen–no error message, no terminal. I have limited experience with linux, so I’m not going to get too creative with my problem-solving and I welcome your suggestions.

    • 25th February 2013 at 16:43

      Did you copy /etc/X11/xorg.conf.d/exynos.conf file from ChromeOS partition? If not, boot into ChromeOS and copy it to Ubuntu, under the same directory location. If that still doesn’t help, try editing this file and setting DRI2 option to false.

      Just for the reference, here’s the content of exynos.conf:

      Section "Device" Identifier "Mali FBDEV" Driver "armsoc" Option "fbdev" "/dev/fb0" Option "Fimg2DExa" "false" Option "DRI2" "true" Option "DRI2_PAGE_FLIP" "false" Option "DRI2_WAIT_VSYNC" "true"

      Option "Fimg2DExaSolid" "false"

      Option "Fimg2DExaCopy" "false"

      Option "Fimg2DExaComposite" "false"

          Option          "SWcursorLCD"           "false"


      Section "Screen" Identifier "DefaultScreen" Device "Mali FBDEV" DefaultDepth 24 EndSection

  • 25th February 2013 at 02:42

    I got it working, more or less. A friend and I wrestled it to submission, and now that he’s gone I can’t say exactly why I now have XFCE working with Ubuntu 13.04. The first step (from where I got stuck) was to create lightdm.override in /etc/init/ from the ChromeOS terminal. Then I had access to a command prompt. The X11 logs indicated that armsoc was not installed, there was an X segmentation fault at 0x0, and there was no directory /etc/X11/xorg.conf.d/. We installed armsoc, made a link from /etc/X11/xorg.conf.d to /usr/share/X11/xorg.conf.d, and then installed Gnome classic, which somehow magically started with a Ctr-Alt-backarrow and I got a login screen. From there I chose XFCE, which came up, and now only two things are obviously still broken: a 10-second timeout “unable to resolve host localhost.localdomian” and plymouth (whatever that is) is still off and presumed problematic. I don’t expect I can give anyone follow-able instructions, but my experience might point someone in the right direction. I have less than a week of experience with linux.

  • 25th February 2013 at 12:18

    Someone knows where I can find the fix for the brightness problem ? Thanks.

    • 25th February 2013 at 12:28

      What kind of brightness problem? Chromebook is using standard backlight subsystem so any good written backlight control app will just work. I use some kind of XFCE panel applet for it.

      • 25th February 2013 at 15:12

        I’m using CHR Ubuntu 12.04 with the standard kernel. On the energy saving configuration panel I’ve chosen to don’t suspend any part of the hardware when the notebook is not used,but to shut down the screen after 10 mins of non activity. In fact after 10 mins it becomes gray. The problem is that when i press a key it does not come back to normal. I’m sure that the chromebook is not freezed at all,because I have again the access throught the SSH. or maybe it’s the trackpad that does not reply anymore. I dont know…

  • 25th February 2013 at 12:29

    And one more thing guys: It is had to answer all your questions in comments. Can we move to Google+ Chromebook community instead?

  • 25th February 2013 at 12:32

    I’m using CHR Ubuntu 12.04 with the standard kernel. On the energy saving configuration panel I’ve chosen to don’t suspend any part of the hardware when the notebook is not used,but to shut down the screen after 10 mins of non activity. In fact after 10 mins it becomes gray. The problem is that when i press a key it does not come back to normal. I’m sure that the chromebook is not freezed at all,because I have again the access throught the SSH.

    • 25th February 2013 at 15:11

      or maybe it’s the trackpad that does not reply anymore. I dont know…

  • Pingback:Update ChrUbuntu 12.04 to 13.04 on the Samsung Chromebook | VirtuallyHyper

  • Pingback:Chromebook | World of XorA

  • 5th April 2013 at 17:12

    How can I boot to Ubuntu without a window manager? I’d like to boot straight to command line. Is this just a quick edit of a .conf file somewhere?

  • 22nd April 2013 at 19:01

    This is my second attempt to load 13:04. The first time I went from 12:04 to 13:04, it took 8 hours but I had to use Rescue package but after reboot it crashed; blank screen, and after another reboot it asked me for my password which was refused. Second attempt, upgraded to 12:10 then 13:04. This time much faster, about 4 hours, but same thing, incomplete and refused my password. I tried using “user” as password, no joy. Has anyone any ideas?

Comments are closed.