在非 Windows 平台上使用 Canon MF3200 Series 打印机

咕了三个月,总算写完了。 手里有一台年代略有些久远的 Canon ImageClass MF3222 打印机,但其打印质量还十分不错,因此打算将其利用起来。但是非常令人难过的是 MF3200 系列使用的都是 CARPS 而不是 CUPS,因此无法在非 Windows 平台直接使用。 一种折中的方法是,每次连接打印机时启动 Windows 虚拟机,但这并不是一种优雅的方法。而且,我还希望实现远程打印。 鉴于家中有一台 24 小时开机的 Linux 服务器,我决定通过 Windows 虚拟机构建一个打印服务器。

虚拟机准备

因为手里有 Windows Server 2008 的正版,而且 Windows Server 2008 有内建的 IPP 服务器,因此最终选择使用 Windows Server 2008 64-bit。CPU 建议分配 2 核,内存分配 1024 MB 即可。 如果你的服务器没有太多历史包袱,可以重装为 VMware ESXi 或 Proxmox VE 等虚拟机平台,但我的服务器已经部署了很多服务并且资源也有限,因此最终选择使用 VirtualBox + KVM 加速。 建议虚拟机网卡模式设置为桥接,这样方便在内网中部署 Bonjour 打印机以及 AirPrint,而不需要每次部署服务都进行端口映射。 继续阅读 »

使用 Phicomm N1 作为路由器

最近咕力十足,新高三狗也确实比以前忙了很多,都咕了两篇 blog 了,不过刚刚搞的这个绝对不能咕! 之前买了个 Phicomm N1,但是因为家里有服务器所以一直吃灰,近期之前的家里小米路由器 3 越来越不撑了,也不能充分利用那边的校园网资源。于是我萌生了拿 Phicomm N1 作为路由器的打算。 说干就干,于是我拿着刷了 Debian 9 stretch 的 Phicomm N1 过去了。 设备: 入户线 (静态公网 IP,无 DHCP),刷有 Debian 9 stretch 的 N1,小米路由器 3,一根网线。这里设 N1 连接的小米路由器上的 LAN 口为 LAN 1。

配置 VLAN

切入正题,首先 Phicomm N1 只有一个以太网口,虽然也许我们可以插 USB 网卡,但是不知道为什么我的多个型号的 USB 网卡都不能工作,看起来是内核驱动出了问题,而内核又一直是我的知识盲区。那么这个口就需要同时承担 LAN 和 WAN 的功能。这里我们就需要引入 VLAN。对于 VLAN 的定义不再赘述,它的功能就是在一个 interface 上划分出不同的虚拟 LAN,起到分割广播域 (广播域的定义不再赘述) 的作用。 小米路由器刷了 NATCAP 移植的 OpenWRT,因此支持 VLAN 交换。 我们的思路是,通过使用不同的 VLAN tag,使得小米路由器的 LAN 口、Wi-Fi 和 N1 处于一个广播域中,使得小米路由器的 WAN 口和 N1 处于一个广播域中,这样 N1 上的虚拟 WAN 口就可以和运营商路由器处于一个广播域中,从而互相访问。 继续阅读 »

使 Homebrew 在 root 权限下工作

Homebrew 是一个新型的,Ruby 编写的 macOS 包管理器。但是 Homebrew 的一些设计哲学使得它难以在多用户的情况下共同使用,并且存在诸多安全隐患。比如,Homebrew 会将 /usr/local 下的许多目录的所有者设定为当前执行用户,并禁止用户使用 root 权限安装包。这些设计哲学,使得 Homebrew 难以成为一个系统级的包管理器。但 MacPorts 和 Fink 相对难以令人满意,因此我们需要让 Homebrew 像其它包管理器一样,使用 root 安装包并不破坏原有的系统权限。

Homebrew 代码研读

通过监控进程我们可以发现,判定是否 root 权限的代码并不在 Ruby 中。而在 Shell 脚本里。 在 /usr/local/Homebrew/Library/Homebrew/brew.sh 中,我们发现了相关代码: 继续阅读 »