From Fedora Project Wiki
A Samsung Exynos5 ARM-powered Google Chromebook 2012 model
DO NOT FOLLOW ANY OF THESE INSTRUCTIONS
Do not follow any of the following instructions. They are provided ONLY for Fedora ARM team members. By following these instructions, you may cause irreparable damage to your hardware - in particular, the speakers on your device, which can be overloaded by this software. Neither the Fedora Project, nor any of the members of the project are responsible in the event that you choose to follow these instructions. We will not provide end-user support at this time. Please do not follow these instructions.

Samsung Chromebook 2012

The 2012 Samsung Google Chromebook is a popular ARM-powered laptop form-factor computer due to its relatively low cost, high build quality, and good performance. It is one of the first Cortex-A15 based devices available, and as such is also of interest to those developing initial support for Linux virtualization technologies within Fedora and in the wider community.

Technical Specifications

  • 1.7 GHz Dual core Cortex-A15 Processor (EXYNOS5250 0x43520010 1MB L2)
  • 2 GB DDR3L RAM (800Mhz)
  • 16GB e.MMC iNAND internal (Chrome), SD|SDHC|SDXC slot (Fedora)
  • 11.6" (1366x768) display (powered by Mali-T604), with HDMI output
  • 802.11 b/g/n WiFi, and HSPA/EVDO (optional, with SIM slot)
  • 1xUSB2.0, 1xUSB3.0

For more information on the 2012 Samsung Chromebook visit the Samsung Chromebook website.

Running Fedora on a Samsung Chromebook 2012

Exynos5 Chrome Kernel
At this time, there is no official Fedora ARM kernel available for Samsung Exynos5 powered devices, although this is planned. Even when an official Exynos5 kernel is available - as part of the multiplatform kernel effort or otherwise - it may not support the Chromebook directly as some dependent code is not yet fully integrated into the upstream Linux kernel.

This page will give you detailed instructions for running Fedora 17 and Fedora 18 on your Samsung Chromebook, using an SD, SDHC, or SDXC card as the boot device. The configuration will provide the XFCE desktop environment.

Setting up developer mode and backing up firmware/modules on the Chromebook

Before you can begin to install Fedora, you will need to place the Chromebook into "developer mode". This is a special state that is able to run unsigned OS images. Instructions for entering developer mode on the Samsung ARM Chromebook are provided on the Chromium Projects website. The Samsung Chromebook differs from previous units by having a virtual developer switch, as opposed to a physical one. Entering developer mode can be summarized as pressing ESC and Refresh while pressing power (Recovery Mode), then pressing Ctrl-D to enter Recovery mode. A warning message will be presented. After that, the unit will reset to erase all persistent data, and will then be able to boot custom Operating Systems.

Once the Chromebook is in developer mode, you will need to switch to a vritual console (ctrl-alt-F2 - the "forward key" is F2) and login as "chronos" with password "chronos". From the shell, backup the content of /lib/modules, and /lib/firmware, and copy these over to another system, for example using ssh:

cd /
tar cvfj /tmp/firmware.tar.bz2 /lib/firmware
tar cvfj /tmp/modules.tar.bz2 /lib/modules
scp -v -C -r /tmp/firmware.tar.bz2 /tmp/modules.tar.bz2 user@desktop:~/

Download the Fedora filesystem archive

The first step is to download the armhfp "hard float" pre-built Fedora filesystem archive. This contains only the Fedora ARM filesystem, but not customized to a specific device. You will also require an empty (or otherwise sacrificial) SD Card for the installation.

Preparing an SD Card for use with the Chromebook

Linux instructions only
These instructions require the use of a Linux system. If you do not have such a system available, please wait for an official image. These instructions are adapted from Olof Johansson's original G+ posting, with thanks.

Insert the new or sacrificial SD Card into the SD Card slot on your Linux computer. Using a command such as "dmesg|tail", ascertain the name of the newly inserted device, which will be "/dev/sdb", "/dev/sdc", or similar. Note carefully the name. Then, use the GPT-capable gdisk partitioning utility (which you may need to install) to delete the existing partition(s):

$ sudo gdisk /dev/sdb

Type "d" (delete), then accept the default (1), or if there are multiple partitions, repeat the process until they have been deleted. Then, change the default alignment of newly created partitions to 8K:

x
l
8192
m

Next, create three new partitions, two for the kernel (and backup kernel - which is not used at this time, but will be later) of type 7f00 (ChromeOS kernel), and one for the root filesystem (Linux filesystem - the default type):

n
1
<enter>
+16M
7f00
n
2
<enter>
+16M
7f00
n
3
<enter>
<enter>
<enter>

Now write the changes to the card and exit gdisk:

w

Next, make and mount a new ext4 filesystem on the third partition of the device. Then, extract the Fedora 17 root filesystem you downloaded earlier:

sudo mkfs.ext4 -L rootfs /dev/sdb3
sudo mount /dev/sdb3 /mnt
cd /mnt
sudo tar xvfJ /path/to/fedora/17/filesystem/image.tar.xz

After creating the filesystem, and unpacking the F17 filesystem archive, you will need to add the system firmware and kernel modules matching the Chrome OS kernel that was backed up earlier in the process:

cd /mnt
sudo tar xvfj ~/firmware.tar.bz2
cd /mnt
sudo tar xvfj ~/modules.tar.bz2

Then you will need to edit /mnt/etc/fstab to contain the correct root filesystem entry, and to delete the entries for /boot/uboot and swap. Your fixed fstab should look like this:

LABEL=rootfs / ext4 defaults 1 1

For the next stages, you need to insert the SD Card into the Chromebook running in developer mode. Unmount the SD Card and remove it from your Linux computer. Then, insert it into the Chromebook. At the console, while logged in as "chronos", perform these steps to prepare a kernel image in the format recognized by the Chromebook modified U-Boot bootloader:

cd /tmp
echo "console=tty1 debug verbose root=/dev/mmcblk1p3 rootwait rw lsm.module_locking=0 " > /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

Now, write this kernel image to both of the partitions created earlier (note the use of "mmcblk1" and not "mmcblk0" - the latter is the Chrome OS volume):

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

Next, turn on booting from USB, which is a slight misnomer since it includes SD:

crossystem dev_boot_usb=1

Finally, prepare the GPT partitions on the SD Card with correct volume labels, boot priority order, and mark them as "successful" boot targets with these commands:

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

The Chromebook is now prepared for use.

Using Fedora on the Samsung Chromebook 2012

Once the SD Card has been prepared, and the device has been configured to boot from "USB" (actually SD Card), you can boot into Fedora. Reboot the Chromebook, either using "sudo reboot", or by depressing the power and "refresh" (cycle loop symbol) at the same time. At the scary boot warning screen, press ctrl-u and the device will boot Fedora from the SD Card.

To use Fedora 18 (or even 19 - but with the caveat that xorg does not work at this time) prior to the official release, first download and install the "fedora-release" package from Fedora 18 onto the Chromebook. Then, clean yum meta data and perform a yum install of the "yum" and "rpm" packages:

yum clean all
yum install rpm yum

Note that you will then need to immediately shutdown and remove the SD Card from your Chromebook, insert into a Linux desktop, and correct the dynamic linker path:

cd /var/run/media/user/rootfs/lib
sudo ln -s ld-2.16.so ld-linux.so.3

Then you can reboot the Chromebook back into Fedora and upgrade to Fedora 18 by performing a general "yum upgrade" process.

Additional Support

There are Fedora ARM users all around the globe - if you need assistance, would like to provide feedback or contribute to Fedora ARM please visit us on the IRC - we can be found in #fedora-arm on Freenode. You can also contact us on the mailing list - arm@lists.fedoraproject.org