1. 程式人生 > >Linux主機和VirtualBox之間實現串列埠通訊

Linux主機和VirtualBox之間實現串列埠通訊

Linux相關開發工作中,經常會用到串列埠,特別是嵌入式開發領域的,串列埠通訊一般是必不可少的。同時,它也是雙機除錯(如KGDB)的主要通訊渠道。

這裡以VirtualBox虛擬機器和Linux主機之間實現虛擬串列埠通訊。

環境:

  • HOST:Deepin 15.2 AMD_64
  • Guest OS: Ubuntu 14.04.3 AMD_64

設定虛擬串列埠

VirtualBox的虛擬串列埠是以命名管道方式實現的,虛擬串列埠一般對應虛擬機器裡的/dev/ttyS0 ,另一端就對應主機上的一個命名管道。在主機上,只需要對該命名管道進行操作即可實現對虛擬機器的串列埠通訊了。

這裡需要在主機上安裝socat來進行連線命名管道,實現串列埠通訊。

sudo apt-get install socat

如下圖,在該虛擬機器屬性裡設定串列埠

這裡寫圖片描述
注:在啟動虛擬機器後,便會產生vmserial命名管道檔案。

測試虛擬串列埠

在主機和虛擬機器上都安裝minicom,minicom是用來操作串列埠的工具。

sudo apt-get install minicom

配置minicom

若HOST上沒有/etc/minicom/minirc.dfl檔案,則執行下面指令生成該配置檔案。若已存在,則保持內容與下面相同即可。

echo "pu port unix#/home/magc/workspace/vmserial" > /etc/minicom/minirc.dfl

這樣,就將host上的minicom指向了虛擬串列埠的命名管道檔案了。

 測試一:從GusetOS到Host傳送資訊

在GuestOS端執行 :

cat /dev/ttyS0

這樣可使主機端的串列埠處於輸入狀態。
在Host端執行 :

minicom

開啟minicom介面後, 輸入內容,同時,就可以看到在GuestOS裡看到相應內容輸出。

如下圖示:

測試二:從Host到GuestOS傳送資訊

在GuestOS裡執行 :

magc@magc-VirtualBox:~$ su
密碼: 
root@magc-VirtualBox:/home/magc# echo "from guest" > /dev/ttyS0
root@magc-VirtualBox:/home/magc# echo "haha from vm" > /dev/ttyS0

然後,在HOST端minicom裡就可以看到相應的輸出了,如下圖示:

這裡寫圖片描述

通過以上雙向測試,可以看出虛擬串列埠可以投入使用了。