LXC 4.0.6 LTS 已发布¶
2021年1月12日
简介¶
LXC 团队很高兴地宣布发布 LXC 4.0.6!
这是 LXC 4.0 的第六个错误修复版本,该版本支持到 2025 年 6 月。
错误修复¶
像往常一样,此错误修复版本专注于稳定性和强化。此版本的亮点包括
- 改进 seccomp 对兼容架构的处理
- 强化 seccomp 通知程序实现
- 重新处理
/proc/<pid>/mountinfo
的解析以处理内核回归 https://bugzilla.kernel.org/show_bug.cgi?id=209971 - 改进网络设备恢复
- 大幅清理和强化配置文件解析
- 支持新的功能
CAP_PERFORM
、CAP_BPF
和CAP_CHECKPOINT_RESTORE
- 强化未启用
CAP_NET_ADMIN
的容器启动
完整的提交列表如下所示
详细变更日志
- 更新日语 pam_cgfs(8) 以反映对纯 cgroupv2 的不支持。
- seccomp:修复伪系统调用的处理并改进规则处理的日志记录。
- seccomp:避免对主机原生架构的规则进行重复处理。
- lxccontainer:修复 lxc_config_item_is_supported
- 测试:启用 appamor 后修复编译。
- 命令:在 NULL 检查后不要取消引用
- 实用程序:在 NULL 检查后不要取消引用
- 配置:检查 snprint 返回值
- 实用程序:检查 snprintf 返回值
- seccomp:使 seccomp 通知程序 fd 非阻塞
- seccomp:记录中止的系统调用
- 附加:静默 stdio 权限调整警告
- cgfsng:将日志级别调整为警告而不是错误
- 解析:重新设计配置解析例程
- 配置:复制 mountinfo 时切换到 fd_to_fd()
- 文件实用程序:修复配置文件解析
- 命令实用程序:修复 lxc-wait
- 网络:修复 LXC_NET_NONE 清理
- 宏:移动 MAX_GRBUF_SIZE
- 宏:将 MAX_GRBUF_SIZE 提升到 2 MB
- 全树:使用 call_cleaner(netns_freeifaddrs)
- confile:清理网络配置解析
- confile:清理钩子
- 向 lxc-download.in shell 脚本添加标准解析器选项
- 在发生错误时将接口恢复到正确的命名空间
- 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:清理 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()
- 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_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()
- 实用程序:清理 get_rundir()
- 存储/lvm:清理 do_lvm_create()
- 网络:使用空初始化程序
- 存储/btrfs:添加缺少的返回
- cgroups/cgfsng:删除逻辑上死代码
- 实用程序:修复未检查的返回值
- 配置:修复未检查的返回值
- confile:清理 set_config_net_l2proxy()
- confile_utils:清理 strprint()
- criu:清理 load_tty_major_minor()
- 卸载 proc/sys/net 如果删除 CAP_NET_ADMIN 签名者:Henry Zhang henryzhang99@gmail.com
- 配置:修复基于块设备的根文件系统挂载
- confile:清理 set_config_hooks()
- confile:不要意外地更改 lxc.cgroup.dir
- 实用程序:允许跨设备解析
- cgroup2:将 bpf 设备 cgroup 程序移动到 struct cgroup_ops
- 宏:对功能使用升序
- 配置:定义缺少的功能
- 配置:添加新的功能 CAP_{BLOCK_SUSPEND,PERFMON,BPF,CAP_CHECKPOINT_RESTORE}
- 宏:定义所有功能
- 配置:添加 lxc_wants_cap() 帮助程序
- 配置:修复基于 CAP_NET_ADMIN 的挂载处理
- 将版本从 2.*.* 更改为 4.*.*
- 使 lxc-net 相对于现有的 dnsmasq 配置独立
支持和升级¶
LXC 4.0 分支支持期限至 2025 年 6 月。
稳定的 bug 修复版本只会包含 bug 修复和安全问题修复,因此始终安全且建议您保持更新并运行最新的 bug 修复版本。
下载¶
- 主要版本 tar 包:lxc-4.0.6.tar.gz
- GPG 签名:lxc-4.0.6.tar.gz.asc