使用 systemd-nspawn 快速创建 Linux 容器

使用 `systemd-nspawn` 这个命令我们可以很方便的创建一个 Linux 容器,需要的只是一个使用 systemd 作为 init 的 Linux 发行版的根文件系统。通过创建容器,我们可以获得一个可以随便折腾而不用担心损坏的 Linux 环境。这里用 Ubuntu 16.04 和 CentOS 7 为例,整个过程可以说是非常简单(虽然比起 Docker 还是麻烦了点)

继续阅读使用 systemd-nspawn 快速创建 Linux 容器

小实验:扩展 PS4 的存储

PS4 到手之后游戏买买买,500G的磁盘换成了1TB也快用完了,但是买2TB的话就感觉很麻烦,一来是要全部重新迁移数据,二是换下来的1TB WD Black也没其他地方用,就很难受。

查了一圈后发现,PS4 在某次系统更新后提供了将 USB 存储格式化为扩展存储的功能,也就是说可以用 USB3.0 的移动硬盘来装游戏。可能是有偏见吧我一直觉得移动硬盘是非常不靠谱的东西,不过这个特性倒是一个不错的拓展存储的切入点。

要说扩展存储,如果是普通的 PC 上有这个需求,解决方法非常多,比如我可以建立一个 SMB 协议的共享,Windows 和 macOS 原生兼容,Linux 只需要加载 cifs.ko 即可;当然 NFS 来实现也没有任何问题;如果对加密有需求,或是需要一个裸磁盘,还可以用 iSCSI 来做到。可是 PS4 目前没有破解,以上方法都不可行。

于是就想,PS4 支持 USB 存储的扩展,我能不能将上面提到的一些方式通过 USB 暴露给 PS4 来实现呢?比如这样一个设备:它本身是一个 USB 从机,同时有一个 GbE 接口,可以千兆访问到局域网里的 iSCSI Target,然后通过一些魔法,将 iSCSI Target 拿到的磁盘设备直通到 USB,让 PS4 认为这是一个大容量的 USB 存储。

继续阅读小实验:扩展 PS4 的存储

网易云音乐 Linux 版高分屏问题解决方案

网易云音乐 Linux 版推出很久了,肯定已经有很多人反馈过 HiDPI 下不能正常工作的问题了,然而似乎网易生娃不养娃,版本号 1.0.0 从一开始就没有变过(

在网上搜索 HiDPI 下字太小难以阅读就能找到最简单的解决方案:添加参数 `–force-device-scale-factor=2` 就能让他强制两倍渲染。不过这个方法在我这儿(ArchLinux,KDE)上并不是什么好的解决方案:启动程序时,程序按照环境 DPI 创建了窗体,但是内容部分则依然使用原分辨率渲染,效果就是只有坐上 1/4 能正常显示内容,剩下的都是白色的空白。只要我的全局 DPI 不是 100%,这些空白就一直存在。

继续阅读网易云音乐 Linux 版高分屏问题解决方案

简易 Web Terminal 的实现

说起来也是有趣,本来是研究一下 WebSocket 准备给论坛/博客增加实时更新之类的特性,结果看着看着就脑洞大开搞了这么个玩意儿((

首先明确一下,这里说的 Web Terminal 是指再网页中实现的,类似于终端模拟器的玩意儿。举例的话应该是类似于 Linode 的 LiSH 和 Visual Studio Code 中内置的那个终端,而不是 ConoHa 提供的 VNC 式的终端(其实那玩意儿是个远程桌面了)。最终目标的效果就是和 Secure Shell 类似:打开一个网页,就能启动一个网页所在服务器的 shell,比如到处都有的 bash 或者非常强大的 zsh,然后就可以与这个终端进行交互式的操作,比如使用 vim 编辑文件,或者查阅 man 中的手册。

继续阅读简易 Web Terminal 的实现

[OpenWrt] 为 x86_64 平台编译自己的 OpenWrt

OpenWrt 是一个十分著名的嵌入式 Linux 发行版,被广泛使用在家庭路由器的魔改上。其前身是 Linksys 被迫开源的 WRT54G 固件。

最近几天买了一个 Intel J1900 CPU 的板子,集成了四张千兆网卡,于是就打算拿来跑 OpenWrt x86。但是呢,OpenWrt 官方放出的 x86_64 固件中使用的标准库是 uClibc,一个面向嵌入式 Linux 系统的小型的 C 标准库。可是手里的硬件确实正儿八经的 BayTrail CPU,使用 uClibc 未免感觉太憋屈了。不仅如此,绝大多数编译好的二进制软件都是使用 GNU C Library,同时 uClibc 没有提供对 glibc 的兼容,所以即便我是 x86 的 CPU,所有软件也都需要使用 OpenWrt 重新编译,很繁琐。于是,打算重新编译自己的 OpenWrt。

继续阅读[OpenWrt] 为 x86_64 平台编译自己的 OpenWrt

[OpenWrt] 简单的策略路由

上学期期末移动宽带质量不断劣化,我们宿舍被迫转向电信宽带。为了解决那个该死的防共享机制,我自费购买了一个坑爹的破解路由器,本质就是一个替换了 PPP 的 OpenWrt 路由器。选择购买而不是自己动手破解的主要原因是不想在这上面消耗太多精力,既然有现成的解决方案,那就掏钱解决了(

那个破解的路由器很渣,是个看起来就不像那种能拖宿舍里所有电子产品的破路由,所以我只将其作为拨号路由,而主要的 NAT 工作和 Access Point 仍然交给 WNDR 4300 来完成。电信的路由器 LAN IP: 192.168.43.1 并开启 DHCP,然后 WNDR 4300 直接将 WAN 接至任意一个 LAN 口,完成后顺手关掉了破解路由器的 WiFi

继续阅读[OpenWrt] 简单的策略路由

IKEv2 on Windows Server 2012R2

本文简单介绍了 Windows Server 平台上 IKEv2 VPN 的搭建,与 Windows/Linux 设备的访问。

在 Windows Server 上建立 PPTP VPN 服务

首先,通过远程桌面连接访问作为 VPN 服务器的 Windows Server,打开「服务器管理器」,点击「管理」菜单中的「添加与删除角色」,在「服务器角色」中,勾选「远程访问」。

继续阅读IKEv2 on Windows Server 2012R2

[L4D2] 在 Linux 上搭建一个 Left 4 Dead 2 游戏服务器

讲真,搭服务器比玩游戏有意思多了(划掉

首先,你需要一个非 root 账户,这里不再多说,完全可以 Google 完成。后面的所有命令都是以普通用户执行的。

继续阅读[L4D2] 在 Linux 上搭建一个 Left 4 Dead 2 游戏服务器

[ndless] ndless 4.0 环境搭建

机缘巧合之下,手里又多了个 Ti nspire CX CAS,系统版本为 3.1.0392,还是相当新的一台计算器。

说起来,自从高中毕业后,就没怎么折腾过计算器了。毕竟手机和电脑基本都是随时可用,再加上计算器的弱性能和繁琐的操作,逐渐的也就失去了兴趣。但是当这个计算器刚刚到手的时候,又不由得想搞着玩玩了(

继续阅读[ndless] ndless 4.0 环境搭建

在 Linux 下利用 iptables 和 ss-redir 进行全局代理

Windows 下使用 shadowsocks 实在是方便,绝大多数软件都会遵循 IE 代理,即使不愿意跟随 IE 的脚步,用户也可以使用 proxifity 这种软件来实现代理。然而 Linux 就是个坑了……
拿 Chrome 来举个栗子,当你在设置中点击更改代理服务器设置后,你会看到这些:

When running Google Chrome under a supported desktop environment, the system proxy settings will be used. However, either your system is not supported or there was a problem launching your system configuration.

But you can still configure via the command line. Please see man google-chrome-stable for more information on flags and environment variables.

Firefox 到还好一点,有图形化的内部代理设置,处理起来简单不少。
可是 apt-get 呢? wget 呢? git 呢? 即使这些程序支持使用命令来指定代理,但是仍然不是解决问题的最好方案,比如 w3m 就不支持 socks 代理 _(:з」∠)_

最好的解决方案就是直接对 Linux 强大的 iptables 动手脚了。借助 iptables 和 ss-redir,可以完美的实现对本机所有流量进行透明代理。

首先是编译安装 shadowsocks-libev:
继续阅读在 Linux 下利用 iptables 和 ss-redir 进行全局代理