2011-03-25 18:18:05

by Jeremy Jackson

[permalink] [raw]
Subject: signal to PID 1 from serial console like KeyboardRequest or CAD

Hi,

Sent to linux-console with no reply for over a week...

I ran into a problem recently on a Linux server with a remote serial
console. /sbin/init (actually Upstart) was in a state where nothing
(useful) was running. I had to power cycle the machine to get back to
the boot prompt. This has the side-effect of triggering raid rebuilds.

It would be nice to have what Ctrl-Alt-Del does at the VGA console with
PS/2 or USB keyboard. This sends a SIGINT to PID 1, and most distros
have this set to do "shutdown -r now" which attempts a clean reboot.

Once upon a time there was KeyboardRequest, which would send a SIGWINCH
to PID 1 (when pressing Alt-UP_arrow?). I don't see any sign of this
feature in Linux 2.6.32 though.

Looking at the Sysrq handlers in the kernel I don't see any keystrokes
that send SIGINT to PID 1 either.

So, I'm wondering if it makes sense to add a Sysrq key to send a signal
to PID1 ?

--
Coplanar Networks
http://www.coplanar.net
(519)489-4903


2011-03-31 19:57:10

by Randy Dunlap

[permalink] [raw]
Subject: Re: signal to PID 1 from serial console like KeyboardRequest or CAD

On Fri, 25 Mar 2011 13:41:40 -0400 Jeremy Jackson wrote:

> Hi,
>
> Sent to linux-console with no reply for over a week...
>
> I ran into a problem recently on a Linux server with a remote serial
> console. /sbin/init (actually Upstart) was in a state where nothing
> (useful) was running. I had to power cycle the machine to get back to
> the boot prompt. This has the side-effect of triggering raid rebuilds.
>
> It would be nice to have what Ctrl-Alt-Del does at the VGA console with
> PS/2 or USB keyboard. This sends a SIGINT to PID 1, and most distros
> have this set to do "shutdown -r now" which attempts a clean reboot.

so C_A_D works at console via PS/2 or USB keyboard, but not on a remote
serial console? Could it be an issue with whatever remote/serial software
you are using?

> Once upon a time there was KeyboardRequest, which would send a SIGWINCH
> to PID 1 (when pressing Alt-UP_arrow?). I don't see any sign of this
> feature in Linux 2.6.32 though.

I couldn't find it in 2.4.37 either.

Can 'loadkeys' help you any?

> Looking at the Sysrq handlers in the kernel I don't see any keystrokes
> that send SIGINT to PID 1 either.
>
> So, I'm wondering if it makes sense to add a Sysrq key to send a signal
> to PID1 ?

Dmitry, any ideas?


---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***

2011-04-01 05:38:05

by Dmitry Torokhov

[permalink] [raw]
Subject: Re: signal to PID 1 from serial console like KeyboardRequest or CAD

On Thu, Mar 31, 2011 at 12:57:06PM -0700, Randy Dunlap wrote:
> On Fri, 25 Mar 2011 13:41:40 -0400 Jeremy Jackson wrote:
>
> > Hi,
> >
> > Sent to linux-console with no reply for over a week...
> >
> > I ran into a problem recently on a Linux server with a remote serial
> > console. /sbin/init (actually Upstart) was in a state where nothing
> > (useful) was running. I had to power cycle the machine to get back to
> > the boot prompt. This has the side-effect of triggering raid rebuilds.
> >
> > It would be nice to have what Ctrl-Alt-Del does at the VGA console with
> > PS/2 or USB keyboard. This sends a SIGINT to PID 1, and most distros
> > have this set to do "shutdown -r now" which attempts a clean reboot.
>
> so C_A_D works at console via PS/2 or USB keyboard, but not on a remote
> serial console? Could it be an issue with whatever remote/serial software
> you are using?

I believe it is simply a matter of console keymap and assigning "boot"
value to the desired combination.

>
> > Once upon a time there was KeyboardRequest, which would send a SIGWINCH
> > to PID 1 (when pressing Alt-UP_arrow?). I don't see any sign of this
> > feature in Linux 2.6.32 though.
>
> I couldn't find it in 2.4.37 either.
>
> Can 'loadkeys' help you any?
>
> > Looking at the Sysrq handlers in the kernel I don't see any keystrokes
> > that send SIGINT to PID 1 either.
> >
> > So, I'm wondering if it makes sense to add a Sysrq key to send a signal
> > to PID1 ?
>
> Dmitry, any ideas?

We have SysRq bindings to unmount filesystems and reboot, isn't that
enough?

--
Dmitry

2011-04-01 15:39:45

by Jeremy Jackson

[permalink] [raw]
Subject: Re: signal to PID 1 from serial console like KeyboardRequest or CAD

On 04/01/2011 01:37 AM, Dmitry Torokhov wrote:
> On Thu, Mar 31, 2011 at 12:57:06PM -0700, Randy Dunlap wrote:
>> On Fri, 25 Mar 2011 13:41:40 -0400 Jeremy Jackson wrote:
>>
>>> Hi,
>>>
>>> Sent to linux-console with no reply for over a week...
>>>
>>> I ran into a problem recently on a Linux server with a remote serial
>>> console. /sbin/init (actually Upstart) was in a state where nothing
>>> (useful) was running. I had to power cycle the machine to get back to
>>> the boot prompt. This has the side-effect of triggering raid rebuilds.
>>>
>>> It would be nice to have what Ctrl-Alt-Del does at the VGA console with
>>> PS/2 or USB keyboard. This sends a SIGINT to PID 1, and most distros
>>> have this set to do "shutdown -r now" which attempts a clean reboot.
>>
>> so C_A_D works at console via PS/2 or USB keyboard, but not on a remote
>> serial console? Could it be an issue with whatever remote/serial software
>> you are using?
>
> I believe it is simply a matter of console keymap and assigning "boot"
> value to the desired combination.

The VGA console/keyboard isn't an issue here, C_A_D works great. The
problem is, that functionality isn't available when using *serial* console.

>>> Once upon a time there was KeyboardRequest, which would send a SIGWINCH
>>> to PID 1 (when pressing Alt-UP_arrow?). I don't see any sign of this
>>> feature in Linux 2.6.32 though.
>>
>> I couldn't find it in 2.4.37 either.
>>
>> Can 'loadkeys' help you any?
>>
>>> Looking at the Sysrq handlers in the kernel I don't see any keystrokes
>>> that send SIGINT to PID 1 either.
>>>
>>> So, I'm wondering if it makes sense to add a Sysrq key to send a signal
>>> to PID1 ?
>>
>> Dmitry, any ideas?
>
> We have SysRq bindings to unmount filesystems and reboot, isn't that
> enough?

Reboot isn't clean... it doesn't signal MD-raid to "unmount" does it?
SysRq powerOff does cleanly shutdown md-raid, but who will drive to the
datacenter to press the power button to turn it back on?

I guess there are two ways to achieve clean (md-raid) reboot when using
serial console... a new SysRq to reboot "clean", or a new SysRq to
signal init. Looking at ctrlaltdel(8), perhaps it could just one SysRq,
and let userspace (/sbin/init) configure it as needed.


--
Coplanar Networks
http://www.coplanar.net
(519)489-4903

2011-04-01 15:42:22

by Randy Dunlap

[permalink] [raw]
Subject: Re: signal to PID 1 from serial console like KeyboardRequest or CAD

On Fri, 01 Apr 2011 11:39:28 -0400 Jeremy Jackson wrote:

> On 04/01/2011 01:37 AM, Dmitry Torokhov wrote:
> > On Thu, Mar 31, 2011 at 12:57:06PM -0700, Randy Dunlap wrote:
> >> On Fri, 25 Mar 2011 13:41:40 -0400 Jeremy Jackson wrote:
> >>
> >>> Hi,
> >>>
> >>> Sent to linux-console with no reply for over a week...
> >>>
> >>> I ran into a problem recently on a Linux server with a remote serial
> >>> console. /sbin/init (actually Upstart) was in a state where nothing
> >>> (useful) was running. I had to power cycle the machine to get back to
> >>> the boot prompt. This has the side-effect of triggering raid rebuilds.
> >>>
> >>> It would be nice to have what Ctrl-Alt-Del does at the VGA console with
> >>> PS/2 or USB keyboard. This sends a SIGINT to PID 1, and most distros
> >>> have this set to do "shutdown -r now" which attempts a clean reboot.
> >>
> >> so C_A_D works at console via PS/2 or USB keyboard, but not on a remote
> >> serial console? Could it be an issue with whatever remote/serial software
> >> you are using?
> >
> > I believe it is simply a matter of console keymap and assigning "boot"
> > value to the desired combination.
>
> The VGA console/keyboard isn't an issue here, C_A_D works great. The
> problem is, that functionality isn't available when using *serial* console.

That's why I asked whether it could be an issue with the serial interface
software. E.g., minicom handles/processes certain keystrokes, other apps do things
differently, etc...


> >>> Once upon a time there was KeyboardRequest, which would send a SIGWINCH
> >>> to PID 1 (when pressing Alt-UP_arrow?). I don't see any sign of this
> >>> feature in Linux 2.6.32 though.
> >>
> >> I couldn't find it in 2.4.37 either.
> >>
> >> Can 'loadkeys' help you any?
> >>
> >>> Looking at the Sysrq handlers in the kernel I don't see any keystrokes
> >>> that send SIGINT to PID 1 either.
> >>>
> >>> So, I'm wondering if it makes sense to add a Sysrq key to send a signal
> >>> to PID1 ?
> >>
> >> Dmitry, any ideas?
> >
> > We have SysRq bindings to unmount filesystems and reboot, isn't that
> > enough?
>
> Reboot isn't clean... it doesn't signal MD-raid to "unmount" does it?
> SysRq powerOff does cleanly shutdown md-raid, but who will drive to the
> datacenter to press the power button to turn it back on?
>
> I guess there are two ways to achieve clean (md-raid) reboot when using
> serial console... a new SysRq to reboot "clean", or a new SysRq to
> signal init. Looking at ctrlaltdel(8), perhaps it could just one SysRq,
> and let userspace (/sbin/init) configure it as needed.
>
>
> --
> Coplanar Networks
> http://www.coplanar.net
> (519)489-4903
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/


---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***

2011-04-01 15:47:25

by Jeremy Jackson

[permalink] [raw]
Subject: Re: signal to PID 1 from serial console like KeyboardRequest or CAD

On 04/01/2011 11:42 AM, Randy Dunlap wrote:
> On Fri, 01 Apr 2011 11:39:28 -0400 Jeremy Jackson wrote:
>
>> On 04/01/2011 01:37 AM, Dmitry Torokhov wrote:
>>> On Thu, Mar 31, 2011 at 12:57:06PM -0700, Randy Dunlap wrote:
>>>> On Fri, 25 Mar 2011 13:41:40 -0400 Jeremy Jackson wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> Sent to linux-console with no reply for over a week...
>>>>>
>>>>> I ran into a problem recently on a Linux server with a remote serial
>>>>> console. /sbin/init (actually Upstart) was in a state where nothing
>>>>> (useful) was running. I had to power cycle the machine to get back to
>>>>> the boot prompt. This has the side-effect of triggering raid rebuilds.
>>>>>
>>>>> It would be nice to have what Ctrl-Alt-Del does at the VGA console with
>>>>> PS/2 or USB keyboard. This sends a SIGINT to PID 1, and most distros
>>>>> have this set to do "shutdown -r now" which attempts a clean reboot.
>>>>
>>>> so C_A_D works at console via PS/2 or USB keyboard, but not on a remote
>>>> serial console? Could it be an issue with whatever remote/serial software
>>>> you are using?
>>>
>>> I believe it is simply a matter of console keymap and assigning "boot"
>>> value to the desired combination.
>>
>> The VGA console/keyboard isn't an issue here, C_A_D works great. The
>> problem is, that functionality isn't available when using *serial* console.
>
> That's why I asked whether it could be an issue with the serial interface
> software. E.g., minicom handles/processes certain keystrokes, other apps do things
> differently, etc...

OK I guess I should clarify... when using Linux serial console, you can
send BREAK <letter> to use SysRq functions. In minicom, META-F sends
break. This works fine for all the existing functions linux offers, r =
reboot immediate, i = kill all tasks, etc. But, there is no function
available to reboot *clean*, or to signal PID 1 (/sbin/init) to do same.
So, minicom is working/configured properly, Linux just doesn't offer a
feature similar to C_A_D via serial.

--
Coplanar Networks
http://www.coplanar.net
(519)489-4903

2011-04-01 15:59:48

by Dmitry Torokhov

[permalink] [raw]
Subject: Re: signal to PID 1 from serial console like KeyboardRequest or CAD

On Fri, Apr 01, 2011 at 11:47:10AM -0400, Jeremy Jackson wrote:
> On 04/01/2011 11:42 AM, Randy Dunlap wrote:
> >On Fri, 01 Apr 2011 11:39:28 -0400 Jeremy Jackson wrote:
> >
> >>On 04/01/2011 01:37 AM, Dmitry Torokhov wrote:
> >>>On Thu, Mar 31, 2011 at 12:57:06PM -0700, Randy Dunlap wrote:
> >>>>On Fri, 25 Mar 2011 13:41:40 -0400 Jeremy Jackson wrote:
> >>>>
> >>>>>Hi,
> >>>>>
> >>>>>Sent to linux-console with no reply for over a week...
> >>>>>
> >>>>>I ran into a problem recently on a Linux server with a remote serial
> >>>>>console. /sbin/init (actually Upstart) was in a state where nothing
> >>>>>(useful) was running. I had to power cycle the machine to get back to
> >>>>>the boot prompt. This has the side-effect of triggering raid rebuilds.
> >>>>>
> >>>>>It would be nice to have what Ctrl-Alt-Del does at the VGA console with
> >>>>>PS/2 or USB keyboard. This sends a SIGINT to PID 1, and most distros
> >>>>>have this set to do "shutdown -r now" which attempts a clean reboot.
> >>>>
> >>>>so C_A_D works at console via PS/2 or USB keyboard, but not on a remote
> >>>>serial console? Could it be an issue with whatever remote/serial software
> >>>>you are using?
> >>>
> >>>I believe it is simply a matter of console keymap and assigning "boot"
> >>>value to the desired combination.
> >>
> >>The VGA console/keyboard isn't an issue here, C_A_D works great. The
> >>problem is, that functionality isn't available when using *serial* console.
> >
> >That's why I asked whether it could be an issue with the serial interface
> >software. E.g., minicom handles/processes certain keystrokes, other apps do things
> >differently, etc...
>
> OK I guess I should clarify... when using Linux serial console, you
> can send BREAK <letter> to use SysRq functions.

Ah, right, we hardwire BREAK to SysRq when using serial console...

> In minicom, META-F
> sends break. This works fine for all the existing functions linux
> offers, r = reboot immediate, i = kill all tasks, etc. But, there
> is no function available to reboot *clean*, or to signal PID 1
> (/sbin/init) to do same. So, minicom is working/configured
> properly, Linux just doesn't offer a feature similar to C_A_D via
> serial.

SysRQ+REISUB should do it I think.

--
Dmitry