DOSモバでGRUB
結局のところA20問題だった。
よって、DOSモバでGRUBを動かすには以下の手順が必要になる。
ビルド
- GRUB0.97を展開して./configureする。GRUB2はVGAに依存しているためおそらく使えない。
- MakefileのSTAGE2_CFLAGSをSTAGE2_CFLAGS = -Os -fno-stack-protector -march=i386 -m32とする。そうでなければ686命令コードを出力するため、モバイルギアの486では動作しない
- stage2/asm.Sを以下のように変更する
3: /* use keyboard controller */ pushl %eax call gloop1 movb $2,%al /* 以下3行を追加 */ outb $0x92 call gloop1
インストール
- CFをFAT16でフォーマットする。低容量のCFはFAT12でフォーマットされているかもしれない。また一部のCFは完全に起動しない。もし、GRUB等が起動せず、通常のUnishellが起動するようなら、CFの交換を検討する(Sundiskは比較的よく動作する)。
- CFをマウントし、/boot/grubを準備する。適切なmenu.lstを準備する必要もある(キーボードが効かないため)。
- ホスト側でgrubを起動し、普通にセットアップ*1
- bviなりなんなりでMBRのシグニチャを修正する http://d.hatena.ne.jp/mjt/20081023/p1
- CFを挿した状態で電源を投入する。すでに電源が入っている状態であればリセットする。
A20問題
http://www.win.tue.nl/~aeb/linux/kbd/A20.html
ここで説明されているIBM_L40の対応がモバイルギアにも必要。
他に、認識されているRAM容量がおかしい等の問題がある。
*1:http://www.gentoo.org/doc/ja/handbook/handbook-x86.xml?part=1&chap=10 gentooの文章が参考になる。しかし、通常の方法でコンパイルされたGRUBはほぼ間違いなく動作しないことに注意
UbuntuをPVMで使う
意外と難易度が高い。
インストールはHVMとして行い、/bootにあるカーネルとinitrdだけをDom0側に持ってきて使う。PV-GRUBは正常に動作しないことが有った。
- HVMをセットアップし、LiveCDから普通にインストールする
- パッケージlinux-xenとtightvncを追加(VNCは外部からの操作用)
- gconf-editorでapps/gnome_settings_daemon/plugins/keyboardとmouseのactiveのチェックを外す。そうしないとvncserverを使ったときに正常にキー入力を受けつけない。
- システム/システム管理/ログイン画面から、リモートを選び、リモートログインを許可する
- シャットダウン
- PVMを設定する。kernelとしてboot/vmlinuz-2.6.24-21-xen、ramdiskとしてboot/initrd.img-2.6.24-21-xen、extraとしてboot/grub/menu.lstにあるカーネルオプションを拾ってくる
- vncserver -query 127.0.0.1してそれに繋ぐ
感覚としては、coLinuxで普通のディストリビューションを使うのと近い。
64bitのXenで32bitのLinuxが正常に動作する。要するに、周囲の環境と同じ32bit環境で色々と試験する必要があったため。
追記 : 既にlinux-xenではなく、通常の-serverのカーネルにXEN DomUのサポートが入っている、、はずだが上手く動いていない。