Posts

在 OpenWrt 上默认启用 Wi-Fi

阅读时长:6 分钟

OpenWrt 在配备有线网口的路由器上默认是禁用 Wi-Fi 的;官方文档对此的解释是“出于安全原因”1。要启用 Wi-Fi 的话,用户就需要暂时先使用有线网连接路由器,从而能够进入路由器后台调整 Wi-Fi 设置。 这样必然是没有大多数路由器的原厂固件方便。大部分路由器的机身上都会有个贴纸,上面写有唯一属于该路由器的出厂默认 Wi-Fi 名称及密码;用户在首次设置路由器时,就可以使用贴纸上的信息,以无线的方式连接路由器,不必使用有线网。不过,OpenWrt 确实难以为用户配置与提供默认的 Wi-Fi 网络参数。使用固定的、在所有 OpenWrt 设备上都相同的初始 Wi-Fi 密码的话,确实会带来安全风险;随机密码安全性更高,但与路由器厂商能在路由器机身贴纸不同,OpenWrt 没有能在用户连接到路由器前告知用户随机密码的方式。因此,默认禁用 Wi-Fi 确实是适合 OpenWrt 的提高安全性的手段。 ……

在 OpenWrt 上创建暴露于公网的 IPv6 子网

阅读时长:15 分钟

有些家庭宽带用户有将他们家庭网络中的部分设备开放给公网访问、并同时阻止公网访问其它设备需求。例如,家里的服务器可以允许公网访问,但手机、工作站之类的设备则应隔离于公网。实现这种需求的一种方法就是为开放给公网访问的设备专门建立一个子网,将该子网暴露在公网之下,而其它不希望公网访问的设备则继续连接默认的局域网子网,受防火墙保护,屏蔽公网访问。这种暴露于公网的子网,英文叫 demilitarized zone (DMZ),字面意思是“非军事区”,而在计算机网络的语境中也被称为“对外网络”。 ……

用 MultiOS-USB 制作多引导可启动 U 盘

阅读时长:7 分钟

在为了安装操作系统而制作可启动 U 盘时,如果制作多引导 U 盘,就可以免除每次需要启动新 ISO 时都要擦除 U 盘上原有数据的烦恼。我在了解到多引导 U 盘的存在前,一直都是用传统的可启动 U 盘制作工具,比如 Rufus,而传统工具的缺点就是,如果想用 U 盘启动不同的 ISO,就需要重新运行工具,并覆写 U 盘上原有的数据。多引导 U 盘就解决了这一缺点。比如说,如果我只有一块 U 盘,已经在上面写入了 Windows 安装盘的 ISO,而我现在想启动某 GNU/Linux 发行版的 ISO,并且这块 U 盘支持多引导,那么我只需要把 GNU/Linux 发行版的 ISO 复制到 U 盘上即可;等我使用 U 盘引导时,我可以选择是启动 Windows 的 ISO 还是 GNU/Linux 发行版的。我仍然能保留并且启动原来的 Windows ISO,无需将其覆盖。除此以外,我只需要简单地使用文件管理器或者 cp 命令就可以将新 ISO 装载到 U 盘上,不需要重新运行任何特别的工具或是复杂的命令。 ……

精简 Linux 内核配置

阅读时长:11 分钟

大部分青睐于自己编译内核的 Linux 用户想必都不会拒绝缩短内核编译耗时且减少内核及模块占用的硬盘空间的机会。常见的做法是精简内核配置,即在编译内核时关闭用户不需要的配置选项:无论是用不到的软件功能,还是用户未拥有的硬件的驱动,都可以在内核配置中关闭。例如,用不到 WireGuard 的用户就可以关闭对应的选项;没有 AMD 独立显卡或者带集成显卡的 AMD CPU 的用户就可以关闭 amdgpu 驱动的选项。 自己编译内核的用户,想必绝大多数是 Gentoo 用户,毕竟 Gentoo 的一大特色是用户可以轻松地本机编译软件包。因此,Gentoo 用户经常提到的问题之一就是精简内核配置。本文的目的即是就此问题为此类用户提供教程。 ……

Ptyxis 终端模拟器体验

阅读时长:11 分钟

我使用 GNOME 已经有好几年了,这期间用的一直是 GNOME 终端(GNOME Terminal),我感觉很好用。虽然后面又出现了 GNOME 控制台(GNOME Console),有一些不错的新功能,但它却没有个别 GNOME 终端中存在、且我需要用到的功能,所以一直以来我仍然在坚守 GNOME 终端。而到了现在,随着 Ptyxis(英文发音 /ˈtɪksɪs/)的出现,为 GNOME 设计的终端模拟器程序已经多达三个。简单上手体验了 Ptyxis 后,我很快就对它爱不释手,而在花了几天折腾一番后,我成功让 Ptyxis 达到了可以取代 GNOME 终端的标准。 ……

配置自己的 Gentoo 二进制包服务器

更新时间: 阅读时长:22 分钟

在诸多 GNU/Linux 发行版中,Gentoo 的一大特色是用户可以相对容易地从源码编译整个系统所有的软件包。在之前很长一段时间当中,从源码编译软件包是 Gentoo 用户的唯一选择,因为和其它发行版为用户分发已编译好可以直接运行的二进制可执行文件不同,Gentoo 分发给用户的只是用来编译二进制文件的脚本(也就是 ebuild)。从源码编译整个系统要花费很长时间,这也是 Gentoo 用户以前必须要面对的问题。不过,在 2023 年年底,一切都变了:Gentoo 官方的二进制包服务器上线了。该二进制包服务器为许多 Gentoo 软件仓库中的软件包都提供了预编译的二进制包,允许用户直接下载安装、跳过本地编译流程,从而节省时间。 ……

通过命令行选项让同一 LaTeX 源文件产生不同输出

阅读时长:8 分钟

您可能有过创建同一份文档的不同版本的需求、或是想从同样的源文件生成多份不同但又彼此关联的文档的情况,例如: 文档的不同版本之间只有排版不同,而内容完全相同。例如: 您想生成一份标准版的文档,同时再生成一份大字号版,以便于视力不佳的人群阅读。 不同版本的文档以不同的顺序呈现内容,但除此之外,所有版本的内容都是一样的。例如: 您可能想准备多种版本的履历以申请不同类型的岗位,其中面向研究岗位的履历将出版物列在教学经历之前,而面向教学岗位的履历则是相反的顺序。 ……

Framework Laptop 13 AMD 锐龙 7 7840U 版本

阅读时长:18 分钟

Framework 笔记本虽然目前还未在中国大陆境内销售,但依然有不少人通过新闻或者视频了解过。提到 Framework,很多人的第一印象也许是“模块化”1,不过 Framework 自己标榜的产品设计理念主要是可维修、可客制化、以及可升级。一开始,Framework 笔记本用的全是英特尔酷睿处理器;在等待了两年后,Framework 终于推出了我心念已久的 AMD 锐龙版本,我遂购买了一台搭载锐龙 7 7840U 的 Framework Laptop 13,在 2023 年 11 月收到货后一直使用至今,直到现在终于有时间可以记录一下我的使用体验了。 ……

让 Steam 在启动游戏快捷方式时最小化到托盘(仅适用于 Windows)

阅读时长:4 分钟

最近 Steam 客户端的大更新在大改界面的同时,在用户体验方面却有所退步:如果在 Steam 客户端没有运行的时候,使用桌面或开始菜单的快捷方式启动 Steam 游戏,那么 Steam 会在启动游戏前弹出客户端窗口;而在大更新之前,用快捷方式启动游戏后,Steam 是会直接最小化到系统托盘的,压根不会显示客户端窗口。 新版客户端的这一特性,对于喜欢用快捷方式启动 Steam 游戏、并且不想让 Steam 开机自启的用户来说,无疑十分烦人。因为现在用快捷方式启动游戏后,必须手动关闭 Steam 自己弹出的客户端窗口,才能将 Steam 最小化到系统托盘,否则 Steam 的窗口就会一直待在前台。 ……

避免创建纯 -9999 Gentoo 软件包

更新时间: 阅读时长:18 分钟

有些 Gentoo 软件包会提供一个特殊的 9999 版本:按照惯例,如果一个 ebuild 的版本是 9999,那么它就是一个实时 ebuild,构建软件包时使用的是该软件项目的版本控制系统仓库(例如 Git 仓库)中的最新“实时”源码,而非来自 .zip 或 .tar.* 压缩包的“非实时”源码。版本控制系统仓库中的项目源码经常会被修改,故被称作“实时”源码。 当一个软件包只有一个实时 ebuild、没有任何非实时 ebuild 的时候,我会称之为“纯 -9999 软件包”,因为该软件包唯一的 ebuild 的版本一般是 9999。请避免创建纯 -9999 软件包。换言之,一个实时 ebuild 不应成为某个软件包的唯一 ebuild。 ……

在搭载苹果 ARM 芯片的 Mac 和 Asahi Linux 之上安装 Gentoo

阅读时长:15 分钟

我还记得在苹果刚发布基于自家 ARM 芯片的 Mac 的时候,有人猜测一场变革将就此在桌面计算领域展开。当时在 Reddit 上就有一名 GNU/Linux 用户声称,各大 GNU/Linux 发行版应重视起潜在的 x86-64 转到 ARM64 的趋势、未雨绸缪、采取行动,以免跟不上时代的潮流。但持此类观点的用户可能不知道的是,得益于高级语言的可移植性,构成 GNU/Linux 的常见软件包其实已经兼容 ARM64 很长时间了。而苹果发布的这些基于自家的高性能 ARM 芯片的 Mac,不但不一定会对 GNU/Linux 造成威胁,反而可能给后者提供了一个更宽阔的舞台供其发挥。在 Asahi Linux 项目开发者的努力下,我们可以在搭载苹果芯片的 Mac 上运行 GNU/Linux,充分压榨苹果芯片的性能。 ……

在 Hugo 模板中使用新功能并兼顾向后兼容性

更新时间: 阅读时长:7 分钟

在最近发布的 Hugo v0.109.0 中,页面对象新增了一个 .Ancestors 变量,可以用来方便地实现面包屑导航的模板。光是通过对比此次更新前后 Hugo 文档中给的面包屑模板例子,就可以看出这个变量的作用了:有了它,面包屑就不需要通过递归调用辅助模板(即下面例子中的 breadcrumbnav)来生成了,代码简洁明了了不少。(为便于阅读,以下代码的格式被重新整理过) ……

在原版 DOSBox 中运行 Windows 98

阅读时长:11 分钟

作为一个 DOS 模拟器,DOSBox 理论上应该是支持运行像 Windows 3.1、95 和 98 这些基于 DOS 的 Windows 版本的。确实,在 DOSBox 官网的兼容性列表中,Windows 3.1 和 95 都被列为“支持”(supported);但是 Windows 98 的兼容性仅被评为“可运行”(runnable),比中间的“可游玩”(playable)还低一档。可能正因为如此,很多想运行 Windows 98 的人索性就选用了支持 Windows 98 的 DOSBox 分支项目,比如 DOSBox-X。 不过,我并没有放弃在原版 DOSBox 里运行 Windows 98 的尝试。如果能在 Windows 98 里运行纸牌和三维弹球等程序就可以算作“可游玩”,那么根据我的发现,只需要一点点额外的操作,就可以让 Windows 98 在原版 DOSBox 中至少达到“可游玩”的级别。因此,我决定写下这篇教程,给想在原版 DOSBox 里试一下 Windows 98 的人一个参考。 ……

在 Gentoo 上使用 Git 管理内核源码

更新时间: 阅读时长:9 分钟

Gentoo 软件仓库的 sys-kernel/* 类别下有若干 Linux 内核软件包可供用户选择;不同的软件包安装内核的方式也不相同。其中,sys-kernel/*-sources 软件包(例如 sys-kernel/gentoo-sources、sys-kernel/vanilla-sources)只安装内核源代码文件,不进行任何其它操作。这样的特性适合想自己手动编译并安装内核、但仍然希望系统软件包管理器自动更新内核源码的用户。 然而,想要在 Gentoo 上妥善安装并管理内核,并不一定非要安装 sys-kernel/* 软件包:即使是内核源码,也可以由用户自行手动下载与更新,不需要软件包管理器的干预。本文就将介绍一种这样的方法,即使用 Git 来管理通过 Git 仓库提供的内核源码(并可附带管理外来的内核补丁)。 ……

Gentoo 配置指南:systemd

更新时间: 阅读时长:4 分钟

身为 Gentoo 官方安装文档,当前版本的 Gentoo 手册将重点放在了基于 OpenRC 的系统的配置,而不是 systemd。毕竟 OpenRC 是主要由 Gentoo 维护的项目,如果连自家的发行版都不把自己维护的 init 系统作为首选推荐的话,那就好比百度员工都在用谷歌。对于想安装 systemd 的用户,手册虽然也包括一些信息和指导,但同时会让用户另行参考一篇专门讨论 systemd 的 Wiki 文章。我觉得该文章的信息虽然很全面,但同时也很零散:系统安装过程中需要执行的步骤散落在文章各处,导致很容易遗漏关键的步骤。因此,我决定单独写一篇关于在 Gentoo 上配置 systemd 的文章,汇总安装 systemd 的全部步骤。 ……

Gentoo 配置指南:基于 systemd 的 GNOME

更新时间: 阅读时长:4 分钟

想在 Gentoo 上完美配置 GNOME 虽然不难,但需要经验。只要成功配置过一遍后就可能会觉得是小菜一碟,但是第一次操作的时候很容易遇到重重坎坷。虽然根据 Gentoo Wiki 上的 GNOME 指南可以配置一个最基础且能用的 GNOME 环境,但是想要完善 GNOME 配置的话,就还需要执行许多指南中没提到的额外步骤。比如,如果不进行额外配置的话,修改网络连接选项时就需要输入用户密码以验证权限,在 Wayland 会话中也无法从包括 Chrome 在内的浏览器共享屏幕内容。而且,该指南的中文翻译质量也有些堪忧。 因此,在这篇文章中,我将介绍让 Gentoo 上的 GNOME 更加完美地运行的一些关键步骤。其中,一些比较基础的步骤在 Gentoo GNOME 指南中已经提到,而剩下的指南中未提到的步骤则会提升用户体验。 ……

MC Forge Mod 开发记录:加入配置界面(1.16 版)

阅读时长:11 分钟

在本系列博客的第一篇文章中,我介绍了如何在 Minecraft 1.14.4 及以上版本之上给 Minecraft Forge mod 做一个配置界面,即使是在 Forge 里原有的配置界面框架被删除、并且核心开发成员已经决定再也不会把它加回来的情况下。Forge 项目领导者 LexManos 如此冷酷无情地否定 @Cadiboo 耗费多于一年的心血才做出的劳动成果,仅凭几句话就随意地关闭前面链接里的 pull request,让我感到非常失望和心寒。除了对 Minecraft Forge 项目的主要成员又多了一份不满以外,这件事也让我明确了一项新的责任和使命,那就是继续维护这种开发 mod 配置界面的方法,确保它在最新的 Minecraft Forge 版本上仍然可用。在与一名 mod 开发者、本系列博客的一名读者、同时也是我所毕业的高中的一名学生 @yuesha-yc 交流后,我意识到了对于 Minecraft Forge 这样一个官方文档聊胜于无的平台来说,我这些关于 Forge mod 开发的文章对于 mod 开发者们来说就如同雪中送炭,所以我也会竭尽全力,继续分享我关于 Forge mod 开发的经验和知识,为广大开发者提供帮助。 ……

通过 Portage 打补丁以修复上游软件 Bug

阅读时长:11 分钟

如果您经常关注与自由软件相关的一手资讯,您肯定或多或少地读到过某款软件的 bug 最近被修复、或者某款软件有了什么新功能和改进的新闻,然后发现这些 bug 修复和新功能在一段时间内无非就是空气,因为实际收到包含这些修复或者改进的新版本的时候往往可能已经过了很长时间。当一个修复 bug 或者添加新功能的补丁被完成后,需要先提交给上游开发者进行审核、测试和整合,然后要等上游发布下个版本的时候才能正式生效,最后还要等您的发行版将新的上游版本添加到发行版自己的软件仓库,您才能收到包含该 bug 修复或新功能的更新。比如说,我们假设可能在今年 3 月发布的 GNOME 40 里包含一项 bug 修复。如果您使用的是 Fedora Workstation,您需要等到大概 4 月底,Fedora 34 推出的时候才能收到这项 bug 修复。如果是 Gentoo 的话,那我估计起码得等到今年下半年了,因为最近几次 GNOME 更新,Gentoo 都是在上游推出新版本之后过了将近半年才推送给用户的。 ……

用于在基于 Linux 的系统上查看 CPU 温度和频率的小脚本

阅读时长:3 分钟

在这篇帖子中,我将展示在基于 Linux 的系统上,如何仅依赖主流 GNU/Linux 发行版预装的软件包查看 CPU 频率和温度信息。这种方法不需要借助任何额外的和硬件驱动和支持相关的软件包,只需要用一个只有几行的 Bash 脚本,利用 Linux 内核自身提供的机制和一些最基础的 Unix 命令就能读取 CPU 的硬件状态信息。 如果想直入正题,您可以点击此处直接跳到脚本的内容。如果您想了解我发现这种方法的探究历程,欢迎继续向下阅读。 如果您是一名有一定电脑使用知识的 Windows 用户,您肯定有过使用任务管理器监测系统状态的经历。任务管理器提供了 CPU 占用率和频率信息,方便我们了解系统负载。虽然任务管理器提供的监测功能绝不是最全面的,但作为一个系统自带、并且可以快速调出的工具,任务管理器有它独有的优势。 ……

MC Forge Mod 开发记录:升级到 Minecraft 1.16

更新时间: 阅读时长:11 分钟

Minecraft Forge 支持 Minecraft 1.16 已经有相当长一段时间了。1.16.x 系列的第一个稳定版本 34.1.0 早在 2020 年 9 月,也就是我这个系列上一篇关于我的 mod 的更新的文章发布不久后,就已经出了。其实在我准备更新 mod 期间,Forge 的 1.16 支持就已经比较成熟了,所以我当时就在考虑要不要在更新时顺带把 mod 移植到 1.16 上。但是,经过艰苦的尝试,我发现当时 Forge 附带的 MCP 反编译出的 Minecraft 代码中依然有许多没完全反混淆的方法名称,遂感觉 Forge 对 1.16 的支持仍然不够完善,于是决定暂不把 mod 移植到 1.16。 后来,我看到 Forge 出了第一个 1.16 的稳定版后,就将其下载了下来,看了看之前没反混淆的那些方法的名字有没有给改过来。结果是令人十分失望的:所有原来没反混淆的名字,一个都没有变。这样一个在我看来完全算不上是一个稳定版本,Forge 就这么草草发布,贴上了“推荐”的标签,顺带还停止了 1.14.x 的支持。停止支持意味着什么呢?意味着如果您在 Forge 官方论坛发帖求助,并且您用的是一个停止支持的版本,就会有论坛管理给您扔下一句冷冰冰的“你用的版本已停止支持,请升级以继续获得支持”,然后无情地关闭您的帖子,顺手阻止了其他非管理员的论坛成员提供帮助。好家伙,发布一个未成品,还把一个稳定版本的支持结束了,就是强行让追求稳定的开发者选择 1.15.x 呗?我当时差点就要在这里写一篇檄文,点评 Forge 开发者对“稳定版”的重新定义、以及论坛管理对于有关停止支持的版本的提问的冷淡的处理态度。 ……

Gentoo 上手体验

更新时间: 阅读时长:11 分钟

自我上一篇文章发布到现在,已经过去六周时间了。各种新文章的主题和想法在我脑中迸发,把它们写下来并发布的意愿在我心中萦绕,只可惜太忙,而且忙的还是个竹篮打水一场空,只能在百忙之中匆匆把想法记录在草稿里,等有空的时候再写成正式的文章。现在终于忙完了一批活,难得短暂的清静,在可能只有写一篇文章的闲暇时间的情况下,我决定先把之前首次体验 Gentoo 的经历记录下来。Gentoo 是一个源码级 GNU/Linux 发行版,最有代表性的特点就是让用户自己编译系统的几乎所有组件,乃至于 Linux 内核也可以自己编译。 ……

在通过映像安装的 Fedora 系统上使用 Btrfs

阅读时长:7 分钟

自 Fedora 33 起,Fedora 将开始使用 Btrfs 作为桌面版本的默认文件系统。在我关注的几个 Fedora 用户社区(以国外的为主)中,这一更改还是受到了一些欢迎的,毕竟 Btrfs 和传统的 ext4 相比有一些额外、实用的功能。其它非桌面版本(例如服务器版)默认仍然使用 ext4,不过用户在使用 Anaconda 安装 Fedora 时仍然可以手动选择使用 Btrfs。但是,如果使用的是非桌面版本的 raw 映像,比如 aarch64 最小安装(Minimal)映像,因为是直接将映像写到安装目标磁盘上的,而不是用 Anaconda 安装器,所以就没有机会选择使用除 ext4 以外的文件系统。而在这篇帖子中,我将展示一种用映像安装时也可以使用 Btrfs 的方法,其原理是在应用映像后手动转换文件系统。 ……

Fedora 在树莓派 4 上的 USB 问题的复杂解决方法

更新时间: 阅读时长:5 分钟

在上一篇帖子中,我介绍了一种十分简单的解决在树莓派 4B 4GB/8GB 内存型号上运行 Fedora 时无法使用 USB 接口的方法。这种方法通过牺牲可用内存的方式来换取 USB 接口的正常功能。而在现在这篇帖子中,我将再介绍一种方法,虽然需要更多的操作,但是不会导致 3 GiB 内存的限制。 上篇帖子中提到,2GB 内存的型号因为没有 USB 相关的问题,无需进行额外操作。USB 接口不能使用的问题的具体症状也在该帖中有所描述。 概括 如果只用一句话总结这个方法的话,那就是让 Fedora 使用 openSUSE(另一个 GNU/Linux 发行版)的引导程序和固件。这其中涉及的步骤包括: ……

Fedora 在树莓派 4 上的 USB 问题的简易解决方法

阅读时长:2 分钟

截至 Fedora 32 和 Linux 5.8,在树莓派 4B 4GB/8GB 内存型号上使用 Fedora 会出现 USB 接口无法使用的情况。在这篇帖子中,我将介绍一种十分简单的解决方法,简单到只需要给一个配置文件加一行选项。 注意事项 树莓派 4B 2GB 内存型号的用户不需要担心这个问题,USB 接口在 Fedora 上应该是可以直接用的。4GB 和 8GB 型号的用户才可能遇到这个问题。 使用此帖中介绍的这个方法后,系统将只能使用 3 GiB 内存。如果您需要更多的内存的话,就得用另一种稍复杂的方法了。虽然它的步骤比这种简单方法多,但是不会减少可用内存。 症状 树莓派的 USB 接口在官方的树莓派 OS 和其它系统上能用,但是在 Fedora 上无法使用。运行 dmesg | grep xhci_hcd 会出现下列信息: ……

MC Forge Mod 开发记录:加入配置界面

更新时间: 阅读时长:15 分钟

Minecraft Forge 本来有一个允许 mod 创建自己的配置界面的框架,但是该框架在 Minecraft 1.13 的时候被移除了,之后也一直没有被加回来。这篇文章中所记载的就是我如何在不使用该框架的情况下,直接用 Minecraft 的 API 来写一个类似的 mod 配置界面。 本文描述的方法适用于 Minecraft 1.14.4 和 1.15.x。该方法可能也适用于 Minecraft 1.13.x 和 1.14 系列的老版本,不过因为这些版本没有 Minecraft Forge 的稳定版,我并没有进行验证。一般还是推荐用稳定版的 Forge 来进行 mod 开发。 如果您使用的 Minecraft 版本是 1.16.x,请参阅此篇文章。 如果是 Minecraft 1.12.2 或者之前的版本的话,要想使用本文描述的方法,可能需要对给出的代码示例进行大量修改;但是,在这些 Minecraft 老版本上可以直接使用 Forge 的配置界面框架,所以无需依照本篇文章的描述用 Minecraft 的 API 来替代。 ……

手动进行 dnf history undo

阅读时长:8 分钟

我平时常用的 GNU/Linux 发行版包括 Fedora 和 CentOS。后者主要在服务器上使用,而在其它的使用场景下,比如我自己的电脑,就会使用前者。选择这两个发行版主要是因为这它们都使用 DNF 作为软件包管理器前端。有人嫌 DNF 太慢,但我喜欢它是因为它不仅会详细列出它将要进行的操作,包括装卸什么软件包、什么架构、什么版本,还允许方便地查询历史记录。DNF 对其运行的每个事务都保存记录(一个事务就是一次安装或卸载软件包的操作),并且还支持使用 dnf history undo 撤销事务,或使用 dnf history rollback 回滚到某一个事务。其它的一些像 APT 和 Pacman 的软件包尽管也会保存日志,但是并没有类似的撤销操作的功能。 ……

在 Fedora 上安装树莓派的 vcgencmd 命令

更新时间: 阅读时长:3 分钟

这篇帖子算是对我之前关于在树莓派集群上配置 Fedora 的那篇的一个延续。集群配置好后,我告知机主 @ColsonXu 他的集群已经正式投入运算,他就告诉我可以运行一个命令来查看树莓派的 CPU 温度,监视硬件状况: $ /opt/vc/bin/vcgencmd measure_temp 这个 vcgencmd 命令是树莓派 OS(旧称 Raspbian)上用来获取硬件相关信息的命令。然而,这个命令在 Fedora 官方的软件仓库里并没有提供。好在 vcgencmd 的源代码是可以下载的,所以我们可以自行编译它,就能在 Fedora 上使用了。vcgencmd 是树莓派 OS 中 userland 软件包的一部分,而整个 userland 的源代码都可以直接从网上获取。 ……

在树莓派集群上配置 Fedora

阅读时长:10 分钟

在开始之前,我首先要感谢考森同志 @ColsonXu 给了我一个折腾树莓派的机会。他买了几个树莓派 4,准备组一个计算用的集群,可是建好后却没什么可计算的,没什么用场。直到一天早晨,达西 @mrdarcychen 在 Fedora 杂志上发现了一篇在树莓派上跑 Rosetta@home 的文章,于是就问考森要不要搞。在他同意之后,我便开始着手配置他的树莓派集群。 我拿到这堆树莓派的时候,集群已经设置好了。尽管我并没有问过机主本人他当时集群是怎么弄的,但他应该是按照这篇 MagPi 杂志文章配置的。这篇文章里用的是树莓派 OS(旧称 Raspbian)而非 Fedora;如果想弄一个运行 Fedora 的树莓派集群,大体的流程还是相同的,但是具体的步骤和运行的命令有些不一样。接下来我将具体地介绍如何在 Fedora 上完成同样的集群配置步骤。 ……

grep 替代 cat

阅读时长:4 分钟

我遇到了一篇很有趣的英文文章 Unix Recovery Legend,讲的是一群人拯救一个被 rm -rf / 毁坏的系统的故事。几十年前,在电脑还没发展到人手一台,一台电脑要给好几个人同时使用,每个人自己只有一个终端的年代的某一天,与该文章作者同处一间办公室的同事发现邮件发不出去了,作者就前去帮忙检查,发现 ls 命令和 /etc 目录被删了,于是就去找系统管理员,发现管理员的屏幕上赫然显示着这么两行文字: # cd # rm -rf * 由于是以超级用户身份执行的,第一行命令,cd,把工作目录切到了根目录 /(在现在的 GNU/Linux 环境中这么做则会切到 /root 目录下),然后第二行命令就删除了 / 下的所有目录和文件,效果等同于 rm -rf /。好在这条指令在把硬盘清光之前被强行停止了,虽然 /bin、/dev、/etc 和 /lib 被删,但是 /tmp、/usr 和 /users(相当于现在的 /home)逃过一劫。/bin 下都是命令,所以 ls 和 ps 等程序没法使用;/dev 下是设备对应的文件,由于被删了,磁带机这样的存储设备无法使用;/etc 下则是有各种配置文件,包括网络配置,所以也无法通过网络连接机器。这几重因素造成了即使这些人有磁带备份也难以恢复系统的窘境。 ……

在 Windows Terminal 中使用 Cygwin 命令行或 Git Bash

阅读时长:5 分钟

近日,微软发布了 Windows Terminal 的首个正式版本。Windows Terminal 是 Windows 10 上全新的终端程序。和命令提示符还有 Windows Subsystem for Linux (WSL) 默认使用的系统自带老式控制台 conhost.exe 相比,它允许使用多种不同的壳层(shell),例如 Windows PowerShell、命令提示符、以及 WSL。除此之外,Windows Terminal 提供的功能和自定义选项也是比原有的控制台多许多。 得益于可自行添加 shell 的功能,我们可以将 Cygwin 的 shell 和 Git for Windows 中的 Git Bash 也加到 Windows Terminal 里,就可以在没有 WSL 的情况下在 Windows Terminal 里使用 Unix shell 和其它的一些 Unix 程序了。这篇文章将介绍相应的方法。 ……

让 Steam 和 Epic Games 共用同一份 GTA V 游戏文件

更新时间: 阅读时长:3 分钟

继 Epic Games 宣布 GTA V 将在他们的平台上限免一周后,大量玩家蜂拥而至,其中甚至不乏一些已经在 Steam 上买了 GTA V,想再弄一个甚至好几个小号的人。 然而,很多人在 Steam 和 Epic Games 上同时拥有 GTA V 之后却发现即使已经从 Steam 上下过了游戏,也要从 Epic Games 上重新下载一遍。其实,只要利用一些小技巧,就可以让 Steam 和 Epic Games 共用同一份 GTA V 游戏文件,既省去了重新下载的麻烦,又能节省磁盘空间。我们可以利用 Windows 上一个不知名的 MKLINK 命令来建立一个链接:链接给人的感觉类似于快捷方式,能够让被连的文件看起来是放在了链接所在的位置,但其实是被存在了另一个位置。而链接本身占用的空间也是非常小的,所以可以节省大量的磁盘空间。 ……

重启个人网站

阅读时长:4 分钟

近期,我萌生了重建个人网站的想法,搞一个具有博客功能的网站,然后记录一些我使用软件和技术的经历。在接触和学习一个陌生的东西的时候,我经常在网上查阅大量的资料和教程,因为只看一两篇文章所学到的知识往往是有局限的。特别是当我在尝试用一个陌生的技术来做一件比较复杂的事情的时候,可以将这件事划分成好几个任务;网上可能没有一篇很详尽的文章描述了整件事的做法,但对于每个小任务都可以找到一篇相应的教程。所以这整套学习流程下来,我所做的所有操作的步骤都分散在了多篇不同的文章里。如果我可以自己汇总一篇教程,在一份资料里记录下我的所有操作,那想必对日后的参考的帮助是很大的。 ……

WannaCrypt 勒索软件

阅读时长:6 分钟

那是在 2017 年 5 月 12 号晚上,我母亲刚刚跟我说“看了一个汶川大地震 9 周年的视频,北川的地震废墟真是惨不忍睹”,随后给我分享了一个探访北川的视频。与此同时,我看到了一名平时在微信上与我交流比较少的同学忽然问我:“你了解比特币吗?”我当时有点儿纳闷,这名平时以打篮球、玩游戏和看《人民的名义》为爱好的同学为什么忽然对这个在中国几乎无人关注或使用的虚拟货币产生了兴趣。我对比特币也是略知一二,于是凭我对比特币有限的认知与他寒暄了几句,因为当时也很晚了,我已经准备上床睡觉了。 ……

Nexus 6/9 及以后的 Nexus 设备的 Bootloader 解锁机制及问题

阅读时长:4 分钟

如果您给谷歌与设备制造商合作设计制造的 Nexus 系列设备刷机,那么您一定不会对 Bootloader 锁(以下简称 BL 锁)和 fastboot 工具陌生。作为从 Nexus One 就开始引入的机制,如果希望在 Nexus 设备上刷写任何固件,包括官方的以及非官方的,都需要先使用 fastboot 解开 BL 锁才可以刷,否则无法刷入。(XDA 论坛上有人说在一些早期型号的 Nexus 上无须解锁也可以刷入谷歌放出的原厂固件,但因为我也没有那些老设备,无法考证) 直到 Nexus 5,解 BL 锁都只有一个大步骤:在设备进入了 fastboot 模式并连接到电脑的前提下,电脑上使用 fastboot 工具输入简简单单的一行解锁命令,设备就解锁了。 ……