LXC 5.0 LTS 已发布¶
2022年6月17日
简介¶
LXC 团队很高兴地宣布发布 LXC 5.0.0!
这是自 LXC 4.0.0 发布以来两年工作的成果,也是 LXC 项目的第五个 LTS 版本。此版本将支持到 2027 年 6 月。
主要变化¶
切换到 meson¶
在此 LXC 版本中,autotools 正被 meson
替换为构建工具。为 all
、install
和 dist
提供了兼容的 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.0.tar.gz
- GPG 签名:lxc-5.0.0.tar.gz.asc
贡献者¶
LXC 5.0 版本由总共 65 位贡献者提供。