今年4月にリリースされるUbuntu 13.04の目玉の一つは、タブレットであるNexus 7の対応です。今年の新春特別企画では、Nexus 7のAndroid上にDebianをインストールする方法を取り上げましたが、今回は直接Ubuntuをインストールする方法を紹介します。
Nexus 7でUbuntuを使うメリット
「Nexus 7」は昨年Googleから発売された7インチ型のタブレットです。安価でそれなりのスペック、そして何よりAndroidタブレットのリファレンス機として最新バージョンのAndroidが搭載されていることもあって、2012年のヒット商品となりました。
Android端末としてのNexus 7については、「Androidケータイの歩き方」の「第92回」からのシリーズが参考になります。また、Ubuntuとの連携はSoftware Design 2013年1月号のUbuntu Monthly Reportでも紹介していますし、前述のとおりRecipeの新春特別企画ではAndroid上にもう一つの環境としてDebianをインストールして使う方法を紹介しています。
今回はそれらの方法とは異なり「Nexus 7上のAndroidを削除して、Ubuntuをインストールする」方法を説明します。つまり既存のAndroidは使えなくなります[1]。
なぜわざわざUbuntuを使うの?
Androidではなく、あえてUbuntuを使う意味は何でしょうか。
まず、タブレットを省電力で長寿命なポータブルPCとして使えるということがあげられます。ノートPCに比べると画面サイズや性能に見劣りはするものの、それを補って余りある携帯性とバッテリーの持ち時間は魅力的です[2]。
さらにデスクトップで使用していたソフトウェアが「そのまま」利用できるのもメリットの一つです。単純に「ソフトウェア資産」と考えた場合、Androidのマーケットは十分に充実してきましたので、必ずしもUbuntuに優位性があるわけではありません。しかしLibreOfficeや各種エディタ、スクリプトやプログラムの実行環境として見た場合、Ubuntuのほうがはるかに自由度があります。母艦となるPCと同じソフトウェアを動かせるというのは、Androidにはない魅力でしょう。
Ubuntuの開発者の観点から見るとNexus 7のような、PCと比べて動作が遅くメモリーが少ない環境で「きちんと動く」ようにすることは、フットプリントの削減などの作業において格好のベンチマーク対象となります。事実、Nexus 7対応の過程で、いろいろなサービスのメモリー使用量の調査や削減策が実施されてきました。この恩恵は、デスクトップユーザーも次のリリースで享受できるのです。
と、がんばってそれらしい趣旨を列挙してみましたが、一番の動機は「興味本位」です。
Ubuntuできちんと動くの?
マルチタッチディスプレイやWiFiについては問題なく動くので、必要最低限の作業は可能です。それ以外のデバイスについては今のところ動作がまちまちです。
以下は、カーネルのバージョンが3.1.10-9-nexus7 #25、ubuntu-defaults-nexus7パッケージのバージョンが0.50の時点での状況です[3]。
電源管理とバッテリー
サスペンドと復帰は問題なく行えます。たまにカーネルパニックするという報告もあがっていますが、あまり頻度は高くないようです。電源ボタンを押すと、自動的にサスペンドに移行します。画面が消えるまで3秒ぐらいかかっていますが、それほど問題にはならないでしょう。もう一度電源ボタンを押すと2、3秒で復帰します。
システム設定の「電源」で、バッテリー動作時の「次の時間アイドル状態が続けばサスペンドする」を「サスペンドしない」から変更しておけば、放置してもディスプレイがオフになるだけでなく自動サスペンドにも移行します。
ただしロック画面では、まだソフトウェアキーボードでうまく入力できない問題があるため、システム設定の「Brightness & Lock」で「ロックする」をオフのままにしておきましょう。
バッテリーの持ちもAndroidほどではないにしろ、悪くないようです。バッテリーステータスの値がたまにおかしくなる問題は先週解決しました。
サウンド
音は鳴ります。ただし一度サスペンドへの移行と復帰を行わないと音が鳴らないという問題はあります。
もちろん、ヘッドフォンジャックも動作しますし、ジャックに接続するとメインスピーカーはオフになる動作になっています。またサウンドの設定から、スピーカー、ヘッドフォン単位で独立にボリュームコントロールすることも可能です。
USB端子
Nexus 7には充電、データ通信用のMicro-BのUSB端子が存在します。これをPCのUSB端子に接続すれば自動的に充電状態になります[4]。
USBホストとして動作するため、USBキーボードなどの周辺機器をつなぐことも可能です。Micro-BオスとUSB Aメスの端子がついた変換ケーブルを用意しましょう。例えばLogicoolのUnifyingレシーバーをつなげることで、無線キーボードやマウスも使用できました。
ちなみに、Nexus 7にUbuntuをインストールした後は、PCとUSBケーブルをつなぐとPCからシリアルコンソールログインできます。例えば接続ソフトウェアとしてscreenを使うなら、PC側で次のコマンドを実行してください。
コンソールを閉じるのは、Ctrl-Aを入力したあとにKを押します。一般ユーザーでscreenを実行したいなら、あらかじめPC側でユーザーをdialoutグループに追加しておきましょう。
グループに追加後、ログインしなおせば一般ユーザーで/dev/ttyACM0にアクセスできます。
Bluetooth
Bluetoothも使用できます。例えばBluetoothキーボードをペアリングして使うぐらいであれば、特に問題なく動作しました。
加速度計と照度計
加速度計と照度計は動作しています。このため、タブレットを傾けると自動的に画面が回転します。ソフトウェアキーボードの位置もそれにあわせて調整されます。照度計が動いているので、周囲が暗いところでは画面も暗く、明るいところでは画面が明るくなります。
照度計については、システム設定による明るさ調整が機能しなくなるため、使用形態によっては切っておいたほうがいいかもしれません。動作を止めたい場合は次のコマンドを実行すると良いでしょう。
カメラ、NFC、GPS
いずれも動作しません。作業は行われているようで、NFCとGPSはめどがたってきた雰囲気です。
ソフトウェア
カーネルはAndroid用のTegraカーネルをベースに、いくつかのUbuntuの修正を加えてビルドしています、このためデスクトップ版とはバージョンからして異なります。
その他のソフトウェアは、デスクトップとほぼ同じです。例えばLibreOfficeやChromiumもデスクトップ版と同じものが使えます。ただしARM用のAdobeのFlashプラグインは存在しません。
インストールも同じくソフトウェアセンターから行えますが、ソフトウェアセンター自体が動作が重いアプリケーションなので、ARM版の場合は端末を開いてapt-getコマンドでインストールした方が楽かもしれません。
Ubuntu自体は開発版である13.04を使います。このためリリース版に比べて安定度に問題があり、アップデートによって起動しなくなる可能性もあることは覚えておいてください。
インストール方法
Nexus 7へのUbuntuのインストールはほぼ自動化されているので、通常の方法と同じくらい簡単です。
必要なものは次のとおりです。
- UbuntuがインストールされたPC(12.04 LTS以降)
- Nexus 7(8GB、16GB、32GBいずれでもOK)
- PCとNexus 7を接続するUSBケーブル(Nexus 7付属のもので可)
- 高速なインターネット環境(インストールイメージダウンロード用)
- 1時間ほどの誰にも邪魔されない時間
- 致命的なトラブルがあってもめげない心
必要なソフトウェアのインストール
最初に、Ubuntu PCの方に必要なソフトウェアをインストールします。端末を開いて次のコマンドを入力してください。
これでインストーラーとAndroidのフラッシュ操作用のfastbootコマンドがインストールされます[5]。
ここから先、インストールが完了するまでは、Nexus 7以外のAndroidデバイスはUbuntu PCに接続しないようにしてください。もし接続したままだとインストーラーが誤認識し、Nexus 7以外のデバイスにイメージを書き込む恐れがあります。
ブートローダーのアンロック
未署名のカーネルでも起動できるように、ブートローダーをアンロックします。Nexus 7の電源を切った上で、「電源ボタン+ボリュームダウン」を同時に押して、画面に赤字で「locked」と記載されたブートローダーの画面を表示させます。
この状態で、Ubuntu PCとNexus 7をUSBケーブルで接続し、端末で次のコマンドを順番に実行します。
2つ目のunlockコマンド実行時、インストーラーの説明ページの3つ目の画像のように警告画面が表示されます。熟読の上、ボリュームボタンでカーソルを移動、電源ボタンで決定してください。
3つ目のコマンドでブートローダーが再起動します。先ほどの画面の最後の赤字が"lock state - unlocked"になっていたら成功です。
Ubuntuのインストール
unlockedが表示されており、Ubuntu PCとNexus 7がUSBケーブルで接続されている状態、つまり"sudo fastboot devices"コマンドで、デバイスが一つだけ表示されている状態で、今度はUbuntuをインストールします。
おそらくLauncherにインストーラーのアイコンが追加されているのでそこから起動してください。コマンドからなら"ubuntu-nexus7-installer"を実行します。
ちなみにこのインストーラーはイメージのダウンロードとNexus 7への書き込みを行うための、Zenityで作られたただの実行スクリプトです。ユーザーのホームフォルダーにある「ダウンロード/UbuntuNexus7」に数百MBほどのイメージなどをダウンロードするので、あらかじめダウンロードだけ先に実行しておいても良いでしょう。
なお、/usr/bin/ubuntu-nexus7-installerのサーバーを次のコマンドで日本のミラーサーバーに変更しておけば、ダウンロードもより高速になります。
あとは画面の指示にしたがえば、書き込み完了です。おそらくイメージのダウンロードが一番時間がかかるでしょう。ダウンロード後、Nexus 7にUbuntuイメージを書き込むと、Nexus 7が自動的に再起動します。再起動直後はイメージのリサイズなどで10分弱ぐらい暗い画面で静止するので気長にお待ちください。
そのあとは通常のUbuntuのインストールと同様に言語やタイムゾーン、アカウントの設定をしていくだけです。ちなみにNexus 7上のインストーラーの画面では背景が非常に乱れた状態で表示されますが、これは既知の不具合で、インストール作業自体には問題ありません。
USBキーボードなどがない場合はインジケーターにある四角四つのアイコンからOnBoardを表示させて、ソフトウェアキーボードからアカウント情報を入力しましょう。
Ubuntuのアンインストール
Ubuntuをアンインストールして、Android版のNexus 7に戻すにはGoogleが用意しているファクトリーイメージを使用します。このイメージをダウンロードした上で、Nexus 7とUbuntu PCをUSBケーブルで接続し、次のコマンドを実行してください。
自動的に再起動して、その後はNexus 7購入時と同じ初期設定画面があらわれるはずです。
なお、再度ロック状態に戻すには、次のコマンドを実行します。
インストール後の設定
インストール時に言語を日本語に設定したとしても、インストール直後は日本語環境用の言語パックが入っていない可能性があり、部分的に英語インターフェースになっていることがあります。この場合は、システム設定>言語サポートを開きましょう。自動的に現在の言語の言語パックがインストールされているかどうかをチェックし、必要であればインストールするかどうかを確認するダイアログが開きます。
ただしキーボードレイアウトは英語のままにしておきましょう。日本語を選択してしまうと、後で紹介するソフトウェアキーボードであるOnBoardでバックスラッシュやアンダースコアーなどを入力できなくなるためです。日本語入力をオンにしたいなら、Ctrl+Spaceを使います。
armhf版のパッケージの場合、公式にはミラーサーバーを用意していません。すべてports.ubuntu.comを利用するため、かなり遅いです。日本のミラーサーバーでは非公式にjp.arcive.ubuntu.com/ubuntu-ports/にてarmhfのミラーサーバーを用意していますが、13.04用のパッケージはまだありません。もし、日本のミラーサーバーに「raring」という名前のフォルダーが存在するようになったら、/etc/apt/sources.listを編集すると良いでしょう。なお、ソフトウェアソースのミラー変更はARM版の場合動作しないので注意してください。
openssh-serverのインストール
念のためにopenssh-serverを入れておきましょう。これはカーネルや入力まわりのソフトウェアをアップデートした時に、画面が表示されいないこともあるからです。Raringは開発版なので、十分なテストを経ずにパッケージが投入されることもあります。
openssh-serverを入れておけば、ネットワークさえつながるならリモートからログインすることで原因を追求したり、Nexus 7内部のデータを退避したり、新しいパッケージが用意されるのを待ってから再アップデートすることで問題を回避できるというわけです[6]。
Avahiデーモンが動いているため、IPアドレスがわからなくても、同じLAN内のPCからなら「ssh "Nexus 7のホスト名".local」でアクセスできます。
入力方法
キーボードをつないでいない場合は、第252回と同様にソフトウェアキーボードである「OnBoard」を使用します。13.04のOnBoardはパフォーマンスがだいぶ改善されたために、Nexus 7上でもストレスなく動作するようになりました。
コンパクト版レイアウトを使用しているので、FキーやESC、PrintScreenキーを押したいなら、右下の「123」をまず押してください。
残念ながらUnityでは、アクセシビリティを設定してもロングプレスでは右クリック扱いにならないため、右クリックもOnBoardを使用する必要があります。右端の2行目のカーソルボタンを押すとマウス用のボタン(左クリック、右クリック、ダブルクリック、ドラッグアンドドロップ、時間差クリック)があらわれますので必要に応じて使い分けてください。
ちなみにソフトウェアキーボードでは、HUDの表示やAlt-Tabによるウィンドウの切り替えはできないようです。また、GinnやTouchEggといったマルチタッチジェスチャーツールも使えないため、カスタマイズ性はまだまだな状況です。
まとめ
実際に動かしてみた印象は、「思っていたよりきちんと動く」「思っていたよりきびきび動く」です。しかしあくまで「思っていたより」であって、単純にタブレットとしてならAndroidの方が使いやすい状態です。特にマルチタッチインターフェースを考慮できていない部分がたくさんあり、そのあたりはこれから調整が必要です。
また、13.04は開発版ということもあって、Nexus 7やARM版とは関係なく動作がおかしなところもまだまだあります。そのため一般ユーザーにおすすめできるレベルではありません。ただ、毎日のように目に見えて改善点が出てくるので、そういう「進化」を体験したい人にはぜひNexus 7へのUbuntuのインストールを試してみてください。