Aptly无法创建包含指定内核版本的镜像问题求助
Aptly无法创建包含指定内核版本的镜像问题求助
我完全懂你现在的困扰——明明apt-cache能搜到6.2.0-35的内核包,用aptly按当前规则创建镜像却只拿到了5.15系列的版本,问题出在你用的过滤目标不对,咱们来拆解一下:
问题根源
你当前过滤的linux-image-generic和linux-headers-generic是Ubuntu Jammy(22.04)的默认内核元包,它们默认绑定的是Jammy初始发布的5.15.x系列内核。而你要的6.2.x内核属于Jammy的HWE(Hardware Enablement)版本,对应的元包是另一套;而且如果要精准锁定6.2.0-35这个特定版本,直接过滤元包也达不到目的,因为元包会自动指向同系列的最新版本。
解决方案
根据你的需求,有两种调整方式:
方式一:拉取HWE系列内核(适合需要整个6.x分支的情况)
把过滤规则换成HWE对应的元包,这样aptly会拉取Jammy当前的HWE内核及依赖:
export PACKAGE_FILTER="Name (= linux-image-generic-hwe-22.04) | Name (= linux-headers-generic-hwe-22.04)"
之后重新创建并更新镜像即可。不过要注意,这个方式会拉取该HWE分支的最新版本,如果6.2.0-35已经被更新版本替代,你可能需要结合版本过滤来锁定。
方式二:精准指定6.2.0-35的具体包(完全匹配你的需求)
如果明确要linux-image-6.2.0-35-generic和linux-headers-6.2.0-35-generic这两个包,直接把过滤规则改成具体的包名:
export PACKAGE_FILTER="(Name (= linux-image-6.2.0-35-generic)) | (Name (= linux-headers-6.2.0-35-generic))"
搭配你原本的-filter-with-deps参数,aptly会自动拉取这两个包的所有依赖,确保镜像完整性。
额外注意事项
- 确认包是否存在于当前仓库:Ubuntu会定期将旧版本的包移至
old-releases仓库,如果你用apt-cache show linux-image-6.2.0-35-generic能查到,但aptly拉不到,可能需要把镜像源换成http://old-releases.ubuntu.com/ubuntu/。 - 明确仓库组件:创建镜像时可以加上
components=main参数(内核包在main组件下),避免组件遗漏:
aptly -filter-with-deps -with-udebs -dep-follow-recommends -dep-follow-all-variants -filter="$PACKAGE_FILTER" -architectures=amd64 mirror create jammy-updates http://archive.ubuntu.com/ubuntu/ jammy-updates main
备注:内容来源于stack exchange,提问作者mvolden
相关产品推荐
相关产品推荐

