From 896e6a63371661389b6275a3b5e3cb3842bd452f Mon Sep 17 00:00:00 2001 From: egg12138 Date: Fri, 17 Oct 2025 18:22:45 +0800 Subject: [PATCH 1/4] feat: add basic containerd support Add comprehensive containerd support with kernel configurations. What's more, this basic containerd packagegroup serve as a meta-virt recipes reuse and oee-compatibility sample for future development . - Add containerd feature configuration and manifest entry - Create basic-containerd package group with nerdctl,oci etc. - Implement kernel config fragments for containerd runtime - Add containerd kernel config validation during build - Update kernel module dependencies for containerd/k3s Signed-off-by: egg12138 --- .oebuild/features/containerd.yaml | 9 ++ .oebuild/manifest.yaml | 3 + .../include/kernel-modules-conf/common.inc | 4 +- .../recipes-core/images/openeuler-image.bb | 1 + .../packagegroup-basic-containerd.bb | 22 +++ .../features/basic-containerd/containerd.cfg | 151 ++++++++++++++++++ .../features/basic-containerd/containerd.scc | 4 + .../recipes-kernel/linux/linux-openeuler.inc | 46 +++++- 8 files changed, 237 insertions(+), 3 deletions(-) create mode 100644 .oebuild/features/containerd.yaml create mode 100644 meta-openeuler/recipes-core/packagegroups/packagegroup-basic-containerd.bb create mode 100644 meta-openeuler/recipes-kernel/linux/files/meta-data/features/basic-containerd/containerd.cfg create mode 100644 meta-openeuler/recipes-kernel/linux/files/meta-data/features/basic-containerd/containerd.scc diff --git a/.oebuild/features/containerd.yaml b/.oebuild/features/containerd.yaml new file mode 100644 index 00000000000..6f8bd306d55 --- /dev/null +++ b/.oebuild/features/containerd.yaml @@ -0,0 +1,9 @@ +type: feature + +support: qemu-aarch64|phytiumpi + +layers: +- yocto-meta-virtualization + +local_conf: | + DISTRO_FEATURES:append = " virtualization containerd " diff --git a/.oebuild/manifest.yaml b/.oebuild/manifest.yaml index 984c9d0ce03..0d3ef0b5062 100644 --- a/.oebuild/manifest.yaml +++ b/.oebuild/manifest.yaml @@ -1947,6 +1947,9 @@ manifest_list: yocto-meta-ros: remote_url: https://gitee.com/openeuler/yocto-meta-ros.git version: 7c7a4e6bb6ffdd06b19b2f5f81843506d57895f0 + yocto-meta-virtualization: + remote_url: https://gitee.com/openeuler/yocto-meta-virtualization.git + version: dev_kirkstone yocto-opkg-utils: remote_url: https://gitee.com/src-openeuler/yocto-opkg-utils.git version: 1d04472046d0225e013dd7e18c62dddf82025969 diff --git a/meta-openeuler/conf/machine/include/kernel-modules-conf/common.inc b/meta-openeuler/conf/machine/include/kernel-modules-conf/common.inc index f6dc5bc212f..e25feeb2951 100644 --- a/meta-openeuler/conf/machine/include/kernel-modules-conf/common.inc +++ b/meta-openeuler/conf/machine/include/kernel-modules-conf/common.inc @@ -1,5 +1,5 @@ INSTALLMODULES = " \ -${@bb.utils.contains('DISTRO_FEATURES', 'isulad', 'kernel-module-overlay', '', d)} \ +${@bb.utils.contains_any('DISTRO_FEATURES', 'isulad containerd', 'kernel-module-overlay', '', d)} \ kernel-module-8021q \ kernel-module-ext2 \ kernel-module-inet-diag \ @@ -8,7 +8,7 @@ kernel-module-ip6-udp-tunnel \ kernel-module-ipip \ kernel-module-ipt-reject \ kernel-module-ipv6 \ -kernel-module-nf-defrag-ipv6 \ +${@bb.utils.contains_any('DISTRO_FEATURES', 'k3s containerd', '', 'kernel-module-nf-defrag-ipv6',d)} \ kernel-module-nf-nat \ kernel-module-nf-reject-ipv4 \ kernel-module-nf-reject-ipv6 \ diff --git a/meta-openeuler/recipes-core/images/openeuler-image.bb b/meta-openeuler/recipes-core/images/openeuler-image.bb index 71efbbd63cd..9a5f69b3aac 100644 --- a/meta-openeuler/recipes-core/images/openeuler-image.bb +++ b/meta-openeuler/recipes-core/images/openeuler-image.bb @@ -31,6 +31,7 @@ ${@bb.utils.contains("DISTRO_FEATURES", "preempt-rt", "packagegroup-preempt-rt", ${@bb.utils.contains("DISTRO_FEATURES", "dsoftbus", "packagegroup-dsoftbus", "", d)} \ ${@bb.utils.contains("DISTRO_FEATURES", "benchmarks", "packagegroup-openeuler-benchmarks", "", d)} \ ${@bb.utils.contains("DISTRO_FEATURES", "oebridge", "packagegroup-oebridge", "", d)} \ +${@bb.utils.contains("DISTRO_FEATURES", "containerd", "packagegroup-basic-containerd", "", d)} \ " # You can add extra user here, suck like: diff --git a/meta-openeuler/recipes-core/packagegroups/packagegroup-basic-containerd.bb b/meta-openeuler/recipes-core/packagegroups/packagegroup-basic-containerd.bb new file mode 100644 index 00000000000..40a30e16f09 --- /dev/null +++ b/meta-openeuler/recipes-core/packagegroups/packagegroup-basic-containerd.bb @@ -0,0 +1,22 @@ +DESCRIPTION = "package group for simple custom container tools including nerdctl, containerd, and dependencies." +SUMMARY = "custom lightweight containerd-based toolkits" +inherit packagegroup features_check + +REQUIRED_DISTRO_FEATURES += "systemd" +# it is not recommended to package this simple lightweight containerd packagegroup together with isulad +CONFLICT_DISTRO_FEATURES = "isulad" +PACKAGES = " \ + ${PN} \ +" + +# TODO: version migration for containerd (to >1.7.1) +# TODO: cni compatibility +RDEPENDS:${PN} = " \ + virtual-containerd \ + virtual-runc \ + oci-systemd-hook \ + oci-runtime-tools \ + oci-image-tools \ + nerdctl \ + bridge-utils \ + " diff --git a/meta-openeuler/recipes-kernel/linux/files/meta-data/features/basic-containerd/containerd.cfg b/meta-openeuler/recipes-kernel/linux/files/meta-data/features/basic-containerd/containerd.cfg new file mode 100644 index 00000000000..5954f073eb4 --- /dev/null +++ b/meta-openeuler/recipes-kernel/linux/files/meta-data/features/basic-containerd/containerd.cfg @@ -0,0 +1,151 @@ +# +# containerd toolkits runtime kconfigs appending +# +# This configuration is for basic containerd functionality. +# It includes necessary kernel options and some common optional features. +# For more advanced features, you may need to enable more kernel options. +# +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y + +# +# Generally Necessary for containerd +# +CONFIG_NAMESPACES=y +CONFIG_NET_NS=y +CONFIG_PID_NS=y +CONFIG_IPC_NS=y +CONFIG_UTS_NS=y +CONFIG_CGROUPS=y +CONFIG_CGROUP_CPUACCT=y +CONFIG_CGROUP_DEVICE=y +CONFIG_CGROUP_FREEZER=y +CONFIG_CGROUP_SCHED=y +CONFIG_CPUSETS=y +CONFIG_MEMCG=y +CONFIG_KEYS=y +CONFIG_VETH=m +CONFIG_BRIDGE=m +CONFIG_BRIDGE_NETFILTER=y +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP6_NF_FILTER=m +CONFIG_IP6_NF_MANGLE=m +CONFIG_IP6_NF_TARGET_MASQUERADE=m +CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m +CONFIG_NETFILTER_XT_MATCH_IPVS=m +CONFIG_NETFILTER_XT_MARK=m +CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_NAT=m +CONFIG_NF_NAT=m +CONFIG_IP6_NF_RAW=m +CONFIG_IP6_NF_NAT=m +CONFIG_POSIX_MQUEUE=y +CONFIG_BPF_SYSCALL=y +CONFIG_CGROUP_BPF=y + +# +# Optional Features +# + +# cgroup pids controller +CONFIG_CGROUP_PIDS=y +# cgroup hugetlb controller +CONFIG_CGROUP_HUGETLB=y +# cgroup perf event controller +CONFIG_CGROUP_PERF=y +# cgroup net_cls subsystem. Classify network packets with a classid. +CONFIG_NET_CLS_CGROUP=m +# cgroup net_prio subsystem. Set the priority of network traffic. +CONFIG_CGROUP_NET_PRIO=y +# CPU bandwidth control for CFS task groups +CONFIG_CFS_BANDWIDTH=y +# Block device throttling +CONFIG_BLK_DEV_THROTTLING=y +CONFIG_BLK_CGROUP=y + +# User namespace +CONFIG_USER_NS=y +# Seccomp filter +CONFIG_SECCOMP=y +CONFIG_SECCOMP_FILTER=y + +# Redirecting packets and streams +CONFIG_IP_NF_TARGET_REDIRECT=m +# SCTP protocol support +CONFIG_IP_SCTP=m +# IP Virtual Server support +CONFIG_IP_VS=m +CONFIG_IP_VS_NFCT=y +CONFIG_IP_VS_PROTO_TCP=y +CONFIG_IP_VS_PROTO_UDP=y +CONFIG_IP_VS_RR=m + +# Security modules +# SELinux support +CONFIG_SECURITY_SELINUX=y +# AppArmor security module +CONFIG_SECURITY_APPARMOR=y + +# Netfilter Tables support +# This is a new packet filtering framework that is intended to replace iptables. +CONFIG_NF_TABLES=m +CONFIG_NFT_CT=m +CONFIG_NFT_FIB_IPV4=m +CONFIG_NFT_FIB_IPV6=m +CONFIG_NFT_FIB=m +CONFIG_NFT_MASQ=m +CONFIG_NFT_NAT=m + +# Filesystem extended attributes and ACLs for ext3/ext4 +CONFIG_EXT3_FS_XATTR=y +CONFIG_EXT3_FS_POSIX_ACL=y +CONFIG_EXT3_FS_SECURITY=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y + +# +# Network Drivers +# + +# For "overlay" network +CONFIG_VXLAN=m +CONFIG_BRIDGE_VLAN_FILTERING=y + +# For "ipvlan" network +CONFIG_IPVLAN=m + +# For "macvlan" network +CONFIG_MACVLAN=y +CONFIG_DUMMY=m + +# Optional (for encrypted networks) +CONFIG_CRYPTO_AEAD=y +CONFIG_CRYPTO_GCM=m +CONFIG_CRYPTO_SEQIV=y +CONFIG_CRYPTO_GHASH=m +CONFIG_XFRM=y +CONFIG_XFRM_USER=y +CONFIG_XFRM_ALGO=y +CONFIG_INET_ESP=m +CONFIG_NETFILTER_XT_MATCH_BPF=m + +# For ftp,tftp client in container +CONFIG_NF_NAT_FTP=m +CONFIG_NF_CONNTRACK_FTP=m +CONFIG_NF_NAT_TFTP=m +CONFIG_NF_CONNTRACK_TFTP=m +CONFIG_NF_DEFRAG_IPV6=m + +# +# Storage Drivers +# + +# For "overlay" storage driver +CONFIG_OVERLAY_FS=m + +# For "btrfs" storage driver +CONFIG_BTRFS_FS=m +CONFIG_BTRFS_FS_POSIX_ACL=y diff --git a/meta-openeuler/recipes-kernel/linux/files/meta-data/features/basic-containerd/containerd.scc b/meta-openeuler/recipes-kernel/linux/files/meta-data/features/basic-containerd/containerd.scc new file mode 100644 index 00000000000..002aa3aaeff --- /dev/null +++ b/meta-openeuler/recipes-kernel/linux/files/meta-data/features/basic-containerd/containerd.scc @@ -0,0 +1,4 @@ +define KFEATURE_DESCRIPTION "Enable containerd toolkit runtime related configs" +define KFEATURE_COMPATIBILITY all + +kconf non-hardware containerd.cfg diff --git a/meta-openeuler/recipes-kernel/linux/linux-openeuler.inc b/meta-openeuler/recipes-kernel/linux/linux-openeuler.inc index d77f1305320..2e0e7979eea 100644 --- a/meta-openeuler/recipes-kernel/linux/linux-openeuler.inc +++ b/meta-openeuler/recipes-kernel/linux/linux-openeuler.inc @@ -126,6 +126,10 @@ KERNEL_FEATURES:append = "${@bb.utils.contains('DISTRO_FEATURES', 'xen', ' featu # zvm kernel support KERNEL_FEATURES:append = "${@bb.utils.contains('MCS_FEATURES', 'zvm', ' features/zvm/zvm.scc', '', d)}" +# containerd kernel support +KERNEL_FEATURES:append = "${@bb.utils.contains('DISTRO_FEATURES', 'containerd', ' features/basic-containerd/containerd.scc', '', d)}" + +# kubeedge kernel support KERNEL_FEATURES:append = " \ ${@bb.utils.contains('DISTRO_FEATURES', 'kubeedge', 'features/kubeedge/kubeedge.scc', '', d)} \ " @@ -200,7 +204,47 @@ pkg_postinst_${KERNEL_PACKAGE_NAME}-base () { } -# qemu is 1st class BSP in openeuler, so add qemu specific kernel customeriazation here +# qemu is the first class BSP in openeuler, so add qemu specific kernel customeriazation here # for other BSP, plese do it in its own layer and use dynamic layer mechanism under bsp/met-openeuler-bsp, for example, see # raspberrypi bsp SRC_URI:append:qemu-aarch64= "${@bb.utils.contains('DISTRO_FEATURES', 'oe-xfce', 'file://config/cfg-fragments/qemu-aarch64-xfce.cfg', '', d)}" + +do_container_configs[doc] = "Checks the kernel configs required by container, parses the output, and issues warnings/notes for missing configs." +do_container_configs() { + wget -P ${WORKDIR} https://github.com/moby/moby/raw/master/contrib/check-config.sh || true + if [ -f ${WORKDIR}/check-config.sh ]; then + sed -i 's,zcat "$2" | grep "$1", cat "$2" | grep "$1",g' ${WORKDIR}/check-config.sh + chmod +x ${WORKDIR}/check-config.sh + kconfigfile="${B}/.config" + section="" + NO_COLOR=1 script_output=$(${WORKDIR}/check-config.sh ${kconfigfile} 2>&1 || true) + echo "${script_output}" | while IFS= read -r line; do + if echo "$line" | grep -q "Generally Necessary:"; then + section="necessary" + continue + fi + if echo "$line" | grep -q "Optional Features:"; then + section="optional" + continue + fi + + if echo "$line" | grep -q "missing" && echo "$line" | grep -q "CONFIG_"; then + local trimed=$(echo "$line" | sed -E 's/.*(CONFIG_[A-Z0-9_]+):\s*([a-z]+).*/\1 is \2/') + if [ "$section" = "necessary" ]; then + bbwarn "necessary ability for container: $trimed" + elif [ "$section" = "optional" ]; then + bbwarn "optional ability for container: $trimed" + else + bbwarn "ability for container: $line" + fi + fi + done + else + bbwarn "Could not download moby check-config.sh, skipping kernel config check." + fi +} + +python () { + if bb.utils.contains_any('DISTRO_FEATURES', 'containerd k3s', True, False, d): + bb.build.addtask('container_configs', 'do_compile', 'do_configure',d) +} -- Gitee From 49edfd68e75e5a25a1bd7b2bb4cdd229fd9f0036 Mon Sep 17 00:00:00 2001 From: egg12138 Date: Mon, 20 Oct 2025 17:33:07 +0800 Subject: [PATCH 2/4] containerd: upgrade containerd to 1.7.19 * 1.7.19 is an import version for containerd - containerd 2.x is the future. projects should use this version as the minimum 1.7 version in preparing to use containerd 2.0 or to be imported alongside it. - currently, 1.7.x is the last LTS version of containerd Signed-off-by: egg12138 --- .../containerd/containerd-opencontainers_%.bbappend | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 meta-openeuler/recipes-containers/containerd/containerd-opencontainers_%.bbappend diff --git a/meta-openeuler/recipes-containers/containerd/containerd-opencontainers_%.bbappend b/meta-openeuler/recipes-containers/containerd/containerd-opencontainers_%.bbappend new file mode 100644 index 00000000000..d6573bcb909 --- /dev/null +++ b/meta-openeuler/recipes-containers/containerd/containerd-opencontainers_%.bbappend @@ -0,0 +1,11 @@ +HOMEPAGE = "https://github.com/containerd/containerd" +SRCREV = "2bf793ef6dc9a18e00cb12efb64355c2c9d5eb41" +CONTAINERD_VERSION = "v1.7.19" +CVE_VERSION = "1.7.19" +PV = "${CONTAINERD_VERSION}+git" + +FILESEXTRAPATHS:prepend := "${THISDIR}/files:" +SRC_URI:remove = "git://github.com/containerd/containerd;branch=release/1.6;protocol=https;destsuffix=git/src/github.com/containerd/containerd" +SRC_URI:append = "git://github.com/containerd/containerd;branch=release/1.7;protocol=https;destsuffix=git/src/github.com/containerd/containerd \ +" +#EXTRA_OEMAKE:append:pn-containerd-opencontainers = " GO111MODULE=on GO_BUILD_FLAGS+=-mod=vendor" -- Gitee From 4131ad726088b8e4bb9f7aba0aaf155e134066ed Mon Sep 17 00:00:00 2001 From: egg12138 Date: Mon, 20 Oct 2025 22:39:44 +0800 Subject: [PATCH 3/4] containerd: update runtime components * add NETFILTER_XT_MATCH* * add kernel-modules * add cni Signed-off-by: egg12138 --- .../packagegroup-basic-containerd.bb | 15 +++++++++++++++ .../features/basic-containerd/containerd.cfg | 7 ++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/meta-openeuler/recipes-core/packagegroups/packagegroup-basic-containerd.bb b/meta-openeuler/recipes-core/packagegroups/packagegroup-basic-containerd.bb index 40a30e16f09..03155918a64 100644 --- a/meta-openeuler/recipes-core/packagegroups/packagegroup-basic-containerd.bb +++ b/meta-openeuler/recipes-core/packagegroups/packagegroup-basic-containerd.bb @@ -20,3 +20,18 @@ RDEPENDS:${PN} = " \ nerdctl \ bridge-utils \ " + +RRECOMMENDS:${PN} = " \ + cni \ + kernel-module-veth \ + kernel-module-bridge \ + kernel-module-br-netfilter \ + kernel-module-ebtables \ + kernel-module-nf-nat \ + kernel-module-nf-conntrack-netlink \ + kernel-module-xt-comment \ + kernel-module-xt-statistic \ + kernel-module-xt-multiport \ + kernel-module-xt-addrtype \ + kernel-module-xt-masquerade \ +" diff --git a/meta-openeuler/recipes-kernel/linux/files/meta-data/features/basic-containerd/containerd.cfg b/meta-openeuler/recipes-kernel/linux/files/meta-data/features/basic-containerd/containerd.cfg index 5954f073eb4..0bb595bd7f1 100644 --- a/meta-openeuler/recipes-kernel/linux/files/meta-data/features/basic-containerd/containerd.cfg +++ b/meta-openeuler/recipes-kernel/linux/files/meta-data/features/basic-containerd/containerd.cfg @@ -26,7 +26,7 @@ CONFIG_MEMCG=y CONFIG_KEYS=y CONFIG_VETH=m CONFIG_BRIDGE=m -CONFIG_BRIDGE_NETFILTER=y +CONFIG_BRIDGE_NETFILTER=m CONFIG_IP_NF_FILTER=m CONFIG_IP_NF_MANGLE=m CONFIG_IP_NF_TARGET_MASQUERADE=m @@ -36,6 +36,9 @@ CONFIG_IP6_NF_TARGET_MASQUERADE=m CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m CONFIG_NETFILTER_XT_MATCH_IPVS=m +CONFIG_NETFILTER_XT_MATCH_COMMENT=m +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m +CONFIG_NETFILTER_XT_MATCH_STATISTIC=m CONFIG_NETFILTER_XT_MARK=m CONFIG_IP_NF_RAW=m CONFIG_IP_NF_NAT=m @@ -131,6 +134,8 @@ CONFIG_XFRM_USER=y CONFIG_XFRM_ALGO=y CONFIG_INET_ESP=m CONFIG_NETFILTER_XT_MATCH_BPF=m +CONFIG_NF_CONNTRACK=m +CONFIG_NF_CONNTRACK_NETLINK=m # For ftp,tftp client in container CONFIG_NF_NAT_FTP=m -- Gitee From f51ae52bea48cc9d798eb971d394ad960f7baf78 Mon Sep 17 00:00:00 2001 From: egg12138 Date: Tue, 21 Oct 2025 10:42:13 +0800 Subject: [PATCH 4/4] yocto: move containerd recipes into dynamic layer * migrated containerd-opencontainers bbappend * migrated pacakgegroup-basic-containerd Signed-off-by: egg12318 --- meta-openeuler/conf/layer.conf | 6 ++++++ .../containerd/containerd-opencontainers_%.bbappend | 0 .../packagegroups/packagegroup-basic-containerd.bb | 1 - 3 files changed, 6 insertions(+), 1 deletion(-) rename meta-openeuler/{ => dynamic-layers/virtualization-layer}/recipes-containers/containerd/containerd-opencontainers_%.bbappend (100%) rename meta-openeuler/{ => dynamic-layers/virtualization-layer}/recipes-core/packagegroups/packagegroup-basic-containerd.bb (94%) diff --git a/meta-openeuler/conf/layer.conf b/meta-openeuler/conf/layer.conf index 7e72abafc39..fee7ad0fc21 100644 --- a/meta-openeuler/conf/layer.conf +++ b/meta-openeuler/conf/layer.conf @@ -57,6 +57,12 @@ phosphor-layer:${LAYERDIR}/dynamic-layers/phosphor-layer/recipes-*/*/*.bb \ phosphor-layer:${LAYERDIR}/dynamic-layers/phosphor-layer/recipes-*/*/*.bbappend \ " +# Enable virtualization-layer overlays when meta-virtualization is present +BBFILES_DYNAMIC += " \ +virtualization-layer:${LAYERDIR}/dynamic-layers/virtualization-layer/recipes-*/*/*.bb \ +virtualization-layer:${LAYERDIR}/dynamic-layers/virtualization-layer/recipes-*/*/*.bbappend \ +" + # For get lib dir under meta-openeuler by external_run LAYERDIR_openeuler = "${LAYERDIR}" # These will rebuild when EXTERNAL_TOOLCHAIN changes, but we don't want diff --git a/meta-openeuler/recipes-containers/containerd/containerd-opencontainers_%.bbappend b/meta-openeuler/dynamic-layers/virtualization-layer/recipes-containers/containerd/containerd-opencontainers_%.bbappend similarity index 100% rename from meta-openeuler/recipes-containers/containerd/containerd-opencontainers_%.bbappend rename to meta-openeuler/dynamic-layers/virtualization-layer/recipes-containers/containerd/containerd-opencontainers_%.bbappend diff --git a/meta-openeuler/recipes-core/packagegroups/packagegroup-basic-containerd.bb b/meta-openeuler/dynamic-layers/virtualization-layer/recipes-core/packagegroups/packagegroup-basic-containerd.bb similarity index 94% rename from meta-openeuler/recipes-core/packagegroups/packagegroup-basic-containerd.bb rename to meta-openeuler/dynamic-layers/virtualization-layer/recipes-core/packagegroups/packagegroup-basic-containerd.bb index 03155918a64..7ebbac263a8 100644 --- a/meta-openeuler/recipes-core/packagegroups/packagegroup-basic-containerd.bb +++ b/meta-openeuler/dynamic-layers/virtualization-layer/recipes-core/packagegroups/packagegroup-basic-containerd.bb @@ -9,7 +9,6 @@ PACKAGES = " \ ${PN} \ " -# TODO: version migration for containerd (to >1.7.1) # TODO: cni compatibility RDEPENDS:${PN} = " \ virtual-containerd \ -- Gitee