Skip to content

Linux 使用杂记

简介

Ubuntu 一定是最容易上手和使用的 Linux 系统。深入使用了一段时间后,发现 Windows 上常用的软件都能在 Ubuntu 上找到替代品。以下是我在使用 Ubuntu 作为主力系统期间的一些记录。

代理

保证网络畅通才能进行各种各样的配置,一些简单的命令可以通过设置 clash 代理来完成。

Clash

不要 apt install clash,你会安装上一个好像是 Haskell 制作程序的东西。

我们将使用 Clash for Windows,这是一个基于 Clash 和 Electron 的 Windows、Linux 和 macOS 通用的 clash 客户端。

按照 在 Linux 上使用 Clash 作代理 的安装步骤,将 CFW 客户端放进 /usr/local/bin,这样就能在命令行中使用 clash 来运行 CFW 了。

从你的代理商处获取 clash 配置文件,替换掉 ~/.config/clash/config.yaml

在命令行中运行 clash,你可能看见如下输出:

INFO[0000] Mixed(http+socks) proxy listening at: 127.0.0.1:7890
INFO[0000] RESTful API listening at: [::]:9090

第一行是 clash 的代理监听地址,第二行是 clash 的 API 监听地址。把你的系统代理设置为第一行的地址即可。

为 CFW 设置开机启动、配置 UI 界面

首先将配置文件移动到 /etc 下:

sudo mv ~/.config/clash /etc

下载 yacd: Yet Another Clash Dashboard 的压缩包并解压到 /etc/clash/ui

config.yaml 中修改并添加添加:

external-control: 127.0.0.1:9090
external-ui: ui

访问 127.0.0.1:9090/ui 就可以看到 Clash 的图形界面啦。

使用 vim 增加 systemd 配置:sudo vim /etc/systemd/system/clash.service,内容如下:

[Unit]
Description=Clash Daemon

[Service]
ExecStart=/usr/local/bin/clash -d /etc/clash/
Restart=on-failure

[Install]
WantedBy=multi-user.target

启用服务:

sudo systemctl enable clash.service
sudo systemctl start clash.service

查看日志:

journalctl -e -u clash.service

为 APT 设置代理

同步

Syncthing

Syncthing 官方文档 完成 Syncthing 的安装。

使用 root 用户运行 syncthing 是不合适的,应当创建专门的用户。注意,应当为该用户创建家目录,否则 Syncthing 将因为无处存放配置文件而启动失败。

useradd --create-home syncthing

按照正常方式新建名为 Syncthing 的用户,分配 ~ 作为文件存储目录。

接下来配置 Syncthing 服务,官方已经创建好服务文件 /lib/systemd/system/syncthing@.service,只需开启即可:

sudo systemctl enable syncthing@username.service
sudo systemctl start syncthing@username.service

接下来你可以访问 127.0.0.1:8384 看到 Syncthing Web UI 的界面。

服务默认监听本地端口 127.0.0.1:8384。你可以更改配置文件($HOME/.config/syncthing/),使其监听公网地址,或者修改 service 文件(一般存放在 /etc/systemd/system/multi-user.target.wants/syncthing@syncthing.service),添加 -gui-address="0.0.0.0:8384 参数。但出于安全性考虑,应当使用 SSH 端口转发进行安全的访问。

ssh -L 本地端口:localhost:远程端口默认为8384 username@host

Tip

一定要记得在服务器防火墙开放 22000 端口。

Syncthing 默认监听该端口。如果未开启防火墙,则连接状态一般显示为“中继连接”,此时速度非常之慢。开放端口后,一般能够直接建立广域网 TCP 连接。

兼容性问题

在不同系统之间同步文件可能会出现兼容性问题,特别是嵌套 Git 仓库时,很有可能碰到 CRLF 和 dubious ownership 问题。

记得为所有跨系统同步的文件夹在所有客户端上都勾选“忽略文件权限”选项。勾选时,如果出现 dubious ownership 错误,可以设置 git config core.fileMode false 让 Git 忽略文件模式的改变。注意,该更改可能造成安全性问题,比如基于项目中的二进制文件执行权限等。在重要的项目中谨慎操作。

忘记 GUI 密码了怎么办?

  • 停止 syncthing 服务
  • syncthing generate --gui-password=myNewPassword --gui-user=newUserName
  • 重新启动 syncthing

或者你可以在 syncthing 的配置文件 config.xml 中进行更改:

<gui enabled="true" tls="false" debugging="false">
   <address>127.0.0.1:8384</address>
   <user>syncguy</user>
   <password>[protected]</password>
   <apikey>[protected]</apikey>
   <theme>default</theme>
</gui>

参考资料:

Onedrive

使用开源免费的 OneDrive Client for Linux 进行同步。请仔细阅读项目说明并按照说明完成安装。完成安装后,输入 onedrive --version 测试你是否正确完成安装。

接下来使用 OneDriveGUI 来配置账户和查看同步情况。

各种软件

使用命令行安装 .deb 软件包

sudo apt install ./xxx.deb
sudo dpkg -i ./xxx.deb

APT vs dpkg

  • apt 会自动下载并安装依赖项,dpkg 不会。
  • apt 使用 dpkg 进行软件安装。

社交

  • QQ。推荐直接在 Ubuntu 应用商店中下载。目前 Linux QQ 界面十分简洁,基本功能足够完善。
  • 钉钉。在官网下载 Linux 客户端,仅有 deb 安装包。使用体验与 Windows 版几乎一致。

办公

  • WPS Office。很实用,比 Libre Office 符合国人的使用习惯。

  • Typora。Typora 的 apt 源在国内无法解析(猜测是 .io 域名问题),安装过程的代理设置十分艰难。推荐直接下载 deb 安装包。没有 Windows 版的一体化界面。

  • 搜狗输入法。中文输入功能完善,比 Ubuntu 自带输入法智能太多。
  • emote。Linux 的 emoji 输入面板,挺方便的。
  • Tabby。目前我见过最好看、方便配置的跨平台终端,甚至提供了 Web app。GNOME 自带的终端在使用 zsh 的 powerlevel10k 主题时可能出现问题,tabby 则对各种功能都提供了完善的支持,比如可以保管 ssh 秘钥、记录上次退出时的终端状态等,资源占用也不高。
  • Pomodoro。GNOME 上的番茄计时器,简单实用,使用体验非常棒。

娱乐

  • Lollypop。音乐播放器,比自带的 RhythomBox 好看很多,对于专辑等也有不错的管理。
  • Spotify。很好的在线音乐平台。
  • VLC media player。视频播放器。

美化

其他

  • Deluge。轻量级 BT 客户端,比 qBittorrent 功能简洁,占用少很多。
  • tabby 终端,目前我见过最好看,同时方便配置的跨平台终端,甚至提供了 Web app。GNOME 自带的终端在使用 zsh 的 powerlevel10k 主题时可能出现问题,tabby 则对各种功能都提供了完善的支持。在我的 Ubuntu 上运行时,资源占用也不高。

更多软件

这些软件也不错,但并不推荐。它们的功能较少或不太完善、界面不够美观或很久没有更新。

  • Amberol。音乐播放器,极致简洁,比 Lollypop 好看一些,但只支持播放列表,播放体验并不好。
  • qBittorrent。AppImage 格式的 qBittorrent 内存占用极高,卡顿明显,不推荐使用。
Linux 上的安卓子系统

不要试图在 Linux 上运行安卓子系统,会变得不幸。

如果你对安卓应用有重度需求,可以尝试 Waydroid 项目。它使用 LineageOS 的安卓镜像,比 Anbox 新,对当前的安卓应用有较好的兼容性。

使用 Appimage 格式的软件

什么是 AppImage ?

参见官方文档:AppImage 让 Linux 应用随处运行

好习惯

把所有 AppImage 文件放在 ~/Application/opt 下,一些工具会自动扫描这些文件夹。

使用 appimaged 能够自动扫描 AppImage 文件并创建 .desktop 文件。

什么是 .desktop 文件?

Both the KDE and GNOME desktop environments have adopted a similar format for "desktop entries", or configuration files describing how a particular program is to be launched, how it appears in menus, etc. It is to the larger community's benefit that a unified standard be agreed upon by all parties such that interoperation between the two environments, and indeed any additional environments that implement the specification, becomes simpler.

把需要自动启动的 .desktop 文件拷贝到 ~/.config/autostart 即可实现自动启动。

使用技巧

  • 窗口飘到屏幕外去了

Alt+Space 跳出窗口选项菜单。参见 StackOverflow: Window appears off screen on ubuntu

  • 桌面管理

知乎:平铺式窗口管理器真的好用吗?

Ubuntu 自带的 Gnome 也有不少方便使用的快捷键,详见:Useful keyboard shortcuts

  • 高分屏缩放

GNOME 显示配置只能 100% 或 200%,使用 Fractional Scaling 效果很差。实测设置字体缩放效果最:gsettings set org.gnome.desktop.interface text-scaling-factor 1.1,对于我的 15.6 英寸笔记本来说 1.1 是最舒适的比例。然而这只是对 GNOME 相关软件进行了缩放,有些软件还需要手动设置。

参考:https://prinsss.github.io/setting-up-manjaro-linux/

  • 查看电脑功耗
awk '{print $1*10^-6 " W"}' /sys/class/power_supply/BAT0/power_now

或者安装 powertop 查看详细的硬件、软件功耗情况。

  • 驱动更新

Ubuntu 安装时不一定装上了最新的推荐驱动(独立显卡一般都没有装),使用该命令可以安装最新的推荐驱动,更好地管理硬件。

sudo ubuntu-drivers autoinstall
  • 自动挂载其他文件系统

更改 /etc/fstab 文件。该文件的配置可以参考 fstab - Debian

  • 字体

当你在 Ubuntu 上打开他人的 Office 文档时,常常遇到字体缺失的问题。Ubuntu 自带的字体比 Windows 少很多,中文更是寥寥无几。在 W7DF.com 可以下载各个版本 Windows 的标准字体包,将其解压到 ~/.fonts 即可。

  • 双系统时间不一致
timedatectl set-local-rtc 1 --adjust-system-clock

Windows 将硬件时间看做系统时间,而 Linux 将硬件时间看做 UTC 时间,在此基础上加上时区成为系统时间。

  • 合盖不休眠

Ubuntu 默认合盖休眠,虽然开盖恢复时间挺快,但恢复蓝牙需要一段时间。如果正在播放音频,就会社死。设置系统处理电源行为可以参考 简书:Ubuntu 笔记本设置合盖不休眠

终端重度使用者

  • Lynx 使用终端浏览网页。

测试下来,大部分国外网站对终端纯文本界面有较好的兼容性。国内网站使用终端浏览就是依托答辩。

与 Lynx 同类的还有 links 等。

brwosh 是一个更现代化的文本浏览器,能够渲染页面上的 JavaScript 等元素。依赖 Firefox,需要下载二进制文件使用。

校内网络和远程桌面

IPv6

使用 IPv6 的特定端口时,应当把地址用方括号括起来,否则会和端口号混在一起导致错误。正确的表示如:[2402:f000:1:801::8:28]:8080

在 CC98 上可以找到前辈们的各种分享,真是帮大忙了。然而,还是有很多东西要自己试过才知道能不能起效。以下是我设置时参考的一些帖子:

CC98上的参考贴
  • 更改端口:在内网(特别是相同子网)访问时,不需要更改端口。如果出现找不到设备,很可能是因为 RDP 协议的 3389 端口被校网出于安全原因禁用了。

未解决的问题是:

  • 通过 rvpn 在校外连接电脑的远程桌面。初步判断为手机端网卡 IPv6 功能不完善(查询是有 IPv6 网址的,但是联不通)。
  • 被控端,连接 l2tp 后无法被远程桌面连接,断开后可以。

拆机修理过程中,我弄断了笔记本无线网卡的天线,不得不被迫体验一把 Ubuntu 连有线网络。目前个人尝试下来,GUI 界面最好使用 GNOME 自带的 VPN,CLI 最好使用求是潮的 zjunet。如果会使用 CLI,那么 zjunet 不需要我过多介绍,你能自己了解它的使用方法(阅读 README 和使用 -h)。以下介绍 GNOME 的配置。

首先,Linux 发行版基本都不会附带 L2TP 协议支持,所以必须先用无线联网,或在其他电脑上下载好相关软件包。在 Ubuntu 中使用图形界面的 network-manager 时,需要:

sudo apt install network-manager-l2tp network-manager-l2tp-gnome

安装完成后,重启。在 VPN 界面可以创建 L2TP VPN,网关填写 10.5.1.9。在 PPP 选项中,“身份验证”全选,安全性及压缩仅勾选 BSD 和 Deflate。配置就完成啦!

网关选哪个?

在 L2TP VPN 的网关配置中,应当填写 10.5.1.910.5.1.10 (玉湖测试通过)。注意,网关和 Windows 中的 VPN 服务器不一样。lns.zju.edu.cn10.0.2.7210.0.2.73 (VPN 服务器的 IP)都是不行的。

CC98上的参考贴

蓝牙连接

blueman

一个管理蓝牙设备的软件 blueman,在 GitHub 有 项目主页,可以通过它监测各个蓝牙设备的连接状况。

首先,需要在 /etc/bluetooth/main.conf 中找到并修改如下值,才能连接蓝牙耳机:

ControllerMode = dual

连接成功后,试听了歌曲感觉音质很差,怀疑是蓝牙编码的问题。Ubuntu 自带 SBC 编码,而现在的蓝牙耳机至少都是 AAC 起步。于是查找资料,了解了一些 Linux 音频系统的知识。

Ubuntu 的音频由 pluseaudio 管理。插件 pulseaudio-modules-btpluseaduio 提供了 AAC、LDAC 等蓝牙编解码器。但该插件仓库作者已经不再维护,PPA 源也仅支持到 Ubuntu 20.04。查看 Issue 得知作者已经转移到 PipeWire,经过一番查找,我也找到了使用 PipeWire 支持高质量音频编码的博客:在 Ubuntu 21.10 上启用蓝牙 LDAC/AAC/AptX 高质量音频编码支持

按照博客安装完成后,我的蓝牙设置选项中并无 AAC 编码可选。阅读 Gist:Enable PipeWire on Ubuntu 22.04 发现 AAC 支持需要使用 PPA:pipewire-extra-bt-codecs,按说明完成安装后,就可以选用 AAC 编码了。虽然监控显示蓝牙传输仍只有 30 KB/S,但音质已经好很多了。

参考

参考资料

什么?你说不够你看!这里还有一些大佬调教他们的 Linux 系统的记录,可以看一看: