Raspberry Piのシリアル端子に、ターミナルを接続し、コンソール出力してみました。(本当
・・・
シリアル?ターミナル?コンソール?
そのあたりの認識を、少し整理しておこうと思います。
シリアルポートといえばUART?RS-232C?
シリアルポートといえば・・・というのは完全に私の偏見です。
シングルボードコンピュータのGPIO端子には、UARTインタフェースが搭載されています。
TX(Transmit Data)とRX(Receive Data)、それぞれ送信・受信端子になります。
シリアルポートの実装として、UARTが多く使われていると思います。
昔のコンピュータにはシリアルポートがたくさん搭載されていました。(実装形態はさておき
「シリアルマウス」はシリアルポートに接続し、「バスマウス」はパラレルポートに接続しました。
USBはシリアルポートの進化系なのかと思います。
ここで大切なのは、「昔のコンピュータには、シリアルポートがたくさん搭載されていて、マウス以外にターミナルを接続して、皆で共用していた」点でしょうか。
ターミナルといえばVT100端末
ターミナルの和訳は端末でしょうか。
VT100という端末が標準的で、シリアルーポートに接続して、1台のコンピュータを多くの人が同時に使用していました。
ttyS0, ttyS1, ttyS2・・・・teletypewriter?デバイスになります。
シリアルポートではなく、LAN端子でターミナルを使用できるように、ptsやpty、擬似端末デバイスが実装されました。
恐らく今でも、VT100互換機能が実装されているターミナル・アプリケーションが存在していると思います。そのようなアプリケーションは、擬似端末としてSSHやTELNETプロトコルによるTCP/IP接続が実装されていますが、リアルにシリアル(COMポート)へ接続する機能を持つものも存在します。
またターミナル出力の文字の色を変えたり等、文字装飾に、カーシス(curses)ライブラリが使用されており、VT100の仕様の延長で実装されているようです。
コンソール出力へコンピュータの状態を出力
コンピュータにキーボード・マウス・ディスプレイを接続する意味で、コンソールという場合もあると思いますが。
「コンソール出力」「ttyS0」は、たとえば起動中のメッセージを出力する先のデバイスを意味する場合があります。ttyS1やttyS2には出力されません。そこがポイントです。(つまりttyS1はコンソールとは言わなかった
Raspberry Pi等のシングルボードコンピュータは、ブートローダーの出力は、シリアル・コンソールに出力される仕様です。つまり、シリアルポートにターミナルを接続すると、ブートローダーのメッセージを見ることが出来ます。(今もそうです
同時にディスプレイにも出力され、キーボード・マウスで操作することが可能のため、コンソール出力は2系統(ディスプレイとシリアル)に出力されている仕様かと思います。
ただし、ブート・シーケンスがブートローダーからramfs(カーネル読み込み)へ移行すると、現在ではシリアルコンソールへの出力は行われなくなります。また画面も黒い状態です。
ちなみにFedoraは、シリアルコンソールを有効にすることで、ramfs起動中のメッセージをターミナルで確認することができます。ディスプレイの画面は黒い状態ですが。
また、起動時以外でも。使用中に、コンピュータに何か異常が発生した場合、ハードウェアからコンソールに、何かメッセージが出力されます。
現在のコンピュータの多くは、WindowsやLinux等のOSを介して、システムログや、/var/log/messageファイルにメッセージが出力されます。
一方、昔のコンピュータ、ディスプレイが接続できず、たくさんのシリアル端子を搭載していた時代のコンピュータは、ttyS0が特別な端子として扱われ、コンソール出力として使用されていました。
ハードウェア上で何かイベントが発生すると、コンソールにメッセージが表示されました。出力先は、ターミナル上のテキストメッセージだったり、X Window System上のコンソール出力ウィンドウだったりしました。
それらの名残なのかはわかりませんが、スーパーユーザー(root)のログインはコンソールのみに制限する、という機能が今も残っていると思います。ttyS0はスーパーユーザーで直接ログインできますが、疑似端末ttyはログインできない制限。
これはつまり「コンソールではないから管理者はログインできない」という感じでしょうか。
シングルボードコンピュータのシリアル端子ですが。
このように、実は多くの情報が出力される仕組みを持っています。
VT100端末が多く使われたのは、1970年後半から1990年代くらいまでかと思いますが。
その頃の技術や仕様を継承していて、なかなかおもしろいと思います。
シリアル端子のコンソールは、実用的にも便利かと思います。
よろしければ使用してみて下さい。
シリアル接続は、5Vではなく3.3V対応をお忘れなく!