Linux コンソール
Wikipedia より:
- Linux コンソールは、Linux カーネル に内蔵されているシステムコンソールです。Linux コンソールは、カーネルや他のプロセスがテキスト出力をユーザに送信したり、ユーザからのテキスト入力を受信したりするための方法を提供します。ユーザは通常、コンピュータのキーボードでテキストを入力し、出力されたテキストをコンピュータのモニタで読みます。Linux カーネルは仮想コンソールをサポートしています - コンソールは論理的に分離されていますが、同じ物理キーボードとディスプレイにアクセスします。
この記事では、Linux コンソールの基本とフォント表示の設定方法について説明します。キーボードの設定は、コンソールでのキーボード設定 サブページで説明しています。
目次
実装
コンソールは、ユーザーと直接対話するほとんどのサービスとは異なり、カーネルに実装されています。これは、通常のアプリケーションとしてユーザースペースに実装される、Xterm などの端末エミュレーションソフトウェアとは対照的です。コンソールは常に、リリースされた Linux カーネルの一部でしたが、その歴史中で変化を遂げてきました。最も特出すべきなのは、フレームバッファの使用と、Unicode のサポートへの移行です。
コンソールには多くの改良が施されていますが、レガシーハードウェアとの完全な後方互換性があるため、グラフィカルターミナルエミュレータと比較すると制限があります。
仮想コンソール
コンソールは、一連の仮想コンソールとしてユーザーに表示されます。これらの仮想コンソールは、複数の独立したターミナルが並列に動作しているような印象です。それぞれの仮想コンソールは、異なるユーザーでログインし、独自のシェルを実行し、独自のフォント設定を持つことができます。仮想コンソールはそれぞれ /dev/ttyX
デバイスを使用し、Alt+Fx
(x
は仮想コンソール番号と同じで、1 から始まります) を押すことで切り替えが可能です。デバイス /dev/console
は自動的にアクティブな仮想コンソールにマップされます。
chvt(1)、openvt(1)、deallocvt(1) も参照してください。
テキストモード
Linux はもともと PC ハードウェア用のカーネルとして始まったため、コンソールは標準的な IBM CGA/EGA/VGA グラフィックスを使用して開発されました (当時、すべての PC はこれをサポートしていました)。グラフィックは、16 色のシンプルな 80x25 キャラクタディスプレイを提供する VGA テキストモードで動作しました。このレガシーなモードは、DEC VT100 などのような専用のテキストターミナルの機能に似ています。現在でも、システムのハードウェアがサポートしていれば (vga=0 nomodeset
を使って) テキストモードで起動できますが、最近のディストリビューションのほぼすべて (Arch Linux を含む) でフレームバッファコンソールが代わりに使用されます。
フレームバッファーのコンソール
Linux が他の非 PC アーキテクチャに移植されたとき、より良いソリューションが必要になりました。他のアーキテクチャでは VGA 互換グラフィックスアダプタを使用しませんし、さらにテキストモードを全くサポートしていない場合があるからです。フレームバッファコンソールは、すべてのプラットフォームで標準的なコンソールを提供するために実装され、基盤となるグラフィックスハードウェアに関係なく同じ VGA スタイルのインターフェイスを提供します。そのため、Linux コンソールはターミナルエミュレータではなく、それ自体でターミナルなのです。コンソールはターミナルタイプ linux
を使用し、VT100 と幅広く互換性があります。
キーボードショートカット
キーボードショートカット | 説明 |
---|---|
Ctrl+Alt+Del
|
システムを再起動します (シンボリックリンク /usr/lib/systemd/system/ctrl-alt-del.target で指定されています)
|
Alt+F1 , F2 , F3 , ...
|
n 番目の仮想コンソールに切り替えます |
Alt+ ←
|
前の仮想コンソールに切り替えます |
Alt+ →
|
次の仮想コンソールに切り替えます |
Scroll Lock
|
Scroll Lock が有効化されると、入力/出力がロックされます |
Ctrl+c
|
現在のタスクをキルします |
Ctrl+d
|
EOF を挿入します |
Ctrl+z
|
現在のタスクをポーズします |
console_codes(4) も見てください。
フォント
仮想コンソールはカーネルに含まれているフォントと ASCII 文字セットがデフォルトで使用しますが、どちらも簡単に変えることができます。
コンソールフォントは 256 か 512 文字に制限されています。利用できるフォントは /usr/share/kbd/consolefonts/
にあります。
押したキーとコンピュータで使われる文字をつなぐ、キーマップは /usr/share/kbd/keymaps/
のサブディレクトリにあります。
プレビューとテスト
フォントで利用できる記号・文字は showconsolefont
コマンドでテーブル表示できます:
$ showconsolefont
setfont ユーティリティを使うことで一時的にフォントを変えることができます。フォントの名前 (/usr/share/kbd/consolefonts/
にあります) を指定してください:
$ setfont Lat2-Terminus16
任意で、使用する文字セットを -m
オプションで指定できます:
$ setfont Lat2-Terminus16 -m 8859-2
もし新しく変えたフォントに不満ならば、何も引数を付けないで実行することでデフォルトフォントに戻ります (コンソール画面が全く読めなくなってしまったときでも、このコマンドは動作します。なんとかしてコマンドを入力してください):
$ setfont
デフォルトフォントを変更
デフォルトフォントを変えるには、/etc/vconsole.conf
(このファイルは新しく作る必要があるかもしれません) の FONT
と FONT_MAP
で設定します。
Č, ž, đ, š or Ł, ę, ą, ś などの文字を表示するために lat2-16.psfu.gz
フォントを使うとします:
FONT=lat2-16
これで ISO/IEC 8859 の第2部がサイズ16で使われます。他の値にすればフォントサイズを変えられます (例: lat2-08
)。8859 によって定められている地域については、Wikipedia の表を見て下さい。X サーバーを使わずコンソールで作業することが多いならば Terminus フォントが推奨です。例えば ter-216b はラテン2、サイズ16、太字です。ter-216n は通常の太さになります。Terminus フォントは32までのサイズが揃っています。
フォントを変えたら、適切なフォントマップを設定します。lat2-16 の場合は:
FONT_MAP=8859-2
初期のユーザースペース、つまりブートプロセスでも特定のフォントを使いたい場合は、/etc/mkinitcpio.conf
で keymap
フックを使って下さい。詳しくは Mkinitcpio#HOOKS を参照してください。
ブート時にフォントが変わっていない、もしくは一時的にしか変わらなかった場合、グラフィックドライバが初期化されコンソールがフレームバッファに切り替わるときにリセットされている可能性があります。これを避けるには、グラフィックドライバを早くロードするようにしてください。Kernel Mode Setting#Early KMS start のサンプルを見るか他の方法で /etc/vconsole.conf
が適用される前にフレームバッファをセットアップするようにしてください。
HiDPI
HiDPI#Linux コンソール を参照。
可聴音
PC スピーカー#Beep を参照。