ユーザーの大多数は、ランレベル3か5のどちらかでXを実行します。ランレベル3はシステムを完全なネットワーク機能付きのマルチユーザーモードにします。マシンはテキストベースのログインプロンプトでブートし、あらかじめ設定された必要なすべてのサービスが起動します。ユーザーの大多数が使用するすべてのサービスを提供するのにXは必要ないので、ほとんどのサーバーはランレベル3で実行します。ランレベル5はランレベル3に似ていますが、自動的にXを起動してグラフィカルログイン画面を表示する点が違います。コマンドプロンプトの確認をしなくて済むので、ワークステーションユーザーの多くはこの方式を使用します。
システムのブート時に使用するデフォルトのランレベルは/etc/inittabファイルで確認することができます。そのファイルにid:3:initdefault:のような行があれば、システムはランレベル3でブートします。id:5:initdefault:のような行がある場合には、システムはランレベル5でブートするように設定されています。ルートとして、別のデフォルトに設定するには、このファイルのランレベルを変更します。ファイルを保存し、システムを再起動して、正しいランレベルでブートしているか確認します。ランレベルの詳細については、Initランレベル項第3章に記載されています。
これらのランレベルそれぞれは、若干違った方法でXを起動します。
ランレベル3のとき、Xセッションを開始するのに最適な方法はstartxコマンドを入力する方法です。startxはxinitプログラムのフロントエンドであり、XFree86サーバーを立ち上げてXクライアントを接続します。あらかじめランレベル3でシステムにログインしていなければコマンドを入力できないので、startxは特定の方法でデスクトップ環境のような一定のXクライアントの呼び出しのみを行うように設計されています。ユーザー認証は何も行いません。
startxが起動すると、ユーザーのホームディレクトリ内でユーザー定義の.xinitrcファイルを探し、実行するXクライアントを定義します。このファイルが見つからない場合には、システムデフォルトの/etc/X11/xinit/xinitrcスクリプトを代わりに実行します。その後、startxスクリプトは同じようにユーザーのホームディレクトリで.xserverrcファイルを探し、そのファイルが見つからなければデフォルトの/etc/X11/xinit/xserverrcスクリプトを実行します。多数のさまざまなXクライアントがあるので、xinitrcファイルは非常に重要です。xserverrcスクリプトはそう重要ではなく、XサーバーとXクライアントを接続するように設定するだけです。デフォルトのXサーバーはすでに/etc/X11/Xリンクで設定済みなので、Red Hat Linuxはデフォルトのxserverrcをインストールしません。
デフォルトのxinitrcスクリプトは、ユーザー定義のファイルとデフォルトのシステムファイルを探します。その中にはユーザーのホームディレクトリ内の.Xresources、.Xmodmap、.Xkbmapと、/etc/X11ディレクトリ内のXresources、Xmodmap、Xkbmapが含まれます。 XmodmapファイルとXkbmapファイルが存在する場合には、xmodmapユーティリティがそれらのファイルを使用してキーボードを設定します。Xresourcesファイルが読み取られると、特定の環境設定値が特定のアプリケーションに割り当てられます。
これらのオプションの設定後、xinitrcスクリプトは/etc/X11/xinit/xinitrc.d内のすべてのスクリプトを実行します。このディレクトリ内の重要なスクリプトにxinputスクリプトがあります。これは、使用するデフォルトの言語や(/etc/sysconfig/desktopから)起動するデスクトップ環境などの設定値を設定します。
次に、xinitrcスクリプトはユーザーのホームディレクトリ内の.Xclientsを実行しようとし、そのファイルが見つからない場合には/etc/X11/init/Xclientsファイルを実行します。Xclientsファイルの目的はデスクトップ環境か、基本的なウィンドウマネージャだけの起動です。ユーザーのホームディレクトリ内の.Xclientsスクリプトはユーザー指定のデスクトップ環境か.Xclients-defaultファイル内のウィンドウマネージャを起動します。.Xclientsファイルがユーザーのホームディレクトリにない場合には、標準の/etc/X11/init/Xclientsスクリプトが別のデスクトップ環境を起動しようとします。その場合には、最初にGNOMEを、次にKDEを起動しようとします。この時点でデスクトップ環境が見つからない場合には、ユーザーのホームディレクトリ内の.wm_styleファイルに一覧表示されているデフォルトのウィンドウマネージャの起動を試みた後に、Xclientsはウィンドウマネージャの一覧を循環し、起動するデスクトップ環境を探します。
この時点で、XFree86サーバーと一緒に優先Xクライアントアプリケーションが起動されるはずです。ランレベル3でのXの起動に関する詳細については、startxとxinitのmanページを参照し、上述のスクリプトの項をお読みください。
ランレベル5は若干違う方式でXを起動します。システムが起動したときは、デフォルトでは誰もシステムにログインしていません。ユーザーがセッションを開始するには、システムにログインしなければなりません。ランレベル5では、コンソールで自身を認証するユーザーがディスプレイマネージャを使用します。これは、ユーザーが各自のログイン名とパスワードを提示できるようにする特別なXクライアントです。
特定のRed Hat Linuxシステムにインストールされたデスクトップ環境に応じて、3種類のディスプレイマネージャを使用してユーザー認証を処理します。xdmディスプレイマネージャはオリジナルのX認証ツールです。xdmはXセッションのログインと起動のみを許可します。GNOMEデスクトップ環境で動作するように設計されたgdmディスプレイマネージャと、KDEデスクトップ環境で使用するkdmディスプレイマネージャにより、デスクトップ環境か、認証後に使用するセッションを設定することができます。さらに、ログイン画面からシステムの再起動か一時停止を行うことができます。さらに、gdmディスプレイマネージャでは、使用したい言語を設定することができます。
システムがランレベル5で起動したときは、/etc/inittabファイル内の1行に、ユーザー認証で呼び出す優先ディスプレイマネージャを決めるためにprefdmスクリプトを実行するように指定されます。prefdmスクリプトは/etc/sysconfig/desktopファイルで説明した環境設定を使用して、適切なディスプレイマネージャを探します。デスクトップ環境が指定されていない場合には、prefdmはgdm、kdm、xdmの各ディスプレイマネージャを循環し、使用するデスクトップ環境を探します。デスクトップ環境が見つかると、prefdmはユーザーログインを処理するためにデスクトップ環境を立ち上げます。
各ディスプレイマネージャは/etc/X11/xdm/Xsetup_0ファイルを見てログイン画面をセットアップします。ユーザーがシステムにログインすると、/etc/X11/xdm/GiveConsoleスクリプトが働きコンソールの所有権をそのユーザーに割り当てます。その後、/etc/X11/xdm/Xsessionスクリプトが働き、システムやユーザーリソースの設定に加えて/etc/X11/xinit/xinitrc.dディレクトリ内のスクリプトの実行をはじめとする、通常はランレベル3で起動したときにxinitrcスクリプトが行うタスクの多くを実行します。
ユーザーはSessionメニューで選択したgdmディスプレイマネージャか、kdmディスプレイマネージャを使用して認証するときに、どのデスクトップ環境を使用するかを指定することができます。デスクトップ環境がディスプレイマネージャで指定されていない場合には、/etc/X11/xdm/Xsessionスクリプトはユーザーのホームディレクトリの.xsessionファイルと.Xclientsファイルを調べてどのデスクトップ環境をロードするかを決めます。最後の手段としては、/etc/X11/xinit/Xclientsファイルを使用してランレベル3と同じように使用するデスクトップ環境かウィンドウマネージャを選択します。
デフォルトのディスプレイ(:0)でXセッションを終了し、ログアウトするときは、/etc/X11/xdm/TakeConsoleスクリプトが実行し、コンソールの所有権をルートユーザーに再度割り当てます。ユーザーがログインした後、実行を続けていたオリジナルのディスプレイユーザーは、新しいディスプレイマネージャを生成します。これにより、XFree86サーバーが再起動し、新規ログインウィンドウを表示して再度プロセス全体を起動します。
ディスプレイマネージャがユーザー認証をどのように行うかの詳細については、xdmのmanページを参照してください。