Mac OS上使用串口(serial port)和虚拟机通讯

来源:互联网 发布:网络交友有利有弊 英语 编辑:程序博客网 时间:2024/06/11 17:34
由于工作原因,需要模拟网络设备,要用到串口连接,特地研究了一下在Mac OS 上的使用方法。


1、 环境
(1) macOS Sierra 10.12
(2) VMware fusion 8.5
(3) Cisco router ISO


2、 配置
a. 在macOS上安装socat,可以通过macport软件:


(1) MacBook-Pro:~ hui$ port search socat
(2) socat @1.7.3.1_1 (sysutils, net)
(3)     netcat on steroids
(4) MacBook-Pro:~ $ 
(5) MacBook-Pro:~ hui$ sudo port install socat





b. 配置VMware

(1)新建一个文件夹,并且新建一个文件,如:"/path/to/serialPort"

(2)关闭已经建好过的虚拟机,添加设备-->串行设备-->请创建一个文件,以存储虚拟串行端口的输出

这里选择上一步中建的文件。


(3)修改“.vmx”后缀的文件,例如:

MacBook-Pro:~ hui$ sudo vim Documents/Virtual\Machines.localized/pmod.vmwarevm/pmod.vmx

Password:

MacBook-Pro:~ hui$

 

找到并修改以下内容:

serial0.fileType = "pipe"
serial0.fileName = "/path/to/serialPort" //对应上一步中新建的文件路径
serial0.present = "TRUE"




3、 连接
a. 开启虚拟机,当提示如下内容时,选择“覆盖管道”:
b. 打开终端,输入:
MacBook-Pro:~ shihui$ socat -d -d /path/to/serialPort PTY     //这里是生成一个转换文件


成功后会显示:
MacBook-Pro:~ hui$ socat -d -d /path/to/serialPort PTY
2017/01/06 11:37:59 socat[1485] N opening connection to LEN=38 AF=1 "/path/to/serialPort "
2017/01/06 11:37:59 socat[1485] N successfully connected from local address LEN=16 AF=1 ""
2017/01/06 11:37:59 socat[1485] N successfully connected via 
2017/01/06 11:37:59 socat[1485] N PTY is /dev/ttys001
2017/01/06 11:37:59 socat[1485] N starting data transfer loop with FDs [5,5] and [6,6]



c. 再打开另一个终端进程,作为和虚拟机通信窗口:
(1)第一种连接方法
Last login: Fri Jan  6 11:25:39 on ttys002
MacBook-Pro:~ hui$ screen /dev/ttys001 9600

//ttys001对应上一步中PTY生成的入口



(2)第二种连接方法
a. 按“control + c“关闭上一步中的进程,会显示:
MacBook-Pro:~ hui$ socat -d -d /path/to/serialPort PTY
2017/01/06 11:37:59 socat[1485] N opening connection to LEN=38 AF=1 "/path/to/serialPort "
2017/01/06 11:37:59 socat[1485] N successfully connected from local address LEN=16 AF=1 ""
2017/01/06 11:37:59 socat[1485] N successfully connected via 
2017/01/06 11:37:59 socat[1485] N PTY is /dev/ttys001
2017/01/06 11:37:59 socat[1485] N starting data transfer loop with FDs [5,5] and [6,6]
^C2017/01/06 16:21:07 socat[2167] N socat_signal(): handling signal 2
2017/01/06 16:21:07 socat[2167] N exiting on signal 2
2017/01/06 16:21:07 socat[2167] N socat_signal(): finishing signal 2
2017/01/06 16:21:07 socat[2167] N exit(130)
MacBook-Pro:~ hui$



b. 映射到本地的TCP 8888端口,如果提示端口被占用,就换其它端口
MacBook-Pro:~ hui$ socat /path/to/serialPort tcp-listen:8888


c. 再打开一个终端进程,输入以下内容: 
MacBook-Pro:~ hui$ telnet 127.0.0.1 8888
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.



下面就可以和虚拟机中的宿机进行交流了。




4、 troubleshooting
a. 新建文件夹和文件时,第一,不要在虚拟机文件目录中,必须位于其他目录;第二,需要修改文件夹权限--右键属性,修改“显示简介”里面的共享与权限,全部改成“读与写”。
否则会出现下面错误:
MacBook-Pro:~ hui$ socat -d -d /Documents/Virtual\ Machines.localized/console1 PTY
2017/01/06 11:25:35 socat[1393] N opening regular file " /Documents/Virtual Machines.localized/console1" for reading and writing
2017/01/06 11:25:35 socat[1393] N PTY is /dev/ttys001
2017/01/06 11:25:35 socat[1393] N starting data transfer loop with FDs [5,5] and [6,6]
2017/01/06 11:25:44 socat[1393] N socket 1 (fd 5) is at EOF
2017/01/06 11:25:44 socat[1393] N socket 1 (fd 5) is at EOF
2017/01/06 11:25:45 socat[1393] N exiting with status 0
MacBook-Pro:~ hui$

这个时候是无法和虚拟机宿机交互的。

b. 个人认为在virtualbox和parallel desktop虚拟机上也可以使用上述方法,不过还没有做实验。

0 0
原创粉丝点击