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キーボードしか持っていないので無理。

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