Chromebook to Ubuntubook

Replace Chrome OS permanently with Ubuntu 16.04 "Xenial Xerus" on the Acer C720 Chromebook.

Ubuntu 16.04

Let's go!

Running a full-featured Linux on this little laptop is a delight: lightweight, several hours battery life, inexpensive, and snappy performance. I started with Debian, followed by Lubuntu 14.04 and Arch, and now running happy with Ubuntu + i3 tiling window manager.

This device is available in a few different configurations. Mine is the non-touchscreen model C720-2848 with (non-expandable) 2GB RAM and a (user-replaceable) 16GB SSD [1].

0. Recovery Image

Create a recovery image of Chrome OS (my C720 is model PEPPY C6A-N3C-A7O) to enable restoring the Chromebook to its default configuration. This will require a spare USB stick of 2GB or better:

  • Log into the Chromebook and let it auto update, as there sometimes are firmware updates... check the updating status in the browser at chrome://help
  • Insert the USB stick, enter chrome://imageburner and follow the directions to generate a recovery image

See: Create a Chromebook recovery image

1. Prepare install media

Download the 64-bit mini.iso installer and flash the image to a USB stick.

Alternative: Add the image to a USB stick with multiple Linux installers.

Using the minimal console installer (requires network connection) vs. the graphical Ubuntu installer provides more options during setup [2] and downloads all the latest packages.

2. SeaBIOS

SeaBIOS in combination with coreboot provides an open-source legacy BIOS that enables access to the MBR and the ability to install an alternative OS on the Chromebook. All this good stuff involves jumping through a few simple hoops and not trembling in fear at the "scary white screen" that pops up at power up stating that the boot loader detects something is very very wrong with the Chromebook and helpfully suggests pressing the spacebar to begin recovery. Do not press the spacebar or the Ubuntu installation will be wiped from disk!

There are 2 different methods for configuring SeaBIOS in preparation for installing Ubuntu. The first method uses a few simple commands in the Chrome OS shell to place the Chromebook into developer mode and allow booting the USB install media and replacing Chrome OS with Ubuntu. The drawback is that scary screen appears at every boot and you must press CTRL+L to boot to legacy-mode and onward to GRUB and Ubuntu (and ignore the helpful prompt to press spacebar and inadvertently begin the adventure of wiping clean the SSD).

The second method involves setting new flags for the write-protected Google Binary Block (GBB) in the device firmware. Delay at the boot screen can be reduced to a one second timeout and the legacy-mode BIOS set as the system default (no key combo required). Pressing the spacebar is disabled from doing any harm to Ubuntu (the Chromebook just beeps). The drawback is that it involves the (very simple) removal of the device's bottom cover and the temporary removal of the write-protect screw from the motherboard to permit flashing new flags to the GBB... and this may void the Chromebook's warranty (one of the case screws lies underneath a sticker declaring the warranty void if disturbed).

Experimenting with alternate OS installs on the Chromebook I first employed the developer mode method followed by the write-protect screw removal. I prefer configuring the device to default to legacy-mode BIOS but I have employed both methods successfully and describe their respective steps below.

Happy hacking!

2.1 Write-Protect Screw Method

Disconnect power. Turn the Chromebook over facing bottom up and remove the 13 screws (not missing the one hidden under the warranty sticker). Gently pry the case off starting with the seam where the display connects to device. It comes away pretty easy.

This is what you see ...

C720 annotated innards

[ Image: [3] The battery lock screw is #6 and the write-protect screw is #7 ].

WARNING! This will wipe out whatever is installed on the SSD ...

  • Remove the write-protect screw
  • Close back cover using only the battery lock screw to hold in place
  • Re-connect power, boot Chromebook and wait until it displays ...
Chrome OS is missing or damaged.
Please insert a recovery USB stick or SD card.
  • Insert USB recovery media prepared in Step 0 and it will proceed to restore Chrome OS and reboot
  • At default Chrome OS "Welcome!" screen open a terminal CTRL+ALT+F2 (Right-arrow)
  • Login as chronos (no password), then enter sudo su for superuser access

Set new GBB flags using the set_gbb_flags.sh script in Chrome OS. To enable short developer mode screen (1 second timeout) followed by default legacy mode boot use these flags ...

GBB_FLAG_DEV_SCREEN_SHORT_DELAY 0×00000001
GBB_FLAG_FORCE_DEV_SWITCH_ON 0×00000008
GBB_FLAG_FORCE_DEV_BOOT_LEGACY 0×00000080
GBB_FLAG_DEFAULT_DEV_BOOT_LEGACY 0×00000400

... which adds up to running in the shell ...

/usr/share/vboot/bin/set_gbb_flags.sh 0x489

Shutdown with ...

# shutdown -h now

... and disconnect the power ...

  • Remove the bottom cover again and reinstall the write-lock screw to protect the BIOS
  • Close cover and reinstall all the case screws

Re-connect the power, insert the USB stick prepared in Step 1, and power up the Chromebook [4].

See: Useful GBB flags for another new free software machine

2.2 Developer Mode Method

The alternative to removing the write-protect screw above is to place the Chromebook into developer mode using the Chrome OS shell before booting the USB install media ...

  • With the Chromebook off... Hold down ESC+F3 (Refresh) keys and power on the device
  • Invoke Recovery, and at the Recovery screen press Ctrl+D
  • Device will prompt for confirmation, press ENTER and the system reboots into developer mode
  • Scary white boot screen appears and you need to press Ctrl+D to continue boot [5]

Enable the USB Boot and Legacy BIOS modes by opening the shell with Ctrl+Alt+T and enter shell. Set dev_boot_usb and dev_boot_legacy to active ...

$ sudo crossystem dev_boot_usb=1
$ sudo crossystem dev_boot_legacy=1

Insert the USB stick prepared in Step 1, reboot the Chromebook and press CTRL+L at the boot screen to enter legacy boot mode.

See: Chromium OS developer information for the Acer C720 Chromebook

3. Install Ubuntu

My visual screenshot tour of installing Ubuntu 16.04 - a Long Term Support (LTS) release. Ubuntu's minimal install image makes it easy to create a console-only base configuration that can be later customized for various tasks and alternate desktops. I like the lightweight and delightful i3 window manager.

Chromebook's SSD will be divided into 3 partitions ...

  • sda1 is a 300MB boot partition
  • sda2 is a 1GB LUKS encrypted swap partition using a random key
  • sda3 uses the remaining space as a LUKS encrypted root partition using a passphrase

Update: I replaced the factory-installed SSD with a 256GB device and a revised partition scheme ...

  • sda1 is a 24GB root partition
  • sda2 is a 2GB LUKS encrypted swap partition using a random key
  • sda3 uses the remaining space as a LUKS encrypted home partition using a passphrase

4. Touchpad

Ubuntu installs a kernel with built-in support for the Chromebook's touchpad. Per-session modifications of touchpad settings can be made using synclient ...

$ synclient                 # display current settings
$ synclient TapButton3=2    # 3-finger tap = middle-click

To make any desired touchpad settings permanent create a configuration file in /etc/X11/xorg.conf.d ...

$ sudo mkdir /etc/X11/xorg.conf.d
$ sudo cp /usr/share/X11/xorg.conf.d/50-synaptics.conf /etc/X11/xorg.conf.d/50-c720-touchpad.conf

Modify this file to adjust timeouts, add tap-mouse actions (2-finger tap = right-click, 3-finger tap = middle-click), and 2-finger scrolling.

Sample config ...

Section "InputClass"
    Identifier      "touchpad peppy cyapa"
    MatchIsTouchpad "on"
    MatchDevicePath "/dev/input/event*"
    MatchProduct    "cyapa"
    Option          "FingerLow" "5"
    Option          "FingerHigh" "5"
    Option          "VertEdgeScroll" "0"
    Option          "VertTwoFingerScroll" "1"
    Option          "HorizTwoFingerScroll" "1"
    Option          "AreaRightEdge" "850"
    Option          "AreaLeftEdge" "50"
    Option          "TapButton1" "1"
    Option          "TapButton2" "3"
    Option          "TapButton3" "2"
EndSection

Note: If using Ubuntu's default Unity desktop ... you may find the 3-finger middle-click option requires a manual reset each session.

Fix: Stop the Gnome Settings daemon from overiding 50-c720-touchpad.conf ...

$ gsettings set org.gnome.settings-daemon.plugins.mouse active false

See: 50-c720-touchpad.conf, and pages for Touchpad Synaptics and the C720 Chromebook on ArchWiki

5. SSD

The swappiness parameter controls the preference of the kernel to move processes out of physical memory to the swap partition. Range is 0-100, default is set to 60 and lower values cause the kernel to avoid swapping and higher values prompt more frequent swap use.

Check the current swappiness value ...

$ cat /proc/sys/vm/swappiness

To reduce writes on the SSD set a low value of 1 by setting vm.swappiness=1 in /etc/sysctl.conf.

TRIM optimizes SSD performance and is enabled by adding the discard option to /etc/crypttab and /etc/fstab. Ubuntu auto-magically configures crypttab but fstab needs to be set manually.

Sample fstab ...

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda1 during installation
UUID=<______string___>  /              ext4    relatime,discard,errors=remount-ro 0       1
/dev/mapper/sda3_crypt /home           ext4    relatime,discard        0       2
/dev/mapper/sda2_crypt none            swap    sw,discard              0       0

After modifying fstab update /boot/initrd.img-* by running ...

$ sudo update-initramfs -u -k all

See: TRIM configuration on solid-state drives

6. Suspend

Problem: Suspend-and-resume generates a stream of errors ...

ehci-pci 0000:00:1d.0: port 1 resume error -19
ehci-pci 0000:00:1d.0: port 2 resume error -19
usb usb3-port1: over-current condition
usb usb3-port1: connect-debounce failed
usb usb3-port2: over-current condition
usb usb3-port2: connect-debounce failed

... and blocks the Chromebook from executing a proper restart/shutdown.

FIX: Create /lib/systemd/system-sleep/ehci-pci.sh ... [6]

#!/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
    ;;
    post/*)
    # Bind ehci for preventing error
    echo -n "0000:00:1d.0" | tee /sys/bus/pci/drivers/ehci-pci/bind
    ;;
esac

... and make it executable ...

$ sudo chmod 755 /lib/systemd/system-sleep/ehci-pci.sh

Configure boot options in /etc/default/grub ...

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash tpm_tis.force=1"

... save the changes and run ...

$ sudo update-grub

Suspend now works reliably when triggered from Ubuntu's shutdown menu or closing the lid and will resume the system with the desktop locked and a password prompt.

Source: ehci-pci.sh

7. Keyboard Shortcuts

Top row on the keyboard with the shortcut icons (brightness, volume, etc.) identify in Linux as the F1-F10 keys and the Search key (in the CapsLk position) acts as the Super (Windows) modifier key.

Create keyboard shortcuts by first installing ...

  • xbindkeys - associate keys to shell commands
  • xbacklight - set backlight level using RandR
  • pulseaudio-utils - manage sound with pactl
  • xvkbd - send characters to another client
$ sudo apt install xbindkeys xbacklight pulseaudio-utils xvkbd

7.1 Direction, Brightness, Volume, Page Keys

$ xbindkeys -k

Enable the function keys to modify the sound and brightness settings by creating ~/.xbindkeysrc ...

# ~/.xbindkeysrc

# backward/forward
"xvkbd -xsendevent -text "\A\[Left]""
F1

"xvkbd -xsendevent -text "\A\[Right]""
F2

# backlight decrease/increase
"xbacklight -dec 10"
F6
"xbacklight -inc 10"
F7

# volume mute/decrease/increase
# pactl - control a running pulseaudio server
# pactl list sinks - retrieve info
# on my c770 chromebook... single audio sink is 'Sink #0'
# named 'alsa_output.pci-0000_00_1b.0.analog-stereo'
"pactl set-sink-mute alsa_output.pci-0000_00_1b.0.analog-stereo toggle"
F8
"pactl set-sink-volume alsa_output.pci-0000_00_1b.0.analog-stereo -10%"
F9
"pactl set-sink-volume alsa_output.pci-0000_00_1b.0.analog-stereo +10%"
F10

# page up/down, home, end
"xvkbd -xsendevent -text '\[Page_Up]'"
Alt + Up

"xvkbd -xsendevent -text '\[Page_Down]'"
Alt + Down

"xvkbd -xsendevent -text '\[Home]'"
Alt + Left

"xvkbd -xsendevent -text '\[End]'"
Alt + Right

Enable the new key shortcuts by running ...

$ xbindkeys

Ubuntu auto-detects ~/.xbindkeysrc and will run xbindkeys on the next login.

See: xbindkeysrc, Xbindkeys, and another sample Chromebook-friendly xbindkeysrc

7.2 Power Key

Power key in upper-right corner ignores any configuration in the window manager and triggers poweroff without delay when pressed (easy to do by accident as its positioned next to backspace).

If you want to disable the power key edit /etc/systemd/logind.conf and set HandlePowerKey=ignore.

8. Wireless

Update: With the >= 4.2 kernels I have not been required to make any modifications. Works OK.

There are a few settings to modify to improve performance of Chromebook's wireless chipset. Identify the card and parameters ...

$ lspci | grep -i net
01:00.0 Network controller: Qualcomm Atheros AR9462 Wireless Network Adapter (rev 01)
$ modinfo ath9k | grep parm
parm:           debug:Debugging mask (uint)
parm:           nohwcrypt:Disable hardware encryption (int)
parm:           blink:Enable LED blink on activity (int)
parm:           btcoex_enable:Enable wifi-BT coexistence (int)
parm:           bt_ant_diversity:Enable WLAN/BT RX antenna diversity (int)
parm:           ps_enable:Enable WLAN PowerSave (int)
parm:           use_chanctx:Enable channel context for concurrency (int)

Create /etc/modprobe.d/ath9k.conf with the following options ...

options ath9k bt_ant_diversity=1 ps_enable=0

See: ath9k.conf, ath9k wireless driver and bluetooth coexistence

9. Microphone

Confirm the microphone is un-muted in alsamixer. Create /etc/modprobe.d/snd-hda-intel.conf ...

options snd_hda_intel model=,alc283-dac-wcaps

... and restart. Give it a try ...

$ arecord -d 5 chr-mic.wav
$ aplay chr-mic.wav

10. Good stuff

Happy hacking!

Notes

[1]Device information output of lshw, lspci, and lsusb.
[2]Specifically in this instance, the Ubuntu console installer provides a random key option for the encrypted swap partition.
[3]Image courtesy of Chromium.
[4]Whenever you remove battery power to the Chromebook (like opening up the case) the hardware clock on the motherboard resets to a future year (mine travelled to 2040). Providing a network connection is up during the Ubuntu installation the system should fetch a correct time from a NTP server. Otherwise fix the fallout from an incorrect clock by re-mounting partitions read-only and correct filesystem timestamps using fsck.
[5]Switching between developer and normal (non-developer) modes will remove user accounts and their associated information from the Chromebook.
[6]

Some HOWTOs talk about adding modprobe.blacklist=ehci_hcd,ehci_pci but in Ubuntu they are compiled into the kernel.

转载自:http://www.circuidipity.com/c720-ubuntubook.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要在Chromebook上安装Linux,您需要先启用Chromebook上的开发者模式。然后,您可以通过Crouton或Chromebrew等工具来安装Linux。安装Linux后,您可以使用Linux应用程序和命令行工具来扩展Chromebook的功能。但请注意,安装Linux可能会影响Chromebook的安全性和稳定性,因此请谨慎操作。 ### 回答2: Chromebook是一种基于Chrome OS的操作系统的笔记本电脑。虽然Chrome OS可以运行许多应用程序,但有些用户需要更广泛的功能,例如使用Linux的命令行和软件。因此,可以在Chromebook上安装Linux以满足这些需求。 首先,要安装Linux,您需要启用Chromebook上的“开发者模式”。要进入开发者模式,首先,请备份您的所有文件并确保Chromebook已连接到电源。然后,按住Esc + F3(Chromebook上的切换功能键)+ 电源按钮,然后释放所有这些键。Chromebook将进入恢复模式。 在恢复模式下,您需要按Ctrl + D,然后按Enter键。您将会收到一条警告,提示您确信要进入开发者模式。按Enter再次确认。Chromebook将自行重启并进入开发者模式。 现在您有了开发者模式,需要打开Chromebook上的“Linux(Beta)”功能。前往Chromebook的设置并选择“设备”>“Linux Beta”,随后按照提示启用它。系统将自动下载并安装Linux虚拟机容器。 与此同时,建议您下载和安装一个名为“Crouton”的Linux发行版,它与Chrome OS安装在同一个虚拟机容器中,并为您提供享有Linux游戏和软件的命令行界面。该软件也能帮助您在Chromebook上快速安装Linux发行版。 最后,为了使用Linux,您需要打开终端并输入以下命令:sudo startgnome 或 sudo startxfce4。这将启动您安装的GNOME或Xfce桌面环境。现在,您可以使用Linux命令行和应用程序,您可以在Chromebook上进行更广泛的任务! 总之,将Linux安装到Chromebook上是一个相对简单的过程,需要您注意一些关键步骤。一旦您完成了所有步骤,您将能够在Chromebook上使用Linux的命令行和应用程序,满足您更广泛的需求。 ### 回答3: 随着Chromebook在市场上的快速普及,越来越多的用户想要在Chromebook上使用Linux。Chromebook本身是一种基于Google Chrome浏览器的操作系统,但是安装Linux可以为用户提供更多功能和灵活性。 首先需要说明的是,Chromebook是基于Google Chrome OS的,这意味着它并不是一个传统意义上的计算机。Chromebook的本质是一款浏览器,因此它并不支持像Windows或Mac OS那样的原生程序安装。这就是为什么在Chromebook中安装Linux会比在其他设备上更加复杂的原因。 但是,Chromebook作为一种基于Linux内核的操作系统,是可以使用Linux的。Google为Chromebook提供了一个称为“开发人员模式”的选项,用户可以在这个模式下安装和运行Linux应用程序。以下是步骤: 步骤一:打开“开发人员模式” - 这个选项可以通过按下“ESC + 刷新 + 电源”来打开,这样您就可以进入Chromebook的开发人员模式。 步骤二:下载Crouton - Crouton是一个用于在Chromebook上安装Linux的软件。 步骤三:启动Crouton - 打开“终端”并输入以下命令: sudo sh ~/Downloads/crouton -t [desktop environment] [desktop environment]将是您想要安装的桌面环境。例如,如果您想要安装Ubuntu,这将是“xfce”或“unity”之一。 步骤四:等待安装完成 - 安装会需要一些时间。安装完成后,您将可以通过在Chromebook的开发人员模式下切换到Linux环境。 总的来说,Chromebook在安装Linux方面略有些复杂,但对于那些想要更多功能和灵活性的用户来说,这是一个值得尝试的方法。如果遵循正确的步骤,安装Linux将为Chromebook带来更多功用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值