Ubuntuを入れた

moshの安定動作がそろそろ修了に関わるフェーズになってきたので、プライマリな開発環境の一つ*1であるところのUbuntuに乗りかえた*2。もっとも、ノートはまだXPだったりするので完全に乗りかえたわけでもないし、moshMinGWCygwinはまだまだチェックするつもり。
Linuxのウリといえば幅広い環境で動作する柔軟性だと思うが、まだ微妙なハードウェアで動かすにはWindowsよりも柔軟では無いように思える。

VESA VBEをサポートしていないハードウェアでの使用

僕のPCにはVBEをサポートしたビデオカードが差さっていないので、UbuntuはAltarnate CDでないとインストールできない。てっきり、Desktop CDでもテキストモードインストールできるものだと思っていたので。。
テキストモードでインストールしても、インストールしたあとのUbuntuはグラフィカルに起動してしまうので、/boot/grub/menu.lstを編集して、splashを消してnofbを入れる。

title Ubuntu 9.04, kernel 2.6.28-13-generic
uuid XXXXXXXXXXXXX(UUIDが入る)
kernel /boot/vmlinuz-2.6.28-13-generic root=UUID=XXXXXXXXXXXXX(UUIDが入る) ro nofb
initrd /boot/initrd.img-2.6.28-13-generic
quiet

通常の人間はこれが問題になることは無いはず。

Xを上げないようにする

デフォルトではgdmがローカルにXサーバを上げてしまう。/etc/gdm/gdm.confを編集して、0=をコメントアウトする。
もちろん、XDMCPを有効にするためにも編集する必要がある。

VNCでログインできるようにする

UbuntuVNCログインするのはかなり敷居が高い。通常の人間はFedora(これはVNCをそれなりに熱心にサポートしている)を使うか、いわゆるリモートデスクトップで我慢するほうが良いと思う。
必要なのは、

  1. XDMCPを使う
  2. gnome-settings-daemonがキーボードプラグインを使用しないようにする (最近のgnomeを使う大抵のディストリビューションで必要)
  3. (もし有れば)XFIXES拡張を無効にする

キーボードプラグインの無効化は、gconf-editorでできる。/apps/gnome_settings_daemon/plugins/keyboard/activateのチェックを消す。
あとは、Xvnc :1 -query localhost -PasswordFile .vnc/passwdのようにして起動し、アクセスできる。
Fedoraと違って、XvncはOpenGLをサポートしていない。あと、Xvnc実装によってデフォルトのdepthがまちまちなので常に明示するのが望ましい。

uimにする

  1. aptitudeなり何なりでuimを入れる
  2. im-switch -cで切り替える

もしかしたらubuntu-desktop-jaが必要かもしれない。

セカンダリのHDDから起動する

あまりUbuntuとは関係無いが、一応Vistaを残しておく都合上から、セカンダリのHDDにインストールしている。
BIOSではセカンダリのHDDから起動するための標準的な手法が提供されなかったので、GRUBをCDにインストールして、

root (hd1)
chainloader +1
boot

を自動的に行うようにした。つまり、起動するOSを物理的なCDで選んでいる。ローテクに思われるかもしれないが、BIOSのPOSTを待って、時間制限のあるメニューに俊敏に反応するよりは建設的に思える。
これができるようにインストールするには、Ubuntuインストーラが勧めるように、プライマリのHDDのMBRに対してGRUBをインストールしてはいけないUbuntugrub-installは、DOS拡張パーティションがあったり、そのほかいくつかのシチュエーションにおいて失敗するので、クリーンインストール以外ではあまり信頼しないほうが良いように思える。(もちろん、失敗したなら、いわゆる/fixmbrとか他のOSからGRUBを入れるなりなんなりで比較的簡単に復旧できる)
あと、Ubuntuは/bootパーティションを分けるようにできていないので、通常のGRUB Legacyではブートできない。GRUB LegacyはGRUB Legacyを起動できないので、chainloadする以外の望ましい手法は無い。

まだできてないこと

全体的に、パッケージで提供されていないソフトウェア(とくにカーネルモジュール)の管理手法がいまいち分からない。

バッファローのGX-DVI/U2は、フレームバッファコンソールとしてはちゃんと機能するが(旧udlfbか現displaylinkモジュールのインストールが必要)、Xで機能しない。
XのモジュールはGtkの動作がおかしくなる。多分これはGtk側が悪い。また、GX-DVI/U2の使っているチップは正常に認識しないので適当に修正する必要がある。
Xfbdevは起動するが、fbsetを起動しないと画面が更新されないので事実上使えない。他のDirectFBアプリケーションもすべてこの問題がある。

実はまだ動くmoshをビルドできていない(SIGILLで死ぬ)。うーむ。

*1:もう一つはMacOSだが、MacOSではFPGAの開発ができない。。

*2:それ以外にも、PCIバイスを差しかえるだけで電話掛けないといけない面倒なOSにつきあいきれなくなってきたというのも有るけど。