【DISTRO.0x01】如何正确打开 openSUSE Tumbleweed
本文最后更新于:2024年7月3日 晚上
你说🉐对,但是 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 确实方便易用, 仿佛一个和蔼可亲的邻家大蜥蜴一般令人安心 ,不好就在于官方自带的中文安装依托答辩,不仅安装界面蹦方块,切换到 Wayland 后自带的 fcitx5 直接罢工(与此同时先装英文系统再装中文语言包与输入法却能正常使用)
但这并非是最要命的点,用的人少、社区活跃度不足才是最致命的,openSUSE 早期在中国大陆宣传不足,RHEL 和 Ubuntu 近乎蚕食掉所有的 Linux 市场后才姗姗来迟,现在在中国大陆能用的镜像站似乎都不剩几个,中文论坛活跃度还比不上一些快死了的贴吧(英文论坛的活跃度还可以, 不过事实上国内真正称得上活着的 Linux distro-specific forum 除了 Arch 以外好像也没别的了 ,这么一看 openSUSE CN 论坛建设其实还可以 ),Wiki 建设度也不太足,这就导致很多问题只能参照其他发行版的类似情况自己再缝缝补补
最直接的后果就是在缺乏指引的情况下,笔者第一次在物理机上尝试 Tumbleweed 时 docker 直接无法正常拉镜像,第二次在物理机上尝试 Tumbleweed 时由于未更新 GRUB 配置导致几次在几次重新启动系统之后登录界面直接进不去了,只有一个鼠标能动,切进 tty 以后也一筹莫展(根本找不到使用 openSUSE 出现类似问题的案例与解决方案),在重装了七八次系统后按照第三方社区 ASUS Linux 的配置教程无意中解决了这个问题
但是 抛开事实不谈 抛开这些小毛病不谈,openSUSE 依旧是做得不错的发行版 ,Leap 有着超乎想象的稳定性与维护周期,Tumbleweed 在保证了其稳定性的同时依旧能紧追最前沿的技术,虽然国内没啥人用但在国外其实还是有着不错的口碑,因此笔者最终选择尝试在 openSUSE Tumbleweed 上开始自己新的旅程
至于为什么不用 Ubuntu 是因为 Ubuntu Desktop 依托答辩,经常能卡出各种玄学问题,软件包旧且难配,snap 这样不遵守 FHS 而且后端完全受商业公司 Canonical 把控的混沌邪恶的东西更是让人谔谔,只适合放服务器上或是放在虚拟机里玩
至于为什么不用 Debian 则是因为在笔者感受起来这也是一个更适合在服务器上稳定跑应用的系统,能折腾的空间也不多(
年轻人自己用的电脑当然要滚动发行版天天滚,我每天稳定在 Arch 上滚 114 次在 centos stream 上滚 514 次在 tumbleweed 上滚 1919 次并用 Gentoo 自行编译 810 次), 当然肯定有人要杠说有 Debian Sid 这样的版本,但是在笔者看来未免有点过于不稳定了, 当然更重要的是 笔者手上没有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 |
|
然后打开 YaST->Software Management
,她会直接帮你选好需要安装的包,直接安就完事了:)
当然,你也可以手动进入 YaST->Software Management->View->Repositories->NVIDIA
选择要安装哪些包,一般来说最新的 NVIDIA 显卡直接选择最新的 G06
相关套件即可,其他的老显卡建议参考 openSUSE Wiki,以笔者的电脑为例安装了以下这些包:
安装过程中 YaST 会自动帮你把 nouveau
给禁用了,完成之后直接重启,在终端输入 nvidia-smi
就可以看到显卡相关信息:
接下来更新 Grub 配置,不更新的话多重启几次可能桌面就会莫名其妙寄了:
1 |
|
在这个文件中找到 GRUB_CMDLINE_LINUX
,在其中加入如下内容:
1 |
|
应用新的 GRUB 配置:
1 |
|
开源驱动(only for RTX 2000 and newer)
可能是被 Linus 给 fuck 太多了, NVIDIA 在 2022 年放出了开源的 Linux 内核模块,为 Linuxer 们提供了除了闭源驱动以外的一个新的选择。
和安装闭源显卡驱动一样,首先用 zypper 引入 Nvidia 驱动仓库:
1 |
|
然后打开 YaST->Software Management
,搜索 nvidia,勾上这两个带 open
字样的包之后让 YaST 帮你自动完成即可:
0x04. 安装中文与输入法
openSUSE Tumbleweed 安装媒介中自带的中文有些问题,因此我们需要安装 English 系统后手动将中文给安装上
首先是将简体中文添加为第二语言(笔者不推荐作为第一语言,否则万一系统崩了以后进入 tty 抢救的时候会让你感到很崩溃),打开 YaST->System->Language
,勾上 Simplified Chinese
后直接点 OK
就可以自动安装了:
需要注意的是这里的进度条会莫名其妙变成负数,不影响正常安装,只是我们不能看到正确的进度罢了,慢慢等就行了:
完成中文的安装之后接下来我们来安装输入法,目前 Linux 下最火的中文输入法之一为 fcitx
,直接通过 zypper 进行安装:
1 |
|
之后在设置里将 virtual keyboard 设为 fcitx5 并添加 input method Pinyin
即可:
0x05. 软件相关配置
常用软件安装
比如说大家都喜欢的代码编辑器 vscode
:
1 |
|
Chrome 浏览器的安装需要借助 OPI:
1 |
|
Docker 的安装直接按照 wiki 即可:
1 |
|
openSUSE 是 RPM 系,因此大部分软件其实也可以直接将 rpm 包下载下来用 zypper 安装即可,以飞书 Linux 版为例:
笔者在海外,有的时候会用到 Discord、Telegram 这样的软件,他们都是有 Linux 原生版本的(这里就不得不吐槽国内的一些软件迟迟不出 Linux 版了),直接用 zypper 安装即可:
1 |
|
一些只有 Windows 版本的软件(例如微信)可以尝试用 wine
打开,使用 zypper 可以直接安装 wine
,winetricks
则是用来进行功能补充的小工具:
1 |
|
安装 Flatpak
一些 openSUSE 没有的包也可以用 flatpak 从其他地方打过来:
1 |
|
接下来让 flatpak 包的升级和 KDE/Gnome 的 software update 无缝融合,首先创建 service:
注:为了安全起见,这里我们采用用户级而非系统级配置
1 |
|
之后写入如下内容:
1 |
|
然后用如下命令创建 timer:
1 |
|
之后加入如下内容:
1 |
|
完成后启动 timer:
1 |
|
配置 Wine
红酒(wine)是 Linux 下的一个 Win API 兼容层,实现了对绝大多数常见 Win API 的重写,利用 wine 我们可以在 Linux 下运行相当一部分 Windows 中的 EXE 程序
首先安装 wine 和 winetricks:
1 |
|
安装 fakechinese,解决部分程序的中文字体显示为方块字的问题:
1 |
|
大部分情况下通用的解决方案还是下载一份中文字体,例如微软雅黑,之后放到 ~/.wine/drive_c/windows/Fonts/
下
使用 openSUSE Open Builid Service(OBS)
开放构建服务(Open Build Service
首先安装 osc:
1 |
|
0x06. ASUS Laptop 相关的一些配置
如果你的电脑不是华硕笔记本,可以直接跳过这一部分
ASUS Linux 是一个为 ASUS Laptop 提供额外支持的民间社区,通过 asusctl
与 supergfxctl
这两个工具我们可以非常方便地配置笔记本的各种配置
首先引入 ASUS Linux 的仓库:
1 |
|
安装 asusctl
,并用 power-profiles-daemon
替换掉 tlp
作为默认的电源管理服务:
1 |
|
为了保养电池,可以用 asusctl
将最大充电限制在 80:
1 |
|
然后安装 supergfxctl
用以管理显卡,并替换掉过时的 suse-prime
:
1 |
|
例如外出时可以用 supergfxctl
切换到集显输出以省电:
1 |
|
社区其实还提供了一个图形化配置界面
asusctl-rog-gui
,不过其实功能都是一样的:)
0x07. 个人配置优化
使用个人账户而非 root 进行特权操作
笔者个人以前的使用习惯是 root 账户和个人账户使用不同的密码,然后要进行特权操作都是以个人账户的身份 sudo
进行,但在 openSUSE 下默认会重定向到使用 root 账户:
注:这也是 Linus 当年舍弃 openSUSE 的原因,这个非常规的权限管控理念确实有点谔谔
解决方案是编辑 sudo 配置:
1 |
|
找到如下这一行,改成这样(去掉前面的 #
注释符):
1 |
|
单击选中而非打开
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 |
|
之后通过如下命令更新 grub 配置即可:
1 |
|