ニュースのトップページに戻る

LXC 2.0.9 リリースのお知らせ

2017/10/19

このリリースは LXC 2.0 の 9 回目のバグフィックスリリースです。

バグ修正:

  • apparmor: コンテナが AppArmor namespace 内で起動できるようになりました
  • apparmor: apparmor の不要な deny を削除しました
  • caps: ifndef/define の定義をコードの冒頭部分に移動させました
  • cgfsng: 制限の適用に失敗したときにはエラーになるようにしました
  • cgfsng: cgfsng を使わない場合はログに出力するようにしました
  • cgfsng: cgroup のデータを設定した時のみデバッグ情報をログに出力するようにしました
  • cgroups: hybrid cgroup レイアウトを扱えるようになりました
  • cgroups: 変数のスコープを調整しました
  • cgroups: gcc-7 のバグを回避するようにしました
  • commands: abstract コマンドソケットの扱いとロギングを実装しました
  • commands: コマンドに対する足りていなかった変換を追加しました
  • commands: 意味のないコメントを削除しました
  • commands: EINTR を扱うようになりました
  • commands: ステートサーバのインターフェースをフレキシブルにしました
  • commands: lxc_make_abstract_socket_name() 関数を移動しました
  • commands: lxc_cmd_add_state_client() にリネームしました
  • commonds: typo を修正しました
  • conf: lxc-user-nic の使われ方に合わせました
  • conf: lxc_get_idmaps() を追加しました
  • conf: userns_exec_full() を追加しました
  • conf: すべての設定をクリアできるようになりました
  • conf: lxc.autodev を取得できるようになりました
  • conf: lxc.haltsignal を取得できるようになりました
  • conf: lxc.kmsg を取得できるようになりました
  • conf: lxc.rebootsignal を取得できるようになりました
  • conf: lxc.stopsignal を取得できるようになりました
  • conf: euid != 0 でも uid マッピングが書き込めるようになりました (訳注: 非特権ユーザが自身の id だけをマップできるようになりました)
  • conf: userns_exec_1() 中のメモリの二重解放を修正しました
  • conf: lxc.include をクリアするようにしました
  • conf: 空の値を二度チェックしなくなりました
  • conf: 間違ったネットワークインターフェースのタイプの UNION のチェックをしなくなりました
  • conf: NULL ポインタへの参照を防ぎました
  • conf: static なメモリを解放しないようにしました
  • conf: 初期化されていないメモリについてログ出力しないようにしました
  • conf: 行末のスペースを出力しなくなりました
  • conf: 設定されていない場合は tty を送らないようになりました
  • conf: lxc_get_config_item() を削除しました
  • conf: 多数のマッピングをしようとした際にエラーになるようにしました
  • conf: bionic でのビルドを修正しました
  • conf: libcap がない場合のビルドの問題を修正しました
  • conf: tty の作成時の問題を修正しました
  • conf: userns_exec_1() の問題を修正しました
  • conf: netdev->downscript 変数を free するようにしました
  • conf: 設定項目をクリアするコールバック関数を実装しました
  • conf: lxc_map_ids() 関数を改良しました
  • conf: tty の ID をシフトする関数を改良しました
  • conf: write_id_mapping() 関数を改良しました
  • conf: lxc-user-nic のバッファを増やしました
  • conf: lxc-user-nic の出力をログに記録するようにしました
  • conf: lxc_listconfigs -> lxc_list_config_items
  • conf: 設定項目をクリアする関数を一か所にまとめました
  • conf: 機能と関係ない変更を行いました
  • conf: コンテナの /dev をマウントする際には NOTICE() で出力するようにしました
  • conf: パフォーマンスの調整を行いました
  • conf: 設定ファイル中の改行を保存するようにしました
  • conf: lxc.idmap の設定値を正しくパースするようにしました
  • conf: 書き込まれる idmap を記録するようになりました
  • conf: 設定値をパースするほとんどのコードをリファクタリングしました
  • conf: ネットワークの削除をリファクタリングしました
  • conf: parse_idmaps() 中の不要な割り当てを削除しました
  • conf: 使われないマウントのコードを削除しました
  • conf: lxc_map_ids() を作りなおしました
  • conf: userns_exec_1() を作りなおしました
  • conf: tty を 2 つ同時に送るようにしました
  • conf: API を新しいコールバックシステムへ切り替えました
  • conf: uid,gidのマッピングは最小限だけ使うようにしました
  • conf: char の配列のチェックを正しく行うようになりました
  • conf: lxc-usernsexec コマンドの実行には run_command 関数を使うようにしました
  • console: ピアが exit した際には tty の状態をクリアし、0 を返すようにしました
  • console: 'stdin' が tty ではないときは winsize を調整するハンドルを追加しないようにしました
  • console: 'lxc_tty_state' のメモリリークを修正しました
  • console: 使われない変数割り当てを削除しました
  • core: MS_RDONLY でマウントされている場合は、MS_REMOUNT フラグ付きで remount するようにしました
  • core: x32 でエラーになっていたフォーマット文字列を修正しました
  • core: Android 向けに include を修正しました
  • core: メモリとリソースのリークを修正しました
  • core: cppcheck の警告をいくつか修正しました
  • core: 'stdoutfd' を代入していない 'ts->stdoutfd' のバグを修正しました
  • core: Android 向けに自前の mntent を include するようにしました
  • core: userns_exec_1() 関数内でロギング関数を呼ぶようにしました
  • core: __func__ マクロを削除しました
  • core: 使っていないマクロを削除しました
  • core: "priority" を "level" に置き換えました (訳注: ログ関連の定数名)
  • core: lxc.pc に prefix を追加した変更を元に戻しました
  • core: root -> am_root (訳注: 構造体のメンバ名の変更)
  • core: struct bdev -> struct lxc_storage (訳注: 構造体名の変更)
  • core: .gitignore を更新しました
  • core: ログのフォーマット文字列として %m の代わりに strerror(errno) を使うようにしました
  • criu: cmp_version() 関数を追加しまいた
  • criu: 初期化のチェックの際、正しいチェックを行うようにしました
  • doc: README に CII Best Practices のバッヂを追加しました
  • doc: コンソールの動きに関する説明を日本語の lxc.container.conf(5) に追加しました
  • doc: 環境変数の説明を追加しました
  • doc: lxc-monitor(1) にあった正規表現の typo を修正しました
  • doc: 非特権の場合の idmap の制限に関する説明を書き換えました
  • doc: README を書き換えました
  • doc: lxc.container.conf(5) を調整しました
  • doc: get_config_item の API ドキュメントを更新しました
  • execute: コンソールと標準の /dev のシンボリックリンクを有効にしました
  • init: 32 と 33 のシグナルに対するコメントを更新しました
  • init: include 定義の部分を調整しました
  • init: セッションリーダーになるようにしました
  • init: シグナル動作の初期化部分をループの外に移動しました
  • init: exec*() の失敗を報告するようになりました
  • init: systemd のサービスとして動作しているコンテナを停止する際には lxc-stop を使うようになりました
  • liblxc: 確実にメモリを free() するようにしました
  • liblxc: 要求に応じてのみ monitord を起動するようにしました
  • liblxc: エラー時の 5 秒のタイムアウトを削除しました
  • liblxc: snprintf() を使うようにしました
  • liblxc: userns_exec_full() を使うようにしました
  • lock: 機能と関係ない変更を行いました
  • lock: ロックファイルのオープンに失敗した場合は正しいエラーを返すようにしました
  • log: スタック破壊が起こらないようにしました
  • log: 新しい lxc_log_init を使用するようにしました
  • monitor: いくつかの関数で同時に複数の fd を送受信できるようにしました
  • monitor: lxc_cmd_state_server() 関数を追加しました
  • monitor: TRACE レベルのログ出力をいくつか追加しました
  • monitor: 不要なインクルードファイルのインクルードを削除しました
  • monitor: 不要な変数割り当てを削除しました
  • monitor: lxc_abstract_unix_connect 関数の不要な回避コードを削除しました
  • monitor: af_unix の不要な unlink を削除しました
  • network: 設定をクリアする関数に引数を追加しました
  • network: (訳注: ↑で追加した引数に) コールバック関数を設定するようにしました
  • network: ホストの veth デバイスに対する ifindex フィールドを追加しました
  • network: lxc_log_configured_netdevs() 関数を追加しました
  • network: 空のリンクに対する足りなかったチェックを追加しました
  • network: ネットワークカウンタを追加しました
  • network: MTU を無視する場合は警告を出力するようにしました
  • network: インターフェースの index をクリアするようにしました
  • network: 非特権ネットワークのための Open vSwitch を削除しました
  • network: struct lxc_netdev のすべてのフィールドの説明を追加しました
  • network: 作成できなかったネットワークデバイスを削除しないようにしました
  • network: ログの文法を修正しました
  • network: lxc_get_netdev_by_idx() 関数を追加しました
  • network: openvswitch のクリーンアップスレッドの PID をログに記録するようにしました
  • network: インターフェースインデックスをログに記録するようにしました
  • network: ホスト側の veth デバイスのインターフェースインデックスをログに記録するようにしました
  • network: veth_attr.pair と veth_attr.veth1 をログに記録するようにしました
  • network: config_value_empty() 関数を confile_utils に移動しました
  • network: 作成時にネットワークのバリデーションを行うようにしました
  • network: lxc_mkifname() を使う場面ではメモリを確保しないようにしました
  • network: 不要な変数割り当てを削除しました
  • network: netpipe を削除しました
  • network: 正しい名前とインターフェースインデックスを取得するようにしました
  • network: ホストの veth デバイスのインターフェースインデックスを取得するようにしました
  • network: ネットワーク作成部分を作り直しました
  • network: 非特権ネットワークでインターフェースインデックスを使うようにしました
  • network: 保存したネットワークデバイスの記録を止めました
  • network: 正しいネットワークデバイス名を使うようにしました
  • network: send()/recv() を使うようにしました
  • network: ネットワークを削除する場合は単一のヘルパ関数を使うようにしました
  • network: ネットデバイス名にはサイズを静的に割り当てた変数を使うようになりました
  • openvswitch: ポートをインテリジェントに削除するようにしました
  • seccomp: カーネルへのロードが成功したあとに seccomp フィルターをエクスポートするようにしました
  • seccomp: ログにアクション名を出力するようにしました
  • seccomp: s/n-new-privs/no-new-privs/g
  • seccomp: parse_config 関数のコメントを更新しました
  • start: lxc_free_handler() を追加しました
  • start: lxc_init_handler() を追加しました
  • start: すべてのハンドラのフィールドを文書化しました
  • start: idのマッピングなしで lxc_map_ids() を呼ばなくなりました
  • start: 継承した名前空間の fd は閉じなくなりました
  • start: data_sock を利用する側で fd を閉じなくなりました
  • start: pty スレーブのために std{in,out,err} を dup するようにしました
  • start: cgroup がかならずクリーンアップされるようにしました
  • start: lxc_check_inherited() を一般化しました
  • start: tty の fd の送受信をログに記録するようにしました
  • start: unshare(CLONE_NEWCGROUP) のあとで lxc_setup() するようにしました
  • start: 環境変数のセットアップをコンテナのセットアップの前に移動しました
  • start: LXC_LOG_LEVEL 環境変数をフックに与えるようにしました
  • start: 特権の場合に rootfs を pin するようにしました
  • start: 使われていない変数を削除しました
  • start: クライアントに状態が登録されていなくても、古い lxc-monitord にサーバ状態を送るようにしました
  • start: 環境変数を正しく設定するようにしました
  • start: SOCK_DGRAM から SOCK_STREAM に変更しました
  • start: 非特権の ID へのスイッチを特権が必要な処理が終わった最後の瞬間に行うようにしました
  • start: デーモンとして起動する場合は分離したソケットを使うようにしました
  • start: userns_exec_full() を使うようにしました
  • state: lxc_rmstate の宣言を削除しました
  • storage: storage_utils.{c.h} を追加しました
  • storage: segfault を防ぐようにしました
  • storage: 同じパスの場合は元のタイプをデフォルトにしました
  • storage: mkfs.* の出力を記録するようにしました
  • storage: "bdev" -> "storage" とリネームしました
  • storage: userns_exec_full() を使うようにしました
  • storage/dir: 必要なフラグを追加するために add-required_remount_flags 関数を使うようにしました
  • storage/loop: loop ファイルを検出するようにしました
  • storage/overlayfs: 間違ったパスを修正しました
  • storage/overlay: スナップショット時のoverlayfsを扱いを変更しました
  • template: userns.conf から廃止になった bind-mounts を削除しました
  • template: キャッシュされた rootfs をコピーする際に "rsync -SHaAX" を使うようにしました
  • template/alpine: ppc64le のサポートを追加しました
  • template/alpine: ファイルの存在チェック時にサイズが 0 でないこともチェックするようにしました
  • template/archlinux: ロケールを "en-US.UTF-8" から "en_US.UTF-8" に変更しました
  • template/centos: パッケージリストに cronie を追加しました
  • template/centos: i386 と x86_64 以外のアーキの CentOS では AltArch ミラーを使うようになりました
  • template/debian: aarch64 -> arm64 のマッピングを追加しました
  • template/debian: buster を有効なリリースとして追加しました
  • template/debian: getty@ の設定を強制しなくなりました
  • template/debian: デフォルトの Debian ミラーとして deb.debian.org を使うようになりました
  • template/download: 文法エラーを修正しました
  • template/download: shellcheck でスクリプトのサニタイズを行いました
  • template/opensuse: Tumbleweed をサポートするリリースに追加しました
  • template/opensuse: Tumbleweed でのソフトウェアの選択の問題を修正しました
  • template/opensuse: getty.target.wants が存在しない場合の処理を追加しました
  • template/opensuse: leap 42.3 をサポートしました
  • template/opensuse: Tumbleweed は update リポジトリを持たないので対応した処理を行うようにしました
  • template/plamo: コンテナのシャットダウン時の不要な処理を削除しました
  • template/ubuntu: netplan の判断を、config ディレクトリのチェックから netplan コマンドをチェックするようにしました
  • template/ubuntu: upstart の ssh ジョブは現在オプショナルなので、条件付きで mv するようにしました。
  • template/ubuntu: 新しいリリースではデフォルトで netplan をサポートするようになりました
  • tests: lxc-user-nic のテストを新しい文法に合わせました
  • tests: lxc_safe_{u}int() の異常系テストを追加しました
  • tests: アイテムをクリアするテストと設定ファイルのテストを追加しました
  • tests: lxc.rootfs.options の ro オプションのためのテストスクリプトを追加しました
  • tests: idmap パーサーのユニットテストを追加しました
  • tests: NULL ポインタへの参照を防ぎました
  • tests: 可能な場合は常に返り値と期待する値を比較するようにしました
  • tests: チェックの前にネットワークを定義するようにしました
  • tests: ユーザに対するプロセスがないときは失敗しないようにしました
  • tests: すべての設定項目に対するメソッドを強制するようになりました
  • tests: 不要な割り当てを削除しました
  • tests: テンポラリのコンテナディレクトリを削除するようになりました
  • tests: 短命のデーモン化するコンテナのテストを追加しました
  • tests: systemd のハイブリッドな cgroup をサポートしました
  • tools: 追加の cgroup のチェックを追加しました
  • tools: LXC_DEVEL が true の場合は "-devel" と表示するようにしました
  • tools/lxc-attach: /dev/tty がない状況でも利用できるようになりました
  • tools/lxc-checkconfig: "which" を使うようにしました
  • tools/lxc-checkconfig: CONFIG_NETFILTER_XT_MATCH_COMMENT を追加しました
  • tools/lxc-checkconfig: ステータスをチェックするプローブを追加しました
  • tools/lxc-execute: 失敗した場合はエラーメッセージを出力するようにしました
  • tools/lxc-ls: デフォルトですべてのコンテナを返すようになりました
  • tools/lxc-monitord: quit コマンドを受信したら exit するようになりました
  • tools/lxc-unshare: NULL ポインターを与えないようにしました
  • tools/lxc-user-nic: 新たにサブコマンド create, delete を追加しました
  • tools/lxc-user-nic: 削除しようとする前に db のチェックを行うようにしました
  • tools/lxc-user-nic: データベースエントリの追加時の問題を修正しました
  • tools/lxc-user-nic: メモリリークを修正しました
  • tools/lxc-user-nic: メモリを free するようにしました。エラーのチェックを追加しました
  • tools/lxc-user-nic: gcc-7 で警告がでないように変数を初期化するようにしました
  • tools/lxc-user-nic: 指定したユーザやリンク以外の行を削除しないようにしました
  • tools/lxc-user-nic: master と stable の差をなくしました
  • tools/lxc-user-nic: 二重の初期化を削除しました
  • tools/lxc-user-nic: ネットデバイスをリネームする処理を書き換えました
  • tools/lxc-user-nic: ロジックを簡素化しました
  • tools/lxc-user-nic: delete コマンドを実行する際にネットワーク名前空間上で必要な権限があるかどうかチェックするようにしました
  • tools/lxc-usernsexec: 不要な割り当てを削除しました
  • travis: ビルドを修正しました
  • utils: has_fs_type() と is_fs_type() を追加しました
  • utils: lxc_nic_exists() を追加しました
  • utils: lxc_safe_ulong() を追加しました。
  • utils: run_command を追加しました
  • utils: fork 後の子プロセス内で親の fd をクローズするようにしました
  • utils: サイズ 0 のバッファへ書き込まないようにしました
  • utils: lxc_popen() 内で stderr を複製するようにしました
  • utils: lxc_mount_proc_if_needed() を修正しました
  • utils: lxc_popen()/lxc_pclose() を修正しました
  • utils: realpath のメモリリークを修正しました
  • utils: 数字をパースする関数を修正しました
  • utils: ppc64le のビルドを修正しました
  • utils: ブロックされた信号を検出する方法を修正しました
  • utils: lxc_popen() 内の不要な割り当てを削除しました
  • utils: cgfsng.c から utils.{c,h} へヘルパ関数を移動させました
  • utils: lxc_deslashify() 関数を作りなおしました
  • utils: has_fs_type() にスイッチしました
  • utils: オーバーフローしてしまうので 1LU を使うようにしました
  • utils: stat の代わりに access を使うようにしました

ダウンロード

このリリースの tarball は ダウンロードページ から取得できます。そして、各ディストリビューションがすぐに LXC 2.0.9 のパッケージをリリースするでしょう。

個々の変更点に興味がある場合、そして開発の履歴を見たい場合、stable-2.0 ブランチが GitHub にあります。