News

LXC 6.0 LTS リリースのお知らせ

3rd of April 2024

はじめに

LXC チームが LXC 6.0 LTS のリリースをお知らせします!

これは LXC 5.0 のリリース以来 2 年の作業の成果です。そして、LXC プロジェクトの 6 回目の LTS リリースです。このリリースは 2029 年 6 月までサポートされます。

ハイライト

新しいマルチコールバイナリー

新しく tools-multicall=true 設定オプションを使って、単一の lxc バイナリーを生成し、他のすべての lxc-XYZ コマンドからシンボリックリンクすることができます。

これにより、大幅にディスクスペースを削減でき、特に組み込みプラットフォームで有用です。

ライブラリーへの set_timeout 関数の追加

新しい set_timeout 関数が lxc_container 構造体で利用可能になりました。LXC モニターとのやりとりのグローバルなタイムアウトを設定できるようになりました。

これまではタイムアウトがなく、モニターリクエストをキャンセルする方法もないため、デッドロックする可能性がありました。

この新しいシンボルをライブラリーに追加した結果、liblxc のシンボルバージョンが 1.8.0 に上がりました。

LXC ブリッジで IPv6 が有効に

デフォルトの lxcbr0 ブリッジは、IPv6 ULA サブネットを使い、デフォルトで IPv6 が有効になりました。

lxc-usernsexec の uid/gid 選択のサポート

lxc-usernsexec ツールに、ユーザーが使いたい UID と GID それぞれを制御するための -u-g オプションが追加されました(デフォルトは 0/0 です)。

lxc-checkconfig の改良

lxc-checkconfig は、(失敗するのではなく)lxc-start が存在するときだけ、バージョンを表示するようになりました。
さらに、各 Namespace タイプごとに使える名前空間の最大数をリストするだけでなく、その他の見た目の改良も多数行われています。

squashfs OCI イメージのサポート

ビルトインの oci コンテナテンプレートは、atomfs を使用し、squashfs 圧縮された OCI イメージを処理できるようになりました。

systemd の dbus から dbus-1 への変更

LXC は systemd との DBus でのやりとりに libsystemd ではなく、libdbus-1 を使うようになりました。
この理由は、libdbus-1 は静的ビルドですぐに使えるためです。

Upstart サポートの削除

ついに init システムとして Upstart のサポートが削除されました。

この削除は、現段階では誰にも影響しないはずです。そして、リポジトリーからいくつかのロジックと構成ファイルをクリーンアップできます。

すべての変更点(翻訳なし)

すべてのChangelogを見る
  • Read list until process exits
  • lxccontainer: improve mod_rdep()
  • lxccontainer: rework copy_file()
  • meson: Generate compile commands by iterating over an array
  • tools: Provide multicall lxc binary
  • meson: Set DEVEL flag post release
  • Fix uninitialized read in parse_cap when libcap is not used
  • use systemd dbus StartTransientUnit for unpriv cgroup2
  • fix for issue 4026: set broadcast to 0.0.0.0 for /31 and /32
  • conf: log file descriptors on error during idmapped mount setup
  • start: don't overwrite file descriptors during namespace preservation
  • start: record inherited namespaces earlier to make it available for idmapped rootfs setup
  • conf: fix append_ttyname()
  • start: fix namespace sharing
  • add check for statvfs
  • Fix off-by-one error constructing mount options
  • Store mount options in correct variable
  • meson: add remaining still-in-use config checks
  • src/lxc/log.h: fix STRERROR_R_CHAR_P
  • meson.build: fix build with -Dcapabilities=false
  • meson.build: fix build without stack-protector
  • README: update security mails
  • lxc-usernsexec: allow to select which {g,u}id to switch to
  • gitignore: Simplify
  • build: detect where struct mount_attr is declared
  • build: detect sys/pidfd.h availability
  • build: check for FS_CONFIG_* header symbol in sys/mount.h
  • meson.build: allow explicit distrosysconfdir
  • tree-wide: wipe direct or indirect linux/mount.h inclusion
  • tree-wide: use struct clone_args directly
  • tree-wide: use struct open_how directly
  • meson: fix docbook2x detection
  • tree-wide: minimize liburing.h inclusion
  • mount: move mount utilities from syscall_wrappers.h into mount_utils.h
  • mount_utils: remove conf.h include
  • build: prevent the inclusion of linux/mount.h with a hack
  • tree-wide: split open helpers into open_utils.h
  • use sd_bus_call_method_async to replace the asyncv one
  • fix error message when use tools with -? option
  • Update cifuzz.yml
  • build(deps): bump actions/checkout from 2 to 3
  • conf: allow cross-device links
  • Update README.md
  • lxc-attach: Fix lost return codes of spawned processes that are killed
  • lxc/attach: Detect EACCES from execvp and convert to 126 exit status
  • build: add libsystemd to oss fuzz dependencies
  • tools: lxc-destroy: update help message for --force
  • tests: lxc-test-checkpoint-restore: use trap to do cleanup
  • Unroll IN_SET since the max usage is 2 elements check
  • cgroups: fix -Waddress warning
  • build: fix handling of dependancies to fix build on openSUSE
  • build: only build init.lxc.static if libcap is statically linkable
  • build: use cc.get_define to detect FS_CONFIG_* symbols
  • build: drop build-time systemd dependency
  • src/lxc/meson.build: fix the static library path
  • tests: lxc-test-reboot: Fix build on ia64
  • meson.build: strip newlines from git output
  • meson.build: strip newline for variable assignments
  • README: remove lgtm
  • cgroups: use userns_exec_full() during cgroup removal
  • cgroups: only allocate user namespace if we have to
  • conf: create separate peer group for container's root
  • apparmor: allow shared mounts in start-container.in
  • conf: ensure mount tunnel is a dependent mount
  • github: fix coverity build
  • github: fix coverity (add libpam-dev)
  • apparmor: properly check lxc_strmmap ret value
  • network: always initialize struct nl_handler
  • cgroups: fix buffer out-of-bounds access in enable_controllers_delegation
  • cgroups: check snprintf retval in unpriv_systemd_create_scope
  • state: additional check in lxc_wait to prevent OOB
  • cgroups: fix cgroup layout detection in __initialize_cgroups
  • src/lxc/meson.build: fix build without apparmor
  • checkconfig: Fix mixed tabs/spaces
  • checkconfig: Hide version if no lxc-start
  • checkconfig: Tweak layout
  • checkconfig: Tweak cgroup handling
  • checkconfig: Fix filesystem capability check
  • build: force linking against liblxc
  • Patching an incoming CVE (CVE-2022-47952)
  • lxc_user_nic: fix get_mtu() error handling
  • lxc-default-cgns apparmor profile: allow overlay mounts
  • Fix build error on sparc64 caused by using the gold linker
  • drop broken lxc-test-fuzzers
  • Fix typo: bev_type -> bdev_type
  • Fix strlcat's return value checks
  • lxc-net.in: fix nftables syntax for IPv6 NAT
  • initutils: use PRIu64 for uint64_t in setproctitle
  • apparmor: don't try to mmap empty files
  • Add support for squashfs images in oci via atomfs
  • Allow fuse mounts in apparmor start-container.
  • tree-wide: convert fcntl(FD_CLOEXEC) to SOCK_CLOEXEC
  • switch from libsystemd's dbus to dbus-1
  • console-log test: make sure container is stopped before restarting
  • lsm: apparmor: allow to change mount propagation
  • make setproctitle()'s /proc/pid/stat parsing safe
  • setproctitle(): Handle potential NULL return from strrchr()
  • file_utils: rename fd_make_nonblocking to fd_make_blocking
  • file_utils: add fd_make_nonblocking helper
  • terminal: make a terminal FDs non-blocking
  • mainloop: io_uring: disable IORING_POLL_ADD_MULTI
  • lxccontainer: extend lxccontainer API with set_timeout
  • commands: support timeout in LXC_CMD_GET_STATE
  • rename functions which clash with libsystemd's
  • src/tests: Fix container creation errors
  • tests: fix parse_config_file seccomp test
  • explicitly convert *mainloop_handler to __u64
  • github: Add DCO/target tests
  • Add libarchive tar support for lxc download
  • get_hierarchy: dont WARN about no usable controller
  • CONTRIBUTING: add a note on AI generated code
  • github: Update for main branch
  • Fix start api call to split quoted strings in execute or init command.
  • Update console perms to 0600
  • Remove references to LXD
  • lxccontainer.h: Move new fields to the end
  • build(deps): bump actions/checkout from 3 to 4
  • containers in the FREEZING state also need to be unfreeze
  • lxc/lxccontainer: fix do_lxcapi_set_timeout retval
  • lxc/checkconfig: replace cat | grep with grep
  • lxc/checkconfig: replace type by command
  • lxc/checkconfig: remove some unneeded echo -n
  • lxc/checkconfig: add missing quotes to please shellcheck
  • lxc/checkconfig: replace ! -z by -n (SC2236)
  • lxc/checkconfig: check exit code directly (SC2181)
  • lxc/checkconfig: remove superfluous (..) around test command (SC2234)
  • lxc/checkconfig: avoid subshell (SC2235)
  • lxc/checkconfig: minor cosmetic change
  • lxc/checkconfig: replace echo -n by printf
  • lxc/checkconfig: use multiline echo
  • reset root_nsuid_map and root_nsgid_map when idmaps is cleared
  • meson: Remove support for upstart
  • hooks/ubuntu-cloud-prep: remove upstart handling
  • doc: remove the warning mentionning upstart
  • config/init: Drop upstart files
  • conf: fix ephemeral copies
  • don't try to delete vlan 0 from veth
  • Disable IPv6 link-local addresses for bridged veth
  • lxc-local: Change LXC_CONFIG to LXC_METADATA to match args and be more clear
  • lxc-local: Improve usage info
  • lxc-local: Re-organize code to use more functions
  • lxc-local: Add --no-dev option to exclude /dev from the fstree
  • config: try to create workdir if not exist
  • build(deps): bump actions/upload-artifact from 3 to 4
  • Add loongarch64 support
  • build: add more options for customizing install
  • Align columns in lxc-download.in template
  • Add verbose output in download template.
  • Fix error message.
  • tree-wide: use container_uses_namespace() helper
  • tree-wide: use container_uses_namespace() in less trivial cases
  • lxc-download, lxc-local: preserve xattrs on unpack
  • Add x32 to the list of recognized architectures
  • test-usernic: don't use ifconfig
  • lxc-test-usernic: drop cgroup handling
  • oci: resolve cross-filesystem blob caching failure
  • tests: lxc-test-usernic: use iproute tool instead of brctl
  • config: apparmor: add AppArmor profile for lxc-copy
  • tests: remove old and broken cgroup handling code from tests
  • confile: move lxc_fill_elevated_privileges() to tools/lxc_attach
  • meson: introduce IN_LIBLXC preprocessor macro
  • confile: unhide lxc_config_define*() helpers
  • conf: reorganize/split code to idmap_utils.c
  • conf: reorganize/split code to utils.c
  • confile: unhide lxc_config_parse_arch() helper
  • storage_utils: unhide and rename is_valid_storage_type to lxc_is_valid_storage_type
  • storage_utils: move get_fssize to utils
  • network: use IN_LIBLXC
  • meson: link with liblxc dynamically everywhere if possible
  • github: master -> main
  • tests/meson: attempt to fix ossfuzz builds
  • lxc-net: Enable IPv6 by default
  • lxc-unshare: fix an buffer overflow issue in lxc_unshare
  • unshare: simplify lookup_name
  • README: Correct 'armvl7' to 'armv7l'
  • rexec: Avoid invalid free in rexec failure path
  • src/lxc/syscall_numbers.h: drop define -1
  • Revert "lxccontainer: fixes"
  • lxccontainer: improve mod_rdep()
  • lxccontainer: rework copy_file()
  • tree-wide: replace multiply_overflow with check_mul_overflow
  • tests/parse_config_file: add tests for lxc.time.offset.*
  • tests/parse_config_file: fix some typos
  • lxc/confile: do not print newline symbol in getter for lxc.time.offset.*
  • lxc/confile: do not print excess space before scale suffix for time.offset.boot
  • lxc/lxccontainer: specify file mode in open() call inside mod_rdep
  • tools/lxc_autostart: don't fail when there are no containers
  • lxc/tools: set default log_priority to ERROR
  • lxc-ls: list names with whitespaces in --active.
  • lxc-checkconfig: Show namespace limits
  • lxc-checkconfig: Fix shellcheck
  • MAINTAINERS: Remove Dwight from the maintainer list
  • COPYING: Remove whitespace
  • config/yum: Use SPDX header
  • template: Use SPDX
  • lxc.spec: Use SPDX
  • lxc.spec: Clear default changelog
  • hooks: Add SPDX headers
  • src/tests: Add SPDX headers
  • src/include: Add SPDX headers
  • doc: Add SPDX headers and remove Author field
  • COPYING: Clarify licensing of files without SPDX
  • meson: Align SPDX license id
  • Makefile: Align SPDX license id
  • lxc.spec: Align SPDX license id

サポートとアップグレード

LXC 6.0 は 2029 年 6 月までサポートされる、最新の LTS リリースです。LXC 5.0 は、より遅いメンテナンスペースに変更され、重要なバグ修正とセキュリティ更新のみが行われます。

LXC のユーザーはすべて、6.0 ブランチをアップグレードを計画することを強くおすすめします。

今後のリリースについて

ユーザーが新しい LXC の機能をより簡単に利用できるように、今後は LTS ではないリリースの作成を開始することにしました。計画している間隔は 6 ヶ月ごとで、LXC 6.1 は 10 月に予定されています。

この LTS ではないリリースでは、安定性、サポート、セキュリティメンテナンスに関する LTS の保証は受けられず、次のリリースが出るまでのみサポートされます。

本番環境のユーザーは LTS リリースを利用し続けたいと思うでしょう。

ダウンロード

コントリビューター

LXC 6.0 は、合計 56 名のコントリビューターによりリリースされました。

LXC 5.0.3 LTS リリースのお知らせ

25th of July 2023

はじめに

LXC チームが LXC 5.0.3 のリリースをお知らせします!

このリリースは LXC 5.0 の 3 回目のバグ修正リリースです。このリリースは 2027 年 6 月までサポートされます。

バグ修正

いつも通り、このバグ修正リリースは安定性とハードニングにフォーカスを当てています。

このリリースのいくつかのハイライトは次の通りです:

  • IPv6 NAT の nftables シンタックスの修正
  • squashfs OCI イメージのサポートを追加
  • io_uring で LXC を実行する際の修正

コミットの全リストは次の通りです(翻訳なし):

すべてのChangeLogを見る
  • drop broken lxc-test-fuzzers
  • Fix typo: bev_type -> bdev_type
  • Fix strlcat's return value checks
  • lxc-net.in: fix nftables syntax for IPv6 NAT
  • initutils: use PRIu64 for uint64_t in setproctitle
  • apparmor: don't try to mmap empty files
  • Add support for squashfs images in oci via atomfs
  • Allow fuse mounts in apparmor start-container.
  • tree-wide: convert fcntl(FD_CLOEXEC) to SOCK_CLOEXEC
  • console-log test: make sure container is stopped before restarting
  • make setproctitle()'s /proc/pid/stat parsing safe
  • setproctitle(): Handle potential NULL return from strrchr()
  • file_utils: rename fd_make_nonblocking to fd_make_blocking
  • file_utils: add fd_make_nonblocking helper
  • terminal: make a terminal FDs non-blocking
  • mainloop: io_uring: disable IORING_POLL_ADD_MULTI
  • rename functions which clash with libsystemd's
  • src/tests: Fix container creation errors
  • tests: fix parse_config_file seccomp test
  • explicitly convert *mainloop_handler to __u64
  • github: Add DCO/target tests
  • get_hierarchy: dont WARN about no usable controller
  • CONTRIBUTING: add a note on AI generated code
  • github: Update for main branch

サポートとアップグレード

LXC 5.0 ブランチは 2027 年 6 月までサポートされます。
stable のバグフィックスリリースでは、バグとセキュリティに関する問題に対する修正のみが行われますので、常に安全です。最新のバグフィックスリリースの状態を維持し、実行することをおすすめします。

ダウンロード

LXC/LXD/LXCFS 3.0 - End of Life のお知らせ

4th of July 2023

はじめに

3.0 LTS ブランチがサポート終了(End of Life)をむかえました。

これは次のプロジェクトに影響します:

  • LXC 3.0(2018 年 3 月 27 日リリース)
  • LXCFS 3.0(2018 年 3 月 26 日リリース)
  • LXD 3.0(2018 年 4 月 2 日リリース)

5年以上にわたるバグフィックスとセキュリティメンテナンスを経て、これらのリリースはサポート期間が終了しました。

具体的には、これは新規リリースは今後行わず、対象の stable ブランチをクローズし、関連する CI を無効化します。

まだ対象のプロダクトをご利用のユーザーは、できるだけ早くサポートされているリリースへアップデートしてください。

長期サポートリリース

開発元は LTS ブランチの 5 年間のサポートをコミットしています。
LTS ブランチは LXC、LXCFS、LXD に存在し、バグフィックスやセキュリティフィックスがバックポートされます。

LTS ブランチには新しい機能は追加されません。そして、最新の LTS ブランチにのみ、大部分のバグフィックスがバックポートされます。新しい LTS ブランチがリリースされると、その前の LTS ブランチにはセキュリティと重要なバグフィックスのみが適用されます。

サポート中のリリース

現在サポート中の LTS リリースは 2 つあります。2025 年 6 月までサポートされる 4.0 リリースと、2027 年 6 月までサポートされる 5.0 です。

さらに、いくつかのプロジェクト(現在は LXD)では、もっと頻繁な機能(feature)リリースが行われます。このようなリリースは、長期的なサポートはなく、通常は次の機能リリースがリリースされるまでしかサポートされません。

LXC 5.0.2 LTS リリースのお知らせ

20th of January 2023

はじめに

LXC チームが LXC 5.0.2 のリリースをお知らせします!

このリリースは LXC 5.0 の 2 回目のバグ修正リリースです。このリリースは 2027 年 6 月までサポートされます。

脆弱性の修正

このリリースでは、LXC に対して最近公開された CVE を 1 つ修正しています。
CVE-2022-47952 は、ユーザーが通常アクセスできない場所に存在するファイルを発見する方法として、lxc-user-nic の使用を取り上げています。

この問題は CVE で low severity に分類され、修正とともに GitHub を通して公に報告されました。これは制限(embargo)下でリリースされておらず、この問題の影響が低いことを考慮して、liblxc に対する他のバグ修正と同様にこの問題を処理することに決定しました。

バグ修正

いつも通り、このバグ修正リリースは安定性とハードニングにフォーカスを当てています。

このリリースのいくつかのハイライトは次の通りです:

  • meson への切り替えの結果生じた様々なビルド時の問題の修正
  • lxc-attach: リターンコードの欠落を修正
  • core: コンテナの root に(マウントの)ピアグループを設定する
  • checkconfig: 最新のカーネルでの出力をより有用に
  • lxc-user-nic: 非特権ユーザーにファイルの存在が漏洩する問題を修正 (CVE-2022-47952)

コミットの全リストは次の通りです(翻訳なし):

すべてのChangeLogを見る
  • meson.build: allow explicit distrosysconfdir
  • build: detect where struct mount_attr is declared
  • build: detect sys/pidfd.h availability
  • cgroups: fix -Waddress warning
  • build: fix handling of dependancies to fix build on openSUSE
  • build: only build init.lxc.static if libcap is statically linkable
  • build: drop build-time systemd dependency
  • src/lxc/meson.build: fix the static library path
  • meson.build: strip newlines from git output
  • meson.build: strip newline for variable assignments
  • gitignore: Simplify
  • build: check for FS_CONFIG_* header symbol in sys/mount.h
  • tree-wide: wipe direct or indirect linux/mount.h inclusion
  • tree-wide: use struct clone_args directly
  • tree-wide: use struct open_how directly
  • meson: fix docbook2x detection
  • tree-wide: minimize liburing.h inclusion
  • mount: move mount utilities from syscall_wrappers.h into mount_utils.h
  • mount_utils: remove conf.h include
  • build: prevent the inclusion of linux/mount.h with a hack
  • tree-wide: split open helpers into open_utils.h
  • use sd_bus_call_method_async to replace the asyncv one
  • fix error message when use tools with -? option
  • Update cifuzz.yml
  • build(deps): bump actions/checkout from 2 to 3
  • conf: allow cross-device links
  • Update README.md
  • lxc-attach: Fix lost return codes of spawned processes that are killed
  • lxc/attach: Detect EACCES from execvp and convert to 126 exit status
  • tools: lxc-destroy: update help message for --force
  • tests: lxc-test-checkpoint-restore: use trap to do cleanup
  • Unroll IN_SET since the max usage is 2 elements check
  • tests: lxc-test-reboot: Fix build on ia64
  • README: remove lgtm
  • cgroups: use userns_exec_full() during cgroup removal
  • cgroups: only allocate user namespace if we have to
  • conf: create separate peer group for container's root
  • apparmor: allow shared mounts in start-container.in
  • conf: ensure mount tunnel is a dependent mount
  • github: fix coverity build
  • github: fix coverity (add libpam-dev)
  • apparmor: properly check lxc_strmmap ret value
  • network: always initialize struct nl_handler
  • cgroups: fix buffer out-of-bounds access in enable_controllers_delegation
  • cgroups: check snprintf retval in unpriv_systemd_create_scope
  • state: additional check in lxc_wait to prevent OOB
  • cgroups: fix cgroup layout detection in __initialize_cgroups
  • build: use cc.get_define to detect FS_CONFIG_* symbols
  • src/lxc/meson.build: fix build without apparmor
  • checkconfig: Fix mixed tabs/spaces
  • checkconfig: Hide version if no lxc-start
  • checkconfig: Tweak layout
  • checkconfig: Tweak cgroup handling
  • checkconfig: Fix filesystem capability check
  • build: force linking against liblxc
  • Patching an incoming CVE (CVE-2022-47952)
  • lxc_user_nic: fix get_mtu() error handling
  • lxc-default-cgns apparmor profile: allow overlay mounts
  • Fix build error on sparc64 caused by using the gold linker

サポートとアップグレード

LXC 5.0 ブランチは 2027 年 6 月までサポートされます。
stable のバグフィックスリリースでは、バグとセキュリティに関する問題に対する修正のみが行われますので、常に安全です。最新のバグフィックスリリースの状態を維持し、実行することをおすすめします。

ダウンロード

LXC 5.0.1 リリースのお知らせ

28th of July 2022

はじめに

LXC チームが LXC 5.0.1 のリリースをお知らせします!

このリリースは LXC 5.0 の最初のバグ修正リリースです。このリリースは 2027 年 6 月までサポートされます。

バグ修正

このバグ修正リリースは、通常通り、安定性とハードニングに焦点を当てています。

  • ホストのバインドマウントが使われた場合、コンテナの起動に失敗するマウントの問題を修正しました
  • libcap の検出周辺のさまざまな meson パッケージングの問題を修正しました

コミットの全リストは次の通りです(翻訳なし):

すべてのChangeLogを見る
  • meson: Generate compile commands by iterating over an array
  • Fix uninitialized read in parse_cap when libcap is not used
  • use systemd dbus StartTransientUnit for unpriv cgroup2
  • fix for issue 4026: set broadcast to 0.0.0.0 for /31 and /32
  • conf: log file descriptors on error during idmapped mount setup
  • start: don't overwrite file descriptors during namespace preservation
  • start: record inherited namespaces earlier to make it available for idmapped rootfs setup
  • conf: fix append_ttyname()
  • start: fix namespace sharing
  • add check for statvfs
  • Fix off-by-one error constructing mount options
  • Store mount options in correct variable
  • meson: add remaining still-in-use config checks
  • src/lxc/log.h: fix STRERROR_R_CHAR_P
  • meson.build: fix build with -Dcapabilities=false
  • meson.build: fix build without stack-protector
  • README: update security mails

サポートとアップグレード

LXC 5.0 ブランチは 2027 年 6 月までサポートされます。
stable のバグフィックスリリースでは、バグとセキュリティに関する問題に対する修正のみが行われますので、常に安全です。最新のバグフィックスリリースの状態を維持し、実行することをおすすめします。

ダウンロード

Older news