古いNetBookにAndroidをインストールできなかった件

しばらく使っていなかったASUS T101HAにAndroid-x86をインストールしてみたがWifiがつながらず何もできない。

あと、SDカードにインストールしたらブートできない。というわけで解決策が見つかるまで放置することにした。

まあWindowsは動いてるしね。気長に行こう。

Asus H101HAのスペック

Windows 7で使うには丁度良かったけど、Windows 10ではギリ動いてる感じ。

CPUIntel Atom x5-Z8350 1.44GHz 4コア
メモリ2GB
DISK64GB (SanDisk DF4064)
モニタ1280x800
Bluetooth
Wifi有 (Qualcomm Atheros QCA9377)
2.4G/5G IEEE802.11ac
サウンド、ビデオ、Intel SST Audio Device
Realtek I2S Audio Codec
カメラ正面x1

でもねと。

こういうオシャな使い方ができるのは魅力。

なのでAndroidタブレットとして和室で使えればいいかなって。

Windowsはいざというときに残しておきたいので、SDカードにAndroidをインストールします。

手順の概要

手順自体は簡単。

Android x86のサイトから好きなリリースのisoファイル(android-x86_64-9.0-r2.iso)をダウンロードして、Ubuntu標準の「ブータブルUSBの作成」でUSBに保存する。

そのUSBを使ってT101HAでブートし、SDカードスロットのSDカードにインストールする。

注意点

ブータブルUSBを作成する際は、USBをアンマウントしておくこと!

マウントしたままだとブータブルUSBの作成に失敗する。

ブート時の介入はESCとF2の連打

ブートローダーを選ぶときはESC、BIOSのメニューに入りたいときはF2を起動中に連打する。

これがなかなか当たりを引けないので根気よくやること

インストール先のSDカードを選べない

SDカードにプライマリパーティションがないと何もインストールできないので、Windowsのdiskpartコマンドを使ってプライマリパーティションを作っておく必要が有る。

実際にインストールしてみる

Android-x86をダウンロードしてブートUSBを作成する

そのまんまなので省略

ブートUSBを使ってインストーラを起動する

ブートUSBをUSBポートに挿して電源をONする。

そしてひたすらESCキーを連打する。

するとこの様なブート画面が表示される。

滲んで読みにくいが、一番上がWindowsのブートデバイス。

2つ目は既にインストールしているAndroid9.0-r2のブートデバイス。最初は存在しない。(私は何回もやり直しているので表示される)

3つ目はAndroidのインストーラとして作ったブータブルUSB。

ここで3つ目のブータブルUSBを選択して起動する。

Androidのインストールニュー

インストールメニューに5つ表示されるはず。

1つ目はLive起動で、USBからAndroidを起動する。保存やGoogle Playは使えないが動作確認はできる。

2つ目はLiveのデバッグモードで、なにかデバッグしたいことが有る場合はここを使用する。

3つ目はインストール。今回はこれを選ぶ。

4つ目は起動オプションの設定などで、5つ目はWindowsをブートする。

インストールパーティションを選択

インストール先のパーティションを選択する画面が表示される。

デフォルトではWindowsがインストールされているディスクが選択されているので、「Create/Modify Partitions」を選択する。

本来はここにSDカードが表示されてほしいが、USBメモリ(sda)と内臓ディスク(mmcblk0)しか表示されていない。

一旦CANSELで戻って、SDカードを抜き差しする。

その後、「Detect Devices」を実行するとSD-カードが表示される。(謎)

Wi-Fiに接続

パーティションを選択するとインストールウィザードが起動する。

健気にWi-Fiを探すがAndrod9.0のカーネルにドライバが入っていないので見つけられない。

スキップボタンを押して先に進む。

日付の入力やらGoogoleサービスの同意やら

パスワードの設定やらもこの辺だった気がする。適当に入力。

画面のサイズ確認

画面の位置関係を確認していると思われる画面が表示される。

◎野部分をタップして設定する。

Androidのデスクトップが表示される

インストールが完了するとAndroidを起動するかリブートするかを聞かれるので起動を選択する。

デフォルトのホームスタイルはQuickStepかTaskbarを選べる。使い慣れたQuickStepがおすすめ。後でアプリ > デフォルトアプリ > ホームアプリで変更することもできる。

初回はWi-Fiの設定が走るが見つけられないのでホームボタンでホームを表示させる。

さて、問題はここから

現時点で大きな問題が2つ。1つはSDカードからブートできないこと。もう一つはWi-Fiのドライバが入っていないこと。

さてどうしたものか。

SDカードからブートできない

ブートメニューで「Android-x86 9.0-r2」を選択して起動するが...

こんなエラーが出る

error:variable `root' isn't set.
error:no such device: /android-9.2-r2/kernel.
error:variable `root' isn't set.
error:you need to load the kernel first.

Press any key to continue...

「e」ボタンでGRUBのブートオプションを見ると以下の通り

setparams 'android-x86 9.0-r2 ' '/android-9.0-r2' 'android-x86 9.0-r2' 'quiet'
savedefault
set root=$android
if [ ! -e $2/kernel ];then
search --no-floppy --set root -f $2/kernel
fi
set kd=$2
shift 3
linux $kd/kernel root=/dev/ram0 $src $@
initrd $kd/initrd.img

このブートオプションはGRUB2が読み込まれて、次にブートするイメージを選択した際にカーネルパラメタを変更するためのもの。Bashライクでは有るがGRUB固有のコマンドしか受け付けない。GRUBのマニュアルは公式ドキュメントを参照。

順番に見ていこう。

setparams 'android-x86 9.0-r2 ' '/android-9.0-r2' 'android-x86 9.0-r2' 'quiet'

これは引数を上書きしている。これ以降、$1〜$4は上記の文字列に置き換えられる。

savedefault

最後に実行した方法を今後のデフォルトとして使用する。デジタル署名に使われる。

set root=$android

変数(root)に$andoidを代入している。が、$androidはここまでに一度も設定されていいないので空白が設定される。

if [ ! -e $2/kernel ];then
search --no-floppy --set root -f $2/kernel
fi

$2は'/android-9.0-r2'なので、/android-9.0-r2/kernelが実行ファイルか否か(-e)を判断している。実行ファイルでない場合は実行ファイルが存在するデバイスを検索(search)する。

searchのオプションは以下の通り

--no-floppy遅くなる可能性が有るフロッピーデバイスからのロードを禁止する
--set root最初に見つかったデバイスをrootにセットする。見つからない場合はrootが空白になる。
-f $2/kernel検索するファイル。/android-9.0-r2/kernelが実行できないファイルだったとしてもとりあえずこのファイルが有るデバイスをrootにする。

これ以降はLinuxを起動するためのコマンドを生成する。

set kd=$2

カーネルが存在するディレクトリをkdに設定する。ここでは2番めのパラメタである'/android-9.0-r2'が設定される。

shift 3

引数の位置を3つ右に移動する。初めて使われているので0からはじめて3つ目。つまり'android-x86 9.0-r2'の位置に移動する。

linux $kd/kernel root=/dev/ram0 $src $@

Linuxカーネルをロードする。$@は引数の位置から右なので'android-x86 9.0-r2' 'quiet'が該当する。$srcはここまで定義されていないので空白が入る。

initrd $kd/initrd.img

$kdの中に有るinitrd.imgをメモリにロードして実行する。これはLinux(Android)の本体を呼び出すための最小限の一時的なルートシステムになる。

以上を解釈するとこうなる

setparams 'android-x86 9.0-r2 ' '/android-9.0-r2' 'android-x86 9.0-r2' 'quiet'
savedefault
set root=
if [ ! -e /android-9.0-r2/kernel ];then
search --no-floppy --set root -f /android-9.0-r2/kernel
fi
set kd=/android-9.0-r2
shift 3
linux /android-9.0-r2/kernel root=/dev/ram0 'android-x86 9.0-r2' 'quiet'
initrd /android-9.0-r2/initrd.img

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です