0x00 前言
笔者是一个无可救药的复古 Unix&RISC 厨,因此对上世纪很多 Unix 系统都在使用的桌面环境 Common Desktop Environment
甚是喜欢。这几天清点家里的电子垃圾的时候想起手中还有一台搭载 Loongson 2F 处理器的 福珑2F6003
盒子,于是便萌生了在这台可爱的 MIPS 小机器上跑起 CDE 的想法。
笔者是一个无可救药的复古 Unix&RISC 厨,因此对上世纪很多 Unix 系统都在使用的桌面环境 Common Desktop Environment
甚是喜欢。这几天清点家里的电子垃圾的时候想起手中还有一台搭载 Loongson 2F 处理器的 福珑2F6003
盒子,于是便萌生了在这台可爱的 MIPS 小机器上跑起 CDE 的想法。
笔者很久以前就偏爱各类全键盘移动设备(如 UMPC 和 PDA),尤其是搭载 RISC 处理器与 Unix-like 系统的 PDA。今年年初有幸捡漏收到的这台由 CEC 代理的国行 Sharp Zaurus SL-5600 算是笔者心中比较理想的设备。
Sharp Zaurus SL-5600 在 2003 年发售。由于其搭载 Linux 系统与其强大的可扩展性,一经发售她便成为了很多 Geek 与 Hacker 的掌中玩物,她在当时有很多定制的开源系统与软件。相比于前一代的 SL-5500,她的 CPU 有了巨大的提升(由 StrongARM SA-1100@206MHz
升级至 Intel XScale PXA250@400Mhz
)。时过境迁,当 PDA 随着智能手机的兴起而没落时,Zaurus 也早已被大众所遗忘。十七年后,笔者拿到这台和自己年龄差不多大的 PDA 时,她已没有除收藏与折腾外的价值,但笔者仍感叹于她的工业设计与她背后开源社区的默默付出。
写这玩意的初衷是我所在的某个群搭建了私有的 Mattermost 聊天环境来防御天朝网络环境日益严重的自我审查
程序一共有两个部分, QQ 部分依旧使用的是我们的老朋友Coolq HTTP API
通过 http api 进行发送,通过 Websocket 接受消息推送
Mattermost 部分同样是监听 Websocket 服务器并进行转发
当初写这个脚本时踩了很多关于 Python 多进程和协程的奇怪的坑,下面的代码为啥能正常跑我完全不知道(划掉)
下面是效果
(距离上篇教程发布已经整整一个学期过去了,终于有时间填这个坑了)
注意:本篇教程是面向小白向的,但是仍建议有一定 Linux 基础的计算器玩家尝试 本篇教程将教你如何从零开始定制 Nspire 能使用的 Linux 系统,包括制作 rootfs,配置并编译内核与各类驱动模块
需要准备的东西:
一份 Linux Kernel 源码,可以在 https://kernel.org/
下载
(需要注意的是,Linux 内核在 4.14 以后的版本中对 Nspire 的支持有些许问题,故建议下载 4.14 以及之前的 longterm 版本)
一台 Linux 系统的点好,并需要配置好交叉编译工具链
一个 4G 以上容量的 U 盘
关于 rootfs 是什么,你可以自行查阅 Wikipedia (逃)
首先你需要安装 debootstrap
等工具,以 Manjaro 系统为例:
sudo pacman -S binfmt-support qemu-user-static debootstrap
其中,debootstrap
是用来制作 rootfs 的工具,而 qemu-user-static
则允许你 chroot 到不同体系结构的 rootfs 中
安装完成后,挂载准备好的 U 盘到任意位置,执行
sudo debootstrap --arch=armel --foreign buster /*挂载 U 盘的位置*/ https://mirrors.ustc.edu.cn/debian
其中,
buster
代表你制作的 rootfs 系统的版本(Debian 10)
armel
全称是 arm eabi little endian,代表你制作的 rootfs 软件包的体系结构,因为 Nspire 使用的是一颗 arm926ejs
内核的处理器,故选择此版本
很经典的一道题了,然而以前一直懒得做Orz 离散化+树状数组求逆序对