LXC 4.0.11 已发布¶
2021年10月19日
简介¶
LXC 团队很高兴地宣布发布 LXC 4.0.11!
这是 LXC 4.0 的第 11 个错误修复版本,该版本支持到 2025 年 6 月。
错误修复¶
像往常一样,此错误修复版本专注于稳定性和强化。此版本的亮点包括
- 核心调度支持 (
lxc.sched.core
) riscv64
在lxc.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 修复版本。
下载¶
- 主发行版 tarball:lxc-4.0.11.tar.gz
- GPG 签名:lxc-4.0.11.tar.gz.asc
内容