LXC 3.0.3 リリースのお知らせ¶
2018/11/22
はじめに ¶
LXC チームは LXC 3.0.3 のリリースをおしらせできることをうれしく思います!
Stable に対するバグフィックスのためのリリースですので、大きな変更はありません。バグフィックスと細かな使い勝手の改良にフォーカスしています。
ハイライト ¶
- コンパイラが持つよりセキュアなバイナリを生成するための機能を使うためにビルドフラグを見直しました
- 新しいカーネルで使える netlink の厳格なプロパティチェックのサポートを追加しました
- netlink の新しいインターフェース・アドレスの netns API のサポートを追加しました
- 起動時のカーネルキーリングの処理を追加しました
バグ修正 (LXC)¶
- CONTRIBUTING: カーネルのコーディングスタイルへのリファレンスを更新しました
- CONTRIBUTING: カーネルの最新のオンラインドキュメントへリンクするようにしました
- CONTRIBUTING: CODING_STYLE.md を参照するように記載しました
- CODING_STYLE: 最初にカーネルのコーディングスタイルについて記載しました
- CONTRIBUTING: 文法間違いを修正しました
- CODING_STLYE:
extern
の使い方の説明を簡単にしました - CODING_STLYE: カーネルのコーディングスタイルに含まれるセクションを削除しました
- CODING_STYLE: Markdown のセクションヘッダを調整しました
- lxc_init: remove_self 関数内で s/SYSDEBUG()/SYSERROR()/g
- tools: デフォルトのログプライオリティを追加し、コードのクリーンアップをしました
- storage_utils: 重複している関数を移動させました
- tools:
lxc-exec
のコマンドラインのパースの問題を修正しました - lseek - integer overflow を修正しました
- cmd:
lxc-usernsexec
の include を並べ直しました - cmd:
lxc-usernsexec
で utils.{c,h} のヘルパーを使うようにしました - cmd:
lxc-usernsexec
を簡素化してクリーンアップしました - cmd:
lxc-usernsexec
で安全な数字のパーサーを使うようにしました - macro: 新たにマクロを追加したり、移動したり、削除したりしました。それらのマクロを使っていた部分を更新しました
- tools: (訳注:
lxc-autostart
で)コンテナの起動が完全に失敗したのか、一部のコンテナのみ失敗したのかを示すようにしました - storage, storage_utils: 子プロセスでは
exit()
の代わりに_exit()
を使うようにしました - conf: tty セットアップ時の path と lxcpath の混同を修正しました
- cmd: 使用前に変数を再割当てしないようにしました
- cmd:
count
変数のスコープ範囲を減らしました - cmd: clang-format が見つけたフォーマットの問題を修正しました
- utils:
{file,string}\_utils.{c,h}
に分離しました - pam_cgfs: liblxc と同じソースからビルドするようにしました
- conf: 完全に非特権な場合の devpts マウントの問題を修正しました
- attach: 構造体の宣言を先頭に移動させました
- Makefile: 未定義シンボルを許さないようにしました
- autotools: コンパイラが十分に新しいかどうかチェックするようにしました
- log:
strerror_r()
の複数バージョンを扱えるようにしました - autotools:
--{disable,enable}-thread-safety
を追加しました - log:
ENFORCE_THREAD_SAFETY
エラー時にビルドを失敗させるようにしました - {file,string}_utils:
NO_LOG
を削除しました - initutils: 不要なコメントを削除しました
- string_utils: 不要なヘッダの include を削除しました
- string_utils:
remove_trailing_slashes()
を追加しました - Makefile: 最後の
pam_cgfs
の特別なケースを削除しました - conf: 足りないヘッダを追加しました
- typo を修正しました
- ifaddrs:
getifaddrs()
の安全な実装を追加しました - Makefile: 条件によって
ifaddrs.h
を include するようにしました - execute: 非特権の場合は
lxc-init
のロギングをスキップするようにしました - execute:
/proc/1/fd/<nr>
の代わりに/proc/self/fd/<nr>
を与えるようにしました - tests:
get_item.c
をクリーンアップしました - build: musl に対する修正を行いました
- configure: ヘッダのチェック順序を変更しました
- compiler:
compiler.h
を追加しました - commands:
lxc_cmd_get_init_pid()
のエラー時は -1 を返すようにしました - tests: basic.c を追加しました
- tests: Makefile のクリーンアップを行いました
- commands: init pid に対する
EPIPE
時は必ず -1 が送られるようにしました - Makefile: 正しく
noinst_HEADERS
にifaddrs.h
を追加されるようにしました - tree-wide: 静的な配列には sizeof を使うようにしました
- commands:
intmax_t
を与えるようにしました - commands: ポインタに変換する前に割り当てるようにしました
- macro: 正しくバッファの長さを計算するようにしました
- caps: 配列境界への不正なアクセスを修正しました
- utils: 安全なプログラムにしました
- nl: 重複する define を削除しました
- 文法エラーを修正しました
- commands: エラーメッセージを改良しました
- file_utils: add
lxc_recv_nointr()
を追加しました - commands: errno を設定し、-1 を返すようにしました
- log: errno を上書きしないようにしました
- log,nl: errno を保存するようにしました
- tree-wide: s/recv()/lxc_recv_nointr()/g
- file_utils:
lxc_send_nointr()
を追加しました - tree-wide: s/send()/lxc_send_nointr()/g
- log:
log_append_logfile()
で新たにエラーパスを追加しました - lxccontainer: ポインターの逆参照の問題を修正しました
- lxc:
--disable-werror
を付けた場合のビルドの問題を修正しました - utils:
get_ns_uid()
を改良し、get_ns_gid()
、lxc_switch_uid_gid()
を追加しました - attach: id の切り替えをよりスマートに扱うようになりました
- start: 不要なシステムコール呼び出しを防ぐようにしました
- utils:
lxc_setgroups()
とlxc_switch_uid_gid()
は bool を返すようにしました - lxccontainer: (訳注: int を使っていたのを)正しく
pid_t
を使うようにしました - conf:
sysfs:mixed
のときの余計なMS_BIND
を削除しました - network:
lxc_netns_set_nsid()
内で正しい型を使うようにしました - network:
lxc_netns_get_nsid()
を追加しました - remove unused variables
- file_utils: 使っていない関数を削除しました
- network: 細かい調整を行いました
- log: 共通関数を追加しました
- attach: 子プロセスで ipc ソケットを shutdown しないようにしました
- log, security, file_utils: 広すぎる、一貫性のない全ユーザー向けのパーミッションを修正しました
- attach: 標準的なシェルの終了コードを返すようになりました
- af_unix: set sockaddr で重複するコードを削除するために関数を追加しました
- lxccontainer:
set_cgroup_item()
からロックを削除しました - apparmor: configure で指定した rootfs のパスを見るようにしました(訳注: apparmorで指定しているrootfsのパスが決め打ちだった) (closes #2617)
- conf:
realpath()
でバッファオーバーフローを防ぐために2つ目のパラメータとして null を使うようにしました - start: s/backgrounded/daemonize/g
- cgfsng:
__cgfsng_ops
attribute でマークしました - autotools:
-Wimplicit-fallthrough
を追加しました - cgroup: コンテナ特有の cgroup 関数をリネームしました
- cgroups: s/fullcgpath/container_full_path/g
- cgroups: 欠けていた string.h の include を追加しました
- cgroups: s/base_cgroup/container_base_path/g
- autotools: 間違った
AX_CHECK_COMPILE_FLAG
のテストを修正しました - compiler: s/__fallthrough__/__fallthrough/g
- compiler: s/__noreturn__/__noreturn/g
- tree-wide:
sizeof()
をSIZEOF2STRLEN()
で置き換えました - compiler: bionic では
__attribute__((noreturn))
を定義するようにしました - autotools:
-Wcast-align, -Wstrict-prototypes
のサポートを追加しました - network:
netns_getifaddrs()
の実装を追加しました - tree_wide:
netns_getifaddrs()
に切り替えました - netns_ifaddrs: キャストを安全とマークしました
- autotools: ビルドの問題を修正しました
- stop: freezer が利用可能な場合のみ freeze するようにしました
- doc: 文書を少し調整しました
- cgfsng:
get_hierarchy()
で errno をENOENT
に設定するようにしました - cgfsng: s/cgfsng_destroy/cgfsng_payload_destroy/g
- cgfsng: s/25/INTTYPE_TO_STRLEN(pid_t)/g
- compiler: bionic で
__noreturn
を修正しました - compiler: __hot attribute を追加しました
- netns_ifaddrs: 欠けていた include を追加しました
- tree-wide: bionic でのビルドを修正するために include を修正しました
- template: OCI テンプレートが文字のユーザー情報を扱えるようになりました
- btrfs: btrfs コンテナでの問題を修正しました
- oci-template:
/etc/passwd,group
がない場合のロジックを追加しました - configure:
-Wimplicit-fallthrough
のチェックを修正しました - utils:
lxc_setup_keyring()
を追加しました - autotools:
-z relro
と-z now
をサポートしました - netns_ifaddrs:
IFLA_STATS{64}
を正しく扱うようにしました - syscall_wrappers:
pivot_root()
を追加しました - raw_syscalls:
lxc_raw_execveat()
を追加しました - raw_syscalls:
lxc_raw_clone{_cb}()
を追加しました - raw_syscalls:
lxc_raw_getpid()
を追加しました - tests: 欠けていたビルド時の依存情報を追加しました
- netns_ifaddrs:
struct rtnl_link_stats64
だけを使うようにしました - cgroups: 不要な行を削除しました
- netns_iaddrs: 使われていない関数を削除しました
- parse:
MAP_POPULATE
を使って設定ファイルを prefault するようにしました - cgfsng: 小さい競合状態を防ぎました
- utils:
lxc_set_death_signal()
を修正しました - cgfsng: v1 cpuset 階層を最初に扱うようにしました
- syscall_wrappers: 関数の定義をいくつか移動させました
- raw_syscalls:
lxc_raw_gettid()
を移動しました - tools: lxc-start: 使われていない引数を削除しました
- tools: lxc-unshare: 不要な初期化を削除しました
- parse:
access()
のチェックを削除しました - parse: 設定のパースに失敗したときはエラーを報告するようにしました
- attach: シグナルマスクのリセットを行うようにしました
- start: ログレベルを変更しました
- attach: 足りなかった
pthread.h
の include を追加しました - netns_ifaddrs:
NETLINK_DUMP_STRICT_CHK
を使ったチェックを行うようにしました - parse: 失敗したログを出力するようにしました
- test: 不正な設定キーをテストするようにしました
- confile: 使っていない変数を削除しました
- parse: 初期化していないぽいんたへのアクセスを修正しました
- rpm パッケージ作成時の静的ライブラリの問題を修正しました
- rpm install の post セクションのスクリプトエラーを修正しました
- conf: prlimit のセットアップ時のログを出力するようにしました
- conf:
lxc.mount.entry
後にverify_start_hooks()
を実行するようにしました - checkpoint:
do_dump()
実行時の問題を修正しました - monitor: ログのクリーンアップを行いました
- monitor: モニターのソケット名が長すぎないかチェックするようになりました
- commands_utils: 抽象(abstract) UNIX ソケット名生成のコードの冗長さを改良しました
- autools:
-fno-strict-aliasing
を使うようにしました - checkconfig: カーネルバージョンが取得できない場合の処理を追加しました
- lxc-init:
/dev/console
にログを出力するようにしました - autotools:
--disable-commands
を指定した場合のビルドの問題を修正しました - string_utils: バッファオーバーフローの問題を修正しました
- include:
strlcpy()
を簡素化しました - raw_syscalls: 常に関数が返り値を返すようにしました
- confile:
append_unexp_config_line()
の問題を修正しました - parse: パース中の設定値の更新から保護するようにしました
- parse: 初期化されていない値を修正しました
- tree-wide: コーディングスタイルの修正を行いました
- start, commands: 簡素化しました
- autotools: コンパイラベースの hardening を行うようにしました
- confile: グローバル変数を上書きしないようにしました
- cgfsng: インクリメントを分岐の外に出しました
- cmd/lxc_init, monitord, tools: グローバル変数を上書きしないようにしました
- state,conf: チェックの繰り返しを削除しました
- conf:
lxc_pivot_root()
内でO_CLOEXEC
を使うようにしました - lxccontainer: goto ターゲットからチェックを削除しました
- start: 0 より小さい値を取れないようにしました
- tools/lxc_stop: 正しくチェックするようにしました
- coverity によって見つかった問題を修正しました
- storage_utils: エラーハンドリングを追加しました
- parse, storage_utils: クリーンアップしました
- スペルの修正を行いました
- include: macro.h を正しく include するようにしました
- 不要なスペースを削除しました
- caps:
read
をlxc_read_nointr
で置き換えました - log:
write
をlxc_write_nointr
に置き換えました - pam_cgfs: ファイルユーティリティ関数の重複を削除しました
- cgfs: ユーティリティ関数の重複を削除しました
- pam_cgfs: cap と log に対する依存を削除しました
- utils: 例外の場合に errno をログに出力するようにしました
lvcreate
コマンドに-qq
オプションを追加しました。これにより LVM サブシステムがlxc-create
コマンドのハングアップを防ぐために no と答えることを防ぎます- utils: キーリングの割当失敗を致命的としないようにしました
- autotools: `lxc-{create,copy} のビルドの問題を修正しました
- cgfsng: 要求仕様から freezer を削除しました
- start:
cgroup_exit()
を二度呼ばないようにしました
バグ修正(LXCテンプレート) ¶
- alpine:
setpcap
を drop するのをオプショナルにしました - plamo: デフォルトバージョンを 7.x にしました
- sabayon: ディレクトリが存在するときに失敗しないようにしました
バグ修正(python3 バインディング) ¶
- このリリースでは変更はありません。バージョンを上げただけです
サポートとアップグレード ¶
LXC 3.0.3 は 2023 年 6 月までサポートされる最新の LTS リリースです。
利用可能になった最新のバグ修正リリースに更新することをお勧めします。
ダウンロード ¶
- LXC リリース tarball : lxc-3.0.3.tar.gz (GPG: lxc-3.0.3.tar.gz.asc)
- LXC テンプレート tarball : lxc-templates-3.0.3.tar.gz (GPG: lxc-templates-3.0.3.tar.gz.asc)
- LXC python3 バインディング : python3-lxc-3.0.3.tar.gz (GPG: python3-lxc-3.0.3.tar.gz.asc)
Contents