Linux主機和VirtualBox之間實現串列埠通訊
阿新 • • 發佈:2019-02-11
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裡就可以看到相應的輸出了,如下圖示:
通過以上雙向測試,可以看出虛擬串列埠可以投入使用了。