2014年06月06日
VINTAGE TERMINAL - CATHODE で気分はハッカーズ?
僕はオールド・コンピューターが大好き。 スティーブン・レビー 「ハッカーズ」、トレイシー・キダー 「超マシン誕生」。 今では本でしか知ることが出来ない、あのパソコン創世記を生きた彼らの息づかいが聞こえてくるようでワクワク、ドキドキするでしょう。 そんな古き良き時代にタイムスリップさせてくれる仮想端末(ターミナル)が今日ご紹介する CATHODE - ビンテージ・ターミナル。
CATHODE ファースト・インプレッション
CATHODE のプロジェクト・ページがこちら。 Mac OS X (10.6+) 版、iOS (iOS 7)版の2つがリリースされています。
Cathode | Secret Geometry
なんと Mac 版のお値段は1000円(デモ版あり)。 た、高いわぁ・・・。 しかし、俺のオールド・コンピューター愛を止めることは出来ない(興奮しておかしくなっている)。 喜んでお前のドッグフードを食ってやるぜ!、とデヴィッド・カトラー風(「闘うプログラマー」参照)に製品版を購入(CATHODE の完成度は十分高く、ドッグフードではないのでご安心下さい)。 ちなみに iOS 版は500円。 iPad mini あたりで使ったらクールですね。
さて、古き良き時代のシリアル・コンソールを起動しましょう。 ワクワク。
す、素晴らしい。 走査線の動きまでも再現したこの CRT ディスプレイ。 悔しいけどこういう技術力・芸術性・表現力を併せ持ったプロダクトとその技術者を醸造する環境は Apple/Mac まわりが一番かもしれませんね(それでも僕は不自由じゃない Linux が一番クールで刺激的なデスクトップ、ワークベンチだと思いますけど)。
湾曲したディスプレイに表示されたメッセージが時代を感じさせます。
当然ですが、日本語(マルチ・バイド文字)は取り扱えません。 漢(オトコ)のコンソール道です。 筋金入りのシステム管理者ならば対応できるはず。
Preferences から Console, Monitor とそれぞれのテーマを細かく調整可能。
うーん、博物館に来ているみたいで楽しいですね。
勿論、フラットな端末として使うこともできますよ。
Preferences > Terminal ではエスケープシーケンスに対応したカラー表示の有効・無効やスピード設定が可能。 スピードを遅くすればモデム時代のノスタルジーを味わえます。
実際に僕が楽しんでいる動画がこちら。
もし非仮想な真のビンテージ端末を見つけたら・・・
実は僕、廃棄寸前だったハイエンド UNIX サーバ用の端末を譲り受け、自宅の Linux PC につなげてニヤニヤしてたことがあるんですが、この前引っ越した時に処分しちゃったんですよねえ(残念・・・)。
え、やっぱり本物は違うのかって? そりゃあモチ最高!、リアルな端末を目の前にして、俺はこれから「ウォー・ゲーム」を始めるんだぜ!って大はしゃぎしましたよ(一人で・・・)。
いくら素晴らしい CATHODE であってもやはり仮想端末。 本当の意味であの端末ではありません。 何時かもう一度、中古・格安で名機が売られているのを見つけたら迷わず買ってクールなサブディスプレイにするつもりです。
今日はそんな時の為に本物のシリアル・コンソールを Linux PC で使う方法もご紹介しておきましょう。
Linux では getty (ゲッティ)と呼ばれるプログラムがログイン処理を担っているのですが通常利用している (min) getty はシリアル・ポートは見ておらず agetty を使う必要があります。
もし、agetty コマンドが無ければ util-linux パッケージをインストールして下さい。
[root@linux ~]# agetty --version
agetty from util-linux 2.20.1
agetty さえ用意すれば後は簡単。 /etc/inittab ファイル(Ubuntu の場合は upstart 形式の設定ファイルになります)に次の1行を追加します。
[root@linux ~]# vi /etc/inittab
# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
# for serial console.
s1:2345:respawn:/sbin/agetty 9600 ttyS0 vt100
設定した値の意味はこちら。
値 | 説明 |
---|---|
s1 | 識別ID。 4文字以下でユニークな値 |
2345 | シリアル端末を利用するランレベル。 |
respawn | getty 終了(ログアウト)後に再度繰り返し起動する。 |
/sbin/agetty | 利用する getty へのパス |
9600 | 通信速度(ビット/秒)。 9600 - 115200 が妥当 |
ttyS0 | シリアル・ポート(|○|○|)のデバイス・ファイル名。 パスは含まない |
vt100 | 端末種別(省略可能) |
通信速度を遅くするとオールド・コンピュータ感が出るかもしれませんね。 シリアル(RS-232C)ポートは COM1 ならば ttyS0、COM2 であれば ttyS1 となるはずです。 また、デバイス・ファイルは絶対パス(/dev/ttyS0)で表記しない点にも注意しましょう。
inittab の準備が出来たら次のコマンドで init デーモンに設定を再ロードさせましょう。
[root@linux ~]# init q
これで真のビンテージ端末でログイン・プロンプトが表示された(る)はず!
もし、root でログインするならば /etc/securetty に利用する tty 名を追記しておく必要があります。
[root@linux ~]# vi /etc/securetty
console
vc/1
vc/2
... snip ...
tty10
tty11
# for serial console.
ttyS0
もし、貴方が大変気に入ってカーネル起動時のメッセージまでシリアル端末に表示したいと思ったなら /boot/grub/grub.conf ファイル(RedHat系)を編集して次のように新たな2行(--unit で指定する値は ttyS* の番号)及び kernel オプションに console=ttyS0,9600 を追加した起動エントリを作成してください。
[root@linux ~]# vi /boot/grub/grub.conf
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.x.x.el6 - for serial console)
root (hd0,0)
# for serial console. --unit=0 (ttyS0), 8 bits, 0 parity
serial --unit=0 --speed=9600 --word=8 --parity=no --stop=1
terminal serial
kernel /vmlinuz-2.x.x.el6 ro root=/dev/mapper/lv_name *snip* console=ttyS0,9600
initrd /initramfs-2.x.x.el6.img
永遠に起動しなくならないよう、まず既存設定行をまるごとコピー後、新たなエントリとして作成・起動確認して下さいね。
それでは、より良いコンソール・ライフを。