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 イメージファイルを利用します。以下にインストール手順を示します。

  1. USB 光学ドライブを Aspire One に接続します。
  2. Aspire One の電源を入れます。
  3. 起動画面で〔F12〕キーを押し、ブートセレクタを表示します。
  4. Android-x86 のインストール DVD を光学ドライブにセットします。
  5. USB 光学ドライブから起動させます。
  6. インストールメニューで "Installation" を選択します。

  7. インストールするパーティションを選択します。まず、"Create/Modify partition" ですべてのパーティションを削除した方が悩まずに済みます。画像はすべてのパーティションを削除した状態のものです。

  8. 先程の画面から "Create/Modify partitions" を選びます。パーティションが存在しないので [New] を選択し (カーソルキーで移動)、〔Enter〕キーを押します。

  9. [Primary] を選択し〔Enter〕キーを押します。

  10. パーティションの容量を尋ねられますのでそのまま〔Enter〕キーを押します。

  11. [Bootable] を選択し〔Enter〕キーを押します。Flgs 欄が "Boot" に変わります。

      
  12. [Write] を選択し〔Enter〕キーを押します。

  13. "Are you sure you want to write the partition table to disk? (yes or no):" と尋ねられますので "yes" とタイプして〔Enter〕キーを押します。

  14. [Quit] を選択し〔Enter〕キーを押します。

  15. パーティションが作成されました。この Linux パーティションを選択して [OK] を押します。

  16. パーティションのフォーマットを行います。"ext3" を選択して [OK] を押します。

  17. 本当にフォーマットしていいのか尋ねられますので [Yes] を押します。

  18. フォーマットが実行されます。

  19. ブートローダ (GRUB) をインストールするか尋ねられますので [Yes] を押します。

  20. システムを読み書き可能な状態でマウントするか尋ねられますので [Yes] を押します。

  21. Android OS のインストールが始まります。

  22. すべてのインストール作業が完了しました。"Reboot" を選んで再起動を行ってください。

もう "Android という名の Linux" といった趣になってますね (^^;A

この記事では極力 Linux っぽい事はしない方向で行きたいと思っています。コンソールを使うのは最終手段です...だって、Linux 使いたいのなら Ubuntu 入れたほうが生産的じゃないですか。


初期設定

初回起動時にある程度の設定をやってしまいましょう

  1. Android を起動します。ブートセレクタで〔Enter〕キーを押すと即 Android が起動します。

  2. Android 起動中です。初回起動時は特に時間が掛かるかもしれませんが気長にお待ちください。

  3. ようこそ画面になりました。

  4. 表示言語を日本語に切り替え、[開始] ボタンを押してセットアップを行います。

      
  5. セットアップの内容は人によって異なると思いますので省略します。[完了] ボタンを押します。

  6. ホーム画面が表示されました。初回起動時は壁紙がちゃんと表示されないかもしれませんが、ちゃんと直りますのでご安心を。



    まず、右上にある "アプリケーションアイコン (6つの四角形) " をクリックします。
  7. アプリケーションメニューになりました。画面を右にスワイプ (または画面右端をクリック) して次画面へ行きます。

  8. [設定] アイコンをクリックします。ホーム画面で〔Ctrl〕+〔P〕を押しても設定画面へ移動できます。

  9. 左のリストから "セキュリティ" を選び、画面のロックを "なし" に変更します。Aspire One はタッチパネルではないのでデフォルトのスライドロックは面倒なだけです。

      
  10. 左のリストから "言語と入力" を選び、キーボードのレイアウトを "Japanese" に変更します。

      
  11. 左のリストから "日付と時刻" を選び、任意に設定します。時刻がおかしいようであれば、タイムゾーン等をいじってください。

      
  12. 左のリストから "開発者向けオプション" を選び、"GPUレンダリングを使用" にチェックを入れます。

  13. 左のリストから "電源を切る" を選び、一度電源を切って再度電源を入れてください。

  14. これで初期設定が完了しました。後はお好みでカスタマイズしてください。

動くものと動かないもの

思う所はヒトそれぞれだと思いますが、個人的には大きな問題点はないように思えます。

[動くもの&できる事]

[問題があるけれどどうにかなるもの]

[動かないもの&できない事]

"できない事" は独自ビルドするしか解決方法はないかもしれません。しかし、"独自ビルドするとできない事も増える" ため、オススメはできません (ある意味時間の無駄ですし)。



ハードウェア

これと言って特に追加しなきゃいけないようなものはないんですよね...。


USB マウス

手持ちの USB マウスを試してみましたが、普通に使えます。


USB フラッシュメモリ

手持ちの USB フラッシュメモリを試してみましたが、普通に使えます。一般的な USB タイプの SD カードリーダ/ライタも大抵使えると思います。例えば、ダイソーの MicroSD カードリーダー/ライター (E001: パソコン Personal Computer: 121 / JAN: 4549131115628) はちゃんと動作します。

USB フラッシュメモリの取り外しの際は [設定 | 端末 | ストレージ] にある "SD カードのマウント解除" を行ってください。


USB Bluetooth アダプタ

手持ちの PLANEX BT-MicroEDR2X を試してみました。ペアリングまでは可能ですが、デバイスは利用できないようです。


USB ジョイスティック

手持ちの USB ジョイスティックを幾つか試してみました。

製品名 デバイス名 ベンダー ID プロダクト ID
SKnet SMART JOYPAD 3 PSX-USB PSX-USB Adapter 0x0b43 0x0001
Genius NAVIGATOR 365 LASER KYE SYSTEMS CORP. Navigator 365 Laser 0x0458 0x007b
ELECOM JC-U2410TBK (検出されず) - -

ちゃんと検出されたものでも、メーカーによってキーアサインがバラバラなので、個別に USB ジョイスティック用のキーマップファイルを書いてやる必要があります。

それにしてもジョイパッドで Android を操作するのは面白いですね。ゲーム機を触っているような感覚になりました。


USB GPS ドングル

手持ちの GPS USB Dongle GT-730F を試してみました。Android-x86Prolific 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 を認識しました (それでも独自ビルドはオススメしません)。



ソフトウェア

入れておくと便利なアプリが幾つかあります。好みもあるでしょうから、ちょっとだけご紹介。


Google 日本語入力

Android app on Google Play

Android 4.0 では日本語キーボードを繋げていても英語キーボードになる事が多いです。Android 4.1 (Jelly Bean) 以降ではキーマップファイルを簡単に作って配布できるのです (User-installable keymaps) が。Android 4.1 以降だと、例えば Google Play にある "日本語106/109キーボードレイアウト" のようなものをインストールするだけで日本語配列キーボードに変更できます。

しかしながら、Android 4.0 ではキーマップを簡単に変更する方法がありません。これを回避する最も簡単な方法は Google 日本語入力 をインストールする事でしょう。但し、コンソールや端末エミュレータでの入力ではどうしようもありませんが...。

もちろん、キーマップの問題回避だけではなく、日本語入力をできるようにする必要もあるのでインストール必須という事になるでしょう。


ES ファイルエクスプローラー

Android app on Google Play

Windows の Explorer のようなファイラーです。SMB / FTP 接続もできるため、例えば LAN 上にあるサーバのファイルを持ってきたりする事も可能です。但し [ネットワーク | LAN] 等のネットワーク関連を利用する場合には、Wi-fi を使っていなくても (有線 LAN 接続でも) インタフェース wlan0 が起動 (UP) していなければならないようです。

また、テキストエディタも内蔵しており、コンソールや端末エミュレータで vi を使わなくともファイルの編集が可能になります。左側のメニューに [Root エクスプローラ] というのがありますので、これをオンにしておけば root 権限でファイルを書き換えたりする事ができます。

「折角の Android なのに vi なんぞ使えるか!」 と仰る方は是非。(外部に何やら送信しているようですが、それが気になる方はインストールしない方がいいでしょう)


MX 動画プレーヤー

Android app on Google Play

メディアプレーヤです。別途コーデックのインストールが必要となります。

コーデックはこの 2 つを入れておけばいいと思います (多分)。ES ファイルエクスプローラーがインストールされていれば、NAS にある動画を直接再生したりもできます。環境設定でハードウェア支援機能をオンにしておくといいと思います。


Firefox

Android app on Google Play

Web ブラウザです。[戻る] のボタン辺りが変なのはテーマをインストールすれば気にならなくなります。無地の Dark Grey とかがシンプルでいいかもしれません。

Firefox がオフラインモードになって困る場合には、以下の手順でオフラインモードを無効にする事ができます。

  1. アドレス欄に about:config と入力して〔Enter〕キーを押す
  2. 検索ボックスに offline-status と入力して〔Enter〕キーを押す
  3. network.manage-offline-status の値が true になっていればオフラインモードが有効なので、[切り替え]ボタンを押して false にする

あまり遭遇する問題だとは思えませんが念のために。


Quickoffice

Android app on Google Play

(今は) Google の Office 互換アプリ。Word / Excel / PowerPoint のファイルの作成と編集ができます。これは他のOffice 互換アプリにも言える事ですが、ドキュメントはローカルにコピーして使ったほうがいいと思います。


Quick System Info PRO

Android app on Google Play

Android 端末のシステム情報を表示します。DHCP から取得した IP アドレスを調べたりする事ができます。IP アドレスは Wi-Fi なら簡易的には [設定 | Wi-Fi] で見れるのですが、ちょっと詳しい事を調べたい場合にはコレがあると便利です。


Rotation Locker

Android app on Google Play

画面の回転を抑止します。元はクラムシェルのノートなのですから、ランドスケープ (横画面) 固定で使う事が殆どでしょう。アプリによって画面を勝手に回転させられるのを防止する事ができます。

AUTO でない場合、キーボードの画面回転キーも無効となります。また、ロングタップで選択するとバックグラウンドモードで実行されます。


2X Client RDP/Remote Desktop (リモートデスクトップ: RDP)

Android app on Google Play

「Windows が使いたくなったらリモートデスクトップを使えばいいじゃない?」...という事でリモートデスクトップ (RDP) クライアントです。リモートデスクトップ (RDP) クライアントは他にもイロイロありますが、とりあえずコレを紹介しておきます。


Microsoft Remote Desktop (リモートデスクトップ: RDP)

Android app on Google Play

 Microsoft 純正のリモートデスクトップ (RDP) クライアントです。ちゃんと Android-x86 でも動作します。


Android VNC Viewer (リモートデスクトップ: VNC)

Android app on Google Play

「OS X が使いたくなったらリモートデスクトップを使えばいいじゃない?」...という事でリモートデスクトップ (VNC) クライアントです。リモートデスクトップ (VNC) クライアントは他にもイロイロありますが、とりあえずコレを紹介しておきます。


Team Viewer (リモートデスクトップ: Team Viewer)

Android app on Google Play

Team Viewer も Android-x86 でちゃんと動作します。


Rooted SSH/SFTP Daemon

Android app on Google Play

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 app on Google Play

Android 用アプリをセルフ開発できるアプリケーションです。Aspire One 位の画面サイズだと充分実用的ですね。



Tips

知っておくと便利な小技やカスタマイズ方法など。Linux を触った事のない方にはちょっと難易度が高いものもあるかもしれません。


スリープやコンソールから戻るとマウスのクリックが効かない

スリープやコンソールから戻るとマウスのポインタは移動しますが、クリックが効かないという現象が起きます。ロック状態を解除するには Android で言う〔ホーム〕キーか〔メニュー〕キーを押します。具体的には〔Menu〕キーを押します。 "〔ホーム〕キーは?" あるいは "やっぱり日本語キーマップにしたい" で〔Windows〕キーを〔ホーム〕キーにカスタマイズしている場合には〔Windows〕キーを押してもロックを解除できます。


タッチパッドが効かなくなった

間違って〔Fn〕+〔F7〕を押してしまったのではないですか?もう一度〔Fn〕+〔F7〕を押してみてください。


〔ホーム〕キーは?

〔戻る〕キーも〔メニュー〕キーも単独キーとしてマップされているのに、何故か 〔ホーム〕キーは単独キーにマップされていません...よく使うと思うのですが。普通に考えれば〔Windows〕キーがそうなのでしょうが、押しても反応しません。〔Windows〕キーを〔ホーム〕キーにするには以下の手順を行ってください。

  1. ホーム画面で〔Alt〕+〔F1〕を押し、コンソール画面にする。
  2. vi で /system/usr/keylayout/Generic.kl を編集する。

    # vi /system/usr/keylayout/Generic.kl
  3. key 125 を META_LEFT から HOME WAKE に変更する。

    #key 125 META_LEFT
    key 125 HOME WAKE
  4. 保存したら、コンソール画面で〔Alt〕+〔F7〕を押し、ホーム画面にする。
  5. Android を再起動する (電源を切って入れなおす)。

これで OK なのですが...

私は"物理〔ホーム〕キー"が欲しかったので上記設定を行いましたが、〔Windows〕キーを使うキーボードショートカットが必要な方は設定を行わないでください。


やっぱり日本語キーマップにしたい

コンソールや端末エミュレータで刻印どおりにキーが入力できないとどうしてもイライラします。やっぱり日本語キーマップに変更したいですよね。

キーマップ変更の概要は "塩田紳二のアンドロイドなう (マイナビニュース)" の以下の記事に詳細があります。

かいつまんで話せば、

...という事になります。ベンダー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 の場合には、

このような作業でキーマップを変更できるという事が判りました (但し、コンソールはキーマップ変更の影響を受けません。端末エミュレータはキーマップ変更の影響を受けます)。二つのファイルは 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 でも同じ変更が加えられています。


スクリーンショットを撮りたい

Windows の感覚だと〔Print Screeen〕キーを押したくなりますが、それではスクリーンショットは撮れません。Android 4.0 以降のスマホだと〔ボリュームダウン〕+〔電源〕ボタンの同時長押しでスクリーンショットが撮れたりするようですが、これと同じ機能を持つキーを押しても何も起こりません。

Android 用アプリにはスクリーンショットを撮るものが幾つかありますが、殆どがセルフタイマー方式だったり、縦画面専用だったり (勝手に回転するものもある) と、あまり使い勝手がいいようには思えません。 アプリを探すのもいいですが、このページの記事のように "どうせ Windows で加工しなくてはならない" のであれば DDMS (Dalvik Debug Monitor Server) を使って別 PC でスクリーンショットを撮ったほうが楽かもしれません。

  1. Android-x86Quick System Info PRO をインストールし、簡単に IP アドレスを調べられるようにしておく。
  2. Windows PC に Android SDK Tools をインストールする。スクリーンショットを撮りたいだけなら SDK Tools Only で構わない。

準備はこれだけで完了です。

  1. コマンドプロンプト (CMD.EXE) を起動する。
  2. "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
  3. ADB (Android Debug Bridge) で接続されたら、続けて "ddms" と入力する。

    C:\Users\Owner>ddms
    The standalone version of DDMS is deprecated.
    Please use Android Device Monitor (monitor.bat) instead.
  4. DDMS が起動する。

  5. 左上のリストで接続したいデバイスを選択する
  6. メニューから [Device | Screen capture...] を選択する。

  7. Android-x86 のスクリーンがキャプチャされる。スクリーンが表示されない場合には [Refresh] ボタンを押す。クリップボードに貼り付けたいのなら [Copy] ボタンを押す。

スクリーンキャプチャを終了するには、

  1. DDMS を終了する
  2. コマンドプロンプトで "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 のエラーが出て動作しませんでした。念のためにインストール方法を記載しておきます。

  1. droidvnc_x86 をダウンロードする。
  2. droidvnc_x86 を /system/bin/ へコピーする。
  3. パーミッションを 755 に変更する。

    # chmod 755 /system/bin/droidvnc_x86
  4. VNC Server を起動する。

    # cd /system/bin/
    # ./droidvnc_x86
  5. 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 への切り替え]

  1. LAN ケーブルを接続
  2. 〔Alt〕+〔F1〕でコンソールを開く
  3. 以下を実行する。

    # netcfg wlan0 down
    # netcfg eth0 up
  4. 〔Alt〕+〔F7〕で Android のGUI 画面に戻る
  5. 〔Menu〕キー等でマウスロックを解除

[有線 LAN -> Wi-Fi への切り替え]

  1. (LAN ケーブルを接続したままでかまわない)
  2. 〔Alt〕+〔F1〕でコンソールを開く
  3. 以下を実行する。

    # netcfg eth0 down
    # netcfg wlan0 up
  4. 〔Alt〕+〔F7〕で Android のGUI 画面に戻る
  5. 〔Menu〕キー等でマウスロックを解除
  6. LAN ケーブルを抜く

単に netcfg と叩けば現在の状況が表示されます。wlan0 が Wi-Fi で eth0 が有線 LAN です。

電源管理のウィジェットで Wi-fi のオンオフを操作した場合には以下のような動作になります。

切り替えが面倒であれば Android-x86 の再起動を行ってください。


有線 LAN の IP アドレスを指定したい

android-x86.org の公式ビルドでは [設定 | 無線とネットワーク | その他] に "Ethernet" がありませんので、そのままでは有線 LAN の IP を指定できません。しかしながら以下の方法で有線 LAN (Ethernet) の IP アドレスを変更する事ができます。

[DHCP による自動取得の場合]

  1. 〔Alt〕+〔F1〕でコンソールを開く
  2. 以下を実行する。

    # netcfg eth0 up
    # netcfg eth0 dhcp
    # setprop net.dns1 <プライマリ DNS (8.8.8.8)>
    # setprop net.dns2 <セカンダリ DNS (4.4.4.4)>
    
  3. 〔Alt〕+〔F7〕で Android のGUI 画面に戻る
  4. 〔Menu〕キー等でマウスロックを解除

[手動設定の場合]

  1. 〔Alt〕+〔F1〕でコンソールを開く
  2. 以下を実行する。

    # 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)>
  3. 〔Alt〕+〔F7〕で Android のGUI 画面に戻る
  4. 〔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)。

  1. コマンドプロンプト (CMD.EXE) を起動する。
  2. "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
  3. 接続されたら、続けて "adb shell" と入力する。

    C:\Users\Owner>adb shell
    shell@eeepc:/ $
    

...ですが、adb の shell だとエスケープシーケンスを処理しないため vi がマトモに使えなかったり、TAB によるパス補完ができなかったりします。

ADB enhanced Putty を使えばこの問題を回避できます。

左ペインの [接続 | Adb] で、"adb kill-server" のチェックを外してください。他の設定/操作は通常の PuTTY と変わりません。接続の前に adb connect <Android-x86 の IP アドレス> しておく必要があります。

Android SDK Tools をインストールしていない場合や、本格的にリモートで触りたい (Telnet / SSH 接続したい) 場合には Rooted SSH/SFTP Daemon をインストールしましょう。


日本語フォントを導入したい

日本語フォントを導入する際のポイントが幾つかあります。

ファイル操作とパーミッション変更 (とファイル編集) が必須となります。

[フォントの調達]

下記の二つのフォントをダウンロードします。

"View Raw" をクリックするとダウンロードが始まります。フォントは C:\WORK に保存する事にします。

[フォントの設定]

  1. コマンドプロンプトを開き 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
  2. ダウンロードしたフォントを転送したい所ですが、/system/fonts のパーミッションが 755 なのでコピーできません。まずは、書き込めるようにするので ADB Shell か ADB enhanced Putty を開きます。

    C:\Users\Owner>adb shell
  3. /system/fonts のパーミッションを 777 に変更します。ついでに /system/etc のパーミッションも 777 にしておきます。

    shell@eeepc:/ $ su
    su
    shell@eeepc:/ # chmod 777 /system/fonts
    shell@eeepc:/ # chmod 777 /system/etc
    
  4. 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)
  5. フォントのパーミッションと所有者を変更します。

    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
  6. /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 に戻しておきます。
  7. /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 のみ" なのです。

[インストール]

  1. Android-x86 のブラウザで [HowTo]Android x86 FlashPlayer, facebook games, flash games, youtube, twitch.tv live へ行く。
  2. トピック下部にある com.adobe.flashplayer-1.apk のリンクをクリックし、APK をインストールする。。
  3. PC のブラウザで 同サイト へ行く。
  4. トピック下部にある libflashplayer.so.7zPC に DL する
  5. libflashplayer.so.7z を解凍し、libflashplayer.so を得る。
  6. libflashplayer.so を Android-x86 の data/data/com.adobe.flashplayer/lib/ へコピーする (パーミッションに注意)。
  7. 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" を渡して下さい。具体的には以下のような作業になります。

  1. Android-x86 を起動する。
  2. GRUB メニューでデバッグモード [Android-x86 4.0-r1 (Debug mode)] を選択する。
  3. コンソール画面になるので /mnt/grub/menu.lst を編集する。
    # vi /mnt/grub/menu.lst
  4. 以下のように追記する。通常起動メニューの記述をコピーしてくれば、赤字の部分だけの追記で済みます。
    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
    
  5. exit を 2 回叩くと、Android-x86 の GUI 画面になる。
  6. Android-x86 をシャットダウン
  7. 電源投入

再起動後は外部ディスプレイ用のメニュー [Android-x86 4.0-r1 (External Display)] が増えており、これを選択して起動すると外部ディスプレイに表示されるようになります。GRUB まではクローン(ミラー)表示です。なお、外部ディスプレイ <-> 内部ディスプレイを動的に切り替える方法はなさそうです。



ここにある情報が役に立って、「調べる手間が省けたからオマイに飯でもおごってやるよ」 というハートウォーミングな方がいらっしゃいましたら、下のボタンからどうぞ。

メニュー: