从IBM PC开始,PC都配备了一个或两个串口(Windows系统中叫做COM口,linux系统中叫做ttyS0)。虽然串口已经没有计算机发展早期那么重要,但还是有些重要的应用和用途的。比如:当以太网不可用时,可以利用串口通过null-modem电缆设置一个原始的网络。串口对于需要做内核级调试的调试人员也非常必要,因为内核级调试软件通常通过串口和调试人员交互。也就是说,利用虚拟串口,调试人员可以在虚拟机上做内核级调试从而不需要使用真实物理线缆连接到一台真实的PC。在虚拟机中提供多种多样的虚拟串口连接方式,有”使用物理机真实串口“、”使用pipe文件“、”使用文本文件”等方式,一般我们会使用“pipe文件”的形式处理虚拟机中的串口,但是pipe文件有固定的语法格式,即:\\.\pipe\,举例来说:\\.\pipe\vmwaredebug是一个语法正确的pipe文件。

既然要生成pipe文件,那就需要一些特别的软件,windows下我们使用“VMWare Serial Line Gateway”进行pipe文件的关联,linux发行版下我们使用socat进行pipe的关联。

socat工具和”VMWare Serial Line Gateway”的使用思路是一样的,只不过文件的表现形式不一样:在windows系统下使用pipe文件,在linux发行版下使用socket文件,且他们都是要绑定到本地回环的一个”TCP socket“上从而实现连接跳转。

需要注意的是在linux发行版中串口叫做ttyS,且设备号码是从0开始计算的,所以ttyS0代表第一个串口,ttyS1代表第二个串口;而在windows系统中串口叫做COM,且com是从1开始计算的,所以com1就代表第一个串口,com2就代表第二个串口;

其次在vboxmanage中串口设备叫做UART:Universal Asynchronous Receiver/Transmitter);

最后串口是分为server模式和client模式的,这和C/S网络模型中的client和server的含义是差不多的:分清主动接收和被动接受这两个关键点即可。

下面我们通过实验的方式讨论下以上的理论内容。

 

 

【实验二】使用VMWare Serial Line Gateway玩转串口01

第一步:首先我们在http://www.l4ka.org/91.php网站下载“VMWare Serial Line Gateway”虚拟串口软件;

《virtualbox完全学习手册》之玩转串口(二)-LMLPHP

《virtualbox完全学习手册》之玩转串口(二)-LMLPHP

第二步:我们将下载好的“VMWare Serial Line Gateway”虚拟串口软件通过CMD安装到物理机中,且使其以服务的形式运行。

通过观察“VMWare Serial Line Gateway”安装的后屏幕输出,大家需要把“\\.\pipe\vmwaredebug”这个pipe路径和567这个端口号码多留意下,在后面的实验中会一直引用此信息;

Tips:通过“VMWare Serial Line Gateway”详细的输出信息,我们可以看到,其实“VMWare Serial Line Gateway”是一种将虚拟串口以pipe的形式表示且将pipe绑定到本地回环的一个”TCP socket“上,从而实现连接跳转。

《virtualbox完全学习手册》之玩转串口(二)-LMLPHP

第三步:我们使用“net start vmwaregateway”将“VMWare Serial Line Gateway”的服务状态修改为启动状态;

《virtualbox完全学习手册》之玩转串口(二)-LMLPHP

第四步:我们使用“net start”查看已经启动的服务运行状态;

《virtualbox完全学习手册》之玩转串口(二)-LMLPHP

第五步:我们打开“virtualbox manager”,使用”create new virtual machine“向导创建一台linux系统,这里我们创建centos发行版,具体的创建过程这里就不再赘述;

《virtualbox完全学习手册》之玩转串口(二)-LMLPHP

第六步:我们打开“virtualbox manager”,在虚拟机列表框中选择centos这台VM,然后点击工具栏的【setting】按钮,选择【serial ports】选项卡,在port1中勾选【enable serial port】,

【port number】选择“user-defined”;【port mode】选择“host pipe”,【port/file path】填入“\\.\pipe\vmwaredebug”,不勾选“create pipe”复选框,因为“\\.\pipe\vmwaredebug”已经在物理机端被创建,这里我们只是引用此pipe而已;最后点击【ok】即可;

《virtualbox完全学习手册》之玩转串口(二)-LMLPHP

第七步:我们将安装映像文件载入VM,然后启动centos,在GUI的安装画面中我们按键盘左上角的【esc】键进入CLI界面;

《virtualbox完全学习手册》之玩转串口(二)-LMLPHP

第八步:在CLI界面的boot提示符后,我们输入“linux text console=ttyS0”即可;

《virtualbox完全学习手册》之玩转串口(二)-LMLPHP

第九步:接着我们就可以在物理机CMD命令行中输入“telnet localhost 567”,通过“VMWare Serial Line Gateway”跳转进入centos这台VM的字符安装界面,只不过这里我们是通过串口进行安装而已;

《virtualbox完全学习手册》之玩转串口(二)-LMLPHP

《virtualbox完全学习手册》之玩转串口(二)-LMLPHP

第十步:大家可以看到,由于字符集问题,我们用CMD进行telnet会出现乱码问题,所以这里建议使用PUTTY之类的第三方远程终端工具进行telnet连接。

具体配置如下:我们下载安装putty软件,在弹出的界面中,【session】页签的“hostname”字段填入127.0.0.1或者localhost,“port”字段填入567;“connection type”选择telnet,然后切换到【translation】页签,将字符集设置为“UTF-8,最后返回到session页签,在“saved sessions”中输入centos,点击【save】按钮,再点击【open】按钮;

《virtualbox完全学习手册》之玩转串口(二)-LMLPHP

《virtualbox完全学习手册》之玩转串口(二)-LMLPHP

《virtualbox完全学习手册》之玩转串口(二)-LMLPHP

 

更加详细的内容,敬请期待本人即将上市的呕心力作 《virtualbox完全学习手册》。

姜皓,网络id 小耗子老师,精通linux服务器管理、windows server 服务器管理、cisco路由器管理、虚拟化(vmware workstation、vsphere、virtualbox)等内容。
现就职于西北某国企。

11-22 23:37