Ubuntu Server 12 在 Xen 上运行时未生成串行 ttyS0

Ubuntu Server 12 在 Xen 上运行时未生成串行 ttyS0

我在多台主机上都遇到了这个问题,所以特定的硬件不是问题。

在默认配置下,裸机 Ubuntu 12 不会在唯一的串行端口上创建登录过程。串行端口与固件配合使用正常。它与 Grub2 配合使用正常。我甚至将串行线连接到 2 个不同的外部客户端盒,因此问题既不是硬件也不是远程客户端。

当最终启动时,系统无法创建登录进程。

root@xenpro3:~# ps ax | grep tty

  1229 tty4     Ss+    0:00 /sbin/getty -8 38400 tty4

  1233 tty5     Ss+    0:00 /sbin/getty -8 38400 tty5

  1239 tty2     Ss+    0:00 /sbin/getty -8 38400 tty2

  1241 tty3     Ss+    0:00 /sbin/getty -8 38400 tty3

  1245 tty6     Ss+    0:00 /sbin/getty -8 38400 tty6

  1403 tty1     Ss+    0:00 /sbin/getty -8 38400 tty1

  1996 pts/0    S+     0:00 grep --color=auto tty

root@xenpro3:~# dmesg | grep tty

[    0.000000] Command line: BOOT_IMAGE=/vmlinuz-3.2.0-30-generic root=/dev/mapper/xenpro3-root ro console=ttyS0,115200n8

[    0.000000] Kernel command line: BOOT_IMAGE=/vmlinuz-3.2.0-30-generic root=/dev/mapper/xenpro3-root ro console=ttyS0,115200n8

[    0.000000] console [ttyS0] enabled

[    2.160986] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A

[    2.203396] serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A

[    2.263296] 00:08: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A

[    2.323102] 00:09: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A

root@xenpro3:~# uname -a

Linux xenpro3 3.2.0-30-generic #48-Ubuntu SMP Fri Aug 24 16:52:48 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

root@xenpro3:~# 

我尝试将 ttyS0.conf 文件放入 /etc/initab,这解决了裸机问题,但在 Xen 上启动 Ubuntu(作为域 0)时,串行端口仍然无法工作。启动 Xen 时,我的串行线输出如下所示

/dev/ttyS0 at 0x03f8 (irq = 4) is a 16550A

 * Exporting directories for NFS kernel daemon...                        [ OK ] 

 * Starting NFS kernel daemon                                            [ OK ] 
SSL tunnels disabled, see /etc/default/stunnel4

[   18.654627] XENBUS: Unable to read cpu state

[   18.659631] XENBUS: Unable to read cpu state

[   18.664398] XENBUS: Unable to read cpu state

[   18.669248] XENBUS: Unable to read cpu state

 * Starting Xen daemons 
                                                 [ OK ] 
mountall: Disconnected from Plymouth

此时,串行线不再连接到进程。Xen 本身运行良好。Dmesg 给我提供了一长串

[  120.236841] init: ttyS0 main process ended, respawning

[  120.239717] ttyS0: LSR safety check engaged!

[  130.240265] init: ttyS0 main process (1631) terminated with status 1

[  130.240294] init: ttyS0 main process ended, respawning

[  130.242970] ttyS0: LSR safety check engaged!

这并不奇怪,因为我看到

root@xenpro3:~# ls -l /dev/ttyS?

crw-rw---- 1 root tty     4, 64 Nov  7 14:04 /dev/ttyS0

crw-rw---- 1 root dialout 4, 65 Nov  7 14:04 /dev/ttyS1

crw-rw---- 1 root dialout 4, 66 Nov  7 14:04 /dev/ttyS2

crw-rw---- 1 root dialout 4, 67 Nov  7 14:04 /dev/ttyS3

crw-rw---- 1 root dialout 4, 68 Nov  7 14:04 /dev/ttyS4

crw-rw---- 1 root dialout 4, 69 Nov  7 14:04 /dev/ttyS5

crw-rw---- 1 root dialout 4, 70 Nov  7 14:04 /dev/ttyS6

crw-rw---- 1 root dialout 4, 71 Nov  7 14:04 /dev/ttyS7

crw-rw---- 1 root dialout 4, 72 Nov  7 14:04 /dev/ttyS8

crw-rw---- 1 root dialout 4, 73 Nov  7 14:04 /dev/ttyS9

如果我手动将 组更改为/dev/ttyS0dialout它会被改回来。我没有对默认的 udev 规则进行任何更改,所以我看不出这个问题从何而来。

真挚地,

段错误重载

答案1

/etc/init这个问题的答案是为 Xen 所需的/dev/hvc0串行控制台提供一个“入口” 。

这个怎么做?

以 root 身份或使用 sudo 命令打开终端并切换到 /etc/init 目录。复制 tty1 的文件,即/etc/init/tty1.conf。然后在您喜欢的文本编辑器中/etc/init/hvc0.conf编辑新文件,将所有出现的 替换为。下次使用 Xen 启动时,您的串行终端现在应该可以正常工作。您应该能够登录并使用命令行,或者通过点击3 次切换到与虚拟机管理程序的直接串行通信。hvc0tty1hvc0dom0Ctrl-a

真挚地,

段错误重载

答案2

我遇到了这个问题。就我而言,从 /etc/init/ 中删除 ttyS0.conf 并重新启动即可解决问题。

我使用了其他人提供的一堆不同的 ubuntu VM 映像。在我的所有其他 VM 上,ttyS0.conf 都不存在。我不确定它是如何放在我的“问题”VM 上的

相关内容