插图

NixOS 系列(四):「无状态」操作系统

NixOS 系列文章目录:NixOS 系列(一):我为什么心动了NixOS 系列(二):基础配置,Nix Flake,和批量部署NixOS 系列(三):软件打包,从入门到放弃NixOS 系列(四):「无状态」操作系统更新记录:2023-02-18:在「移动 Nix Daemon 的临时文件夹」一段,修正配置不对 root 用户生效的问题。NixOS 广为人知的一大特点是,系统大部分软件的设置都由 Nix 语言的配置文件统一生成并管理。即使这些软件在运行时修改了自己的配置文件,在下次切换 Nix 配置或者系统重启时,NixOS 也会将配置文件重新覆盖。例如,在运行 NixOS 的电脑上运行 ls -alh /etc,可以看到大部分配置文件都只是到 /etc/static 的软链接:# 省略部分不相关的行lrwxrwxrwx 1 root root 18 Jan 13 03:02 bashrc -> /etc/static/bashrclrwxrwxrwx 1 root root 18 Jan 13 03:02 dbus-1 -> /etc/static/dbus-1lrwxrwxrwx 1 root root 17 Jan 13 03:...
插图

NixOS 系列(三):软件打包,从入门到放弃

NixOS 系列文章目录:NixOS 系列(一):我为什么心动了NixOS 系列(二):基础配置,Nix Flake,和批量部署NixOS 系列(三):软件打包,从入门到放弃NixOS 系列(四):「无状态」操作系统NixOS 的一大特点是,系统所有的二进制程序和库文件都在 /nix/store 目录中,由 Nix包管理器管理。这也意味着,NixOS 不符合Linux 的 FHS 标准,它的 /lib 或 /lib64 目录下不存在类似 ld-linux-x86-64.so.2 之类的库文件动态加载器,更不存在 libc.so 之类的库文件。因此,除非静态链接,否则为其它 Linux 下编译的二进制文件将完全无法在 NixOS 下运行。所以,要在 NixOS 上使用尚不存在于 Nixpkgs 仓库中的软件,最佳方案是自己用 Nix 语言写一份打包脚本,给这个软件打一个包,然后把打包定义加入 configuration.nix 中,从而安装到系统上。关于 NixOS 的软件打包,有三个好消息和两个坏消息。好消息是:Nixpkgs,也就是 NixOS 的软件仓库,...

用逆向工程方式给惠普暗影精灵宏按键编写 Linux 驱动

我前段时间换了台新电脑,惠普的暗影精灵 17t-ck000(美版,应该对应的是国内的暗影精灵 7 Plus)。这台电脑好是好,做工优秀,性能强大,就是有一个问题:它在 Linux 下的驱动支持实在是太烂了。不支持调节风扇转速,你能看到风扇转速,但仅此而已。再加上惠普的默认风扇策略非常激进,即使我开启了 BIOS 中的低温风扇停转功能,它依然在 CPU 温度只有 40 度、显卡空载的情况下转得非常欢快。其实可以用 NBFC 直接写 EC 寄存器来控制,但在某次不幸的事故中当时的配置方案丢失了。我配置 NBFC 时正在新电脑试用 NixOS。事故发生时新电脑上的 NixOS 被我删掉了,而且当时的配置没上传 GitHub。过段时间再重新写一遍(咕咕咕)不支持调整键盘背光颜色,它们在 Windows 下由 OMEN Command Center 软件控制。有时系统崩溃、我长按电源键断电重启时,BIOS 会将键盘背光恢复成默认的五彩斑斓的颜色,此时我只能回到 Windows 进行调节。...

老款 HP 工作站配置 NAS + 软路由笔记

我买了一台 HP 的老款工作站,用作家里的 NAS + 软路由。本文简单记录这台工作站的配置过程。硬件选择NAS 的硬件主要有这些选择:成品 NAS(如群晖)优点:开箱即用。缺点:价格贵,到了「买系统送硬件」的程度。而且与各种 Linux 发行版相比,NAS 的原厂系统难以定制。二手服务器优点:便宜,在保修期结束后,这些服务器大都被数据中心当作废品处理,然后被以极低的成本回收,翻新后二次售卖。稳定,这些服务器在设计时就考虑了长期运行,并且一直在温湿度稳定、无尘的数据中心中运行。缺点:噪音大,需要自行修改系统配置降低风扇转速,更换静音风扇,或者加装风扇减速线。体积大(主要针对机架式服务器)。专用配件,服务器厂商会定制各种配件供特定型号使用,如果你有扩展需求,需要加价购买这些专用配件。二手工作站优点:便宜、稳定,与二手服务器相同。噪音小,毕竟工作站是放在办公桌边,而不是在机房里使用的。缺点:专用配件,与二手服务器相同。...

用 NS1 和 UptimeRobot/Freshping 组建超低价 GeoDNS

本文部分内容参考自 https://hostedtalk.net/t/connecting-uptime-robot-with-ns1-dns-api/3883。目标我的 VPS 多且遍布世界各地,但一直以来,我的网站都只用了美国洛杉矶的一台 VPS 提供服务。因为我为了特殊线路、低价等原因购买的都是小服务商的 VPS,而非 DigitalOcean、Vultr 甚至 AWS、Azure 等大厂,这台美国洛杉矶的 VPS 网络有时会不稳定,虽然次数很少,但每次我都得手动临时切换 DNS 到其它 VPS 上,等网络恢复后再切换回来。因此,我希望可以把手头所有的 VPS 都用来提供网站服务,在某台 VPS 宕机时,用 DNS 将流量自动切到其它 VPS 上。由于我的网站使用 Hexo 静态网页生成系统,同步网站数据并无难度:只需要在一台 VPS 上生成文件,再用 Ansible 批量同步到所有 VPS 上即可。但更大的问题是 DNS 的配置。我希望用 GeoDNS 把用户导流到最近的 VPS 上,例如亚洲用户可以访问我的中国香港节点,美国用户可以访问我的美国洛杉矶节点,等等。...

Optimus MUXed 笔记本上的 NVIDIA 虚拟机显卡直通

一年前,为了能够一边用 Arch Linux 浏览网页、写代码,一边用 Windows 运行游戏等没法在 Linux 上方便地完成的任务,我试着在我的联想 R720 游戏本上进行了显卡直通。但是由于那台电脑是 Optimus MUXless 架构(前文有各种架构的介绍),也就是独显没有输出端口、全靠核显显示画面,那套配置的应用受到了很大的阻碍,最后被我放弃。但是现在,我换了台新电脑。这台电脑的 HDMI 输出接口是直连 NVIDIA 独立显卡的,也就是 Optimus MUXed 架构。在这种架构下,有办法让虚拟机识别到一个「独显上的显示器」,从而正常启用大部分功能。于是,我终于可以配置出一套可以长期使用的显卡直通配置。更新日志2022-01-26:PCIe 省电补丁实测无效。准备工作在按照本文进行操作前,你需要准备好:一台 Optimus MUXed 架构的笔记本电脑。我的电脑型号是 HP OMEN 17t-ck000(i7-11800HQ,RTX 3070)。我用的操作系统是 Arch Linux,更新到最新版本。建议关闭安全启动功能,...
插图

我把硬盘换到了新电脑上,这是 Btrfs 上的数据发生的变化

发生甚么事了我的旧电脑(联想拯救者 R720)的做工不怎么样。经过四年的使用,那台电脑换过一块键盘,一块机械硬盘(换成了 SATA 固态硬盘),而且每次拆开电脑后盖时,后盖或者屏轴上都会掉点塑料碎屑或者螺丝下来,让人感觉它的命不久矣。因此趁着打折,我买了一台新的笔记本电脑,并打算把我的数据迁移过去。我日常使用的 Arch Linux(包括 EFI 分区和 Btrfs 格式的根分区)都单独装在我半年前买的西部数据 SN550 1T 固态硬盘上。一般来说我需要在新电脑上重新装一遍系统,但是我一想,我在系统上也没针对硬件做很多的特殊配置,顶多就是配置了一下触摸板和 NVIDIA 显卡,只要在新电脑上把这些配置删了再调整一下,我的系统就直接能用了,方便省事。于是我就把这块固态拆下来,插进了新电脑的第二个 M.2 插槽。开机进入启动菜单,BIOS 自动识别到了硬盘上的 EFI 分区。很快我就重新进到了桌面。作为 Arch Linux 用户,...
插图

NixOS 系列(二):基础配置,Nix Flake,和批量部署

NixOS 系列文章目录:NixOS 系列(一):我为什么心动了NixOS 系列(二):基础配置,Nix Flake,和批量部署NixOS 系列(三):软件打包,从入门到放弃NixOS 系列(四):「无状态」操作系统这是我的 NixOS 系列文章的第二篇,主要介绍以下内容:NixOS 配置文件的基本格式和修改配置的方法 Nix 包管理器的 Flake 功能 Deploy-RS 部署工具本文假设你已经按照 NixOS 官方安装教程装好了一个系统。更新日志2021-12-18:NixOS 21.11 仍没有默认启用 Flake 功能,更新文章中相关说明。基础配置在 NixOS 的安装过程中,nixos-generate-config 工具在 /etc/nixos 目录下生成了一份初始配置文件,configuration.nix 和 hardware-configuration.nix 两份文件。我们先不管 hardware-configuration.nix 这份文件,它是根据系统的硬件设备、硬盘分区等自动生成的配置文件。先打开 configuration.nix:# 为缩短长度,我去掉了配置文件中所有的注释{ config, pkgs, ... }:...
插图

NixOS 系列(一):我为什么心动了

NixOS 系列文章目录:NixOS 系列(一):我为什么心动了NixOS 系列(二):基础配置,Nix Flake,和批量部署NixOS 系列(三):软件打包,从入门到放弃NixOS 系列(四):「无状态」操作系统我正在将我的各个服务器逐步从 Devuan Linux 迁移到 NixOS。NixOS 是一个以 Nix 配置文件为中心的 Linux 发行版,通过 /etc/nixos 的一份配置文件安装配置整个系统。这份配置文件指定了系统上的所有配置文件和软件包配置,因此你用同一份配置文件装出来的一定是一模一样的操作系统。Nix 语言是图灵完备的,所以理论上无论你用的软件配置多复杂,你都能用 Nix 生成对应的配置文件。Nix 包管理器的另一大特性是 Reproducible Build(可重复构建)。NixOS 的软件包也是用 Nix 配置文件指定的,而 Nix 包管理器可以保证,(在软件本身不故意对抗的情况下),用同一份配置文件(包括源码版本,编译命令等)编译出的软件包功能完全一致,...

用 Drone CI 替换掉 Jenkins

Jenkins 是一款免费开源的 CI/CD(持续集成、部署)软件,被广泛应用在各种场景中。Jenkins 的主要优势在于其包罗万象的插件,可以完成各种任务,例如自动执行 SCP、Ansible 等部署,Cppcheck 等代码分析,Telegram、钉钉等状态通知。我之前也将 Jenkins 用于大量任务的自动化执行,例如我的 Dockerfile 镜像的自动更新,你正在浏览的 Hexo 博客的部署,甚至还有原神自动签到。但是 Jenkins 是一款拥有悠久历史的 CI,其前身 Hudson 早在 2005 年就发布了。因此,Jenkins 执行任务时依然是传统的直接执行命令,而非使用 Docker 容器等现代化的方式。这意味着 CI 执行的成功与否很大程度上依赖 Worker 主机的系统环境。例如,前段时间我租了一台配置更高的服务器,由于重新搭建了环境,导致 CI 执行过程中出现一堆莫名其妙的问题,花了一个星期才全部发现解决。此外,Jenkins 用 Java 写成,因此它的内存占用相当恐怖,...