シリアルコンソールでGRUBを
- 公開日: 2010/04/10(土) 00:00[JST]
うちのサーバは、通常用のFreeBSDと、トラブル時にバックアップからrestoreで復旧する時に起動するための別のFreeBSDとのデュアルブートになっている。 また、通常はモニタもキーボードも接続せず、make world等の為にシングルユーザモードに落ちる時は、シリアルコンソールエミュレータのkermit をインストールしたDOSマシンから操作するようになっている。
で、トラブル時に復旧用のFreeBSDマシンから起動させる必要が有るわけだが、FreeBSD標準のブートセレクタは、シリアルコンソールに対応して内っぽいので、現状では、復旧時はモニタとキーボードをサーバにつなぐ必要があった。これは不便、ということで、シリアルコンソールに対応したブートセレクタに入れ替えようと思った次第。
と、いうわけで、GRUBをインストールして、Linnux JFのRemote Serial Console HOWTOに書かれているとおりに /boot/grub/menu.lst をつくってみた。
が、うまくいかない。確かにシリアルコンソールには何がしかのメッセージが表示されているのだが、文字化けしてよくわからない。GRUBが想定しているコンソールがVT100で、kermitがVT320互換なせいだろうか。 grub-terminfo とかいうコマンドで、grubが想定するコンソールの種類を設定できそうなのだが、 /usr/local/sbin/grub-terminfo VT320 などと実行してもエラーが出る。ぐぐって見たところ、どうやらFreeBSDはncursesをインストールする必要があるようだ。
ということで、 devel/ncurses をインストールして、 /usr/local/sbin/grub-terminfo VT320 を実行。さらにgrub-install。
これで、動くようになった、かな?
(追記) /usr/local/sbin/grub-terminfo VT320 だとダメ。 /usr/local/sbin/grub-terminfo kermit ならOKだった。
(追記2) メニューから復旧用のFreeBSDを起動することができない(通常用のFreeBSDが起動する)。grubプロンプトから直接、
grub> root (hd0,0,a) grub> kernel /boot/loader grub> boot
とすれば起動してくれるのだが。