Package: systemd Version: 232-25+deb9u1 Severity: normal Dear Maintainer,
root@debian:/home/testing# uname -a Linux debian 4.9.0-4-amd64 #1 SMP Debian 4.9.51-1 (2017-09-28) x86_64 GNU/Linux root@debian:/home/testing# systemctl --version systemd 232 +PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN root@debian:/home/testing# update-grub --version grub-mkconfig (GRUB) 2.02~beta3-5 It seems only the first console= kernel parameter's baud rate is set once the system starts. I'm not entirely sure this is a systemd issue but at the very least grub passes the correct kernel parameters. I have a device with one physical serial port but the system recognizes two working ports. ttyS0 is the physical serial port that I can see output from. ttyS1 seems to be a virtual port with no physical way to access. ttyS3 and ttyS4 will throw errors if queried with stty. If I change the order of the console= entries in the grub config only the first serial entry has its baud rate automatically set as desired. If grub conf has this: GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS1,115200n8 console=ttyS0,38400n8" ttyS0 won't work, but ttyS1 will be configured correctly. ttyS0 will have 9600 baud with 0 rows and 0 columns. However grub conf has this: GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0,38400n8 console=ttyS1,115200n8" ttyS0 will work and have a baud rate of 38400. ttyS1 will have 9600 baud with 0 rows and 0 columns. I was expecting them to both be configured as specified in the kernel parameters. This came about because I was trying to enable multiple different ttyS serial consoles on boot for portability. I'd like to swap the same hard drive and have console access regardless of the hardware it's in. But on different devices the working port is assigned to a different ttyS* number. More details below: ####### MORE INFO ############ ############################### ### WHEN ttyS0 DOESN'T WORK ### ############################### root@debian:/home/testing# cat /etc/default/grub # If you change this file, run 'update-grub' afterwards to update # /boot/grub/grub.cfg. # For full documentation of the options in this file, see: # info -f grub -n 'Simple configuration' GRUB_DEFAULT=0 GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS1,115200n8 console=ttyS0,38400n8" GRUB_CMDLINE_LINUX="" # Uncomment to enable BadRAM filtering, modify to suit your needs # This works with Linux (no patch required) and with any kernel that obtains # the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...) #GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef" # Uncomment to disable graphical terminal (grub-pc only) #GRUB_TERMINAL=console # The resolution used on graphical terminal # note that you can use only modes which your graphic card supports via VBE # you can see them in real GRUB with the command `vbeinfo' #GRUB_GFXMODE=640x480 # Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux #GRUB_DISABLE_LINUX_UUID=true # Uncomment to disable generation of recovery mode menu entries #GRUB_DISABLE_RECOVERY="true" # Uncomment to get a beep at grub start #GRUB_INIT_TUNE="480 440 1" GRUB_TERMINAL=serial GRUB_SERIAL_COMMAND="serial --unit=0 --speed=38400 --word=8 --parity=no --stop=1" root@debian:/home/testing# update-grub Generating grub configuration file ... Found linux image: /boot/vmlinuz-4.9.0-4-amd64 Found initrd image: /boot/initrd.img-4.9.0-4-amd64 grub-probe: error: cannot find a GRUB drive for /dev/sdb1. Check your device.map. done root@debian:/home/testing# # reboot Loading Linux 4.9.0-4-amd64 ... Loading initial ramdisk ... # console output on 38400 vanishes at this point. I can try 9600, 38400, and # 115200 on ttyS0 and none of them show anything, but the system boots and I # can login through ssh. root@debian:/home/testing# stty --all -F /dev/ttyS0 speed 9600 baud; rows 0; columns 0; line = 0; intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0; -parenb -parodd -cmspar cs8 hupcl -cstopb cread clocal -crtscts -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8 opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho -extproc root@debian:/home/testing# stty --all -F /dev/ttyS1 speed 115200 baud; rows 24; columns 80; line = 0; intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0; -parenb -parodd -cmspar cs8 hupcl -cstopb cread clocal -crtscts -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany -imaxbel iutf8 opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 -isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop -echoprt -echoctl -echoke -flusho -extproc root@debian:/home/testing# ######################## ### WHEN ttyS0 WORKS ### ######################## root@debian:/home/testing# cat /etc/default/grub # If you change this file, run 'update-grub' afterwards to update # /boot/grub/grub.cfg. # For full documentation of the options in this file, see: # info -f grub -n 'Simple configuration' GRUB_DEFAULT=0 GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0,38400n8 console=ttyS1,115200n8" GRUB_CMDLINE_LINUX="" # Uncomment to enable BadRAM filtering, modify to suit your needs # This works with Linux (no patch required) and with any kernel that obtains # the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...) #GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef" # Uncomment to disable graphical terminal (grub-pc only) #GRUB_TERMINAL=console # The resolution used on graphical terminal # note that you can use only modes which your graphic card supports via VBE # you can see them in real GRUB with the command `vbeinfo' #GRUB_GFXMODE=640x480 # Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux #GRUB_DISABLE_LINUX_UUID=true # Uncomment to disable generation of recovery mode menu entries #GRUB_DISABLE_RECOVERY="true" # Uncomment to get a beep at grub start #GRUB_INIT_TUNE="480 440 1" GRUB_TERMINAL=serial GRUB_SERIAL_COMMAND="serial --unit=0 --speed=38400 --word=8 --parity=no --stop=1" root@debian:/home/testing# update-grub Generating grub configuration file ... Found linux image: /boot/vmlinuz-4.9.0-4-amd64 Found initrd image: /boot/initrd.img-4.9.0-4-amd64 grub-probe: error: cannot find a GRUB drive for /dev/sdb1. Check your device.map. done root@debian:/home/testing# reboot # in serial console Loading Linux 4.9.0-4-amd64 ... Loading initial ramdisk ... [ 0.000000] Linux version 4.9.0-4-amd64 (debian-ker...@lists.debian.org) (gcc version 6.3.0 20170516 (Debian 6.3.0-18) ) #1 SMP Debian 4.9.51-1 (2017-09-28) [ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.9.0-4-amd64 root=UUID=50 b98bc5-fd31-4207-86f5-85dbab4262fb ro console=tty1 console=ttyS0,38400n8 console =ttyS1,115200n8 [ 0.000000] x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point regi sters' [ 0.000000] x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers' ... ... [ 0.000000] Policy zone: Normal [ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-4.9.0-4-amd64 root= UUID=50b98bc5-fd31-4207-86f5-85dbab4262fb ro console=tty1 console=ttyS0,38400n8 console=ttyS1,115200n8 [ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes) [ 0.000000] Memory: 8128984K/8359916K available (6196K kernel code, 1137K rwd ata, 2856K rodata, 1396K init, 688K bss, 230932K reserved, 0K cma-reserved) [ 0.000000] Hierarchical RCU implementation. [ 0.000000] Build-time adjustment of leaf fanout to 64. [ 0.000000] RCU restricting CPUs from NR_CPUS=512 to nr_cpu_ids=4. [ 0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=64, nr_cpu_ids=4 [ 0.000000] NR_IRQS:33024 nr_irqs:456 16 [ 0.000000] Console: colour dummy device 80x25 [ 0.000000] console [tty1] enabled [ 0.000000] console [ttyS0] enabled [ 0.000000] clocksource: hpet: mask: 0xffffffff max_cycles: 0xffffffff, max_i dle_ns: 79635855245 ns ... ... [ 5.791632] pstore: Registered erst as persistent store backend [ 5.809638] GHES: APEI firmware first mode is enabled by APEI bit and WHEA _O SC. [ 5.831881] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled [ 5.871208] 00:04: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 1655 0A [ 5.913687] 00:05: ttyS1 at I/O 0x2f8 (irq = 3, base_baud = 115200) is a 1655 0A [ 5.936051] Linux agpgart interface v0.103 ... ... [ 14.749195] ip_tables: (C) 2000-2006 Netfilter Core Team [ 14.771821] systemd[1]: systemd 232 running in system mode. (+PAM +AUDIT +SEL INUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL + XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN) [ 14.825930] systemd[1]: Detected architecture x86-64. [ 14.843409] systemd[1]: Set hostname to <debian>. [ 14.904974] systemd[1]: Listening on Journal Socket. [ 14.920015] systemd[1]: Reached target Remote File Systems. [ 14.937061] systemd[1]: Set up automount Arbitrary Executable File Formats Fi le System Automount Point. [ 14.965302] systemd[1]: Listening on Syslog Socket. [ 14.980013] systemd[1]: Listening on Journal Socket (/dev/log). [ 14.997902] systemd[1]: Listening on Journal Audit Socket. [ 15.014463] systemd[1]: Started Dispatch Password Requests to Console Directo ry Watch. [ 15.063688] EXT4-fs (sda1): re-mounted. Opts: errors=remount-ro [ 15.137280] systemd-journald[221]: Received request to flush runtime journal from PID 1 [ 15.175176] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/inp ut0 ... ... Debian GNU/Linux 9 debian ttyS0 debian login: [ 17.117398] igb 0000:02:00.0 enp2s0: igb: enp2s0 NIC Link is Up 100 Mbps Full Duplex, Flow Control: RX [ 17.145470] IPv6: ADDRCONF(NETDEV_CHANGE): enp2s0: link becomes ready [ 137.469360] random: crng init done Debian GNU/Linux 9 debian ttyS0 debian login: root Password: Last login: Wed Nov 29 12:01:07 EST 2017 on ttyS0 Linux debian 4.9.0-4-amd64 #1 SMP Debian 4.9.51-1 (2017-09-28) x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. # logged in through ssh root@debian:/home/testing# stty --all -F /dev/ttyS0 speed 38400 baud; rows 24; columns 80; line = 0; intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = <undef>; discard = ^O; min = 1; time = 0; -parenb -parodd -cmspar cs8 hupcl -cstopb cread clocal -crtscts -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl ixon ixoff -iuclc -ixany -imaxbel iutf8 opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 isig -icanon -iexten -echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho -extproc root@debian:/home/testing# stty --all -F /dev/ttyS1 speed 9600 baud; rows 0; columns 0; line = 0; intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0; -parenb -parodd -cmspar cs8 hupcl -cstopb cread clocal -crtscts -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8 opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho -extproc root@debian:/home/testing# ########## END OF MORE INFO ######### I was led to believe systemd might be responsible based info from the following sites: https://www.freedesktop.org/software/systemd/man/systemd-getty-generator.html# http://0pointer.de/blog/projects/serial-console.html I don't know much about systemd but it seems it is mostly responsible for configuring serial consoles based on the kernel parameters. -- Package-specific info: -- System Information: Debian Release: 9.2 APT prefers stable-updates APT policy: (500, 'stable-updates'), (500, 'stable') Architecture: amd64 (x86_64) Kernel: Linux 4.9.0-4-amd64 (SMP w/4 CPU cores) Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE=en_US.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system) Versions of packages systemd depends on: ii adduser 3.115 ii libacl1 2.2.52-3+b1 ii libapparmor1 2.11.0-3 ii libaudit1 1:2.6.7-2 ii libblkid1 2.29.2-1 ii libc6 2.24-11+deb9u1 ii libcap2 1:2.25-1 ii libcryptsetup4 2:1.7.3-4 ii libgcrypt20 1.7.6-2+deb9u2 ii libgpg-error0 1.26-2 ii libidn11 1.33-1 ii libip4tc0 1.6.0+snapshot20161117-6 ii libkmod2 23-2 ii liblz4-1 0.0~r131-2+b1 ii liblzma5 5.2.2-1.2+b1 ii libmount1 2.29.2-1 ii libpam0g 1.1.8-3.6 ii libseccomp2 2.3.1-2.1 ii libselinux1 2.6-3+b3 ii libsystemd0 232-25+deb9u1 ii mount 2.29.2-1 ii procps 2:3.3.12-3 ii util-linux 2.29.2-1 Versions of packages systemd recommends: ii dbus 1.10.22-0+deb9u1 ii libpam-systemd 232-25+deb9u1 Versions of packages systemd suggests: pn policykit-1 <none> pn systemd-container <none> pn systemd-ui <none> Versions of packages systemd is related to: pn dracut <none> ii initramfs-tools 0.130 ii udev 232-25+deb9u1 -- no debconf information