升级iSH内置的alpine linux系统
iSH 本质是运行 Alpine Linux 的 x86 QEMU 虚拟机,由于其完整运行了最小化的Alpine Linux,所以可以通过 Alpine Linux包管理apk 进行各种软件包安装和升级,为我们带来无限的可能。
不过, iSH 官方发布已经很久没有出release,虽然GitHub仓库还在不断commit,但是如果你是从Apple AppStore安装版本,其内置的Alpine Linux版本停滞在 3.14 很久,甚至执行 apk update 会报错(默认是 ish.app 提供软件仓库,似乎不太稳定,有时候好有时候访问不了)。
升级方法一
实际上, iSH 只是提供了一个qemu运行alpine linux环境,内部运行的虚拟机操作系统可以直接替换为 Alpine Linux 官方 Alpine Linux Downloads 提供的 MINI ROOT FILESYSTEM x86 版本。
iSH 提供了手工更新虚拟机镜像的功能,也就是用下载的 MINI ROOT FILESYSTEM x86 打包镜像作为虚拟机根目录挂载:
使用iPhone手机的Safari浏览器访问 Alpine Linux Downloads 下载
MINI ROOT FILESYSTEMx86 打包镜像,存放到iCloud中(iSH能够访问iCLoud)在
iSH中,访问Settings按钮,然后在设置中访问Filesystems页面,点击右上角Import:
选择
iCloud中已经下载好的alpine-minirootfs-3.22.1-x86.tar.gz
此时会看到 Filesystems 中除了 default 又新增了一项刚才导入的 alpine-minirootfs-3.22.1-x86
点击
alpine-minirootfs-3.22.1-x86菜单选项,选择Boot From This Filesystem
iSH会自动重启,再次访问iSH就会看到系统被替换成最新的3.22.1版本了
/etc/os-release 版本cat /etc/os-release
警告
这种替换根文件系统的升级方法会导致之前 所有的修改和数据丢失 ,相当于重建了虚拟机,请先备份好数据再操作,完成后还需要恢复备份数据。
升级方法二
备注
这个方法来自 iSH - Upgrade Alpine Persistently ,不过我没有实践。原理上没问题,应该可行
更新仓库配置:
echo https://dl-cdn.alpinelinux.org/alpine/v3.22/main > /etc/apk/repositories
echo https://dl-cdn.alpinelinux.org/alpine/v3.22/community >> /etc/apk/repositories
需要注意,这个配置文件在 iSH 重启以后会reset,不过可以通过修改用户的 .bashrc 或者 .shrc 设置脚本来每次登陆时自动修正:
.shrc 来自动修订仓库配置echo << EOF > /etc/apk/repositories
echo https://dl-cdn.alpinelinux.org/alpine/v3.22/main > /etc/apk/repositories
echo https://dl-cdn.alpinelinux.org/alpine/v3.22/community >> /etc/apk/repositories
EOF