web-dev-qa-db-ja.com

Linuxは仮想シリアルポートを介してホストからVirtualBoxゲストに接続します

ゲストから設定ファイルを取得する必要がありますVMネットワークサポートなし。これを行う最も簡単な方法は、おそらくシリアルポートを使用することです。私が理解している限り、一種のシリアルポート「ループ」を作成する必要があります。 "たとえば、minicomを使用して/ dev/vttyS0と接続し、/ dev/vttyS1をVirtualBoxゲストに割り当てます。

ゲストはボーレート115200を使用しています。このようなデバイスのペアを作成するにはどうすればよいですか?

私はsocatを試しました:

socat -d -d pty,raw,echo=0 pty,raw,echo=0

ただし、VirtualBoxはそれを正しいシリアルデバイススローエラーとして理解していないようです

Ioctl failed for serial Host device /dev/pts/10 (VERR_INVALID_PARAMETER)
Device will not work properly

ErrorID DrvHostSerialFail
Severity Warning
2
Lapsio


最初にホストOSでシリアルコンソール設定をセットアップします。
virtualbox設定では、
シリアルポート->ポート1
ポート番号COM1
ポートモード-ホストパイプ
既存のパイプ/ソックに接続-未チェック
パス/アドレス:/ tmp/vbox
今、ミニコムを設定します
Sudo minicom -s -c on
シリアルポートの設定
シリアルデバイス:unix#/ tmp/vbox
出口


ゲストでシリアルコンソールを有効にする
Sudo vi/etc/default/grub
GRUB_CMDLINE_LINUX = "console = ttyS0,115200n8 console = tty0 ignore_loglevel"
Sudoupdate-grub
次に、コンソールttyS0でgettyを有効にします
アップスタートシステムの場合
1)以下を含む/etc/init/ttyS0.confというファイルを作成します。

#ttyS0 --getty 
#
#このサービスは、システムが
#開始された時点から、再びシャットダウンされるまで、ttyS0でgettyを維持します。
 
停止したrcで開始RUNLEVEL = [12345] 
ランレベルで停止[!12345] 

respawn exec/sbin/getty -L 115200 ttyS0 vt102

2)ゲッティを始めるようにupstartに依頼する

Sudo start ttyS0


Systemdシステムの場合

#Sudo systemctl enable [email protected] 
#Sudo systemctl start [email protected] 
#Sudosystemctlデーモンリロード


ゲストOSを再起動すると、minicom経由でホストOSにシリアルコンソールが表示されます

6
Tauqeer

ホストからゲストに接続する方法は次のとおりです。

  1. パスを使用して「ホストパイプ」モードでvirtualboxにシリアルポートを作成します。/dev/vboxttyS0。
  2. ゲストのシリアルポートを有効にする
  3. 使用する socat unix-connect:/dev/vboxttyS0 -,b57600またはsocat unix-connect:/dev/vboxttyS0 -,raw,echo=0私の特定のケースではこれがうまく機能しました。

OSベンダーに連絡したところ、ベアメタルデバイスではデフォルトで有効になっていますが、シリアルポートを明示的に有効にする必要があることがわかりました:/

1
Lapsio