Acer Aspire One with Android-x86 (4.0-r1)
Aspire One (AOA 150-Bw / ZG5) と Android-x86 (4.0-r1) に関する記事です。Android のバージョンに依存しない記事 が別にありますので、そちらも参照してください。
Android-x86 4.0-r1 (Ice Cream Sandwich)
Android-x86 4.0-r1 のインストール
"eeepc" と付く iso イメージファイル を利用します。以下にインストール手順を示します。
USB 光学ドライブを Aspire One に接続します。
Aspire One の電源を入れます。
起動画面で〔F12〕キーを押し、ブートセレクタを表示します。
Android-x86 のインストール DVD を光学ドライブにセットします。
USB 光学ドライブから起動させます。
インストールメニューで "Installation" を選択します。
インストールするパーティションを選択します。まず、"Create/Modify partition" ですべてのパーティションを削除した方が悩まずに済みます。画像はすべてのパーティションを削除した状態のものです。
先程の画面から "Create/Modify partitions" を選びます。パーティションが存在しないので [New] を選択し (カーソルキーで移動)、〔Enter〕キーを押します。
[Primary] を選択し〔Enter〕キーを押します。
パーティションの容量を尋ねられますのでそのまま〔Enter〕キーを押します。
[Bootable] を選択し〔Enter〕キーを押します。Flgs 欄が "Boot" に変わります。
[Write] を選択し〔Enter〕キーを押します。
"Are you sure you want to write the partition table to disk? (yes or no):" と尋ねられますので "yes" とタイプして〔Enter〕キーを押します。
[Quit] を選択し〔Enter〕キーを押します。
パーティションが作成されました。この Linux パーティションを選択して [OK] を押します。
パーティションのフォーマットを行います。"ext3" を選択して [OK] を押します。
本当にフォーマットしていいのか尋ねられますので [Yes] を押します。
フォーマットが実行されます。
ブートローダ (GRUB) をインストールするか尋ねられますので [Yes] を押します。
システムを読み書き可能な状態でマウントするか尋ねられますので [Yes] を押します。
Android OS のインストールが始まります。
すべてのインストール作業が完了しました。"Reboot" を選んで再起動を行ってください。
もう "Android という名の Linux" といった趣になってますね (^^;A
この記事では極力 Linux っぽい事はしない 方向で行きたいと思っています。コンソールを使うのは最終手段です...だって、Linux 使いたいのなら Ubuntu 入れたほうが生産的 じゃないですか。
初期設定
初回起動時にある程度の設定をやってしまいましょう
Android を起動します。ブートセレクタで〔Enter〕キーを押すと即 Android が起動します。
Android 起動中です。初回起動時は特に時間が掛かるかもしれませんが気長にお待ちください。
ようこそ画面になりました。
表示言語を日本語に切り替え、[開始] ボタンを押してセットアップを行います。
セットアップの内容は人によって異なると思いますので省略します。[完了] ボタンを押します。
ホーム画面が表示されました。初回起動時は壁紙がちゃんと表示されないかもしれませんが、ちゃんと直りますのでご安心を。
まず、右上にある "アプリケーションアイコン (6つの四角形) " をクリックします。
アプリケーションメニューになりました。画面を右にスワイプ (または画面右端をクリック) して次画面へ行きます。
[設定] アイコンをクリックします。ホーム画面で〔Ctrl〕+〔P〕を押しても設定画面へ移動できます。
左のリストから "セキュリティ" を選び、画面のロックを "なし" に変更します。Aspire One はタッチパネルではないのでデフォルトのスライドロックは面倒なだけです。
左のリストから "言語と入力" を選び、キーボードのレイアウトを "Japanese" に変更します。
左のリストから "日付と時刻" を選び、任意に設定します。時刻がおかしいようであれば、タイムゾーン等をいじってください。
左のリストから "開発者向けオプション" を選び、"GPUレンダリングを使用" にチェックを入れます。
左のリストから "電源を切る" を選び、一度電源を切って再度電源を入れてください。
これで初期設定が完了しました。後はお好みでカスタマイズしてください。
動くものと動かないもの
思う所はヒトそれぞれだと思いますが、個人的には大きな問題点はないように思えます。
[動くもの&できる事]
画面は正常に描画されます。描画もスムースなので、ハードウェアレンダリングが効いていると思われます。
動画も再生できます。Intel GMA の動画再生支援も効いているようです。
音はちゃんと出ます。
マイクもちゃんと音を拾えるようです。
無線 LAN も使えます。但し 802.11 g/b なので速くはありません。NAS の HD 動画を無線 LAN 経由で再生とかは無理があります。
タッチパッドはちゃんと使えます。
USB メモリは挿せば認識します。
USB マウスは挿せば認識します。
USB <-> シリアルケーブルはメジャーなものなら使えます。
ARM エミュレータも動作しています。Janetter 等もインストール可能です。
コンソールでは最初から root です。
端末エミュレータでは su で root になれます。
[問題があるけれどどうにかなるもの]
[動かないもの&できない事]
マップアプリはアップデートをあてると真っ黒画面で動作しなくなります。 アップデートをあててしまったら [設定 | アプリ] から "マップ" を探し、"アップデートのアンインストール" で元に戻す事ができます。
カメラは動作しますが、撮影した画像は緑色になってしまいます (Documentation に記述あり )。
SD カードスロット / マルチカードスロットは認識しません。 設定云々以前の問題で、ドライバが入っていない ようです。
物理的にメモリを 1.5GB にしても Android-x86 では 1GB しか認識しません (カーネルが CONFIG_NOHIGHMEM=y でコンパイルされています)。
USB Bluetooth アダプタや USB Wireless LAN アダプタ等は使えないと思ったほうがいいです。
"できない事" は独自ビルドするしか解決方法はないかもしれません。しかし、"独自ビルドするとできない事も増える" ため、オススメはできません (ある意味時間の無駄ですし)。
ハードウェア
これと言って特に追加しなきゃいけないようなものはないんですよね...。
USB マウス
手持ちの USB マウスを試してみましたが、普通に使えます。
USB フラッシュメモリ
手持ちの USB フラッシュメモリを試してみましたが、普通に使えます。一般的な USB タイプの SD カードリーダ/ライタも大抵使えると思います。例えば、ダイソーの MicroSD カードリーダー/ライター (E001: パソコン Personal Computer: 121 / JAN: 4549131115628) はちゃんと動作します。
USB フラッシュメモリの取り外しの際は [設定 | 端末 | ストレージ] にある "SD カードのマウント解除" を行ってください。
USB Bluetooth アダプタ
手持ちの PLANEX BT-MicroEDR2X を試してみました。ペアリングまでは可能ですが、デバイスは利用できない ようです。
USB ジョイスティック
手持ちの USB ジョイスティックを幾つか試してみました。
ちゃんと検出されたものでも、メーカーによってキーアサインがバラバラなので、個別に USB ジョイスティック用のキーマップファイルを書いてやる 必要があります。
それにしてもジョイパッドで Android を操作するのは面白いですね。ゲーム機を触っているような感覚になりました。
USB GPS ドングル
手持ちの GPS USB Dongle GT-730F を試してみました。Android-x86 に Prolific PL2303 USB-UART をインストールすれば NMEA データを表示できるので認識はしています。
「いや、そうじゃなくてセンサーとして GPS を認識させたいんだよ!」 ...残念ながらそれにはカーネルのコンパイル が必要となってしまうのです。nullpoarchives.orz.hm さんで車載 PC 向けにコンパイルされた Android-x86 (RC2) を公開されていますので、物理 GPS が必要な方は試してみるといいかもしれません。
ちなみに Prolific PL2303 USB-UART は PL2303 チップを使った USB <-> シリアル変換 (ケーブル) 用のターミナルです。FTDI のチップを使ったものには FTDI UART Terminal が使えます。つまり、USB <-> シリアル変換ケーブルがあれば Android-x86 をシリアルコンソールにする事が可能 という事です。
See Also:
メモリ増設
AOA 150-B シリーズの最大メモリ容量は 1.5GB です。標準では表面実装で 512MB、メモリスロット (SO-DIMM) 512MB の 1GB です...つまり、1.5GB にするためには、メモリスロットの 512MB を抜いて 1GB を挿す事になります。
私は手持ちの BUFFALO D2/N667-S1GX2/E (1GB 2 枚組) の片方 を挿して 1GB にしましたが、このメモリの 1 枚物は D2/N667-S1G となります。法人向けの同等品は MV-D2/N667-S1G です。
分解の手順は "AOA150 分解" でググるといっぱい出てきますのでここでは記載しません。分解の注意点ですが、精密ドライバーの #1 (プラス) で分解する事になります。精密ドライバーを持っていなければショボイものでもいいので購入する事をオススメします (#1 でないとネジ山をナメやすいです。100円均一の店で買えます)。それとペンチの類も一つあるといいかもしれません。ネジ緩み止め剤が使ってあるので場合によっては精密ドライバーをペンチで掴んで回さないと、これまたネジ山をナメてしまう可能性があるのです…なので "どうなってもいい" 100均で買える精密ドライバをオススメします。
体感速度は...うーん、Windows じゃないのでよくわかりませんね。いやマテ、これって BIOS や GRUB では確かに 1.5GB 認識されてるけど、Android では 1GB しか認識されてないぞ?
shell@eeepc:/ $ free
total used free shared buffers
Mem: 900332 699328 201004 0 47252
-/+ buffers: 652076 248256
Swap: 0 0 0
どうやらカーネルが CONFIG_NOHIGHMEM=y オプションでコンパイルされている模様。つまり、公式ビルドの 4.0-r1 (eeepc) を使う限り、メモリ増設にあまり意味はない という事になります。試しに独自ビルドしてみましたが、device/asus/eeepc/eeepc_defconfig に CONFIG_NOHIGHMEM=y を追加してビルドすればちゃんと 1.5GB を認識しました (それでも独自ビルドはオススメしません)。
Amazon.co.jp ウィジェット
ソフトウェア
入れておくと便利なアプリが幾つかあります。好みもあるでしょうから、ちょっとだけご紹介。
Google 日本語入力
Android 4.0 では日本語キーボードを繋げていても英語キーボードになる事が多いです。Android 4.1 (Jelly Bean) 以降ではキーマップファイルを簡単に作って配布できるのです (User-installable keymaps) が。Android 4.1 以降だと、例えば Google Play にある "日本語106/109キーボードレイアウト" のようなものをインストールするだけで日本語配列キーボードに変更できます。
しかしながら、Android 4.0 ではキーマップを簡単に変更する方法がありません。これを回避する最も簡単な方法は Google 日本語入力 をインストールする事でしょう。但し、コンソールや端末エミュレータでの入力ではどうしようもありませんが...。
もちろん、キーマップの問題回避だけではなく、日本語入力をできるようにする必要もあるのでインストール必須という事になるでしょう。
ES ファイルエクスプローラー
Windows の Explorer のようなファイラーです。SMB / FTP 接続もできる ため、例えば LAN 上にあるサーバのファイルを持ってきたりする事も可能です。但し [ネットワーク | LAN] 等のネットワーク関連を利用する場合には、Wi-fi を使っていなくても (有線 LAN 接続でも) インタフェース wlan0 が起動 (UP) していなければならないようです。
また、テキストエディタも内蔵しており、コンソールや端末エミュレータで vi を使わなくともファイルの編集が可能 になります。左側のメニューに [Root エクスプローラ] というのがありますので、これをオンにしておけば root 権限でファイルを書き換えたりする事ができます。
「折角の Android なのに vi なんぞ使えるか!」 と仰る方は是非。(外部に何やら送信しているようですが、それが気になる方はインストールしない方がいいでしょう)
MX 動画プレーヤー
メディアプレーヤです。別途コーデックのインストールが必要となります。
コーデックはこの 2 つを入れておけばいいと思います (多分)。ES ファイルエクスプローラー がインストールされていれば、NAS にある動画を直接再生したりもできます。環境設定でハードウェア支援機能をオンにしておくといいと思います。
Firefox
Web ブラウザです。[戻る] のボタン辺りが変なのはテーマ をインストールすれば気にならなくなります。無地の Dark Grey とかがシンプルでいいかもしれません。
Firefox がオフラインモードになって困る場合には、以下の手順でオフラインモードを無効にする事ができます。
アドレス欄に about:config と入力して〔Enter〕キーを押す
検索ボックスに offline-status と入力して〔Enter〕キーを押す
network.manage-offline-status の値が true になっていればオフラインモードが有効なので、[切り替え]ボタンを押して false にする
あまり遭遇する問題だとは思えませんが念のために。
Quickoffice
(今は) Google の Office 互換アプリ。Word / Excel / PowerPoint のファイルの作成と編集ができます。これは他のOffice 互換アプリにも言える事ですが、ドキュメントはローカルにコピーして使ったほうがいいと思います。
Quick System Info PRO
Android 端末のシステム情報を表示します。DHCP から取得した IP アドレスを調べたりする事ができます。IP アドレスは Wi-Fi なら簡易的には [設定 | Wi-Fi] で見れるのですが、ちょっと詳しい事を調べたい場合にはコレがあると便利です。
Rotation Locker
画面の回転を抑止します。元はクラムシェルのノートなのですから、ランドスケープ (横画面) 固定で使う事が殆どでしょう。アプリによって画面を勝手に回転させられるのを防止する事ができます。
AUTO でない場合、キーボードの画面回転キー も無効となります。また、ロングタップで選択するとバックグラウンドモードで実行されます。
2X Client RDP/Remote Desktop (リモートデスクトップ: RDP)
「Windows が使いたくなったらリモートデスクトップを使えばいいじゃない?」 ...という事でリモートデスクトップ (RDP) クライアントです。リモートデスクトップ (RDP) クライアントは他にもイロイロありますが、とりあえずコレを紹介しておきます。
Microsoft Remote Desktop (リモートデスクトップ: RDP)
Microsoft 純正のリモートデスクトップ (RDP) クライアントです。ちゃんと Android-x86 でも動作します。
Android VNC Viewer (リモートデスクトップ: VNC)
「OS X が使いたくなったらリモートデスクトップを使えばいいじゃない?」 ...という事でリモートデスクトップ (VNC) クライアントです。リモートデスクトップ (VNC) クライアントは他にもイロイロありますが、とりあえずコレを紹介しておきます。
Team Viewer (リモートデスクトップ: Team Viewer)
Team Viewer も Android-x86 でちゃんと動作します。
Rooted SSH/SFTP Daemon
adb shell ではパスの TAB 補完が利かず、vi が使い物になりません。ADB enhanced Putty を使う方法 もありますが、PC で腰を据えて環境構築を行いたいのであればインストールしておくべきでしょう。初期状態だと root / abc123 でログインできます。また、SFTP も使えるので、ファイル転送も楽になります。SFTP クライアントとしては FileZilla 等が使えます。
Aspire One には物理キーボードがあるので、コンソールや端末エミュレータでやった方が早い事が多いかもしれませんが...。
ConnectBot (SSH クライアント)
[ダウンロード ]
SSH クライアントです。スマホやタブレット向けの操作方法が追加されています。
クリック
〔Ctrl〕
ダブルクリック
〔ESC〕
〔左Shift〕
〔Shift〕
〔Shift〕を二度押すとシフトロックになります。
〔右Shift〕
〔TAB〕
〔Alt〕
〔Alt〕キーに続けてキーを押すとシンボル文字を入力できます。〔Alt〕を二度押すとシフトロックになります。
〔Fn〕+↑
コンソールの文字を大きくします。
〔Fn〕+↓
コンソールの文字を小さくします。
ストア (Google Play) からダウンロード したものは上記キー操作になって面倒です。加えて言えばキー配列が英語 になってしまいます。Google Code にある APK はちゃんと日本語配列になりますし、〔TAB〕キー等も普通に使えます。
Android SDK [開発者用]
[ダウンロード ]
Android 用のアプリではないですが、開発者向けの SDK です。
実機のスクリーンショット撮影用環境を整えるだけなら、"SDK Tools Only" を選択してください ("DOWNLOAD FOR OTHER PLATFORMS" をクリックするとリストが出てきます)。
Intel C++ Compiler for Android OS [開発者用]
[ダウンロード ]
Android 用のアプリではないですが、Intel CPU 向け (つまり、Android-x86 向け) の C++ コンパイラが期間限定で無償提供されています。
使わないかもしれませんが、貰えるものは貰っておきましょう。
AIDE [開発者用]
Android 用アプリをセルフ開発できるアプリケーションです。Aspire One 位の画面サイズだと充分実用的ですね。
Tips
知っておくと便利な小技やカスタマイズ方法など。Linux を触った事のない方にはちょっと難易度が高いものもあるかもしれません。
スリープやコンソールから戻るとマウスのクリックが効かない
スリープやコンソールから戻るとマウスのポインタは移動しますが、クリックが効かないという現象が起きます。ロック状態を解除するには Android で言う〔ホーム〕キーか〔メニュー〕キー を押します。具体的には〔Menu〕キー を押します。
"〔ホーム〕キーは?" あるいは "やっぱり日本語キーマップにしたい" で〔Windows〕キーを〔ホーム〕キーにカスタマイズしている場合には〔Windows〕キーを押してもロックを解除できます。
タッチパッドが効かなくなった
間違って〔Fn〕+〔F7〕を押してしまったのではないですか?もう一度〔Fn〕+〔F7〕を押してみてください。
〔ホーム〕キーは?
〔戻る〕キーも〔メニュー〕キーも単独キーとしてマップされているのに、何故か 〔ホーム〕キーは単独キーにマップされていません ...よく使うと思うのですが。普通に考えれば〔Windows〕キーがそうなのでしょうが、押しても反応しません。〔Windows〕キーを〔ホーム〕キーにするには以下の手順を行ってください。
ホーム画面で〔Alt〕+〔F1〕を押し、コンソール画面にする。
vi で /system/usr/keylayout/Generic.kl を編集する。
# vi /system/usr/keylayout/Generic.kl
key 125 を META_LEFT から HOME WAKE に変更する。
#key 125 META_LEFT
key 125 HOME WAKE
保存したら、コンソール画面で〔Alt〕+〔F7〕を押し、ホーム画面にする。
Android を再起動する (電源を切って入れなおす)。
これで OK なのですが...
〔Windows〕キーとのコンビネーションのキーボードショートカットが一切効かなくなります
マウスのクリックロック解除 が〔Windows〕キーでも行えるようになります
私は"物理〔ホーム〕キー"が欲しかったので上記設定を行いましたが、〔Windows〕キーを使うキーボードショートカットが必要な方は設定を行わないでください。
やっぱり日本語キーマップにしたい
コンソールや端末エミュレータで刻印どおりにキーが入力できないとどうしてもイライラします。やっぱり日本語キーマップに変更したいですよね。
キーマップ変更の概要は "塩田紳二のアンドロイドなう (マイナビニュース)" の以下の記事に詳細があります。
かいつまんで話せば、
ベンダーID とプロダクト ID を調べる
ベンダーID とプロダクト ID を元にしたファイル名で *.kcm と *.kl を作る
*.kcm のコピー先は /system/usr/keychars/
*.kl のコピー先は /system/usr/keylayout/
...という事になります。ベンダーID とプロダクト ID に一致する *.kcm と *.kl がなければ Generic.kcm と Generic.kl が使用されるので、"〔ホーム〕キーは?" では、Generic.kl を直接書き換えています。
さて、dumpsys した結果は以下のようになりました。
9: AT Translated Set 2 keyboard
Classes: 0x00000043
Path: /dev/input/event5
Location: isa0060/serio0/input0
UniqueId:
Identifier: bus=0x0011, vendor=0x0001, product=0x0001, version=0xab41
KeyLayoutFile: /system/usr/keylayout/Generic.kl
KeyCharacterMapFile: /system/usr/keychars/Generic.kcm
ConfigurationFile:
ベンダーID とプロダクト ID がどっちも 0001 だとは...orz
なにはともあれ、Aspire One の場合には、
/system/usr/keychars/ に Vendor_0001_Product_0001.kcm (キーマップ定義ファイル) を作成
/system/usr/keylayout/ に Vendor_0001_Product_0001.kl (キーレイアウト定義ファイル) を作成
このような作業でキーマップを変更できるという事が判りました (但し、コンソールはキーマップ変更の影響を受けません 。端末エミュレータはキーマップ変更の影響を受けます)。二つのファイルは Generic.* をコピーして自分で書いてもいいのですが、"rootで遊ぶタブレット「IMPRESSION KT-i7A4.0」活用術 第5回:USB接続の日本語キーボードを使えるようにする (AKIBA PC Hotline!)" の記事中で日本語キーボード用ファイルを公開されてますので、これをベースに改変したいと思います...とは言っても基本的に名前を変更するだけ なんですけどね。
そしてできたファイルが以下になります。
[Download: Aspire One (AOA 150-B シリーズ) 用キーマップファイル ]
アーカイブを解凍し、ファイルを所定の位置へコピーしたら Aspire One を再起動 で完了です。"〔ホーム〕キーは?" で Generic.kl を書き換えている場合には元に戻しておいてください。Vendor_0001_Product_0001.kl でも同じ変更が加えられています。
ファイルコピーには ES ファイルエクスプローラー を使うと簡単です。
adb push を使ってもそんなに面倒ではありません (要 Android SDK Tools インストール)。
adb connect <IP アドレス>
adb push Vendor_0001_Product_0001.kcm /system/usr/keychars/
adb push Vendor_0001_Product_0001.kl /system/usr/keylayout/
adb disconnect <IP アドレス>
FileZilla でも転送できます (要 Rooted SSH/SFTP Daemon インストール)。
*.kcm と *.kl のファイルフォーマットは UTF-8 (BOM なし) + LF 改行です。Windows のメモ帳など、LF 改行に対応していないテキストエディタでは編集しないでください。
スクリーンショットを撮りたい
Windows の感覚だと〔Print Screeen〕キーを押したくなりますが、それではスクリーンショットは撮れません。Android 4.0 以降のスマホ だと〔ボリュームダウン〕+〔電源〕ボタンの同時長押しでスクリーンショットが撮れたりするようですが、これと同じ機能を持つキーを押しても何も起こりません。
Android 用アプリにはスクリーンショットを撮るものが幾つかありますが、殆どがセルフタイマー方式だったり、縦画面専用だったり (勝手に回転するものもある) と、あまり使い勝手がいいようには思えません。
アプリを探すのもいいですが、このページの記事のように "どうせ Windows で加工しなくてはならない" のであれば DDMS (Dalvik Debug Monitor Server) を使って別 PC でスクリーンショットを撮ったほうが楽かもしれません。
Android-x86 に Quick System Info PRO をインストールし、簡単に IP アドレスを調べられるようにしておく。
Windows PC に Android SDK Tools をインストールする。スクリーンショットを撮りたいだけなら SDK Tools Only で構わない。
準備はこれだけで完了です。
コマンドプロンプト (CMD.EXE) を起動する。
"adb connect <Android-x86 の IP アドレス>" と入力する。Android-x86 の IP アドレスが 192.168.1.10 の場合には以下のようになります。
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Users\Owner>adb connect 192.168.1.10
connected to 192.168.1.10:5555
ADB (Android Debug Bridge) で接続されたら、続けて "ddms" と入力する。
C:\Users\Owner>ddms
The standalone version of DDMS is deprecated.
Please use Android Device Monitor (monitor.bat) instead.
DDMS が起動する。
左上のリストで接続したいデバイスを選択する
メニューから [Device | Screen capture...] を選択する。
Android-x86 のスクリーンがキャプチャされる。スクリーンが表示されない場合には [Refresh] ボタンを押す。クリップボードに貼り付けたいのなら [Copy] ボタンを押す。
スクリーンキャプチャを終了するには、
DDMS を終了する
コマンドプロンプトで "adb disconnect <Android-x86 の IP アドレス>" と入力する (IP アドレスは指定しなくてもいい。この場合にはすべての端末との接続が解除される)。
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Users\Owner>adb disconnect 192.168.1.10
コンソール画面はキャプチャできない 事に注意してください。端末エミュレータはキャプチャできます。
実は Android-x86 で動作するという VNC Server (droidvnc_x86) も試してみたのですが、Aspire One では mmap のエラーが出て動作しませんでした。念のためにインストール方法を記載しておきます。
droidvnc_x86 をダウンロードする。
droidvnc_x86 を /system/bin/ へコピーする。
パーミッションを 755 に変更する。
# chmod 755 /system/bin/droidvnc_x86
VNC Server を起動する。
# cd /system/bin/
# ./droidvnc_x86
VNC クライアントから接続する。ポートは 5901。
参考ページは "How to run VNC server on Android-x86 (Xmodulo)" です。
余談ですが、このページのスクリーンショットのインストーラ絡みのものは実機ではなく VirtualPC 上の Android-x86 のものです。ネットワークが繋がらない状態では DDMS が使えませんので VM でのスクリーンショットになっているのです。アプリケーションのスクリーンショットは DDMS で撮られた実機のものです。
Wi-Fi と有線 LAN を切り替えるとネットワークがおかしくなる
一旦有線 LAN が有効になってしまうと、Wi-Fi (無線 LAN) へ切り替えられないような感じです。以下の手順を試してみてください。
[Wi-Fi -> 有線 LAN への切り替え]
LAN ケーブルを接続
〔Alt〕+〔F1〕でコンソールを開く
以下を実行する。
# netcfg wlan0 down
# netcfg eth0 up
〔Alt〕+〔F7〕で Android のGUI 画面に戻る
〔Menu〕キー等でマウスロックを解除
[有線 LAN -> Wi-Fi への切り替え]
(LAN ケーブルを接続したままでかまわない)
〔Alt〕+〔F1〕でコンソールを開く
以下を実行する。
# netcfg eth0 down
# netcfg wlan0 up
〔Alt〕+〔F7〕で Android のGUI 画面に戻る
〔Menu〕キー等でマウスロックを解除
LAN ケーブルを抜く
単に netcfg と叩けば現在の状況が表示されます。wlan0 が Wi-Fi で eth0 が有線 LAN です。
# netcfg
lo UP 127.0.0.1/8 0x00000049 00:00:00:00:00:00
ifb0 DOWN 0.0.0.0/0 0x00000082 xx:xx:xx:xx:xx:xx
ifb1 DOWN 0.0.0.0/0 0x00001082 xx:xx:xx:xx:xx:xx
sit0 DOWN 0.0.0.0/0 0x00001080 00:00:00:00:00:00
rmnet2 DOWN 0.0.0.0/0 0x00001080 00:00:00:00:00:00
ip6tnl0 DOWN 0.0.0.0/0 0x00001002 00:00:00:00:00:00
eth0 DOWN 192.168.1.10/24 0x00001002 xx:xx:xx:xx:xx:xx
wlan0 UP 192.168.1.20/24 0x00001043 xx:xx:xx:xx:xx:xx
電源管理のウィジェットで Wi-fi のオンオフを操作した場合には以下のような動作になります。
Wi-fi オフ: wlan0 のインターフェイスが消える。eth0 の状態は変化しない。
Wi-fi オン: wlan0 のインターフェイスが現れ UP になる。eth0 の状態は変化しない。
切り替えが面倒であれば Android-x86 の再起動を行ってください。
有線 LAN の IP アドレスを指定したい
android-x86.org の公式ビルドでは [設定 | 無線とネットワーク | その他] に "Ethernet" がありませんので、そのままでは有線 LAN の IP を指定できません。しかしながら以下の方法で有線 LAN (Ethernet) の IP アドレスを変更する事ができます。
[DHCP による自動取得の場合]
〔Alt〕+〔F1〕でコンソールを開く
以下を実行する。
# netcfg eth0 up
# netcfg eth0 dhcp
# setprop net.dns1 <プライマリ DNS (8.8.8.8)>
# setprop net.dns2 <セカンダリ DNS (4.4.4.4)>
〔Alt〕+〔F7〕で Android のGUI 画面に戻る
〔Menu〕キー等でマウスロックを解除
[手動設定の場合]
〔Alt〕+〔F1〕でコンソールを開く
以下を実行する。
# ifconfig eth0 <IP アドレス> up
# route add default gw <デフォルトゲートウェイ> dev eth0
# setprop net.dns1 <プライマリ DNS (8.8.8.8)>
# setprop net.dns2 <セカンダリ DNS (4.4.4.4)>
〔Alt〕+〔F7〕で Android のGUI 画面に戻る
〔Menu〕キー等でマウスロックを解除
設定した内容は Android を再起動すると消えてしまいますので再設定しなくてはなりません。再設定が面倒なのであれば /system/etc/init.sh に設定を追記してください。
PATH=/system/bin:/system/xbin
DMIPATH=/sys/class/dmi/id
board=`cat $DMIPATH/product_name`
case "$board" in
*)
;;
esac
alsa_ctl init
alsa_amixer set Master on
alsa_amixer set Master 100
alsa_amixer set Headphone on
alsa_amixer set Headphone 100
alsa_amixer set Speaker 100
alsa_amixer set Capture 100
alsa_amixer set Capture cap
alsa_amixer set PCM 100 unmute
alsa_amixer set 'Mic Boost' 2
# import cmdline variables
for c in `cat /proc/cmdline`; do
case $c in
*=*)
eval $c
;;
esac
done
[ -z "$SDCARD" -o "$SDCARD" = "internal" ] && start sdcard
# Start Fixing Ethernet
ifconfig eth0 192.168.1.10 up
route add default gw 192.168.1.1 dev eth0
setprop net.dns1 8.8.8.8
setprop net.dns2 4.4.4.4
# Start Wireless LAN
netcfg eth0 down
netcfg wlan0 down
netcfg wlan0 up
# change brightness file permission for liblights
brfile=$(getprop backlight.brightness_file)
chown 1000.1000 ${brfile:-/sys/class/backlight/acpi_video0/brightness}
# disable cursor blinking
[ "$(getprop system_init.startsurfaceflinger)" = "0" ] && echo -e '\033[?17;0;0c' > /dev/tty0
# enable automatic frequency scaling
for cpu in /sys/devices/system/cpu/cpu*; do
echo ondemand > $cpu/cpufreq/scaling_governor
done
# a hack for USB modem
lsusb | grep 1a8d:1000 && eject
hardware=$(getprop ro.hardware)
hw_sh=/system/etc/init.$hardware.sh
[ -e $hw_sh ] && exec sh $hw_sh
上記例では有線 LAN の IP アドレスを 192.168.1.10、デフォルトゲートウェイを 192.168.1.1 に設定し、起動時は無線 LAN を優先するようにしてあります。8.8.8.8 と 4.4.4.4 は Google のパブリック DNS です。
Android-x86 へ Telnet / SSH 接続したい
目的が "Android-x86 を PC からいじりたい" というだけであれば、簡易的には Android SDK Tools でシェルを起動できます ("SDK Tools Only" で OK)。
コマンドプロンプト (CMD.EXE) を起動する。
"adb connect <Android-x86 の IP アドレス>" と入力する。Android-x86 の IP アドレスが 192.168.1.10 の場合には以下のようになります。
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Users\Owner>adb connect 192.168.1.10
connected to 192.168.1.10:5555
接続されたら、続けて "adb shell" と入力する。
C:\Users\Owner>adb shell
shell@eeepc:/ $
...ですが、adb の shell だとエスケープシーケンスを処理しないため vi がマトモに使えなかったり、TAB によるパス補完ができなかったりします。
ADB enhanced Putty を使えばこの問題を回避できます。
ADB connect: transport:<Android-x86 の IP アドレス>:5555
ポート: 5037
接続タイプ: ADB
左ペインの [接続 | Adb] で、"adb kill-server" のチェックを外してください 。他の設定/操作は通常の PuTTY と変わりません。接続の前に adb connect <Android-x86 の IP アドレス> しておく必要があります。
Android SDK Tools をインストールしていない場合や、本格的にリモートで触りたい (Telnet / SSH 接続したい) 場合には Rooted SSH/SFTP Daemon をインストールしましょう。
日本語フォントを導入したい
日本語フォントを導入する際のポイントが幾つかあります。
日本語フォントを調達しなければならない
/system/fonts に日本語フォントファイルを置かなくてはならない
/system/fonts のパーミッションは 755
フォントのパーミッションと所有者は 644 / root.root
/system/etc にある fallback_fonts.xml を書き換えなくてはならない
/system/etc のパーミッションは 755
fallback_fonts.xml のパーミッションと所有者は 644 / root.root
ファイル操作とパーミッション変更 (とファイル編集) が必須となります。
[フォントの調達]
下記の二つのフォントをダウンロードします。
"View Raw" をクリックするとダウンロードが始まります。フォントは C:\WORK に保存する事にします。
[フォントの設定]
コマンドプロンプトを開き ADB で接続します。
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Users\Owner>adb connect 192.168.1.10
connected to 192.168.1.10:5555
ダウンロードしたフォントを転送したい所ですが、/system/fonts のパーミッションが 755 なのでコピーできません。まずは、書き込めるようにするので ADB Shell か ADB enhanced Putty を開きます。
/system/fonts のパーミッションを 777 に変更します。ついでに /system/etc のパーミッションも 777 にしておきます。
shell@eeepc:/ $ su
su
shell@eeepc:/ # chmod 777 /system/fonts
shell@eeepc:/ # chmod 777 /system/etc
ADB Shell で作業したのなら、コマンドプロンプトをもう一枚開き、ADB push でファイルを転送します。
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\Users\Owner>adb push C:\work\AndroidEmoji.ttf /system/fonts
17 KB/s (2748 bytes in 0.155s)
C:\Users\Owner>adb push C:\work\MTLmr3m.ttf /system/fonts
945 KB/s (2878468 bytes in 2.973ebbs)
フォントのパーミッションと所有者を変更します。
shell@eeepc:/ # chmod 644 /system/fonts/AndroidEmoji.ttf
shell@eeepc:/ # chown root.root /system/fonts/AndroidEmoji.ttf
shell@eeepc:/ # chmod 644 /system/fonts/MTLmr3m.ttf
shell@eeepc:/ # chown root.root /system/fonts/MTLmr3m.ttf
/system/etc にある fallback_fonts.xml を書き換えます。ADB enhanced Putty を使っているか本体側で書き換えるのであれば vi で直接編集してもいいですし、ADB pull でファイルを引っ張ってきて Windows 上で編集し、ADB push で書き戻してもいいです。とにかく手段は何でもいいので水色の部分を追加します。
...
<family>
<fileset>
<file>Lohit-Tamil.ttf</file>
</fileset>
</family>
<family>
<fileset>
<file>AndroidEmoji.ttf</file>
</fileset>
</family>
<family>
<fileset>
<file>MTLmr3m.ttf</file>
</fileset>
</family>
<family>
<fileset>
<file>DroidSansFallback.ttf</file>
</fileset>
</family>
</familyset>
※ 必ず DroidSansFallback.ttf の前に追記 してください。
shell@eeepc:/ # chmod 644 /system/etc/fallback_fonts.xml
ファイル操作で置き換えたのなら、パーミッションを 644 に戻しておきます。
/system/fonts と /system/etc のパーミッションを 755 に戻し、リブートします。
shell@eeepc:/ # chmod 755 /system/fonts
shell@eeepc:/ # chmod 755 /system/etc
shell@eeepc:/ # sync
shell@eeepc:/ # reboot
以上で作業は完了です。やるべき事は "フォントファイルのコピー" と "fallback_fonts.xml の編集" なので、ES ファイルエクスプローラー や Rooted SSH/SFTP Daemon で作業しても構いません。
FLASH を再生したい
限定的ながら可能です。
"マテリアルスナイパー " が動作していますね。何が限定的 なのかと言うと、FLASH が再生できるブラウザは "Opera Mobile のみ " なのです。
[インストール]
Android-x86 のブラウザで [HowTo]Android x86 FlashPlayer, facebook games, flash games, youtube, twitch.tv live へ行く。
トピック下部にある com.adobe.flashplayer-1.apk のリンクをクリックし、APK をインストールする。。
PC のブラウザで 同サイト へ行く。
トピック下部にある libflashplayer.so.7z を PC に DL する
libflashplayer.so.7z を解凍し、libflashplayer.so を得る。
libflashplayer.so を Android-x86 の data/data/com.adobe.flashplayer/lib/ へコピーする (パーミッションに注意 )。
Android-x86 のブラウザで "Opera Mobile 12 for x86 architectures " へ行き Opera 12 for x86 Android devices. のリンクをクリックして APK をインストールする (ストアでインストールしない事! )。
ES ファイルエクスプローラー をインストールしていれば、作業は Android-x86 だけで完結すると思います。
副作用として、この設定を行った後に標準ブラウザで FLASH のあるページに行くと、大抵ブラウザがクラッシュするか、ページのレイアウトが崩れます 。また、先述の "マテリアルスナイパー " はスコープが動かせませんのでゲームになりません (マウスオーバー系の処理に難があるようです)。そういった訳で、"FLASH は再生できない" と思った方が精神衛生上よろしいかと思います。
カーネルオプションを渡したい (GRUB)
起動時の GRUB メニューでデバッグモードを選択して起動し、/mnt/grub/menu.lst を編集してください。必然的に vi と英語配列キーボード で編集する事になりますので注意が必要です。
/mnt/grub/menu.lst の編集が終わったら、コンソールで exit を二回叩いて下さい。Android の GUI が起動します。そのまま終了して再起動してください。
外部ディスプレイを使いたい
カーネルオプションに "video=LVDS-1:d" を渡して下さい。具体的には以下のような作業になります。
Android-x86 を起動する。
GRUB メニューでデバッグモード [Android-x86 4.0-r1 (Debug mode)] を選択する。
コンソール画面になるので /mnt/grub/menu.lst を編集する。
以下のように追記する。通常起動メニューの記述をコピーしてくれば、赤字の部分だけの追記で済みます。
default=0
timeout=6
splashimage=/grub/android-x86.xpm.gz
root (hd0,0)
title Android-x86 4.0-r1
kernel /android-4.0-r1/kernel quiet root=/dev/ram0 androidboot.hardware=eeepc acpi_sleep=s3_bios,s3_mode SRC=/android-4.0-r1
initrd /android-4.0-r1/initrd.img
title Android-x86 4.0-r1 (External Display)
kernel /android-4.0-r1/kernel quiet root=/dev/ram0 androidboot.hardware=eeepc video=LVDS-1:d acpi_sleep=s3_bios,s3_mode SRC=/android-4.0-r1
initrd /android-4.0-r1/initrd.img
title Android-x86 4.0-r1 (Debug mode)
kernel /android-4.0-r1/kernel root=/dev/ram0 androidboot.hardware=eeepc acpi_sleep=s3_bios,s3_mode DEBUG=2 SRC=/android-4.0-r1
initrd /android-4.0-r1/initrd.img
exit を 2 回叩くと、Android-x86 の GUI 画面になる。
Android-x86 をシャットダウン
電源投入
再起動後は外部ディスプレイ用のメニュー [Android-x86 4.0-r1 (External Display)] が増えており、これを選択して起動すると外部ディスプレイに表示されるようになります。GRUB まではクローン(ミラー)表示です。なお、外部ディスプレイ <-> 内部ディスプレイを動的に切り替える方法はなさそうです。
ここにある情報が役に立って、「調べる手間が省けたからオマイに飯でもおごってやるよ」 というハートウォーミングな方がいらっしゃいましたら、下のボタンからどうぞ。