插图

NixOS 系列(五):制作小内存 VPS 的 DD 磁盘镜像

NixOS 系列文章目录:NixOS 系列(一):我为什么心动了NixOS 系列(二):基础配置,Nix Flake,和批量部署推荐阅读:NixOS 与 Nix Flakes 新手入门,作者 Ryan YinNixOS 系列(三):软件打包,从入门到放弃NixOS 系列(四):「无状态」操作系统NixOS 系列(五):制作小内存 VPS 的 DD 磁盘镜像黑色星期五已经过了,相信有一些读者新买了一些特价的 VPS、云服务器等,并且想在 VPS 上安装 NixOS。但是由于 NixOS 的知名度不如 CentOS、Debian、Ubuntu 等老牌 Linux 发行版,几乎没有 VPS 服务商提供预装 NixOS 的磁盘镜像,只能由用户使用以下方法之一手动安装:自行挂载 NixOS 的安装 ISO 镜像,然后手动格盘安装。由于你可以在 NixOS 安装镜像的环境中随意操作 VPS 的硬盘,这种方法自由度最高,可以任意对硬盘进行分区,指定文件系统格式。但是,使用这种方法前,你的主机商需要在以下三项前提中满足任意一项:...
插图

从零开始实现 Nix 三角函数库

(题图来自:维基百科 - 三角函数)起因我想计算我的所有 VPS 节点之间的网络延迟,并把延迟写入 Bird BGP 服务端的配置中,以便让节点之间的数据转发经过延迟最低的路径。但是,我的节点截至今天有 17 个,我不想在节点之间手动两两 Ping 获取延迟。于是我想了一种方法:标记所有节点所在物理地点的经纬度,根据经纬度计算物理距离,再将距离除以光速的一半即可获得大致的延迟。我随机抽样了几对节点,发现她们之间的路由都比较直,没有严重的绕路现象,此时物理距离就是一个可以满足我要求的近似值。因为我的节点上用的都是 NixOS,统一使用 Nix 语言管理配置,所以我需要找到一种在 Nix 中计算这个距离的方法。一种常用的根据经纬度算距离的方法是半正矢公式(Haversine Formula),它将地球近似为一个半径为 6371 公里的球体,再使用以下公式计算经纬度之间的距离:参考资料:维基百科 - 半正矢公式 h=hav(dr)=(hav(φ2−φ1)+cos⁡(φ1)cos⁡(φ2)...

Optimus MUXed 笔记本上的 NVIDIA 虚拟机显卡直通(2023-05 更新)

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

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

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

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

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

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

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

笔记本 Optimus MUXless 下的 Intel 和 NVIDIA 虚拟机显卡直通

更新记录2022-07-21:补充 GVT-g 开机自启,感谢 Owsmyf 提醒。2022-01-22:根据 NVIDIA 驱动更新、评论区反馈更新内容。我在新电脑上成功完成了 Optimus MUXed 显卡直通。摘要(剧透)我成功在联想 R720 游戏本上把 Intel 核显的 GVT-g 虚拟显卡,以及 NVIDIA 独显本身直通进了虚拟机。但是由于受到架构本身的限制,这套方案有非常大的局限,例如很多游戏无法调用独显、操作麻烦、显示性能仍然较低等。因此,现阶段可以为了折腾而尝试,但不建议用于实用用途。为什么要这么做我平常浏览网页、写代码等操作都在 Arch Linux 系统下完成,很少使用 Windows 双系统。但是有的时候我想和同学联机游戏,就不得不重启到 Windows 系统。虽然已经有了 Wine、Proton 兼容层来运行 Windows 应用,还有 DXVK 来转译 DirectX 命令到 Vulkan 来提升性能,但是还是有很多游戏无法在 Wine 环境下正常运行,例如自带 DRM 或者反作弊保护的游戏,以及调用了奇怪 API 的游戏。...
插图

毕业设计 - 传感器网络开发踩坑记录

欢迎来到踩坑系列的第三篇。之前两篇中我分别介绍了我 RoboMaster 机器人竞赛和 FPGA 课程大作业中踩的坑。这次踩坑的是我的毕业设计,三人小组合作的空气质量传感器网络。整个项目的设计如下:从安装的传感器模块中读取数据并上传到服务器上的 InfluxDB 数据库我们使用的传感器如下:MiCS6814,测量 NO2,CO,NH3模拟输出 BME680,测量温湿度气压及 TVOCI2C 接口输出 PMS5003,测量可吸入颗粒物(PM)UART 串口输出额外加上了这些模块:ATGM336H,GPS + 北斗双模定位模块UART 串口输出 ESP8266,使用非常广泛的 Wi-Fi 模块UART 串口输出 MH-CD42,电源管理模块输出?不存在的,供电就行了需要足够节能,能用电池坚持一周左右也需要能够监测电池电量以计划电池更换一定程度的防雨能力网页显示,短时间预测教授已经有一个可以测量风力的气象站了这篇文章记录了我们在实现这些功能时踩的坑。...

使用现代格式几乎无损地存档图片及视频 - H265 与 HEIF

很多人都会保存有每次参加旅游、聚会等活动,或是人生重要时刻的图片和视频。如果你很喜欢拍照和录视频,并且把它们都保存下来,你很有可能会飞快地塞满一块有一块的硬盘。如果你不想不停地加硬盘,你也可以尝试对你的图片和视频等进行压缩。说到压缩,常见的操作是降低图片的分辨率。我曾经用过的古老的 Microsoft Office Picture Manager(集成在 Office 2003 中)就带有一键图片压缩功能,实际上是将图片转换成分辨率约为 1024x768 的 JPEG 图片。这样操作的一个很大的缺陷,就是图片的大量细节信息完全丢失了。即使你在存档的当时觉得可以接受这些细节的丢失,但随着技术发展,这些丢失很可能有一天变得非常扎眼。例如,零几年时显示器的分辨率普遍为 1024x768,因此 Microsoft Office Picture Manager 将图片压缩到这个分辨率。而这些图片在现代的 1080p 乃至 4K 显示器上被放大,细节的丢失就会导致旧图片变得模糊,而这些损失是不可逆的。因此我希望,...
插图

OS/2 Warp 4 系统试用及安装 Firefox

OS/2 是起初由 IBM 与微软公司联合开发,后续由 IBM 维护的操作系统。在上世纪 90 年代,OS/2 是 Windows 的有力竞争者,但 OS/2 后续在市场上被 Windows 系列击败,IBM 也在 2006 年 12 月 31 日最终停止了 OS/2 Warp 4 的技术支持。但是,这并不意味着 OS/2 的死亡。在官方技术支持终止后,Serenity System 公司接手了 OS/2 的开发,并以 eComStation 的名字继续开发;2015 年,另一家公司 Arca Noae LLC 也推出了一款基于 OS/2 的发行版 ArcaOS,并且作为商业产品出售。同时,开源社区也在为 OS/2 提供一些技术支持。开源社区在 OS/2 上交叉编译了常用的 Unix 工具(例如 ls,rm 等),RPM/YUM 包管理器,以及一系列的库。这使得 1996 年就发布的 OS/2 Warp 4 系统可以运行一些(相对)现代的应用程序,例如 Firefox 45.9 浏览器。本文中,我将介绍在 VirtualBox 虚拟机中安装 OS/2 Warp 4 操作系统,并且安装 Firefox 浏览器。...