背景
私はFreeBSD 12.1-RELEASEをホストとして実行しています。ビビ仮想デバイス。
仮想マシン内で FreeBSD 12.1-RELEASE ゲストが実行されています。 2つのTTYレベルデバイスで構成したいです。
マニュアルページによると、2つのTTYクラスデバイスでVMを起動するには、次のようなコマンドラインオプションを使用してbhyveを起動する必要があります-l com1,/dev/nmdm0B -l com2,/dev/nmdm1B
。その後、これら2つの方法でゲストに接続できるはずです。ヌルモデム端末そしてcu -l /dev/nmdm0A
そしてcu -l /dev/nmdm1A
。
質問
最初のコマンドは期待どおりに動作します。cu -l /dev/nmdm0A
ゲストのデフォルトコンソールを表示します。
ただし、2 番目のコマンドはゲストに接続されますが、何も表示しません。他のTTYに切り替えるように、ログインプロンプトが表示されます。
私は何を見逃していますか?
追加の詳細
ゲストはFreeBSDを新しくインストールしたものです。
ゲストの出力は
dmesg | grep uart
次のとおりです。uart0: <16550 or compatible> port 0x3f8-0x3ff irq 4 flags 0x10 on acpi0 uart0: console (115200,n,8,1) uart1: <16550 or compatible> port 0x2f8-0x2ff irq 3 on acpi0
私は
hint.uart.1.flags
最初に設定を0x10
試してから次に設定しようとしました0x80
。 (私の理解ではこれはカーネルデバッガのためのものですが)シリアルポート(4))各変更後に再起動してください。動作しません。
引用する
ベストアンサー1
/etc/ttys
解決策はゲストで修正することです。 amd64では、次のデフォルト値があります。
#
# $FreeBSD: head/sbin/init/ttys.amd64 338454 2018-09-04 15:48:13Z brd $
# @(#)ttys 5.1 (Berkeley) 4/17/89
#
# This file specifies various information about terminals on the system.
# It is used by several different programs. Common entries for the
# various columns include:
#
# name The name of the terminal device.
#
# getty The program to start running on the terminal. Typically a
# getty program, as the name implies. Other common entries
# include none, when no getty is needed, and xdm, to start the
# X Window System.
#
# type The initial terminal type for this port. For hardwired
# terminal lines, this will contain the type of terminal used.
# For virtual consoles, the correct type is typically xterm.
# Other common values include dialup for incoming modem ports, and
# unknown when the terminal type cannot be predetermined.
#
# status Must be on or off. If on, init will run the getty program on
# the specified port. If the word "secure" appears, this tty
# allows root login.
#
# 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
#
ttyv0 "/usr/libexec/getty Pc" xterm onifexists secure
# Virtual terminals
ttyv1 "/usr/libexec/getty Pc" xterm onifexists secure
ttyv2 "/usr/libexec/getty Pc" xterm onifexists secure
ttyv3 "/usr/libexec/getty Pc" xterm onifexists secure
ttyv4 "/usr/libexec/getty Pc" xterm onifexists secure
ttyv5 "/usr/libexec/getty Pc" xterm onifexists secure
ttyv6 "/usr/libexec/getty Pc" xterm onifexists secure
ttyv7 "/usr/libexec/getty Pc" xterm onifexists secure
ttyv8 "/usr/local/bin/xdm -nodaemon" xterm off secure
# Serial terminals
# The 'dialup' keyword identifies dialin lines to login, fingerd etc.
ttyu0 "/usr/libexec/getty 3wire" vt100 onifconsole secure
ttyu1 "/usr/libexec/getty 3wire" vt100 onifconsole secure
ttyu2 "/usr/libexec/getty 3wire" vt100 onifconsole secure
ttyu3 "/usr/libexec/getty 3wire" vt100 onifconsole secure
# Dumb console
dcons "/usr/libexec/getty std.9600" vt100 off secure
ご覧のとおり、各ttyu端末装置の状態はonifconsole secure
(該当するsecure
部分はここでは関係ありません)に設定されています。つまり、これらの端末装置は、コンソールとして機能する場合にのみ開かれる。ホストからこれらのデバイスにアクセスできるようにするには、単ににonifconsole
置き換えることができますonifexists
。
私の特別なケースでは、次の行を置き換える必要がありました。
ttyu1 "/usr/libexec/getty 3wire" vt100 onifconsole secure
そして:
ttyu1 "/usr/libexec/getty 3wire" vt100 ifexists secure
これで、2番目のコンソールを使用してゲストシステムに接続できます。
# cu -l /dev/nmdm1A
Password:
Connected
FreeBSD/amd64 (testvm) (ttyu1)
login: root
Password:
Last login: Fri Jun 26 19:59:40 on ttyu1
FreeBSD 12.1-RELEASE r354233 GENERIC
Welcome to FreeBSD!