2023-01-22 16:49:36 +08:00
|
|
|
#+TITLE: 我要不要试试 OpenBSD
|
|
|
|
#+DESCRIPTION: 你很罕见
|
|
|
|
#+DATE: <2023-01-21 六>
|
2023-01-25 06:36:46 +08:00
|
|
|
#+OPTIONS: toc:2
|
2023-01-22 16:49:36 +08:00
|
|
|
|
|
|
|
又一篇中文文章
|
|
|
|
这个文章可能是我写过最长的了 (internet_collections 不算)
|
|
|
|
请不要不知好歹地转载!
|
|
|
|
地址: dongdigua.github.io/whatif_openbsd
|
|
|
|
base64: ZG9uZ2RpZ3VhLmdpdGh1Yi5pby93aGF0aWZfb3BlbmJzZA==
|
|
|
|
|
2023-01-24 16:56:52 +08:00
|
|
|
#+BEGIN_EXAMPLE
|
|
|
|
_
|
|
|
|
(_)
|
|
|
|
| .
|
|
|
|
. |L /| . _
|
|
|
|
_ . |\ _| \--+._/| . (_)
|
|
|
|
/ ||\| Y J ) / |/| ./
|
|
|
|
J |)'( | ` F`.'/ _
|
|
|
|
-<| F __ .-< (_)
|
|
|
|
| / .-'. `. /-. L___
|
|
|
|
J \ < \ | | O\|.-' _
|
|
|
|
_J \ .- \/ O | | \ |F (_)
|
|
|
|
'-F -<_. \ .-' `-' L__
|
|
|
|
__J _ _. >-' )._. |-'
|
|
|
|
`-|.' /_. \_| F
|
|
|
|
/.- . _.<
|
|
|
|
/' /.' .' `\
|
|
|
|
/L /' |/ _.-'-\
|
|
|
|
/'J ___.---'\|
|
|
|
|
|\ .--' V | `. `
|
|
|
|
|/`. `-. `._)
|
|
|
|
/ .-.\
|
|
|
|
\ ( `\
|
|
|
|
`.\
|
|
|
|
|
|
|
|
#+END_EXAMPLE
|
|
|
|
|
2023-01-22 16:49:36 +08:00
|
|
|
* Intro
|
2023-01-25 06:36:46 +08:00
|
|
|
:PROPERTIES:
|
|
|
|
:CUSTOM_ID: intro
|
|
|
|
:END:
|
|
|
|
|
2023-01-22 16:49:36 +08:00
|
|
|
我想整 OpenBSD 已经蓄谋已久了: 在 Windows 和 Fedora(160G) 之间我空出了 100G,
|
|
|
|
当然只是试试, 可能不会作为日常使用, 当然是因为软件生态.
|
|
|
|
|
|
|
|
我现在这个 Fedora 真的就是 BLOATED, 默认 Workstation 安装太多东西了, 但就是能用,
|
|
|
|
至于都安装了什么, 看我给 COSSIG 写的这篇文章[fn: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?
|
2023-01-25 06:36:46 +08:00
|
|
|
:PROPERTIES:
|
|
|
|
:CUSTOM_ID: grub
|
|
|
|
:END:
|
|
|
|
|
2023-01-22 16:49:36 +08:00
|
|
|
安装, 就很朴实无华且枯燥, 硬盘分区小心点就是了
|
|
|
|
|
|
|
|
然后问题就是, 怎么启动它? 官网上说:
|
|
|
|
#+BEGIN_QUOTE
|
2023-01-23 05:20:02 +08:00
|
|
|
rEFInd is reported to usually work. GRUB is reported to usually fail. In either case, you are completely on your own.
|
2023-01-22 16:49:36 +08:00
|
|
|
#+END_QUOTE
|
|
|
|
然后? 扔一句 "you are completely on your own." 也不告诉具体咋办啊?
|
|
|
|
然后我就搜, 可几乎都是 FreeBSD 的, 毕竟 OpenBSD 很罕见.
|
|
|
|
那里面有一些要 =insmod ufs2=, 我才发现我对 grub 竟没那些 modules, 于是就 =doas dnf in grub2-efi-x64-modules=.
|
|
|
|
在 yt 上看到了一个葡萄牙语小哥的教程[fn:2], 发现几年前官网上是有具体办法的,
|
|
|
|
#+BEGIN_SRC grub
|
|
|
|
menuentry 'OpenBSD' {
|
|
|
|
set root=(hd0,gptX)
|
|
|
|
chainloader +1
|
|
|
|
}
|
|
|
|
#+END_SRC
|
|
|
|
照着试了, 不行...
|
|
|
|
然后又看 GNU Grub Manual, 里面说了 NetBSD[fn:3]:
|
|
|
|
#+BEGIN_SRC grub
|
|
|
|
grub> insmod part_gpt
|
|
|
|
grub> set root=(hd0,gptX)
|
|
|
|
grub> knetbsd /netbsd
|
|
|
|
grub> boot
|
|
|
|
#+END_SRC
|
|
|
|
我寻思既然 OpenBSD 和 NetBSD 是同族的, 那我就 =kopenbsd=?
|
|
|
|
也不行...
|
|
|
|
既然 bing 搜不到, 那就上世界上第二大搜索引擎 YouTube!
|
|
|
|
看到了 Root BSD 的这个视频[fn:4]
|
|
|
|
首先也吐槽了闪烁其词的文档, 然后, chainloading 须要 BOOTX64.efi, 而我根目录没有, 难怪!
|
|
|
|
正当我准备重新编译内核加入 UFS 可写时, 他展示了一个离谱方法:
|
|
|
|
#+BEGIN_EXAMPLE
|
|
|
|
0. 在 grub 界面选择 OpenBSD entry
|
|
|
|
1. 不进去, 而是按 c 启动命令行
|
|
|
|
2. 输入 exit
|
|
|
|
3. here you go!
|
|
|
|
#+END_EXAMPLE
|
2023-01-23 05:20:02 +08:00
|
|
|
我立马停止了 Linux 内核编译, 去试了一下, 我超!
|
2023-01-22 16:49:36 +08:00
|
|
|
|
2023-01-23 05:20:02 +08:00
|
|
|
* First time using OpenBSD
|
|
|
|
现在这段文字是在 OpenBSD 上的 emacs 上写的!
|
|
|
|
第一次启动, 现让它自己把更新那些东西跑完.
|
|
|
|
|
|
|
|
然后就是安装一堆软件
|
2023-01-24 16:56:52 +08:00
|
|
|
我没有安装那些 "现代化 UNIX 工具", 比如 htop bat exa zoxide, (ripgrep 除外, 太好用了)
|
2023-01-23 05:20:02 +08:00
|
|
|
#+BEGIN_SRC ksh
|
2023-01-24 16:56:52 +08:00
|
|
|
doas pkg_add firefox neovim git pcmanfm noto-cjk # 特别必要的
|
|
|
|
doas pkg_add ripgrep fzf ncdu neofetch ranger p7zip colortree # 好用的工具
|
2023-01-23 05:20:02 +08:00
|
|
|
doas pkg_add gmake elixir gnutls # dev
|
|
|
|
#+END_SRC
|
|
|
|
|
2023-01-24 16:56:52 +08:00
|
|
|
我跑了一下 WebGL 水族馆[fn:5], 500 条鱼只有 10fps... 实际上 1 条鱼也一样...
|
|
|
|
而相比之下 Linux Wayland 5k 条鱼都能满 60
|
2023-01-23 05:20:02 +08:00
|
|
|
|
|
|
|
** B 站放不了, 音视频解码都有问题
|
2023-01-25 06:36:46 +08:00
|
|
|
:PROPERTIES:
|
|
|
|
:CUSTOM_ID: video
|
|
|
|
:END:
|
|
|
|
|
2023-01-23 05:20:02 +08:00
|
|
|
先按照 /usr/local/share/doc/pkg-readmes/firefox 里面
|
|
|
|
layers.acceleration.force-enable gfx.webrender.enabled 都 true
|
|
|
|
uhh, 水族馆帧率没变...
|
|
|
|
|
|
|
|
然后, 凭直觉安 openh264, 似乎没用, 那就 gstreamer,
|
|
|
|
准确来说是 =gstreamer1-plugins-libav=
|
|
|
|
好耶! 能看B站了!
|
|
|
|
|
|
|
|
** 超级工具箱: emacs
|
2023-01-25 06:36:46 +08:00
|
|
|
:PROPERTIES:
|
|
|
|
:CUSTOM_ID: emacs
|
|
|
|
:END:
|
|
|
|
|
2023-01-23 05:20:02 +08:00
|
|
|
这个当然要自己编译, 今天 git.sv.gnu.org 特别慢, 而 github 快得离谱
|
|
|
|
源码下载下来之后编译, 由于是纯 X, 所以选项和之前那篇[fn:6]里面的不一样
|
|
|
|
着急用, 所以参数还没加全
|
|
|
|
#+BEGIN_SRC ksh
|
|
|
|
./configure CFLAGS="-march=native -O3 -pipe -flto=thin" --with-x --with-gif=ifavailable
|
|
|
|
#+END_SRC
|
|
|
|
然后就是各种依赖, 大多数 X 相关的系统都自带了
|
2023-01-24 16:56:52 +08:00
|
|
|
之后各种包就容易了, 用我写的 =setup-what-pkg= 宏自动安装所有包
|
|
|
|
|
2023-01-23 05:20:02 +08:00
|
|
|
*** autoconf
|
|
|
|
autoconf 有不少选择, 但须要注意的是要设置 =AUTOCONF_VERSION= 这个变量, 我选的是最新的 2.71
|
|
|
|
*** texinfo
|
|
|
|
OpenBSD 自带的太老了, 所以要自己编译新的.
|
|
|
|
但是我删除了自带的 texinfo 之后 /usr/bin/texinfo 还残留着不知为啥, 我暂时先手动删了
|
|
|
|
*** TODO libgccjit
|
|
|
|
|
2023-01-24 16:56:52 +08:00
|
|
|
** suckless X
|
2023-01-25 06:36:46 +08:00
|
|
|
:PROPERTIES:
|
|
|
|
:CUSTOM_ID: suckless
|
|
|
|
:END:
|
|
|
|
|
2023-01-23 05:20:02 +08:00
|
|
|
这个我可不想自己打 patch, 遂使用 flexipatch 构建
|
|
|
|
编译出问题先看 config.mk 和 Makefile
|
|
|
|
典型的是 freetype 和 cp -n
|
|
|
|
具体的配置放 github, 还是那夹 configs repo
|
|
|
|
还有把 /etc/X11/xenodm/Xsetup_0 里面 xconsole 那行去掉, 难看
|
|
|
|
|
|
|
|
换掉 fvwm, 舒服~
|
2023-01-22 16:49:36 +08:00
|
|
|
|
2023-01-24 16:56:52 +08:00
|
|
|
uhh, firefox 有屏幕刷新的问题, 我尝试使用 Intel TearFree
|
|
|
|
#+BEGIN_SRC /etc/X11/xorg.conf.d/intel.conf
|
|
|
|
Section "Device"
|
|
|
|
Identifier "drm" # or "Intel Graphics"
|
|
|
|
Driver "intel"
|
|
|
|
Option "TearFree" "true"
|
|
|
|
EndSection
|
|
|
|
#+END_SRC
|
|
|
|
但是 =(EE) intel(0): No outputs and no modes.=
|
|
|
|
因为 =(II) intel(0): Using Kernel Mode Setting driver: i915, version 1.6.0 20201103=
|
|
|
|
驱动太老了...
|
|
|
|
|
2023-01-25 06:36:46 +08:00
|
|
|
*** st 中文显示重叠
|
|
|
|
st 里中文显示一直是重叠的, 字符的排布和英文字母一样.
|
|
|
|
废了我好大劲, 我安装了巨大的 gnome-terminal (用 dbus-launch gnome-terminal 启动), 好使.
|
|
|
|
最后才发现是没设置 =LANG= 这个变量, 而且还不能在 profile 里, 得在 .xsession
|
|
|
|
|
2023-01-24 16:56:52 +08:00
|
|
|
** ksh
|
2023-01-25 06:36:46 +08:00
|
|
|
:PROPERTIES:
|
|
|
|
:CUSTOM_ID: ksh
|
|
|
|
:END:
|
|
|
|
|
2023-01-24 16:56:52 +08:00
|
|
|
只写 .profile 不够, 还得在 .xsession 里加 ~ENV=$HOME/.profile~,
|
|
|
|
这样 ksh 才能每次加载配置, 否则只有 login shell 能
|
|
|
|
|
|
|
|
** v2ray
|
2023-01-25 06:36:46 +08:00
|
|
|
:PROPERTIES:
|
|
|
|
:CUSTOM_ID: v2ray
|
|
|
|
:END:
|
|
|
|
|
2023-01-24 16:56:52 +08:00
|
|
|
就把 Linux 下的配置拷贝过来, 不好使
|
|
|
|
一直 connection reset by peer (curl)
|
|
|
|
或 PR_ENF_OF_FILE_ERROR (firefox)
|
|
|
|
|
2023-01-25 06:36:46 +08:00
|
|
|
我之前以为时间不对是因为没配置时区的事,
|
|
|
|
然后我配置 dwm 状态栏的时候发现时区是对的, 但是 ntpd 说 time unsynced,
|
|
|
|
因为时间差太多了, 几千秒!
|
|
|
|
手动调了下时间然后自动同步了, v2ray 就能用了.
|
|
|
|
|
|
|
|
* Daily?
|
|
|
|
弄了那么多, 现在可以算是日常使用了
|
|
|
|
|
2023-01-24 16:56:52 +08:00
|
|
|
** email
|
2023-01-25 06:36:46 +08:00
|
|
|
:PROPERTIES:
|
|
|
|
:CUSTOM_ID: email
|
|
|
|
:END:
|
|
|
|
|
2023-01-24 16:56:52 +08:00
|
|
|
既然在一个传统 UNIX 上, 那就试试终端邮件客户端, 然后试试订阅 OpenBSD 邮件列表.
|
|
|
|
然后就按照这篇文章[fn:7]里面配置 smtpd 和 mail,
|
|
|
|
试了好久都不行, 好乱.
|
|
|
|
那就试试别的? 我切回 Fedora 看了几个 YouTube 视频, 里面都用 ssmtp, 那就试试?
|
|
|
|
也试了好久, 发现是网易邮箱不支持 starttls! 估计 smtpd 也是这个原因.
|
2023-01-25 06:36:46 +08:00
|
|
|
|
2023-01-24 16:56:52 +08:00
|
|
|
然后切回 OpenBSD, 没有 ssmtp? 那试试传说中的 mutt 吧!
|
2023-01-25 06:36:46 +08:00
|
|
|
文档还是得看 ArchWiki[fn:8]
|
2023-01-24 16:56:52 +08:00
|
|
|
经过上面两个摧残之后这个配置感觉容易多了(注意启用 sasl), 很容易就发出了第一封邮件, 然后是怎么收邮件.
|
2023-01-25 06:36:46 +08:00
|
|
|
smtp 收不了邮件, 得用 pop 或 imap.
|
|
|
|
|
|
|
|
然后网易的 imap 有这个恶心东西: RFC 2971 的 ID 指令
|
|
|
|
#+BEGIN_EXAMPLE
|
|
|
|
SELECT Unsafe Login. Please contact kefu@188.com for help
|
|
|
|
#+END_EXAMPLE
|
|
|
|
我用网易只是因为我有这么一个闲邮箱,
|
|
|
|
网易整个邮箱网站我感觉挺糟糕的, 一堆广告, 各种帮助页面都 404...
|
|
|
|
而且我 openbsd 的邮件好长时间才送到, 不知道之后会不会丢邮件...
|
|
|
|
鬼!
|
2023-01-24 16:56:52 +08:00
|
|
|
|
2023-01-25 06:36:46 +08:00
|
|
|
那看看有什么比较好的, 上知乎一顿搜, 最后感觉 zoho mail 还可以.
|
|
|
|
注册了一下, 我去! 配置和说明特别明了,
|
|
|
|
密码也不是难记的 app 密码, 就是邮箱密码, 5 分钟就搞定 smtp+imap!
|
|
|
|
再简单弄一下 gpg 加密, 能用了!
|
|
|
|
|
|
|
|
头一次自己配邮件客户端, 真学到了很多!
|
|
|
|
|
|
|
|
** 性能调优
|
|
|
|
:PROPERTIES:
|
|
|
|
:CUSTOM_ID: tune
|
|
|
|
:END:
|
|
|
|
|
|
|
|
我过了这么长时间才弄性能调优, 我之前觉得没啥必要, 但今天
|
|
|
|
- 编译 emacs 时到了 80 C
|
|
|
|
- 安 gnome-terminal (尝试修复字体问题) 特别慢
|
|
|
|
|
|
|
|
依旧是按照那个被引用成视频的文章[fn:7]里的方法:
|
|
|
|
电源管理用 apmd(8),
|
|
|
|
磁盘在挂载选项加 =softdep,noatime=,
|
|
|
|
至于多线程, 我选择不开
|
|
|
|
|
|
|
|
** wifi
|
|
|
|
:PROPERTIES:
|
|
|
|
:CUSTOM_ID: wifi
|
|
|
|
:END:
|
|
|
|
|
|
|
|
这个也是早就该弄的, wifi 这东西我感觉很复杂, 所以一直不敢动.
|
|
|
|
今天想脱离网线捧着看视频, 就花了好长时间配置 wifi.
|
|
|
|
最终的结果是:
|
|
|
|
#+BEGIN_EXAMPLE
|
|
|
|
iwx0 at pci0 dev 20 function 3 "Intel Wi-Fi 6 AX201" rev 0x20, msix
|
|
|
|
#+END_EXAMPLE
|
|
|
|
我的 wifi 驱动不对...
|
|
|
|
实际上在 Linux 上识别出的是
|
|
|
|
#+BEGIN_EXAMPLE
|
|
|
|
[ 3.542438] iwlwifi 0000:00:14.3: Detected Intel(R) Wireless-AC 9560, REV=0x351
|
|
|
|
#+END_EXAMPLE
|
|
|
|
巧合的是我在帮另外一个人弄服务器, 他是 B660I d4, wifi 也是 AX201, 然后他说 Ubuntu 驱动有问题.
|
|
|
|
坏了, 我成 AX201了!
|
|
|
|
这些硬件问题我准备都确定完之后给 mailto:dmesg@openbsd.org 发过去我的 dmesg,
|
|
|
|
这个是我在引用那个文章的视频里[fn:9]看到的, 帮助那些开发者更好的适配新硬件.
|
|
|
|
|
|
|
|
所以嘛, OpenBSD 就适合运行在老 ThinkPad 上 :(
|
|
|
|
|
|
|
|
** btrfs?
|
|
|
|
:PROPERTIES:
|
|
|
|
:CUSTOM_ID: btrfs
|
|
|
|
:END:
|
|
|
|
|
|
|
|
我有时候会想访问 Linux 上的文件, 但是似乎不支持 btrfs...
|
2023-01-22 16:49:36 +08:00
|
|
|
|
|
|
|
* Footnotes
|
2023-01-25 06:36:46 +08:00
|
|
|
:PROPERTIES:
|
|
|
|
:CUSTOM_ID: fn
|
|
|
|
:END:
|
|
|
|
|
2023-01-22 16:49:36 +08:00
|
|
|
[fn:1] CentOS/Fedora 不同配置/变体都默认安装了什么软件(组) https://dongdigua.github.io/anaconda_kickstarts
|
|
|
|
[fn:2] OpenBSD em Dual Boot com Linux (Partição Única) https://terminalroot.com/openbsd-dual-boot-with-linux-single-partition/
|
|
|
|
[fn:3] GNU GRUB Manual section 5.4.3 NetBSD https://www.gnu.org/software/grub/manual/grub/grub.html#NetBSD
|
|
|
|
[fn:4] Dualboot GNU/Linux and OpenBSD from GRUB2 like a BOSS! https://youtu.be/H2bSXURnqHQ
|
2023-01-23 05:20:02 +08:00
|
|
|
[fn:5] http://webglsamples.org/aquarium/aquarium.html
|
|
|
|
[fn:6] 2023 了, 试试 emacs 29 https://dongdigua.github.io/emacs29_2023
|
2023-01-24 16:56:52 +08:00
|
|
|
[fn:7] [[https://www.c0ffee.net/blog/openbsd-on-a-laptop][OpenBSD on a Laptop]]
|
2023-01-25 06:36:46 +08:00
|
|
|
[fn:8] https://wiki.archlinux.org/title/Mutt
|
|
|
|
[fn:9] [[https://youtu.be/cLk5PYYdi3A][a good video based on this article]] [fn:7]
|
2023-01-22 16:49:36 +08:00
|
|
|
|
|
|
|
* Related Links
|
2023-01-25 06:36:46 +08:00
|
|
|
:PROPERTIES:
|
|
|
|
:CUSTOM_ID: related
|
|
|
|
:END:
|
|
|
|
|
2023-01-22 16:49:36 +08:00
|
|
|
- [[https://paedubucher.ch/articles/2020-09-05-openbsd-on-the-desktop-part-i.html][OpenBSD on the Desktop (Part I)]]
|
|
|
|
- [[https://nanxiao.me/openbsd-one-year-experience/][使用OpenBSD一年的总结]]
|
|
|
|
- [[https://webzine.puffy.cafe][OpenBSD Webzine by solene%]]
|
|
|
|
- [[https://youtu.be/1GYq8eD90nE][OpenBSD and DWM: True Minimalism]]
|
2023-01-24 16:56:52 +08:00
|
|
|
- [[https://kevinthomas.dev/posts/openbsd-thinkpadt480.html][Installing and setting up OpenBSD on Thinkpad T480 + improving slowness]]
|
|
|
|
- [[https://youtu.be/zXaHM7114Uk][Puffy vs. Tux! The difference between OpenBSD and GNU/Linux]]
|
2023-01-25 06:36:46 +08:00
|
|
|
- [[https://videos.lukesmith.xyz/w/ion4TuavEAqKRWeavWTCBe][LukeSmith: Email on the terminal with mutt]]
|
|
|
|
- [[https://youtu.be/zXaHM7114Uk][Puffy vs. Tux! The difference between OpenBSD and GNU/Linux]]
|