在 OpenVZ 6 上安装 / 升级到 Debian 10

2020 年了,你怎么还在用 OpenVZ 6 的 VPS?因为它(们)只要一刀一年。因为 OpenVZ 6 的内核非常老旧(Linux 2.6.32),较新的系统无法在旧内核上正常运行,因此之前我的 OpenVZ VPS 只能用 Debian 8。但我在 GitHub 发现了一个修改版的 glibc(C 语言运行库),可以在 OpenVZ 6 内核上正常运行 Debian 10。警告不保证以下步骤适用于所有 OpenVZ VPS,也不保证这个 glibc 的安全性(我没看它修改了哪里,说起来停止维护的 OpenVZ 6 还要什么安全性)。请备份好数据,最坏的情况下你可能需要重装系统。安装步骤原作者只提供了 deb 包,但这些 deb 包里有调试符号之类一般人用不上的东西,所以不建议 dpkg -i *.deb。原作者建议自己在本地建一个简单的软件源再使用它,步骤如下:# 下载截至本文发布日的最新版本wget https://github.com/sdwru/glibc-debian-10/releases/download/2.28-9910.0/glibc_2.28-9910.0+custom1.1_amd64.deb.zipunzip glibc_2.28-9910....

Docker 容器共享网络命名空间,集成 Bird 实现 Anycast 高可用

正好一年前,我在 DN42 网络内用 Docker 建立了 Anycast 服务。当时我的方法是,自定义容器的镜像,在其中安装一个 Bird,然后加入 OSPF 协议的配置文件来广播 Anycast 路由。但是随着时间推移,这套方案出现了以下问题:安装 Bird 本身是个较花时间的过程。我的 Bird 不是用 apt-get 装的,因为我的 Dockerfile 需要支持多种 CPU 架构,而 Debian 有些架构的软件源里没有 Bird。而又因为我的构建服务器是 AMD64 架构,使用 qemu-user-static 支持其它架构的镜像运行,为其它架构制作镜像、编译程序时就涉及到大量的指令集翻译,效率非常低。构建一个镜像在不同架构下的版本可能需要 2 小时以上,而安装应用本身的 apt-get 流程只需要几分钟。自己定制镜像也比较花时间。因为容器中需要同时运行目标应用(例如之前的 PowerDNS)和 Bird,就不能直接把目标应用作为 ENTRYPOINT 了,而添加其它的管理程序(supervisord、s6-supervise、tini、自己写 Bash 脚本)...

系统禁用摄像头防止网课翻车

本文介绍如何在 Windows 和 Linux 中禁用摄像头驱动,从而:在系统层面上避免误操作开启摄像头,把你 在吃饭 在床上 在玩王者荣耀 在(数据删除) 的样子直播出来避免部分网课软件后台开启偷拍Windows 操作方法按下 Win+R 组合键调出运行窗口,输入 devmgmt.msc 并确定调出设备管理器窗口。你的摄像头会出现在 图像处理设备 一类中,右键停用它。(下图截自 Windows XP,但 Windows 7 和 10 上的操作相同。)当需要使用摄像头时,再回到此处启用摄像头,关闭并重新打开浏览器 / 网课软件即可。Linux 操作方法# 首先关闭浏览器、网课软件等占用摄像头的设备sudo modprobe -rv uvcvideosudo nano /etc/modprobe.d/disablecamera.conf# 输入如下内容并保存blacklist uvcvideo当需要使用摄像头时运行 sudo modprobe -v uvcvideo 加载驱动,用完后 sudo modprobe -rv uvcvideo 卸载驱动。加载 / 卸载后,关闭并重新打开浏览器 / 网课软件即可。...
插图

LADSPA 双声道分频及低音增强插件

今年过年期间,我爸给了我一只漫步者 M120 蓝牙音响。这只蓝牙音响并不是高端型号,只有两个扬声器,没有低音单元,并且也不支持 aptX、LDAC 这些高端的蓝牙音频编码技术。虽然我觉得便携音响用这些也听不出区别。我在用手机连上音响放歌时,发现这个音响竟然有一定的低频输出能力,或者说「能蹦」。说到能蹦,我就想到去年我的一个同学买的 JBL Charge 4 音响。Charge 4 作为一个 1000 块钱的蓝牙音响,有着独立低音单元,低音非常震撼。于是我就想,虽然我的蓝牙音响也就 100 块,能不能通过一些软件手段提升它的低音表现,做到和 Charge 4 」有点像「的程度呢?于是我就打开 Android 上的音效神器 - ViPER4Audio FX 音效软件,把」动态系统「里的低音拉高。此时,低音的确被增强了,但是扬声器开始出现了失真,具体表现为:当扬声器播放了一个低音鼓点后,播放的音量会降低一瞬间,这是受扬声器的机械结构所限。我本来打算对这个音响做一点改造,...

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

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

使用 PowerDNS 的 Lua 功能自建分地区解析 GeoDNS

之前,如果要为自己的网站自建权威 DNS 系统,那么(几乎)唯一的选择是 PowerDNS 加上它的 GeoIP 后端。但是 GeoIP 后端使用的是 YAML 格式的配置文件,不能与 MySQL 等数据库一同使用。这意味着必须手动配置一套跨服务器同步文件的系统,而不能使用更为成熟的数据库同步技术。不过,PowerDNS 在最新的 4.2 版本中加入了 Lua 记录的支持。Lua 是一种专门用于「嵌入其它程序执行功能」的编程语言,你或许曾经在 nginx 上看到过它(作为一个插件)。Lua 记录支持使得 PowerDNS 可以根据用户查询请求的不同来返回不同的回答,分地区解析 GeoDNS 功能也就可以实现了。更新 PowerDNS最新的 PowerDNS 4.2 版本没有加入 Debian 10 的软件仓库中,你需要从 Debian Unstable 的软件仓库下载。但是由于 PowerDNS 依赖了一大堆新版的库文件,其中包括系统运行必须的库文件,...
插图

学校网络中自建 VLAN,低价实现高速私有内网

和全国大多数高校一样,我所在的大学以「一人一账号」的方式提供网络。通过有线网络或者 Wi-Fi 联网时,所有请求会被暂时重定向到一个登录界面(即 Captive Portal),输入用户名密码后才可以访问互联网。这个做法也是大多数公共场所(例如机场,咖啡厅)的标配,对于电脑、手机等设备也还算友好。但是一些不带显示屏的设备(例如树莓派,ESP8266 等)就难以访问网络了。对于树莓派、ESP8266 等可以运行自定义代码的系统,可以模拟提交表单来登录网络,但是一旦模拟提交表单的程序出现问题,你就得手动将设备取下来,连上自己的电脑上传新的登录程序,这一过程非常的麻烦。至于其余只能运行预定程序的智能设备就完全无法联网了。由于我并没有智能台灯等设备,本文暂时只考虑可以运行 Windows、macOS、Linux 三大操作系统之一的智能设备,包括电脑及单板计算机(Single Board Computer)。另外还有几个小问题:我的寝室里只有一个网络端口供我使用,...
插图

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 浏览器。...

(怀旧)ATduck 虚拟 Modem 拨号上网

今年真的是 9102 年了吗?是的。出于怀旧的目的,我想尝试一下在 Windows 2000 等旧操作系统中拨号上网。当然,在 2019 年绝大部分人都已经不会有使用电话线的调制解调器,甚至不会知道曾经有它存在。现在的电脑也早已没有了电话线接口,ISP 也不再提供拨号上网服务。Doge Microsystems 的这篇文章提供了自建拨号上网 ISP 的一种方法。文章作者购买了硬件电话 Modem,使用 Asterisk 建立了基于 SIP 的网络电话交换网,然后使用 Analog Telephone Adapter(ATA,模拟电话转 SIP 网络电话的设备)将 Modem 连接上交换网。同时作者使用 Linux 下的 mgetty 操作 Modem,结合 pppd 提供了一个 PPP 拨号服务。这样操作的主要问题是:一整套设备太贵,而且也占地方。这个作者用来拨号的是一台物理的 Windows 98 主机,而不是像我一样使用虚拟机。如果我采用类似的方案,我还需要各种转换线以及 Hub 才能将所有设备连上主机,并且还要在虚拟机软件中设置直通。...

与 Hexo 配合使用 Sass 和 Webpack

为何使用 Sass 和 WebpackSass 是 CSS 的超集,在 CSS 的基础上扩展了大量的语法,支持规则嵌套、变量定义、include 等功能,也可以进行数学运算。主要功能可以在官方入门教程中查看。Sass 原先的文件格式扩展名是 sass,其结构类似 yaml,似乎不与传统 CSS 兼容;而目前 Sass 的文件格式是 scss,兼容 CSS 文件。我使用 Sass 的目的,一是更加清晰的 CSS 规则管理。例如,我有一些 CSS 规则希望只对网站顶栏生效,我就可以将它们全部放到一个代码块中方便管理:header { h1 { ... }}二是减少网页加载时的 CSS 代码量。虽然我的网站使用了 Bootstrap,但是我只使用了一小部分功能,即 Bootstrap 的栅格系统,导航栏和下拉菜单,其它大部分功能都没有使用,这部分 CSS 就不必加载。同时,我还通过 CSS !important 覆盖的方式对一些 Bootstrap 的颜色、形状进行了自定义,这也引入了额外的代码量。我在我的 scss 文件中定义了全局的控件颜色、字体大小等,...