背景

背景

背景

私は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!

おすすめ記事