Thank you very much, it works with 'once' action. You are my rescuer. :) 2009/7/9 Denys Vlasenko <[email protected]>
> On Thu, Jul 9, 2009 at 12:26 PM, Anna Martynova<[email protected]> > wrote: > > Hello, all. > > At the moment I am upgrading my system from busybox 1.8.2 to 1.14.2. I > found > > such difference in init behavior: in old version 'sysinit' action was > called > > with run() function, so other init actions (such as 'askfirst' - shells > on > > virtual consoles) could be running at the same time. But in the latest > > version sysinit action is called with waitfor() function, and all other > > actions wait for it's completion. > > I found this place in source and changed 'waitfor' to 'run' to check my > > guess. But the question still exists: > > What for it has been made? For now I have no idea, from where I can call > > other start scripts, except rcS... But I need virtual consoles. :) > > Thanks in advance. > > Looks like it was a bug. Sysinit action(s) should be waited for. > This is what init.c says: > > /* Each type of actions can appear many times. They will be > * handled in order. RESTART is an exception, only 1st is used. > */ > /* Start these actions first and wait for completion */ > #define SYSINIT 0x01 > /* Start these after SYSINIT and wait for completion */ > #define WAIT 0x02 > /* Start these after WAIT and *dont* wait for completion */ > #define ONCE 0x04 > /* > * NB: while SYSINIT/WAIT/ONCE are being processed, > * SIGHUP ("reread /etc/inittab") will be ignored. > * Rationale: it would be ambiguous whether SYSINIT/WAIT/ONCE > * need to be rerun or not. > */ > /* Start these after ONCE are started, restart on exit */ > #define RESPAWN 0x08 > /* Like RESPAWN, but wait for <Enter> to be pressed on tty */ > #define ASKFIRST 0x10 > /* > * Start these on SIGINT, and wait for completion. > * Then go back to respawning RESPAWN and ASKFIRST actions. > * NB: kernel sends SIGINT to us if Ctrl-Alt-Del was pressed. > */ > #define CTRLALTDEL 0x20 > /* > * Start these before killing all processes in preparation for > * running RESTART actions or doing low-level halt/reboot/poweroff > * (initiated by SIGUSR1/SIGTERM/SIGUSR2). > * Wait for completion before proceeding. > */ > #define SHUTDOWN 0x40 > /* > * exec() on SIGQUIT. SHUTDOWN actions are started and waited for, > * then all processes are killed, then init exec's 1st RESTART action, > * replacing itself by it. If no RESTART action specified, > * SIGQUIT has no effect. > */ > #define RESTART 0x80 > > > Looks like you can use "once" to achieve what you want. > -- > vda >
_______________________________________________ busybox mailing list [email protected] http://lists.busybox.net/mailman/listinfo/busybox
