Difference between revisions of "Acer C720 Chromebook"

From ArchWiki
Jump to: navigation, search
m (reword)
(added touchpad instructions)
Line 1: Line 1:
The Acer C720 Chromebook (and newer chromebooks in general) features a "legacy boot" mode that makes it easy to boot Linux and other operating systems. The legacy boot functionality is provided by the [http://www.coreboot.org/SeaBIOS SeaBIOS] payload of coreboot. SeaBIOS behaves like a traditional BIOS that boots into the MBR of a disk, and from there into your standard bootloaders like Syslinux and GRUB.
+
The Acer C720 Chromebook (and newer chromebooks in general) features a "legacy boot" mode that makes it easy to boot Linux and other operating systems. The legacy boot mode is provided by the [http://www.coreboot.org/SeaBIOS SeaBIOS] payload of coreboot. SeaBIOS behaves like a traditional BIOS that boots into the MBR of a disk, and from there into your standard bootloaders like Syslinux and GRUB.
  
 
== Installation ==
 
== Installation ==
Line 40: Line 40:
 
* Choose [https://wiki.archlinux.org/index.php/Beginners%27_Guide#GRUB GRUB] as your bootloader, for now.
 
* Choose [https://wiki.archlinux.org/index.php/Beginners%27_Guide#GRUB GRUB] as your bootloader, for now.
  
== Hardware Supported ==
+
=== Xorg Video Driver ===
  
* '''Wireless:''' Works
+
Use the {{ic|xf86-video-intel}} driver.
* '''Keyboard in Xorg:''' Works
+
 
* '''Video in Xorg:''' Works, use {{ic|xf86-video-intel}} driver
+
$ sudo pacman -S xf86-video-intel
* '''SD Card:''' Works
+
 
* '''Sound (built-in speakers):''' Works
+
=== Touchpad Kernel Modules ===
* '''Sound (headphone jack):''' Works
+
 
* '''Microphone (built-in mic):''' Works
+
Enabling the touchpad currently requires building a set of patched Haswell Chromebook kernel modules. Fortunately, ChrUbuntu put together a script for automatically building and installing these modules: [http://goo.gl/kz917j cros-haswell-modules.sh]. A modified version for Arch Linux is available here [http://pastebin.com/GxjspVLn cros-haswell-modules-arch.sh].
* '''Webcam:''' Works
+
 
* '''Bluetooth:''' Works
+
$ wget http://pastebin.com/raw.php?i=GxjspVLn -O cros-haswell-modules-archlinux.sh
* '''HDMI (Video):''' Works
+
$ chmod +x cros-haswell-modules-archlinux.sh
* '''HDMI (Audio):''' Untested, should work
+
$ ./cros-haswell-modules-archlinux.sh
* '''Touchpad in Xorg:''' Does not work -- touchpad does not show in {{ic|/proc/bus/input/devices}}. Only mention of mouse or touch in dmesg is kernel registering mousedev {{ic|[    0.623971] mousedev: PS/2 mouse device common for all mice}} driver, which is probably not what we need anyway.
+
 
 +
Add the Xorg touchpad configuration below for better usability.
 +
 
 +
{{hc|/etc/X11/xorg.conf.d/50-cros-touchpad.conf|
 +
Section "InputClass"
 +
    Identifier      "touchpad peppy cyapa"
 +
    MatchIsTouchpad "on"
 +
    MatchDevicePath "/dev/input/event*"
 +
    MatchProduct    "cyapa"
 +
    Option          "FingerLow" "10"
 +
    Option          "FingerHigh" "10"
 +
EndSection}}
  
 
=== Power Key and Lid Switch Handling ===
 
=== Power Key and Lid Switch Handling ===
  
Out of the box, {{ic|systemd-logind}} will catch power key and lid switch events and handle them: it will do a poweroff 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 may be pressed accidentally. Also, recovering from a suspend also does not seem to be fully working at the moment.
+
Out of the box, {{ic|systemd-logind}} will catch power key and lid switch events and handle them: it will do a poweroff 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. Also, recovering from a suspend also does not seem to be fully working at the moment.
  
 
To configure logind to ignore power key presses and lid switches, add the following lines to {{ic|/etc/systemd/logind.conf}}:
 
To configure logind to ignore power key presses and lid switches, add the following lines to {{ic|/etc/systemd/logind.conf}}:
Line 72: Line 83:
 
== Unresolved Issues ==
 
== Unresolved Issues ==
  
* Touchpad
 
* Recovering from a systemd suspend
 
 
* 64-bit installer ({{ic|Boot Arch Linux (x86_64)}}) causes an immediate system reset
 
* 64-bit installer ({{ic|Boot Arch Linux (x86_64)}}) causes an immediate system reset
* Syslinux fails to set the bootable flag with {{ic|syslinux-install_update -i -a -m}}. After setting the bootable flag manually in {{ic|fdisk}} and installing Syslinux to the MBR with {{ic|syslinux-install_update -i -m}}, SeaBIOS boots syslinux, but syslinux then complains about a missing OS.
+
* Recovering from a systemd suspend
 +
* Syslinux fails to set the bootable flag with {{ic|syslinux-install_update -i -a -m}}. After setting the bootable flag manually in {{ic|fdisk}} and installing Syslinux to the MBR with {{ic|syslinux-install_update -i -m}}, SeaBIOS boots syslinux, but syslinux then complains about a missing OS. Use GRUB for now.

Revision as of 09:01, 9 December 2013

The Acer C720 Chromebook (and newer chromebooks in general) features a "legacy boot" mode that makes it easy to boot Linux and other operating systems. The legacy boot mode is provided by the SeaBIOS payload of coreboot. SeaBIOS behaves like a traditional BIOS that boots into the MBR of a disk, and from there into your standard bootloaders like Syslinux and GRUB.

Installation

First enable legacy boot / SeaBIOS from the developer mode of Chrome OS. Then install and boot Linux as you would on a traditional x86 BIOS system.

Enabling Developer Mode

Warning: This will wipe all of your data!

To enter developer mode:

  • Press and hold the Esc+F3 (Refresh) keys, then press the Power button. This enters recovery mode.
  • Now, press Ctrl+D (no prompt). It will ask you to confirm, then the system will revert its state and enable developer mode.
  • Press Ctrl+D (or wait 30 seconds for the beep and boot) at the white boot splash screen to enter Chrome OS.
Note: To hard reset, press Esc+F3 (Refresh). This acts like a reset button on a desktop PC. The same warnings apply -- the OS cannot save itself from this, and data loss is possible.

Enabling SeaBIOS

After changing to developer mode, configure Chrome OS so that you can log in.

To enable the legacy bios:

  • Open a crosh window with Ctrl+Alt+T.
  • Open a bash shell with the shell command.
  • Become superuser with sudo bash
  • Enable legacy boot with:
# 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.

Installing Arch Linux

Create a USB drive with the Arch Linux installer. 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. Follow your favorite installation guide.

A few installation notes:

  • Choose the 32-bit Boot Arch Linux (i686), not Boot Arch Linux (x86_64). The 64-bit installer causes an immediate system reset on the C720.
  • A fresh DOS partition table on the SSD, with one bootable 16GB root partition works. Note that this will wipe Chrome OS. Other partitioning schemes (GPT, etc.) may also work, but haven't been explored here yet.
  • Choose GRUB as your bootloader, for now.

Xorg Video Driver

Use the xf86-video-intel driver.

$ sudo pacman -S xf86-video-intel

Touchpad Kernel Modules

Enabling the touchpad currently requires building a set of patched Haswell Chromebook kernel modules. Fortunately, ChrUbuntu put together a script for automatically building and installing these modules: cros-haswell-modules.sh. A modified version for Arch Linux is available here cros-haswell-modules-arch.sh.

$ wget http://pastebin.com/raw.php?i=GxjspVLn -O cros-haswell-modules-archlinux.sh
$ chmod +x cros-haswell-modules-archlinux.sh
$ ./cros-haswell-modules-archlinux.sh

Add the Xorg touchpad configuration below for better usability.

/etc/X11/xorg.conf.d/50-cros-touchpad.conf
Section "InputClass" 
    Identifier      "touchpad peppy cyapa" 
    MatchIsTouchpad "on" 
    MatchDevicePath "/dev/input/event*" 
    MatchProduct    "cyapa" 
    Option          "FingerLow" "10" 
    Option          "FingerHigh" "10" 
EndSection

Power Key and Lid Switch Handling

Out of the box, systemd-logind will catch power key and lid switch events and handle them: it will do a poweroff 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. Also, recovering from a suspend also does not seem to be fully working at the moment.

To configure logind to ignore power key presses and lid switches, add the following lines to /etc/systemd/logind.conf:

HandlePowerKey=ignore
HandleLidSwitch=ignore

and restart logind for the changes to take effect with:

$ sudo systemctl restart systemd-logind

logind will still log the power key and lid switch events to journald. See http://www.freedesktop.org/software/systemd/man/logind.conf.html for additional handling options.

Unresolved Issues

  • 64-bit installer (Boot Arch Linux (x86_64)) causes an immediate system reset
  • Recovering from a systemd suspend
  • 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.