跳转至

如何在iPad上优雅地跑linux

iSH: 极致优雅的移动开发终端

笔者前段时间在捣鼓tailscale (传送门), 期望是"万物互联"

在几台主力机都归tailscale同一个子网下管理后, 现在我想把ipad加入其中, 目的是:

iPad上ssh到本地机器, 从而实现 "可以在水课教室里, 远程操控在实验室的机器跑程序"

这是个很好的愿景, 实现它本质上就两步:

  1. 给iPad安装tailscale: 详见 这篇
  2. iPad能运行SSH:
    • 本质上, 就是想让iPad运行CLI, 然后SSH即可
    • 我们采用 iSH 来实现

iSH 是什么

iSH其实是一款APP, 目前已在 美区Apple Store 正式上线

iSH是一个模拟器, 用来在ARM架构的iOS设备上模拟x86架构, 让iOS设备在本地运行Linux Shell环境

这意味着你不用越狱, 就可以在一台iOS设备上运行一个Linux系统, 这完美符合我们的需求


iSH使用的Linux系统镜像是 Alpine Linux

Alpine Linux是一个由社区开发的Linux操作系统, 特点:

  1. "小而美"
  2. 安装简单: apk包管理工具

iSH 安装注意事项:

  1. 给 iPad 翻墙: 其实就是给它安装 shadow rocket, 这类操作在 youtube上有很多视频, 自行查阅
  2. 安装 iSH: 参考 这篇
  3. 在 iSH 终端里安装 SSH:
    Bash
    1
    2
    apk update
    apk add openssh-client
    
  4. 打开 tailscale: 现在就可以优雅地连接远程设备. 然后跑试验了! alt text
  5. iSH的挂载路径可以在iPad系统的“文件”App看到: alt text

注意, 由于 iOS 的沙盘特性, tailscale 和 shadow rocket不能共存, 这一点在MacOS上则不会出现

iOS的沙盘特性, 啥意思?

现象:

我现在的ipad上使用shadow rocket作为网络代理, 然后刚才使用了tailscale也很好! 但是发现一个问题, 当开启shadow rocket网络代理, 系统就会自动关闭tailscale; 反之亦然

原因:

iPadOS 在同一时间只允许一个"VPN配置"处于活动状态

  • Shadowrocket 的工作原理: 它通过创建一个系统级的"VPN 配置"来接管你 iPad 的所有网络流量,然后把这些流量(根据规则)发送到你的代理服务器 (比如: 香港的节点)
  • Tailscale 的工作原理: 它也通过创建一个系统级的"VPN 配置"来创建一个虚拟的加密网络, 让你能访问你其他设备 (比如: 100.x.x.x/10)