この節ではブートスクリプト console
の設定方法について説明します。 このスクリプトはキーボードマップ、コンソールフォント、カーネルログレベルを設定します。 非アスキー文字
(例えば著作権、ポンド記号、ユーロ記号など) を使わず、キーボードが US 配列であるなら、本節は読み飛ばしてください。
console
ブートスクリプトの設定ファイルが存在しない場合 (あるいはこれと同等の設定が rc.site
にない場合) は、このスクリプトは何も行いません。
console スクリプトは、設定情報を
/etc/sysconfig/console
ファイルから読み込みます。
まずは利用するキーボードマップとスクリーンフォントを定めます。 さまざまな言語に応じた設定方法については //www.tldp.org/HOWTO/HOWTO-INDEX/other-lang.html
を参照してください。 よく分からない場合は /lib/kbd
ディレクトリを見て、正しいキーマップとスクリーンフォントを探してください。 マニュアルページ loadkeys(1)
と setfont(8)
を見て、これらのプログラムに対する適切な引数を決定してください。
/etc/sysconfig/console
ファイルの各行には、変数 =
"値" という記述を行います。 そして変数には以下に示すものが利用可能です。
この変数は、コンソールに出力されるカーネルメッセージのログレベルを指定するもので dmesg コマンドにより設定されます。 有効な設定値は "1" (メッセージ出力なし) から "8" まであり、デフォルトは "7" です。
この変数は loadkeys プログラムに対する引数を指定します。 このプログラムは「es」などのキーマップをロードします。 この変数がセットされていない場合、ブートスクリプトは loadkeys プログラムを実行せず、デフォルトのカーネルキーマップが用いられます。
この変数は (あまり利用されませんが) loadkeys プログラムを二度目に呼び出す際の引数を指定します。 普通のキーマップでは十分な設定にならない時の微調整を行うために利用します。 例えばユーロ記号がキーマップの中に含まれておらずこれを付け加える場合には、この変数に対して「euro2」を設定します。
この変数は setfont プログラムへの引数を指定します。 一般にこの変数にはフォント名、「-m」、アプリケーションキャラクターマップ (application character map) を順に指定します。 例えばフォントとして 「lat1-16」、アプリケーションキャラクターマップとして「8859-1」を指定する場合、この変数には「lat1-16 -m 8859-1」を設定します。 (これは米国にて適当な設定となります。) UTF-8 モードの場合、カーネルは UTF-8 キーマップ内の 8 ビットキーコードを変換するためにアプリケーションキャラクターマップを利用します。 したがって "-m" パラメーターには、キーマップ内キーコードのエンコーディングを指定する必要があります。
コンソールを UTF-8 モードにするには、この変数を「1」、「yes」、「true」のいずれかに指定します。 UTF-8 ベースのロケールであればこの設定を行います。 そうでないロケールにおいて設定するのは不適切です。
キーボードレイアウトの多くに対して、Kbd パッケージは標準的な Unicode キーマップを提供していません。 この変数にて UTF-8 ではないキーマップのエンコーディングが指定されていたら console ブートスクリプトは利用可能な UTF-8 キーマップに変換します。
以下はいくつかの設定例です。
Unicode を用いない設定では、普通は KEYMAP 変数と FONT 変数のみを定めます。 例えばポーランド語の設定であれば以下のようになります。
cat > /etc/sysconfig/console << "EOF"
# Begin /etc/sysconfig/console
KEYMAP="pl2"
FONT="lat2a-16 -m 8859-2"
# End /etc/sysconfig/console
EOF
上で述べたように、普通のキーマップの設定に対して多少の修正を必要とする場合もあります。 以下の例はドイツ語のキーマップにユーロ記号を加える例です。
cat > /etc/sysconfig/console << "EOF"
# Begin /etc/sysconfig/console
KEYMAP="de-latin1"
KEYMAP_CORRECTIONS="euro2"
FONT="lat0-16 -m 8859-15"
# End /etc/sysconfig/console
EOF
以下は Unicode を用いたブルガリア語の設定例です。 通常のキーマップが存在しているものと仮定しています。
cat > /etc/sysconfig/console << "EOF"
# Begin /etc/sysconfig/console
UNICODE="1"
KEYMAP="bg_bds-utf8"
FONT="LatArCyrHeb-16"
# End /etc/sysconfig/console
EOF
上の例においては 512 個のグリフを持つ LatArCyrHeb-16 フォントを利用しています。 この場合、フレームバッファーを利用していなければ Linux コンソール上に鮮やかな色づけを行うことは出来なくなります。 フレームバッファーがない状態で文字フォントを変更することなく色づけを適切に行いたい場合は、以下に示すように 256 個のグリフを持った、この言語に固有のフォントを用いる方法もあります。
cat > /etc/sysconfig/console << "EOF"
# Begin /etc/sysconfig/console
UNICODE="1"
KEYMAP="bg_bds-utf8"
FONT="cyr-sun16"
# End /etc/sysconfig/console
EOF
以下の例では ISO-8859-15 から UTF-8 へのキーマップ変換の自動化 (keymap autoconversion) を指定し、Unicode におけるデッドキー (dead keys) を有効にするものです。
cat > /etc/sysconfig/console << "EOF"
# Begin /etc/sysconfig/console
UNICODE="1"
KEYMAP="de-latin1"
KEYMAP_CORRECTIONS="euro2"
LEGACY_CHARSET="iso-8859-15"
FONT="LatArCyrHeb-16 -m 8859-15"
# End /etc/sysconfig/console
EOF
キーマップにデッドキー (dead keys) を持つものがあります。 そのキー自身は文字を意味するものではなく、次のキー入力による文字に対するアクセント記号をつける目的のものなどです。 または複合的な入力規則を定義するもの、例えば「Ctrl+.、A、E を入力することで Æ を得るもの」があります。 Linux-3.5.2 ではキーマップに応じてデッドキーや複合的な入力規則を解釈します。 ただしこれが正しく動作するのは、元の文字がマルチバイトではない場合に限ります。 このような欠点は西欧のキーマップでは問題にはなりません。 アクセント記号なら、アクセント記号がついていない ASCII 文字を使ったり、ASCII 文字を二つ使って工夫したりするからです。 しかし UTF-8 モードでは問題になります。 例えばギリシャ語にて「alpha」の文字の上にアクセント記号を付けたい場合が問題です。 これを解決するには、一つには UTF-8 の利用を諦めることであり、もう一つは X ウィンドウシステムを使うことで、そのような入力処理の制約を解消することです。
中国語、日本語、韓国語などを利用する場合 Linux コンソールにはそれらの文字を表示できません。 この言語を利用するユーザーは X ウィンドウシステムを使ってください。 そこで用いるフォントは、必要となるコード範囲の文字を有しており、入力メソッドも用意されています。(例えば SCIM は数多くの言語入力をサポートしています。)
/etc/sysconfig/console
ファイルは Linux
のテキストコンソール上の言語設定を行うだけです。 X ウィンドウシステム、SSH
セッション、シリアルコンソールでのキーボードレイアウトや端末フォントの設定とは無関係です。
それらに対しては、上に列記した最後の二項目における制約は適用されません。
日本の方であれば「日本語106キーボード」をほぼ間違いなくお使いかと思いますので KEYMAP 変数には「jp106」を設定することになるでしょう。 FONT 変数について訳者は十分な知識がありません。 ここに何を設定すべきか分からない (調べていない) ため、何も設定しないでいる状態です。 訳者は LFS システム構築後は SSH 接続によりシステムアクセスしており、その場合ここでのフォントの設定がどうであろうと (おそらく) 無関係であるため、あまり気にせずにいます。 何か情報を頂けるようであればご教示よろしくお願いいたします。
訳者が行っている設定は以下のとおりです。
cat > /etc/sysconfig/console << "EOF"
# Begin /etc/sysconfig/console
KEYMAP="jp106"
# End /etc/sysconfig/console
EOF