以 socat 連接 vmware virtual serial port

VMware 的 serial port 可以是 named pipe, 在 Linux 下可配合 socat 來連接, 其中一種設定方式如下

保存設定後, 啟動 vM, 這時候 /tmp/serial.sock 就會被產生出來.

執行以下指令連上 VM 的 serial console

$ socat -,raw,echo=0 UNIX-CONNECT:/tmp/serial.sock

將目前的 stdin, stdout, stderr 對 /tmp/serial.sock 收發, 並且關閉 echo (這樣如輸入密碼時才不會被打印出來), raw 代表將如 ctrl+c 之類的組合直發給另一端 (否則 ctrl+c 一按下 socat 就會收到 SIGTERM).

當然, 如果你的 guest OS 是 Linux, 還需要在 kernel command line 加上參數使用 serial port 做為 console, 例如

GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS1"

如果想讓 systemd 在 serial port 上等待使用者 login, 可啟動以下 service

$ sudo systemctl enable [email protected]

想連 grub 的 boot menu 都輸出到 serial port 的話, 在 /etc/default/grub 中加上

GRUB_TERMINAL=serial
GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"

更新 grub 設定

$ sudo update-grub