I've been quiet about Chromebook posts for a while, but I've been getting questions every now and then how things are moving along with respect to booting mainline kernels on the Samsung Chromebook. I'm very happy to give an update on that!

As of v3.10-rc4 (due at the end of the week), it should be possible to boot a mainline kernel on them! This is the result of work from a large number of people, including Samsung and Linaro engineers, and several team members from the Chrome OS project (+Doug Anderson and +Simon Glass in particular). It’s also using the new simplefb driver from Stephen Warren.
                                                              
See the post below on how to get things going, and at the bottom is a list of what is currently working and not (and what is needed to make it work).

So, what does it take to boot?

First, go to using nv u boot on the samsung arm chromebook | dev and read up on nv-u-boot. For our needs here, we need the simplefb version that is referenced there. This is keeping the framebuffer alive from when u-boot sets it up, so that the kernel can just use simplefb.

Also, when it comes to partitioning your SD card, I recommend doing 4 partitions. For details on how to use cgpt and how to partition, see the old post at https://plus.google.com/109993695638569781190/posts/b2fazijJppZ.

Partition 1: Kernel partition, regular Chrome OS kernel for whatever need you might have (i.e. same as previous instructions)
Partition 2: Another kernel partition with nv-u-boot on it at higher priority
Partition 3: Ext2 filesystem for /boot (important, should be ext2)
Partition 4: rootfs for Linux, ext4 or whatever you prefer

... or at least that's what the prepackaged nv-u-boot above presumes for its initial environment variables. You can change it at your own liking, of course.

Beyond this, the rest is easy peasy if you know how to cross-compile a kernel. Please don't ask here if you don't know how to, just wait for someone to wrap up an easier way to do these installs for you instead.

You need v3.10-rc4 when it comes out, or v3.10-rc3 + the fixes branch of the arm-soc git repo. I'll leave it as an exercise for the reader how to get a hold of those. Then just:

make exynos_defconfig
make uImage dtbs -j <# cpus + 1>

...and copy arch/arm/boot/uImage and arch/arm/boot/dts/exynos5250-snow.dtb onto the ext2 partition above.

Of course, you need to populate a rootfs, and you should consider populating modules, etc. I'm sure distros will wrap things up nicely for end users when things are closer to fully ready.

So, what works?
* Simplefb, a trivial 2d framebuffer without accelleration
* Keyboard, trackpad
* USB2 on the back
* SD card slot

Things known to not work yet:
* 3D with Mali. Please go ask ARM about this, not me. Or maybe Linaro. It's unlikely to happen any time soon. :(
* USB3. Driver work is still in progress on this.
* Wifi. The card reset sequence isn't done yet, so it's not powered up properly. I expect we'll have something for 3.11 for this.
* Camera isn't working yet. Same thing, needs some power plumbing.
* Audio is in unknown condition, and experimenting with this has proven to be risky, so please use caution if you're trying to make it work.
* Suspend/resume isn't working reliably at this point. I hope we can get basic stability in time for 3.11.

So, that's really it.

Just as with my previous posts on the subject, this is just meant to be a pretty raw dump of information for people to make progress with, and not intended for people who need more assistance. Let me know if I've missed something critical above though.

Happy hacking!
Shared publiclyView activity