LankeOS v0.16 Release
Codename: Lhotse
“是LankeOS火了吗?居然Docker Image上线一小时多就有50+下载!”
“其实只是爬虫发力了...”
核心变更 (Major Changes)
新功能和修复
0.15所新增的build_deps系统如同一把契科夫之枪(其实并不是,只是我在0.15的时候没研究出一个靠谱的build_deps生成方式)
而0.16是使其开火的时候了。
- 构建依赖自动生成:依旧vibe了一个小脚本,调OpenAI兼容的api自动使用AI来生成build_deps,实测正确率还可以,经过手动优化和批量编辑之后完全能用。
- gen_deps的metadata生成支持:原来gen_deps脚本只能修改打包好的.lpkg,现在支持自动填入LankeBUILD.json数据。
- 防火墙支持:nft+iptables(nftables后端)是这次顺便添加的(docker用了就顺便加入了,感觉也是个不错的功能)。
- 修改linux内核构建:添加一些内核模块和用户命名空间支持,大多数是为了防火墙和docker,同时更新内核release到2。
- 修复lpkg以及代码质量提高:修复lpkg在build_deps安装中会出现无法下载index警告的问题(其实际上是临时目录没有创建导致的)顺便借此优化了一下所有相关代码。
- 重磅功能:Docker!:添加整个docker的依赖树以及docker本体,同时在init脚本中把/var/lib/containerd挂载为ext4文件系统防止嵌套overlay导致的容器问题。
- LankeOS Base Image的Docker镜像上传:LankeOS全新自举的RootFS已经上传至Docker Hub作为未来可能的自动包构建workflow或者大家自己折腾的必要工具。
本次更新是LankeOS再一次挑战极限,事实证明系统的依赖树已经足以支撑chromium规模的软件包,接下来会引入KDE等。
迁移指南
- 本次更新没有引入breaking change,可以放心迁移(推荐在进入系统之后使用lpkg upgrade更新到最新软件集合,修复了较多问题)
- Docker因为是运行时通过unix socket连接所以并没有声明containerd等的依赖(这是预期行为,其并不是binary运行依赖),如果报错,你可以试着安装containerd。
镜像体积变化
ISO体积达到1.37 GiB,这个版本新增了一堆内核模块,一个防火墙和一整个Docker,并更新了Go版本,所以其实还算合理。(好像我每个版本都这样说...不过确实挺合理的)
稳定性与兼容性
本版本经过在 Dell OptiPlex 5000 Micro(实体机) 上的严格验证:
- 新的包完美运行,docker可以启动,甚至可以在LankeOS里运行LankeOS container
- 原来的所有包正常(这次对于nspr等包删除了静态库)
- 内核模块正确加载(对了,这次还及时止损瘦身了git仓库,原来给内核都提交上去了,按照内核的更新频率很快就会给仓库弄膨胀)
下一步计划 (Roadmap)
- 新增KDE系列软件包并完善包自动构建&发布系统
开发者的话
0.16 的主题是 “容器化与自动化构建的准备”。
在0.16,LankeOS首次有了其Docker Image,这意味着一个docker run+一个git clone就能获取一个完全确定的LankeOS构建环境,是下一步自动化构建的核心准备。
同时0.16也真正实现了可卸载arch的自举,在0.14,lpkg还是用的arch的docker构建;0.16引入docker之后,LankeOS所有包都可以在其自身系统构建了。这是一个较大的变化。
(主要还是源自我对自举的执念吧...之前一直就差一个包总觉得心里不踏实)
—— Wtada233
7月30日 更新+修复:
- 更新glibc到2.43
- 删除glibc和gcc所有可以删除的静态库
- 修复lpkg的strip会在部分边界情况损坏文件的问题
- 静态链接tini代替原来的docker-init实现环境无关的init使用