openEuler 的苦难体验

openEuler 的苦难体验

下午忙完工作、又临近周末,想着抽点时间体验一下 openEuler 系统,毕竟这是华为隆重推出、并且捐赠的系统,据说会成为国内各大系统的上游版本,有点类似 Debian 的意思。简单查了点资料,openEuler 大概是走 CentOS 或者 RHEL 的路子,着重在企业级系统的开发和部署上,听上去似乎很合我的胃口,我在 Debian 上也主要是开发企业用的软件(比如 miniSIPServer 软件 ^_^)。

从网上下载了 ISO 安装包,名字比较古怪,openEuler-20.03-LTS-SP2。从字面意思大概是 20.03 版本的第二个迭代版本,这个版本是长期支持版本。又顺手查了一下对应的生命周期,“长期”是指5年。这个5年是从20年03月开始算起,不是从SP2 发布开始算起。之所以觉得名字古怪,从网站的内容看,还以为需要下载三个版本,如下图。似乎应该先安装 20.03 LTS,然后安装 SP1,然后安装 SP2,但是看了一下安装包大小,没可能一个补丁那么大啊,这是学习 Windows 的命名方式? 事实证明,直接下载、安装 SP2 就可以了。

openEuler 下载页面
openEuler 下载页面

下载 iso 包中断了几次,显然是我的 300M 光纤宽带不够给力。转到阿里云的镜像站点下载,同样在中断几次之后,终于下载成功。

手头上没有实机,因此只能麻烦 openEuler 在 VirtualBox 中先凑合一下了。

第一次安装……失败。安装界面的按钮居然是在左上角!我一直按照以往的经验在右下角找“下一步”按钮,以为是 VirtualBox 的原因导致无法显示按钮。愤怒地升级 VirtualBox 后,重新安装,终于无意中找到了左上角的按钮……对不起,VirtualBox,错怪你了。

第二次安装……失败。安装倒是顺利完成,进入黑暗的命令行界面,然后……网络不通!难道要自己从命令行配置网卡、路由?我只是 Linux 用户,不是专家,书到用时方恨少。一定是哪出错了,以前安装别的发布版本(我的意思是 Debian 或者 Ubuntu),从来没出现这么奇怪的要求。上网查了安装指导文档(请点击此处),果然是自己没注意安装界面中开启网络。

第三次安装……失败。同样顺利地完成安装,进入无比黑暗的命令行界面,然后……网络还是不通!重新看文档,怪自己太粗心。原来安装时开启网络,只是在安装时有效,不等于安装后自动开启网络(真的,这个说起来有点挠头),需要在安装时,进入网络属性配置里,选定“自动以优先级连接”,然而这个项在界面里是英文 Connect automatically with priority(中英文混杂,很有港味、很 fashion!):

openEuler 网络配置
openEuler 网络配置项

第四次安装……失败。精心配置好网络,选中必要的选项,顺利进入依然黑暗的命令行界面,然后按照文档的指导(请点击此处)安装 XFCE,太棒了!重启后看到了久违的图形界面,然后登录……然后登录……然后登录……(很不幸,每次输入用户密码后,闪一下,又回到输密码的界面)

第五次安装……失败一半。淡定地配置好网络,进入暗黑无界的命令行界面,然后按照文档的指导(请点击此处)安装 DDE 界面。不愧是国产精品,非常顺利,这次可以登录,也可以使用各种软件了!只是有个小小的遗憾,系统没有自动调整界面大小,因此整个图形界面小小的。这个我懂,安装 VirtualBox 增强功能就可以了。将 VirtualBox 增强功能的虚拟光盘手工 mount 到目录后(Debian 以及后续尝试的 CentOS 都可以自动mount),运行编译,很快就……失败了!查了一下log,是调用 access_ok 函数时出错,从网络上检索的信息看,大概是 openEuler 合并了 5.x 内核的代码,但是自身内核版本号还是 4.x,企业级 Linux 玩得这么骚气吗? CentOS/RHEL 也这样? 要搞定这个问题,需要改源码……我只是想安装 openEuler 体验一下……

但是 DDE 确实值得一提!速度非常快,如果不是上述界面过小的原因,那就是 DDE 这两年进步确实很大。以前曾经体验过 Deepin 的版本,当时感觉界面还比较混乱、速度也不太让人满意,这次大有改观。唯一奇怪的是,我觉得“高效模式”比“时尚模式”更好看,这大概是我自己杀马特审美的错。

五次安装之后,窗外的天空已经黑得像个命令行界面,我沉痛地决定放弃了,下一个 LTS 版本出来后再体验吧。

2021-11-27 更新:

考虑到 openEuler 的令人迷惑的行为,是否是目前 RHEL/CentOS 系列的常态?下载了 CentOS stream 8(也是个令人迷惑的版本)安装,对比 openEuler 确实大部分都相同,当然也有小部分不一样:

(1)安装按钮都在左上角。看来这是新一代安装工具的标配了。

(2)网络配置默认都没有打开,都需要手工打开,而且要修改配置中的项才能在安装后自动启动网络。但 CentOS 的完成度明显更高,至少界面语言是统一的,没出现混杂的情况。

(3)CentOS 的软件设置更丰富,实际上丰富很多。安装完成后,可以直接进入图形界面。

CentOS 软件选择
CentOS 软件选择

(4)安装完成后都无法安装 VirtualBox 增强功能。CentOS 的 log 显示的是另一个与“map_vm_area”函数相关的错误。简单检索后得出相同的结论:也是 merge 了 5.x 内核的内容,但是内部版本号还是停留在 4.x。 企业级 Linux 玩得这么骚气,有点令人意外,这和掩耳盗铃有什么区别?

2021-11-27 再次更新:

由于 openEuler 和 CentOS Stream 都遇到了无法正常编译 VitualBox 增强工具的情况,都需要修改增强工具的源码才能编译成功,因此思考 VirtualBox 自己是不是会解决这个问题? 查了一下 changelog,在 VirtualBox 6.1.20 版本的发布日志中明确提到:

Linux Guest Additions: Fixed kernel module build for RHEL 8.4 beta and CentOS Stream

看起来的确是解决了问题,因此重新下载最新的 VirtualBox V6.1.30,果然成功了! 如下图示:

CentOS Stream 完全展开
CentOS Stream 完全展开

解决完CentOS Stream的问题后,猜测 openEuler 是否也可以一起解决了? 于是第六次安装 openEuler,然后……失败了。看来 VirtualBox 并没有解决 access_ok 函数的问题,估计 openEuler 相关人员也没有提交类似的问题给 VirtualBox ……

Apache 日志分析工具:goaccess

Apache 日志分析工具:goaccess

如果统计、分析网站日常的访问情况,无疑优选 Google Analytics。不过由于众所周知的原因,访问稍显麻烦,而且有时候希望了解更细节一些的东西,因此最好直接检查 Apache 的日志来获取相关信息。日常维护时,同步检查日志也有助于尽早发现问题。

推荐采用一个非常小巧的工具:goaccess,这个工具基本不依赖第三方库(似乎有一个地理位置信息的库),Debian 系统自带,使用也非常简单,呈现的信息足够丰富、有序。

使用以下命令安装:

sudo apt install goaccess

可以直接读取 Apache 的日志文件进行分析,例如:

goaccess /var/log/apache2/access.log

Apache 的历史日志都保存为 .gz 格式,可以直接重定位方式进行分析,例如:

zcat -f /var/log/apache2/access.log*.gz | goaccess --log-format=COMBINED

goaccess 还有其他一些很棒的功能,例如实时显示、html格式等,有兴趣的话可以进一步了解。日常维护则上述命令足以。

公共 DNS 服务器

公共 DNS 服务器

在路由器配置中,通常可以指定 DNS 服务器,如果不单独指定,那默认就是运营商给定的 DNS 服务器。考虑到国情在此,建议指定 DNS 服务器。

国内有很多家服务商能提供公共 DNS 服务,例如腾讯(DNSPod)、阿里等。综合这几年的使用情况看,采用腾讯和Cloudflare 两家的 DNS 服务器作为主备,对于我(坐标:深圳电信)是个比较好的选择。

通常,我设置 Cloudflare 家的 DNS 服务器作为主服务器,腾讯家的 DNS 服务器作为备用服务器。这两家也都支持 IPv6 以及 DoH 等,充分满足需要,下面列示这两家的信息。

Cloudflare:

IPv4: 1.1.1.1
IPv6: 2606:4700:4700::1111
DoH:  https://cloudflare-dns.com/dns-query

腾讯:

IPv4:119.29.29.29
IPv6: 2402:4e00::
DoH:  https://doh.pub/dns-query

如果使用 Firefox 浏览器并采用 DoH,默认就是 Cloudflare 的 DoH,无需额外配置。

Firefox 中的 DoH 配置
DoH in Firefox

Javascript 模板字符串

Javascript 模板字符串

在编写 JS 代码时(例如我们的小网站、或者 miniSIPServer 的 web 管理界面),拼接字符串是件很头疼的事情,尤其是字符串本身又可能包含单引号(‘)或者双引号(“)的情况时,简直头晕眼花。

显然,这样的痛苦不是仅仅一小部分人才有,因此有人(ES6规范?)聪明地引入了“模板字符串”这么一个语法糖,顺利解决了问题。在 JS 文件中,采用反单引号“`”,即键盘左上角那个引号,和“${}”即可完成拼接,如以下示例:

<div>`My name is ${usrName}`</div>

修改 root 用户的PATH

修改 root 用户的PATH

最近工作需要安装了一台运行 Debian 11 系统的电脑,不知道是不是很久没安装 Debian 系统的原因,惊讶地发现 root 用户的路径少了很多,比如 /sbin, /usr/sbin 路径等。这些路径都是一些系统管理员级命令所在,不清楚什么原因没有加入 root 的默认路径。

不想影响其他用户,因此只要单纯修改 root 用户 HOME 目录下的”.bashrc”文件,在该文件尾加入以下语句即可:

export PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin
打第二针疫苗

打第二针疫苗

打第一针疫苗的社康不再打疫苗了,不知道什么原因,导致我有点措手不及。加上最近这段时间似乎都是安排北京生物的疫苗,有人说可以混打、有人说最好不要混打,心里嘀咕半天,决定还是等等,不混打疫苗。网上的预约总是预约不到,只好每天去临时接种点咨询一下(电话一直忙)。

非常幸运,今天蛇口临时接种点有科兴疫苗,非常顺利接种了第二针。现场人非常多,秩序非常好,感谢现场的医护、志愿者、以及维护秩序的各位社区、保安等工作人员。

打疫苗

打疫苗

我们一起打疫苗,一起喵喵喵喵喵

这是深圳宣传打疫苗的口号,非常上头。打疫苗免费,太好了,感谢政府!

现在各社康中心都可以打疫苗,经过附近的社康中心时,经常看到大家排队打疫苗的情况。不过似乎供应还不够充分,因此社康往往断货,搁几天才能排队打疫苗。今天早上跑完步后,看到社康中心又开始排队,估计又有一批疫苗到货了,想到自己还没打一针,赶紧拿上身份证去排队。

实际上我先前在网上已经登记过信息,只是网上老是预约不到,甚至还出现一次预约到某社康,结果跑过去发现,这个社康中心已经一个多月不能接种疫苗了(系统为啥还有这个社康呢?)。

我因为是第一针,排队时和周围的朋友聊了聊,大部分选择灭活疫苗(似乎有北京生物、北京科兴两种),附近的社康中心科兴比较多些,因此我也选择了科兴疫苗。

过程非常简单、顺利,打针也很快,实际上太快了,感觉”嗖“的一声就打完了。留观30分钟,然后溜达回去,心理上觉得特别安全,似乎可以直接手撕病毒了。

定时清理释放内存

定时清理释放内存

家里有台 Raspberry Pi3, 日常做点小任务,比如做 samba 服务器当 NAS、做 web 的功能测试、学习点 Linux 知识等,基本都是一些负荷不大的任务。不过由于我是死忠的 GUI 党, 因此总是喜欢进入 Pi 那个巨丑无比的界面里进行操作,这也导致 Pi3 的内存会逐渐显得有些捉襟见肘,时间长了,就不得不使用 swap 。这可能会有损 microSD 卡的寿命,因此希望 Pi 能定时清理、释放内存。

网上搜了搜,也比较简单,而且效果比较明显。简要记录一下:

在 /etc/cron.daily 目录下,创建一个 gilson-clearcache 文件,内容如下:

#!/bin/sh
sync
echo 3 > /proc/sys/vm/drop_caches

将这个文件设置为可执行文件即可:

sudo chmod +x ./gilson-clearcache

设置为可执行文件后,可以手工执行一下,可以看到 “free -m” 显示的结果里,“buff/cache available”等项有明显的改善。

不过考虑到 Pi3 可怜的 1GB 内存,这种内存回收方面的改善,估计不能从根本上解决问题,上 Pi4 (2GB或者4GB)或许更好。后续继续观察一下,如果实在不行,就换 Pi4 或者等 Pi5 吧。

巴菲特致股东的信(1977-1997,英文版,PDF)

巴菲特致股东的信(1977-1997,英文版,PDF)

这是早期的一些公开信,收集、综合到一个 PDF 文档中,以便下载、打印、学习。请点击此处下载

目前在伯克希尔官方网站上,公开的信件是从 1977 年开始的,其他更早年份的信,虽然可以在网络上搜索到,但是没有官方的认证,很难辨识。因此以官方提供的资料为准,没有收录 1977 年之前的公开信。

这些信件受制于当时的排版、网络等技术,采用了非常粗糙的 HTML 格式,极为不方便打印,这也是我收集并整理成一份 PDF 文件的初衷。同时,将原 HTML 文档中晦涩的表格,转换成了 word 的排版方式,会更有利于阅读。

1997 年之后的公开信都提供了 PDF 文档,已经很适合阅读和打印,因此暂未收入这之后的公开信。后续如果有时间,再考虑整理成一份 PDF 文件。

本次只整理了英文原版信件,后续将陆续整理中文版信件。老实说,我低估了整理的工作量。先前整理、翻译 2020 年信件时,以为每年大概就15页左右的内容,加上一、两个小表格,轻率地决定着手前面这些年信件的整理工作。事实证明我还是太年轻。四十几年前,巴老就已经是“话痨”了,而且热衷于变着花样弄表格进行炫耀……

PDF 文件里可能会有一些错误,毕竟整理了太多表格后,我时不时会头晕,并产生错觉:“我是谁? 我在哪里?我在干什么?” 如果有朋友发现了错误,请联系我进行修改,谢谢!