1.0, 01-Feb-92 - Initial version, very primitive for the Minix operating system. Required some mods. to the kernel. 1.1, 30-Apr-92 - Read manual wrong: there is no 'action' field called process, but all entries are of type process. Every 'process' get exec'ed by /bin/sh -c 'exec command'. - Rapidly respawning processes are caught in the act. - _SYSV support is really Linux support, done by poe@daimi.aau.dk on 25-Mar-92. 1.2, 16-Jun-92 - Bugreport from Michael Haardt ; removed deadlock and added 'waitpid' instead of 'wait' for SYSV. 1.3, 05-Jul-92 - Got a 386, so installed Linux. Added 'soft' reboot to be default under linux. Fixed some typos. 2.0 08-Dec-92 - Rewrote the code totally, so started with a new version number. - Dropped Minix support, this code now is Linux - specific. - With TEST switch on, this init & telinit can run standalone for test purposes. 2.1 28-Jan-93 - Fixed a bug with 'boot' and 'once'. - Check 'initdefault' for validity. - Reckognizes "single" as command line argument. - Retries execvp with 'sh -c exec ..' if command is a shell script. (shouldn't execvp do this?) - Added patches to use syslog if defined. 2.2 02-Mar-93 - Made wait()'s asynchronous - Changed whole thing to one big state machine - Now using 'pseudo levels' # & * for SYSINIT & BOOT - Added a new type of 'action', called leave. This process will be executed when the system goes from a runlevel specified in it's runlevel field to a level that's not. Nice to bring down NFS and the like. 2.3 24-Mar-93 - Ripped out the 'leave' action. To difficult, and unneeded. - Going single user now kills _all_ processes. - Added '-t secs' option to all commands. - This version is stable enough to post. 2.4a 22-Apr-93 - Fixed last to reckognize BSD style wtmp logging. - Changed init to write wtmp records that are SysV compliant but are also reckognized by the BSD last. Added a '+' option to the 'process' field of inittab, for getties that want to do their own utmp/wtmp housekeeping (kludge!). - Now accepts a runlevel on the command line, and reckognizes the 'auto' argument. (Sets the environment variable AUTOBOOT to YES) 2.4g 15-May-93 - Changed init to really catch SIGPWR 'cause we hooked up an UPS to the Linux machine. The keyword for catching the TreeFingerSalute is now "ctrlaltdel" instead of "power{wait,fail}". 2.4 24-May-93 - Send out the official version into the world as SysVinit-2.4.tar.z. 2.50 14-Feb-1994 - Ignores unknown command line arguments. - Modelled more after the "real" sysVinit - Lots of changes all over the place. (like showing runlevel in "ps" listing, logging runlevel into utmp file etc) - now using "reliable" signals instead of V7 style. - Updated all scripts. Examples are in two directories: etc (normal) and etc-sysv (sysv style scripts). - runlevel 0 = halt, 1 = single user, 6 = reboot. - added support for serial console. - updated Propaganda, manpages. - added shutdown access control. 2.52 30-Aug-1994 - Added `powerfailnow' keyword, for when UPS battery is low. - Updated `last'. - Fixed utmp handling (wrt. CLEAN_UTMP) TODO: * Make last compatible with GNU/BSD (long options?) * update powerd * remote SIGPWR broadcast? in powerd? (with priv. port) * remote shutdown 2.53 10-Oct-1994 - Renamed pidof to killall5, updated all scripts to use killall5 instead of kill -1 .... - Rewrote scripts to use this, and some general changes. - Added SysV command line compatibility to shutdown. 2.54 12-Jan-1995 - Added GNU copyrigh to all *.[ch] files. - added /etc/initscript - reboot and halt now call shutdown in runlevels 1-5 - Can run from read-only root (CDROM) 2.55 17-Jan-1995 - Added option to shutdown to run standalone. 2.57 22-May-1995 - Changed a few things here and there, didn't really document it :) 2.57a 10-Jul-1995 - Fixed race condition init init.c wrt got_chld - Fixed one-off for malloc in killall5.c - Changed dowall.c - Console code: no relink to /dev/systty on CTRL-ALT-DEL) 2.57b xx-Aug-1995 - Bugfix release for Debian and Slackware 3.0 2.57c 08-Oct-1995 - Changed over to init_request (with initreq.h) - Processes no longer killed when "process" field changes, change takes effect after next respawn. 2.57d 03-Dec-1995 - Added sulogin - Added "-b" flag to init, gives a shell before anything else (in case the startup scripts are screwed) - Moved fastboot to /fastboot - Folded in Debian patches. - Removed old scripts - Added debian /etc/directory. 2.58-1 31-Dec-1995 - Added the latest debian files. - Added support for 4-character id fields (if you have libc5). - Fixed pidof (in killall5) parsing of /proc/.../stat - Save restore GMT setting in /etc/init.d/boot 2.58-2 04-Jan-1996 - Changed etc/init.d/rc to do a stty onlcr - Added /var/log/initrunlvl symlink 2.59 10-Mar-1996 - Init logs less to syslog (suspected to hang in syslog() or openlog() ) - removed closelog() from init.c - removed time check of runlevel record in halt. - Added options to last to get hostname from ut_addr field - Added last and mesg to installation targets - rewrote /etc/init.d/boot a bit. 2.60 01-Apr-1996 - Fixed race condition in init.c, resulting in hanging shutdowns. Courtesy of Max Neunhoeffer. - Fixed debian/etc/init.d/boot for swapon and mdadd - Added architecture to debian.control - Added manpages for rc.boot and rc.local - Updated inittab manpage for 4-character runlevel field - Added debian replaces for bsdutils < version_without_mesg - Fixed init.c so that it also works with kernels 1.3.81 and up 2.60-2 16-Apr-1996 - Fixed sulogin (didn't work if root wasn't first entry in shadow file) - Fixed mesg for systems with "tty" group (such as Debian) - Fixed nsyslog() in killall5.c 2.61 29-Apr-1996 - Changed /etc/init.d/boot script again - Fixed problem in init.c with trailing whitespace after entries in inittab - Fixed killall5 problems - Added manpage for lastb - Added SHELL= environment variable to sulogin - Fixed sulogin & shadow problems - Added timeout option to sulogin 2.61-3 29-May-1996 - Fixed debian/etc/init.d/network for the lo device. - Added "-xdev" to the cd /tmp && find in debian/etc/init.d/boot - Made remove time for files in /tmp configurable. 2.62 31-May-1996 - Decided to release a 2.62 version with a BIG WARNING about upgrading init in it. Will send a patch to Linus for the linux/Documentation/Changes file so that 2.62 or later is mentioned as the version to upgrade to. - Added docs for Slackware 2.62-2 09-Jun-1996 - Changed debian /etc/init.d/boot script to create a nologin file at boot and to remove it just before going multiuser. 2.63 14-Jun-1996 - Fixed preinst script for Debian - Fixed init.c to become init daemon if name is init.new - Fixed pidof to not return PIDs of shell scripts 2.64 28-Jun-1996 - Init checks CONSOLE environment variable on startup (overrides /dev/console) - Init sets CONSOLE variable for all its children. - Wtmp(): when zeroing out old utmp entries, keep ut_id field - Wtmp(): try to re-use ut_id field if possible. - SetTerm(): only read from /etc/ioctl.save if written once. - Included start-stop-daemon, C version (source only). - Fixed wait() for the emergency shell. - killall5: ignore signal before doing kill(-1, pid).