Go to main content
Oracle® Solaris 11.3 デバイスドライバの記述

印刷ビューの終了

更新: 2016 年 11 月
 
 

コンソールフレームバッファードライバ

システムコンソールに使用されるフレームバッファーのドライバは、システムがコンソール上にテキストを表示できるようにするためのインタフェースを提供する必要があります。Oracle Solaris OS には、カーネル端末エミュレータがコンソールフレームバッファー上に直接テキストを表示できる、拡張された視覚的な入出力インタフェースが用意されています。この付録では、必要なインタフェースをフレームバッファードライバに追加することにより、そのドライバが Oracle Solaris カーネル端末エミュレータと対話できるようにする方法について説明します。

Oracle Solaris コンソールとカーネル端末エミュレータ

カーネル端末エミュレータの役割は、コンソールフレームバッファーに、そのフレームバッファーの画面の高さ、幅、およびピクセルの深さモードによって決定される正しい位置と表現でテキストを描画することです。端末エミュレータはまた、スクロールの操作、ソフトウェアカーソルの制御、および ANSI 端末のエスケープシーケンスの解釈も行います。端末エミュレータは、グラフィックスカードに応じて VGA テキストモードまたはピクセルモードのどちらかでコンソールフレームバッファーにアクセスします。フレームバッファードライバを Oracle Solaris コンソールフレームバッファードライバとして使用するには、そのドライバが Oracle Solaris カーネル端末エミュレータとの互換性を備えている必要があります。ターゲットプラットフォームは、フレームバッファードライバを変更して Oracle Solaris カーネル端末エミュレータとの互換性を確保する必要があるかどうかを判定するための、もっとも重要な要因です。

  • x86 プラットフォーム – x86 コンソールフレームバッファードライバは、すでにコンソールのフレームバッファーインタフェースをサポートしているため、コンソールフレームバッファードライバを変更する必要はありません。

  • SPARC プラットフォーム – コンソールフレームバッファードライバが Oracle Solaris カーネル端末エミュレータと対話できるようにするには、そのドライバはこの付録で説明されているインタフェースを使用するべきです。

x86 プラットフォームのコンソール通信

x86 プラットフォームでは、Oracle Solaris カーネル端末エミュレータモジュール (tem) は VGA テキストモードを排他的に使用して vgatext モジュールと対話します。vgatext モジュールは、業界標準の VGA テキストモードを使用して、x86 と互換性のあるフレームバッファーデバイスと対話します。vgatext モジュールは、すでにコンソールのフレームバッファーインタフェースをサポートしているため、x86 フレームバッファードライバはカーネルの tem モジュールと互換性があります。x86 フレームバッファードライバに特殊なインタフェースを追加する必要はありません。

この付録の残りの部分は、SPARC プラットフォームにのみ適用されます。

SPARC プラットフォームのコンソール通信

SPARC フレームバッファードライバは通常、VGA テキストモードでは動作しません。SPARC フレームバッファードライバは通常、表示されるテキストとイメージを示すピクセルパターンを送信する必要があります。カーネルの tem が、画面へのデータの描画、スクロールの実行、およびテキストカーソルの表示を容易にする特定のインタフェースをサポートするには、SPARC ドライバが必要です。ドライバが tem から送信されたデータを実際に画面に描画する方法は、デバイスによって異なります。ドライバは通常、ハードウェアとビデオモードに従って、データをビデオメモリーに描画します。

Oracle Solaris OS には、カーネル端末エミュレータが互換性のあるコンソールフレームバッファーを直接操作できるインタフェースが用意されています。ドライバを変換してカーネル端末エミュレータとの互換性を確保する利点は、次のとおりです。

  • パフォーマンス (特に、スクロール) の大幅な向上

  • ANSI 文字列色の機能の拡張

  • システムコンソールのストリームがシリアルポートから出力されている場合でも、コンソールフレームバッファー上でログインセッションを開始する機能

SPARC コンソールフレームバッファードライバに、カーネル端末エミュレータとの互換性を確保する必要はありません。コンソールフレームバッファードライバにカーネル端末エミュレータとの互換性がない場合、システムは、OpenBoot PROM 内の FCode 端末エミュレータを使用します。

コンソールフレームバッファーは、EEPROM の screen 環境変数によって識別されます。システムは、フレームバッファードライバが tem-support DDI プロパティーをエクスポートするかどうかをチェックすることによって、コンソールフレームバッファーにカーネル端末エミュレータモジュールとの互換性があるかどうかを判定します。tem-support プロパティーがエクスポートされる場合、システムは、システムブート時のコンソールの構成中にフレームバッファードライバに VIS_DEVINIT 入出力制御 (ioctl) コマンドを発行します。tem-support DDI プロパティーがエクスポートされ、かつ VIS_DEVINIT ioctl コマンドが成功して tem に互換性があるバージョン番号を返した場合、システムは、そのフレームバッファードライバをカーネル端末エミュレータ経由で利用するようにシステムコンソールを構成します。入出力制御のドライバエントリポイントについては、ioctl(9E) のマニュアルページを参照してください。

カーネル端末エミュレータをサポートする SPARC ドライバは、tem-support DDI プロパティーをエクスポートします。このプロパティーは、そのドライバがカーネル端末エミュレータをサポートすることを示します。フレームバッファードライバが tem-support DDI プロパティーをエクスポートする場合、そのドライバは、コンソールの構成中のブートプロセス内の早い段階で処理されます。フレームバッファードライバが tem-support プロパティーをエクスポートしない場合、そのドライバは、ブートプロセス内の十分早い段階では処理されない可能性があります。

tem-support

1 に設定されていると、この DDI プロパティーは、このドライバがコンソールのカーネルフレームバッファーインタフェースと互換性があることを示します。

カーネル端末エミュレータモジュールは、次の 2 つの主要なインタフェースを介してコンソールフレームバッファードライバと相互に作用します。

  • 通常のシステム動作中に ioctl インタフェースを介して

  • スタンドアロンモード中に、ポーリングされた入出力インタフェースを介して

詳細については、次のセクションで説明します。