Ubuntu 8.04 kvmで起動用USBメモリを作る、その他2009/05/24 18:36

 LOOX Uを買ってUbuntuを入れたものの、ディスプレイドライバが対応していないせいでいろいろと不都合がある。解像度はこれでも高すぎるくらいだけど、Youtubeなど動画を見るには絶望的なパフォーマンスとなってしまう。
 poulsboドライバが正式にアップデート/カーネルに組み込まれるのを待っていたのだけど、少し妙なやり方を思いついたのでやってみることにする。
 Ubuntu 8.04では動くということは知られていて、自分も8.10とかにこだわる必要はないのだけど、LOOX U上でのセットアップの面倒さ(主にネットワークが動かないことによる)の前にやる気にならなかったのだった。しかし考えてみると、下ごしらえはLOOXでやる必要はないのだった。おあつらえ向きにKVMというものもあるし。つまり、
  1. kvm上に新たにUbuntu 8.04をインストールする
  2. Ubuntu 8.04上で、必要なパッケージのインストールやカーネルモジュールのインストールを行う
  3. kvmのディスクイメージそのままでUSBメモリに移す
  4. USBメモリからLOOX Uを起動
  5. 必要なファイルを上書きすればインストール完了・・のはず
ということだ。
 まー、結果からいうと、やっぱり相当めんどくさいことになったのだけども。

KVM上のディスクイメージにUbuntu8.04のインストール

 ディスクイメージの用意。(kvmで話をしてるけど、もちろんqemuでも無問題) Ubuntu 8.04 kvmで起動用USBメモリを作る、その他
kvm-img create -f raw 804.img 4G
 ここでの肝はrawフォーマットにすること。kvmでUSBメモリを直接マウントしてもいいだろうけど、コンパイルとかでファイルアクセスが結構あるので、一応こちらを推薦。あと、4Gではちょっとキツキツで、途中で中間ファイルを削除する必要があった。とにかく、USBメモリ容量以下、自分のやり方だと半分以下だとさらによい(理由は後述)。  そして普通にUbuntuをkvmでインストール。
kvm -m 1024 -hda 804.img -cdrom ubuntu-ja-8.04.1-desktop-i386.iso
 次にディスプレイドライバの設定。自分はgihyo.jpの記事第57回 VAIO Type Pを使う(2):各種ドライバの設定を参考にした。ネットワークはつながるしコンパイルは速いし、実機よりはよほど快適であろう。
 次はネットワークドライバのインストール。こちらはLOOX U/C30 に Ubuntu 8.04 をインストして高解像度を参考にさせていただく。ここでもやっていることは基本的に同じなのだが、ディスプレイドライバの部分は自分の手順ではgihyo.jpのやり方の方が楽だった。

起動用USBメモリ作成

 USBメモリを用意し(自分が用意したのは8GB)、/dev/sdcなどと認識されたとして、kvmのディスクイメージを書く。
dd bs=512 if=804.img of=/dev/sdc
 これが相当時間がかかる。bsのサイズ指定が失敗したのかねえ・・・。
 さて、こんな安直なんでホントに起動するのかよ、と思ったものの、動いた。とはいえ、ネットワークとpsbディスプレイドライバはまだ動かない(涙)。USBメモリをデスクトップマシンにつないで直接編集する。まずは/etc/X11/xorg.confのDeviceセクションをばっさりコメントアウト(cirrus設定になってた)。psb設定を書いてしまうとkvmに持ってきたときにうまくないけど、自動認識が働くようだ。次にネットワークだけど、上のバーに常駐してるNetworkManagerというやつ、隠しSSIDでTKIPなうちの無線LANを認識しないので、wpa_supplicantをインストールし、wpa_supplicant.confをキッチリ書いて対応した。
 ここまでで、USBメモリから起動し、ネットワークとpsbディスプレイドライバを有効にすることに成功。(他にもいじくったような気もするけど、よく覚えてない)
 ちなみに、うまくいかなかったときはデスクトップマシンにUSBメモリを持ってきて、kvmでUSBメモリから起動、いろいろ変更などをすると便利かも。

実機ハードディスクへのインストール

 すでに8.10をインストールしているので、それに上書きするだけ・・・とはいかない。少なくともgrub関連とfstabくらいはバックアップを取っておかないと(ちょっと失敗)。最近は、というかUbuntuがなのか、UUIDとかでやってるんだねえ。わからん。
 HDD上では/と/bootが分かれてたので、そのように。そして、適当に書いた/boot/grub/menu.lstでは起動しなかったので、すでにあったmenu.lstを持ってきてカーネルイメージの部分だけ書き換えて対応した。そして、
grub
root (hd0,4)
setup (hd0)
quit
てな感じでgrubをインストール(/bootパーティションは/dev/sda5なので、grubだと0からだから4になる)。
 ああ、それと、先ほどの引用元にもあったように、カーネルオプションで"generic_all_generic_ide"を渡さないとハードディスクを認識しない。


 さて、こんなものだったかな?いろいろ書き忘れた気もするけど・・・。ちなみに作業中はxserverの自動起動をオフ、splashもオフにしてます。こうでもしないと状況が把握できないので。
 ここまでやってYoutubeを見ると、たまにもたつくものの、鑑賞に耐えるレベルになった。Intelがまともに対応してくれれば、こんな苦労もすることないのになあ・・・