返回新闻概览

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_PERFORMCAP_BPFCAP_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 修复版本。

下载