わおー,やっとわかったー。
Xenするためには,現状ブートローダをgrubにする必要がある。 それと並行してリモート管理を確実にするために シリアルコンソール化したいのだが, これまでgrubにするとtipからBreak信号送ってもDDBプロンプトに落ちてくれな くて,あやうい操作しがちなXenホストのDOM0がハングったときに対処できなく てとても不安だった。諦めて長いことほったらかしだったが man ddb(4)したらちゃーんとわかった。これまではgrub側から色々調べてたから 答がみつからなかったのかー。
grubで module (hd0,a)/netbsd console=tty0
みたいに
起動した場合,DDBに落ちるシーケンスを決めるsysctl変数がこんな感じに
なっちゃってるのだ。
sysctl hw.cnmagic
hw.cnmagic = \x2b\x2b\x2b\x2b\x2b
なんじゃらほい? デフォルトは \x27\x02
である。
これを設定するには,コマンドラインで生の 0x27 0x02 のコードを
文字列として指定しないといけないようだ。えーと,えーと,
zshでやっちゃえー!
zshsysctl -w hw.cnmagic=$'\x27\x02'
hw.cnmagic: \x2b\x2b\x2b\x2b\x2b -> \x27\x02
$'…'
というのが16進で文字列を書ける記法ね。
で,tipを繋いだ端末からそれ ~# っとな。
login: ~Stopped at netbsd:cpu_Debugger+0x4: popl %ebp db>
いえーい。やっとできた。これで常用マシンをXenサーバにできるぞー。
/etc/rc.local
でいっか。こんな風。
/bin/zsh -c "sysctl -w hw.cnmagic=\$'\x27\x02'"
キーワード: grub netbsd bsd ブートローダ シリアルコンソール break信号 sysrq ブレーク tip ターミナル カーネルデバッガ