「Linux コンソール」の版間の差分
(→実装: 同期) |
(同期) |
||
(2人の利用者による、間の7版が非表示) | |||
7行目: | 7行目: | ||
{{Related articles start}} |
{{Related articles start}} |
||
{{Related|コンソールでのキーボード設定}} |
{{Related|コンソールでのキーボード設定}} |
||
− | {{Related|スクリーンショットの取得#仮想 |
+ | {{Related|スクリーンショットの取得#仮想コンソール}} |
{{Related|コンソールのカラー出力}} |
{{Related|コンソールのカラー出力}} |
||
{{Related|getty}} |
{{Related|getty}} |
||
14行目: | 14行目: | ||
[[Wikipedia:Linux console|Wikipedia]] より: |
[[Wikipedia:Linux console|Wikipedia]] より: |
||
− | :'''Linux コンソール'''は、[[カーネル|Linux カーネル]] に内蔵されているシステムコンソールです。Linux コンソールは、カーネルや他のプロセスがテキスト出力をユーザに送信したり、ユーザからのテキスト入力を受信したりするための方法を提供します。ユーザは通常、コンピュータのキーボードでテキストを入力し、出力されたテキストをコンピュータのモニタで読みます。Linux カーネルは仮想コンソールをサポートしています |
+ | :'''Linux コンソール'''は、[[カーネル|Linux カーネル]] に内蔵されているシステムコンソールです。Linux コンソールは、カーネルや他のプロセスがテキスト出力をユーザに送信したり、ユーザからのテキスト入力を受信したりするための方法を提供します。ユーザは通常、コンピュータのキーボードでテキストを入力し、出力されたテキストをコンピュータのモニタで読みます。Linux カーネルは仮想コンソールをサポートしています — コンソールは論理的に分離されていますが、同じ物理キーボードとディスプレイにアクセスします。 |
この記事では、Linux コンソールの基本とフォント表示の設定方法について説明します。キーボードの設定は、[[コンソールでのキーボード設定]] サブページで説明しています。 |
この記事では、Linux コンソールの基本とフォント表示の設定方法について説明します。キーボードの設定は、[[コンソールでのキーボード設定]] サブページで説明しています。 |
||
41行目: | 41行目: | ||
{| class="wikitable" |
{| class="wikitable" |
||
+ | ! キーボードショートカット |
||
− | ! Keyboard Shortcut |
||
+ | ! 説明 |
||
− | ! Description |
||
|- |
|- |
||
| {{ic|Ctrl+Alt+Del}} |
| {{ic|Ctrl+Alt+Del}} |
||
− | | |
+ | | システムを再起動します (シンボリックリンク {{ic|/usr/lib/systemd/system/ctrl-alt-del.target}} で指定されています) |
|- |
|- |
||
| {{ic|Alt+F1}}, {{ic|F2}}, {{ic|F3}}, ... |
| {{ic|Alt+F1}}, {{ic|F2}}, {{ic|F3}}, ... |
||
+ | | ''n'' 番目の仮想コンソールに切り替えます |
||
− | | Switch to ''n''-th virtual console |
||
|- |
|- |
||
− | | {{ic|Alt+ |
+ | | {{ic|Alt+Left}} |
+ | | 前の仮想コンソールに切り替えます |
||
− | | Switch to previous virtual console |
||
|- |
|- |
||
− | | {{ic|Alt+ |
+ | | {{ic|Alt+Right}} |
+ | | 次の仮想コンソールに切り替えます |
||
− | | Switch to next virtual console |
||
|- |
|- |
||
| {{ic|Scroll Lock}} |
| {{ic|Scroll Lock}} |
||
+ | | Scroll Lock が有効化されると、入力/出力がロックされます |
||
− | | When Scroll Lock is activated, input/output is locked |
||
|- |
|- |
||
| {{ic|Ctrl+c}} |
| {{ic|Ctrl+c}} |
||
+ | | 現在のタスクをキルします |
||
− | | Kills current task |
||
|- |
|- |
||
| {{ic|Ctrl+d}} |
| {{ic|Ctrl+d}} |
||
+ | | EOF を挿入します |
||
− | | Inserts an EOF |
||
|- |
|- |
||
| {{ic|Ctrl+z}} |
| {{ic|Ctrl+z}} |
||
+ | | 現在のタスクをポーズします |
||
− | | Pauses current Task |
||
|} |
|} |
||
− | + | {{man|4|console_codes}} も見てください。 |
|
== フォント == |
== フォント == |
||
− | {{Note|このセクション |
+ | {{Note|このセクションの説明は [[Wikipedia:Linux console|Linux コンソール]]におけるものです。(ユニコードフォントや最新のグラフィックアダプタのサポートなど) より多くの機能が備わっているコンソールについては [[KMSCON]] や似たプロジェクトのページを見て下さい。}} |
+ | [[Wikipedia:Linux console|Linux コンソール]]はデフォルトで UTF-8 エンコードを使用しますが、標準の VGA 互換フレームバッファが使用されるため、コンソールフォントはグリフ数が標準的な 256 あるいは 512 のいずれかに制限されます。フォントのグリフ数が 256 より多い場合、色の数は 16 から 8 に減少します。与えられた Unicode 値に正しい記号を割り当てるには、特殊な変換マップ (しばしば ''unimap'' と呼ばれます) が必要です。最近ではほとんどのコンソールフォントに ''unimap'' が組み込まれていますが、歴史的に、これは個別に読み込む必要があります。 |
||
− | [[Wikipedia:ja:仮想コンソール|仮想コンソール]]はカーネルに含まれているフォントと ASCII 文字セットがデフォルトで使用しますが、どちらも簡単に変えることができます。 |
||
+ | デフォルトでは、[[Wikipedia:ja:仮想コンソール|仮想コンソール]]はカーネル組み込みのフォントと [[Wikipedia:ja:コードページ437|CP437]] 文字セットを使用します [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/tty/vt/Makefile#n5] が、これは簡単に変えることができます。カーネルは大体 15 個の組み込みフォントを提供しており、[[カーネル#公式サポートカーネル|公式にサポートされているカーネル]]はこれらの中から 2 つを提供しています: VGA 8x16 フォント ({{ic|CONFIG_FONT_8x16}}) と Terminus 16x32 フォント ({{ic|CONFIG_FONT_TER16x32}}) です。カーネルは、画面解像度の評価に基づいて1つを選んで使用します。もう一つの組み込みフォントは、{{ic|1=fbcon=font:TER16x32}} のように[[カーネルパラメータ]]を設定することで強制的に使用することができます。 |
||
− | コンソールフォントは 256 か 512 文字に制限されています。利用できるフォントは {{ic|/usr/share/kbd/consolefonts/}} にあります。 |
||
+ | {{Pkg|kbd}} パッケージは、カーネルによって設定された仮想コンソールの設定をオーバーライドするためのツールを提供します。利用可能なフォントは {{ic|/usr/share/kbd/consolefonts/}} ディレクトリ内に提供されています。''.psfu'' か ''.psfu.gz'' で終わるファイルには Unicode 変換マップが組み込まれています。 |
||
− | 押したキーとコンピュータで使われる文字をつなぐ、キーマップは {{ic|/usr/share/kbd/keymaps/}} のサブディレクトリにあります。 |
||
+ | キーマップ (コンピュータによって使用される、押されたキーと文字との関係) は、{{ic|/usr/share/kbd/keymaps/}} のサブディレクトリにあります。詳細は [[コンソールでのキーボード設定]] を見てください。 |
||
− | {{Tip|ラテン・ギリシャ文字で書かれたヨーロッパ系言語の場合、{{ic|eurlatgr}} フォントを使うことができます。幅広いラテン・ギリシャ文字と特殊文字が収録されています [https://lists.altlinux.org/pipermail/kbd/2014-February/000439.html]。}} |
||
+ | {{Note|フォントを置き換えると、標準的な VGA スタイルのフォントを期待するプログラム (線画グラフィックスを使用するものなど) で問題が発生する可能性があります。}} |
||
− | === プレビューとテスト === |
||
+ | |||
+ | {{Tip|ラテン/ギリシャ文字で書かれたヨーロッパ系言語の場合、{{ic|eurlatgr}} フォントを使うことができます。幅広いラテン/ギリシャ文字と特殊文字が収録されています [https://lists.altlinux.org/pipermail/kbd/2014-February/000439.html]。}} |
||
+ | |||
+ | === プレビューと一時的な変更 === |
||
+ | |||
+ | {{Tip|フォントプレビューのための画像のライブラリが利用できます: [https://adeverteuil.github.io/linux-console-fonts-screenshots/ Linux console fonts screenshots].}} |
||
フォントで利用できる記号・文字は {{ic|showconsolefont}} コマンドでテーブル表示できます: |
フォントで利用できる記号・文字は {{ic|showconsolefont}} コマンドでテーブル表示できます: |
||
89行目: | 95行目: | ||
$ showconsolefont |
$ showconsolefont |
||
− | + | {{ic|setfont}} ユーティリティを使うことで一時的にフォントを変えることができます。フォントの名前 ({{ic|/usr/share/kbd/consolefonts/}} にあります) を指定してください: |
|
− | $ setfont |
+ | $ setfont lat2-16 -m 8859-2 |
+ | フォント名は大文字と小文字を区別します。パラメータを渡さなかった場合、{{ic|setfont}} はコンソールをデフォルトのフォントに戻します。 |
||
− | 任意で、使用する文字セットを {{ic|-m}} オプションで指定できます: |
||
+ | '''small 8x8''' フォントを設定するには、以下のようにフォントがインストールされている状態で、例えば以下のコマンドを使用してください: |
||
− | $ setfont Lat2-Terminus16 -m 8859-2 |
||
+ | $ setfont -h8 /usr/share/kbd/consolefonts/drdos8x8.psfu.gz |
||
− | もし新しく変えたフォントに不満ならば、何も引数を付けないで実行することでデフォルトフォントに戻ります (コンソール画面が全く読めなくなってしまったときでも、このコマンドは動作します。なんとかしてコマンドを入力してください): |
||
+ | '''より大きい'''フォントを設定したい場合は、Terminus フォント ({{Pkg|terminus-font}}) は多くのサイズで利用可能です (例えば {{ic|ter-132b}} など)。 |
||
− | $ setfont |
||
+ | {{Tip|フォントを変更するコマンドはすべて「ブラインド」でタイプ可能です。}} |
||
− | {{Note|''setfont'' は現在使われているコンソールだけで機能することを覚えておいて下さい。(アクティブだろうとそうでなかろうと)他のコンソールには影響しません。}} |
||
+ | {{Note|''setfont'' は現在使われているコンソールだけで機能することを覚えておいて下さい。(アクティブだろうとそうでなかろうと)他のコンソールには影響しません。}} |
||
− | === デフォルトフォントを変更 === |
||
+ | === 永続的な設定 === |
||
− | デフォルトフォントを変えるには、{{ic|/etc/vconsole.conf}} (このファイルは新しく作る必要があるかもしれません) の {{ic|FONT}} と {{ic|FONT_MAP}} で設定します。 |
||
+ | {{ic|/etc/vconsole.conf}} の {{ic|FONT}} 変数は、起動時にフォントを設定するために使用されます。この設定は永続的で、すべてのコンソールで反映されます。詳細は {{man|5|vconsole.conf}} を見てください。 |
||
− | ''Č, ž, đ, š'' or ''Ł, ę, ą, ś'' などの文字を表示するために {{ic|lat2-16.psfu.gz}} フォントを使うとします: |
||
+ | ''Č, ž, đ, š'' や ''Ł, ę, ą, ś'' などの文字を表示するために {{ic|lat2-16.psfu.gz}} フォントを使うとします: |
||
− | FONT=lat2-16 |
||
+ | {{hc|/etc/vconsole.conf|2= |
||
− | これで ISO/IEC 8859 の第2部がサイズ16で使われます。他の値にすればフォントサイズを変えられます (例: {{ic|lat2-08}})。8859 によって定められている地域については、[[wikipedia:ja:ISO/IEC_8859#ISO 8859の部|Wikipedia の表]]を見て下さい。X サーバーを使わずコンソールで作業することが多いならば Terminus フォントが推奨です。例えば ter-216b はラテン2、サイズ16、太字です。ter-216n は通常の太さになります。Terminus フォントは32までのサイズが揃っています。 |
||
+ | ... |
||
+ | FONT=lat2-16 |
||
+ | FONT_MAP=8859-2 |
||
+ | }} |
||
+ | これで ISO/IEC 8859 の第2部がサイズ16で使われます。他の値にすればフォントサイズを変えられます (例: {{ic|lat2-08}})。8859 によって定められている地域については、[[wikipedia:ja:ISO/IEC_8859#ISO 8859の部|Wikipedia の表]]を見て下さい。 |
||
− | フォントを変えたら、適切なフォントマップを設定します。lat2-16 の場合は: |
||
− | FONT_MAP=8859-2 |
||
− | + | [https://gitlab.archlinux.org/archlinux/mkinitcpio/mkinitcpio/-/blob/v33/mkinitcpio.conf#L52 mkinitcpio v33] から、{{ic|/etc/vconsole.conf}} で指定されているフォントは {{ic|consolefont}} フックによってデフォルトで初期ユーザ空間の間に自動的にロードされるようになりました。これにより、フォントが initramfs に追加されます。詳細は [[Mkinitcpio#HOOKS]] を参照してください。 |
|
+ | また、{{ic|/etc/vconsole.conf}} を変更した後は、{{ic|systemd-vconsole-setup.service}} を[[再起動]]する必要がある場合があります。 |
||
− | ブート時にフォントが変わっていない、もしくは一時的にしか変わらなかった場合、グラフィックドライバが初期化されコンソールがフレームバッファに切り替わるときにリセットされている可能性があります。これを避けるには、グラフィックドライバを早くロードするようにしてください。[[Kernel Mode Setting#Early KMS start]] のサンプルを見るか他の方法で {{ic|/etc/vconsole.conf}} が適用される前にフレームバッファをセットアップするようにしてください。 |
||
+ | |||
+ | フォントが起動時に変更されなかったり、一時的にしか変更されない場合、グラフィックスドライバが初期化されてコンソールがフレームバッファに切り替わった時にフォントがリセットされているのでしょう。デフォルトでは、全ての in-tree なカーネルドライバは早い段階でロードされますが、NVIDIA ユーザは {{ic|/etc/vconsole.conf}} が適用される前に NVIDIA グラフィックスドライバをロードする必要があります ([[NVIDIA#早期ロード]] の記事を確認してください)。 |
||
== HiDPI == |
== HiDPI == |
||
124行目: | 135行目: | ||
[[HiDPI#Linux コンソール]] を参照。 |
[[HiDPI#Linux コンソール]] を参照。 |
||
− | == |
+ | == 可聴音 == |
[[PC スピーカー#Beep]] を参照。 |
[[PC スピーカー#Beep]] を参照。 |
||
− | == |
+ | == 参照 == |
* [https://www.linusakesson.net/programming/tty/ The TTY demystified – Linus Åkesson] |
* [https://www.linusakesson.net/programming/tty/ The TTY demystified – Linus Åkesson] |
||
+ | |||
+ | {{TranslationStatus|Linux console|2023-06-21|778095}} |
2023年6月21日 (水) 17:09時点における最新版
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+Left
|
前の仮想コンソールに切り替えます |
Alt+Right
|
次の仮想コンソールに切り替えます |
Scroll Lock
|
Scroll Lock が有効化されると、入力/出力がロックされます |
Ctrl+c
|
現在のタスクをキルします |
Ctrl+d
|
EOF を挿入します |
Ctrl+z
|
現在のタスクをポーズします |
console_codes(4) も見てください。
フォント
Linux コンソールはデフォルトで UTF-8 エンコードを使用しますが、標準の VGA 互換フレームバッファが使用されるため、コンソールフォントはグリフ数が標準的な 256 あるいは 512 のいずれかに制限されます。フォントのグリフ数が 256 より多い場合、色の数は 16 から 8 に減少します。与えられた Unicode 値に正しい記号を割り当てるには、特殊な変換マップ (しばしば unimap と呼ばれます) が必要です。最近ではほとんどのコンソールフォントに unimap が組み込まれていますが、歴史的に、これは個別に読み込む必要があります。
デフォルトでは、仮想コンソールはカーネル組み込みのフォントと CP437 文字セットを使用します [1] が、これは簡単に変えることができます。カーネルは大体 15 個の組み込みフォントを提供しており、公式にサポートされているカーネルはこれらの中から 2 つを提供しています: VGA 8x16 フォント (CONFIG_FONT_8x16
) と Terminus 16x32 フォント (CONFIG_FONT_TER16x32
) です。カーネルは、画面解像度の評価に基づいて1つを選んで使用します。もう一つの組み込みフォントは、fbcon=font:TER16x32
のようにカーネルパラメータを設定することで強制的に使用することができます。
kbd パッケージは、カーネルによって設定された仮想コンソールの設定をオーバーライドするためのツールを提供します。利用可能なフォントは /usr/share/kbd/consolefonts/
ディレクトリ内に提供されています。.psfu か .psfu.gz で終わるファイルには Unicode 変換マップが組み込まれています。
キーマップ (コンピュータによって使用される、押されたキーと文字との関係) は、/usr/share/kbd/keymaps/
のサブディレクトリにあります。詳細は コンソールでのキーボード設定 を見てください。
プレビューと一時的な変更
フォントで利用できる記号・文字は showconsolefont
コマンドでテーブル表示できます:
$ showconsolefont
setfont
ユーティリティを使うことで一時的にフォントを変えることができます。フォントの名前 (/usr/share/kbd/consolefonts/
にあります) を指定してください:
$ setfont lat2-16 -m 8859-2
フォント名は大文字と小文字を区別します。パラメータを渡さなかった場合、setfont
はコンソールをデフォルトのフォントに戻します。
small 8x8 フォントを設定するには、以下のようにフォントがインストールされている状態で、例えば以下のコマンドを使用してください:
$ setfont -h8 /usr/share/kbd/consolefonts/drdos8x8.psfu.gz
より大きいフォントを設定したい場合は、Terminus フォント (terminus-font) は多くのサイズで利用可能です (例えば ter-132b
など)。
永続的な設定
/etc/vconsole.conf
の FONT
変数は、起動時にフォントを設定するために使用されます。この設定は永続的で、すべてのコンソールで反映されます。詳細は vconsole.conf(5) を見てください。
Č, ž, đ, š や Ł, ę, ą, ś などの文字を表示するために lat2-16.psfu.gz
フォントを使うとします:
/etc/vconsole.conf
... FONT=lat2-16 FONT_MAP=8859-2
これで ISO/IEC 8859 の第2部がサイズ16で使われます。他の値にすればフォントサイズを変えられます (例: lat2-08
)。8859 によって定められている地域については、Wikipedia の表を見て下さい。
mkinitcpio v33 から、/etc/vconsole.conf
で指定されているフォントは consolefont
フックによってデフォルトで初期ユーザ空間の間に自動的にロードされるようになりました。これにより、フォントが initramfs に追加されます。詳細は Mkinitcpio#HOOKS を参照してください。
また、/etc/vconsole.conf
を変更した後は、systemd-vconsole-setup.service
を再起動する必要がある場合があります。
フォントが起動時に変更されなかったり、一時的にしか変更されない場合、グラフィックスドライバが初期化されてコンソールがフレームバッファに切り替わった時にフォントがリセットされているのでしょう。デフォルトでは、全ての in-tree なカーネルドライバは早い段階でロードされますが、NVIDIA ユーザは /etc/vconsole.conf
が適用される前に NVIDIA グラフィックスドライバをロードする必要があります (NVIDIA#早期ロード の記事を確認してください)。
HiDPI
HiDPI#Linux コンソール を参照。
可聴音
PC スピーカー#Beep を参照。