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
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
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