Skip to content

LankeOS v0.16

Latest

Choose a tag to compare

@Wtada233 Wtada233 released this 29 Jul 15:28

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使用