O Ubuntu Server 12 não gerou um serial ttyS0 quando rodando em Xen

2

Eu tenho esse problema em mais de um host, portanto, o hardware específico não é um problema.

O bare metal Ubuntu 12 não está criando um processo de login na única porta serial, na configuração padrão. A porta serial funciona corretamente com o firmware. Funciona corretamente com o Grub2. Eu conectei mesmo a linha serial a 2 caixas externas diferentes do cliente, assim o problema não é nem o hardware nem o cliente remoto.

Quando finalmente inicializado, o sistema falha ao criar o processo de login.

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:~# 

Eu tentei colocar um arquivo ttyS0.conf em / etc / initab, que resolve o problema bare-metal, mas ainda não consigo fazer a porta serial funcionar ao inicializar o Ubuntu em cima do Xen, como domínio 0. Minha saída de linha serial se parece com isso, ao inicializar o 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

Neste ponto, a linha serial não está mais conectada a um processo. O próprio Xen está funcionando bem. Dmesg me dá uma longa lista de

[  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!

o que não é surpresa, porque vejo

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

Se eu alterar manualmente o grupo de /dev/ttyS0 para dialout , ele será alterado novamente. Eu não fiz alterações nas regras padrão do udev, então não consigo ver de onde este problema está vindo.

Atenciosamente,

Segfaultreloaded

    
por segfaultreloaded 07.11.2012 / 20:13

2 respostas

5

A resposta para este problema é fornecer uma "entrada" em /etc/init para o console serial /dev/hvc0 requerido pelo Xen.

Como fazer isso?

Como root ou usando comandos sudo, abra um terminal e mude para o diretório / etc / init. Copie o arquivo para tty1, que é /etc/init/tty1.conf to /etc/init/hvc0.conf . Em seguida, edite o novo arquivo hvc0 em seu editor de texto favorito, substituindo todas as ocorrências de tty1 por hvc0 . Na próxima vez que você inicializar usando o Xen, seu terminal serial deverá funcionar corretamente. Você deve ser capaz de efetuar login no dom0 e usar a linha de comando, ou pressionando Ctrl-a 3 vezes, alternar para a comunicação serial direta com o hipervisor.

Atenciosamente,

Segfaultreloaded

    
por segfaultreloaded 08.11.2012 / 18:27
0

Eu tive esse problema. No meu caso, a remoção de ttyS0.conf de / etc / init / e reinicialização corrigiu o problema para mim.

Eu uso um monte de diferentes imagens de VM do ubuntu que outras pessoas forneceram. Em todas as minhas outras VMs, o ttyS0.conf não estava presente. Não tenho certeza de como foi colocado lá na minha VM "problemática"

    
por Jonathan Cano 12.10.2016 / 23:02