ILOM から /SP/console でサーバにログインしたい

だいたいの 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 (
(このまま固まる)
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 できる気がしないです。