返回新闻概览

LXC 4.0.11 已发布

2021年10月19日

简介

LXC 团队很高兴地宣布发布 LXC 4.0.11!

这是 LXC 4.0 的第 11 个错误修复版本,该版本支持到 2025 年 6 月。

错误修复

像往常一样,此错误修复版本专注于稳定性和强化。此版本的亮点包括

  • 核心调度支持 (lxc.sched.core)
  • riscv64lxc.arch 中的支持
  • 显著改进的 bash 自动补全配置文件
  • 更多地使用新的 VFS 挂载 API(如果内核支持)
  • 修复网络命名空间为空的容器
  • 处理缺少 TIOCGPTPEER 的内核
  • 改进 CPU 位掩码/ID 处理(处理跳过的 CPU 编号)
  • 重新设计了测试以使其能够脱机运行

完整的提交列表如下所示

详细更改日志
  • cgroups:为设备 cgroup 填充层次结构
  • cgroups:从 cgroup_tree_create 中删除不必要的变量
  • lxc_setup_ttys:处理没有底层设备的现有 ttyN 文件
  • bpf:bpf_devices_cgroup_supported() 应该检查 bpf() 是否可用
  • conf:对 devpts 设置使用新的挂载 api
  • terminal:ttyname_r() 在失败时返回错误号
  • conf:确保 devpts_fd 设置为 -EBADF
  • 修复错别字
  • conf:将设置控制台的错误显示出来
  • conf:为 devpts 设置源属性
  • conf:当可以使用新的挂载 api 时直接附加 devpts 挂载
  • conf:s/lxc_setup_devpts_parent/lxc_recv_devpts_from_child/g
  • conf:在 symlinkat() 中使用相对路径
  • conf:更新注释
  • conf:添加并使用 mount_beneath_fd()
  • terminal:不要对本地终端分配使用 ttyname_r()
  • conf:合并 devpts 设置并在 pivot root 之前移动
  • string_utils:将 __s64 转换为 long long signed int
  • terminal:拆分出 lxc_devpts_terminal() 助手
  • conf:将 lxc_create_ttys() 移动到 pivot root 之前
  • conf:将 pty_nr 存储在 struct lxc_terminal 中
  • mount_utils:添加 mount_fd()
  • conf:在挂载 ttys 时使用 mount_fd() 助手
  • conf:在 lxc_setup_dev_console() 中使用 mount_fd()
  • conf:在挂载控制台期间使用 mount_fd()
  • file_utils:添加 open_at_same()
  • conf:重新设计控制台设置
  • terminal:从 lxc_devpts_terminal() 中删除未使用的参数
  • start:允许容器使用本地控制台
  • conf:处理没有 TIOCGPTPEER 的内核
  • terminal:将本地终端分配从错误日志移动到信息日志
  • terminal:在 TIOCGPTPEER 期间出现未知错误时失败
  • mount_utils:引入 mount_at()
  • conf:修复 lxc_idmapped_mounts_child() 中的日志记录
  • conf:重构 lxc_recv_ttys_from_child()
  • conf:记录创建 tty 挂载点的失败
  • conf:让 parse_vfs_attr() 也处理旧版挂载标志
  • mount_utils:使一些挂载助手成为静态内联
  • conf:使用新的挂载 api 时允许根文件系统的挂载选项
  • tests:添加根文件系统挂载选项的测试
  • network:修复网络命名空间为空的容器
  • lsm/apparmor:记录写入 AppArmor 配置文件的失败
  • lsm/apparmor:使用清理宏
  • doc/api-extensions:语法修复
  • tests:修复配置文件测试
  • 修复 lxc-autostart 文档中的错别字。
  • 修复 lxc-{attach,execute} 文档中的错别字。
  • 创建用于添加/删除 bash 自动补全符号链接的规则。
  • 改进 bash 自动补全。
  • cgroups:在警告级别而不是错误级别记录
  • conf:在 WARN 级别记录会话密钥环失败
  • tree-wide:s/lxc_epoll_descr/lxc_async_descr/g
  • doc:添加了关于指定手动 IPv4 广播地址的功能的说明
  • mainloop:添加 io_uring 支持
  • lxc-download:将 LXC 版本/兼容性级别添加到用户代理
  • mainloop:s,sys/poll,poll
  • mainloop:次要修复
  • mainloop:删除 CANCEL_RAISE 标志
  • mainloop:修复 io_uring 清理处理
  • memory_utils:使清理处理程序作为未使用
  • mainloop:将变量移动到更紧密的范围内
  • mainloop:s/handler_name/name/g
  • mainloop:添加关于多发和单发清理的注释
  • mainloop:暂时禁用 IORING_SETUP_SQPOLL
  • cgroups:修复 cpu 位掩码
  • cgroups:s/calloc/zalloc/g
  • 回滚“cgroups:修复 cpu 位掩码”
  • cgroups:修复 cpuset1_initialize() 中的注释
  • cgroups:修复 cpumask 处理
  • cgroups:在 cpuset1_cpus_initialize() 中使用语义上清晰的检查
  • cgroups:简化离线和隔离的 cpu 处理
  • tests:将 lxc-test-automount/createconfig/snapdeps 设置为可执行文件
  • file_utils:添加 same_device() 助手
  • terminal:在从我们自己没有挂载的 devpts 实例分配 pty 设备时使用 /dev/ptmx
  • busybox:挂载 sys:ro
  • busybox:简化
  • conf:即使容器没有请求单独的 devpts 实例,也允许 tty 分配
  • tests:修复 sys_mixed 中的顺序
  • test:在 lxc-test-apparmor-generated 中使用 busybox
  • test:在 lxc-test-apparmor-mount 中使用 busybox
  • test:在 lxc-test-autostart 中使用 busybox
  • tests:在 lxc-test-no-new-privs 中使用 busybox
  • tests:在 lxc-test-unpriv 中使用 busybox
  • tests:在 lxc-test-usernic.in 中使用 busybox
  • seccomp:修复 !HAVE_DECL_SECCOMP_NOTIFY_FD 时出现的复杂情况
  • config:仅在使用 libseccomp 编译时启用 seccomp 配置文件
  • confile:在任何地方返回负 errno
  • attach:允许在没有新的 mnt 命名空间的情况下进行 LSM 附加
  • tools:修复 lxc-attach 中的变量声明
  • tools:对齐结构初始化
  • attach_options:将 LXC_ATTACH_LSM_LABEL 添加到 LXC_ATTACH_LSM 标志
  • confile:重新设计 lxc_fill_elevated_privileges()
  • tools:修复 lxc-attach 中的提升权限处理程序
  • list:添加新的基于内核的列表实现
  • tree-wide:将网络处理移植到新的列表类型
  • cgroups:将 bpf 设备移植到新的列表类型
  • mainloop:将处理程序移植到新的列表类型
  • conf:将 state_clients 移植到新的列表类型
  • conf:将 rlimits 移植到新的列表类型
  • conf:将 sysctls 移植到新的列表类型
  • conf:将 procs 移植到新的列表类型
  • conf:将 cgroup 设置移植到新的列表类型
  • conf:将 id_map 移植到新的列表类型
  • conf:删除未使用的 mountflags 成员
  • rootfs:删除“options”成员
  • conf:重新设计递归挂载选项处理
  • conf:正确支持递归传播选项
  • conf:即使对于旧版 mount() 也切换到 parse_mount_attrs()
  • conf:删除未使用的变量
  • conf:将环境移植到新的列表类型
  • terminal:删除未使用的结构成员
  • cgroup:删除不必要的向前声明
  • conf:简化并将 caps 移植到新的列表类型
  • network:将 ipv4 移植到新的列表类型
  • network:将 ipv6 地址移植到新的列表类型
  • tree-wide:s/ipv{4,6}_list/ipv{4,6}_addresses/g
  • lxccontainer:对齐初始化
  • cgroups:修复 cgroup 设置排序
  • network:将 ipv4 路由移植到新的列表类型
  • network:将 ipv6 路由移植到新的列表类型
  • cgroups:修复 bpf 设备列表
  • conf:将挂载点移植到新的列表类型
  • conf:将 apparmor 移植到新的列表类型
  • conf:将钩子移植到新的列表类型
  • conf:将组移植到新的列表类型
  • lxccontainer:改进 add_to_array()
  • lxccontainer:改进 add_to_clist()
  • lxccontainer:调整一些数组处理助手
  • attach:修复 -c 命令
  • tree-wide:修复 list_entry()
  • lxc-usernsexec:少量调整
  • lxccontainer:在 list_all_containers() 中使用 free_disarm()
  • lxccontainer:删除无用的 {}
  • lxccontainer:在无法加载容器时失败
  • lxccontainer:不要传递 NULL 指针
  • configure:将 sanitize 器标志也添加到 LDFLAGS
  • include:使所有函数都为 __hidden
  • tree-wide:修复构建
  • build:将 src/include 添加到构建并简化头文件包含
  • syscall_wrapper:修复 pivot_root() 声明
  • cgroups:修复整数比较
  • confile:修复整数比较
  • storage:修复整数比较
  • attach:修复助手声明
  • lsm:修复整数比较
  • conf:修复整数比较
  • string_utils:修复整数比较
  • conf:修复 struct mount_attr 初始化
  • conf:修复数组初始化
  • tree-wide:修复附加头文件包含
  • confile_utils:修复整数比较
  • criu:修复整数比较
  • commands:修复整数比较
  • tree-wide:修复公共 lxc 头文件包含
  • network:修复整数比较
  • lxccontainer:修复整数比较
  • terminal:修复整数比较
  • utils:修复整数比较
  • start:修复整数比较
  • netns_ifaddrs:修复整数比较
  • lxcmntent:修复贯穿
  • seccomp:修复整数比较
  • uuid:修复整数比较
  • nl:修复整数比较
  • monitor:修复整数比较
  • file_utils:修复整数比较
  • commands_utils:修复整数比较
  • arguments:修复包含
  • string_utils:修复包含
  • conf:修复包含
  • initutils:修复包含
  • log:修复包含
  • initutils:修复包含
  • arguments:修复包含
  • tools/lxc_start:修复包含
  • caps:修复包含
  • tree-wide:修复 lxc 头文件包含
  • tools:修复构建警告
  • tree-wide:修复 config.h 包含
  • tests:包含“version.h”
  • lxc:删除“version.h”包含
  • build:确保设置了 _GNU_SOURCE
  • build:添加 meson 骨架
  • build:将工具添加到 meson
  • 在名称补全中填写缺失的命令。
  • 使用 --running 代替 --active
  • compopt 调用添加到 __lxc_piped_args
  • 改进名称补全处理。
  • 添加 lxc-ls --fancy-format 的补全输出。
  • 添加对容器组合名称的支持。
  • 使用更类似 bash 的语法。
  • 修复 lxc-snapshot 补全。
  • 重构 __lxc_piped_args
  • 添加对逗号作为补全词的支持。
  • 修复 lxc-create 补全。
  • 另一轮更类似 bash 的语法。

  • __lxc_groups() 重构为 __lxc_get_groups()
  • 添加 __lxc_get_selinux_contexts()
  • lxc-copy 参数 --fssize 添加自动补全功能。
  • 更新 _lxc_usernsexec
  • 添加 __lxc_cgroup_state_object()
  • 检查前缀名称的自动补全功能。
  • 重构 __lxc_check_name_present()
  • 修复 lxc-cgroup 的智能自动补全功能。
  • 构建:在 default_options 中设置 pie
  • 构建:在 default_options 中设置 as-needed
  • 构建:尽可能使用 dependency()
  • 构建:-fPIC 和 -shared 会自动处理
  • 构建:设置 find_library('libcap', require : false)
  • 构建:libdir 和 bindir 分别是共享库和可执行文件的默认路径
  • 构建:使用公共依赖项变量
  • 构建:删除不需要的变量
  • 构建:直接向静态库添加单个选项
  • 构建:直接在 default_options 中设置诊断颜色
  • 构建:添加更多全局配置变量
  • 构建:设置更多变量并打印摘要
  • 日志:修复使用 %m 修饰符时的交叉编译问题
  • tests:修复配置文件测试
  • 构建:删除无意义的 prefixdir 验证
  • 构建:使用正确的 Meson 最小版本要求
  • 构建:记录 Meson 版本
  • 构建:显示更详细的信息
  • 构建:确保所有相关调用在构建时都检查可用性
  • network:修复整数比较
  • cgroups:修复声明和头文件
  • 构建:支持 LTO
  • 工具:使用 Android 正确的包含文件
  • 不要在外部库头文件中包含内部头文件
  • 构建:修复钩子程序构建
  • 构建:修复工具构建
  • 钩子:在所有地方使用 cloexec
  • 构建:将 netns_ifaddrs 拆分为单独的源文件
  • 构建:添加命令
  • 构建:扩展 default_options
  • 构建:使用虚拟配置数据
  • 构建:改进 Meson 构建
  • 构建:直接在文件夹中构建钩子
  • 构建:添加钩子
  • 构建:添加 cmd 构建
  • lxc-monitord:在 ; 周围使用 {}
  • 命令:修复整数转换
  • 命令:修复包含文件
  • 全树:修复 HAVE_* 检查
  • 构建:修复剩余的 HAVE_* 生成
  • 构建:添加模板
  • 模板:不要使用双引号
  • 钩子:修复引号
  • 构建:检查编译器是否支持 nonnull 和 returns_nonnull 属性
  • GitHub:删除 16.04 测试
  • 构建:编译器属性改进
  • initutils:添加缺失的 prctl 包含文件
  • lxc:添加 lxc.sched.core
  • 附加:处理核心调度
  • 全树:将核心调度 cookie 转换为 llu
  • 系统调用包装器:修复核心调度创建帮助程序命名
  • 启动:在不支持核心调度时不要失败
  • 启动:使用核心调度错误帮助程序
  • 启动:使应用核心调度失败成为致命错误
  • 日志:改进 musl 上的 %m 处理
  • 终端:以警告消息记录日志
  • 配置:修复 lxc.cap.keep 行为
  • 测试:添加 lxc.cap.keep 的测试
  • 配置:改进功能处理
  • cgroups:对 cpumasks 使用 __u32
  • 全树:对功能使用 __u32
  • 测试:扩展功能测试
  • 附加:改进 drop_capabilities() 的错误日志记录
  • 测试:修复嵌套功能测试
  • lxc-monitord:修复整数比较
  • 测试:删除尾随的 endif
  • criu:修复错误消息
  • af_unix:替换 log_error_errno()
  • 附加:改进错误日志记录
  • 功能:确保以 \0 结尾
  • 配置:修复编码风格
  • 配置:不要使 umount2() 失败
  • 将 riscv64 添加到 --arch 参数值中
  • README.md:提及 RISC-V 架构
  • 配置:验证设置挂载点后根文件系统是否稳定

支持和升级

LXC 4.0 分支支持到 2025 年 6 月。
只有 bug 修复和安全问题才会包含在稳定的 bug 修复版本中,因此始终建议保持最新并运行最新的 bug 修复版本。

下载