Hide Forgot
Description of problem: I have a kvm guest (named i386_kvm) with 2 serial ports (ttyS0, ttyS1). Plymouth is interfering with the latter, making it impossible to log in via "virsh console". 1. KVM guest ------------- Relevant part of guest XML: <serial type="file"> <source path="/mnt/tests/i386_kvm_console.log"/> <target port="0"/> </serial> <serial type="pty"> <target port="1"/> </serial><console type="file"> <source path="/mnt/tests/i386_kvm_console.log"/> <target type="serial" port="0"/> </console> i386_kvm # cat /proc/cmdline ro root=/dev/mapper/vg_dhcp4798-lv_root console=ttyS0,115200 console=ttyS1,115200 rd_NO_LUKS LANG=en_US.UTF-8 rd_LVM_LV=vg_dhcp4798/lv_swap rd_LVM_LV=vg_dhcp4798/lv_root rd_NO_MD SYSFONT=latarcyrheb-sun16 console=ttyS0 KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM i386_kvm # cat /etc/init/ttyS1.conf # start ttyS1 start on runlevel [2345] stop on runlevel [S016] instance ttyS1 respawn pre-start exec /sbin/securetty ttyS1 exec /sbin/agetty /dev/ttyS1 115200 vt100-nav Plymouth has ttyS1 opened and is activately reading from it, which is presumably the reason why the whole input is not reaching getty: i386_kvm # ps afx | grep plymouth 110 ? S 0:00 /bin/plymouthd --attach-to-session 1884 pts/1 S+ 0:00 \_ grep plymouth i386_kvm # ls -la /proc/110/fd total 0 dr-x------. 2 root root 0 Dec 15 08:31 . dr-xr-xr-x. 8 root root 0 Dec 15 03:15 .. lrwx------. 1 root root 64 Dec 15 08:31 0 -> /dev/tty1 lrwx------. 1 root root 64 Dec 15 08:31 1 -> /dev/tty1 lrwx------. 1 root root 64 Dec 15 08:31 10 -> /dev/ttyS0 lrwx------. 1 root root 64 Dec 15 08:31 11 -> /dev/ttyS0 l-wx------. 1 root root 64 Dec 15 08:31 12 -> /var/log/boot.log lrwx------. 1 root root 64 Dec 15 08:31 2 -> /dev/tty1 lrwx------. 1 root root 64 Dec 15 08:31 3 -> [eventpoll] lr-x------. 1 root root 64 Dec 15 08:31 4 -> pipe:[5891] l-wx------. 1 root root 64 Dec 15 08:31 5 -> pipe:[5891] lrwx------. 1 root root 64 Dec 15 08:31 6 -> /dev/ptmx lrwx------. 1 root root 64 Dec 15 08:31 8 -> socket:[5896] lrwx------. 1 root root 64 Dec 15 08:31 9 -> /dev/ttyS1 i386_kvm # strace -f -t -p 110 Process 110 attached - interrupt to quit 08:33:15 clock_gettime(CLOCK_MONOTONIC, {1096, 378922781}) = 0 08:33:15 epoll_wait(3, {{EPOLLIN, {u32=134944952, u64=134944952}}}, 4, -1) = 1 08:33:41 clock_gettime(CLOCK_MONOTONIC, {1122, 159190199}) = 0 08:33:41 poll([{fd=9, events=POLLIN|POLLPRI}], 1, 10) = 1 ([{fd=9, revents=POLLIN}]) 08:33:41 read(9, "o", 1024) = 1 08:33:42 epoll_wait(3, {{EPOLLIN, {u32=134944952, u64=134944952}}}, 4, -1) = 1 08:33:42 clock_gettime(CLOCK_MONOTONIC, {1123, 569203553}) = 0 08:33:42 poll([{fd=9, events=POLLIN|POLLPRI}], 1, 10) = 1 ([{fd=9, revents=POLLIN}]) 08:33:42 read(9, "t", 1024) = 1 08:33:43 epoll_wait(3, {{EPOLLIN, {u32=134944952, u64=134944952}}}, 4, -1) = 1 08:33:44 clock_gettime(CLOCK_MONOTONIC, {1125, 443173055}) = 0 08:33:44 poll([{fd=9, events=POLLIN|POLLPRI}], 1, 10) = 1 ([{fd=9, revents=POLLIN}]) 08:33:44 read(9, "", 1024) = 0 08:33:44 epoll_wait(3, {{EPOLLIN|EPOLLERR|EPOLLHUP, {u32=134944952, u64=134944952}}}, 4, -1) = 1 08:33:44 clock_gettime(CLOCK_MONOTONIC, {1125, 454963448}) = 0 08:33:44 ioctl(9, FIONREAD, [0]) = -1 EIO (Input/output error) 08:33:44 open("/dev/ttyS1", O_RDWR|O_NOCTTY) = 7 08:33:44 epoll_ctl(3, EPOLL_CTL_ADD, 7, {EPOLLERR|EPOLLHUP, {u32=134951872, u64=134951872}}) = 0 08:33:44 epoll_ctl(3, EPOLL_CTL_MOD, 7, {EPOLLERR|EPOLLHUP, {u32=134951872, u64=134951872}}) = 0 08:33:44 fstat64(7, {st_mode=S_IFCHR|0620, st_rdev=makedev(4, 65), ...}) = 0 08:33:44 ioctl(7, SNDCTL_TMR_TIMEBASE or TCGETS, {B9600 opost -isig -icanon -echo ...}) = 0 08:33:44 ioctl(7, SNDCTL_TMR_START or TCSETS, {B9600 opost -isig -icanon -echo ...}) = 0 08:33:44 ioctl(7, SNDCTL_TMR_TIMEBASE or TCGETS, {B9600 opost -isig -icanon -echo ...}) = 0 08:33:44 epoll_ctl(3, EPOLL_CTL_MOD, 7, {EPOLLIN|EPOLLERR|EPOLLHUP, {u32=134951872, u64=134951872}}) = 0 08:33:44 epoll_ctl(3, EPOLL_CTL_DEL, 9, NULL) = 0 08:33:44 epoll_wait(3, ^C <unfinished ...> Process 110 detached 2. Host -------- host # virsh console --devname serial1 i386_kvm Connected to domain i386_kvm Escape character is ^] Red Hat Enterprise Linux Server release 6.5 (Santiago) Kernel 2.6.32-435.el6.i686 on an i686 dhcp47-98 login: ro Password: PROBLEM -------- "root" was entered, but only "ro" reached getty. Workaround ----------- Moving plymouth away makes the issue go away and I can log in to guest. i386_kvm # mv /sbin/plymouthd /sbin/disable_plymouthd i386_kvm # dracut -f i386_kvm # reboot host # virsh console --devname serial1 i386_kvm Connected to domain i386_kvm Escape character is ^] ... dhcp47 login: root Password: # stty speed 115200 baud; line = 0; -brkint ixoff -imaxbel -iexten -echoctl Version-Release number of selected component (if applicable): plymouth-0.8.3-27.el6.x86_64 How reproducible: 100% Steps to Reproduce: 1. install kvm guest with 2 serial ports 2. open virsh console to ttyS1 3. try to log in Actual results: unable to log in, input is getting lost Expected results: login works on ttyS1 Additional info:
I assume the problem here is that plymouth didn't stop. Looking at /etc/init/* I see a path where it should stop when prefdm starts. prefdm however starts only when all runlevel 5 services complete: start on stopped rc RUNLEVEL=5 This wasn't the case in my setup, one init script (rhts-compat) was running long enough for me to log in over ssh and run "virsh console".
Red Hat Enterprise Linux 6 is in the Production 3 Phase. During the Production 3 Phase, Critical impact Security Advisories (RHSAs) and selected Urgent Priority Bug Fix Advisories (RHBAs) may be released as they become available. The official life cycle policy can be reviewed here: http://redhat.com/rhel/lifecycle This issue does not meet the inclusion criteria for the Production 3 Phase and will be marked as CLOSED/WONTFIX. If this remains a critical requirement, please contact Red Hat Customer Support to request a re-evaluation of the issue, citing a clear business justification. Note that a strong business justification will be required for re-evaluation. Red Hat Customer Support can be contacted via the Red Hat Customer Portal at the following URL: https://access.redhat.com/