3.2.虚拟控制台和终端 ==================== 如果没有把 FreeBSD 的图形界面配置为开机自启,那么系统将启动到命令行登录提示界面,如本例所示: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session FreeBSD/amd64 (pc3.example.org) (ttyv0) login: 第一行包含了一些有关系统的信息。\ ``amd64`` 表示本例中的系统运行的是 64 位版本的 FreeBSD。主机名是 ``pc3.example.org``\ ,\ ``ttyv0`` 表示这是“系统控制台”。第二行是登录提示。 由于 FreeBSD 是一个多用户系统,它需要一些方法来区分不同的用户。因此每个用户在获得对系统中的程序的访问权之前必须登录系统。每个用户都有一个独特的 ``username`` 和一个个人的 ``password``\ 。 要登录到系统控制台,输入在系统安装时配置的用户名,如\ `添加用户 `__\ 中所述,然后按\ ``回车键``\ 。然后输入与该用户名相关的密码,按\ ``回车键``\ 。出于安全考虑,密码 *不会被显示出来*\ 。 输入正确的密码后,将显示当日信息(MOTD),然后是命令提示符。根据创建用户时选择的 shell,这个提示符会是 ``#``\ 、\ ``$`` 或是 ``%`` 字符之一。该提示符代表用户现在已经登录到 FreeBSD 系统控制台,并准备尝试执行可用命令。 3.2.1.虚拟终端 -------------- 虽然可以用系统控制台来与系统进行交互,但通过键盘用命令行工作的 FreeBSD 系统用户通常会转而登录到一个虚拟控制台。这是因为系统信息被默认配置为显示在系统控制台。这些信息会在用户正在处理的命令或文件时不断出现,使用户难以集中精力处理手头的工作。 FreeBSD 预置了几个虚拟控制台用于输入命令。每个虚拟控制台都有自己的登录提示和 shell,且很容易在不同的虚拟控制台之间切换。这实际上提供了相当于在图形环境中同时打开了多个窗口的命令行。 FreeBSD 保留了从 ``Alt+F1`` 到 ``Alt+F8`` 的组合键,用于在虚拟控制台之间切换。使用 ``Alt+F1`` 切换到系统控制台(\ ``ttyv0``\ ),\ ``Alt+F2`` 访问第一个虚拟控制台(\ ``ttyv1``\ ),\ ``Alt+F3`` 访问第二个虚拟控制台(\ ``ttyv2``\ ),以此类推。当使用 Xorg 作为图形控制台时,该组合变为 ``Ctrl+Alt+F1``\ ,以返回到基于文本的虚拟控制台。 当从一个控制台切换到下一个控制台时,FreeBSD 会切换屏幕输出。其结果是产生一种拥有多个虚拟屏幕和键盘的错觉,都可以用来输入命令让 FreeBSD 运行。当用户切换到另一个虚拟控制台时,在虚拟控制台中启动的程序不会停止运行。 请参考 `kbdcontrol(1) `__, `vidcontrol(1) `__, `atkbd(4) `__, `syscons(4) `__, 和 `vt(4) `__ 以了解关于 FreeBSD 控制台及其键盘驱动程序的更多技术介绍。 在 FreeBSD 中,可用的虚拟控制台的数量是在 ``/etc/ttys`` 的这一部分进行配置的: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session # name getty type status comments # ttyv0 "/usr/libexec/getty Pc" xterm on secure # Virtual terminals ttyv1 "/usr/libexec/getty Pc" xterm on secure ttyv2 "/usr/libexec/getty Pc" xterm on secure ttyv3 "/usr/libexec/getty Pc" xterm on secure ttyv4 "/usr/libexec/getty Pc" xterm on secure ttyv5 "/usr/libexec/getty Pc" xterm on secure ttyv6 "/usr/libexec/getty Pc" xterm on secure ttyv7 "/usr/libexec/getty Pc" xterm on secure ttyv8 "/usr/X11R6/bin/xdm -nodaemon" xterm off secure 要禁用某个虚拟控制台,在代表该虚拟控制台的行的开头加一个注释符号(#)即可。例如,要把可用的虚拟控制台的数量从 8 个减少到 4 个,在代表虚拟控制台 ``ttyv5`` 到 ``ttyv8`` 的最后四行前面加一个 ``#`` 即可。\ *不要* 注释系统控制台 ``ttyv0`` 所在行。注意,如果已经根据 `X Window 系统 `__\ 安装并配置了 Xorg,那么最后一个虚拟控制台(\ ``ttyv8``\ )将用于访问图形界面。 关于这个文件中每一列的详细解释以及虚拟控制台的可用选项,请参考 `ttys(5) `__\ 。 3.2.2.单用户模式的控制台 ------------------------ FreeBSD 的启动菜单提供了一个叫做“Boot Single User”的选项。如果选择了这个选项,系统将启动到一个被称为“单用户模式”的特殊模式。这种模式通常用于修复无法启动的系统,或者在不知道 ``root`` 密码的情况下将其重置。在单用户模式下,网络和其他虚拟控制台不可用。然而,对系统的完全 ``root`` 访问是可用的,而且在默认情况下,无需 ``root`` 密码。由于这些原因,需要有对键盘的物理访问权限才能进入该模式,确定谁对键盘有物理访问权是保护 FreeBSD 系统安全时需要考虑的问题。 可以在 **/etc/ttys** 的这一部分找到控制单用户模式的设置: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session # name getty type status comments # # If console is marked "insecure", then init will ask for the root password # when going to single-user mode. console none unknown off secure 默认情况下,状态被设置为 ``secure``\ 。这假定谁有对键盘拥有物理访问权并不重要,或者它受到物理安全策略的控制。如果这个设置被改为 ``insecure``\ ,则假设环境本身是不安全的,因为任何人都可以访问键盘。当这一行被改为 ``insecure`` 时,FreeBSD 将在用户选择启动到单用户模式时提示输入 ``root`` 密码。 **注意** *当把这个设置改为 ``insecure`` 的时候,要小心了!* 如果忘记了 ``root`` 密码,虽然仍可启动至单用户模式,但对于不熟悉 FreeBSD 引导过程的人来说可能会很困难。 3.2.3.改变控制台的分辨率 ------------------------ FreeBSD 控制台的默认分辨率可以调整为 1024x768、1280x1024, 或任何其他由显卡和显示器支持的尺寸。要使用不同的分辨率,请加载 ``VESA`` 模块: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session # kldload vesa 要确定硬件支持哪些分辨率,使用 `vidcontrol(1) `__\ 。要获得支持的分辨率的列表,请执行以下命令: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session # vidcontrol -i mode 该命令的输出列出了硬件所支持的分辨率。要选择新的分辨率,请以 ``root`` 用户身份使用 `vidcontrol(1) `__ 指定该分辨率: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session # vidcontrol MODE_279 如果新的分辨率符合预期,可以在启动时通过将其添加到 ``/etc/rc.conf`` 中进行永久设置: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session allscreens_flags="MODE_279"