Linux コンソール

提供: ArchWiki
2022年1月24日 (月) 10:10時点におけるKusanaginoturugi (トーク | 投稿記録)による版 (→‎仮想コンソール: 飜訳)
ナビゲーションに移動 検索に移動

関連記事

Wikipedia より:

Linux コンソールは、Linux カーネル に内蔵されているシステムコンソールです。Linux コンソールは、カーネルや他のプロセスがテキスト出力をユーザに送信したり、ユーザからのテキスト入力を受信したりするための方法を提供します。ユーザは通常、コンピュータのキーボードでテキストを入力し、出力されたテキストをコンピュータのモニタで読みます。Linux カーネルは仮想コンソールをサポートしています - コンソールは論理的に分離されていますが、同じ物理キーボードとディスプレイにアクセスします。

この記事では、Linux コンソールの基本とフォント表示の設定方法について説明します。キーボードの設定は、コンソールでのキーボード設定 サブページで説明しています。

実装

コンソールは、ユーザーと直接対話するほとんどのサービスとは異なり、カーネルに実装されています。これは、通常のアプリケーションとしてユーザースペースに実装される、Xterm などの端末エミュレーションソフトウェアとは対照的です。コンソールは常にリリースされた Linux カーネルの一部でしたが、その歴史に変化を遂げてきました。最も顕著なのは、framebuffer の使用と、Unicode のサポートへの移行です。

コンソールには多くの改良が施されていますが、レガシーハードウェアとの完全な下位互換性があるため、グラフィカルターミナルエミュレータと比較すると制限があります。

仮想コンソール

コンソールは、一連の仮想コンソールとしてユーザーに表示されます。それぞれの仮想コンソールは、異なるユーザーでログインし、独自のシェルを実行し、独自のフォント設定を持つことができます。仮想コンソールはそれぞれ /dev/ttyX デバイスを使用し、Alt+Fx (x は 1 から始まる仮想コンソール番号と同じ) を押すことで切り替えが可能です。デバイス /dev/console は自動的にアクティブな仮想コンソールにマップされます。

chvt(1)openvt(1)deallocvt(1) も参照してください。

テキストモード

Since Linux originally began as a kernel for PC hardware, the console was developed using standard IBM CGA/EGA/VGA graphics, which all PCs supported at the time. The graphics operated in VGA text mode, which provides a simple 80x25 character display with 16 colours. This legacy mode is similar to the capabilities of dedicated text terminals, such as the DEC VT100 series. It is still possible to boot in text mode if the system hardware supports it, but almost all modern distributions (including Arch Linux) use the framebuffer console instead.

フレームバッファーのコンソール

As Linux was ported to other non-PC architectures, a better solution was required, since other architectures do not use VGA-compatible graphics adapters, and may not support text modes at all. The framebuffer console was implemented to provide a standard console across all platforms, and so presents the same VGA-style interface regardless of the underlying graphics hardware. As such, the Linux console is not a terminal emulator, but a terminal in its own right. It uses the terminal type linux, and is largely compatible with VT100.

キーボードショートカット

Keyboard Shortcut Description
Ctrl+Alt+Del Reboots the system (specified by the symlink /usr/lib/systemd/system/ctrl-alt-del.target)
Alt+F1, F2, F3, ... Switch to n-th virtual console
Alt+ ← Switch to previous virtual console
Alt+ → Switch to next virtual console
Scroll Lock When Scroll Lock is activated, input/output is locked
Ctrl+c Kills current task
Ctrl+d Inserts an EOF
Ctrl+z Pauses current Task

See also console_codes(4).

フォント

ノート: このセクションでは Linux コンソールについて説明しています。(ユニコードフォントや最新のグラフィックアダプタのサポートなど) より多くの機能が備わっているコンソールについては fbtermKMSCON などのページを見て下さい。

仮想コンソールはカーネルに含まれているフォントと ASCII 文字セットがデフォルトで使用しますが、どちらも簡単に変えることができます。

コンソールフォントは 256 か 512 文字に制限されています。利用できるフォントは /usr/share/kbd/consolefonts/ にあります。

押したキーとコンピュータで使われる文字をつなぐ、キーマップは /usr/share/kbd/keymaps/ のサブディレクトリにあります。

ヒント: ラテン・ギリシャ文字で書かれたヨーロッパ系言語の場合、eurlatgr フォントを使うことができます。幅広いラテン・ギリシャ文字と特殊文字が収録されています [1]

プレビューとテスト

フォントで利用できる記号・文字は showconsolefont コマンドでテーブル表示できます:

$ showconsolefont

setfont ユーティリティを使うことで一時的にフォントを変えることができます。フォントの名前 (/usr/share/kbd/consolefonts/ にあります) を指定してください:

$ setfont Lat2-Terminus16

任意で、使用する文字セットを -m オプションで指定できます:

$ setfont Lat2-Terminus16 -m 8859-2

もし新しく変えたフォントに不満ならば、何も引数を付けないで実行することでデフォルトフォントに戻ります (コンソール画面が全く読めなくなってしまったときでも、このコマンドは動作します。なんとかしてコマンドを入力してください):

$ setfont
ノート: setfont は現在使われているコンソールだけで機能することを覚えておいて下さい。(アクティブだろうとそうでなかろうと)他のコンソールには影響しません。

デフォルトフォントを変更

デフォルトフォントを変えるには、/etc/vconsole.conf (このファイルは新しく作る必要があるかもしれません) の FONTFONT_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.confkeymap フックを使って下さい。詳しくは Mkinitcpio#HOOKS を参照してください。

ブート時にフォントが変わっていない、もしくは一時的にしか変わらなかった場合、グラフィックドライバが初期化されコンソールがフレームバッファに切り替わるときにリセットされている可能性があります。これを避けるには、グラフィックドライバを早くロードするようにしてください。Kernel Mode Setting#Early KMS start のサンプルを見るか他の方法で /etc/vconsole.conf が適用される前にフレームバッファをセットアップするようにしてください。

HiDPI

HiDPI#Linux コンソール を参照。

Audible tones

PC スピーカー#Beep を参照。

See also