Chrome OS devices
This article is to provide information on how to get Arch up and running on the Chromebook series of laptops built by Acer, HP, Samsung, Toshiba, and Google. Currently overhauling all of this and trying to get more specific model pages built with uniform methods listed here.
Contents
- 1 Model Specific Overview
- 2 General Chromebook Installation
- 3 Installation on a Haswell Chromebook
- 4 Post Installation Configuration
- 5 Working inside Chrome OS
- 6 Samsung Series 5 550
- 7 Chromebook Pixel
- 8 See also
Model Specific Overview
Available | Brand | Model | Processor | RAM | Storage | Screen | Resolution | Weight | Base Price |
---|---|---|---|---|---|---|---|---|---|
Dec 2010 | Cr-48 | 1.66 GHz Intel Atom N455 | 2 GB DDR3 |
16 GB SSD | 12.1 in (30.7 cm) |
1280x800 (16:10) |
3.8 lb (1.7 kg) |
Not for sale. | |
Jun 2011 | Samsung | Series 5 XE500C21 |
1.66 GHz Intel Atom N570 | 3.06-3.26 lb (1.4–1.5 kg) |
$349.99 Wi-Fi $449.99 3G | ||||
Jul 2011 | Acer | AC700 | 11.6 in (29.5 cm) |
1366x768 (16:9) |
3.19 lb (1.4 kg) |
$299.99 Wi-Fi $399.99 3G | |||
May 2012 | Samsung | Series 5 XE550C22 |
1.3 GHz Intel Celeron 867 1.6 Ghz Intel Core i5 2467M |
4 GB DDR3 |
12.1 in (30.7 cm) |
1280x800 (16:10) |
3.3 lb (1.5 kg) |
$449.99 Wi-Fi $549.99 3G | |
Oct 2012 | Series 3 XE303C12 |
1.7 GHz Samsung Exynos 5250 | 2 GB DDR3 |
11.6 in (29.5 cm) |
1366x768 (16:9) |
2.43 lb (1.1 kg) |
$249.99 Wi-Fi $329.99 3G | ||
Nov 2012 | Acer | C7 | 1.1 GHz Intel Celeron 847 1.5 GHz Intel Celeron 1007U |
2-4 GB DDR3 |
320 GB HDD 16 GB SSD |
3-3.05 lb (1.4 kg) |
$199.99 Wi-Fi | ||
Feb 2013 | HP | Pavilion 14 Chromebook |
1.1 GHz Intel Celeron 847 | 14 in (35.6 cm) |
3.96 lb (1.8 kg) |
$329.99 Wi-Fi | |||
Lenovo | ThinkPad X131e Chromebook |
1.5 GHz Intel Celeron 1007U | 4 GB DDR3 |
16 GB SSD | 11.6 in (29.5 cm) |
3.92 lb (1.8 kg) |
$429 Wi-Fi | ||
Chromebook Pixel |
1.8 GHz Intel Core i5 3427U | 32 GB SSD 64 GB SSD |
12.85 in (32.6 cm) |
2560x1700 (3:2) |
3.35 lb (1.5 kg) |
$1249 Wi-Fi $1499 LTE | |||
Oct 2013 | HP | Chromebook 11 | 1.7 GHz Samsung Exynos 5250 | 2 GB DDR3 |
16 GB SSD | 11.6 in (29.5 cm) |
1366x768 (16:9) |
2.3 lb (1.04 kg) |
$279 Wi-Fi |
Nov 2013 | Chromebook 14 | 1.4 GHz Intel Celeron 2955U | 2 GB DDR3 4 GB DDR3 |
14 in ( 35.6 cm) |
4.07 lb (1.84 kg) |
$299 Wi-Fi $349 HSPA+ | |||
Unknown | Acer | C720 | 2 GB DDR3 |
11.6 in (29.5 cm) |
2.76 lb (1.25 kg) |
$199 Wi-Fi |
General Chromebook Installation
Pre-requisites
You should claim your free 100GB-1TB of Google Drive space before you install Arch. This needs to happen from ChromeOS(version > 23), not linux. This will sync/backup ChromeOS, as designed.
Developer Mode
Developer Mode information on all models is at [1].
First, enable developer mode on your Chromebook. Although everything in the "Downloads" area syncs to your Google Drive account, this will delete data stored on the hard or solid state drive.
Installation on a Haswell Chromebook
Arch Linux installation process on Haswell Chromebooks (Acer C720, HP 14 (Celeron 2955U), Dell 11, Toshiba CB30/CB35) should be the same with few minor adjustments.
Visit the specific Chromebook model ArchWiki page, google for guides and posts about installing Linux on the same Chromebook model, read the following steps and make sure you understand the installation process completely before making any changes.
If you install Arch Linux on a Chromebook model that doesn't have its own ArchWiki page then please consider creating one (See the Acer C720 for example).
First enable legacy boot / SeaBIOS, this can either be done by enabling the pre-installed version of SeaBIOS or by installing a custom ROM. The pre-installed SeaBIOS route has the advantage of being officially implemented by Google whereas the custom ROM route has other advantages such as being more up-to-date, reducing the boot time, removing the Developer Mode screen and enabling VMX. After accessing SeaBIOS you will be able to install and boot Linux as you would on a traditional x86 BIOS system.
Ctrl + L
every time you boot to reach SeaBIOS then you can set coreboot to boot to SeaBIOS by default so it isn't necessary to press Ctrl + L
; this currently must be done inside of Chrome OS and requires removing the write-protect screw, it might be a good idea to do this now so that you will not have to reinstall Chrome OS later with recovery install media.Enabling Developer Mode
Developer Mode is necessary to access the superuser shell inside Chrome OS; which is required to make the changes to the system to allow you to boot through SeaBIOS.
To enable Developer Mode:
- Turn on the Chromebook.
- Press and hold the
Esc + F3 (Refresh)
keys, then press thePower
button. This enters Recovery Mode. - Press
Ctrl + D
(no prompt). It will ask you to confirm, then the system will revert its state and enable Developer Mode.
Ctrl + D
(or wait 30 seconds for the beep and boot) at the white boot splash screen to enter Chrome OS.Accessing the superuser shell
After you have enabled Developer Mode you will need to access the superuser shell.; how you do this depends on whether you've configured Chrome OS or not.
Accessing the Superuser shell without Chrome OS configuration
If you haven't configured Chrome OS, just press Ctrl + Alt + F2
(F2 is the "forward" arrow on the top row, →), you'll see a login prompt.
- Use
chronos
as the username, it should not prompt you for a password. - Become superuser with
sudo bash
.
Accessing the superuser shell with Chrome OS configuration
If you have configured Chrome OS already:
- Open a crosh window with
Ctrl + Alt + T
. - Open a bash shell with the
shell
command. - Become superuser with
sudo bash
Enabling SeaBIOS
This method will allow you to access the pre-installed version of SeaBIOS through the Developer Mode screen in coreboot.
- Inside your superuser shell enter:
# crossystem dev_boot_usb=1 dev_boot_legacy=1
- Reboot the machine.
You can now start SeaBIOS by pressing Ctrl + L
at the white boot splash screen.
Boot to SeaBIOS by default
To boot SeaBIOS by default, you will need to run set_gbb_flags.sh
.
- Inside your superuser shell enter:
# sudo su
- Run
set_gbb_flags.sh
with no parameters.
# set_gbb_flags.sh
- Make sure you get the following output, see [2].
GBB_FLAG_DEV_SCREEN_SHORT_DELAY 0x00000001 GBB_FLAG_FORCE_DEV_SWITCH_ON 0x00000008 GBB_FLAG_FORCE_DEV_BOOT_LEGACY 0x00000080 GBB_FLAG_DEFAULT_DEV_BOOT_LEGACY 0x00000400
- Now set SeaBIOS as default.
# set_gbb_flags.sh 0×489
Installing Arch Linux
Create an Arch Linux Installer USB drive then plug the USB drive into the Chromebook and start SeaBIOS with Ctrl + L
at the white boot splash screen. Press Esc
to get a boot menu and select the number corresponding to your USB drive. The Arch Linux installer boot menu should appear and installation can proceed as normal.
64-bit installation with the newest 2014.07.03 ISO
Create a new FAT32 partition on your USB drive e.g. with gparted and label it as ArchLinux.
- Mount the new partition (replace x with the correct letter as shown with sudo fdisk -l and username with your own username)
# mount /dev/sdx1 /mnt/ -o uid=username,gid=users
Install GRUB2 on the USB drive
# grub-install --no-floppy --root-directory=/mnt /dev/sdx
Create a new directory in /mnt/boot
# /mnt/boot/archlinux-20140703-dual
Mount the archlinux-2014.07.03-dual.iso
$ mkdir ~/iso # mount -o loop archlinux-2014.07.03-dual.iso ~/iso
Copy the mounted files to the usb drive
$ cp -r ~/iso/arch/* /mnt/boot/archlinux-20140703-dual
Create the grub.cfg file
/mnt/boot/grub/grub.cfg
menuentry "Arch Linux 64 Bit" { linux /boot/archlinux-20140703-dual/boot/x86_64/vmlinuz archisobasedir=/boot/archlinux-20140703-dual archisolabel=ArchLinux initrd /boot/archlinux-20140703-dual/boot/x86_64/archiso.img }
Video Driver
See Intel Graphics.
Touchpad and Touchscreen kernel modules
Patches are required for kernel 3.16 to enable the touchpad and touchscreen, some of these patches already merged into kernel 3.17rc1.
Install a patched kernel
Install linux-chromebookAUR from AUR, see the comments for pre-built packages.
Manually build the modules
Visit the specific Chromebook model ArchWiki page for information how to manually build the modules.
Touchpad Configuration
There are few options how to set the touchpad.
- Visit the specific Chromebook model ArchWiki page for touchpad config file.
- Copy the config file from ChromeOS.
- Download a config file from the Chromium project [3], you can find out your touchpad model by running
cat /proc/bus/input/devices
- Use a graphical tool.
Fixing suspend
The following are instructions to fix the suspend functionality. Depending if you use the pre-installed SeaBIOS or John Lewis' pre-built custom ROMs with linux-chromebookAUR you might no need the following fix. With the recent 3.17rc5 kernel the suspend fix still needed.
There have been a few alternatives discussed and those may work better for some. [4] [5]
NOTE: Lid suspend doesn't work directly after boot, you need to wait a little.
Create the following cros-acpi-wakeup.conf
file.
/etc/tmpfiles.d/cros-acpi-wakeup.conf
w /proc/acpi/wakeup - - - - EHCI w /proc/acpi/wakeup - - - - HDEF w /proc/acpi/wakeup - - - - XHCI w /proc/acpi/wakeup - - - - LID0 w /proc/acpi/wakeup - - - - TPAD w /proc/acpi/wakeup - - - - TSCR
Then, create the following cros-sound-suspend.sh
file. Only the EHCI binding/unbinding lines are listed below; see the alternatives linked above for additional sound suspend handling if you experience issues.
/usr/lib/systemd/system-sleep/cros-sound-suspend.sh
#!/bin/bash case $1/$2 in pre/*) # Unbind ehci for preventing error echo -n "0000:00:1d.0" | tee /sys/bus/pci/drivers/ehci-pci/unbind # Unbind snd_hda_intel for sound echo -n "0000:00:1b.0" | tee /sys/bus/pci/drivers/snd_hda_intel/unbind echo -n "0000:00:03.0" | tee /sys/bus/pci/drivers/snd_hda_intel/unbind ;; post/*) # Bind ehci for preventing error echo -n "0000:00:1d.0" | tee /sys/bus/pci/drivers/ehci-pci/bind # bind snd_hda_intel for sound echo -n "0000:00:1b.0" | tee /sys/bus/pci/drivers/snd_hda_intel/bind echo -n "0000:00:03.0" | tee /sys/bus/pci/drivers/snd_hda_intel/bind ;; esac
Make sure to make the script executable:
# chmod +x /usr/lib/systemd/system-sleep/cros-sound-suspend.sh
Then add the following kernel boot parameters. Different combinations have been mentioned, with tpm_tis.interrupts=0
being the most important.
/etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet add_efi_memmap boot=local noresume noswap i915.modeset=1 tpm_tis.force=1 tpm_tis.interrupts=0 nmi_watchdog=panic,lapic"
Then rebuild your grub config.
Known issues
Syslinux
Syslinux fails to set the bootable flag with syslinux-install_update -i -a -m
. After setting the bootable flag manually in fdisk
and installing Syslinux to the MBR with syslinux-install_update -i -m
, SeaBIOS boots Syslinux, but Syslinux then complains about a missing OS. Use GRUB for now.
Post Installation Configuration
Hotkeys
The Chromebook function keys recognized as standard F1-F10 by the kernel, it's preferable to map accordingly to their appearance.
Sxhkd configuration
Sxhkd can specify behavior similar to the shortcut defaults in Chrome OS. Besides the sxhkd daemon, this requires amixer, xorg-xbacklight, and xautomation.
See [6] for an example configuration in ~/.config/sxhkd/sxhkdrc
.
Xbindkeys configuration
There is another way to configure hot keys using xbindkeys. This requires amixer and xorg-xbacklight. xvkbd is also needed for sending strings (key shortcuts) to focus windows. Some of the configuration comes from the thread vilefridge's xbindkeys configuration.
See [7] for an example configuration in ~/.xbindkeysrc
. Then edit Xinit and add:
xbindkeys &
Alternate xbindkeys configuration
Volchange uses PulseAudio for volume up/down/mute and a few other changes. [8]
After saving the script, make it executable
$ chmod u+x ~/.local/bin/volchange
See [9] for a matching ~/.xbindkeysrc
.
Patch xkeyboard-config
Install xkeyboard-config-chromebookAUR, for more details visit [10].
Power key and lid switch handling
Ignore using logind
Out of the box, systemd-logind
will catch power key and lid switch events and handle them: it will shut down the Chromebook on a power key press, and a suspend on a lid close. However, this policy might be a bit harsh given that the power key is an ordinary key at the top right of the keyboard that might be pressed accidentally.
To configure logind to ignore power key presses and lid switches, add the lines to logind.conf
below.
/etc/systemd/logind.conf
HandlePowerKey=ignore HandleLidSwitch=ignore
Then restart logind for the changes to take effect.
Power key and lid switch events will still be logged to journald by logind. See [[11]].
Ignore by Gnome
Install gnome-tweak-tool, open the Tweak Tool and under Power change the Power Button Action.
Working inside Chrome OS
cgpt command
You'll save your self a lot of time if you understand this command before you attempt to install Arch on a chromebook.
This is NON-EXHAUSTIVE but it'll help most people reading this. cgpt --help is nice too.
Use:
cgpt create /dev/sda
Used to initialise a disk with GPT headers.
Use:
cgpt show /dev/sda
To list all partitions on disk with boot information for each.
Use:
cgpt add [options] /dev/sda
Used to modify boot options
Example
cgpt add -i 6 -P 5 -S 0 -T 1 /dev/sda
Example: modify partition #6, set priority to 5, successful to false, and boot tries to once(1), on device /dev/sda
cgpt add -i 6 -t unused /dev/sda
Example: delete partition #6.
cgpt add -i 1-12
- Partition number to change
cgpt add -P 9-0
- Priority 9 > 1 (Higher number will try to boot first)
cgpt add -T 0-99
- Tries, used with the successful flag. Will try to boot this partition x times until tries = 0 then it will try next lower priority partition.
cgpt add -S 0-1
- Successful flag, if 1 will try to boot this partition forever. Be careful with this one! If 0 and tries > 0 it will try to boot this partition until it' out of tries.
If installing yourself, don't forget to copy this onto your arch partition!.
Samsung Series 5 550
Reminder- Needs to be moved to its own page given the boatload of new development surrounding this model including with coreboot / seabios.
Developer Mode
Developer mode on the Samsung Series 5 has two levels of access, "dev-switch on" and "dev-mode BIOS". With the first level you enable a command line shell, which lets you look around inside the GNU/Linux operating system, but does not let you run your own versions.
The second level of access installs a special BIOS component that provides the ability to boot your own operating systems from either removable (USB/SD) or fixed (SSD) drives. Both levels of access are completely reversible, so don't be afraid to experiment.
The second level (described above) is what we want in order to install Arch.
The switch is behind a little door on the right-hand side of the chromebook (as linked above). To enable the developer switch you open the door, use something pointy (paperclip or toothpick) to move the switch towards the back of the device, and reboot.
Chromebook Pixel
Suspending more than once causes a reboot unless the tpm module is enabled with specific options:
modprobe tpm_tis force=1 interrupts=0