A surprise about Linux serial consoles

December 10, 2007

Here is a surprise I just discovered about magic SysRq and serial consoles: in order to have a serial console respond to magic SysRq, you need something talking to it. If your serial console is /dev/console, I believe that this is automatic; however, if it is not (if you have hooked it up to debug system lockups in X, for example, as a not entirely hypothetical example), you need to run a getty or something on the serial port in order to have the kernel notice magic SysRq sequences.

If you don't, what happens is relatively weird. Instead of just ignoring the magic SysRq sequences outright, the kernel seems to buffer them until something opens the serial port, at which point they all suddenly take effect. And if you stop your getty process, things go back to sleep until you restart it.

(I tried to follow the code paths through the kernel to figure out what was really going on, but my knowledge of Linux kernel internals is not deep enough to be up to the task.)

Unfortunately, all this didn't do me much good; while the serial console did capture a kernel panic, it was the sort where the kernel is in a really bad state and magic SysRq doesn't work afterwards, so I suspect that I have reappearing hardware issues, hopefully heat and cooling related (they would be cheaper to fix than a broken motherboard).

Written on 10 December 2007.
« I don't like smooth scrolling
Implicit generalized open()'s are dangerous »

Page tools: View Source, Add Comment.
Login: Password:
Atom Syndication: Recent Comments.

Last modified: Mon Dec 10 22:47:08 2007
This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.