Shared publicly  - 
 
Fedora 17 running on the new Samsung Chromebook shortly after unboxing.
44
21
Matt Reichmann's profile photoJohn Spence's profile photoMike Staszel's profile photoEarl Smith's profile photo
56 comments
 
Ha didn't even give Chrome OS a chance! I have the series 5 550. Love that thing. 
 
I looked around for five minutes and saw most of what I needed to see, heh. I'm actually pretty impressed with the desktop environment and since Fedora can happily run off an SD card I didn't have to get rid of ChromeOS. I'm mostly excited that this seems to be the first ARM laptop targeted for mass consumption. I wonder if ARM Holdings has any interest in buying AMD.
 
+Dinsan Francis Sure thing.

The following is a process for installing Fedora 17 with Xfce on a Samsung Chromebook. Many of the steps below were explained by +Olof Johansson, a Google developer, and have been repeated here for clarity.

Prepare a reasonably-sized SD card. A 4GB SanDisk Ultra was used to test this procedure.

Also download the "HFP XFCE image" from https://fedoraproject.org/wiki/Architectures/ARM
This is a Fedora 17 root filesystem designed for ARM platforms.

From Olof:
"Get an SD card, insert it in a reader on your Ubuntu PC (mine was a 16GB card that ended up at /dev/sdd on the PC, so the below reflects that):

First, the SD card needs a GPT partition table. I'm lazy and mixed tools here to make it easy for myself. First, I created the blank partition table in parted:

# sudo parted /dev/sdd
(parted) mktable gpt
(parted) quit

Then edit it with gdisk (apt-get install gdisk), since the syntax is close to what I am used with regular cfdisk. The first part sets the sector alignment to 4M based on the recommendation from Arnd in the comments below:

sudo gdisk /dev/sdd
x
l
8192
m

n
1
<enter>
+16M
7f00    (ChromeOS kernel)

n
2
<enter>
+16M
7f00

n
3
<enter>
<enter>
<enter>

This creates three partitions; two kernel ones and one for the root filesystem. I wanted two kernel partitions to make it easier to tinker with the kernel and have a fallback to a known-good kernel in case the one being tested fails.


Then, create a filesystem on the root partition:

sudo mkfs.ext4 /dev/sdd3
"

Once the filesystem is created, it needs to be mounted somewhere and the Fedora 17 filesystem extracted to it.
sudo mount /dev/sdd3 /mnt
sudo tar Jxvf ~/Downloads/Fedora-17-armhfp-xfce.tar.xz -C /mnt

Don't forget to unmount the filesystem when you are finished.
sudo umount /mnt

Now enable developer mode on the Chromebook, if it is not already, as it seems to be required for the rest of the procedure. This is accomplished through booting into recovery mode first by holding both the escape and refresh keys on the keyboard and then striking the power key. While in recovery mode, you can safely ignore any messages indicating the installation is broken. Press Ctrl+D while in recovery mode to enable developer mode. The prompt will ask for permission to clear all local data from the system before removing OS verification. It is an automatic process that takes about ten minutes. Once it is finished there is a message indicating that OS verification is disabled. This message will now appear at every boot time to indicate your system is in developer mode. Press Ctrl+D to continue booting ChromeOS.

Once logged in and have the SD card inserted, press Ctrl+Alt+T to open a crosh prompt.
Subsequently executing "shell" grants the familiar bash shell. From here run "sudo -s" to switch to root user as the following steps require root access.

From Olof:
"Now the only remaining piece is to put an actual kernel on the kernel
partitions of the SD card.

This is something I did on my Chromebook system directly. Be VERY careful here, mmcblk1 and mmcblk0 are very easy to mistype, and you won't like the results from doing it (I nuked my stateful partition by mistake once when I went through this because I dd:d a kernel to mmcblk0p1 instead of mmcblk1p1).

The kernel command line is going to be different from what you use for
Chrome OS, so you'll need to repack the kernel blob manually first. This
is what I did:

cd /tmp
echo "console=tty1 debug verbose root=/dev/mmcblk1p3 rootwait rw" > /tmp/config
vbutil_kernel --pack /tmp/newkern --keyblock /usr/share/vboot/devkeys/kernel.keyblock --version 1 --signprivate /usr/share/vboot/devkeys/kernel_data_key.vbprivk --config=/tmp/config --vmlinuz /boot/vmlinuz-3.4.0 --arch arm

Then I moved the SD card to the Chromebook, and wrote out the kernel:

dd if=/tmp/newkern of=/dev/mmcblk1p1
dd if=/tmp/newkern of=/dev/mmcblk1p2

Now, enable boot from "USB" (which includes SD card on these systems):
crossystem dev_boot_usb=1

Final step is to mark the partitions on the SD card as known good so
that the firmware will try to boot them:

cgpt add -i 1 -S 1 -T 5 -P 10 -l KERN-A /dev/mmcblk1
cgpt add -i 2 -S 1 -T 5 -P 5 -l KERN-B /dev/mmcblk1

I.e. mark both as successful, first partition as priority 10, second
as priority 5. I don't think tries are technically needed here since
the partition is already marked as successful, but I included it by
habit. Same with the label names, they shouldn't be needed."

Also copy over the modules and firmware to the root filesystem that was added to the card earlier. The filesystem on the SD card used in this procedure automatically mounted as /media/removable/External\ Drive\ 2/. It might be different. Check with the 'mount' command if not sure.
cp -rf /lib/modules/* /media/removable/External\ Drive\ 2/lib/modules/
cp -rf /lib/firmware/* /media/removable/External\ Drive\ 2/lib/firmware/

There were also a couple things that needed to be fixed before it was possible to log in to the new Fedora 17 system.

First remount the filesystem with some extra permissions.
mount -o remount,suid,exec /media/removable/External\ Drive\ 2/

Run a shell on the new filesystem.
chroot /media/removable/External\ Drive\ 2/

Give root a password.
passwd

Give guest a home directory and proper group.
mkdir /home/guest
rsync -a /etc/skel/ /home/guest
chown -R guest:users /home/guest
usermod -d /home/guest -g users guest

Exit the chroot environment and unmount filesystem.
exit
umount /media/removable/External\ Drive\ 2/

Now reboot the Chromebook. Instead of pressing Ctrl+D, press Ctrl+U to boot from the SD card. If all went well, the Fedora 17 boot process should stream down the screen. Thanks, Olof and Fedora ARM team!
 
I have a Samsung Series 5 550.  Would the process be significantly different than the one you outlined on chromestory?
 
+Dinsan Francis You're welcome. I hope it's helpful.
+Michael Fischer I haven't used one of those before so I can't really say with certainty, but assuming you can get to recovery mode and developer mode the same way I think the big difference would be finding and using a Fedora 17 x86 (or x64 depending on what your ChromeOS kernel was built for) root filesystem instead of the ARM one. You might be able to create one from an existing installation on a PC. Also, the device names could also be slightly different than the ones in this procedure and, as Olof notes, using the wrong device name can be dangerous to a ChromeOS installation. If you get it working, I'm interested to hear about it.
 
Just throwing this out there, the dev switch for the 550 is in the kensington lock slot and it's x86 architecture. 
 
How functional is Fedora on this device?  Any issues that still need to be worked out?  Also, with the success folks have been having with different distros -- does this mean that (theoretically) any distro would be successful as well?
 
+Christopher Hewitt Might be mistaken but above you have written :
cp -rf /lib/firmware/* /media/removable/External\ Drive\ 2/lib/modules/
Is this correct?
Should it be :
cp -rf /lib/firmware/* /media/removable/External\ Drive\ 2/lib/firmware/
 
+Darren Enns Maybe any distribution that supports ARMv7, anyway. Right now the things I see that don't work are 3D acceleration (in progress at http://limadriver.org/), limited functionality touch pad, and sound. I also blew out the audio amplifier while experimenting with mixer settings, so I don't recommend touching that yet.
+Chris Thornley Yes, you're right. I didn't do a very good job proofreading in the tiny submission text area. :o)
 
What about a video demonstration?
 
Copy in the X11 configuration too, and the armsoc.so and lots of other modules and libraries and you'll get partial HW accel working and a much better touchpad. The only thing that doesn't work fro me is GLX for accel.
 
Those are for an older Mali chip. On git.chromium.org there is source that makes the blob work, but you don't need to do anything with that. When I tried copying the glx stuff in, I got a bunch of segfaults. I haven't had time to look at it really.
 
Wikipedia says the GPU features OpenGL ES 3.0 so maybe GLX isn't meant to work at all? Isn't EGL used for OpenGL ES? Does Gnome Shell run accelerated on the binary blob?
 
Thanks for this... I have been thinking about getting this Chromebook. Running Fedora on it gives me another reason to consider it.
 
Total noob at Linux, is it possible for someone to upload an image of their sd card for dual booting? 
 
Just got my ChromeBook today (after a very long too long wait for the next shipment).   And nows it runs Fedora 17!  terrific !!
Christoper and Olaf, thanx for sharing these very helpful lines/comments to make it possible.
 
+Mat Kattanek congrats, it's running nice, I'm also thankfull for all work the open source community does to make these things possible. Go open-source
 
did anybody get sound to work?

what about 2finger scrolling with fedora17?
For the short time I ran ChromeOS I got reallly used to it.
I am running now xllerated X with cmt driver. really smooth touchpad now, but no 2 finger scrolling yet.
 
Would the same procedure work for a bootable usb drive?
 
+Jiading Gai I haven't tried it, but I think it would work based on "crossystem dev_boot_usb=1" being required to boot from SD card.
 
+Christopher Hewitt How's the performance on this?  You basically have Fedora on an SD card and you're also using the SD card for home directory storage as well, correct?  Is this noticeably laggy or is it zippy?
 
+Steven Harms It's quite slow for I/O operations. A `yum update` was pretty painful. I was also using a really old SD card so your mile may vary. The desktop is fairly usable once loaded into memory, though.
 
+Christopher Hewitt I'd like to be able to do simple hacking.  I may never leave the console so ideally tmux+vim && ( gcc || node || ruby ).  Is that hopeless?
 
+Steven Harms Should be easily doable. I was alternatively looking at trying to get the ChromeOS dev_install script to work so I could install extra packages through emerge and not boot to another OS, but it seems severely broken. There was a typo in the script that's been listed as a known bug for a long time, a repository location that is kind of a mystery, and missing dependencies. I suppose the developers just don't care that it doesn't work.
 
Thanks for these directions. I got all the way through, then it failed on the very last step - any suggestions for where things may have gone wrong?

cgpt add -i 1 -S 1 -T 5 -P 10 -l KERN-A /dev/mmcblk1
ERROR: cgpt add: GptSanityCheck() returned 2: GPT_ERROR_INVALID_HEADERS
 
+Martin P Can you start over from the beginning and send me a log with all the output from these commands?
 
Hey there, I just wanted to thank you for your hard work on this. The possibility of Linux was one of the main and only reasons for my moving to the chromebook, and that wouldn't be possible without people like you! If you are looking to move this tutorial to a more permanent spot, willing to donate space on my website. Message me if you're interested!
 
+Dinidh OBrien Thanks, but it's not really my hard work. Olof at Google and the Fedora ARM team are the real heroes here. I just spent a few minutes to put their work together. Feel free to repost the guide if you want!
 
ALL.. Great work thus far.  Was able to get Ubuntu,Fedora and a few others working great on device.  Was able to use Oracle's JDK8 Hard Float version on machine.  Java apps run awesome on device..  Next to work on getting opengl glesv2,etc working..  Again thanks all..
 
Just an update: I'm running Fedora 18 now with a class 10 SD card and the performance is great. It seems too run smoother than my MSI Wind U100 netbook.
 
Hi Christopher,  have you worked around getting performant a 3D and opengles2 working.
 
+Christopher Hewitt I redid it from scratch in this time it worked fine. I think I must have messed up the partitioning step. Thanks!
 
+Christopher Hewitt I'm having trouble with basically the whole process before using the chromebook, here are my issues (one might be causing the next): 

When using "mktable gpt" I get: "Warning: Partition(s) on /dev/sdb are being used. Ignore/Cancel" which I enter Ignore as to override those partitions. Then I enter "Yes" to the warning of destroying all data. This is where I get my first error:

"Error: Partition(s) 1 on /dev/sdb have been written, but we have been unable to inform the kernel of the change, probably because it/they are in use.  As a result, the old partition(s) will remain in use.  You should reboot now before making further changes.
Ignore/Cancel?"

Which I enter Ignore, then "quit" from (parted) and get prompted with "Information: You may need to update /etc/fstab. "

I proceed with the gdisk commands and all goes well, no errors. At the end, I enter 'q' to quit the command for gdisk. 

ERROR 2: When entering "sudo mkfs.ext4 /dev/sdb1" I get prompted with: "/dev/sdb1 is mounted; will not make a filesystem here!"

It then mounts back to the system but when extracting Fedora over I get an error ending it something along the lines of "Operation not permitted" "Cannot change ownership" and ends in a failure of:

"Exiting with failure status due to previous errors" which most (if not all) the lines above say:
"Cannot change ownership to uid 0, gid 0: Operation not permitted"
  
Sorry I'm a linux newbie, running Ubuntu 12.04.1. Please, please help! I love my chromebook and being able to run Fedora on this would be amazing. 
 
+Gary Collins I haven't. I'm just using the fbdev xorg driver and it does enough for me.

+Darryl Pierce Wireless works well since the kernel module and firmware get copied over from Chrome OS. I started over to get Fedora 18. There's a beta image for Pandaboard (also ARMv7) which I extracted the root filesystem from. I used `xzcat` to extract the image, `cfdisk` to examine the partition table, and then mounted the image on a loopback device using the block offset I found for the root filesystem in the partition table. Then I just copied everything over to my SD card. Pandaboard image here: https://fedoraproject.org/wiki/Architectures/ARM/Fedora_18_Beta/Pandaboard

+Martin P Excellent!

+Justin Angras Ubuntu is automatically mounting your SD card when you insert it, so just unmount it before you proceed. `umount /dev/sdb1` for example. Somebody probably has directions for Ubuntu or an image you can just `dd` to card if you'd prefer to use that instead.
 
I know I'm late to the game but just bought the Samsung Chromebook and google search led me here.  Great writeup!!  Wow.  I tried this first with a 16G usb drive and Fedora would start to load and then hang.  Today I got some free time and put it on a SD card and everything booted right up into Fedora 17 Xfce.  Next I have to try 18 which is what I have on my desktop.  Glad you went with Xfce, been using it for a few years and love it.  The only problem I am having is connecting to the network.  Nothing shows up.  I even tried an external usb wifi dongle to no avail.  My /lib/firware is full of folders and files (196 items) so I think I copied correctly.  Is anyone else having a problem with this?  Any suggestions on what to check? 

john
 
+John Spence What about /lib/modules? Does it have the matching directory to the ChromeOS kernel?
+Adam Abdul-Hakeem The C7 Chromebook is not based on ARM technology so these directions will not work. The good news is that the directions you do find for the C7 should be easier to follow than this.
 
but the only problem for the C7 is that the microphone does work period not for recording, skype, or any video chat
 
+ Christopher Hewitt  /lib/modules and /lib/firmware copied over and match and modules matches ChromeOS kernel.  It doesn't start by itself and I don't know how to start the ChromeOS version.  I know Fedora and how to use eth0 and wlan0 but those don't work.  I don't know how to get the ChromeOS one up.  BTW Thanks for your help.
 
+Adam Abdul-Hakeem Do you mean it doesn't work under ChromeOS? Or a custom Linux installation like this?
+John Spence It's difficult to say what went wrong. Wireless networking is supposed to work if you're running the ChromeOS kernel and have the firmware and modules copied over. I think the interface might be called mlan0, though. I think you should see it if you run `ip addr`.
 
noooooooo .. microphone doesnt work when i have linux Chrubuntu installed.. no one on skype can hear me and the plugin for google talk on linux is Crap, doesnt even execute.and has issues installing.. the mic doesnt work even if i try to record something.. all i hear is static.. 
 
I just did lsmod and got nothing listed.  what modules should be loaded for wifi (or for everything else for that matter) and how do I get them loaded.  modprobe gives "wrong argument" error.
thanks
Add a comment...