「Linux コンソール」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(→‎Audible tones: セクション名を翻訳)
73行目: 73行目:
 
== フォント ==
 
== フォント ==
   
{{Note|このセクションは [[Wikipedia:Linux console|Linux コンソール]]について説明しています。(ユニコードフォントや最新のグラフィックアダプタのサポートなど) より多くの機能が備わっているコンソールについては [[fbterm]] や [[KMSCON]] などのページを見て下さい。}}
+
{{Note|このセクションの説明は [[Wikipedia:Linux console|Linux コンソール]]におけるものです。(ユニコードフォントや最新のグラフィックアダプタのサポートなど) より多くの機能が備わっているコンソールについては [[KMSCON]] や似たプロジェクトのページを見て下さい。}}
   
[[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] が、これは簡単に変えることができます。
   
  +
デフォルトでは、[[Wikipedia:Linux console|Linux コンソール]]は UTF-8 エンコードを使用しますが、標準的な VGA 互換フレームバッファが使用されるため、コンソールフォントはグリフ数が標準的な 256 あるいは 512 のいずれかに制限されます。フォントのグリフ数が 256 より多い場合、色の数は 16 から 8 に減少します。与えられた Unicode 値に正しい記号を割り当てるには、特殊な変換マップ (しばしば ''unimap'' と呼ばれます) が必要です。最近ではほとんどのコンソールフォントに ''unimap'' が組み込まれていますが、歴史的に、これは個別に読み込む必要があります。
コンソールフォントは 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
   
''setfont'' ユーティリティを使うことで一時的にフォントを変えることができます。フォントの名前 ({{ic|/usr/share/kbd/consolefonts/}} にあります) を指定してください:
+
{{ic|setfont}} ユーティリティを使うことで一時的にフォントを変えることができます。フォントの名前 ({{ic|/usr/share/kbd/consolefonts/}} にあります) を指定してください:
   
$ setfont Lat2-Terminus16
+
$ 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-132n}} など)。
$ 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
 
   
初期ユーザースペース、つまりブートプロセスも特フォントを使いたい場合は、{{ic|/etc/mkinitcpio.conf}} {{ic|keymap}} フックを使さい。詳しくは [[Mkinitcpio#HOOKS]] を参照してください。
+
初期ユーザ空間の指されたフォントを使用するには、{{ic|consolefont}} フックを {{ic|/etc/mkinitcpio.conf}} 使用しください。詳は [[Mkinitcpio#HOOKS]] をてください。
   
ブート時にフォントが変わっていない、もしくは一時的にしか変わらなかった場合、グラフィックドライバが初期化されコンソールがフレームバッファに切り替わるときにリセットされている可能性があります。これを避けるには、グラフィックドライバを早くロードするようにしてください。[[Kernel Mode Setting#Early KMS start]] のサンプルを見るか他の方法で {{ic|/etc/vconsole.conf}} が適用される前にフレームバッファをセットアップするようにしてください
+
ブート時にフォントが変わっていない、もしくは一時的にしか変わらなかった場合、グラフィックドライバが初期化されコンソールがフレームバッファに切り替わるときにリセットされている可能性があります。これを避けるには、グラフィックドライバを早くロードするようにしてください。例えば [[Kernel Mode Setting#Early KMS start]] や [https://bbs.archlinux.org/viewtopic.php?id=145765]、もしくは {{ic|/etc/vconsole.conf}} が適用される前にフレームバッファをセットアップする方法など
   
 
== HiDPI ==
 
== HiDPI ==

2022年9月21日 (水) 07:35時点における版

関連記事

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) も見てください。

フォント

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

デフォルトでは、仮想コンソールはカーネル組み込みのフォントと CP437 文字セットを使用します [1] が、これは簡単に変えることができます。

デフォルトでは、Linux コンソールは UTF-8 エンコードを使用しますが、標準的な VGA 互換フレームバッファが使用されるため、コンソールフォントはグリフ数が標準的な 256 あるいは 512 のいずれかに制限されます。フォントのグリフ数が 256 より多い場合、色の数は 16 から 8 に減少します。与えられた Unicode 値に正しい記号を割り当てるには、特殊な変換マップ (しばしば unimap と呼ばれます) が必要です。最近ではほとんどのコンソールフォントに unimap が組み込まれていますが、歴史的に、これは個別に読み込む必要があります。

kbd パッケージは、仮想コンソールのフォントとフォントマップを変更するツールを提供します。利用可能なフォントは /usr/share/kbd/consolefonts/ ディレクトリに保存されています。.psfu.psfu.gz で終わるファイルには Unicode 変換マップが組み込まれています。

キーマップ (コンピュータによって使用される、押されたキーと文字との関係) は、/usr/share/kbd/keymaps/ のサブディレクトリにあります。詳細は コンソールでのキーボード設定 を見てください。

ノート: フォントを置き換えると、標準的な VGA スタイルのフォントを期待するプログラム (線画グラフィックスを使用するものなど) で問題が発生する可能性があります。
ヒント: ラテン/ギリシャ文字で書かれたヨーロッパ系言語の場合、eurlatgr フォントを使うことができます。幅広いラテン/ギリシャ文字と特殊文字が収録されています [2]

プレビューと一時的な変更

ヒント: フォントプレビューのための画像のライブラリが利用できます: Linux console fonts screenshots.

フォントで利用できる記号・文字は 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-132n など)。

ヒント: フォントを変更するコマンドはすべて「ブラインド」でタイプ可能です。
ノート: setfont は現在使われているコンソールだけで機能することを覚えておいて下さい。(アクティブだろうとそうでなかろうと)他のコンソールには影響しません。

永続的な設定

/etc/vconsole.confFONT 変数は、起動時にフォントを設定するために使用されます。この設定は永続的で、すべてのコンソールで反映されます。詳細は 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 の表を見て下さい。

初期ユーザ空間での指定されたフォントを使用するには、consolefont フックを /etc/mkinitcpio.conf で使用してください。詳細は Mkinitcpio#HOOKS を見てください。

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

HiDPI

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

可聴音

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

参照