> For the complete documentation index, see [llms.txt](https://book.bsdcn.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://book.bsdcn.org/man/man4/vt.4.md).

# vt.4

`vt` — 虚拟终端系统视频控制台驱动

## 名称

`vt`

## 概要

`options TERMINAL_KERN_ATTR=<attribute>`

`options TERMINAL_NORM_ATTR=<attribute>`

`options VT_MAXWINDOWS=<N>`

`options VT_ALT_TO_ESC_HACK=1`

`options VT_TWOBUTTON_MOUSE`

`options VT_FB_MAX_WIDTH=<X>`

`options VT_FB_MAX_HEIGHT=<Y>`

`options SC_NO_CUTPASTE`

`device vt`

`在 loader.conf(5) 中：`

`hw.vga.textmode=1`

`hw.vga.acpi_ignore_no_vga=1`

`kern.vty=vt`

`kern.vt.color.<colornum>.rgb=<colorspec>`

`kern.vt.fb.default_mode=<X>x<Y>`

`kern.vt.fb.modes.<connector>=<X>x<Y>`

`kern.vt.slow_down=<delay>`

`screen.font=<X>x<Y>`

`在 loader.conf(5) 或 sysctl.conf(5) 中：`

`kern.consmute=1`

`kern.vt.kbd_halt=1`

`kern.vt.kbd_poweroff=1`

`kern.vt.kbd_reboot=1`

`kern.vt.kbd_debug=1`

`kern.vt.kbd_panic=0`

`kern.vt.enable_altgr=0`

`kern.vt.enable_bell=1`

## 描述

`vt` 设备提供多个虚拟终端，具备以下丰富功能：

* 支持 Unicode UTF-8 文本和双宽字符。
* 在图形模式下支持大字体映射，包括对亚洲字符集的支持。
* 图形模式控制台。
* 与 KMS（内核模式设置）视频驱动集成，可在 *X Window System* 与虚拟终端之间切换。

### 虚拟终端

单台计算机上提供多个虚拟终端。最多可定义 16 个虚拟终端。同一时间只有一个虚拟终端连接到屏幕和键盘。使用组合键选择虚拟终端。Alt-F1 至 Alt-F12 对应前 12 个虚拟终端。如果创建的虚拟终端超过 12 个，使用 Shift-Alt-F1 至 Shift-Alt-F4 切换到额外的终端。

### 用鼠标复制和粘贴文本

支持使用鼠标从屏幕复制和粘贴文本。按住鼠标 1 键（通常是左键）并移动鼠标以选择文本。所选文本以前景色和背景色反相显示。要在释放鼠标 1 键后选择更多文本，按鼠标 3 键（通常是右键）。要粘贴已选择的文本，按鼠标 2 键（通常是中键）。文本将像从键盘输入一样输入。对于只有两个按键的鼠标，可使用 `VT_TWOBUTTON_MOUSE` 内核选项。设置此选项使第二个鼠标按键成为粘贴按键。更多信息参见 [moused(8)](/man/man8/moused.8.md)。

### 回滚查看

按 Scroll Lock 键，然后使用方向键上下滚动，可查看已滚动出屏幕的输出。Page Up 和 Page Down 键每次向上或向下滚动整屏。Home 和 End 键跳转到回滚缓冲区的开头或末尾。查看完毕后，再次按 Scroll Lock 键返回正常使用。某些笔记本电脑键盘没有 Scroll Lock 键，使用特殊的功能键组合（如 Fn + K）访问 Scroll Lock。

## 驱动配置

### 内核配置选项

这些内核选项控制 `vt` 驱动。

`#include <sys/terminal.h>`

**`TERMINAL_NORM_ATTR=`** <`attribute`>

**`TERMINAL_KERN_ATTR=`** <`attribute`> 这些选项更改普通文本和内核文本使用的默认颜色。可用颜色定义见下文实例章节。

**`VT_MAXWINDOWS=`** <`N`> 设置要创建的虚拟终端数为 `N`。默认值为 12。

**`VT_ALT_TO_ESC_HACK=`** `1` 当按住 Alt 键再按其他键时，发送 ESC 序列而不是 Alt 键。

**`VT_TWOBUTTON_MOUSE`** 如果定义，交换鼠标按键 2 和 3 的功能。实际上，这使鼠标右键执行粘贴。这些选项按所示顺序检查。

**`SC_NO_CUTPASTE`** 禁用鼠标支持。

**VT\_FB\_MAX\_WIDTH=<`X`>** 设置最大宽度为 `X`。

**VT\_FB\_MAX\_HEIGHT=<`Y`>** 设置最大高度为 `Y`。

## 向后兼容性

提供了若干选项以兼容先前的控制台设备 sc(4)。这些选项将在未来的 FreeBSD 版本中移除。

| **vt 选项名**           | **sc 选项名**            |
| -------------------- | --------------------- |
| `TERMINAL_KERN_ATTR` | `SC_KERNEL_CONS_ATTR` |
| `TERMINAL_NORM_ATTR` | `SC_NORM_ATTR`        |
| `VT_TWOBUTTON_MOUSE` | `SC_TWOBUTTON_MOUSE`  |
| `VT_MAXWINDOWS`      | `MAXCONS`             |
| none                 | `SC_NO_CUTPASTE`      |

## X86 BIOS 系统的启动操作

计算机 BIOS 以文本模式启动，FreeBSD [loader(8)](/man/man8/loader.8.md) 运行，加载内核。如果设置了 `hw.vga.textmode`，系统保持文本模式。否则，`vt` 使用 `vt_vga` 切换到 640x480x16 VGA 模式。如果 KMS（内核模式设置）视频驱动可用，显示切换到高分辨率，KMS 驱动接管。当 KMS 驱动不可用时，`vt_vga` 保持活动状态。

## 加载器可调参数

这些设置可在 [loader(8)](/man/man8/loader.8.md) 提示符下输入，或在 loader.conf(5) 中设置。

**`hw.vga.textmode`** 设置为 1 以在 BIOS 引导时使用文本模式而非图形模式的虚拟终端。需要图形模式的功能（如可加载字体）将被禁用。如果加载了 KMS 驱动，控制台将切换到图形模式并保持在该模式。此外，此可调参数对 UEFI(8) 引导无效，因为它不使用 VGA 模式。

**`hw.vga.acpi_ignore_no_vga`** 设置为 1 以强制使用 VGA 驱动，无论 ACPI IAPC\_BOOT\_ARCH 是否表示不支持 VGA。可用于绕过 ACPI 表中的固件缺陷。注意，只有在虚拟化环境中运行时才会确认不支持 VGA。太多有缺陷的固件错误地在物理硬件上报告不支持 VGA。

**`kern.vty`** 将此值设置为 `vt` 或 `sc` 以选择特定的系统控制台，覆盖默认值。未设置此值时 `GENERIC` 内核使用 `vt`。注意，`sc` 不兼容 UEFI(8) 引导。

**`kern.vt.color`**.`colornum`.`rgb` 设置此值以覆盖颜色 `colornum` 的默认调色板条目，`colornum` 应在 0 至 15 范围内。该值可以是 0 至 255 范围内的红、绿、蓝值的逗号分隔三元组，也可以是类似 HTML 的十六进制三元组。参见下文实例。注意：`vt` VGA 硬件驱动不支持调色板配置。

**`kern.vt.fb.default_mode`** 将此值设置为图形模式以覆盖 `vt` 后端选择的默认值。此模式应用于所有输出连接器。目前仅在与 KMS 视频驱动配对时由 `vt_fb` 后端支持。

**`kern.vt.fb.modes`**.<`connector_name`> 设置此值以覆盖 `vt` 后端为输出连接器 `connector_name` 选择的默认图形模式。此模式仅应用于该连接器。它优先于 `kern.vt.fb.default_mode`。可用连接器名称可在加载 KMS 驱动后通过 [dmesg(8)](/man/man8/dmesg.8.md) 查找。其中会列出连接器及其关联的可调参数。目前仅在与 KMS 视频驱动配对时由 `vt_fb` 后端支持。

**`kern.vt.slow_down`** 在现代笔记本电脑上调试内核时，屏幕通常是唯一可用的控制台，相关信息会在被肉眼或相机捕获之前滚出视野。将 `kern.vt.slow_down` 设置为非零数字会使控制台输出同步（即不依赖定时器和中断），并按该数字比例减慢速度。

**`screen.font`** 将此值设置为位于 **/boot/fonts** 中所需字体文件的基本名称。该字体必须在那里存在的 `INDEX.fonts` 文件中指定。可使用 vtfontcvt(8) 转换字体以供使用。

## 键盘 SYSCTL 可调参数

这些设置控制是否启用或忽略某些特殊按键组合。具体按键组合可通过 keymap(5) 文件配置。

这些设置可在 [loader(8)](/man/man8/loader.8.md) 提示符下输入，或在 loader.conf(5) 中设置，也可在运行时通过 [sysctl(8)](/man/man8/sysctl.8.md) 命令更改。

**`kern.vt.enable_altgr`** 启用 AltGr 键（不将右 Alt 键视为 Alt）。

**`kern.vt.kbd_halt`** 启用 halt 键组合。

**`kern.vt.kbd_poweroff`** 启用关机键组合。

**`kern.vt.kbd_reboot`** 启用重启键组合，通常是 Ctrl+Alt+Del。

**`kern.vt.kbd_debug`** 启用调试请求键组合，通常是 Ctrl+Alt+Esc。

**`kern.vt.kbd_panic`** 启用 panic 键组合。

## 其他 SYSCTL 可调参数

这些设置可在 [loader(8)](/man/man8/loader.8.md) 提示符下输入，在 loader.conf(5) 中设置，或在运行时通过 [sysctl(8)](/man/man8/sysctl.8.md) 更改。

**`kern.consmute`** 禁止将内核消息打印到系统控制台。

**`kern.vt.enable_bell`** 启用终端响铃。

## 文件

**`/dev/console`**

**`/dev/consolectl`**

**`/dev/ttyv*`** 虚拟终端

**`/etc/ttys`** 终端初始化信息

**`/usr/share/vt/fonts/*.fnt`** 控制台字体

**`/usr/share/vt/keymaps/*.kbd`** 键盘布局

## DEVCTL 消息

| 系统   | 子系统  | 类型   | 描述           |
| ---- | ---- | ---- | ------------ |
| `VT` | BELL | RING | 控制台响铃已响铃的通知。 |

| 变量            | 含义                          |
| ------------- | --------------------------- |
| `duration_ms` | 请求响铃的时长（毫秒）。                |
| `enabled`     | true 或 false，指示响铃时是否在管理上启用。 |
| `hushed`      | true 或 false，指示响铃时是否被用户静音。  |
| `hz`          | 请求的音调（Hz）。                  |

## 实例

要将回滚缓冲区大小增加到 22500 行，在 **/etc/rc.conf** 中加入以下行：

```sh
allscreens_flags="-h 22500"
```

此示例将普通文本的默认颜色更改为黑底绿字，反相时为绿底黑字。注意，由于 [config(8)](/man/man8/config.8.md) 的当前实现，属性字符串内不能使用空格。

```sh
options TERMINAL_NORM_ATTR=(FG_GREEN|BG_BLACK)
```

此行将内核消息的默认颜色更改为黑底亮红字，反相时为亮红底黑字。

```sh
options TERMINAL_KERN_ATTR=(FG_LIGHTRED|BG_BLACK)
```

要在所有输出连接器上设置 1024x768 模式，在 **/boot/loader.conf** 中加入以下行：

```sh
kern.vt.fb.default_mode="1024x768"
```

要仅在笔记本电脑内置屏幕上设置 800x600，改用以下行：

```sh
kern.vt.fb.modes.LVDS-1="800x600"
```

连接器名称可在 [dmesg(8)](/man/man8/dmesg.8.md) 中找到：

```sh
info: [drm] Connector LVDS-1: get mode from tunables:
```

```sh
info: [drm] - kern.vt.fb.modes.LVDS-1
```

```sh
info: [drm] - kern.vt.fb.default_mode
```

设置控制台调色板的黑白颜色：

```sh
kern.vt.color.0.rgb="10,10,10"
```

```sh
kern.vt.color.15.rgb="#f0f0f0"
```

在引导时从 **/boot/fonts/\*.fnt\[.gz]** 在 loader.conf(5) 中加载 8x16 字体：

```sh
screen.font="8x16"
```

## 参见

kbdcontrol(1), [login(1)](/man/man1/login.1.md), vidcontrol(1), [atkbd(4)](/man/man4/atkbd.4.md), [atkbdc(4)](/man/man4/atkbdc.4.md), [kbdmux(4)](/man/man4/kbdmux.4.md), [keyboard(4)](/man/man4/keyboard.4.md), [screen(4)](/man/man4/screen.4.md), [splash(4)](/man/man4/splash.4.md), [syscons(4)](/man/man4/syscons.4.md), [ukbd(4)](/man/man4/ukbd.4.md), kbdmap(5), loader.conf(5), [rc.conf(5)](/man/man5/rc.conf.5.md), ttys(5), [config(8)](/man/man8/config.8.md), getty(8), [kldload(8)](/man/man8/kldload.8.md), [moused(8)](/man/man8/moused.8.md), vtfontcvt(8)

## 历史

`vt` 驱动最早出现在 FreeBSD 9.3 中。

## 作者

`vt` 设备驱动由 Ed Schouten <ed@FreeBSD.org>、Ed Maste <emaste@FreeBSD.org> 和 Aleksandr Rybalko <ray@FreeBSD.org> 开发，由 FreeBSD 基金会赞助。本手册页由 Warren Block <wblock@FreeBSD.org> 编写。

## 注意事项

粘贴缓冲区大小受系统值 {`MAX_INPUT`} 限制，即终端输入队列中可存储的字节数，通常为 1024 字节（参见 [termios(4)](/man/man4/termios.4.md)）。


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://book.bsdcn.org/man/man4/vt.4.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
