这两日心血来潮给副系统装上了 Elementary OS。这一路配置相当地顺利,除了最后的一步。这里记录一下配置的过程及一些细节问题。

录制DD盘

这次安装的是Elementary OS 5.1,基于 Ubuntu 18.04 的发行版。在原系统下,上官网拿到了 ISO 之后就可以利用rufus将 ISO 烧制到 USB 中。这个也是安装双系统的常用软件了。将 ISO 读出后,选择 DD 模式烧制。烧制结束后准备工作结束。

安装系统

安装系统过程非常流畅。插上烧制好的 USB,重启进入 USB 启动。可能这里会进入 Grub,而不是进入 USB。此时需要进入 Grub 中的 Configuration 将 USB 调整为最高优先级,然后重启。

重启后会进入 Elementary 的安装引导。这一路没有特别需要注意的。最后需要提及的是关于分区部分。Elementary 自动识别出了之前在我的电脑上存在的 Ubuntu 19.04,于是默认选项是在该分区上使用新的系统对其进行覆盖。如果是新的双系统的话会需要重新选择分区。

到目前为止都是非常顺畅。(请不要连接 WiFi,之后会有时间更新镜像后再 update。)

进入系统

作为 Surface Book,安装双系统(或者说 Linux)系统,不能够开箱即用,有三个问题需要解决:

  1. Linux 会在后台挂起一个不知何物的进程,这个进程会始终占用 90%左右的 CPU。
  2. Linux 无法自动地在集成显卡和独立显卡间切换,导致耗电极快。
  3. 由于 Surface 的高分屏,Grub 界面字体非常小(尽管 Elementary 内部的分辨率是完全正常的,包括登录界面。)

为了方便,请现在这个时刻安装一个 vim 吧,后面会用上的。由于 vim 体积不大,完全可以先把换源的事情放在后面,基础设定要紧。

更换Kernel

为解决第一个问题,需要更换 GitHub 上大神完成且预编的Linux Kernel。找到 Release,获取其中的三个内核文件并安装。

1
dpkg -i *.deb

这样三个内核文件就安装好了。此时重启,在 Grub 界面中找到 Advanced Configuration 并选择 Surface Kernel 即可。

这个步骤真的是被坑了很久才摸清楚的处理办法。对于其他的 Linux 来说,这个方法也是完全可以使用的。这个 Kernel 理论上提供了对于触摸屏、物理按键,甚至热插拔的特性,但大神预编的版本并不包含触摸屏功能。(但谁会想在 Linux 下拥有触摸屏呢……)所以预编的版本完全没有问题。

自此那个恼人的后台在重启后就不会出现了。

安装显卡驱动

这是选择 Ubuntu based Linux 的主要原因。之前使用 Manjaro 的时候,会发现这个步骤非常困难,但在 Ubuntu 下完全可以接受了。

1
sudo ubuntu-drivers autoinstall

默认的显卡驱动完全没有问题。上述命令运行结束后,显卡驱动就安装结束。为了完全切换为核显,需要先重启(否则软件内部是一片空白)。重启后,打开这个软件的 GUI 界面就正常了,切换一次设定,将之改为核显驱动,随后重启。双显卡问题就此解决。

这个也是血泪教训。尽管网路上的冲浪人士宣称 Manjaro 或者 Arch 拥有更加方便的驱动配置,但对于我来说不是这样的。

Grub修改

Grub 修改完全可以和 Grub theme 的切换一起来完成了。先在Gnome的主题站上找到合适的 Grub 主题。我这次选择的是这个:Linux Mind。说实话不好看,但是也懒得接着找了。

将下载好的主题包解压,把他移动到一个特定的位置。为了方便我们先创建一个新的文件夹:

1
sudo mkdir /boot/grub/themes

然后把解压后的文件夹移入这个文件夹。

1
sudo cp 主题包名 /boot/grub/themes/

然后修改配置文件:

1
sudo vim /etc/grub.d/00_header

在最开始的注视内容之后添加:

1
2
GRUB_THEME="/boot/grub/themes/主题包名/theme.txt"
GRUB_GFXMODE="3000x2000x32"

3000x2999是 Surface 的分辨率。这样修改结束后,主题和分辨率就都调整好了。然后更新 Grub 配置文件:

1
sudo update-grub

更新结束后重启。这一个步骤就完成了。

后续

但现在距离一个好用的系统还有不少的步骤……比如好用的浏览器,舒适的输入法等等。在这些开始之前需要先更换镜像。

apt换源

进入文件:

1
sudo vim /etc/apt/sources.list

如果担心的话可以先做一个备份。然后用下面的内容替代该文件所有内容:

1
2
3
4
5
6
7
8
9
#清华源
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse

保存退出就结束了。然后运行一下:

1
2
sudo apt-get update
sudo apt-get upgrade

镜像工作至此结束。

更换输入法

类似 VS Code 或者 Vivaldi 啥的都非常简单,故不赘述。这里说一下输入法的问题。原配的 IBus 在 Ubuntu 下是能用的,但不知为何在 Elementary 下不能正常使用了。正好,那我换成 Fcitx 好咯。

注意:这里遇到了目前位置最为严重的 Bug。在执行这个操作以前,我可以进入”语言及区域“中的”键盘设定“处调整快捷键,但在该操作结束以后,该设定不再能被打开,并且在装回 iBus 后仍然处于不能使用状态。

Anyway,输入还是重要的,所以为了避免冲突,卸载 iBus,然后下载 Fcitx。

1
sudo apt install fcitx fcitx-sunpinyin

为了使用 Fcitx,这俩就够了。后面一个软件提供中文输入支持。

输入im-config设定 fcitx 为默认输入法,注销系统然后登入。

此时在 Application 处搜索 Fcitx Configuration(注意,这个需要搜索,它不会出现在目录中。),然后设定 Sunpinyin 的相关设定。此时即使选择了双拼,但输入的时候看起来仍然是全拼。这个 bug 重启之后就解决了。

然后是一些微调工作,比如将字体设定为 20 等等。

Grub customizer

尽管我们已经成功地调整了 Grub 的分辨率以及 Theme,但目前 Grub menu 非常地令人难受。为了仅保留我们需要的选项,grub customizer 作为一个 GUI 工具是一个方便的选择。

1
2
3
sudo add-apt-repository ppa:danielrichter2007/grub-customizer
sudo apt-get update
sudo apt-get install grub-customizer

后面的事情就比较直接了。

Fish shell

这个安装过很多次,应当轻车熟路了。

首先上官网添加 ppa。

1
2
3
sudo apt-add-repository ppa:fish-shell/release-3
$ sudo apt-get update
$ sudo apt-get install fish

安装结束后将 fish 设为默认:

1
chsh -s /usr/bin/fish

然后 Shell 默认会调起 fish,之后可以使用 bash 暂时回到默认的 shell。

最后修改 fish 的 greeting messege:

1
set -U fish_greeting "Bonjour! Joseph..."

Fish 的设置结束。更多设置,使用fish_config查看。

修改 ls 颜色

此外,由于 Terminal 默认的ls颜色比较难以接受,所以需要手动修改。而 fish 的方法和主流不太相同,这里做一下记录。

首先需要获得系统的配色方案,在此基础上修改:

1
2
cd ~
dircolors -p > .dircolors

这样配色方案就存放在文件.dircolors中,对这个文件进行修改即可。规则不一一列举,参见文后链接。为了让这个配色方案在 fish 中生效,需要修改 fish 的设定文件。该文件位置在:

1
~/.config/fish/config.fish

在该文件中添加:

1
eval (dircolors ~/.dircolors | head -n 1 | sed 's/^LS_COLORS=/set -x LS_COLORS /;s/;$//')

添加结束后重启 terminal 就可以了。

Autojump

安装结束 Fish 之后,我们就可以开始配置 Autojump 了,虽然简单,但很有帮助。直接使用 apt 安装 Autojump 是不可以的。需要这样处理:

1
2
3
git clone https://github.com/wting/autojump.git
cd autojump
./install.py

然后打开文件:~/.config/fish/config.fish,在其中添加:

1
2
3
4
5
6
begin
set --local AUTOJUMP_PATH $HOME/.autojump/share/autojump/autojump.fish
if test -e $AUTOJUMP_PATH
source $AUTOJUMP_PATH
end
end

然后关闭 Shell 再打开,设定就结束了。

按键重映射

按键重映射主要是为了让 Win 键代替右 Alt 键,让他发挥一点点小作用。这里需要用到工具 xmodmap。

1
2
xmodmap -e "remove mod1 = Alt_R"
xmodmap -e "add mod4 = Alt_R"

其中mod1代指 Alt 键,mod4代指 Super 键。具体的名称可以在后面链接中找到。但是这两个命令是临时的,在系统重启后就会消失。为了避免这个问题,我们需要设定开机自启。开机自启的方法很多,但是众多尝试都失败了。

这里记录的方法依赖 Gnome 的设定。在 Application 中添加一个用来替换按键的脚本,然后就可以开机后运行了。

WeChat & QQ

有的时候这俩软件还是相当必要的。这两个软件都需要 Wine 进行驱动。为了安装这两个软件,我们需要相当繁琐的设定。

安装Wine

先添加仓库:

1
wget -O- https://deepin-wine.i-m.dev/setup.sh | sh

然后安装对应的软件,表格如下:

应用 包名
TIM deepin.com.qq.office
QQ deepin.com.qq.im
WeChat deepin.com.wechat

使用以下语句安装:

1
sudo apt-get install deepin.com.wechat

至此,两个软件都可以正常地运行,但存在三个问题:

  1. 字体由于分辨率奇小无比。
  2. 中文无法正常显示(因为我习惯用英文系统)。
  3. 输入框字体不能正常显示(事实证明,这个原因和 2 中原因不一样。)

中文乱码

为了修正分辨率,我们需要 Wine 主体,但我们还没有安装。

在安装好了 Wine 之后,我们就开始解决乱码问题。打开/opt/deepinwine/tools/run.sh/opt/deepinwine/tools/run_v2.sh两个文件;将其中的WINE_CMD="deepin-wine"改为WINE_CMD="LC_ALL=zh_CN.UTF-8 deepin-wine"。这样就解决了中文乱码。

事实上,将系统改为中文也能够解决这个问题,但,嗯……还是英文更好看一些。(以及一些翻译不合理以及不完全的位置让人觉得有点难受。)

输入框问题

即使解决了上述问题,微信的输入框仍然处于乱码的状态,这是由于缺少字体。为了解决这个问题,我们将 Windows 中的字体移植到 wine 容器中的 Fonts 文件夹中,这样这个问题就解决了。

分辨率

以微信为例:

1
env WINEPREFIX="$HOME/.deepinwine/Deepin-WeChat" winecfg

会打开一个 GUI 界面用以调整屏幕分辨率。该分辨率需要针对不同的软件分别设置。该数值调整为 192 较为合适。

注意:这个步骤应当先打开一次软件,待 Wine 容器初始化之后再进行,而不是在安装了软件之后立刻进行,否则不会有任何变化。

至此微信和 QQ 的安装工作结束。但是目前没有完成系统托盘的修改。目前两个软件的小托盘图标会独立显示出来,这个问题放在以后调整吧。

Snapshot

Elementary 是优雅的,令人爱不释手的。在体验了一天的情况下,并没有出现令人难以理解、严重的 bug。其自带的日历、邮箱软件都充满了优雅的味道。整体的动画流畅舒适,快捷键分布自然高效。毫无疑问,这是一个满足了我目前基本需求的系统,我也愿意在短期内尝试将其作为主力使用去感受一下它的魅力。

参考链接