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にする。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
noizumi@greyhound:~$ <strong>sudo parted /dev/sdd</strong> GNU Parted 2.3 /dev/sdd を使用 GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。 (parted) <strong>mklabel gpt</strong> 警告: いま存在している /dev/sdd のディスクラベルは破壊され、このディスクの全データが失われます。続行しますか? はい(Y)/Yes/いいえ(N)/No? <strong>Y</strong> (parted) print モデル: JetFlash Transcend 64GB (scsi) ディスク /dev/sdd: 63.2GB セクタサイズ (論理/物理): 512B/512B パーティションテーブル: gpt 番号 開始 終了 サイズ ファイルシステム 名前 フラグ (parted) quit 通知: 必要であれば /etc/fstab を更新するのを忘れないようにしてください。 |
続いては gparted でfat32、ext4、linux-swap を確保する。
|
モデル: JetFlash Transcend 64GB (scsi) ディスク /dev/sdd: 63.2GB セクタサイズ (論理/物理): 512B/512B パーティションテーブル: gpt 番号 開始 終了 サイズ ファイルシステム 名前 フラグ 1 1049kB 263MB 262MB fat32 2 263MB 62.1GB 61.9GB ext4 3 62.1GB 63.2GB 1074MB linux-swap(v1) |
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キーボードしか持っていないので無理。
件のページがどうやって起動させたのか謎だな。