【DISTRO.0x01】如何正确打开 openSUSE Tumbleweed

本文最后更新于:2024年4月15日 下午

你说🉐对,但是 Arch Linux 是由 Arch 社区开发的一个 Linux 发行版…

0x00. 一切开始之前

笔者此前一直在用 Arch Linux,但是最近在帮中国大陆的一些 CTF 赛事出题时遇到了一些比较奇怪的问题:在使用 Docker 启动的 Ubuntu 环境中,用来启动题目服务的 xinetd 无法正常工作

不过也不是完全连不上,但是要等很久,笔者怀疑可能是内核安全策略的缘故(因为在容器内部用 nc 也连不上),于是笔者测试了市面上比较主流的口碑比较好的几个 Linux 发行版,除了原生 Ubuntu 以外也就只有 openSUSE 能够正常运行

当然, 有一个发行版是完全连不上,是谁呢

这样的话笔者完全没有办法在本地测试题目,再加上 Arch Linux 用起来 总是感觉有哪里没有配好的怪异感 ,只适合比较闲的时候折腾玩玩,日常使用或许还是一个常规点的发行版会更加安心一些,于是笔者在 Fedora Workstation 短期驻留了一段时间之后选择转向 openSUSE Tumbleweed ,和 Arch 一样是一个滚动发行版,但是 据说德国工艺比较值得令人信赖,SUSE 在企业市场的份额似乎也不小

需要注意的是,openSUSE 这个词读音为 /ˌoʊpənˈsuːzə/ ,相信不少人和笔者一样一开始会读成 /ˌoʊpənˈsuːz/ ,推荐观看这个视频(笑

事实证明,openSUSE Tumbleweed 给笔者一种又好又烂的感觉,好就好在德国工艺的 YaST 确实方便易用,对 KDE 的高适配性让笔者在 Fedora 上的各种自定义美化工作 不需要任何修改便能无缝进行偏移,仿佛自己从来没有换过系统一般令人安心 ,不好就在于官方自带的中文安装依托答辩,不仅安装界面蹦方块,切换到 Wayland 后自带的 fcitx5 直接罢工(与此同时先装英文系统再装中文语言包与输入法却能正常使用

但这并非是最要命的点,用的人少、社区活跃度不足才是最致命的,openSUSE 早期在中国大陆宣传不足,RHEL 和 Ubuntu 近乎蚕食掉所有的 Linux 市场后才姗姗来迟,现在在中国大陆能用的镜像站似乎都不剩几个中文论坛活跃度还比不上一些快死了的贴吧(英文论坛的活跃度还可以,但其实也差点意思),Wiki 建设度也不太足,这就导致很多问题只能参照其他发行版的类似情况自己再缝缝补补

最直接的后果就是在缺乏指引的情况下,笔者第一次在物理机上尝试 Tumbleweed 时 docker 直接无法正常拉镜像,第二次在物理机上尝试 Tumbleweed 时由于未更新 GRUB 配置导致几次在几次重新启动系统之后登录界面直接进不去了,只有一个鼠标能动,切进 tty 以后也一筹莫展(根本找不到使用 openSUSE 出现类似问题的案例与解决方案),在重装了七八次系统后按照第三方社区 ASUS Linux 的配置教程无意中解决了这个问题

但是 抛开事实不谈 抛开这些小毛病不谈,openSUSE 依旧是做得不错的发行版 ,Leap 有着超乎想象的稳定性与维护周期,Tumbleweed 在保证了其稳定性的同时依旧能紧追最前沿的技术,虽然国内没啥人用但在国外其实还是有着不错的口碑,因此笔者最终选择尝试在 openSUSE Tumbleweed 上开始自己新的旅程

至于为什么不用 Ubuntu 是因为 Ubuntu Desktop 依托答辩,经常能卡出各种玄学问题,软件包旧且难配,snap 这样混沌邪恶的东西更是让人谔谔,只适合放服务器上或是放在虚拟机里玩

至于为什么不用 Debian 则是因为在笔者感受起来这也是一个更适合在服务器上稳定跑应用的系统,能折腾的空间也不多(年轻人自己用的电脑当然要滚动发行版天天滚,我每天稳定在 Arch 上滚 114 次在 centos stream 上滚 514 次在 tumbleweed 上滚 1919 次并用 Gentoo 自行编译 810 次), 更重要的是 笔者手上没有Debian 盒装安装媒介 (笑

0x01. 安装前的准备工作

如果要和笔者一样安装 Windows + Linux 双系统的话建议先安装 Windows,因为如果先安装 Linux 的话 Windows 会对 Linux 空间乱动:(

因为安装的时候没有拍屏所以用虚拟机进行截图,毕竟总不能让👴把现在安好的系统再重新安一遍吧,那闲得没事做属于是

首先还是在 Windows 上打开 磁盘管理→压缩卷 划出来一块未分配空间,后面我们将在这块空间上安装 openSUSE Tumbleweed:

然后在官网下载镜像,并烧录到 U 盘中(大家应该都和笔者一样使用 U 盘进行安装吧),这里笔者选择使用 balenaEtcher 进行烧录,直接选择镜像和 U 盘就行:

0x02. 安装 openSUSE Tumbleweed

openSUSE 系统使用 YaST 进行安装,非常地舒适简便的同时也提供给我们许多可以客制化的地方

和前面一样都是在虚拟机中重新截的图,因为笔者安装时忘了拍了:)

惯例重启进入 UEFI 界面关闭安全启动将 U 盘设为第一个启动项进入 openSUSE Tumbleweed 的安装界面:

如果你是物理机安装而且没插网线会有一个额外的配置网络的环节,按照指引正常选择无线网卡连 WiFi 就行

这里注意安装语言选择 English,因为自带的中文安装有些小问题(他们那个是有点差的.avi),系统安装结束后我们再手动在系统中去安装中文相关的东西:

Online Repositories 建议全选:

桌面就按需选择了,笔者推荐选择 openSUSE 默认的 KDE Plasma :

硬盘分区的话笔者建议还是手动分区(选择下方的 Expert Partitioner 按钮中的 Start with Existing Partitions,之后直接选中对应硬盘并 Add Partion... 就会有非常细致的分区创建引导),因为他自动分区的逻辑有点怪怪的(之前自动分区差点把笔者原本的数据盘给抹了),主要是两个分区:

  • EFI 分区(EFI Boot Partion必须为 fat32 格式):放 GRUB 和内核的地方,用来启动系统,需要挂载在 /boot/efi 下边
  • 系统分区(Operating System,推荐还是 ext4,brtfs 强制重启会炸):系统基本环境,需要挂载在 / 下边

这里笔者不推荐和 Windows 混用同一个 EFI 分区,最好自己自立门户,一是 Win 原本的 EFI 分区实在太小随便塞点东西就爆了,二是独立分区干啥都方便不会影响到隔壁的 Win

当然,也可以像笔者一样额外分一个分区做数据分区挂在 /home 下边,后面重装各种其他发行版都方便, 因为这里是虚拟机演示所以就只分了两个分区

时区设置和创建用户这种常规操作笔者就不截图了,最后来到安装前的最后确认环节,这里笔者建议把 Secure Boot 给关了,不然后面升级闭源显卡驱动可能会比较麻烦,以及笔者觉得这个特性在个人电脑上完全没必要,真有人会来打吗

安装好后会自动重启,这个时候默认进的就是 GRUB 界面了,可以选择进入 Windows 还是 Linux:

这里不得不夸的一点是openSUSE 无缝地将笔者之前的 KDE 美化给迁移了过来(当笔者从 Arch 往 Fedora 上迁移时、重新安装 Fedora 时,这块都没太能处理好),把 latte-dock 给安装上之后笔者就像没换过系统一样:

0x03. 安装 NVIDIA Driver

openSUSE 默认不引入 non-OSS 软件,所以默认为 NVIDIA 显卡安装的是开源的 nouveau 驱动, 因为是社区逆向出来的所以不仅功能不全而且性能吊差 ,所以我们需要安装 NVIDIA 的官方驱动以获取更好的使用体验。

闭源驱动(by default)

如果你用的是 A 卡或者仅有核显,则可以跳过这一章节

YaST 是很好很强大的一个综合性工具,这也是 SUSE 系发行版的魅力之一,通过 YaST可以非常方便地管理包括软件安装在内的各项系统配置

首先用 zypper 引入 Nvidia 驱动仓库:

1
sudo zypper addrepo --refresh https://download.nvidia.com/opensuse/tumbleweed NVIDIA

然后打开 YaST->Software Management,她会直接帮你选好需要安装的包,直接安就完事了:)

当然,你也可以手动进入 YaST->Software Management->View->Repositories->NVIDIA 选择要安装哪些包,一般来说最新的 NVIDIA 显卡直接选择最新的 G06 相关套件即可,其他的老显卡建议参考 openSUSE Wiki,以笔者的电脑为例安装了以下这些包:

安装过程中 YaST 会自动帮你把 nouveau 给禁用了,完成之后直接重启,在终端输入 nvidia-smi 就可以看到显卡相关信息:

image.png

接下来更新 Grub 配置,不更新的话多重启几次可能桌面就会莫名其妙寄了:

1
sudo vim /etc/default/grub

在这个文件中找到 GRUB_CMDLINE_LINUX ,在其中加入如下内容:

1
modprobe.blacklist=nouveau rd.driver.blacklist=nouveau nvidia-drm.modeset=1

应用新的 GRUB 配置:

1
sudo grub2-mkconfig -o /boot/grub2/grub.cfg

如果你的 N 卡驱动不会在启动时自动载入的话(笔者在 Leap 上便碰到这个问题),则考虑在 /etc/dracut.conf.d/ 下创建一个新的配置文件(例如叫 nvidia.conf):

1
add_drivers+="nvidia nvidia-modeset nvidia-drm"

之后运行 sudo dracut -f 命令后重启, 然后发现好像还是没有什么用

开源驱动(only for RTX 2000 and newer)

可能是被 Linus 给 fuck 太多了, NVIDIA 在 2022 年放出了开源的 Linux 内核模块,为 Linuxer 们提供了除了闭源驱动以外的一个新的选择。

和安装闭源显卡驱动一样,首先用 zypper 引入 Nvidia 驱动仓库:

1
sudo zypper addrepo --refresh https://download.nvidia.com/opensuse/tumbleweed NVIDIA

然后打开 YaST->Software Management,搜索 nvidia,勾上这两个带 open 字样的包之后让 YaST 帮你自动完成即可:

笔者这里是已经安装好了所以显示绿底打勾,如果是待安装则通常应当是一个蓝底白十字

0x04. 安装中文与输入法

openSUSE Tumbleweed 安装媒介中自带的中文有些问题,因此我们需要安装 English 系统后手动将中文给安装上

首先是将简体中文添加为第二语言(笔者不推荐作为第一语言,否则万一系统崩了以后进入 tty 抢救的时候会让你感到很崩溃),打开 YaST->System->Language,勾上 Simplified Chinese 后直接点 OK 就可以自动安装了:

image.png

需要注意的是这里的进度条会莫名其妙变成负数,不影响正常安装,只是我们不能看到正确的进度罢了,慢慢等就行了:

完成中文的安装之后接下来我们来安装输入法,目前 Linux 下最火的中文输入法之一为 fcitx,直接通过 zypper 进行安装:

1
sudo zypper in fcitx5 fcitx5-chinese-addons

之后在设置里将 virtual keyboard 设为 fcitx5 并添加 input method Pinyin 即可:

image.png

0x05. 软件相关配置

常用软件安装

比如说大家都喜欢的代码编辑器 vscode

1
2
3
4
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
sudo zypper addrepo https://packages.microsoft.com/yumrepos/vscode vscode
sudo zypper refresh
sudo zypper install code

Chrome 浏览器的安装需要借助 OPI

1
2
sudo zypper in opi
sudo opi chrome

Docker 的安装直接按照 wiki 即可:

1
2
3
4
sudo zypper install docker docker-compose docker-compose-switch
sudo systemctl enable docker
sudo usermod -G docker -a $USER # 将当前用户添加到 docker,后面就不用总是 sudo docker 了
sudo reboot # 重启就完事了

openSUSE 是 RPM 系,因此大部分软件其实也可以直接将 rpm 包下载下来用 zypper 安装即可,以飞书 Linux 版为例:

image.png

笔者在海外,有的时候会用到 Discord、Telegram 这样的软件,他们都是有 Linux 原生版本的(这里就不得不吐槽国内的一些软件迟迟不出 Linux 版了),直接用 zypper 安装即可:

1
sudo zypper in discord telegram-desktop

一些只有 Windows 版本的软件(例如微信)可以尝试用 wine 打开,使用 zypper 可以直接安装 winewinetricks 则是用来进行功能补充的小工具:

1
sudo zypper in wine winetricks

使用 openSUSE Open Builid Service(OBS)

开放构建服务(Open

首先安装 osc:

1
$ sudo zypper in osc

安装 Flatpak

一些 openSUSE 没有的包也可以用 flatpak 从其他地方打过来:

1
2
3
sudo zypper in flatpak
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak update

接下来让 flatpak 包的升级和 KDE/Gnome 的 software update 无缝融合,首先创建 service:

注:为了安全起见,这里我们采用用户级而非系统级配置

1
systemctl --user edit --full --force flatpak-user-update.service

之后写入如下内容:

1
2
3
4
5
6
7
8
9
[Unit]
Description=Flatpak Automatic Update
Documentation=man:flatpak(1)
Wants=network-online.target
After=network-online.target

[Service]
Type=oneshot
ExecStart=/usr/bin/flatpak --user uninstall --unused -y --noninteractive ; /usr/bin/flatpak --user update -y --noninteractive ; /usr/bin/flatpak --user repair

然后用如下命令创建 timer:

1
systemctl --user edit --full --force flatpak-user-update.timer

之后加入如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
[Unit]
Description=Flatpak Automatic Update Trigger
Documentation=man:flatpak(1)

[Timer]
RandomizedDelaySec=10m
OnBootSec=2m
OnCalendar=*-*-* 4:00:00
Persistent=true

[Install]
WantedBy=timers.target

完成后启动 timer:

1
2
systemctl --user daemon-reload
systemctl --user enable --now flatpak-user-update.timer

0x06. ASUS Laptop 相关的一些配置

如果你的电脑不是华硕笔记本,可以直接跳过这一部分

ASUS Linux 是一个为 ASUS Laptop 提供额外支持的民间社区,通过 asusctlsupergfxctl 这两个工具我们可以非常方便地配置笔记本的各种配置

首先引入 ASUS Linux 的仓库:

1
sudo zypper ar --priority 50 --refresh https://download.opensuse.org/repositories/home:/luke_nukem:/asus/openSUSE_Tumbleweed/ asus-linux

安装 asusctl,并用 power-profiles-daemon 替换掉 tlp 作为默认的电源管理服务:

1
2
3
4
5
sudo zypper rm tlp
sudo zypper in asusctl
sudo zypper in power-profiles-daemon
sudo systemctl enable --now power-profiles-daemon.service
sudo systemctl start asusd

为了保养电池,可以用 asusctl 将最大充电限制在 80:

1
sudo asusctl -c 80

然后安装 supergfxctl 用以管理显卡,并替换掉过时的 suse-prime

1
2
3
sudo zypper rm suse-prime
sudo zypper in supergfxctl
sudo systemctl enable --now supergfxd

例如外出时可以用 supergfxctl 切换到集显输出以省电:

1
2
3
4
sudo supergfxctl -s # 查看笔记本支持的视频输出模式
sudo supergfxctl -g # 查看当前的视频输出模式
sudo supergfxctl -m Integrated # 设置为集显输出
sudo supergfxctl -m Hybrid # 设置为混合输出

社区其实还提供了一个图形化配置界面 asusctl-rog-gui,但是笔者电脑上不能成功启动,不过其实功能都是一样的:)

0x07. 个人配置优化

单击选中而非打开

KDE Dolphin 经典配置了,不过笔者更习惯 Windows 那样的单击选择双击打开的模式,这里只需要在系统设置中的 Workspace Behaviour->General Behaviour 中勾选 Selects them 即可

笔记本盒盖行为优化

KDE 桌面默认是盒盖后锁屏(Lock Screen),但是在 System Setting->Hardware->Power Management 中的 Energy Saving 中可以更改笔记本盒盖行为,常用的应该就是:

  • Sleep:传统睡眠,保留内存和一些基本组建的供电
  • Hybrid Sleep:混合睡眠,简而言之就是数据留内存的同时写入硬盘,主要针对台式机可能会突发断电的情况
  • Hibernate:传统休眠,内存数据转存到硬盘上,电源关闭进入低功耗模式

0x08. 一些问题解决

笔记本休眠/盒盖后无法唤醒

笔者这边看 journalctl 似乎是 N 卡的问题( so nvidia, fxck you! ),在 /etc/default/grub 中的 GRUB_CMD_LINUX 中加入:

1
acpi_rev_override=1 acpi_osi=Linux mem_sleep_default=deep

之后通过如下命令更新 grub 配置即可:

1
$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg

【DISTRO.0x01】如何正确打开 openSUSE Tumbleweed
https://arttnba3.github.io/2023/11/24/DISTRO-0X01-INSTALL_TUMBLEWEED_WINDOWS/
作者
arttnba3
发布于
2023年11月24日
许可协议