返回新闻概述

LXC 5.0 LTS 已发布

2022年6月17日

简介

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

这是自 LXC 4.0.0 发布以来两年工作的成果,也是 LXC 项目的第五个 LTS 版本。此版本将支持到 2027 年 6 月。

主要变化

切换到 meson

在此 LXC 版本中,autotools 正被 meson 替换为构建工具。为 allinstalldist 提供了兼容的 Makefile 目标。

这是一个对打包人员特别相关的更改,因为它不会对用户产生任何可见的影响。

新的 cgroup 配置选项

添加了四个新选项

  • lxc.cgroup.dir.container
  • lxc.cgroup.dir.monitor
  • lxc.cgroup.dir.monitor.pivot
  • lxc.cgroup.dir.container.inner

这些允许精确控制将用于容器本身、监视器进程、容器终止时监视器进程以及允许将容器 cgroup 放置在嵌套(内部)cgroup 中的 cgroup 路径。

时间命名空间支持

LXC 现在支持设置时间命名空间。
这是通过两个新选项完成的

  • lxc.time.offset.boot
  • lxc.time.offset.monotonic

这将在主系统时钟之上应用偏移量(从几纳秒到几小时)。

VETH 设备上的 VLAN 支持

向 VETH 网络设备添加了两个新的配置选项来控制 VLAN 标记。

  • veth.vlan.id
  • veth.vlan.tagged.id

前者设置主(未标记)VLAN,而后者用于在设备上设置其他标记的 VLAN。这需要在父桥设备上使用 VLAN 过滤。

VETH 设备上可配置的发送/接收队列

仍然在 VETH 设备上。现在可以通过两个新的配置选项自定义接收和发送队列的数量

  • veth.n_rxqueues
  • veth.n_txqueues

完整变更日志

以下是此版本中所有更改的完整列表

完整提交列表
  • configure.ac: 重置发布后的 devel 标志
  • lxc_init: 将 main() 移至下方
  • lxc_init: 添加缺少的 O_CLOEXEC
  • [lxc.service] 在 remote-fs.target 之后启动,以允许依赖远程文件系统的容器工作
  • 全局:强化挂载选项解析
  • dir: 在 dir_mount() 中使用清理宏
  • dir: 改进 dir 后端
  • cgroups: 修复附加到统一 cgroup 的问题
  • conf: 重构并修复 userns_exec_1() 中的泄漏
  • commands: 当 lxc_cmd_get_cgroup2_fd() 失败时记录实际的 errno
  • cgroups: 将指针取消引用移至检查之后
  • cgroups: 重构 __cg_unified_attach()
  • attach: 使用 close_prot_errno_disarm()
  • cgroups: 删除未使用的变量
  • cgroups: 修复统一 cgroup 附加
  • 修复 i/o 处理程序返回值
  • 回滚“cgroups: 修复统一 cgroup 附加”
  • conf: 引入并使用 userns_exec_minimal()
  • conf: 简化 userns_exec_minimal()
  • cgroups: 使用隐藏目录附加 cgroup
  • cgroups: 请编译器
  • 监视器进程因信号 SIGKILL 退出,第三方清理 cgroup 资源
  • cgroups: 将对有效监视器进程的检查移至上方
  • cgroups: 更好的助手命名
  • 全局:s/recursive_destroy/lxc_rm_rf/g
  • 验证 cgroup 控制器名称
  • cgroups: 处理较旧的内核(例如 v4.9)
  • start: 无法创建 cgroup 时记录错误
  • cgroups: 发送两个附加 fd
  • cgroups: 发送两个 fd 以附加到统一 cgroup
  • start: 删除对有效 cgroup_ops 的不必要检查
  • init: 将 ExecReload 添加到 lxc.service 以仅重新加载配置文件
  • 允许以系统守护进程运行 lxc-monitord
  • 修复非 root 用户无法写入 /dev/stdout
  • apparmor: 生成 ro、bind、remount 规则列表
  • autotools: 不要安装 run-coccinelle.sh
  • systemd: 添加 Documentation 密钥
  • cgroups: 修复“未初始化的 transient_len”警告
  • utils: 重构 fix_stdio_permissions()
  • utils: 在 lxc_switch_uid_gid() 中使用 setres{u,g}id()
  • cgroups: 修复 GCC 7 上的构建警告
  • lxccontainer: poll 使用毫秒而不是秒
  • 回滚“start: 删除对有效 cgroup_ops 的不必要检查”
  • 引入 lxc.cgroup.dir.{monitor,container,container.inner}
  • cgroups: 删除未使用的变量
  • doc: s/lxc.cgroup.container.namespace/lxc.cgroup.container.inner/g
  • confile: set_config_cgroup_container_inner_dir() 的编码风格修复
  • api-extensions: 添加和记录 cgroup_advanced_isolation
  • doc: 将 lxc.cgroup.dir.{monitor,container,container.inner} 添加到日语手册
  • confile: 修复跳转表顺序
  • 在 get_cgroup 命令中获取正确的路径
  • cgroup 隔离:尽早处理设备 cgroup
  • start: 确保在 exec 期间关闭所有文件描述符
  • syscall_numbers: 处理 riscv
  • lxc_user_nic: 简化组检索
  • lxc_user_nic: 无法找到组时继续
  • cgroups: 空格修复
  • seccomp: 较新的内核要求缓冲区为零
  • network: 使能够将 IPVLAN 的模式设置为 L2
  • src/lxc/network: ipvlan 注释和代码风格调整
  • conf: 调整 get_minimal_idmap()
  • conf: 在 lxc_map_ids() 中全局使用宏
  • conf: 在 mapped_hostid_add() 中始终使用 move_ptr()
  • lxc-update-config: 修复 lxc.logfile 的错误处理
  • tests/no-new-privs: 不要修改 /etc/lxc
  • cgroups: 在纯 cgroup2 系统上忽略旧的限制
  • 修复带有循环后备存储的 lxc-oci 模板
  • cgroup: 修复 cgroup_exit 中 cgfd_con 的错误使用
  • cgroups: 遵守布尔返回值
  • travis: 添加回 coverity
  • memory_utils: 在 free_disarm() 中直接使用 NULL 指针
  • conf: 修复 tty 清理
  • cgroups: 不要传递 NULL 指针
  • uuid: 关闭 fd
  • cgroups: 修复 cgroup2 设备
  • rexec: 避免双重关闭
  • cgroups: 使用正确的 NULL 指针检查
  • conf: 不要在 get_minimal_idmap() 中双重释放
  • criu: 明确我们忽略 rmdir() 返回值
  • zfs: 修复资源泄漏
  • commands: 向 lxc_cmd_sock_get_state() 添加附加检查
  • network: 在网络取消配置失败时记录警告
  • log: 恢复非本地值
  • attach: 将对有效配置的检查移至更早位置
  • rexec: 在失败时释放 argv 数组
  • conf: 在 get_minimal_idmap() 中正确清理内存
  • log: 设置 GNU_SOURCE,因为它可能有助于 coverity
  • travis: coverity 对 glibc 中的 %m printf 扩展感到困惑
  • cgroups: 修复 cgroup 限制错误
  • configure: 修复 coverity 构建
  • apparmor: 允许 boot_id
  • src/lxc/network: 修复 netlink 属性类型 1 长度无效的消息
  • cgroups: 在非 cgroup2 布局上忽略 cgroup2 限制
  • common.conf: 添加 cgroup2 默认设备限制
  • cgroups: 在仅 cgroup2 的系统上预挂载 cgroups
  • conf: 引入 userns_exec_mapped_root()
  • conf: 支持在没有 rootfs 的容器上设置控制台
  • terminal: 删除不必要的 if 条件
  • gcc: 添加 -Warray-bounds、-Wrestrict、-Wreturn-local-addr、-Wstringop-overflow
  • compiler: 支持新的访问属性
  • 全局:这更像是 TODO 而不是 FIXME
  • yum: 删除未使用的模块
  • tools/lxc-ls: 使 lgtm 静音
  • tools/lxc-ls: 使 lgtm 更静音
  • confile: 修复网络密钥的顺序独立性
  • lxccontainer: 对 lxc_check_inherited() 调用进行少量清理
  • start: 删除未使用的 lxc_zero_handler()
  • lxccontainer: 在 state_socket_pair 上使用 close_prot_errno_disarm()
  • start: 修复容器重启
  • start: 清理文件描述符继承
  • log: 清理 syslog 处理
  • console: 仅在请求控制台时创建分离的挂载
  • syscall_numbers: 正确处理 ia64 系统调用编号
  • syscall_numbers: 添加 clone3()
  • process_utils: 引入新的 process_utils.{c,h}
  • process_utils: 添加 clone3() 支持
  • mainloop: 添加 lxc_mainloop_add_handler_events
  • cgfsng: 重复数据冻结代码
  • cgfsng: 在轮询 cgroup.events 时使用 EPOLLPRI
  • process_utils: 使 lxc 尽可能使用 clone3()
  • cgroups: 创建 cgroups 时不要太警觉
  • 改进 LXC_CMD_GET_CGROUP 兼容性
  • network: 恢复旧行为
  • network: 修复 {mac,ip,v}lan 设备创建
  • bionic: s/lxc_raw_execveat()/execveat()/g
  • network: 在 instantiate_ns_phys() 中也使用 __instantiate_ns_common()
  • lxc-usernsexec: 将错误消息降级为警告消息
  • lxc-usernsexec: 不要在 setgroups() 上失败
  • travis: 将 coverity 限制在 amd64 上 bionic 上的 gcc
  • api_extensions: 添加“pidfd”
  • 添加 lxc-usernsexec 测试
  • lxc-test-usernsexec: 如果用户是 root,则创建并使用非 root 用户。
  • .gitignore: 忽略 make 创建的 COPYING 文件
  • macro: 添加 UINT_TO_PTR 和 PTR_TO_USHORT 助手
  • network: 在 instantiate_veth 中添加对桥接链路接口存在的检查
  • api/extensions: 添加 network_bridge_vlan API 扩展
  • macro: 添加桥接 VLAN 常量
  • macro: 添加 BRIDGE_VLAN_NONE 模式常量
  • macro: 添加 BRIDGE_VLAN_ID_MAX 常量
  • network: 添加 veth vlan_id、vlan_id_set 和 vlan_tagged_ids
  • confile: 添加对 lxc.net.veth.vlan.id 的验证
  • confile: 添加对 lxc.net.veth.vlan.tagged.id 的验证
  • confile/utils: 将 veth 模式和 vlan ID 追踪添加到 lxc_log_configured_netdevs
  • confile/utils: 将 veth vlan 标记 ID 追踪添加到 lxc_log_configured_netdevs
  • confile/utils: 添加 priv.veth_attr.vlan_tagged_ids 的释放
  • tests: 添加对 lxc.net.0.veth.vlan.id 配置键的测试
  • tests: 添加对桥接 vlan“none”值的测试
  • tests: 添加对 lxc.net.0.veth.vlan.tagged.id 配置键的测试
  • network: 添加桥接 vlan 管理功能
  • network: 更新 instantiate_veth 以设置桥接 vlan 设置

  • doc: 添加 veth vlan 桥接选项的文档
  • network: 更新 lxc_ipvlan_create 中的 netlink_open 处理
  • network: 添加 OVS VLAN 设置函数
  • network: 更新 instantiate_veth 以支持 OVS VLAN 设置
  • confile: 修复 Coverity 问题,get_config_net_veth_vlan_tagged_id 中缺少返回
  • network: 修复 Coverity 问题,lxc_ovs_setup_bridge_vlan_exec 中存在数据泄漏
  • network: 修复 Coverity 问题,不要在 setup_veth_ovs_bridge_vlan 中初始化字符串指针
  • network: 删除未使用的 ip_proxy_args
  • network: 添加 free_ovs_veth_vlan_args 并允许释放 trunks 字段
  • network: 修复日志消息中的 int 类型
  • network: 在 setup_veth_ovs_bridge_vlan 中添加对 free_ovs_veth_vlan_args 的调用
  • cgroups: 初始化 lxc.pivot cpuset
  • conf: 删除错误的标志
  • conf: 在 userns_exec_mapped_root() 中始终使用 target_fd
  • conf: 为 userns_exec_mapped_root() 添加更多日志记录
  • conf: 删除旧的 chown_mapped_root()
  • lxccontainer: 删除无意义的字符串复制
  • nl: 修复内存泄漏
  • containertests: 修复空指针解引用
  • tree-wide: 使用“ptmx”和“pts”作为终端术语
  • tree-wide: 从我们的公共日志中删除对可疑 API 的引用
  • tree-wide: 在网络代码中使用“primary”
  • 回退“nl: 修复内存泄漏”
  • network: 将 primary 重命名为 master
  • openpty: 调整变量命名
  • CODING_STYLE: 调整代码示例
  • doc: 更新术语
  • test: 更新术语
  • lxccontainer: 修复非阻塞容器停止
  • lxc-net: 设置广播
  • commands: 不要泛滥日志
  • lxc: 添加时间命名空间支持
  • api: 添加 time_namespace 扩展
  • doc: 添加 lxc.time.offset.{boot,monotonic}
  • doc: 将 veth vlan 桥接选项添加到日语 lxc.container.conf(5)
  • doc: 将 lxc.time.offset.* 添加到日语 lxc.container.conf(5)
  • confile: 处理 lxc.time.offset.{boot,monotonic} 中的溢出
  • start: 保留时间命名空间
  • lxc: 支持 CLONE_INTO_CGROUP
  • start: 初始化 cgroup_fd
  • start: 使用 __aligned_u64
  • attach: 在 LSM 标签后设置 no_new_privs 标志
  • templates/lxc-download.in: 修复错误的 if 条件(使用 gpg 命令的结果,而不是执行 gpg 命令结果时得到的结果)
  • templates/lxc-download.in: 使 shellcheck 满意
  • templates/lxc-download.in: 使用 GPG 选项 --receive-keys 而不是 --recv-keys
  • cgroups: 更新术语
  • cgroups: 更新术语 II
  • seccomp: 支持配置文件中的允许列表/拒绝列表
  • cgroups: 使用空 {} 初始化结构体
  • cgroup2_devices: 修复访问规则解析
  • api-extensions: 添加 seccomp_allow_deny_syntax 扩展
  • cgroups: 修复 bpf 设备程序生成
  • cgroups: 处理空的 bpf 日志缓冲区
  • tree-wide: s/ptmx/ptx/g
  • tree-wide: s/pts/pty/g
  • openpty: 修复错误的重命名
  • openpty: 改善实现并处理没有它的平台
  • checkconfig: 在输出中显示 LXC 版本。
  • autotools: 包含 COPYING 文件
  • 提高 lxc_ifname_alnum_case_sensitive 的效率
  • network: 删除未使用的变量
  • compiler: 添加并使用 __hidden 可见性
  • string_utils: 使所有帮助程序隐藏
  • af_unix: 隐藏不必要的符号
  • attach: 隐藏不必要的符号
  • caps: 隐藏不必要的符号
  • commands: 隐藏不必要的符号
  • commands_utils: 隐藏不必要的符号
  • conf: 隐藏不必要的符号
  • Makefile.am: 修复错别字
  • lxc-ls: 错误修复
  • confile: 隐藏不必要的符号
  • confile_utils: 隐藏不必要的符号
  • criu: 隐藏不必要的符号
  • error: 隐藏不必要的符号
  • file_utils: 隐藏不必要的符号
  • initutils: 隐藏不必要的符号
  • log: 隐藏不必要的符号
  • lxclock: 隐藏不必要的符号
  • lxcseccomp: 隐藏不必要的符号
  • mainloop: 隐藏不必要的符号
  • monitor: 隐藏不必要的符号
  • namespace: 隐藏不必要的符号
  • network: 隐藏不必要的符号
  • parse: 隐藏不必要的符号
  • process_utils: 隐藏不必要的符号
  • rexec: 隐藏不必要的符号
  • ringbuf: 隐藏不必要的符号
  • start: 隐藏不必要的符号
  • state: 隐藏不必要的符号
  • sync: 隐藏不必要的符号
  • terminal: 隐藏不必要的符号
  • utils: 隐藏不必要的符号
  • uuid: 隐藏不必要的符号
  • cgroups: 隐藏不必要的符号
  • lsm: 隐藏不必要的符号
  • arguments: 隐藏不必要的符号
  • storage: 隐藏不必要的符号
  • tree-wide: 隐藏更多不必要的符号
  • start: 简化 goto 语句
  • apparmor: 允许对 boot_id 进行只读重新挂载
  • syscalls: 添加 fsopen()
  • syscalls: 添加 fspick()
  • syscalls: 添加 fsconfig()
  • syscalls: 添加 fsmount()
  • mount_utils: 添加挂载实用程序
  • mount_utils: 添加 mount_filesystem() 帮助程序
  • attach: 使用新的挂载 API
  • log: 不要通过隐藏符号来破坏日志记录
  • Makefile: 修复 Makefile
  • selinux: 删除 security_context_t 的使用,因为它已弃用
  • seccomp: 任务退出后从事件循环中删除 seccomp fd
  • seccomp: 添加缺少的头文件
  • syscall: 如果未定义 __NR_signalfd,则不要失败
  • conf: 确保释放 idmap 指针本身
  • terminal: 从容器内部安全地分配 pts 设备
  • macro: 如果缺少,则定义 TIOCGPTPEER
  • conf: 使用 openat() 而不是 open_tree()
  • seccomp: 不要关闭主循环,只需删除处理程序
  • seccomp: 添加 seccomp_notify_fd_active api 扩展
  • seccomp: 将通知 fd 作为消息的一部分发送
  • api-extension: 添加缺少的 seccomp_proxy_send_notify_fd 扩展
  • 回退“templates/lxc-download.in: 使用 GPG 选项 --receive-keys 而不是 --recv-keys”
  • lxc-download: 修复重试循环
  • syscalls: 添加 openat2()
  • utils: 基于 openat2() 添加 safe_mount_beneath()
  • conf: 将 mount_autodev() 切换到新的 safe_mount_beneath() 帮助程序
  • cgfsng: 使用 safe_mount_beneath()
  • utils: 引入 safe_mount_beneath_at()
  • conf: 将文件描述符存储到 struct lxc_rootfs 中的根挂载点
  • conf: 在 mount_autodev() 中使用存储的容器挂载点 fd
  • file_utils: 添加 exists_dir_at()
  • conf: 通过 save_mount_beneath_at() 加固 lxc_fill_autodev()
  • conf: 将 /dev 设置移动为基于文件描述符
  • terminal: 加固终端分配
  • lsm: 重做 lsm 处理
  • lsm: 在 ase 我们使用多线程时使用原子操作
  • lsm: 删除对原子操作的需求
  • 更新文档以反映不支持纯 cgroupv2
  • cgfsng: 修复 cgroup 附加 cgroup 创建
  • 删除 lxc.service 中已弃用的选项,修复 #3527
  • 仅检查 rootfs 作为文件系统类型
  • cgroups: 修复 armhf 构建
  • 删除无用的参数
  • 避免 lxc-attach 中的空指针解引用
  • terminal: 引入 lxc_terminal_signal_sigmask_safe_blocked()
  • attach: 使用 lxc_terminal_signal_sigmask_safe_blocked()
  • commands: 如果 unfreeze 失败,则不要失败
  • lxc-usernsexec: setgroups() 与其他地方类似,不应该在 EPERM 上失败
  • 删除关于标准输出的过时设置
  • seccomp: 检查系统调用在兼容体系结构上是否受支持。
  • seccomp: 记录无效的 seccomp 通知 ID
  • seccomp: 改善默认通知发送
  • seccomp: 修复 PowerPC 上的编译
  • sync: 切换到新的错误帮助程序
  • sync: 记录同步状态
  • start: 改善 devpts fd 发送
  • conf: 始终向等待 devptfs_fd 的父进程发送响应
  • conf: 在发送 devpts fd 时考虑提前返回
  • 更新日语 pam_cgfs(8) 以反映不支持纯 cgroupv2
  • seccomp: 修复伪系统调用的处理并改进规则处理的日志记录。
  • seccomp: 避免对主机原生体系结构的规则进行重复处理。
  • 引入 lxc.cgroup.dir.monitor.pivot
  • lxccontainer: 修复 lxc_config_item_is_supported
  • tests: 修复启用 appamor 时的编译。
  • lxc-attach: 启用设置 SELinux 上下文
  • commands: 在 NULL 检查后不要解引用
  • utils: 在 NULL 检查后不要解引用
  • conf: 检查 snprint 返回值
  • utils: 检查 snprintf 返回值
  • attach: 要求指定 LXC_ATTACH_LSM_LABEL
  • seccomp: 使 seccomp 通知程序 fd 非阻塞
  • seccomp: 记录中止的系统调用
  • 为 monitor_pivot_dir 添加缺少的释放。
  • attach: 静默 stdio 权限调整警告
  • cgfsng: 将日志级别调整为警告而不是错误
  • parse: 重做配置解析例程
  • conf: 在复制 mountinfo 时切换到 fd_to_fd()
  • file_utils: 修复配置文件解析
  • commands_utils: 修复 lxc-wait
  • doc: 将 lxc.cgroup.dir.monitor.pivot 添加到日语手册页
  • network: 修复 LXC_NET_NONE 清理
  • macro: 移动 MAX_GRBUF_SIZE
  • macro: 将 MAX_GRBUF_SIZE 提高到 2 MB
  • tree-wide: 使用 call_cleaner(netns_freeifaddrs)
  • confile: 清理网络配置解析
  • confile: 清理钩子
  • confile: 清理 set_config_personality()
  • confile: 清理 set_config_pty_max()
  • confile: 清理 set_config_start()
  • confile: 清理 set_config_monitor()
  • confile: 清理 set_config_monitor_signal_pdeath()
  • confile: 清理 set_config_group()
  • confile: 清理 set_config_environment()
  • confile: 清理 set_config_tty_max()
  • confile: 清理 set_config_apparmor_allow_incomplete()
  • confile: 清理 set_config_apparmor_allow_nesting()
  • confile: 清理 set_config_apparmor_raw()
  • confile: 清理 set_config_log_file()
  • confile: 清理 set_config_log_level()
  • confile: 清理 set_config_log_level()
  • confile: 清理 set_config_signal_halt()
  • confile: 清理 set_config_signal_reboot()
  • confile: 清理 set_config_signal_stop()
  • confile: 清理 __set_config_cgroup_controller()
  • confile: 清理 set_config_cgroup_relative()
  • confile: 清理 set_config_prlimit()
  • confile: 清理 set_config_sysctl()
  • confile: 清理 set_config_proc()
  • confile: 清理 set_config_idmaps()
  • confile: 清理 set_config_mount_fstab()
  • confile: 清理 set_config_mount_auto()
  • confile: 清理 set_config_mount()
  • confile: 清理 set_config_cap_keep()
  • confile: 清理 set_config_cap_drop()
  • confile: 清理 set_config_console_rotate()
  • confile: 清理 set_config_console_buffer_size()
  • confile: 清理 set_config_console_size()
  • confile: 清理 append_unexp_config_line()
  • confile: 清理 do_includedir()
  • confile: 清理 set_config_rootfs_path()
  • confile: 清理 set_config_rootfs_options()
  • confile: 清理 set_config_uts_name()
  • confile: 清理 set_config_namespace_clone()
  • confile: 清理 set_config_namespace_keep()
  • confile: 清理 set_config_time_offset_boot()
  • confile: 清理 set_config_time_offset_monotonic()
  • confile: 清理 parse_line()
  • confile: 清理 parse_new_conf_line()
  • confile: 清理 lxc_config_define_add()
  • confile: 清理 lxc_config_parse_arch()
  • confile: 清理 lxc_fill_elevated_privileges()
  • confile: 清理 write_config()
  • confile: 清理 clone_update_unexp_ovl_paths()
  • confile: 清理 clone_update_unexp_hooks()
  • confile: 清理 set_config_ephemeral()
  • confile: 清理 set_config_log_syslog()
  • confile: set_config_no_new_privs()
  • confile: 清理 __get_config_cgroup_controller()
  • confile: 清理 get_config_idmaps()
  • confile: 清理 get_config_hooks()
  • confile: 清理 get_config_seccomp_allow_nesting()
  • confile: 清理 get_config_seccomp_notify_cookie()
  • confile: 清理 get_config_seccomp_notify_proxy()
  • confile: get_config_prlimit()
  • confile: 清理 get_config_sysctl()
  • confile: 清理 get_config_proc()
  • confile: 清理 clr_config_tty_dir()
  • confile: 清理 clr_config_apparmor_profile()
  • confile: 清理 clr_config_selinux_context()
  • confile: 清理 clr_config_selinux_context_keyring()
  • confile: 清理 clr_config_cgroup_dir()
  • confile: 清理 clr_config_log_file()
  • confile: 清理 clr_config_mount_fstab()
  • confile: 清理 clr_config_rootfs_path()
  • confile: 清理 clr_config_rootfs_mount()
  • confile: 清理 clr_config_rootfs_options()
  • confile: 清理 clr_config_uts_name()
  • confile: 清理 clr_config_console_path()
  • confile: 清理 clr_config_console_logfile()
  • confile: 清理 clr_config_seccomp_allow_nesting()
  • confile: 清理 clr_config_seccomp_notify_cookie()
  • confile: 清理 clr_config_seccomp_notify_proxy()
  • confile: 清理 clr_config_seccomp_notify_proxy()
  • confile: 清理 clr_config_log_syslog()
  • confile: 清理 clr_config_execute_cmd()
  • confile: 清理 clr_config_init_cmd()
  • confile: 清理 clr_config_init_cwd()
  • confile: 清理 get_config_includefiles()
  • 在 lxc-download.in shell 脚本中添加了标准解析器选项
  • 在发生错误时将接口恢复到正确的命名空间
  • confile: 清理 get_network_config_ops()
  • confile: 清理 clr_config_net_nic()
  • confile: 清理 clr_config_net_type()
  • confile: 清理 clr_config_net_name()
  • confile: 清理 clr_config_net_flags()
  • confile: 清理 clr_config_net_link()
  • confile: clr_config_net_l2proxy()
  • confile: 清理 clr_config_net_macvlan_mode()
  • confile: 清理 clr_config_net_ipvlan_mode()

  • confile: 清理 clr_config_net_ipvlan_isolation()
  • confile: 清理 clr_config_net_veth_mode()
  • confile: 清理 clr_config_net_veth_pair()
  • confile: 清理 clr_config_net_script_up()
  • confile: 清理 clr_config_net_script_down()
  • confile: 清理 clr_config_net_hwaddr()
  • confile: 清理 clr_config_net_mtu()
  • confile: 清理 clr_config_net_vlan_id()
  • confile: 清理 clr_config_net_ipv4_gateway()
  • confile: 清理 clr_config_net_ipv4_address()
  • confile: 清理 clr_config_net_veth_ipv4_route()
  • confile: 清理 clr_config_net_ipv6_gateway()
  • confile: 清理 clr_config_net_ipv6_address()
  • confile: 清理 clr_config_net_veth_ipv6_route()
  • confile: 清理 get_config_net_nic()
  • confile: 清理 get_config_net_type()
  • confile: 清理 get_config_net_flags()
  • confile: 清理 get_config_net_link()
  • confile: 清理 get_config_net_l2proxy()
  • confile: 清理 get_config_net_name()
  • confile: 清理 get_config_net_macvlan_mode()
  • confile: 清理 get_config_net_ipvlan_mode()
  • confile: 清理 get_config_net_ipvlan_isolation()
  • confile: 清理 get_config_net_veth_mode()
  • confile: 清理 get_config_net_veth_pair()
  • confile: 清理 get_config_net_veth_vlan_id()
  • confile: 清理 get_config_net_script_up()
  • confile: 清理 get_config_net_script_down()
  • confile: 清理 get_config_net_hwaddr()
  • confile: 清理 get_config_net_mtu()
  • confile: 清理 get_config_net_vlan_id()
  • confile: 清理 get_config_net_ipv4_gateway()
  • confile: 清理 get_config_net_ipv4_address()
  • confile: 清理 get_config_net_veth_ipv4_route()
  • confile: 清理 get_config_net_ipv6_gateway()
  • confile: 清理 get_config_net_ipv6_address()
  • confile: 清理 get_config_net_veth_ipv6_route()
  • confile: lxc_list_subkeys()
  • confile: 清理 lxc_list_net()
  • confile_utils: 清理 parse_idmaps()
  • confile_utils: 清理 lxc_network_add()
  • confile_utils: 清理 lxc_get_netdev_by_idx()
  • confile_utils: 清理 lxc_remove_nic_by_idx()
  • confile_utils: 清理 lxc_free_networks()
  • confile_utils: 清理 lxc_veth_mode
  • confile_utils: 清理 lxc_veth_mode_to_flag()
  • confile_utils: 清理 lxc_veth_flag_to_mode()
  • confile_utils: 清理 lxc_macvlan_mode
  • confile_utils: 清理 lxc_macvlan_mode_to_flag()
  • confile_utils: 清理 lxc_macvlan_flag_to_mode()
  • confile_utils: 清理 lxc_ipvlan_mode
  • confile_utils: 清理 lxc_ipvlan_mode_to_flag()
  • confile_utils: 清理 lxc_ipvlan_flag_to_mode()
  • confile_utils: 清理 lxc_ipvlan_isolation
  • confile_utils: 清理 lxc_ipvlan_isolation_to_flag()
  • confile_utils: 清理 lxc_ipvlan_flag_to_isolation()
  • confile_utils: 清理 set_config_string_item()
  • confile_utils: 清理 set_config_string_item_max()
  • confile_utils: 清理 set_config_bool_item()
  • confile_utils: 清理 network_ifname()
  • confile_utils: 清理 new_hwaddr()
  • lxc: 添加清理助手函数
  • confile_utils: 清理 lxc_container_name_to_pid()
  • confile_utils: 清理 lxc_inherit_namespace()
  • confile_utils: 清理 sig_num()
  • confile_utils: 清理 rt_sig_num()
  • confile_utils: 清理 sig_parse()
  • cmd/lxc_init: 忽略返回值
  • lxclock: 逻辑上已死的代码
  • lxclock: 清理 lxc_newlock()
  • lxclock: 清理 lxclock_name()
  • lxclock: 清理 lxclock()
  • lxclock: 清理 lxcunlock()
  • lxclock: 清理 lxc_putlock()
  • lxclock: 清理 dump_stacktrace()
  • lxclock: 清理 lxclock_name()
  • utils: 清理 get_rundir()
  • storage/lvm: 清理 do_lvm_create()
  • network: 使用空初始化器
  • storage/btrfs: 添加缺失的返回值
  • cgroups/cgfsng: 删除逻辑上已死的代码
  • utils: 修复未检查的返回值
  • conf: 修复未检查的返回值
  • confile: 清理 set_config_net_l2proxy()
  • confile_utils: 清理 strprint()
  • criu: 清理 load_tty_major_minor()
  • 卸载 proc/sys/net 如果删除了 CAP_NET_ADMIN Signed-off-by: Henry Zhang henryzhang99@gmail.com
  • conf: 修复基于块设备的根文件系统挂载
  • confile: 清理 set_config_hooks()
  • confile: 不要意外地更改 lxc.cgroup.dir
  • utils: 允许跨设备解析
  • cgroup2: 将 bpf 设备 cgroup 程序移动到 struct cgroup_ops
  • 宏: 对功能使用升序
  • conf: 定义缺失的功能
  • conf: 添加新的功能 CAP_{BLOCK_SUSPEND,PERFMON,BPF,CAP_CHECKPOINT_RESTORE}
  • 宏: 定义所有功能
  • conf: 添加 lxc_wants_cap() 助手函数
  • conf: 修复基于 CAP_NET_ADMIN 的挂载处理
  • 将版本从 2.*.* 更改为 4.*.*
  • 使 lxc-net 相对于现有的 dnsmasq 配置独立
  • 命令: 修复对 seccomp 通知支持的检查
  • 配置: 如果禁用,则跳过 libseccomp 测试
  • conf: 修复容器保留 CAP_NET_ADMIN 的问题
  • cgroups: 修复 cgroup 挂载
  • lsm: 删除关于构造函数的过时注释
  • lxc_attach: 有条件地包含 rexec
  • 全树: 修复一些头文件包含
  • initutils: 修复缺少的包含
  • 配置: 支持静态二进制文件
  • autotools: 为工具启用静态构建
  • autotools: 为命令启用静态构建
  • 全树: 修复使用-Wstrict-prototypes -Wold-style-definition 时的编译
  • 配置: 更新 ax_pthread.m4
  • 配置: 添加 AC_SYS_LARGEFILE 检查
  • autotools: 更新构建
  • file_utils: 引入 read_file_at()
  • string_utils: 添加 must_make_path_relative()
  • cgroups: 代码风格修复
  • cgroups: 重构 cg_unified_init()
  • cgroups: 检测并记录 cgroup2 冷冻器支持
  • criu: 处理 cgroup2 冷冻器
  • 在容器启动时创建 -p /proc /sys
  • conf: 修复代码风格
  • conf: 代码风格修复
  • conf: 将 proc 和 sys 挂载点创建移到 lxc_mount_auto_mounts() 中
  • attach: 反转子/父处理
  • attach: 对 cwd 使用 __do_free 清理宏
  • attach: 微调日志记录
  • attach: 对 labelfd 使用 __do_close
  • attach: 代码风格修复
  • attach: 使用 free_disarm()
  • attach: s/attach_child_main/do_attach/g
  • attach: 将 do_attach() 标记为 __noreturn
  • attach: 使 do_attach() 为 void
  • attach: 使用 close_prot_errno_disarm()
  • attach: 向 stdfd 复制添加一些 DEBUG() 日志
  • attach: 代码风格修复
  • attach: 正确排序变量
  • attach: 将 lxc_proc_context_info 移动到文件本地范围
  • attach: s/lxc_proc_context_info/attach_context/g
  • attach: 重命名 attach_context 助手函数
  • attach: s/calloc/zalloc/g
  • attach: 将 attach_context 分割为分配和初始化
  • attach: 将 lxc_cmd_get_init_pid() 移动到 get_attach_context() 中
  • attach: 将 get_personality() 移动到 get_attach_context() 中
  • attach: 将配置初始化移动到 get_attach_context() 中
  • attach: 添加 get_attach_context_nsfds()
  • attach: s/lxc_proc_close_ns_fd/close_nsfds/g
  • attach: s/lxc_attach_drop_privs/drop_capabilities/g
  • lsm: s/lsm_init/lsm_init_static/g
  • attach: 修复个性处理
  • attach: 删除过时的命名空间检查
  • attach: 将 getcwd() 移动到更紧密的范围
  • 配置: 修复 clang-12 和 LTO 的静态构建
  • attach: s/close/close_prot_errno_disarm/g
  • attach: 将 attach_clone_payload 移动到更紧密的范围
  • attach: 将 attach_clone_payload 重命名为 attach_payload
  • attach: 代码风格修复
  • sync: 导出 sync_wait() 和 sync_wake()
  • sync: 重命名启动同步宏
  • attach: 在适用情况下使用 sync_wait()/sync_wake()
  • attach: 引入 sync_wait_pid() 和 sync_wake_pid()
  • sync: 使所有同步助手函数返回 bool
  • attach: 引入 sync_wait_fd() 和 sync_wake_fd()
  • attach: 使用虚拟宏使跟踪同步逻辑更容易
  • attach: 将 new_cwd 移动到更紧密的范围
  • attach: 使用 STDIN_FILENO 而不是硬编码 0
  • attach: 删除不需要的赋值
  • attach: 重构附加到命名空间 fd
  • attach: 移动到仅文件描述符交互
  • attach: 移动到仅文件描述符的命名空间交互
  • attach: 将文件描述符初始化为 -EBADF
  • cgroups: bpf 修复
  • croups: 改善 __do_bpf_program_free
  • cgroups: 代码风格修复
  • cgroups: 不要初始化 NULL 日志
  • cgroups: 确保所有内存都已清零
  • cgroups: 使用 zalloc
  • cgroups: 微调 cgroup 初始化
  • log: 删除无意义的内联
  • log: 添加 lxc_log_get_fd()
  • seccomp: 使用 lxc_log_get_fd()
  • cgroups: 更严格地检查参数
  • cgroups: 为了一致性,使用清理宏
  • log: 重构 lxc_log_get_level()
  • seccomp: 使用 lxc_log_get_level()
  • cgroups: 在跟踪级别记录时使用 bpf 日志
  • log: 添加 lxc_log_trace() 助手函数
  • attach: 不要无谓地检查 NULL
  • cgroups: 使用 PTR_TO_U64()
  • cgroups: 对齐方法
  • attach: 基于文件描述符的 LSM 处理
  • attach: 通过使用 pidfds 加强安全性
  • lsm/apparmor: 清理 apparmor_process_label_set()
  • file_utils: 添加 fdopenat()
  • attach: 统一 /proc//status 解析
  • attach: 将 init_pid 字段初始化为 -ESRCH
  • attach: 将 uid 和 gid 处理移动到 get_attach_context()
  • attach: 简化 /proc/self 的打开
  • attach: 文档 attach_context
  • utils: 在记录 stdio 权限修复失败时使用 SYSTRACE()
  • attach: 使用 SYSDEBUG() 记录 dup2() 失败
  • attach: 修复 stdfd 替换的日志记录
  • attach: 修复 dup2() 的错误检查
  • attach: 将主机 uid 和主机 gid 存储在 attach_context 中
  • cgroups: 删除无意义的 NULL 检查
  • cgroups: 初始化变量
  • file_utils: 添加 open_at()
  • syscall_wrappers: 添加 PROTECT_LOOKUP, PROTECT_OPEN, PROTECT_LOOKUP_WITH_SYMLINKS, PROTECT_OPEN_WITH_TRAILING_SYMLINKS
  • attach: 加强 open 调用
  • 全树: 扩展 read_file_at()
  • lsm: 加强 read_file_at()
  • file_utils: 从 open_at() 默认值中删除 O_NOFOLLOW
  • attach: 基于文件描述符的 fdinfo 处理
  • attach: 防止 UAF
  • attach: 使用正确的 put 方法
  • commands_utils: 不要泄漏内存
  • conf: 使用 lxc_log_trace()
  • confile_utils: 使用 lxc_log_trace()
  • attach: 对 fdopen_at() 调用使用更严格的查找语义
  • attach: 将文件描述符关闭移动到 attach_context_container() 中
  • attach: 将加载 seccomp 尽可能推迟到最后
  • memory_utils: 添加 close_prot_errno_mov()
  • syscall_wrappers: 添加 PROTECT_OPEN_W_* 变体
  • file_utils: 加强 lxc_open_dirfd()
  • file_utils: 加强 lxc_writeat()
  • cgroups: 添加 unified_cgroup_fd() 助手函数
  • cgroups: 将控制器委托切换到仅 fd 操作
  • 宏: 将 ENOMEDIUM 用作 ENOCGROUP2
  • file_utils: 添加 lxc_read_try_buf_at()
  • cgroups: 添加 cgroup_get()
  • lxccontainer: 使用 cgroup_get()
  • cgroups: 重新排序 cgroup_get() 参数
  • cgroups: 添加 croup_set()
  • lxccontainer: 使用正确的变量顺序
  • lxccontainer: 使用 cgroup_set()
  • cgroups: 将函数放在方法之后
  • cgroups: 注释 cgroup_get()/cgroup_set()
  • commands_utils: 添加 lcx_cmd_notify_state_listeners()
  • freezer: 使用 lxc_cmd_notify_state_listeners()
  • cgroups: 添加 cgroup_freeze() 和 cgroup_unfreeze()
  • freezer: 使方法返回 bool
  • lxccontainer: 使用 cgroup_freeze() 和 cgroup_unfreeze()
  • cgroups: 在再次轮询之前倒带文件
  • cgroups: 删除未使用的 conf 参数
  • cgroups: 检查参数
  • lxccontainer: 使用正确的错误检查
  • cgroups: 将 cgroup_attach() 向下移动
  • cgroups: 对 cgroup_attach() 进行更严格的参数检查
  • cgroups: 从 cgroup_attach() 返回 ENOCGROUP2
  • attach: 显式检查 ENOCGROUP2
  • cgroups: 切换回返回整数
  • attach: 显式关闭 seccomp 通知程序 fd
  • cgpath: 添加日志记录
  • 命令: 添加缺失的 lxc_cmd_get_limiting_cgroup2_fd() 实现
  • cgroups: 使用 lxc_cmd_get_limiting_cgroup2_fd()
  • cgroups: 导出 __cgroup_unfreeze() 供命令使用
  • 命令: 直接使用 __cgroup_unfreeze()
  • freezer: 删除 lxc_cmd_freeze() 和 lxc_cmd_unfreeze() 调用
  • 测试: 向 device_add_remove 添加日志记录
  • 测试: 在 cgpath 测试中支持纯统一 cgroup 布局
  • cgroups: 改善参数检查
  • 测试: 在 device_add_remove 中检查 NULL

  • rexec: 检查 lseek() 返回值
  • syscalls: 添加 close_range()
  • rexec: 如果可能,将所有 fd 标记为 close-on-exec
  • conf: 删除不必要的系统调用
  • conf: 限制打开 dev/
  • conf: 加固 lxc_fill_autodev() 中的 open 操作
  • conf: 在 lxc_setup_dev_symlinks() 中仅执行 fd 操作
  • conf: 限制 lxc_mount_rootfs() 的 open 操作
  • conf: 仅使用 fd 进行 pivot root
  • conf: 仅使用 fd 进行 devtps 设置
  • attach: 通过 pidfd 附加到命名空间
  • conf: 编码风格
  • conf: 将 lxc_create_tmp_proc_mount() 设置为静态函数
  • conf: 限制 lxc_mount_rootfs() 中的 open 调用
  • conf: 重构临时 procfs 挂载
  • utils: 加固 __safe_mount_beneath_at()
  • cgroups: 修复 cgroup 挂载
  • cgroups: 限制仅使用 fd 创建控制器挂载点
  • cgroups: 切换到基于 fd 的 cgroup 挂载
  • attach: 修复附加到 cgroups 时的回退逻辑
  • cgroups: 修复 cgroup_attach() 中的参数验证
  • cgroups: 改善 cgroup_attach_leaf() 中的错误处理和日志记录
  • cgroups: 限制 cgroup_attach_create_leaf() 中的 open 调用
  • utils: 添加 mount_from_at()
  • conf: 修复 lxc_setup_dev_console()
  • conf: 在容器设置期间开始将 dfd 存储到宿主的 /
  • conf: 限制仅使用 fd 的 lxc_fill_autodev()
  • syscall_wrappers: 修复 PROTECT_OPEN_W 宏
  • 全树:将 dev_mntpt_fd 替换为 dfd_dev
  • 全树:将 mntpt_fd 替换为 dfd_mnt
  • 全树:将 dfd_root_host 替换为 dfd_host
  • cgroups: 检查 cgroup_attach() 中 __cg_unified_attach() 的正确错误
  • attach: 改善日志记录和术语
  • utils: 检查 snprintf() 错误
  • utils: 添加 lxc_drop_groups()
  • 全树:使用 lxc_drop_groups() 而不是 lxc_setgroups(0, NULL)
  • utils: 重构 lxc_setgroups()
  • confile: 添加 lxc.init.groups 以保留额外的组
  • attach: 添加 groups 选项以保留额外的组 ID。
  • attach_options: 初始化 .groups
  • attach_options: 使用标准 C 指针语法
  • attach: 使用括号括起标志检查
  • attach_options: 对 lxc_groups_t 使用 size_t
  • conf: 直接使用 lxc_groups_t
  • confile: 处理追加初始化组
  • tests: 改善 lxc.init.groups 测试
  • confile: 将垃圾组视为错误
  • mount_utils: 将 mount_at() 和 mount_from_at() 从 utils.{c,h} 移动过来
  • mount_utils: 为新的 mount api 添加扩展帮助程序
  • conf: 将 mount_autodev() 切换到新的 mount api
  • cgroups: 将 tmpfs 挂载切换到新的 mount api
  • cgroups: 将 __cg_mount_direct() 切换为使用新的 mount api
  • mount_utils: 删除 mount_at()
  • mount_utils: 通过新的 mount api 添加对绑定挂载的支持
  • conf: 在 lxc_fill_autodev() 中使用 fd_bind_mount()
  • mount_utils: 删除 mount_from_at()
  • mount_utils: 检测新的 mount api 支持
  • 全树:在有意义的地方使用 new_mount_api()
  • mount_utils: 初始化 fd
  • attach: 切换到简单的 mount()
  • mount_utils: 删除 mount_filesystem()
  • mount_utils: 添加锁定标志帮助程序
  • conf: 将 setup_mount() 替换为 setup_mount_fstab()
  • conf: 删除 PATH_MAX 字节
  • conf: 不要传递 struct lxc_conf
  • conf: 删除 PATH_MAX 字节
  • conf: 删除 PAT_MAX 字节
  • network: 如果找不到 iw,则添加错误消息
  • conf: 重构 rootfs 固定
  • mount_utils: 将 OPEN_TREE_CLONE | OPEN_TREE_CLONE 替换为 OPEN_TREE_CLONE | OPEN_TREE_CLOEXEC
  • conf: 仅使用 fd 进行 tty 设置
  • tests: 向 lxc-test-unpriv 添加日志记录
  • conf: 删除 PATH_MAX 字节
  • conf: 删除 PATH_MAX 字节
  • conf: 修复内存泄漏
  • criu: 标记 criu 特定的 cgroups 方法
  • criu: 修改 exec_criu()
  • criu: 将日志记录移至 lxc_log_trace() 下
  • criu: 使用清理宏
  • criu: 在解析挂载数据时使用清理宏
  • criu: 重构 init pid 检索
  • criu: 警告没有控制器的 cgroup 层次结构
  • criu: lxc_init() 已经初始化了 cgroups
  • criu: 处理新的 cgroup 布局
  • cgroups: 使用括号使标志检查语义清晰
  • cgroups: 进入监控 cgroups 时不要过早返回
  • cgroups: 记录监控和临时进程进入
  • cgroups: 记录容器进程进入
  • string_utils: 添加 snprintf() 的包装器
  • cgroups: 转换为 strnprintf()
  • attach: 转换为 strnprintf()
  • commands_utils: 转换为 strnprintf()
  • conf: 转换为 strnprintf()
  • confile: 转换为 strnprintf()
  • confile_utils: 转换为 strnprintf()
  • criu: 转换为 strnprintf()
  • file_utils: 转换为 strnprintf()
  • log: 转换为 strnprintf()
  • lxccontainer: 转换为 strnprintf()
  • lxclock: 转换为 strnprintf()
  • monitor: 转换为 strnprintf()
  • mount_utils: 转换为 strnprintf()
  • network: 转换为 strnprintf()
  • rexec: 转换为 strnprintf()
  • seccomp: 转换为 strnprintf()
  • start: 转换为 strnprintf()
  • terminal: 转换为 strnprintf()
  • string_utils: 转换为 strnprintf()
  • utils: 转换为 strnprintf()
  • memory_utils: 添加 close_move_fd()
  • string_utils: 添加 proc_self_fd()
  • string_utils: 添加 fdstr()
  • file_utils: 添加 same_file_lax()
  • macro: 添加 LXC_PROC_SELF_FD_LEN
  • conf: 引入 lxc_bind_mount_console()
  • 全树:重构 mount api 支持检查
  • attach: 转换为 strequal()
  • cgroups: 转换为 strequal()
  • conf: 转换为 strequal()
  • confile: 转换为 strequal()
  • confile_utils: 转换为 strequal()
  • criu: 转换为 strequal()
  • initutils: 转换为 strequal()
  • log: 转换为 strequal()
  • lsm: 转换为 strequal()
  • lxccontainer: 转换为 strequal()
  • network: 转换为 strequal()
  • seccomp: 转换为 strequal()
  • namespace: 转换为 strequal()
  • start: 转换为 strequal()
  • state: 转换为 strequal()
  • string_utils: 转换为 strequal()
  • terminal: 转换为 strequal()
  • utils: 转换为 strequal()
  • attach: 转换为 strequal()
  • cgroups: 转换为 strequal()
  • conf: 转换为 strequal()
  • confile: 转换为 strequal()
  • confile_utils: 转换为 strequal()
  • file_utils: 转换为 strequal()
  • freezer: 转换为 strequal()
  • lsm: 转换为 strequal()
  • lxccontainer: 转换为 strequal()
  • seccomp: 转换为 strequal()
  • utils: 转换为 strequal()
  • start: 重构钩子的命名空间保留和路径创建
  • network: 将命名空间 fd 路径公开给网络钩子
  • start: 修复错误处理并改进注释
  • start: 改善命名空间保留
  • start: 改善注释
  • start: 改善 lxc_spawn() 中的注释
  • start: 修复有关时间命名空间保留的注释
  • cgroups: 将 cgns_supported() 移动到 cgroup 实用程序
  • conf: 不要将 conf 分别传递给 lxc_mount_auto_mounts()
  • cgroups: 将处理程序传递给 cgroup mount() 方法
  • cgroups: 验证我们是否确实在 cgroup 命名空间中运行
  • cgroups: 改善 cgroup 挂载
  • utils: 添加开发帮助程序以快速转储目录内容
  • cgroups: 说明标志参数传递给 cgroup mount 函数
  • cgroups: 不要去除 LXC_AUTO_CGROUP_FORCE
  • cgroups: 切换到基于标志的检查
  • conf: 删除错误的注释
  • cgroups: 将 cg_mount_in_cgroup_namespace() 替换为 cgroupfs_mount()
  • cgroups: 将 cg_mount_cgroup_full() 替换为 cgroupfs_bind_mount()
  • cgroups: 修复旧挂载路径中的标志检查
  • cgroups: 当支持并使用 cgroup 命名空间时,去除 LXC_AUTO_CGROUP_MIXED 和 LXC_AUTO_CGROUP_FULL_MIXED
  • cgroups: 将 __cg_mount_direct() 替换为 __cgroupfs_mount()
  • cgroups: 记录早期返回
  • cgroupfs: 重构 cgroup2 挂载
  • confile: 对大多数 cgroup 布局修改器使用 set_config_path_item()
  • confile_utils: 规范化配置项中的路径
  • confile: 禁止对修改 cgroup 布局的配置项向上遍历
  • confile: 禁止修改 cgroup 布局的配置项中的绝对路径
  • cgroups: 将 cg_init() 替换为 __cgroup_init()
  • cgroups: 存储宿主的 cgroupfs 文件描述符
  • cgroups: 更好地记录存储的文件描述符
  • cgroups: 重构 add_hierarchy()
  • cgroups: 重构基本 cgroup 解析
  • cgroups: 未找到 cgroup 层次结构时失败
  • cgroups: 存储控制器挂载点和基本 cgroup 路径的 fd
  • cgroups: 仅基于 fd 的 cgroup 创建
  • cgroups: 重构旧的 cpuset 处理
  • cgroups: 改善日志记录
  • string_utils: 在 must_make_path() 中处理空字符串
  • cgroups: 允许 "" 基本 cgroup 路径
  • cgroups: 修复 fd 泄漏
  • cgroups: 重构添加层次结构的方式
  • namespace: 添加缺少的 \0 终止符
  • cgroups: 防止双重关闭
  • file_utils: 将 dup_cloexec() 移动到头文件
  • cgroups: 仅基于 fd 的 cgroup 树修剪
  • cgroups: 删除过时的 cgroup_tree 处理
  • cgroups: 将 openat() 替换为 open_at()
  • cgroups: 检查正确的变量
  • cgroups: 重构统一控制器委托
  • start: 委托然后移动到目标 cgroup
  • cgroups: 重新排序函数参数
  • cgroups: 删除过时的检查
  • cgroups: 重构创建失败时的 cgroup 树删除
  • cgroups: 确保在创建失败时正确修剪叶子 cgroup
  • cgroups: 重构 cgroup 树创建
  • cgroups: 创建有效负载时更严格
  • cgroups: 不要依赖绝对路径
  • cgroups: 不要将 pivot cgroup 移动到监控器的 cgroup 下
  • cgroups: 确保我们不删除我们未创建的 cgroups
  • cgroups: 确保我们修剪 limit 目录
  • cgroups: 简化挂载打开
  • cgroups: 防止 NULL 指针取消引用
  • cgroups: 记录中间清理
  • cgroups: 区分基于 tmpfs 和统一的 cgroup 布局的文件描述符
  • cgroups: 确保在旧代码路径中初始化 cgroup_root
  • cgroups: 防止 cgroup 挂载类型覆盖
  • cgroups: 验证是否只设置了一种 cgroup 挂载类型
  • conf: 使用括号阐明检查语义
  • cgroups: 现在我们切换了所有代码路径,使用非基于标志的检查
  • cgroups: 如果缺少,则创建控制器目录
  • cgroups: 使我们从标志到类型的过渡非常明显
  • cgroups: 不要覆盖类型
  • cgroups: 修复错误值
  • utils: 修复 print_r() 调试帮助程序
  • cgroups: 释放正确的路径
  • cgroups: 删除 monitor_full_path
  • bpf: 直接使用 cgroup fd 而不是路径
  • conf: 引入 lxc_bpf_devices_rule_t 类型
  • bpf: 使用 return 宏
  • bpf: 对齐结构初始化
  • bpf: 启用帮助程序以允许调用者替换现有的 bpf 程序
  • cgroups: 使设备 cgroups 语义更清晰
  • cgroups: 改善 bpf 设备程序处理
  • bpf: 添加帮助程序以更好地管理 bpf 设备程序
  • cgroups: 改善 bpf 设备程序管理
  • commands: 改善 bpf 设备程序管理
  • commands: 在更新时替换 bpf 程序
  • macro: 添加交换帮助程序
  • bpf: 使用 __u32 而不是 uint32_t
  • bpf: 不要关闭无效 fd,只需交换
  • commands: 重构 bpf 设备 BPF_F_REPLACE 代码路径
  • bpf: 重构 bpf_program_cgroup_detach()
  • bpf: 处理缺少的定义
  • bpf: 供应商 bpf 头文件
  • cgroups: 删除编译时 bpf 支持检测

  • bpf:添加并使用bpf_cgroup_devices_attach() 辅助函数
  • bpf:让 bpf_list_add_device() 直接获取设备列表
  • bpf:修复 bpf_program_cgroup_attach() 中的返回值
  • 编译器:修复 fallthrough 属性
  • bpf:重构活动设备 cgroup 更新
  • lxccontainer:修复重启日志记录
  • memory_utils:添加 close_equal() 和 free_equal()
  • cgroups:使用 close_equal() 和 free_equal()
  • bpf:防止双重关闭
  • bpf:将 bpf_program_cgroup_attach() 设置为静态函数
  • bpf:简化 bpf(设备)程序释放
  • conf:为控制台使用更合理的模式
  • start:修复非守护进程和应用程序容器
  • conf:不要记录垃圾数据
  • apparmor:清理 apparmor_process_label_get
  • apparmor:优先使用 /proc/.../attr/apparmor/current 而不是旧接口
  • file_utils:允许 fd_to_buf() 真正失败
  • lsm:调整 apparmor_process_label_get()
  • cgroups:确保不返回垃圾数据
  • cgroups:使设备 cgroup 处理更智能和更简单
  • commands:仅在真正需要时更新 bpf 设备程序
  • bpf:注释 bpf_cgroup_devices_update()
  • bpf:修复错别字
  • conf:改进 lxc_clear_cgroups()
  • conf:公开 lxc_clear_cgroup2_devices()
  • cgroups:调整 bpf_device_cgroup_prepare()
  • bpf:更新设备 cgroup 语义
  • doc:在 lxc.cgroup{2} 的键解释中添加缺失的“. [控制器文件]”后缀
  • doc:解释基于 eBPF 的设备控制器语义
  • doc:调整 cgroup 标题
  • string_utils:移动 lxc_iterate_parts()
  • cgroups:修复 prune_init_scope()
  • cgroups:避免为单次访问添加额外变量
  • cgroups:s/must_copy_string()/strdup()/g
  • cgroups:在 __cgroup_init() 中调整 lxc.cgroup.use 处理
  • cgroups:调整返回值
  • cgroups:在纯统一 cgroup 布局上简化当前 cgroup 的检索
  • cgroups:s/basecginfo/cgroup_info/g
  • 编译器:添加 likely() 和 unlikely() 支持
  • 宏:添加指针错误编码支持
  • memory_utils:适应新的指针错误宏
  • cgroups:拆分统一 cgroup 辅助函数
  • cgroups:重构 cgroup 初始化
  • cgroups:简化字符串列表处理
  • cgroups:将委托检查拆分为单独的辅助函数
  • cgroups:s/add_hierarchy()/cgroup_hierarchy_add()/g
  • cgroups:删除未使用的辅助函数
  • cgroups:引入 cgroup 层次结构类型
  • cgroups:简化并在不了解 cgroup 命名空间的内核上修复挂载
  • cgroups:重命名 cgroupfs 挂载文件描述符
  • cgroups:s/container_base_path/at_base/g
  • cgroups:s/mountpoint/at_mnt/g
  • cgroups:s/cgfd_con/dfd_con/g
  • cgroups:s/cgfd_mon/dfd_mon/g
  • cgroups:s/cgfd_limit/dfd_lim/g
  • cgroups:s/container_full_path/path_con/g
  • cgroups:s/container_limit_path/path_lim/g
  • cgroups:将 cgroup2 参数移动到子结构中
  • cgroups:s/cgroup2_chown/delegate/g
  • cgroups:改进实用程序控制器的处理
  • file_utils:调整 lxc_write_openat()
  • cgroups:修复 cg_legacy_freeze() 的返回类型
  • cgroups:处理 lxc.cgroup.use 全局参数
  • memory_utils:修复 close_equal()
  • cgroups:跳过并警告无效的文件描述符
  • cgroups:开始存储所有文件描述符
  • cgroups:关闭 dfd_mon,但保持 dfd_con 和 dfd_lim 对所有 cgroup 层次结构打开
  • commands:显式编号枚举
  • commands:调整 validate_string_request()
  • af_unix:改进 SCM_RIGHTS 文件描述符检索
  • cgroups:添加 cgroup_fds() 辅助函数
  • state:*绝不*从 lxc_state2str() 返回 NULL
  • commands:在命令处理过程中更明确
  • commands:引入 lxc_cmd_rsp_send_reap()
  • commands:引入 rsp_one_fd()
  • commands:引入 rsp_many_fds()
  • commands:添加 LXC_CMD_GET_CGROUP_FD
  • cgroups:允许批量检索 cgroup 文件描述符
  • 宏:添加 min() 宏
  • utils:添加 copy_struct_from_client()
  • log:添加 syswarn_set()
  • utils:添加 copy_struct_to_client()
  • commands:引入 LXC_CMD_GET_CGROUP_CTX
  • cgroups:引入仅限文件描述符的 cgroup 附加
  • commands:发送 ENOSYS 响应
  • commands:优雅地处理旧客户端
  • commands:lxc_cmd_add_state_client_callback()
  • attach:修复不支持的命名空间
  • af_unix:添加关于强制转换的注释
  • attach:删除额外的换行符
  • commands:优雅地处理旧客户端
  • commands:验证是否发送了预期的文件描述符
  • attach:修复命名空间保留
  • terminal:降低愚蠢的日志记录级别
  • attach:使文件描述符发送更统一
  • attach:处理新旧客户端
  • commands:处理 LXC_CMD_GET_CGROUP_CTX 的旧客户端
  • commands:仅取消引用一次
  • af_unix:防止越界写入
  • cgroups:修复错误检查
  • commands:删除对 access 属性的错误使用
  • cgroups:在控制器列表创建期间修复大脑错误
  • attach:对文件描述符保持偏执
  • cgroups:简单的变量重新排序
  • error_utils:将错误辅助函数移动到单独的头文件中
  • commands:调整返回值
  • error_utils:复制 Lennart 的 IN_SET()
  • cgroups:使用 ERRNO_IS_NOT_SUPPORTED()
  • cgroups:优雅地处理回退
  • commands:修复 lxc_cmd_get_cgroup_ctx() 的对齐方式
  • commands:简化 lxc_cmd_get_cgroup_ctx()
  • commands:s/*LIMITING/*LIMIT/g 和 s/*limiting/*limit/g
  • commands:添加 LXC_CMD_GET_CGROUP_FD 和 LXC_CMD_GET_LIMIT_CGROUP_FD
  • cgroups:s/cgroup_layout/layout/g
  • commands:为 lxc_cmd_get_cgroup_ctx_callback() 将 rsp.ret 设置为 0
  • file_utils:实际打开文件以进行读取
  • commands:扩展 rsp_one_fd() 以处理其他数据
  • commands:添加 LXC_CMD_GET_CGROUP_FD 和 LXC_CMD_GET_LIMIT_CGROUP_FD
  • commands:s/LXC_CMD_CONSOLE/LXC_CMD_GET_TTY_FD/g
  • commands:注释数组参数
  • commands:确保始终传递非 NULL 和 MAX_STATE
  • commands:在 lxc_cmd() 中使用 IN_SET()
  • commands:切换到 bool
  • commands:s/lxc_cmd_init()/lxc_server_init()/g
  • commands:添加 lxc_cmd_init() 和 lxc_cmd_data()
  • commands:将 lxc_try_cmd() 移植到新的辅助函数
  • commands:将 lxc_cmd_get_init_pid() 移植到新的辅助函数
  • commands:将 lxc_cmd_get_init_pidfd() 移植到新的辅助函数
  • commands:将 lxc_cmd_get_devpts_fd() 移植到新的辅助函数
  • commands:将 lxc_cmd_get_seccomp_notify_fd() 移植到新的辅助函数
  • commands:将 lxc_cmd_get_cgroup_ctx() 移植到新的辅助函数
  • commands:将 lxc_cmd_get_clone_flags() 移植到新的辅助函数
  • commands:将 lxc_cmd_get_cgroup_path_do() 移植到新的辅助函数
  • commands:将 lxc_cmd_get_config_item() 移植到新的辅助函数
  • commands:将 lxc_cmd_get_state() 移植到新的辅助函数
  • commands:将 lxc_cmd_stop() 移植到新的辅助函数
  • commands:将 lxc_get_tty_fd() 移植到新的辅助函数
  • commands:将 lxc_cmd_get_name() 移植到新的辅助函数
  • commands:将 lxc_cmd_get_lxcpath() 移植到新的辅助函数
  • commands:将 lxc_cmd_add_state_client() 移植到新的辅助函数
  • commands:将 lxc_cmd_add_bpf_device_cgropu() 移植到新的辅助函数
  • commands:将 lxc_cmd_console_log() 移植到新的辅助函数
  • commands:将 lxc_cmd_serve_state_clients() 移植到新的辅助函数
  • commands:将 lxc_cmd_seccomp_notify_add_listener() 移植到新的辅助函数
  • commands:将 lxc_cmd_freeze() 移植到新的辅助函数
  • commands:将 lxc_cmd_unfreeze() 移植到新的辅助函数
  • commands:将 lxc_cmd_get_cgroup_fd() 移植到新的辅助函数
  • commands:将 lxc_cmd_get_limit_cgroup_fd() 移植到新的辅助函数
  • commands:将 lxc_cmd_get_cgroup2_fd() 移植到新的辅助函数
  • commands:将 lxc_cmd_get_limit_cgroup2_fd() 移植到新的辅助函数
  • commands:让 lxc_cmd() 返回 ssize_t 以指示它不仅在成功时返回 0
  • 宏:添加 hweight*() 辅助函数
  • af_unix:允许调用方和被调用方协商期望和现实
  • commands:重构 lxc_cmd_rsp_recv() 以使其更清晰
  • commands:改进 lxc_cmd_get_tty_fd()
  • tests:在 lxc-test-lxc-attach 中添加日志记录
  • log:添加更多日志和返回辅助函数
  • commands:使用调试日志记录
  • commands:将错误命名的函数移植到通用风格
  • commands:清理错误处理和变量命名
  • commands:rsp_one_fd_{reap,keep}() 和 rsp_many_fds_reap()
  • commands:修复缩进
  • commands:统一文件描述符检索命令
  • 全树:s/syerrno_set()/syserror_set()/g
  • 全树:开始替换 syserrno() 的实例为 syserror()
  • 全树:替换 syserrno() 的剩余实例为 syserror_ret()
  • log:标记要使用的日志记录辅助函数
  • 全树:使用新的日志记录辅助函数
  • 全树:替换旧的 systrace 日志记录辅助函数
  • 全树:替换旧样式的 sysinfo 日志记录返回辅助函数
  • network:使回调命名一致且易于理解
  • network:修复 lxc_create_network_unpriv_exec() 中的编码风格
  • confile_utils:确保内存已清零
  • network:修复语法错误
  • network:添加 lxc_network_info 结构体
  • network:处理重命名网络设备时的名称冲突
  • network:对网络使用两遍遍历
  • af_unix:验证所有参数
  • start:修复空白字符错误
  • cgroup:如果不存在可写层次结构,则不要失败
  • attach_options:显式编号枚举
  • attach_options:修复 LXC_ATTACH_NO_NEW_PRIVS 中的空白字符错误
  • attach_options:为所有枚举添加显式定义
  • start:在 arm64 上处理 CLONE_PIDFD
  • conf:调整关于瞬态 procfs 挂载的注释
  • conf:简化依赖挂载逻辑
  • conf:确保 procfs 和 sysfs 已卸载
  • conf:清理自动挂载
  • conf:简化 lxc_mount_auto_mounts() 中的日志记录
  • conf:在 lxc_mount_auto_mounts() 中添加缺失的换行符
  • cgroups:忽略未使用的控制器
  • 宏:定义 __aligned_u64 以处理不支持此功能的内核
  • 切换到 Github Actions
  • github:修复 Coverity 的无效语法
  • rexec:不要关闭 stderr
  • string_utils:在 strchrnul() 不可用时提供一个版本
  • include:修复错别字
  • configure:修复 strchrnul 条件编译
  • strchrnul:忽略增加的所需对齐警告
  • strchrnul:修复复制粘贴造成的错误
  • confile_utils:不要释放两次 netdev
  • conf:修复内存泄漏
  • ci:启用 CIFuzz
  • confile:修复 set_config_sysctl()
  • conf:清除后重新初始化 sysctl 列表
  • confile_utils:从列表中删除 netdev
  • list:添加 lxc_list_new() 辅助函数
  • confile:在所有地方使用 lxc_list_new()
  • conf:在所有地方使用 lxc_list_new()
  • oss-fuzz:使其能够在没有 Docker 的情况下构建模糊测试程序
  • network:在将物理接口返回给主机时处理名称冲突
  • fuzz:在 /tmp 中创建临时文件
  • README:添加 OSS-Fuzz/CIFuzz 徽章
  • fuzz:生成所有配置键并将它们添加到种子语料库
  • log:不要为模糊测试构建创建日志文件
  • log:不要为模糊测试构建创建目录
  • log:处理空日志名称
  • confile:在配置辅助函数中更严格
  • confile:覆盖 lxc.rootfs.options 时不要泄漏内存
  • confile_utils:修复实时信号解析
  • conf:防止 lxc_clear_limits() 中的 UAF
  • confile_utils:改进网络解析器
  • string_utils:修复 parse_byte_size_string()
  • log:避免相对日志路径的回归
  • conf:不要泄漏列表
  • confile:修复设置 prlimits
  • confile:修复 set_config_net_veth_vlan_tagged_id() 中的返回值
  • string_utils:在 lxc_safe_int64_residual() 中始终用 memset 清零 buf
  • conf:重新初始化列表
  • confile_utils:释放网络列表项
  • conf:编码风格清理
  • confile:使 get_network_config_ops() 中的字符串计算更清晰
  • confile:使用正确的检查来判断网络列表是否过大
  • confile:改进网络验证
  • confile:修复 set_config_net_hwaddr 中的内存泄漏
  • confile:解析网络时防止递归
  • ci:在 CIFuzz 上启用 ASan
  • confile_utils:在 lxc_remove_nic_by_idx() 期间释放列表
  • confile:添加缺失的前缀验证
  • confile:在设置多个 shmount 时不要泄漏内存
  • confile_utils:修复带符号整数溢出
  • oss-fuzz.sh:考虑 SANITIZER

  • cifuzz:启用UBsan
  • string_utils:在parse_byte_size_string()中正确处理溢出
  • cifuzz:启用MSan
  • string_utils:解决一个MSan误报
  • confile:在set_config_net_ipv6_gateway()中安全地清理先前值
  • confile:在set_config_net_ipv4_gateway()中安全地清理先前值
  • confile:更积极地验证密钥
  • confile:在网络类型更改时清除netdev
  • confile:清理set_config_net_hwaddr()
  • confile:清理set_config_net_mtu()
  • confile:清理set_config_net_script_up()
  • confile:清理set_config_net_script_down()
  • 测试:修复parse_config_file()中的两个误报
  • 测试:为垃圾配置键添加另一个测试
  • conf:修复线程本地支持检测
  • lxccontainer:确保传递给bsearch的第二个参数永远不为NULL
  • oss-fuzz.sh:将“lxc.net”键也放入种子语料库中
  • 编译器:修复线程本地检测
  • autotools:删除--enable-{asan,ubsan},改用--enable-sanitizers
  • README:删除Travis并添加Github Actions徽章
  • 文档:记录了网络类型字段必须位于网络设备上其他选项之前的说明
  • ci:停止传递--enable-ubsan
  • oss-fuzz.sh:去除sed“no-undefined”的临时解决方案
  • ci:也使用ASan/UBsan构建
  • ci:启用PAM
  • 构建系统:使其与ASan/UBsan/MSan兼容
  • oss-fuzz:尽早拒绝巨大的配置
  • confile:不要两次跳转到全局表
  • string_utils:切换到path_simplify()
  • confile:在set_config_net_ipv4_address()中限制为最后一位
  • oss-fuzz:模糊测试lxc_config_define_add和lxc_config_define_load
  • confile:修复lxc_config_define_add中的内存泄漏
  • cifuzz:模糊测试时间更长
  • lxc_user_nic:清理append_alloted()
  • lxc_user_nic:清理get_alloted()
  • string_utils:移动到lxc-copy()源代码
  • string_utils:确保在返回时设置errno
  • string_utils:为lxc_safe_int64_residual()使用restrict
  • confile:简化get_network_config_ops()
  • confile:修复lxc.namespace.share.[identifier]
  • confile:当LXC在没有selinux支持的情况下构建时发出警告
  • confile:当LXC在没有AppArmor支持的情况下构建时发出警告
  • conf:修复/dev在LXC控制范围之外的设置
  • 日志:确保我们始终返回负的errno
  • templates/*.in:修复带空格的PATH处理
  • 宏:确保ret_errno()始终返回负数
  • 日志:添加error_ret()
  • confile:强制执行最大子键长度
  • github:尝试修复操作命名
  • confile:使lxc_get_config()和lxc_get_config_net()始终返回非NULL
  • 测试:修复cgpath中的内存泄漏
  • 测试:修复lxcpath中的内存泄漏
  • 测试:修复cgpath中的内存泄漏
  • 测试:修复attach中的内存泄漏
  • 测试:在lxc-test-checkpoint-restore中切换到“busybox”模板
  • 测试:停止在share_ns中截断右方括号
  • 测试:将ASAN/UBSAN选项传递给几个测试
  • conf:简化idmaptool_on_path_and_privileged()
  • conf:当idmaptools缺少所有权限时,不要报告成功
  • attach:在通过pidfd计算命名空间时,不要过早返回
  • 回退“rexec:如果可能,将所有fd标记为close-on-exec”
  • apparmor:在调用strcspn之前将字节转换为以null结尾的字符串
  • ci:尝试在ASan/UBsan下运行测试
  • ci:静态链接lib[au]san与init.lxc.static
  • ci:从lxc-ci存储库切换到lxc-exercise
  • ci:解决https://github.com/lxc/lxc/issues/3798
  • ci:解决https://github.com/lxc/lxc/issues/3788
  • ci:防止lxc-exercise无限期运行
  • ci:解决https://github.com/lxc/lxc/issues/3796
  • ci:启用strict_string_checks
  • ci:使用-Wall -Werror构建
  • 回退“ci:解决https://github.com/lxc/lxc/issues/3796
  • 测试:释放lxc_cmd_rsp_recv填充的缓冲区
  • ci:使用--enable-sanitizers而不是CFLAGS
  • autoconf:将AC_LANG_SOURCE添加到CC_CHECK_LDFLAGS
  • 构建系统:停止使用sanitizers构建init.lxc.static
  • ci:去除-static-libasan的临时解决方案
  • autoconf:停止通过AM_LDFLAGS传递-fsanitize=address
  • lxccontainer:修复容器创建错误路径
  • seccomp:初始化和销毁notifier.cookie
  • error_utils:添加缺失的macro.h包含
  • 配置:修复sanitizer编译
  • process_utils:返回后释放栈
  • 命令:不要不必要地分配
  • conf:重新设计LXC特定的挂载选项解析
  • conf:添加对idmapped挂载的第一个、简单的支持
  • confile:解析idmap=根文件系统的挂载选项
  • mount_utils:添加对mount_setattr()系统调用的支持
  • 存储:在lxc_storage中保留对lxc_rootfs的引用
  • mount_utils:添加帮助程序以确定新的挂载api是否支持绑定挂载
  • conf:支持idmapping目录
  • mount_utils:添加两个分离的挂载帮助程序
  • 启动:记录idmapped挂载
  • conf:验证根文件系统是否支持idmapped挂载
  • attach:在初始化期间将pid与fd视觉上分离
  • attach:使用正确的lxc_namespace_t类型
  • apparmor:处理on-exec
  • conf:调整parse_lxc_mntopts()
  • conf:暂时不允许idmapped lxc.mount.{entry,fstab}
  • strchrnul:包含头文件
  • conf:为不支持它的平台包含strchrnul
  • Makefile:修复strchrnul()的包含
  • getsubopt:使用正确的包含
  • conf:更好的命名
  • conf:在parse_lxc_mntopts()中不要越界目标缓冲区
  • dir:修复根文件系统挂载
  • 配置:修复函数检测
  • conf:将lxc_storage存储到lxc_rootfs中并绑定到其生命周期
  • conf:将所有挂载选项移动到struct lxc_mount_options中
  • conf:s/lxc_rootfs_prepare/lxc_rootfs_init/g
  • conf:改进idmapped挂载支持
  • 构建系统:添加--enable-fuzzers
  • ci:切换到--enable-fuzzers
  • 日志:如果在模糊测试目标之外调用,则在“fuzzing”模式下创建日志文件
  • 测试:与其他测试一起运行模糊测试器
  • 构建系统:在构建模糊测试器时关闭lto=thin
  • dir:使用mnt_opts->data而不是mntdata
  • storage/dir:bdev->dest不能为空
  • storage/dir:使用清晰的错误消息
  • storage/dir:稍后检索正确的源路径
  • storage/dir:使用“source”和“target”作为术语
  • storage/dir:source不能为空
  • storage/dir:删除错误处理
  • storage/dir:清理挂载代码
  • api-extensions:为idmapped_mounts添加条目
  • 存储:修复dup_cloexec()调用
  • oss-fuzz:在OSS-Fuzz上始终关闭日志记录
  • cgroups:修复回退attach代码路径
  • conf:修复控制台chmod错误日志消息
  • lxc_monitord:删除monitord日志
  • github:在sanitizer测试中运行apt-get update
  • github:删除dh-*包
  • github:也将j选项传递给make
  • string_utils:解决GCC-11误报
  • confile:使per_name结构体为静态
  • 命令:在接收文件描述符时记录调试级别而不是信息级别
  • 系统调用:如果未定义,则包装personality系统调用
  • 全树:使personality代码路径无条件
  • conf:调整setup_personality()
  • conf:重新设计lxc_config_parse_arch()
  • attach_options:修复头文件
  • conf:添加personality_t
  • attach:引入显式personality宏
  • oss-fuzz:添加基本的cgroup_init()/cgroup_exit()模糊测试
  • conf:处理具有CAP_SETFCAP的内核
  • 文档:记录lxc.rootfs.options的新idmap=选项
  • 跳过ZFS根目录的根文件系统固定。
  • 重排ZFS检查以遵循overlayfs返回的样式。
  • confile:重新添加aarch64架构
  • 测试:添加对支持的架构的测试
  • 测试:为make dist修复lxc-test-arch-parse
  • cgroups:在初始化错误时清理cgroup_ops
  • conf:在设置/dev时允许xdev
  • conf:不要卸载procfs和sysfs
  • conf:调整根文件系统处理
  • 启动:将idmapped挂载设置移动到后面
  • 全树:s/parse_mntopts/parse_mntopts_legacy/
  • conf:重命名结构体mount_opt标志成员s/flag/legacy_flag/
  • 跳过只读文件系统的根文件系统固定。
  • conf:支持idmapped lxc.mount.entry条目
  • conf:在设置idmapped挂载时添加顺序
  • confile:释放挂载数据
  • conf:修复挂载选项解析
  • cgroups:重新设计检查旧版层次结构是否可写
  • conf:将与子进程的文件描述符同步移动到单个函数中
  • conf:将与父进程的文件描述符同步移动到单个函数中
  • conf:在位字段中使用显式符号
  • 启动:使用barrier代替wake/wait对
  • 启动:重新排序START_SYNC_POST_CONFIGURE
  • 启动:简化启动同步
  • README:更新IRC
  • 网络:请修复损坏的编译器
  • 更新lxc-net以支持nftables
  • lxc:将lpthread添加到lxc.pc
  • lsm/apparmor:当我们无法连接AppArmor配置文件时,实际上报告错误
  • tools/lxc_autostart:修复失败计数
  • api_extensions:引入idmapped_mounts_v2 api扩展
  • 字符串实用程序:确保不要返回未初始化的内存。
  • 添加对LISTEN_FDS环境变量的支持。
  • common.conf:替换有问题的术语
  • seccomp:替换有问题的术语
  • 全树:删除有问题的术语
  • 全树:替换有问题的术语
  • 全树:替换有问题的术语
  • 全树:替换有问题的术语
  • cgroups:对共同挂载的v1控制器使用稳定的排序
  • 当一个项目添加到数组中时,数组会被重新分配(大小+1),并且该项目会被复制(strdup())到数组中。因此,当一个项目从数组中删除时,应释放为该项目分配的内存,后续项目应左移,并且数组再次重新分配(大小-1)。
  • 调整remove_from_array()中的数组大小并修复崩溃
  • lxc-download:切换GPG服务器
  • cgroups:验证层次结构非空
  • 当一个项目添加到数组中时,数组会被重新分配(大小+1),并且该项目会被复制(strdup())到数组中。因此,当一个项目从数组中删除时,应释放为该项目分配的内存,后续项目应左移,并且数组再次重新分配(大小-1)。
  • 执行:不要执行init,调用它
  • initutils:在lxc_container_init()中使用vfork()
  • 网络:在发送时记录网络设备
  • 执行:确保通知父进程子进程执行并关闭所有不需要的fd
  • initutils:在错误路径中关闭dirfd
  • conf:使用可读写的/sys/devices/virtual/net改进只读/sys
  • 测试:添加对可读写的/sys/devices/virtual/net使用只读/sys的测试
  • cgroups:处理奇特的cgroup布局
  • 终端:确保将换行符转换为换行符+回车符以用于终端输出
  • cmd/lxc-checkconfig:列出cgroup命名空间并重命名令人困惑的ns_cgroup条目
  • 文档:将基于eBPF的设备控制器语义添加到日语手册页
  • 文档:添加网络类型字段的描述
  • 文档:将新的idmap=选项添加到日语lxc.container.conf(5)
  • 文档:修复英语lxc.container.conf(5)中的错别字
  • conf:userns.conf:包含userns.conf.d
  • confile:允许包含不存在的目录
  • lxc_unshare:使挂载表私有
  • lxc_unshare:修复网络设备处理
  • 修复lxc-autostart文档中的错别字。
  • 修复lxc-{attach,execute}文档中的错别字。
  • 创建规则以添加/删除bash补全的符号链接。
  • 改进bash补全。
  • file_utils:回退到openat()时显示ENOENT
  • doc/common_options:添加trace和alert日志级别
  • initutils:包含pthread.h
  • 启动:修复日志消息
  • 同步:修复日志消息
  • 终端:记录TIOCGPTPEER失败的警报级别较低
  • af_unix:在没有要发送的fd时报告错误
  • 终端:修复错误处理
  • cgroups:填充设备cgroup的层次结构
  • cgroups:从cgroup_tree_create中删除不必要的变量
  • lxc_setup_ttys:处理没有底层设备的现有ttyN文件
  • bpf:bpf_devices_cgroup_supported()应检查bpf()是否可用
  • conf:对devpts设置使用新的挂载api
  • 终端: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()
  • 终端:不要对本地终端分配使用ttyname_r()
  • conf:合并devpts设置并在pivot root之前移动
  • string_utils:将__s64转换为long long signed int

  • 终端: 将 lxc_devpts_terminal() 助手函数拆分出来
  • 配置: 将 lxc_create_ttys() 移到 pivot root 之前
  • 配置: 将 pty_nr 存储到 struct lxc_terminal 中
  • 挂载实用程序: 添加 mount_fd() 函数
  • 配置: 挂载 ttys 时使用 mount_fd() 助手函数
  • 配置: 在 lxc_setup_dev_console() 中使用 mount_fd() 函数
  • 配置: 在控制台挂载期间使用 mount_fd() 函数
  • 文件实用程序: 添加 open_at_same() 函数
  • 配置: 重构控制台设置
  • 终端: 从 lxc_devpts_terminal() 中移除未使用的参数
  • 启动: 允许容器使用原生控制台
  • 配置: 处理没有 TIOCGPTPEER 的内核
  • 终端: 将原生终端分配从错误日志移到信息日志
  • 终端: 在 TIOCGPTPEER 期间遇到未知错误时失败
  • 挂载实用程序: 引入 mount_at() 函数
  • 配置: 修复 lxc_idmapped_mounts_child() 中的日志记录
  • 配置: 重构 lxc_recv_ttys_from_child() 函数
  • 配置: 记录创建 tty 挂载点的失败
  • 配置: 让 parse_vfs_attr() 也处理旧版挂载标志
  • 挂载实用程序: 将一些挂载助手函数设为静态内联函数
  • 配置: 使用新的挂载 API 时允许为根文件系统设置挂载选项
  • 测试: 添加根文件系统挂载选项的测试
  • 网络: 修复具有空网络命名空间的容器
  • LSM/AppArmor: 记录写入 AppArmor 配置文件的失败
  • LSM/AppArmor: 使用清理宏
  • 文档/API 扩展: 语法修正
  • 控制组: 记录警告级别而不是错误级别
  • 配置: 在 WARN 级别记录会话密钥环失败
  • 全项目: 将 lxc_epoll_descr 替换为 lxc_async_descr
  • 文档: 添加关于指定手动 IPv4 广播地址的功能说明
  • 主循环: 添加 io_uring 支持
  • lxc-download: 将 LXC 版本/兼容性级别添加到用户代理
  • 主循环: 将 sys/poll 替换为 poll
  • 主循环: 细微修正
  • 主循环: 移除 CANCEL_RAISE 标志
  • 主循环: 修复 io_uring 清理处理
  • 内存实用程序: 将清理处理程序设为未使用
  • 主循环: 将变量移动到更紧凑的范围
  • 主循环: 将 handler_name 替换为 name
  • 主循环: 添加关于多发和单发清理的注释
  • 主循环: 暂时禁用 IORING_SETUP_SQPOLL
  • 控制组: 修复 CPU 位掩码
  • 控制组: 将 calloc 替换为 zalloc
  • 回退 "控制组: 修复 CPU 位掩码"
  • 控制组: 修复 cpuset1_initialize() 中的注释
  • 控制组: 修复 cpumask 处理
  • 控制组: 在 cpuset1_cpus_initialize() 中使用语义上清晰的检查
  • 控制组: 简化离线和隔离 CPU 处理
  • 测试: 将 lxc-test-automount/createconfig/snapdeps 设置为可执行
  • 文件实用程序: 添加 same_device() 助手函数
  • 终端: 当从我们没有自己挂载的 devpts 实例分配 pty 设备时,使用 /dev/ptmx
  • BusyBox: 挂载 sys:ro
  • BusyBox: 简化
  • 配置: 即使容器没有请求单独的 devpts 实例,也允许分配 tty
  • 测试: 修复 sys_mixed 中的顺序
  • 测试: 在 lxc-test-apparmor-generated 中使用 BusyBox
  • 测试: 在 lxc-test-apparmor-mount 中使用 BusyBox
  • 测试: 在 lxc-test-autostart 中使用 BusyBox
  • 测试: 在 lxc-test-no-new-privs 中使用 BusyBox
  • 测试: 在 lxc-test-unpriv 中使用 BusyBox
  • 测试: 在 lxc-test-usernic.in 中使用 BusyBox
  • Seccomp: 修复 !HAVE_DECL_SECCOMP_NOTIFY_FD 时的复杂情况
  • 配置: 仅在使用 libseccomp 编译时启用 seccomp 配置文件
  • 配置文件: 在所有地方返回负的 errno
  • 附加: 允许在没有新的 mnt 命名空间的情况下进行 LSM 附加
  • 工具: 修复 lxc-attach 中的变量声明
  • 工具: 对齐结构体初始化
  • 附加选项: 将 LXC_ATTACH_LSM_LABEL 添加到 LXC_ATTACH_LSM 标志
  • 配置文件: 重构 lxc_fill_elevated_privileges() 函数
  • 工具: 修复 lxc-attach 中的提升权限处理程序
  • 列表: 添加新的基于内核的列表实现
  • 全项目: 将网络处理移植到新的列表类型
  • 控制组: 将 BPF 设备移植到新的列表类型
  • 主循环: 将处理程序移植到新的列表类型
  • 配置: 将 state_clients 移植到新的列表类型
  • 配置: 将 rlimits 移植到新的列表类型
  • 配置: 将 sysctls 移植到新的列表类型
  • 配置: 将 procs 移植到新的列表类型
  • 配置: 将控制组设置移植到新的列表类型
  • 配置: 将 id_map 移植到新的列表类型
  • 配置: 移除未使用的 mountflags 成员
  • 根文件系统: 移除 "options" 成员
  • 配置: 重构递归挂载选项处理
  • 配置: 正确支持递归传播选项
  • 配置: 即使对于旧版 mount(),也切换到 parse_mount_attrs()
  • 配置: 移除未使用的变量
  • 配置: 将环境移植到新的列表类型
  • 终端: 移除未使用的结构体成员
  • 控制组: 移除不需要的前向声明
  • 配置: 简化并将功能移植到新的列表类型
  • 网络: 将 IPv4 移植到新的列表类型
  • 网络: 将 IPv6 地址移植到新的列表类型
  • 全项目: 将 ipv{4,6}_list 替换为 ipv{4,6}_addresses
  • lxccontainer: 对齐初始化
  • 控制组: 修复控制组设置排序
  • 网络: 将 IPv4 路由移植到新的列表类型
  • 网络: 将 IPv6 路由移植到新的列表类型
  • 控制组: 修复 BPF 设备列表
  • 配置: 将挂载点移植到新的列表类型
  • 配置: 将 AppArmor 移植到新的列表类型
  • 配置: 将钩子移植到新的列表类型
  • 配置: 将组移植到新的列表类型
  • lxccontainer: 改善 add_to_array() 函数
  • lxccontainer: 改善 add_to_clist() 函数
  • lxccontainer: 微调一些数组处理助手函数
  • 附加: 修复 -c 命令
  • 全项目: 修复 list_entry() 函数
  • lxc-usernsexec: 小幅调整
  • lxccontainer: 在 list_all_containers() 中使用 free_disarm() 函数
  • lxccontainer: 移除无用的 {}
  • lxccontainer: 在无法加载容器时失败
  • lxccontainer: 不要传递 NULL 指针
  • 配置: 将 sanitizers 标志也添加到 LDFLAGS
  • 包含: 将所有函数设为 __hidden
  • 全项目: 修复构建
  • 构建: 将 src/include 添加到构建并简化头文件包含
  • 系统调用包装器: 修复 pivot_root() 函数声明
  • 控制组: 修复整数比较
  • 配置文件: 修复整数比较
  • 存储: 修复整数比较
  • 附加: 修复助手函数声明
  • LSM: 修复整数比较
  • 配置: 修复整数比较
  • 字符串实用程序: 修复整数比较
  • 配置: 修复 struct mount_attr 初始化
  • 配置: 修复数组初始化
  • 全项目: 修复附加头文件包含
  • 配置文件实用程序: 修复整数比较
  • Criu: 修复整数比较
  • 命令: 修复整数比较
  • 全项目: 修复公共 LXC 头文件包含
  • 网络: 修复整数比较
  • lxccontainer: 修复整数比较
  • 终端: 修复整数比较
  • 实用程序: 修复整数比较
  • 启动: 修复整数比较
  • netns_ifaddrs: 修复整数比较
  • lxcmntent: 修复贯穿
  • Seccomp: 修复整数比较
  • UUID: 修复整数比较
  • NL: 修复整数比较
  • 监视器: 修复整数比较
  • 文件实用程序: 修复整数比较
  • 命令实用程序: 修复整数比较
  • 参数: 修复包含
  • 字符串实用程序: 修复包含
  • 配置: 修复包含
  • 初始化实用程序: 修复包含
  • 日志: 修复包含
  • 初始化实用程序: 修复包含
  • 参数: 修复包含
  • 工具/lxc_start: 修复包含
  • 功能: 修复包含
  • 全项目: 修复 LXC 头文件包含
  • 工具: 修复构建警告
  • 全项目: 修复 config.h 包含
  • 测试: 包含 "version.h"
  • LXC: 移除 "version.h" 包含
  • 构建: 确保设置了 _GNU_SOURCE
  • 构建: 添加 Meson 骨架
  • 构建: 将工具添加到 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 分别是共享库和可执行文件的默认值
  • 构建: 使用 common dependencies 变量
  • 构建: 移除不需要的变量
  • 构建: 将单个选项直接添加到静态库
  • 构建: 在 default_options 中直接设置诊断颜色
  • 构建: 添加更多全局配置变量
  • 构建: 设置更多变量并打印摘要
  • 日志: 修复使用 %m 修饰符时的交叉编译
  • 测试: 修复配置文件测试
  • 构建: 移除无意义的 prefixdir 验证
  • 构建: 使用正确的最小 Meson 版本要求
  • 构建: 记录 Meson 版本
  • 构建: 显示更详细的信息
  • 构建: 确保所有相关调用在构建时都检查可用性
  • 网络: 修复整数比较
  • 控制组: 修复声明和头文件
  • 构建: 支持 LTO
  • 工具: 使用正确的包含文件以适配 Android
  • 不要在外部库头文件中包含内部头文件
  • 构建: 修复钩子程序构建
  • 构建: 修复工具构建
  • 钩子: 在所有地方使用 cloexec
  • 构建: 将 netns_ifaddrs 拆分为单独的源文件
  • 构建: 添加命令
  • 构建: 扩展 default_options
  • 构建: 使用虚拟配置数据
  • 构建: 改进 Meson 构建
  • 构建: 直接在它们的文件夹中构建钩子
  • 构建: 添加钩子
  • 构建: 添加命令构建
  • lxc-monitord: 在 ; 周围使用 {}
  • 命令: 修复整数转换
  • 命令: 修复包含
  • 全项目: 修复 HAVE_* 检查
  • 构建: 修复剩余的 HAVE_* 生成
  • 构建: 添加模板
  • 模板: 不要双重引用
  • 钩子: 修复引用
  • 构建: 检查编译器是否支持 nonnull 和 returns_nonnull 属性
  • GitHub: 删除 16.04 测试
  • 构建: 编译器属性改进
  • 初始化实用程序: 添加缺失的 prctl 包含
  • LXC: 添加 lxc.sched.core
  • 附加: 处理核心调度
  • 全项目: 将核心调度 cookie 转换为 llu
  • 系统调用包装器: 修复核心调度创建助手函数命名
  • 启动: 在不支持核心调度时不要失败
  • 启动: 使用核心调度错误助手函数
  • 启动: 使应用核心调度的失败成为致命错误
  • 日志: 改进 Musl 上的 %m 处理
  • 终端: 在警告消息中记录
  • 配置: 修复 lxc.cap.keep 行为
  • 测试: 添加 lxc.cap.keep 的测试
  • 配置: 改善功能处理
  • 控制组: 使用 __u32 表示 cpumasks
  • 全项目: 使用 __u32 表示功能
  • 测试: 扩展功能测试
  • 附加: 改善 drop_capabilities() 函数的错误日志记录
  • 测试: 修复嵌套功能测试
  • Criu: 修复错误消息
  • AF_UNIX: 替换 log_error_errno() 函数
  • 附加: 改善错误日志记录
  • 功能: 确保 \0 终止
  • conf: 修复代码风格
  • 配置: 不要使 umount2() 失败
  • 将 riscv64 添加到 --arch 参数值
  • README.md: 提及 RISC-V 架构
  • 配置: 验证设置挂载点后根文件系统是否稳定
  • Criu: 支持恢复具有预创建 veth 设备的容器
  • 配置: 使自动挂载标志的定义更加清晰
  • 配置: 添加 cgroup2、cgroup2:ro、cgroup2:force、cgroup2:ro:force 选项
  • 使 veth 的 rx 和 tx 队列数量可配置
  • 文档: 将日志级别添加到 ja 和 ko 通用选项
  • 文档: 将指定广播地址的方式添加到日语版 lxc.container.conf(5)
  • 文档: 将 lxc.sched.core 添加到日语版 lxc.container.conf(5)
  • 文档: 修复英文版 lxc.container.conf(5) 中的错别字
  • 配置: 处理没有或未使用 SMT 的内核
  • 作者: 更新为指向 Git 历史记录
  • 配置文件: 不要在 lxc.{execute,init}.cmd 上使用 path_simplify() 函数
  • 构建: 将静态 libcap 添加到输出
  • 构建: 添加 io-uring-event-loop 选项
  • 将 'which' 替换为 'command -v'
  • 主循环: 确保分配了 descr->ring
  • 启动: 在关闭 fd 之前检查事件循环类型
  • 在测试中也将 'which' 替换为 'command -v'
  • 将已弃用的反引号替换为 $() 结构
  • 替换 'which' 的最后一个出现,使用 'command -v'
  • 主循环: 使 ifdefs 更易于理解
  • 构建: 改进 liburing 支持检测
  • 进程实用程序: 添加 signal_name() 助手函数
  • 启动: 记录信号名称和编号
  • 构建: 将 _FILE_OFFSET_BITS 移动到通用选项
  • 测试: 包含 config.h
  • 配置: 应用 /proc/sys 和 /proc// 参数
  • 配置: 改善设置 sysctl 和 /proc/ 的日志记录

    / 参数
  • 测试:改进日志记录辅助函数
  • 测试:添加 lxc.sysctls.* 测试
  • 测试:添加 lxc.proc.* 测试
  • 构建:拒绝使用不支持的 liburing 版本编译
  • autotools:使用 --enable-pam 时避免生成多个 liblxc.so
  • 宏:确保定义必要的 io_uring 标志
  • 回退 "initutils:在 lxc_container_init() 中使用 vfork()"
  • cgroups:修复编译器警告
  • API:->save_config() 不需要创建容器目录
  • 回退 "API:->save_config() 不需要创建容器目录"
  • 为 sys:mixed 使用 2 个 sysfs 实例
  • API 扩展:如果未编译 seccomp 通知支持,则不进行宣传
  • seccomp:仅在 HAVE_DECL_SECCOMP_NOTIFY_FD 后面保护 seccomp 通知
  • seccomp:在清理处理程序中关闭 seccomp 通知器文件描述符
  • (琐碎)修复错误消息,失败的是连接而不是绑定
  • lxc-checkconfig.in:CONFIG_NF_NAT_IPV4 已从 2019-03-03 的内核中删除
  • 命令:在文件描述符检索期间记录命令
  • 附加:不要无意义地调用 cgroup_init()
  • 更新 README.md:修复损坏的链接(403 禁止)
  • lxc-download:仅依赖 HTTPS
  • GitHub:由于 gnupg 现在未使用,因此停止安装它
  • 配置:改进 userns_exec_mapped_root()
  • 配置:记录终止状态
  • lxccontainer:改进 do_lxcapi_save_config()
  • lxccontainer:改进 do_lxcapi_create()
  • lxccontainer:改进 create_partial()
  • lxccontainer:简化部分文件创建
  • 构建:仅为常规构建启用 LTO
  • 构建:简化线程局部存储处理
  • lxccontainer:正确包装 lxcapi_create()
  • GitHub:确保系统 liblxc 被清除
  • GitHub:记录系统信息
  • GitHub:更详细的编译说明
  • GitHub:添加 systemd-coredump
  • GitHub:清除 /home 上的默认 ACL
  • lxccontainer:在创建容器目录时允许 xdev
  • lxc-net:默认情况下不要在 lxc 内部启动
  • lxc-checkconfig:修复 bash 兼容性问题
  • 文档:修复允许列表/拒绝列表反转
  • cgroups:检查打开的文件描述符是否为 cgroup 文件系统
  • cgroups:记录新创建的 cgroup 的文件描述符
  • 文档:修复日语手册页中的允许列表/拒绝列表反转
  • ttys:确保 container_ttys= 环境变量正确设置
  • cgroups:修改 cgroup2 附加逻辑
  • lxc-checkconfig:仅在存在 /proc/modules 时检查探测到的模块
  • 构建:将测试添加到 meson
  • 测试:修复包含语句
  • 构建:将更多测试添加到 meson
  • 实用程序:在 mkdir_p 函数上添加快速路径例程
  • 工具:lxc-autostart:停止时反转顺序
  • lxc-net.in:修复执行 dnsmasq 失败的问题
  • meson:删除不存在的测试
  • meson:清理构建配置
  • meson:安装测试二进制文件
  • meson:更新 run_command 调用
  • meson:修复 Unix 时间戳
  • 更新 MAINTAINERS 文件
  • meson:使测试二进制文件与 autotools 匹配
  • meson:修复模板安装位置
  • meson:修复内部二进制文件
  • meson:添加 lxc-attach
  • meson:修复库版本
  • meson:修复钩子安装位置
  • meson:包含头文件
  • meson:设置 pkgconfig
  • meson:包含 rootfs 目录
  • meson:包含 /var 路径
  • meson:添加 bash 自动完成
  • meson:简化 pc 处理
  • meson:提升最低版本
  • meson:使用依赖项进行 pkgconfig
  • meson:重做选项
  • meson:添加文档示例
  • bash:重命名主 bash 自动完成文件
  • meson:添加全局配置
  • meson:添加 SELinux 配置
  • meson:添加通用配置
  • meson:添加初始化辅助脚本
  • meson:重新组织目录变量
  • meson:添加其余脚本
  • 构建:将 pam_cgfs 添加到 meson
  • pam:修复编译器警告
  • lxc_can_use_pidfd:如果 pidfds 不受支持,则不记录错误,跟踪
  • meson_options:重新排列条目
  • meson:重新排列 PAM
  • meson:添加工具选项
  • meson:仅在请求时构建工具
  • meson:添加手册页
  • meson:简化 if 语句
  • meson:更灵活的文档处理
  • meson:如果用户请求文档,则使 docbook2man 成为必需
  • meson:重命名 want_io_uring
  • meson:添加初始化脚本
  • meson:添加 sysconfig
  • meson:添加 AppArmor 配置文件
  • meson:导出 LXC_DISTRO_SYSCONF
  • meson:导出更多变量到文档
  • meson:调整手册页的配置
  • meson:重新设计配置变量
  • meson:添加 RPM 规范
  • 编码风格:添加被遗忘的 fallthrough
  • meson:添加 Coverity 标志
  • meson:清理并修复包含
  • meson:使用 sanitizer 时跳过静态库
  • meson:不要包含 lxc-test-fuzzers
  • meson:使 lxc-user-nic 设置 suid
  • meson:修复 RPM 规范变量
  • meson:添加 Bionic 检测
  • meson:修复浅克隆 Git 树
  • meson:seccomp 是可选的
  • meson:始终定义 HAVE_LIBURING
  • meson:仅在需要时构建 seccomp 和 selinux
  • meson:添加缺少的 prlimit 包含
  • meson:将 lxcmntent 添加到 unmount-namespace 钩子
  • lxc/rexec:使用 HAVE_FEXECVE
  • meson:修复 mntent 包含条件
  • 杂项:设置 GitHub Actions 的权限
  • 删除 autotools
  • meson:添加基本 Makefile
  • 文档:更新 meson
  • 自述文件:更新 meson
  • GitHub:更新 meson 的构建测试
  • GitHub:更新 meson 的 Coverity 工作流
  • 源代码:不要对 config.h 使用 ifdef/defined
  • meson:始终定义 IS_BIONIC
  • 配置:使 lxc-{containers,net}.in 可执行
  • 构建:在所有地方使用 liblxc_sources
  • 构建:添加其他命令行开关
  • 构建:lxc-init 不需要构建整个配置基础设施
  • OSS-Fuzz:更多 meson 选项
  • GitHub/工作流/构建:也安装 LLVM
  • GitHub/工作流/构建:添加 -Db_lto_mode=default
  • GitHub/工作流/构建:删除 sanitizer 构建
  • GitHub/工作流/cifuzz:确保添加必要的路径
  • GitHub/工作流:将所有工作流移植到 Ubuntu 22.04
  • GitHub/工作流/sanitizers:将 sanitizers 构建移植到 meson
  • GitHub:修复 cifuzz 中的语法错误
  • GitHub:修复 Coverity 的编译器版本任务
  • 杂项:在 Dependabot 配置中包含 GitHub Actions
  • 构建(依赖项):将 actions/upload-artifact 从 1 提升到 3
  • 构建:调整构建标志
  • 构建:修复关闭各种选项时的构建
  • 构建:添加 seccomp 构建选项
  • 构建:添加 OSS-Fuzz 开关
  • GitHub/工作流/cifuzz:更新到 Ubuntu 22.04
  • 构建:将 OSS-Fuzz 测试与常规测试构建分开
  • OSS-Fuzz:处理依赖项
  • OSS-Fuzz:使选项适应 OSS-Fuzz 构建
  • OSS-Fuzz:确保二进制文件被压缩
  • OSS-Fuzz:清理构建标志
  • 构建:使用 cc.links() 检查静态 libcap
  • 构建:支持线程安全强制作为选项
  • 构建:添加缺少的 memfd-rexec 选项
  • 自述文件:在文档中反映 meson
  • 构建:在 meson_options.txt 中将 autotools 选项映射到 meson 选项
  • meson:修复错误的 strerror_r 检查

支持和升级

LXC 5.0 将支持到 2027 年 6 月,我们当前的 LTS 版本 LXC 4.0 现在将切换到较慢的维护速度,仅获得关键的错误修复和安全更新。

我们强烈建议所有 LXC 用户计划升级到 5.0 分支。

下载

贡献者

LXC 5.0 版本由总共 65 位贡献者提供。