Ubuntu Weekly Topics

2014年12月12日号“Snappy” Ubuntu Core・Ubuntu Make・UWN#395

Snappy Ubuntu Core

「aptやyumはもう古い」という時代がやってくるかもしれません。12月9日に、⁠Snappy Ubuntu Core」と呼ばれる新しいUbuntuファミリーが発表されました

Snappy Ubuntu Coreは、既存のUbuntu Core[1]に相当する「ミニマムな」Ubuntuで、Ubuntu Touch用に開発された新世代のパッケージシステムを採用した「クラウド環境やコンテナ環境を前提にした」OSです。このプロジェクトはきわめて野心的なチャレンジで、Linux環境のありかたを大きく変化させる可能性を秘めています。

Snappy Ubuntu Coreの特徴は次の点です。

  • OSコア部分と、アプリケーションを動かすためのファイルシステムが完全に隔離されている。
  • OSコア部分は読み込み専用だが、任意にイメージを差し替えることでアップデートが可能。
  • 現状ではapt/debパッケージは利用できない。
  • 「snappy packages」と呼ばれる新しいパッケージ形式を採用し、アプリケーションの管理は「アプリケーションをまるごとコンテナに封印した」バイナリイメージをダウンロードして展開するだけ。
  • アプリケーションはそれぞれが完全に独立しつつ共存可能になっており(いわゆるside by side⁠⁠、お互いに影響を及ぼさない。
  • Docker等がもたらした「1アプリケーション1コンテナ」モデルに近いが、完全なコンテナとは異なり、OSコア部分は共有できるようになっている。
  • いつでも、⁠前に正常に動いていた状態」にロールバックできる。

これらの特徴から分かるように、Snappy Ubuntu Coreは、AndroidやiOSのような、システムとアプリケーションを分離した環境です。

基本構造はUbuntu Touchと多くを共有しており、既存のものよりもさらに簡単にアプリケーションをインストールできるという特徴を持っています。いわゆるクラウド環境だけでなく、一般的なデスクトップやサーバー環境にも適用でき、⁠Linuxの管理」という概念を大きく変化させる可能性を秘めたデザインとなっています。

現在はアルファ~ベータフェーズで、インストール済みの環境をKVMイメージをダウンロードするか、Microsoft Azure上のインスタンスを使うもしくはuvtoolを用いてセットアップすることでテストできます。ごく近い将来に、AWS等の各種パブリッククラウド上で動作するテスト用イメージが提供される予定です。

“snappy⁠Ubuntu Coreは大きく分けてふたつのテクノロジー、⁠snappy packagesと呼ばれる新しいパッケージング」「snap可能なルートファイルシステム」で構成されています。⁠snappy⁠も二重の意味で用いられており、単純に「手軽な」⁠高速な」という意味では解釈しきれないものとなっています。順に見ていきましょう。

まずひとつめの技術的アプローチが、⁠snappy packages」です。これはUbuntu Phoneで利用されるClick Packageの発展系です。

snappy packagesは原則として、OS領域とは別の/appsディレクトリにインストールされ、各種データ類も専用のディレクトリに保存されます。Androidの/systemと/dataの使い分けに似たモデルとなっています。依存するライブラリ類も、ごく基本的なもの以外はアプリケーションごとに準備する設計となっており、他のアプリケーションが管理する空間には原則としてアクセスできません。

また、DockerやLXCのイメージをそのまま「アプリケーションのパッケージ」として扱えるようになっており、⁠OSとしての基本機能を提供するシステム領域」と、⁠アプリケーションごとのデータ領域」という空間を持っているイメージです。

おおむねAndroidのアプリケーションに近い設計を採用している点がポイントで、隔離にはuid/gidベースのパーミッションではなく、AppArmorを用いてカーネルレベルで強制する仕組みです。

これにより、各種アプリケーションの「snapshot」的なイメージを入手することで、手軽に動作させることができます。これが一つ目の「snappy」です。

もうひとつの技術的アプローチは、安全性を担保するための「ルートファイルシステムの二重化」です。⁠snappy⁠Ubuntu Coreは「OSのコア部分は単純にダウンロードしてきて展開するだけ」という仕組みなので、⁠なにかの問題でブート不能なイメージが展開されてしまい、システムが起動できなくなる」という問題も同時に抱え込みます。アップデータを完璧に検証するのも一つの方法ではありますが、精神論や人的チェックだけではとても実用はできないので、なんらかの保険が必要になります。

ルートファイルシステムが読み込み専用でない(=通常の)環境であれば、アップデータを部分的にロールバックしたり、問題のある箇所を修正して対応することができます。しかし、ルートファイルシステムが読み込み専用だとどうにも打つ手がありません。ルートファイルシステムを導入する仕組みまで壊れてしまう可能性があるからです。これではアップデータの適用が一種の肝試しになってしまうため、⁠snappy⁠⁠ Ubuntu Coreではルートファイルシステムを二重化し、交互に利用するという仕組みが搭載されています。

これを理解するためには、Snappy Ubuntu Coreのファイルシステムレイアウトを把握する必要があります。Snappy Ubuntu Coreは、次の3つのパーティションで構成されています。

  • "system-a":OS領域その1(原則として読込専用)
  • "system-b":OS領域その2(原則として読込専用)
  • "writable":アプリケーション&データ(書込可能)

system-aとsystem-bは一種の双子構成で、原則として同じイメージが配置されます。通常は片方だけが「アクティブ」になり、システムはこの環境でブートします。そして、アップデートを行う場合はどちらか片方だけを更新します。更新したシステムになにか問題があれば予備になっていた側を「アクティブ」に変更します[2]⁠。こうすることで、少なくともシステム上にひとつは「起動可能なはずの」OS領域が保存され、何か問題があっても対処できるようになります。

これが二つ目の⁠snappy⁠の意味で、⁠いつでも簡単にスイッチできる」環境を意味すると考えられます。

……ここまで見てきたように、⁠snappy⁠環境は非常に「現代的」な設計で、古典的なLinux/Unixのデザインから、大きく離れたものとなっています。

スマートフォンやタブレット用OSに近いデザイン思想を持っている点がポイントで、既存のLinux環境における、⁠システム管理者がパッケージシステムを用いて、ユーザーが利用できる環境」をデザインするという発想を捨ててしまい、コンテナや仮想アプライアンスに近い、⁠ディストリビューターがアプリケーション実行環境を整える」という考え方を採用しています。

現時点では「snappyな」Ubuntu Coreが提供されているだけですが、Ubuntu PhoneやJuju、LXDといったUbuntuファミリーの統合を考えると(+「snappyな」環境を前提にしたエコシステムの構築が順調に進めば⁠⁠、⁠snappyな」Ubuntu DesktopやUbuntu Serverが登場する可能性もあります。

進歩の仕方によってはUbuntuだけでなく、さまざまなLinuxディストリビューションに影響を与える可能性もあり、楽しみな技術が登場したと言えそうです。⁠snappy⁠環境に興味を持った場合、開発者向けのドキュメントを参照してください。

“Ubuntu Make”

「Ubuntu上で、開発者向けツールを簡単にセットアップできる」ツール、Ubuntu Developer Tools Center(UDTC)の名前が変更になりました。

新しい名前はUbuntu Makeです。現時点ではリブランドに近く、中身の変化はありません。

UWN#395

Ubuntu Weekly Newsletter #395がリリースされています。

その他のニュース

  • VividフェーズにおけるQA体制について[3]⁠。Ubuntuは商用ソフトウェアとは異なり、かなりの作業をボランティアによる貢献に依存しているため、手動・自動を取り混ぜつつ、分散作業をうまく集める仕組みが用意されています。

今週のセキュリティアップデート

usn-2431-1:mod_wsgiのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2014-December/002748.html
  • Ubuntu 14.10・14.04 LTS・12.04 LTS用のアップデータがリリースされています。CVE-2014-8583を修正します。
  • mod_wsgiの動作上、パーミッションを十分に考慮せずに一時ディレクトリを作成していました。これを応用することで、mod_wsgiと同じ権限で動作する任意のコードを実行させることができます。
  • 対処方法:通常の場合、アップデータを適用することで問題を解決できます。
usn-2428-1:Thunderbirdのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2014-December/002749.html
  • Ubuntu 14.10・14.04 LTS・12.04 LTS用のアップデータがリリースされています。CVE-2014-1587, CVE-2014-1590, CVE-2014-1592, CVE-2014-1593, CVE-2014-1594を修正します。
  • Thunderbird 31.3.0のUbuntuパッケージ版です。
  • 対処方法:アップデータを適用の上、Thunderbirdを再起動してください。
usn-2432-1:GNU C Libraryのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2014-December/002750.html
  • Ubuntu 14.10・14.04 LTS・12.04 LTS・10.04 LTS用のアップデータがリリースされています。CVE-2012-6656, CVE-2014-6040, CVE-2014-7817を修正します。
  • glibc iconvで特定の文字列を変換しようとした際にクラッシュが発生する問題と、wordexp()関数の呼び出し時にWRDE_NOCMDが無視され、結果として入力値からシェルコマンドを呼び出せる問題を修正します。
  • 対処方法:アップデータを適用の上、システムを再起動してください。
usn-2433-1:tcpdumpのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2014-December/002751.html
  • Ubuntu 14.10・14.04 LTS・12.04 LTS・10.04 LTS用のアップデータがリリースされています。CVE-2014-8767, CVE-2014-8768, CVE-2014-8769, CVE-2014-9140を修正します。
  • 特定のパケットを受け取った時にメモリ破壊を伴うクラッシュが生じることがありました。
  • 対処方法:通常の場合、アップデータを適用することで問題を解決できます。
usn-2431-2:MAASのアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2014-December/002752.html
  • Ubuntu 14.10・14.04 LTS・12.04 LTS用のアップデータがリリースされています。usn-2431-1でlibapache2-mod-wsgiを更新するとMAASが応答しなくなる問題を修正します。
  • 対処方法:通常の場合、アップデータを適用することで問題を解決できます。
usn-2434-1:JasPerのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2014-December/002753.html
  • Ubuntu 14.10・14.04 LTS・12.04 LTS用のアップデータがリリースされています。CVE-2014-9029を修正します。
  • 悪意ある加工の施されたJPEG-2000ファイルを開くと、メモリ破壊を伴うクラッシュが生じることがありました。
  • 対処方法:通常の場合、アップデータを適用することで問題を解決できます。
usn-2434-2:Ghostscriptのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2014-December/002754.html
  • Ubuntu 10.04 LTS用のアップデータがリリースされています。usn-2434-1と同じ修正を、Ghostscript組み込みのJasPerライブラリに対して適用します。
  • 対処方法:通常の場合、アップデータを適用することで問題を解決できます。
usn-2435-1:Graphvizのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2014-December/002755.html
  • Ubuntu 14.10・14.04 LTS・12.04 LTS・10.04 LTS用のアップデータがリリースされています。CVE-2014-9157を修正します。
  • 悪意ある加工を施したdotファイルを処理させることで、メモリ破壊を伴うクラッシュを誘発することができました。
  • 対処方法:通常の場合、アップデータを適用することで問題を解決できます。
usn-2436-1:X.Org X serverのセキュリティアップデート
usn-2437-1:Bindのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2014-December/002757.html
  • Ubuntu 14.10・14.04 LTS・12.04 LTS・10.04 LTS用のアップデータがリリースされています。CVE-2014-8500を修正します。
  • 特定のクエリを受け取った場合に、namedが無限ループ的なリソース過大消費に陥ることがありました。
  • 対処方法:通常の場合、アップデータを適用することで問題を解決できます。
usn-2436-2:X.Org X serverのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2014-December/002758.html
  • Ubuntu 14.10・14.04 LTS・12.04 LTS用のアップデータがリリースされています。
  • usn-2436-1の、情報公開日に公開された追加パッチです。
  • 対処方法:アップデータを適用の上、システムを再起動してください。

おすすめ記事

記事・ニュース一覧