だいたいの Sun のサーバには ILOM (Integrated Lights Out Manager, ALOM とか ELOM とかも同じようなもの?) ってのが付いています。いわゆる管理用のワンボードマシンのようなものです。
ILOM の特徴
本体が落ちていても通電さえしていれば ILOM は動いていて、 ssh で ILOM CLI にログインして本体の電源を入れたり、http 経由で ILOM Web にログインしてブラウザから操作することもできます。さらには KVM をまるごとリダイレクトできる jnlp も用意されています。知ってる限りでは RJ45 ポートが 2 つ付いていて、シリアル (SER MGT) とイーサネット (NET MGT) の両方で ILOM に接続できるようになっています。
たとえば、まだ OS をインストールしていないマシンでも、イーサネット経由で ILOM さえつながれば、POST 画面から BIOS に入るのもリモートで作業できます (x86 前提ぽくて恐縮ですが...)。 PXE boot できればそこからインストールすればいいわけですね。
Dell や HP のサーバを使っている人には IPMI (Intelligent Platform Management Interface) と言ったほうが分かりやすいかもしれません。 Solaris なら /dev/bmc も用意されているし、基本 IPMI 互換ですが、もうちょいリッチなもの、というかんじです。
シリアルとか端末とかコンソールとか
Sun のサーバの1つである Sun Fire X4540 (もう EOL; 前身の X4500 は TSUBAME 1.0 で使われてたやつ) には、 ttya (COM1), ttyb (COM2) が OS から見えるものの物理的にはポートは存在せず、ILOM のシリアルポートを ILOM の /dev/console として使うか、本体のシリアルポート (/dev/ttyb?) として使うかが BIOS で選べるようになっているようです。また ILOM CLI からは "start /SP/console" というコマンドで本体の /dev/ttya にシリアル接続できるようです。
...とか言ってもよく分かんないですよね。正直シリアルコンソールなんてほとんど使わないし、自分くらいの "プレゆとり" な世代は pty とか pts しか知らないですよ。
感覚としては以下のようなことは分かっているんですが、それぞれの関係がどうなっているのか分からない。
- 本体にモニタとキーボードつなぐと "ホスト名 login:" というプロンプトが出てログインできる
- ILOM に /SP/console という機能があって、コンソールにつながると説明書に書いてある (ログインできるような期待がある)
- OS からは /dev/console と /dev/ttya と /dev/ttyb が見える
- eeprom もしくは grub の multiboot に渡すブートオプション (-B) で、 console=[text|ttya|ttyb] が選べる
/SP/console が動かない
とまあ、ここまでは前フリで、話としては ILOM から start /SP/console してもログインプロンプトが出なくて困ってました。例えば OS の sshd が死んでしまったときにリモートからログインしたいんだけど、Java アプリだと GUI でも操作できる代わりにコピペできないので、ILOM に ssh して作業したいのです。
ひたすらググってるうちに http://oshiete.goo.ne.jp/qa/4012162.html を見たら、あーこんなかんじかな? と繋がったような気がするのでメモです。間違ってても知りません。
- ログインプロンプトは /usr/lib/saf/ttymon -d の引数で渡したデバイスに出る
- デフォルトでは /dev/console
- /dev/console は仮想的なデバイスっぽい?
- 実体は eeprom もしくは multiboot のオプションで決める。変更するときは再起動が必要。
- console=text の実体
- 本体につないだモニタ = ILOM Web の jnlp でいう "ILOM Remote Console"
- console=ttya の実体
- BIOS で SER MGT ポートを ILOM に渡してる設定の時は /SP/console
- SER MGT ポートを本体に渡してる時は未確認 (/HOST/console なのかな?)
- デフォルトでは console=text かつ ttymon は /dev/console を向いている
- なので /SP/console ではログインプロンプトが出ない
ttymon の先を変える
BIOS の機能として console=text の実体に /SP/console に繋げられるとありがたいんですが、そうもいかないようでした。再起動などせずにサクっと切り替えるには、ttymon でつなぐ先を変えばいいじゃん!
- さいしょ
ichii386% ssh ILOMのIPアドレス Password: Oracle(R) Integrated Lights Out Manager Version 3.0.10.13 r56460 Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. -> start /SP/console Are you sure you want to start /SP/console (y/n)? y Serial console started. To stop, type ESC ( (このまま固まる)
- ttymon のデバイスを変える
ichii386% pfexec svccfg -s console-login editprop ("# setprop ttymon/device = astring: (/dev/console)" の行で、先頭の # を削りつつ以下に編集して保存、終了) setprop ttymon/device = /dev/ttya ichii386% pfexec svcadm restart console-login
- 固まってた /SP/console からログインプロンプトが出る!
- めでたしめでたし
このあたりで、そういや Linux だと Ctrl+Alt+Fn とかで tty 切り替えてたよなー、と思い出すんですよね。 Solaris の流儀だと1つしか使わないものなのかな??
おまけ
某パートナー企業のサポートに聞いてもまったく埒があかず、しかたないから真面目に調べたら、あっさりできた。お金とってあそこはいったいなにやってんだ...。
そうそう、これを調べてる間に http://www.sun.com/opensourcecode/ なんてのがあったのを知りました。もうすごいね、自分で make できる気がしないです。