Ubuntu Weekly Recipe

第310回 Ubuntu Touch用「Ubuntu Emulator」を使う

この記事を読むのに必要な時間:およそ 5 分

現在開発中のUbuntu Touchでは,Android SDKと同様にPC上で実行可能なエミュレーターを開発者向けに提供する予定です。そこで今回はその「Ubuntu Emulator」を操作する方法について紹介します。

Ubuntu Emulator

Ubuntu Touchは今のところ,スマートフォンやタブレットをメインターゲットにして開発を行っています。このため,これまではNexus 4やNexus 7といったターゲットデバイス上でイメージをインストールし,各種アプリを実行する形で開発を行ってきました。

ただしすべての開発者がUbuntu Touchが動作する実デバイスを持っているとは限りません。そこで上記と並行して,実デバイスを持っていない開発者やテストの自動化のために,エミュレーターも開発が行われていました。2013年6月ぐらいには,Androidエミュレーターベースのものができあがってはいたのですが,Mirへの移行やUbuntu Touchのホスト・ゲストの切り替え,その他もろもろの事情により,より実デバイスに近い形で動作するようになったのは同年11月になってからだったのです。

エミュレーターの開発に目処が立ったことを受けて,イメージの作成や起動を行うGo言語で作成されたヘルパーツールを作成し,同年12月にはUbuntu Server上でエミュレーターを使ったTouchとコアアプリの継続的な機能テストがスタート,2014年1月にはUbuntu Touchのメイン開発プラットフォームが「armhf/x86エミュレーター」「Nexus 4,Nexus 7 2013」になる旨のアナウンス日本語記事も行われています。さらにアプリの翻訳者向けにクイックスタートガイドも公開されました

これによりAndroidやUbuntu上のマルチアーキテクチャ,クロスコンパイラに詳しくない利用者でも,簡単にUbuntu Touchとそのアプリを試せるようになったのです。ここからは,この「Ubuntu Emulator」のインストール方法やその使い方を説明します。

必要条件

Ubuntu Emulatorを動かすために必要な条件は次のとおりです。

  • エミュレーターに512Mバイトのメモリを割り当て可能なこと
  • エミュレーターのディスク容量として4Gバイト割り当て可能なこと
  • ホスト上でOpenGLが動作可能なこと

後述するように,このエミュレーターはQEMUを用いてARMバイナリをエミュレートする形で実現しています。そのためよりスムーズに動かすためには,できるだけ高速なCPUも必要です。

インストール方法

現在開発中のTrustyであれば,Ubuntu Emulatorのインストールは非常に簡単です注1)⁠

$ sudo apt-get update
$ sudo apt-get install ubuntu-emulator

Android部分のライセンス上の制約からMultiverseは有効にしておいてください。またAndroid SDKをベースにしたエミュレーターであるため,amd64マシンでもi386版のパッケージがインストールされます。android-tools-adbパッケージによってudevルールが更新される場合は,インストール後の再起動も要求されるでしょう。

CanonicalのDavid Planellaが公開しているクイックスタートガイドでは,Ubuntu 13.10へのインストール方法も記載されています。しかしこれはTrustyのバイナリパッケージをダウンロードしてきてインストールするという方法なので,環境によっては正しく動かない可能性もあります。マシンスペックに余裕があるようなら,この方法よりは仮想マシンにTrustyをインストールして実行する方が良いでしょう。ただしゲスト上で3Dアクセラレーションが有効になっている必要はありますので,たとえばVirtualBoxではGuest Addtionsを導入した環境を用意してください。ホストがTrustyのときと比べてリソースの消費が多くなりますが,もともととても緩慢な動作であるため,そこまで違いは気になりません。

注1)
過去にandroid-emulatorパッケージをインストールしていた場合は,依存関係に問題が生じる場合があるので,Wikiの手順を参考に対応を行ってください。

イメージの作成と起動

最初にエミュレーターのイメージを作成します。このコマンドを実行するためには管理者権限が必要です。

$ sudo ubuntu-emulator create testimage

ubuntu-emulatorコマンドのcreateサブコマンドを実行することで,Ubuntu Touchのシステムイメージを提供するサーバから,必要なイメージファイルをダウンロードし,⁠testimage」という名前のイメージを作成します。オプションを指定しない場合は,devel-proposedの最新版を取得します。イメージのリビジョンやチャンネルを指定したい場合は,⁠ubuntu-emulator create --help」を参考にオプションを指定してください。

ダウンロードしたファイルは「~/.cache/ubuntuimage」に,作成したイメージファイルは「~/.local/share/ubuntu-emulator」に保存されます。

.cache/ubuntuimages/
├── [4.0K]  devel-proposed
│      └── [4.0K]  goldfish
│          ├── [ 352]  version-158.tar.xz
│          └── [ 490]  version-158.tar.xz.asc
└── [4.0K]  pool
    ├── [ 21M]  device-e582a2d68a69b37290a090c0c3f716e62f7468f44b0b170112e7ca247eff2101.tar.xz
    ├── [ 490]  device-e582a2d68a69b37290a090c0c3f716e62f7468f44b0b170112e7ca247eff2101.tar.xz.asc
    ├── [314M]  ubuntu-cf45ecab595b5204893fb2ce94eb74295a352e861610b5c3a64043855303bd85.tar.xz
    └── [ 490]  ubuntu-cf45ecab595b5204893fb2ce94eb74295a352e861610b5c3a64043855303bd85.tar.xz.asc

.local/share/ubuntu-emulator/
└── [4.0K]  testimage
    ├── [ 925]  .stamp
    ├── [5.3M]  boot.img
    ├── [2.3M]  ramdisk.img
    ├── [5.1M]  recovery.img
    ├── [1.3G]  sdcard.img
    ├── [ 48M]  system.img
    └── [3.0M]  ubuntu-kernel

ダウンロードしたファイルのうち,⁠version-」は使用しているイメージのバージョンなどを保存するメタデータ,⁠device-」はブート領域やリカバリー領域,デバイスに依存するAndroidのイメージファイルが保存されています。⁠ubuntu-」がUbuntuのルートファイルシステムそのものです。ここまでは,通常の実機にインストールする時にダウンロードするイメージファイルと同じです。

作成したイメージファイルは,Android Boot Imageだったりただのシステムパーティションだったりします。前者についてはabootimgコマンドで展開できますし,後者はローカルにマウントすることで中身を見ることができます。

Ubuntu Emulatorの起動はrunサブコマンドに作成したイメージ名を指定するだけです。

$ ubuntu-emulator run testimage
(起動ログが表示される)
(マシンのスペックに依存するが5分ぐらいたつとログインプロンプトが表示される)
Ubuntu Trusty Tahr (development branch) ubuntu-phablet ttyS2

ubuntu-phablet login:

PCで起動する場合はarmバイナリをx86上でQEMUを用いてエミュレーションすることになるので,かなり動作が緩慢です。さらに,端末にログインプロンプトが表示されたあとも,各種サービスの立ち上げや,必要なClickパッケージを別途インストールする作業も行われるので,実際には起動完了まで10分から20分ぐらい経過します。

最終的に次のようなウェルカムスクリーンが表示されたら起動完了です注2)⁠もしログインプロンプトが表示されたものの,暗い画面のままで20分以上たっているようであれば,Unity 8がクラッシュしている可能性があります。⁠Ctrl-C」で一旦エミュレーターを終了したうえで,再度起動してみてください。

図1 Ubuntu Touchのウェルカムスクリーン

図1 Ubuntu Touchのウェルカムスクリーン

図2 初回起動時は操作ガイドも表示される

図2 初回起動時は操作ガイドも表示される

注2)
どこかで見たことのあるデバイスだ,と思った方もいるかもしれません。これは昨年話題になった,Ubuntu Edgeのデザインを元にスキンが作られています。Android SDKと同じスキンが使えますので,別のスキンを使いたい場合は/usr/share/ubuntu-emulator/skins/の下にスキン名のフォルダを作成し,そこにスキンデータを入れた上で,runサブコマンドに--skinオプションを指定してください。

著者プロフィール

柴田充也(しばたみつや)

Ubuntu Japanese Team Member。数年前にLaunchpad上でStellariumの翻訳をしたことがきっかけで,Ubuntuの翻訳にも関わるようになりました。

コメント

コメントの記入