Linux コンソール
Wikipedia より:
- Linux コンソールは、Linux カーネル に内蔵されているシステムコンソールです。Linux コンソールは、カーネルや他のプロセスがテキスト出力をユーザに送信したり、ユーザからのテキスト入力を受信したりするための方法を提供します。ユーザは通常、コンピュータのキーボードでテキストを入力し、出力されたテキストをコンピュータのモニタで読みます。Linux カーネルは仮想コンソールをサポートしています - コンソールは論理的に分離されていますが、同じ物理キーボードとディスプレイにアクセスします。
この記事では、Linux コンソールの基本とフォント表示の設定方法について説明します。キーボードの設定は、コンソールでのキーボード設定 サブページで説明しています。
目次
実装
コンソールは、ユーザーと直接対話するほとんどのサービスとは異なり、カーネルに実装されています。これは、通常のアプリケーションとしてユーザースペースに実装される、Xterm などの端末エミュレーションソフトウェアとは対照的です。コンソールは常にリリースされた Linux カーネルの一部でしたが、その歴史に変化を遂げてきました。最も顕著なのは、framebuffer の使用と、Unicode のサポートへの移行です。
コンソールには多くの改良が施されていますが、レガシーハードウェアとの完全な下位互換性があるため、グラフィカルターミナルエミュレータと比較すると制限があります。
仮想コンソール
The console is presented to the user as a series of virtual consoles. These give the impression that several independent terminals are running concurrently; each virtual console can be logged in with different users, run its own shell and have its own font settings. The virtual consoles each use a device /dev/ttyX
, and you can switch between them by pressing Alt+Fx
(where x
is equal to the virtual console number, beginning with 1). The device /dev/console
is automatically mapped to the active virtual console.
See also chvt(1), openvt(1) and 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).
フォント
By default, the virtual console uses the kernel built-in font with a CP437 character set,[1] but this can be easily changed.
The Linux console uses UTF-8 encoding by default, but because the standard VGA-compatible framebuffer is used, a console font is limited to either a standard 256, or 512 glyphs. If the font has more than 256 glyphs, the number of colours is reduced from 16 to 8. In order to assign correct symbol to be displayed to the given Unicode value, a special translation map, often called unimap, is needed. Nowadays most of the console fonts have the unimap built-in; historically, it had to be loaded separately.
The kbd package provides tools to change virtual console font and font mapping. Available fonts are saved in the /usr/share/kbd/consolefonts/
directory, those ending with .psfu or .psfu.gz have a Unicode translation map built-in.
Keymaps, the connection between the key pressed and the character used by the computer, are found in the subdirectories of /usr/share/kbd/keymaps/
, see /Keyboard configuration for details.
プレビューと一時的な変更
$ showconsolefont
shows a table of glyphs or letters of a font.
setfont
temporarily change the font if passed a font name (in /usr/share/kbd/consolefonts/
) such as
$ setfont lat2-16 -m 8859-2
Font names are case-sensitive. With no parameter, setfont
returns the console to the default font.
So to have a small 8x8 font, with that font installed like seen below, use e.g.:
$ setfont -h8 /usr/share/kbd/consolefonts/drdos8x8.psfu.gz
To have a bigger font, the Terminus font (terminus-font) is available in many sizes, such as ter-132n
which is large.
永続的な設定
The FONT
variable in /etc/vconsole.conf
is used to set the font at boot, persistently for all consoles. See vconsole.conf(5) for details.
For displaying characters such as Č, ž, đ, š or Ł, ę, ą, ś using the font lat2-16.psfu.gz
:
/etc/vconsole.conf
... FONT=lat2-16 FONT_MAP=8859-2
It means that second part of ISO/IEC 8859 characters are used with size 16. You can change font size using other values (e.g. lat2-08
). For the regions determined by 8859 specification, look at the Wikipedia:ISO/IEC 8859#The parts of ISO/IEC 8859.
To use the specified font in early userspace, use the consolefont
hook in /etc/mkinitcpio.conf
. See Mkinitcpio#HOOKS for more information.
If the fonts appear to not change on boot, or change only temporarily, it is most likely that they got reset when graphics driver was initialized and console was switched to framebuffer. To avoid this, load your graphics driver earlier. See for example Kernel mode setting#Early KMS start, [3] or other ways to setup your framebuffer before /etc/vconsole.conf
is applied.
HiDPI
HiDPI#Linux コンソール を参照。
Audible tones
PC スピーカー#Beep を参照。