Chromebook (XE303C12) 安装 ArchLinux

之前低价收到一个三星的 Chromebook,型号是 XE303C12。这几天想把它的系统改成 Linux,毕竟 ChromeOS 上的应用太少了。因为这个本子的 CPU 是 ARM 芯片,所以网上的资料少点,而且内核都是用谷歌提供的 3.8 版本的内核,只看到 ArchLinux 上有 4.16 版本的内核,所以决定安装 ArchLinux。

简介

首先看看这个 Chromebook 的配置。

1
2
3
4
5
6
Architecture: ARMv7 Cortex-A15
Processor: Samsung Exynos 5250 1.7GHz
RAM: 2GB
eMMC: 16GB
SD: Full SD
USB: 2

至少比同价位的买的树莓派的配置高的多了。

安装到 U 盘

首先本子目前是 ChromeOS,如果你想安装成 Linux 的话,先要把 Linux 安装到 U 盘,所有先准备一个 U 盘插入到 Chromebook 上。

开发者模式

关机,在开机的时候按住 ESC + Refresh + Power 三个键。在 Recovery 界面按 Ctrl + D,然后就会提示按 Enter 开启开发者模式。

外部启动

为了后面的从 U 盘启动,这里先要开启从外部启动。当你开启了开发者模式后,进入到系统,然后按 Ctrl + Alt + T 就会打开一个终端,敲 shell 就能进入 Bash,然后 sudo su 获取 root 权限。开启外部启动 crossystem dev_boot_usb=1 dev_boot_signed_only=0。重启后就能生效,你重启后可以敲 crossystem 验证之前的设置是不是成功了。

制作启动盘

这里我用 U 盘做启动盘。

  1. 和之前一样获取 root 权限。按 Ctrl + Alt + -> 也可以进入终端。
  2. 取消挂载的 U 盘。

    1
    umount /dev/sda*
  3. 给 U 盘创建分区表。

    1
    fdisk /dev/sda
  4. 进入到分区界面,按 g 创建分区,然后 w 开始真正的进行创建分区表。

  5. 开始分区。

    1
    2
    cgpt create /dev/sda
    cgpt add -i 1 -t kernel -b 8192 -s 32768 -l Kernel -S 1 -T 5 -P 10 /dev/sda
  6. 查看第二个分区的起点。用 cgpt show 查看。倒数第二行的 15633375 就是下一步需要用到的。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    localhost / # cgpt show /dev/sda
    start size part contents
    0 1 PMBR
    1 1 Pri GPT header
    8192 32768 1 Label: "Kernel"
    Type: ChromeOS kernel
    UUID: E3DA8325-83E1-2C43-BA9D-8B29EFFA5BC4
    Attr: priority=10 tries=5 successful=1

    15633375 32 Sec GPT table
    15633407 1 Sec GPT header
  7. 把第 6 步中记下的数字替换下面命令的 xxxxx。

    1
    cgpt add -i 2 -t data -b 40960 -s `expr xxxxx - 40960` -l Root /dev/sda
  8. 刷新分区。这里会报错,忽略即可。

    1
    partx -a /dev/sda
  9. 格式化第二个分区。

    1
    mkfs.ext4 /dev/sda2
  10. 下载镜像,并且放到第二个分区中。这里推荐用网易的镜像,不然太慢了。

    1
    2
    3
    4
    5
    cd /tmp
    curl -LO https://mirrors.163.com/archlinuxarm/os/ArchLinuxARM-armv7-chromebook-latest.tar.gz
    mkdir root
    mount /dev/sda2 root
    tar -xf ArchLinuxARM-armv7-chromebook-latest.tar.gz -C root
  11. 刷入内核部分。

    1
    dd if=root/boot/vmlinux.kpart of=/dev/sda1
  12. 取消挂载。

    1
    2
    umount root
    sync
  13. 重启电脑,然后在 Recovery 部分,要把开启验证,就是最开始为了进入开发者模式而关闭的验证,不开启的话不能从 U 盘启动。启动时按住 Ctrl + U 就可以从 U 盘启动了。

安装到系统

上面的步骤还保留了 ChromeOS,Linux 只是安装到 U 盘而已,我要把 ChromeOS 彻底替换成 ArchLinux,还要把 ArchLinux 安装到系统盘上。也就是 mmcblk0。因为 ArchLinux 没有 cgpt 命令,还要自行安装,pacman -S cgpt
把安装到 U 盘的教程中的 /dev/sda 替换成 mmcblk0,把 /dev/sda1 替换成 mmcblk0p1,把 /dev/sda2 替换成 mmcblk0p2。关机,拔下 U 盘,启动就可以进入 ArchLinux 了。

后续使用

更新

Arch 的特点就是滚动更新,拿到之后最好隔一小段时间就更新一下。

1
pacman -Syu

语言

默认的话你会发现 TTY 不能显示中文,需要设置 locale。修改 /etc/locale.gen 文件,取消注释下面两行。

1
2
en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8

然后重新生成一下区域信息。

1
locale-gen

接下来全局配置一下 /etc/locale.conf 文件。

1
LANG=en_US.UTF-8

或者不用全局配置,在 .zshrc 中配置也可以。

1
2
export LC_ALL=zh_CN.UTF-8
export LANG=zh_CN.UTF-8

时间

改成上海的时区。

1
timedatectl set-timezone Asia/Shanghai

开启网络对时功能。

1
timedatectl set-ntp true

添加用户

默认用户和密码都是 root,肯定不方便后续使用。

1
2
useradd -m -g 初始用户组 -G 额外用户组 -s 登陆shell 用户名
useradd -m -g users -G wheel -s zsh ouyangsong

别忘了给它设置密码。

安装 sudo 后,把 wheel 组都改成免密码使用 sudo 权限。编辑 /etc/sudoer,取消注释下面两行。

1
2
%wheel ALL=(ALL) ALL
%wheel ALL=(ALL) NOPASSWD: ALL

网络

使用 wifi-menu 命令就可以连无线网。因为我主要是远程登陆,所以还需要安装 openssh,这样就可以通过学校局域网 IP 登陆了。

Chromebook-ArchLinux

还有一个问题就是合上盖子后,网络就断了,这里需要编辑 Login Manager 的配置。修改 /etc/systemd/logind.conf 文件。
修改下面这行:

1
#HandleLidSwitch=suspend

改成如下:

1
HandleLidSwitch=ignore

这样就可以合上盖子,安心的做一个「高配树莓派」了。