8.4 KiB
我要不要试试 OpenBSD
又一篇中文文章 这个文章可能是我写过最长的了 (internet_collections 不算) 请不要不知好歹地转载! 地址: dongdigua.github.io/whatif_openbsd base64: ZG9uZ2RpZ3VhLmdpdGh1Yi5pby93aGF0aWZfb3BlbmJzZA==
_ (_) | . . |L /| . _ _ . |\ _| \--+._/| . (_) / ||\| Y J ) / |/| ./ J |)'( | ` F`.'/ _ -<| F __ .-< (_) | / .-'. `. /-. L___ J \ < \ | | O\|.-' _ _J \ .- \/ O | | \ |F (_) '-F -<_. \ .-' `-' L__ __J _ _. >-' )._. |-' `-|.' /_. \_| F /.- . _.< /' /.' .' `\ /L /' |/ _.-'-\ /'J ___.---'\| |\ .--' V | `. ` |/`. `-. `._) / .-.\ \ ( `\ `.\
Intro
我想整 OpenBSD 已经蓄谋已久了: 在 Windows 和 Fedora(160G) 之间我空出了 100G, 当然只是试试, 可能不会作为日常使用, 当然是因为软件生态.
我现在这个 Fedora 真的就是 BLOATED, 默认 Workstation 安装太多东西了, 但就是能用, 至于都安装了什么, 看我给 COSSIG 写的这篇文章1. 哦, 对, 还有 yue, systemd.
我可能之后再装电脑要不就是基于 Fedora Server 开始, 要么就是 Gentoo + Nix, 但总之肯定是 Linux, 并且显示肯定是 Wayland, 因为软件生态和性能.
那我为什么要整 OpenBSD, 因为简洁和统一, 安全的话, 算是一个原因, 因为我对性能已经没有期待了. 还有就是, Linux 上 "现代" 的东西都用 Wayland, BSD 这种传统的东西对 wayland 支持不怎么样, 我这回就要安心地探索 old school 的 X, suckless 三件套, 合成器效果.
这次我想把整个折腾系统的过程都记下来, 便于维护, 以防到最后我都不知道某个目录/软件是从哪来的.
对于这个系统的定位, 我觉得就是一个能用的 上网+开发环境, 那些比较大的东西, 比如 Minecraft, QQ, 视频制作相关(Kdenlive, GIMP), 就不碰了.
Boot OpenBSD with Grub?
安装, 就很朴实无华且枯燥, 硬盘分区小心点就是了
然后问题就是, 怎么启动它? 官网上说:
rEFInd is reported to usually work. GRUB is reported to usually fail. In either case, you are completely on your own.
然后? 扔一句 "you are completely on your own." 也不告诉具体咋办啊?
然后我就搜, 可几乎都是 FreeBSD 的, 毕竟 OpenBSD 很罕见.
那里面有一些要 insmod ufs2
, 我才发现我对 grub 竟没那些 modules, 于是就 doas dnf in grub2-efi-x64-modules
.
在 yt 上看到了一个葡萄牙语小哥的教程2, 发现几年前官网上是有具体办法的,
menuentry 'OpenBSD' {
set root=(hd0,gptX)
chainloader +1
}
照着试了, 不行… 然后又看 GNU Grub Manual, 里面说了 NetBSD3:
grub> insmod part_gpt
grub> set root=(hd0,gptX)
grub> knetbsd /netbsd
grub> boot
我寻思既然 OpenBSD 和 NetBSD 是同族的, 那我就 kopenbsd
?
也不行…
既然 bing 搜不到, 那就上世界上第二大搜索引擎 YouTube!
看到了 Root BSD 的这个视频4
首先也吐槽了闪烁其词的文档, 然后, chainloading 须要 BOOTX64.efi, 而我根目录没有, 难怪!
正当我准备重新编译内核加入 UFS 可写时, 他展示了一个离谱方法:
0. 在 grub 界面选择 OpenBSD entry 1. 不进去, 而是按 c 启动命令行 2. 输入 exit 3. here you go!
我立马停止了 Linux 内核编译, 去试了一下, 我超!
First time using OpenBSD
现在这段文字是在 OpenBSD 上的 emacs 上写的! 第一次启动, 现让它自己把更新那些东西跑完.
然后就是安装一堆软件 我没有安装那些 "现代化 UNIX 工具", 比如 htop bat exa zoxide, (ripgrep 除外, 太好用了)
doas pkg_add firefox neovim git pcmanfm noto-cjk # 特别必要的
doas pkg_add ripgrep fzf ncdu neofetch ranger p7zip colortree # 好用的工具
doas pkg_add gmake elixir gnutls # dev
我跑了一下 WebGL 水族馆5, 500 条鱼只有 10fps… 实际上 1 条鱼也一样… 而相比之下 Linux Wayland 5k 条鱼都能满 60
B 站放不了, 音视频解码都有问题
先按照 /usr/local/share/doc/pkg-readmes/firefox 里面 layers.acceleration.force-enable gfx.webrender.enabled 都 true uhh, 水族馆帧率没变…
然后, 凭直觉安 openh264, 似乎没用, 那就 gstreamer,
准确来说是 gstreamer1-plugins-libav
好耶! 能看B站了!
超级工具箱: emacs
这个当然要自己编译, 今天 git.sv.gnu.org 特别慢, 而 github 快得离谱 源码下载下来之后编译, 由于是纯 X, 所以选项和之前那篇6里面的不一样 着急用, 所以参数还没加全
./configure CFLAGS="-march=native -O3 -pipe -flto=thin" --with-x --with-gif=ifavailable
然后就是各种依赖, 大多数 X 相关的系统都自带了
之后各种包就容易了, 用我写的 setup-what-pkg
宏自动安装所有包
autoconf
autoconf 有不少选择, 但须要注意的是要设置 AUTOCONF_VERSION
这个变量, 我选的是最新的 2.71
texinfo
OpenBSD 自带的太老了, 所以要自己编译新的. 但是我删除了自带的 texinfo 之后 /usr/bin/texinfo 还残留着不知为啥, 我暂时先手动删了
TODO libgccjit
suckless X
这个我可不想自己打 patch, 遂使用 flexipatch 构建 编译出问题先看 config.mk 和 Makefile 典型的是 freetype 和 cp -n 具体的配置放 github, 还是那夹 configs repo 还有把 /etc/X11/xenodm/Xsetup_0 里面 xconsole 那行去掉, 难看
换掉 fvwm, 舒服~
uhh, firefox 有屏幕刷新的问题, 我尝试使用 Intel TearFree
Section "Device"
Identifier "drm" # or "Intel Graphics"
Driver "intel"
Option "TearFree" "true"
EndSection
但是 (EE) intel(0): No outputs and no modes.
因为 (II) intel(0): Using Kernel Mode Setting driver: i915, version 1.6.0 20201103
驱动太老了…
ksh
只写 .profile 不够, 还得在 .xsession 里加 ENV=$HOME/.profile
,
这样 ksh 才能每次加载配置, 否则只有 login shell 能
v2ray
就把 Linux 下的配置拷贝过来, 不好使 一直 connection reset by peer (curl) 或 PR_ENF_OF_FILE_ERROR (firefox)
既然在一个传统 UNIX 上, 那就试试终端邮件客户端, 然后试试订阅 OpenBSD 邮件列表. 然后就按照这篇文章7里面配置 smtpd 和 mail, 试了好久都不行, 好乱. 那就试试别的? 我切回 Fedora 看了几个 YouTube 视频, 里面都用 ssmtp, 那就试试? 也试了好久, 发现是网易邮箱不支持 starttls! 估计 smtpd 也是这个原因. 然后切回 OpenBSD, 没有 ssmtp? 那试试传说中的 mutt 吧! 经过上面两个摧残之后这个配置感觉容易多了(注意启用 sasl), 很容易就发出了第一封邮件, 然后是怎么收邮件. smtp 收不了邮件, 得用 pop 或 imap
Footnotes
Related Links
CentOS/Fedora 不同配置/变体都默认安装了什么软件(组) https://dongdigua.github.io/anaconda_kickstarts
OpenBSD em Dual Boot com Linux (Partição Única) https://terminalroot.com/openbsd-dual-boot-with-linux-single-partition/
GNU GRUB Manual section 5.4.3 NetBSD https://www.gnu.org/software/grub/manual/grub/grub.html#NetBSD
Dualboot GNU/Linux and OpenBSD from GRUB2 like a BOSS! https://youtu.be/H2bSXURnqHQ
2023 了, 试试 emacs 29 https://dongdigua.github.io/emacs29_2023