我在多台主机上都遇到了这个问题,所以特定的硬件不是问题。
在默认配置下,裸机 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/ttyS0
,dialout
它会被改回来。我没有对默认的 udev 规则进行任何更改,所以我看不出这个问题从何而来。
真挚地,
段错误重载
答案1
/etc/init
这个问题的答案是为 Xen 所需的/dev/hvc0
串行控制台提供一个“入口” 。
这个怎么做?
以 root 身份或使用 sudo 命令打开终端并切换到 /etc/init 目录。复制 tty1 的文件,即/etc/init/tty1.conf
。然后在您喜欢的文本编辑器中/etc/init/hvc0.conf
编辑新文件,将所有出现的 替换为。下次使用 Xen 启动时,您的串行终端现在应该可以正常工作。您应该能够登录并使用命令行,或者通过点击3 次切换到与虚拟机管理程序的直接串行通信。hvc0
tty1
hvc0
dom0
Ctrl-a
真挚地,
段错误重载
答案2
我遇到了这个问题。就我而言,从 /etc/init/ 中删除 ttyS0.conf 并重新启动即可解决问题。
我使用了其他人提供的一堆不同的 ubuntu VM 映像。在我的所有其他 VM 上,ttyS0.conf 都不存在。我不确定它是如何放在我的“问题”VM 上的