2008年9月20日土曜日

Linuxの起動後画面をオリジナルに置き換える

Linuxの起動完了後、たとえば Debian GNU/Linux 4.0の場合なら以下のような画面が表示されます。

Debian GNU/Linux 4.0 debian tty0

debian login:

しかし、サーバとして利用する場合、自分のクライアントPC内にサーバ用途の仮想PCを起動しておく場合など、IPアドレスの設定値やディスクの使用量などが常に表示されていたら便利ではないでしょうか?

Linux の場合、このログインコンソールは /etc/inittab の以下の設定値に基づいて出力されています。

1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3
4:23:respawn:/sbin/getty 38400 tty4
5:23:respawn:/sbin/getty 38400 tty5
6:23:respawn:/sbin/getty 38400 tty6

上記は、tty1(最初の仮想コンソール)ではランレベル1~5においてgettyにログイン待ち受けをするよう、またtty2~6(Alt-F2~F6で切り替え可能な仮想コンソール)ではランレベル2, 3においてgettyにログイン待ち受けをするように指示しています。そして先に示したログインプロンプトは、このgettyが実際に実行され表示しているものです。

この画面を自分のお気に入りステータス画面に置き換えてみましょう。ためしに/root/console.shとして以下のスクリプトを作成します。chmodコマンドで+xしておくことを忘れずに。

#!/bin/sh

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

while true; do
        date
        uptime
        echo
        ifconfig eth0
        echo
        df -h | egrep  '^/'
        echo

        sleep 3
        clear
done

そして、tty2(Alt-F2で表示可能な仮想コンソール)にこのスクリプトを割り当てます。/etc/inittab 2: ではじまる行に -n (ログインユーザ名を尋ねない), -l (ログインプログラム)を追加します。

2:23:respawn:/sbin/getty -n -l /root/console.sh 38400 tty2

設定を終えたら、システムを再起動するか、 init 1 でシングルユーザに落ちた後いに init 2 を実行しマルチユーザで起動しなおしてください。その後コンソール Alt-F2 を押下すると、先に作成したスクリプトが動作していることがわかります。

今回は tty2 に設定を行ったため、起動後に裏側の仮想コンソールでスクリプトの結果が表示されていますが、tty1 に設定を行えば起動直後に結果が表示されます。

 

これにより、ログインせずとも、仮想コンソール上に常時システムの状態が表示されるようになりました。個人利用であればこの方法は便利ですが、しかし、本来であれば認証を受けた者のみが確認出来る内容が、物理的アクセス可能な全ての者に許されることになりますので、IPアドレスやディスクの利用率情報などを表示させるような場合はそのリスクを勘案した上で行ってください。逆にとらえれば、この方法であれば、ログイン権限を与えずに、注視すべきステータス情報をモニタさせることができる、というメリットがあります。



0 件のコメント:

コメントを投稿