写在开头

Crostini是Chrome OS的一个子项目,它以容器化、安全的方式将Linux shell和应用程序引入ChromeOS。这种使用容器化的方式来载入Linux环境,在一定程度保证了安全性问题,同时,相比于传统的VM来讲不会有许多效能问题。
而在最新的Chrome OS中,默认安装的Linux版本为Debian 11(Bullseye)。该版本发布时间为2021年8月14日,已经是两年前的版本。最新的Debian 12 已经于2023年6月10日推出。本文将讲述如何在Chrome OS下安装以滚动更新为更新机制的Archlinux,从而取代默认的Debian 11。


启用多容器支持

在Chrome OS中,系统会默认安装Debian 11作为唯一的Linux环境,同时用户没有更改的方式,系统也没有提供多容器支持。但是,Chrome OS已经隐式地添加了该功能。只需启用flags即可。

访问 chrome://flags 页面,定位到 #crostini-multi-container,并选择启用。

选择启用后,需要重启一遍Chromebook进行激活。重新启动后,点击设置 > 高级 > 开发者 > Linux开发环境,此时应多出一个选项,即“管理额外容器”。

在该设置项中,默认会有一个penguin容器,这就是Debian 11容器了。


安装Archlinux

创建容器

在“管理额外容器”设置中,点击“创建” > 高级,这将打开一个个自定义容器镜像的界面。

在该界面中,我们需要自定义一个容器名称,同时粘贴镜像服务器地址与映像别名。

如果网络环境良好,可以使用官方镜像源:

https://us.lxd.images.canonical.com/
archlinux/current

如果网络环境较差,可以使用国内镜像源,但推荐使用官方地址。

https://mirrors.tuna.tsinghua.edu.cn/lxc-images/
archlinux/current

将容器名称、服务器地址以及映像别名填写好后,应该如下图所示:

填写完成后,点击“创建”,此时应该会弹出一个终端窗口。稍作等候,应该就可以在终端看到新的容器”Archlinux“了。

但别急,此时的Archlinux由于还没有安装与ChromeOS集成的访客工具,目前还处于无法使用终端打开的状态。我们是需要使用crosh打开。

用户配置

使用快捷键Ctrl+Alt+T,打开crosh。在crosh界面中,输入vsh termina,打开termina的管理工具。此时,我们可以输入lxc list来查看我们当前有多少容器。

可以看到,我们刚才创建的新容器已经显示在了列表中。同时是Running状态。在这里,本文使用Archlinux2这个容器进行演示。

接下来,使用lxc exec Archlinux2 -- bash来进入新创建的容器。注意,"Archlinux2"为你创建的容器名称,它会显示在Name列中。

进入容器后,使用该指令查找默认的用户名:

grep 1000:1000 /etc/passwd|cut -d':' -f1

默认的用户名应为登录系统的邮箱地址。如果需要的话,我们可以对该用户名进行修改:

pkill -9 -u old-username
groupmod -n new-username old-username
usermod -d /home/new-username -l newusername -m -c new-username old-username

上述指令请将old-username替换为默认用户名,new-username替换为需要修改的新用户名。

上述指令执行应为这样:

随后我们需要为该用户设置一个密码。使用passwd username指令。注意username应替换为用户名,同时密码输入时终端没有提示。

接下来,我们需要编辑sudo的配置文件,以便可以使用sudo:

visudo

在该文件中,找到%wheel ALL=(ALL) ALL一行,将前面的注释取消,同时为了能够在终端中使用,我们还需取消%wheel ALL=(ALL:ALL) NOPASSWD: ALL前面的注释。

将用户添加至wheel用户组:

usermod -aG wheel username

此时,我们对于用户的配置就结束了,已经可以使用新用户来登录Arch了。输入exit退出Arch,但不要关crosh页面。

安装访客软件包

使用lxc console Archlinux2打开Archlinux,并使用新用户进行登录。

首先需要做的是验证容器中的网络。若容器没有网络连接,则无法进行后续工作:

ip -4 a show dev eth0

若执行该指令后终端有输出,则代表容器有网络连接。

编辑/etc/pacman.d/mirrorlist,将国内镜像源添加至文件顶部。

# 清华源
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch

保存后,执行sudo pacman -Syyu更新软件包缓存。

为了能快速使用AUR,一种方法是直接安装Archlinuxcn源中的yay。我们需要在/etc/pacman.conf文件中添加ArchlinuxCN软源,在末尾粘贴如下内容即可。

[archlinuxcn]
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch

保存后,使用sudo pacman -S archlinuxcn-keyring导入 GPG key。

添加完成后,使用sudo pacman -S yay安装AUR管理程序。

使用sudo pacman -S base-devel安装打包工具,下面需要。

使用yay -S cros-container-guest-tools-git安装cros访客工具。

使用sudo pacman -S wayland xorg-xwayland安装wayland相关软件包,以使用GUI软件。

全部安装后,需要执行下面的指令,用于启动相关GUI服务。

systemctl --user enable --now sommelier@0
systemctl --user enable --now sommelier-x@0
systemctl --user enable --now sommelier@1
systemctl --user enable --now sommelier-x@1

启用完成后,就可以退出容器了。输入exit退出登录,然后按下Ctrl+A,然后按Q退出容器。

最后,右键终端应用,点击“关闭Linux”,停止所有Linux容器,然后再点击刚才创建的Archlinux容器,不出意外的话就可以在终端应用中使用了,同时在文件应用中,也可以访问容器内的文件。


配置中文环境

设置中文字体

首先,我们需要安装一些中文的字体:

sudo pacman -S noto-fonts noto-fonts-cjk noto-fonts-emoji ttf-sarasa-gothic

安装字体后,由于默认locale并不是中文,因此各种软件仍不会使用中文进行显示。

使用sudo vim /etc/locale.gen,去掉 en_US.UTF-8 UTF-8 以及 zh_CN.UTF-8 UTF-8 行前的注释。

使用sudo locale-gen令生成 locale

使用echo 'LANG=zh_CN.UTF-8' > /etc/locale.conf设置中文为默认locale。至此,软件程序将默认以中文进行显示。

但由于一些问题,若我们不进行配置,字体将默认使用日文字形进行显示。虽然可以正常阅读,但是看起来并不舒服。

此时,我们需要编辑字体配置文件,以使用正常的中文字形。

下载该配置文件:https://github.com/szclsya/dotfiles/blob/master/fontconfig/fonts.conf ,将该文件移动至~/.config/fontconfig,然后关闭Linux并重新打开,这样就完成了字体的配置。


主题配置

在默认的Debian 11发行版中,使用GUI软件会让人感觉Linux程序的UI和ChromeOS比较相洽,这是因为默认的容器带有GTK与Qt的主题。安装访客工具后的Archlinux容器也带有GTK主题,但却不带Qt主题。这里我们可以通过kvantum搭配Materia主题实现Qt程序不那么违和。

Kvantum

使用sudo pacman -S kvantum安装Qt主题管理工具kvantum。

安装后,使用vim ~/.config/environment.d/qt.conf编辑配置文件。在文件内添加QT_STYLE_OVERRIDE=kvantum,使Kvantum生效。

安装materia主题:sudo pacman -S kvantum-theme-materia

编辑/usr/share/applications/kvantum.desktop,创建一个kvantum的快捷方式,该快捷方式会在ChromeOS的启动菜单中显示。

sudo vim /usr/share/applications/kvantum.desktop

内容类似如下:

[Desktop Entry]
Name=Kvantum
Comment=Qt Theme Manager.
GenericName=Tools
Exec=/usr/bin/kvantummanager
Icon=/usr/share/icons/kvantum.png
Type=Application
StartupNotify=false

图标Icon可有可无,如需一个好看的图标,需要在网上搜索该图标,并保存至/usr/share/icons/kvantum.png

打开kvantum,点击“变更/删除主题”,在下拉列表中选择“MateriaLight”(也可以手动输入),并点击应用此主题。

此时,所有Qt程序均可使用该主题进行显示。

暗黑主题

所幸的是,GTK与Qt都提供了黑色主题。Qt的黑色主题仅需在kvantum中将MateriaLight改为MateriaDark即可,GTK的黑色主题需要编辑/etc/gtk-3.0/settings.ini文件,将gtk-application-prefer-dark-theme改为1即可启用黑色模式。


替换Debian

如需将默认的容器替换为Arch,首先需要将所有容器关闭。

打开crosh,使用vsh termina进入termina虚拟机。

使用如下指令将默认容器替换为Arch:

lxc stop --force Archlinux2
lxc stop --force penguin
lxc rename penguin debian
lxc rename arch penguin
lxc start penguin
最后修改:2023 年 10 月 09 日
赞助一杯冰阔落