[OpenWrt-Devel] [PATCH procd 7/8] Show the shutdown sequence on the active virtual terminal

John Crispin blogic at openwrt.org
Mon Oct 6 10:52:34 EDT 2014



On 06/10/2014 16:47, Stam, Michel [FINT] wrote:
> Hey John,
> 
> Ok, I will rework the patch to use that, then repost it.
> 
> Kind regards,
> 
> Michel Stam


i just had a look, we already have 2 pieces of code for reading values
from the cmdline. can you move the code from init/initd.c and
inittab.c to utils/utils.c and add a function such as
get_cmdline_val(char *name, char *out, int len); that setups up the
regex based on name and returns the value inside out. and then use it
all 3 places please.




> 
> -----Original Message----- From: openwrt-devel
> [mailto:openwrt-devel-bounces at lists.openwrt.org] On Behalf Of John
> Crispin Sent: Monday, October 06, 2014 16:46 PM To:
> openwrt-devel at lists.openwrt.org Subject: Re: [OpenWrt-Devel] [PATCH
> procd 7/8] Show the shutdown sequence on the active virtual
> terminal
> 
> 
> 
> On 06/10/2014 15:24, Stam, Michel [FINT] wrote:
>> Hello John,
>> 
>> We have a tty0 (our board happened to have an x86 processor), the
>>  situation is no different when you're running this with the
>> console port on the serial port of a router board. The presence
>> of the VT in the kernel determines if tty0 actually exists. So
>> point taken, I had not taken that into account.
>> 
>> My point is that i would like to see what is going on when I
>> issue a reboot on a device. It would be logical to see that on
>> whatever screen
> 
>> happens to be active at that moment. Is it acceptable for you if
>> I try and open /dev/tty0 if available, or use /dev/console
>> otherwise?
>> 
>> Kind regards,
>> 
>> Michel Stam
> 
> 
> inside inittab.c we work out the value of console= on the kernels 
> cmdline and use the value as basis for setting up console. you
> could try to reuse that value to work out actual terminal that the
> messages should be printed to.
> 
> 
> 
> 
>> 
>> -----Original Message----- From: openwrt-devel
>> [mailto:openwrt-devel-bounces at lists.openwrt.org] On Behalf Of
>> John Crispin Sent: Friday, October 03, 2014 18:35 PM To:
>> openwrt-devel at lists.openwrt.org Subject: Re: [OpenWrt-Devel]
>> [PATCH procd 7/8] Show the shutdown sequence on the active
>> virtual terminal
>> 
>> see inline
>> 
>> On 02/10/2014 14:56, Michel Stam wrote:
>>> procd by default writes to /dev/console. When rebooting, this
>>> means that the terminal on which the reboot sequence was
>>> started will not see what is going on. This patch fixes that by
>>> reopening stdin, stdout
>> 
>>> and stderr to /dev/tty0 upon reboot.
>>> 
>>> Also, due to (probably) pivot-root, /proc/1/fd shows 1-3
>>> pointing to /console. This patch also fixes that.
>>> 
>>> Signed-off-by: Michel Stam <m.stam at fugro.nl> --- state.c | 13 
>>> +++++++++++++ 1 file changed, 13 insertions(+)
>>> 
>>> diff --git a/state.c b/state.c index e6c8712..2268de3 100644
>>> --- a/state.c +++ b/state.c @@ -12,7 +12,9 @@ * GNU General
>>> Public License
>> 
>>> for more details. */
>>> 
>>> +#include <fcntl.h> #include <sys/reboot.h> +#include
>>> <stdio.h> #include <stdlib.h> #include <unistd.h> #include
>>> <sys/types.h> @@ -37,6 +39,14 @@ enum { static int state =
>>> STATE_NONE; static int reboot_event;
>>> 
>>> +static void set_stdio( const char* tty ) +{ +	freopen( tty,
>> "r",
>>> stdin ); +	freopen( tty, "w", stdout ); +	freopen( tty, "w",
>> stderr
>>> ); +	fcntl(STDERR_FILENO, F_SETFL, fcntl(STDERR_FILENO,
>>> F_GETFL) | O_NONBLOCK); +} + static void state_enter(void) {
>>> char ubus_cmd[] = "/sbin/ubusd"; @@ -55,6 +65,7 @@ static void
>>> state_enter(void) LOG("- ubus -\n"); procd_connect_ubus();
>>> 
>>> +		set_stdio( "/dev/console" ); LOG("- init -\n");
>> service_init();
>>> service_start_early("ubus", ubus_cmd); @@ -71,6 +82,8 @@ static
>>> void state_enter(void) break;
>>> 
>>> case STATE_SHUTDOWN: +		/* Redirect output to the
>> current virtual
>>> terminal for the users' benefit */ +		set_stdio( "/dev/tty0"
>> );
>> 
>> tty0 is a virtual console on a desktop. routers don't have a
>> tty0. this would break all the routers
>> 
>> 
>> 
>>> LOG("- shutdown -\n"); procd_inittab_run("shutdown"); sync();
>>> 
>> _______________________________________________ openwrt-devel
>> mailing list openwrt-devel at lists.openwrt.org 
>> https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel 
>> _______________________________________________ openwrt-devel
>> mailing list openwrt-devel at lists.openwrt.org 
>> https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
>> 
> _______________________________________________ openwrt-devel
> mailing list openwrt-devel at lists.openwrt.org 
> https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel 
> _______________________________________________ openwrt-devel
> mailing list openwrt-devel at lists.openwrt.org 
> https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
> 
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list