Elementary OS双系统安装
这两日心血来潮给副系统装上了 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)系统,不能够开箱即用,有三个问题需要解决:
- Linux 会在后台挂起一个不知何物的进程,这个进程会始终占用 90%左右的 CPU。
- Linux 无法自动地在集成显卡和独立显卡间切换,导致耗电极快。
- 由于 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 | GRUB_THEME="/boot/grub/themes/主题包名/theme.txt" |
3000x2999是 Surface 的分辨率。这样修改结束后,主题和分辨率就都调整好了。然后更新 Grub 配置文件:
1 | sudo update-grub |
更新结束后重启。这一个步骤就完成了。
后续
但现在距离一个好用的系统还有不少的步骤……比如好用的浏览器,舒适的输入法等等。在这些开始之前需要先更换镜像。
apt换源
进入文件:
1 | sudo vim /etc/apt/sources.list |
如果担心的话可以先做一个备份。然后用下面的内容替代该文件所有内容:
1 | #清华源 |
保存退出就结束了。然后运行一下:
1 | sudo apt-get update |
镜像工作至此结束。
更换输入法
类似 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 | sudo add-apt-repository ppa:danielrichter2007/grub-customizer |
后面的事情就比较直接了。
Fish shell
这个安装过很多次,应当轻车熟路了。
首先上官网添加 ppa。
1 | sudo apt-add-repository ppa:fish-shell/release-3 |
安装结束后将 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 | cd ~ |
这样配色方案就存放在文件.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 | git clone https://github.com/wting/autojump.git |
然后打开文件:~/.config/fish/config.fish,在其中添加:
1 | begin |
然后关闭 Shell 再打开,设定就结束了。
按键重映射
按键重映射主要是为了让 Win 键代替右 Alt 键,让他发挥一点点小作用。这里需要用到工具 xmodmap。
1 | xmodmap -e "remove mod1 = 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 |
| deepin.com.qq.im | |
| deepin.com.wechat |
使用以下语句安装:
1 | sudo apt-get install deepin.com.wechat |
至此,两个软件都可以正常地运行,但存在三个问题:
- 字体由于分辨率奇小无比。
- 中文无法正常显示(因为我习惯用英文系统)。
- 输入框字体不能正常显示(事实证明,这个原因和 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。其自带的日历、邮箱软件都充满了优雅的味道。整体的动画流畅舒适,快捷键分布自然高效。毫无疑问,这是一个满足了我目前基本需求的系统,我也愿意在短期内尝试将其作为主力使用去感受一下它的魅力。