W4-820 on Ubuntu ja 12.04.2 i386

消費税増税前最後の散財として、USB hubとUSBキーボードを清水の舞台から飛び降りる気で買いました。えっへん。(そんなに高くない(^^;)

まあ、この投稿は次のぐだぐだの続きって感じで

w4-820でlinux grub2失敗編 | Yuji Noizumi’s blog.
w4-820でlinux grub2成功編 | Yuji Noizumi’s blog.

Screenshot_from_2014-04-05 09:34:27画像はUSBメモリにUbuntu ja 12.04.2 i386をインストールして、UEFI化したところ。

WiFiが使えない。
lspci、lsusb でも見えないという事は特殊なハードウェアなのかな?

Windows 8.1のドライバだと、Broadcom となっているが、Acerのページだと、AzureWave ってなってるし、よく分からん。

Aterm MR03LNをUSBで接続すると、USB networkが使えるのでパッケージアップデートとかできるけど、母艦のVirtualBoxでrawdiskで起動してやった方が速いので通信は今のところ必要無い。

カーネルを3.13にしたのが次の画像。

Screenshot_from_2014-04-05 07:15:15タッチパネルが効くようになったので、設定→ユニバーサルアクセスでオンスクリーンキーボードを有効にしてみたが、キーが小さくて非常に打ちづらい。

この後、sudo grub-install ってやって、
/EFI/ubuntu/grubia32.efi を /EFI/ubuntu/bootia32.efi にコピーして再起動したら、起動しなくなった。

このUSBメモリを母艦のUSB3.0接続にして、VirtualBoxの rawdiskでは超速で起動するようになったが、W4-820では起動しない。

まあ、WiFiが使えない時点でUSBディスクで起動できるUbuntuがあっても、萎えーなので、再度のUSBメモリ構築はやる気も萎えーなのでございます。

【皇紀2674年4月5日 22:30 追記】
/etc/default/grub を
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=false
とやって、grubのメニューが出るようにして、recovery モードで起動したら、kernel 3.13 が起動できるようになった。

しかし、これではキーボード必須なのでUSBメモリ単体で何とかならんかのう…

あと、WiFiは
http://wireless.kernel.org/en/users/Drivers/brcm80211
でデバイスIDを照合すると、SDIO の BCM43241のようだ。

kernel 3.13以降で、linux-firmware の新しい奴を入れると、使えるかもしれない。

【/皇紀2674年4月5日 22:30 追記】

w4-820でlinux grub2成功編

このページ見ていて、
[FAQ] Asus T100: Installing custom OS (android/ubuntu/*nix/Windows 7/Windows 8 x64) – xda-developers.

Asus T100 での起動というのが先行しているという気がしたので、”Asus T100 linux”でぐぐってみると、

Booting Ubuntu on the Asus Transformer Book T100 – Liliputing.

というページで USBメモリで起動している記述があった。
Ubuntu 13.04 64bit のインストールCDを使っている!?

という事で、ubuntu-12.04.3-desktop-amd64.iso でUSB起動ディスクを作成する。

Screenshot_from_2014-03-30 10:41:17G-Tune NextGear のWindows 8.1 回復ディスク作成用に買っていた 32GB USBメモリがあったので、それを使用。

先の
[FAQ] Asus T100: Installing custom OS (android/ubuntu/*nix/Windows 7/Windows 8 x64) – xda-developers.

で、 bootia32.efi をダウンロードして、作成したUSB起動ディスクの /EFI/BOOT に配置してやる

たったこれだけ

得体の知れないファイルのダウンロードが嫌という場合は、拙ブログのw4-820でlinux grub2失敗編

そして、grub2-efi-bin のパッケージから必要なファイルを取得。
$ apt-get download grub-efi-ia32-bin

ファイルを展開。
$ mkdir tmp
$ dpkg -x grub-efi-ia32-bin_1.99-21ubuntu3.14_amd64.deb tmp

とやっておいて、

noizumi@greyhound:~$ grub-mkimage -d tmp/usr/lib/grub/i386-efi -o bootia32.efi -O i386-efi -p /boot/grub ntfs hfs appleldr boot cat efi_gop efi_uga elf fat hfsplus iso9660 linux keylayouts memdisk minicmd part_apple ext2 extcmd xfs xnu part_bsd part_gpt search search_fs_file chain btrfs loadbios loadenv lvm minix minix2 reiserfs memrw mmap msdospart scsi loopback

と自分で作成するも良し。わしの環境はUbuntu 12.04 LTS 64bitのUEFIなので、Legacy環境の人はこれでできないかもしれない。

USBメモリを挿してw4-820を起動させると、grub2のメニューは出るが、わしはPS/2キーボードしか持っていないので、”Try Ubunt”が選択できない。

そこで、USBメモリの /boot/grub/grub.cfg を編集して、

# Timeout for menu
set timeout=5

を追加してやる。

これで5秒カウントダウン後に Ubuntu が起動するが、Xの起動に失敗しているのか、コマンドプロンプトが出て止まる。

しかしながら、わしはPS/2の(以下略

【皇紀2674年4月6日11:00追記】

Booting Ubuntu on the Asus Transformer Book T100 – Liliputing.
このページに書いてあるが、

/usr/lib/xorg/modules/driver/vesa_drv.so
を削除するかリネームすると、Xが起動する。
しかし、LiveCDの構成ではタッチパネルが使用できないので、キーボードとマウスは必須。

【/皇紀2674年4月6日11:00追記】

もしかしたら、別のバージョンならXが起動するかもしれんが、又の機会に試してみるかのう。

【皇紀2674年4月6日11:00追記】

Ubuntu 13.10 64bit のLiveCDイメージだと解像度が合ってないのか壊れたテレビの様な画面になり、まともに操作するのは不可能。

こちらはタッチパネルが効いていて、画面を触ると反応する。

【/皇紀2674年4月6日11:00追記】

w4-820の一個しかないUSBの口にUSBメモリを挿してしまうと、キーボードもマウスも接続できないので、USB HUBでUSBメモリ、USBキーボード、USBマウスを接続して作業すると良いかもしれない。

しかし、UEFI 32bitだから、32bit のUbuntuを使用しなくてはいけないと思っていたが、まさか UEFIが32bitで、Ubuntu が64bitだったとは盲点だったのう。

【皇紀2674年4月6日11:00追記】

Intel Atom Z3740 は「インテル® 64」対応で64bitのプログラムが動くが、W4-820はメモリを2GBしか搭載していないので、メモリ効率を考えれば、64bitよりは、32bit版のUbuntuを使う方が良いだろう。

【/皇紀2674年4月6日11:00追記】

w4-820でlinux grub2失敗編

UEFI環境のgrub2 について理解に乏しかったのだが、メインPCのG-Tune NextGearが64bitのUEFIであり、その環境で朧げながら UEFIのgrub2が理解できた。

acer w4 820 ubuntu – 備忘録っぽい – Yahoo!ブログ.

こちらで w4-820 の Ubuntu のブートに成功したと書かれていて、わしもやってみる事にした。

結論を先に書いてしまうと、Ubuntu の USB起動はできなかったので、どういう手順でダメなのかという記録という程度の投稿である。
この次の投稿では成功した→w4-820でlinux grub2成功編

わしの環境だと、64GB USBメモリを挿すと /dev/sdd になるので適宜自分の環境に置き換えて下さい。

64GB USBメモリをGPTにする。

続いては gparted でfat32、ext4、linux-swap を確保する。

parted でまとめてやってしまえば良いのだろうけど、GUIで弄れる方が楽なので、gpartedで作った。fat32とext4はフォーマットした。

そして Ubuntu 12.04.2 32bit をUSBにインストール。

わしは、32bitのUbuntuのCDを起動できる環境が無いので、VirtualBoxにディスクを割り当てずに新マシンを作成し、CDはUbuntu 12.04.2 ja 32bitのISOイメージ、USBにUSBメモリを割り当てて仮想マシンを起動。

USB3.0対応のUSBメモリなのだが、USB3.0のポートに挿すと、なぜか認識してくれないので、USB2.0のポートに差した。

grubをインストールするのは、USBメモリの先頭の /dev/sdd

EFI化するのでw4-820で起動させる目的だとこれは不要だが、BIOS boot できる環境があるなら、EFIとBIOS起動の両用にできるので、grubのインストールをして置いても良い。

インストール終了したら、再起動を促されるが、再起動せずにシャットダウンする。

USBメモリをそのまま起動すると、USBメモリに一時ファイル書き込みなどが行われて遅いので、/tmpなどをRAM DISK化する。

VirtualBoxでUSBメモリインストール終了させると、USBメモリの制御がHostマシンに移るので、Ubuntu の場合は、/media 以下にマウントされる。

fstabを弄ってRAM DISKを作る前に、USBメモリのext4の領域で、/boot/efi の下に vfat 領域をマウントする為にディレクトリを掘っておく。

noizumi@greyhound:/media/c5193ebb-18be-460e-90c8-a092d3448328/boot$ sudo mkdir efi

そして、fstabに次の内容を追加

UUID=19A5-F623 /boot/efi vfat defaults 0 1
tmpfs /tmp tmpfs defaults 0 0
tmpfs /var/log tmpfs defaults 0 0

/var/log も頻繁に書き込みが起こるので、flashメモリの寿命を考慮するならば、RAM DISK化しておいて、電源切ったら逝ってよしという設定。

前に作成したUSBディスクは、起動スクリプトに細工して、ログファイルをRAM DISKへ展開し、終了時にRAM DISKから書き戻すという事をやっていたが、まあ、デバッグが必要で無い限り、ログは揮発していいだろう。

わしは、VirtualBoxでUSBメモリ起動させて、カーネルを3.13にしたり中身を弄ったが、Ubuntu 12.04 LTS 64bit だと、USBメモリのデバイスファイルは、root:disk の所有権になっているので、自アカウントを

$ sudo usermod -a -G disk noizumi

などとやって、リログインしておくと、USBメモリが /dev/sdd の場合、

$ sudo vboxmanage internalcommands createrawvmdk -filename usb.vmdk -rawdisk /dev/sdd

とvmdkディスクを作成して

$ sudo chown noizumi:noizumi usb.vmdk

とやれば、rootでなくてもVirtualBoxに登録して起動できる。

[FAQ] Asus T100: Installing custom OS (android/ubuntu/*nix/Windows 7/Windows 8 x64) – xda-developers.

にある bootia32.efi をダウンロードして vfat 領域の /EFI/BOOT 以下に配置。

そして、grub2-efi-bin のパッケージから必要なファイルを取得。
$ apt-get download grub-efi-ia32-bin

ファイルを展開。
$ mkdir tmp
$ dpkg -x grub-efi-ia32-bin_1.99-21ubuntu3.14_amd64.deb tmp

USBメモリのvfat領域へコピー
$ cp -r tmp/usr/lib/grub/i386-efi /media/19A5-F623/EFI/BOOT

$ vi /media/19A5-F623/EFI/BOOT/grub.cfg

search.fs_uuid c5193ebb-18be-460e-90c8-a092d3448328 root
set prefix=($root)/boot/grub
configfile $prefix/grub.cfg

ext4領域を root にして /boot/grub/grub.cfg を読み込むというメインPCと同じ方式。

そして、 secure boot OFFにした w4-820 にUSBメモリを挿して起動させてみると、grubは起動するが メニューが出ず。

キーボードを接続していれば、手動で起動できるかもしれないが、わしはPS/2キーボードしか持っていないので無理。

件のページがどうやって起動させたのか謎だな。

w4-820でlinux(未完)

色々頑張ってみたが結局うまくいかなかったのでそのまとめ。

【手順】
Ubuntu ja 12.04.2 LTS 32bit をUSBキーにインストール
※LiveCDの起動ディスク作成ではなく、普通のインストール

パーティションは

(parted) print
モデル: JetFlash Transcend 64GB (scsi)
ディスク /dev/sdb: 63.2GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt

番号 開始 終了 サイズ ファイルシステム 名前 フラグ
1 1049kB 250MB 249MB fat32
3 250MB 59.1GB 58.9GB ext4
2 59.1GB 63.2GB 4095MB linux-swap(v1)

こんな感じ。

先頭のFAT32領域にrEFIndからダウンロードしたファイルを設置
【/EFI/BOOT】

[refind.conf]

default_selection 2にしてあるのは、1番目にプリインストールのWindows8.1がメニューに出てくるので、そのままだとWindows8.1が起動してしまう為。

rEFInd はタッチパネルに対応しておらず、メニューで切り替える事ができないので、初期値でUbuntuを起動するようにしていないといけない。

secure boot offでw4-820をbootさせると、rEFIndの起動には成功するのだが…

と出て止まる。

kernelのファイルをbootia32.efiと同じ場所に置いたり、FAT32の/ に置いたり、ext4の/に置いたりと試したが、”Not Found”と言われる。

googleで検索してもUEFI32 での同様の事例や解決例が無し。
現状お手上げ状態な訳ですな。