Back to the news overview

LXC 1.0.4 リリースのお知らせ

13th of June 2014

このリリースは LXC 1.0 シリーズの 4 回目のバグフィックスとなるリリースです。

変更点

  • core: cgmanager に対して nih_dbus_setup を呼ばないようにしました。これはnihのメインループを使うときだけ使うのが適切なものでしたが、lxc では使っていないためです。
  • core: lxc_infoでreallocのチェックをしていなかったのを修正しました。(cppcheckで発見)
  • core: スタートアップ時、全ての shared mount のエントリごとに slave のマークをつけるようにしました。
  • core: /devに作成するシンボリックリンクについて、作成前にすでに存在しているかどうかをチェックするようにしました。
  • core: fdのリークを修正しました。(coverityで発見)
  • core: lxc.archに設定する、文字列として全てのiX86が使用できるようになりました。(訳注: 'linux32', 'i386', 'i486', 'i586', 'athlon', 'linux64' が認識されるようになっています)
  • core: clang 3.4を使ってビルドするときの問題を修正しました。
  • core: 小さな .gitignore の typo を修正しました。
  • core: MUTEX_DEBUGGING時のビルドでのMAX_STACK_DEPTHの定義が抜けていたので追加しました。
  • core: mountall コマンドで問題が生じるので /sys/fs/cgroup を読み込み専用でマウントするのをやめました。
  • core: ケーパビリティをパースするロジックの共通部分を抜き出して一つの共通関数にしました。
  • core: lxc.mount.auto の cgroup と cgroup-full を指定した場合のデフォルト値を調整しました。これは CAP_SYS_ADMIN を保持しているかそうでないかによって選択されます。
  • core: btrfs を使っている時の、非特権でのコンテナの作成、クローン、消去をサポートしました。
  • core: cgmanager で名前付きのサブシステムをサポートしました。
  • core: cgmanager に接続した際、cgroup の絶対パスを使用し cgroups を変更するようにしました。これにより同じユーザーのユーザーセッションをまたいだ非特権 lxc-attach が可能になります。(訳注: lxc-cgroup コマンドも同様です)
  • core: cgmanager が name= 指定のサブシステムをサポートしているかどうかを検出するようになりました。
  • core: 全てのヘッダファイルでの ifndef/define のフォーマットを統一しました。
  • core: lxc-devsetup での bashism (bash特有の機能) を修正しました。
  • ポインタの値を参照した後の null チェックの修正を行いました (coverity で検出)
  • core: bdev_specs 構造体を export しました。これにより API を使う場合に引数として関数で使うことができるようになりました。
  • core: 要求されたスナップショットが実際に存在することを確認するまでは、コンテナを消去しないようにしました。(訳注: lxc-snapshot でスナップショットからコンテナをリストアするとき、リストアするコンテナ名を指定しないとスナップショット元のコンテナを破壊してからリストアを行っていましたが、存在しないスナップショット名を指定してもチェックなしに元のコンテナを破壊してしまっていたので、それを修正しました)
  • core: コンテナの personality を /proc 以下からでなく、コマンドインターフェース (訳注: lxc内部の関数によるインターフェースです) から取得するようにしました。これは 3.15 以上のカーネルで /proc/$$/personality へのアクセスが root に制限されたため、非特権コンテナへの attach に必要になりました。
  • core: シグナル番号の不適切な比較を修正しました。
  • core: -lcgmanger が LIBS 変数に入らないようにしました。(訳注: configure.ac の変更。cgmanager 内の関数の有無をチェックしたいだけなのに LIBS の中に -lcgmanager が入ってしまい、不要なリンクがされてしまうのを防いでいます。)
  • core: ケーパビリティを保持している時の誤ったログメッセージを修正しました。
  • core: 不正なコンテナのスナップショットを取得しようとした際にクラッシュしないよう修正しました。
  • core: root により開始された非特権コンテナに、ブロックデバイスを mount 可能にしました。
  • core: コンテナの開始に失敗した際の不適切なエラーメッセージを隠し、失敗をデバッグする方法を提案するようにしました。
  • core: コンテナの開始前に start hooks (訳注: lxc.hook.start) で指定されたプログラムの path を検証するようにしました。
  • core: failure 時に cgroup パス全体をログするようにしました。
  • apparmor: sem と msg sysctls への書き込みを許可するよう変更しました。
  • doc: lxc-clone man ページ中の typo を修正しました。
  • doc: 日本語 man ページの句読点を変更しました。(訳注: 'fix' というわけではありません。今までは句読点は「,.」(マルチバイトのカンマ、ピリオド) を使っていましたが、一般的な「、。」に変更しました。)
  • doc: lxc-ls man ページの typo を修正しました。
  • doc: いくつかのファイルでライセンスを訂正し、FSF のアドレスを修正しました。
  • doc: lxc.mount.entry での相対パスでの記述に関する説明を載せました。
  • doc: 古い項目が含まれていた TODO ファイルを削除しました。
  • doc: リネームされた man ページへの参照を修正しました。
  • doc: 英語 man ページと同期が取れていなかった部分を更新しました。
  • lxc-autostart: (訳注: master branch でなされた) autoboot/autostart の変更をバックポートしました。

    これは少なくとも systemd システムにて autostart 問題を解決するために必要となります。 この変更により、-g オプションにおける NULL group サポートが追加されました。(group name がない場合にコンマとして認識されます) 新しい特別な "onboot" group を追加し、init scripts (sysvinit, systemd と upstart) が NULL と onboot group 両方を開始するようにセットしました。

    これは boot 時に自動的に開始されない "onboot" group を既に利用していない限り、既存のユーザーに見える変更はありません。
  • lxc-create: "none" bdev type がドキュメント通りに動作するようにしました。
  • lxc-execute: exit する際のメモリリークを修正しました。
  • lxc-ls: ネストされたコンテナーに対して python のサポートがなくても動作するように修正しました。
  • lxc-user-nic: ブリッジが無くてもクラッシュしないようにしました。
  • alpine template: x86 に対して正しい lxc_arch を設定するようにしました。
  • archlinux template: sigpwr ハンドラーを追加しました。
  • archlinux template: lxc.root を btrfs backend のために修正しました。
  • download template: GPG セットアップを3回再試行するようにしました。
  • fedora template: systemd target のセットアップをいくつか修正しました。
  • oracle template: コンテナ内から db_load を使用するようにしました。
  • oracle template: いくつかの rpm scriptlets の warnings/errors を修正しました。
  • oracle template: lxc-patch.py を 644 に変更しました。(rpmlintの警告が修正されます)
  • oracle template: libvirt-lxc 用に securetty に pts/[1-4] を追加するようにしました。
  • oracle template: systemd システムで hostname をセットするようにしました。
  • oracle template: libvirt-lxc 環境での ssh ログインに失敗するのを修正しました。
  • plamo template: ワイヤレスインターフェースを設定しようとしないように変更しました。
  • sshd template: 正しい lxc-init パスを使用するようにしました。
  • python3: 非公式の python2.7 binding でも動作するよう、.py ファイルに若干の変更を加えました。
  • python3: hwaddr がテンプレートでセットされなくてもネットワークテストが失敗しないようにしました。
  • python3: create() に template name が渡されることを必須としないようにしました。
  • python3: 不正な global 設定キーでクラッシュしないように修正しました。
  • python3: snapshot() でクラッシュしないように修正しました。
  • tests: 全ての正しい cgroups に join する事を確認するようにしました。
  • tests: lxc-test-autostart 中の競合発生をワークアラウンドしました。

これらの stable の修正は 14 名のコントリビュータによってなされました。

ダウンロード

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

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