onsdag den 15. maj 2013

Connecting Two Virtual Machines using virtual serial ports on VMWare for Mac


My Mac Sepcifications

MacBook Pro15'', late 2011
Processor  2,2 GHz Intel Core i7
Memory  8 GB 1333 MHz DDR3
Graphics  AMD Radeon HD 6750M 512 MB
Software  OS X 10.8.2 (12C60) - Mountain Lion

Installed Software

  • VMware Fusion Professional Version 5.0.3
    • Ubuntu 1 image installed on the virtual machine
    • Ubuntu 2 image installed on the virtual machine
So I have two ubuntu's running on my VMware.

Connect using virtual serial ports

For connecting the machines with serial ports on a mac - you have to do following steps:
Server
  1. You have installed both VMware images
  2. Find folder for the first image (Ubuntu 1)
  3. Right click on the .vmx file and open with TextEdit
  4. Replace Serial0 text with following:
    serial0.present = "TRUE"
    serial0.fileType = "pipe"
    serial0.yieldOnMsrRead = "TRUE"
    serial0.startConnected = "TRUE"
    serial0.fileName = "/Users/khaledsaied/Documents/Serial/empty"
  5.  serial0.fileName has to be a directory on your mac where you put an empty ASCII file
    1. The ASCII can be created with TextEdit  - see screenshots below:
Open TextEdit


Convert to regular text

Save
Choose ASCII Encoding (if ASCII is not in your list then choose change coding list)

Give the empty file a name without endings (.txt) for example: empty

Client
For the Client just repeat the above steps on the other image (Ubuntu 2), the only difference is that you in step 4 add following statement serial0.pipe.endPoint = "client" as follow:

serial0.present = "TRUE"
serial0.fileType = "pipe"
serial0.pipe.endPoint = "client"
serial0.yieldOnMsrRead = "TRUE"
serial0.startConnected = "TRUE"
serial0.fileName ="/Users/khaledsaied/Documents/Serial/empty"

THATS IT!!! That is all you have to do for getting a virtual serial port working between two virtual machines on Mac.

Serial Communcation with Terminal

The only thing you have to do now is to turn on both of your machines (Ubuntu 1 and Ubuntu 2), open Terminal on Ubuntu 1 and write following:
cat /dev/ttyS0
Then open Terminal on Ubuntu 2 and write following:
echo some random text > /dev/ttyS0
Now you should see the text "some random text" on the Ubuntu 1 Terminal.
*It is ttyS0 because I have used serial0.

NB: while changing in the .vmx file the virtual machines have to be turned off!
The directory with the empty ASCII file has to be the full legal path!


Links:

1 kommentar:

  1. Hi, I am wondering since two virtual machines are going to access (R+W) the same file, how come this work. On my Mac I have two virtual machines with XP SP3, I am trying to make them communicate using above mentioned method. The second machine does not boot because the the file (in your case "empty") is already accessed by the "Server" machine.

    SvarSlet