blob: 8a07b07352b754e99834c00d6ce2fad5f25eac59 [file] [log] [blame]
Scott James Remnantaca75642010-02-04 16:40:04 -080010.6.6 xxxx-xx-xx
2
Scott James Remnant51d109b2010-02-26 15:33:12 +00003 * Upstart will automatically mount /proc and /sys on boot if they
4 have not already been mounted by the kernel or initramfs.
Scott James Remnant456f5cf2010-02-26 18:05:49 +00005 (Bug: #426263)
Scott James Remnant51d109b2010-02-26 15:33:12 +00006
Scott James Remnantbfae97b2010-02-04 15:06:41 -080070.6.5 2010-02-04 "Our last, best hope for victory"
Scott James Remnantb3918a62010-02-03 16:39:50 -08008
Scott James Remnantd2350362010-02-03 19:42:29 -08009 * Since libnih has been separated out into its own project, Upstart
10 no longer includes its source and now uses the installed version by
11 default.
12
Scott James Remnant6730f192010-02-04 00:47:34 -080013 * The external nih-dbus-tool means that cross-compilation is trivial,
14 the path to it may be overriden with NIH_DBUS_TOOL=... as an
15 argument to configure. (Bug: #426740)
16
Scott James Remnantd2350362010-02-03 19:42:29 -080017 * Developers may still build against a local libnih source tree by
18 passing --with-local-libnih=/path/to/libnih to configure.
19
Scott James Remnant004d8c02010-02-04 11:08:07 -080020 * There is a new initctl "reload" command, with matching
21 /sbin/reload symlink. This sends the SIGHUP signal to the running
22 main process of the named job instance.
23
Scott James Remnant9f236472010-02-04 12:08:59 -080024 * Event operator matches in jobs now support "!=" in addition to the
25 usual "=", e.g.:
26
27 start on net-device-added INTERFACE!=eth*
28
Scott James Remnant3a20ac02010-02-04 12:20:07 -080029 (Bug: #513035)
30
Scott James Remnant870620f2010-02-04 11:24:45 -080031 * Moved D-Bus system bus reconnection trigger from SIGHUP to SIGUSR1,
32 since SIGHUP is already used for a forced configuration reload and
33 causes Upstart to "forget" state.
34
Johan Kiviniemi7ea666f2010-02-03 19:59:06 -080035 * Fixed bug where the default runlevel would be lost when an
36 /etc/inittab file exists without an initdefault line. (Bug: #405847)
37
Scott James Remnant6d610662010-02-03 20:00:11 -080038 * Fixed "Unhandled error" message from shutdown. (Bug: #426332)
39
Scott James Remnant34940012010-02-04 11:09:55 -080040 * Fixed "Unhandled error" assertion crash from Upstart child
41 processes when failing to spawn a job. (Bug: #451917)
42
Scott James Remnantf99ea0c2010-02-04 11:14:30 -080043 * No longer holds /dev/console open, so the SAK SysRq key will not
44 kill Upstart. (Bug: #486005)
45
Scott James Remnant61626292010-02-04 00:43:56 -080046 * Restored sync() call before reboot().
47
Scott James Remnant7b50f2b2010-02-04 11:24:25 -080048 * Added missing OPTIONS section to init(8) manpage. (Bug: #449883)
49
Scott James Remnantfacdb672009-08-02 20:01:34 +0100500.6.3 2009-08-02 "Our last, best hope for peace"
Scott James Remnant726290a2009-07-21 18:31:35 +010051
Scott James Remnant826b8762009-08-01 19:08:50 +010052 * Fixed an assertion when a job's main process is terminated
53 while in the stopping state. (Bug: #406408)
54
Scott James Remnantfacdb672009-08-02 20:01:34 +010055 * Fixed compilation on ia64.
56
Scott James Remnant336f1a22009-08-01 21:08:35 +010057 * nih-dbus-tool(1) manpage will not be installed, since the binary
58 is not. (Bug: #403103)
59
Scott James Remnant73e8fd32009-07-21 18:30:51 +0100600.6.2 2009-07-21 "Buggrit, millennium hand and shrimp"
Scott James Remnant9c372302009-07-16 18:08:52 +010061
Scott James Remnantbeae7f22009-07-21 12:27:55 +010062 * Fixed an assertion when a job receives a stop event or the
63 stop command while still in the starting state.
64
Scott James Remnant0a0c47d2009-07-21 13:03:23 +010065 * Changed exec() trace handling to allow the main process to
66 exec another before fork()ing while still following (e.g.
67 main script exec'ing a daemon)
68
Scott James Remnant9d736bb2009-07-21 18:15:20 +010069 * Restored missing chdir("/") call when catching crashes.
70
Scott James Remnantb52deb12009-07-16 18:05:31 +0100710.6.1 2009-07-16 "Born in the wagon of a travelling show"
Scott James Remnantce95ce22009-07-11 12:46:57 +010072
Scott James Remnant0acfdc52009-07-15 11:13:46 +010073 * D-Bus 1.2.16 is now required.
74
Scott James Remnantcf9f3ce2009-07-14 14:55:47 +010075 * Updated ptrace() code to handle receiving the trapped stopped
76 child _before_ we receive the trapped fork() syscall, which
77 seems to be the most common way the race goes when running
78 as init. This seems to make "expect fork/daemon" largely work.
79 (Bug: #264711)
80
Scott James Remnante6de0452009-07-16 17:26:00 +010081 * runlevel will now output "unknown" and exit with an error when
82 called before the first telinit call. (Bug: #400248)
83
Scott James Remnant3ef8fac2009-07-16 17:39:04 +010084 * runlevel will prefix error messages with the utmp filename being
85 used. (Bug: #400241)
86
Scott James Remnant11caefc2009-07-09 17:18:26 +0100870.6.0 2009-07-09 "How appropriate, you fight like a cow"
Scott James Remnantb3338202009-06-23 01:02:58 +010088
Scott James Remnantcf2e8332009-07-06 20:32:07 +010089 * The licence for Upstart has been changed back to version 2 of the
90 GNU GPL.
91
Scott James Remnant057a8692009-07-09 16:40:34 +010092 * D-Bus 1.2.15 is now required, this is the current GIT HEAD
93 pending a 1.2.16 release.
94
Scott James Remnantcf2e8332009-07-06 20:32:07 +010095 * Configuration paths have changed. Global configuration now
96 resides in "/etc/init.conf" while jobs are now configured in
97 "/etc/init"
98
Scott James Remnant545bbe32009-07-08 22:05:59 +010099 * Job configuration filenames must now end in ".conf"
100
Scott James Remnantedb382a2009-07-08 20:43:16 +0100101 * Default configuration files are now supplied in the "conf"
102 sub-directory of the source, and installed into "/etc/init".
103
104 These match the Debian/Ubuntu sysvinit configuration so may
105 require some tweaking for other distributions, but provide an
106 excellent base.
107
108 The old example-jobs tarballs are deprecated.
109
Scott James Remnantcf2e8332009-07-06 20:32:07 +0100110 * The D-Bus interface remains unstable, to reflect this the current
111 interface name has changed to "com.ubuntu.Upstart0_6" and the
112 name of the job and instance interfaces have changed to match.
113
114 * The "EmitEvent" D-Bus method gains a wait argument, when given
115 as TRUE (the recommended setting) the method call will be blocked
116 until all effects of the event have finished. When FALSE the
117 method call will return once the event has been queued.
118
119 * The "Start", "Stop" and "Restart" D-Bus methods of jobs and
120 instances gain a similar wait argument.
121
122 * The Upstart D-Bus object now has "version" and "log_priority"
123 properties. The former is to obtain the version of the init daemon,
124 the latter allows you to obtain and change the logging priority.
125
126 * Job D-Bus objects now have "name", "description", "author" and
127 "version" properties to obtain the job name and the contents of
128 the equivalent job file fields for the others.
129
130 * Instance D-Bus objects now have "name", "goal", "state" and
131 "processes" properties to obtain the instance name, goal, state
132 and list of running processes and their pids respectively.
133
134 * The default D-Bus security policy now permits use of the "Get"
135 methods by all users, including obtaining values of properties.
136
137 * initctl has been rewritten with functionality more along the
138 lines of Upstart 0.3.x than before; since many distributions are
139 still shipping 0.3.x the summary of changes for the tool reflects
140 both changes from 0.3.x and 0.5.x
141
142 * The global "-p"/"--pid" argument has been dropped, since
143 communication is over D-Bus. New "--system" and "--dest" arguments
144 have been added to force communication over the system bus, and
Scott James Remnant10a35f22009-07-08 20:05:46 +0100145 specify the destination, instead of using the private socket (this
146 is the default when run as non-root to permit "list" and "status"
147 to work for ordinary users).
Scott James Remnantcf2e8332009-07-06 20:32:07 +0100148
149 * The "-i"/"--id" and "--show-ids" options to commands have been
150 dropped since jobs no longer have ids.
151
152 * Since instances may now have names, these will be displayed in
153 brackets after the job name when one is present. The output of
154 the goal and state are now expressed as "start/running" instead
155 of "(start) running" to disambiguate.
156
157 * initctl "start" and "stop" now only output the final state of
158 the job, not intermediate states it passes through. When called
159 with "--no-wait", the commands now output a status before
160 returning (which may not be the final status).
161
162 * initctl "start", "stop" and "status" now only accept a single
163 job name. Further arguments are taken as KEY=VALUE environment
164 variables to pass to the job, replacing the previous "-e" option.
165
166 * There is a new initctl "restart" command, with matching
167 /sbin/restart symlink. This is the atomic equivalent of calling
168 "stop" and "start" with the exception that a stopped job will
169 not be started again.
170
171 * In keeping with the newer instance model, instance jobs are now
172 output on separate lines with their full names rather than
173 indented under a "master" instance.
174
175 * initctl "status" will exit non-zero if the job name was not
176 found. (Bug: #328323)
177
178 * initctl "status" now outputs information for multi-instance
179 jobs. (Bug: #331407)
180
181 * initctl "list" no longer accepts a pattern, use grep. Output
182 is no longer sorted.
183
184 * initctl "emit" no longer outputs changes that occur as a result
185 of the event.
186
187 * When initctl "emit" is called with "--no-wait", it will return
188 immediately. (Bug: #324890)
189
190 * initctl "emit" now only accepts a single event name. Further
191 arguments are taken as KEY=VALUE environment for the event,
192 replacing the previous "-e" option.
193
194 * initctl "jobs" and "events" have been dropped.
195
196 * initctl "log-priority" may be called without arguments, in
197 which case it will output the current priority. (Bug: #280529)
198
199 * initctl "reload" has been renamed to "reload-configuration"
200 to avoid confusion with reloading a job's configuration.
201
Scott James Remnant07b32242009-07-07 10:49:43 +0100202 * initctl(8) man page updated. (Bug: #285753)
203
Scott James Remnantff87eaf2009-07-08 18:38:25 +0100204 * runlevel no longer accepts the --set and --reboot arguments,
Scott James Remnantf24e55d2009-07-08 19:58:37 +0100205 instead telinit and shutdown write these records into utmp and wtmp.
Scott James Remnantff87eaf2009-07-08 18:38:25 +0100206
207 * runlevel(7) man page added to describe the runlevel event, and
208 the implementation of runlevels and System V compatibility in
209 Upstart. (Bug: #60429)
210
Scott James Remnant3aac7132009-07-08 19:02:56 +0100211 * telinit will no longer silently ignore the "a", "b" or "c"
212 runlevels.
213
Scott James Remnant3aac7132009-07-08 19:02:56 +0100214 * telinit now accepts the previously ignored "-e" argument, passing
215 the environment variables given along with the runlevel event.
216
217 * telinit now officially accepts the "q"/"Q" and "u"/"U" arguments,
218 the former will reload the Upstart configuration while the latter
219 will re-execute Upstart.
220
Scott James Remnantf127f9d2009-07-09 10:16:06 +0100221 * telinit q will also attempt to reconnect to the D-Bus system bus
222 if the connection has not been made, or has been lost.
223 (Bug: #323022)
224
Scott James Remnant461578a2009-07-08 19:30:12 +0100225 * reboot no longer silently ignores the "-t" option.
226
227 * reboot now silently ignores the "-n", "-i" and "-h" options; it
228 will no longer sync your disks, down your network interfaces or
229 spin down your hard drives. This functionality is all handled
230 by the kernel on a modern system. (Bug: #92685)
231
232 * reboot now writes a "shutdown" record to /var/log/wtmp, this means
233 that the "-w" option is honoured with its original intent. We
234 still silently ignore the "-d" option.
235
Scott James Remnantf24e55d2009-07-08 19:58:37 +0100236 * shutdown message generation fixed to be more easily translatable.
237 (Bug: #102565)
238
Scott James Remnant1e812b52009-07-09 10:10:37 +0100239 * The TERM/KILL timeout, and other system timeouts, now use the
240 monotonic clock so are unaffected by system clock changes.
241 (Bug: #389588)
242
243 * Respawn detection now uses the monotonic clock so is unaffected
244 by system clock changes. (Bug: #389586)
245
Scott James Remnant7c23b1f2009-07-09 15:56:49 +0100246 * Significant improvement in the amount of manual pages included
247 with Upstart and their content. (Bug: #60429)
248
Scott James Remnant6e568432009-07-09 16:01:07 +0100249 * A manual page refering people from /etc/inittab to /etc/init
250 is also included. (Bug: #72058)
251
Scott James Remnantb3338202009-06-23 01:02:58 +01002520.5.3 2009-06-22 "Britain's Flag Carrier"
253
254 * Fixed segfault when initctl status called with arguments.
255 (Bug: #388753)
256
257 * Fixed segfault when initctl log-priority called with no argument.
258 (Bug: #280529)
259
260 * Fixed shutdown to pass $INIT_HALT variable as last argument, not
261 as first. (Bug: #303574)
262
263 * Added temporary support for "telinit u" until we have true re-exec
264 support. This will be replaced by an initctl command in future.
265 (Bug: #388742)
266
267 * Corrected formatting of initctl(8) manpage. (Bug: #388745)
268
Scott James Remnant4ef6e282009-06-17 19:02:13 +01002690.5.2 2009-06-17 "Something, something, something, D-Bus"
270
271 * The licence for Upstart has been updated to GNU GPL v3.
272
273 * Overhaul of the automatically generated D-Bus bindings code,
274 fixing many issues with memory leaks, inconsistent return values
275 and loss of method returns after the method has taken place.
276
277 * D-Bus 1.2.4 is now required, and must be patched to fix
278 https://bugs.freedesktop.org/show_bug.cgi?id=22316
279
280 * D-Bus Job objects now have "name", "description", "author"
281 and "version" properties.
282
283 * D-Bus Instance object now have "name", "goal" and "state"
284 properties.
285
286 * initctl now obtains the name properties for display instead of
287 printing the mangled object path component. (Bug: #299290)
288
289 * D-Bus configuration updated now that the daemon is fixed to be
290 deny-by-default, and updated to avoid bare "send_interface"
291 stanzas. (Bug: #323021)
292
293 * Fixed assertion caused by the post-start or pre-stop scripts
294 exiting after the main process of a respawning job had exited
295 (Bug: #381048)
296
297 * The /proc filesystem need not be mounted if the "oom_adj"
298 configuration stanza is not used. (Bug: #259801)
299
300 * Overly large values to configuration stanzas are now caught
301 and rejected. (Bug: #340134)
302
303 * The --enable-compiler-warnings configure option has been
304 extended to add -Wextra, but turns off a few of the more extreme
305 warnings
306
307 * GNU C Library v2.4 (or backported inotify support) is required
308
309 * pkg-config 0.22 is now required, it probably was anyway but we
310 now explicitly check for it.
311
312 * Dependency on Python for the D-Bus binding tool has been dropped
313 and replaced with a dependency on expat 2.0.0
Scott James Remnant619905b2009-01-29 06:23:08 +0000314
3150.5.1 2009-01-29 "Unexpected item in bagging area"
316
317 * Major rewrite of the memory allocator used by Upstart; the
318 old allocator had several limitations and a few issues.
319 I must stress that none of the issues were known to affect
320 Upstart itself, however it pays to be prudent.
321
322 * An issue where an object in a linked list would be freed after
323 the linked list was freed was fixed. Upstart had some twisty
324 code logic to work around it, which has now been dropped.
325
326 * An issue where a string could fail to be appended in an OOM
327 situation was fixed; if Upstart is affected, this could cause
328 D-Bus Introspection data to be corrupted.
329
330 * An issue where multiple socket watches being freed could lead
331 to bad memory access has been fixed; Upstart 0.5.0 included a
332 temporary fix for the D-Bus connection handling, this replaces
333 that with a proper fix that also corrects the same problem for
334 timers and other main loop watches that Upstart was not believed
335 to be affected by.
336
337 * Compiler warnings when compiling the test suite with -O1 and
338 above have been fixed where found.
339
340 * A race condition in the test cases for a process stopping with
341 SIGSTOP has been fixed, this could sometimes cause this test
342 to hang.
343
Scott James Remnant19580e42009-01-26 01:16:57 +00003440.5.0 2008-08-12 "One of those deaf-mutes"
Scott James Remnant2e8760b2009-01-26 01:15:21 +0000345
346 * The relationship between job definitions and their running
347 instances has been overhauled completely. Jobs may have
348 zero or more instances, each one uniquely identified by
349 their instance name which is set by expanding the argument
350 to the "instance" stanza against the instance's environment.
351
352 For example, a job with "instance $TTY" in its definition
353 will have new instances created when started with TTY=tty1
354 and TTY=tty2, but starting again with TTY=tty1 will fail if
355 that instance is already running.
356
357 * The default job configuration remains to be a singleton,
358 however this is now accomplished simply by having the
359 default for the instance stanza set to a static string.
360
361 * Job events now include the instance name in a new $INSTANCE
362 variable, and will always have $UPSTART_INSTANCE set in the
363 environment of their processes.
364
365 * Jobs may export environment from themselves into the job
366 events using the new "export" stanza.
367
368 * Events no longer have both arguments and environment,
369 instead the order the environment is specified in is
370 remembered and is used when matching.
371
372 * The "start on" and "stop on" stanzas may now only be
373 specified once, multiple events should be joined with the
374 new "or" operator. A new "and" operator exists as well, and
375 parentheses are permitted, allowing arbitrarily complicated
376 expression matches.
377
378 * All environment from the matched start events is placed in
379 the job, with the list of matched events placed in the
380 $UPSTART_EVENTS variable, replacing the previous singular
381 $UPSTART_EVENT variable.
382
383 * The matches for the "stop on" stanza may refer to variables
384 from the job environment, which comes from the "start on"
385 stanza.
386
387 For example:
388 start on started apache or started httpd
389 stop on stopping $JOB
390
391 * Job environment from the start command or events is
392 available to all scripts, including "pre-stop" and "post-stop".
393
394 * Environment from the matched stop events is only available
395 to the "pre-stop" script, with the list of matched events
396 placed in the $UPSTART_STOP_EVENTS variable so that the list
397 of events that started the job is still available.
398
399 * Environment is no longer lost after a respawn.
400
401 * Environment from the kernel or initramfs may be included in
402 a job by use of the "env NAME" stanza without a value set.
403
404 * The "started" event is no longer emitted if the pre-stop
405 script restarts the job, since the "stopping" event was
406 never emitted.
407
408 * By default, jobs now have the most suitable settings for
409 a daemon process that would match what they would have had
410 by calling daemon(). In particular, this means that the
411 previous "service" stanza is now the default and tasks need
412 to specify a "task" stanza. It also means that if the job
413 really wishes to be a session leader (e.g. getty), it must
414 specify the new "session leader" stanza.
415
416 * Processes that fork once may be supervised with the new
417 "expect fork" stanza, processes that fork twice (most
418 daemons) may be supervised with the new "expect daemon"
419 stanza and processes that do not fork may signal readiness
420 by SIGSTOP with the new "expect stop" stanza.
421
422 * The "pid file", "pid timeout" and "daemon" stanzas have been
423 removed in favour of the new functionality.
424
425 * "respawn" now works for tasks, this will repeat the task
426 until it finishes with a zero exit status or any other
427 specified by "normal exit".
428
429 * "respawn limit" now only affects automatic respawns, not
430 those done by command.
431
432 * If the main process fails to start due to exec() error, or
433 other process setup error, it will not be respawned.
434
435 * "respawn limit" may be "unlimited".
436
437 * The "stalled" event has been removed.
438
439 * "logd" was not maintained, and did not function correctly,
440 so has been removed from the source. The "console logged"
441 stanza has also been removed.
442
443 * New "oom" stanza allows adjustment of the OOM killer
444 priority of the process and may be "never" to inhibit it.
445
446 * The configuration directory has now changed to
447 /etc/init/jobs.d
448
449 * Configuration is still reloaded with inotify, but may be
Scott James Remnant19580e42009-01-26 01:16:57 +0000450 forced by sending init a HUP signal or with "initctl reload".
Scott James Remnant2e8760b2009-01-26 01:15:21 +0000451
452 * Support for the STOP, CONT and TERM signals has been
453 removed.
454
455 * libupstart and the native IPC mechanism has been removed,
456 communication is now via D-Bus which is a new dependency.
457
458 * The dependency on D-Bus introduces build-dependencies on
459 pkg-config and Python.
460
461 * The minimal recommended kernel version is now 2.6.24
462
463 * The compat directory has been removed, the utilities are now
464 considered part of Upstart.
465
Scott James Remnant19580e42009-01-26 01:16:57 +0000466 * initctl jobs has been dropped.
467
Scott James Remnant2e8760b2009-01-26 01:15:21 +0000468 * initctl commands do not support --no-wait yet
469
470 * initctl status with no arguments now shows all jobs.
471
472 * initctl events no longer exists
473
Scott James Remnantfff115a2009-06-17 18:47:22 +01004740.3.10 2009-06-17 "Two minutes to Belgium"
475
476 * Compilation fixes
477
478 * Fixed assertion caused by the post-start or pre-stop scripts
479 exiting after the main process of a respawning job had exited
480 (Bug: #381048)
481
Scott James Remnant5d6466d2007-10-15 01:40:52 +01004820.3.9 2007-10-11 "Highway to the Danger Zone"
483
484 * Fixed crasher caused by starting a job with a no-arguments event.
485
486 * Initialisation order changed so that the control socket is opened
487 and configuration parsed after inherited file descriptors are closed
488 and the console opened. Otherwise if we inherit fewer than the
489 standard three file descriptors (e.g. from OpenVZ) we closed our
490 own control socket, etc. (Bug: #87173)
491
492 * Kill all processes in a supervised process's process group so that
493 we catch looping or sleeping processes that a shell is waiting
494 for. (Bug: #121733)
495
496 * Missing inotify support detected correctly and warning suppressed.
497
498 * Stanza names in configuration may no longer be placed inside quotes.
499
500 * Fix dangling halt and poweroff symlinks when Upstart compiled
501 without --enable-compat=sysv. (Bug: #93356)
502
503 * Fix that --with-included-gettext did not include libintl.a
504 as it should have. (Bug: #117848)
505
506 * Updated hacking requirements to Automake 1.10 and Gettext 0.16.1
507 since this version of Automake makes it easier for package
508 maintainers because it causes us to ship libtool.m4 ourselves.
509
Scott James Remnant7c862ed2007-03-11 19:13:24 +00005100.3.8 2007-03-11 "I had a little drink about an hour ago"
511
512 * Fix an assertion error that occurred whenever a stop event for an
513 instance job was emitted.
514
515 * Correct a bug where calling "stop" from a job without arguments
516 would stop the running job, and attempt to block until it was
517 stopped. This can obviously never happen since it won't stop until
518 stop unblocks.
519
520 * Add "version" and "log-priority" commands to initctl.
521
Scott James Remnant79a3c9a2007-03-09 21:35:31 +00005220.3.7 2007-03-09 "Lines of communication"
523
524 * The "normalexit" stanza has been changed to "normal exit".
525
526 * The "respawn COMMAND" short-cut for specifying both "respawn" and
527 "exec" in the same stanza has been removed. Jobs that previously
528 used syntax such as:
529
530 respawn /sbin/getty 38400 tty1
531
532 Should be changed to use:
533
534 exec /sbin/getty 38400 tty1
535 respawn
536
537 While the shortcut saved a little typing, it caused confusion and
538 hid the fact that "exec" and "script" were both options for
539 respawning services.
540
541 * The "on EVENT" stanza has been removed, change your jobs to use
542 the identical "start on EVENT" instead. This is because the "on"
543 stanza may be useful for other things in future.
544
545 * Stanzas in job definitions may no longer be surrounded by single
546 or double quotes, allowing them to be turned into ordinary
547 tokens by quoting them.
548
549 * Configuration of running jobs is no longer immediately changed
550 when the definition is changed on disk; the job must be stopped
551 first. If the job is an instance job, all instances must be
552 stopped before an instance of the changed job definition will be
553 started.
554
555 This ensures that the post-stop process run when the job is stopped
556 matches the pre-start process run when it was started, and for
557 instance jobs ensures that any locking between them is identical.
558
559 Jobs marked for deletion, or jobs that have not yet replaced
560 another, will not ordinarily show up in the output of initctl
561 "status" or "list" unless addressed by id. They cannot be
562 started or stopped, even when addressed by id.
563
564 * Job definitions may safely omit "exec"/"script"; the job will stay
565 in the running state with no process until it is stopped manually
566 or by an event.
567
568 This allows a service to define hardware configuration; for example
569 the mixer service could restore the ALSA mixer in its pre-start
570 script and save the mixer state in its stop script. "start mixer"
571 would restore the state, "status mixer" would show it was running
572 and "stop mixer" would save the state again and presumably mute it.
573
574 * Sending the SIGPWR signal to init will emit the power-status-changed
575 event. A simple job can hook this event, check the /etc/powerstatus
576 file and take further action.
577
578 * As well as their name, all jobs now also have a unique id exported
579 in the UPSTART_JOB_ID environment variable and viewable with initctl
580 by using the "--show-ids" option to "status" or "list".
581
582 The unique id is changed whenever the job is reloaded from disk, or
583 whenever a new instance is started. "start" and "stop" now default
584 to UPSTART_JOB_ID if no arguments are given (falling back to
585 UPSTART_JOB if that is not present either). This means they act on
586 the current instance of the job, rather than spawning a new instance
587 or stopping all instances.
588
589 "start", "status" and "stop" also accept a new "--by-id" option
590 which makes them expect job ids as arguments instead of job names.
591
592 * The initctl "status" and "list" commands group instances of
593 instance jobs together in their output, rather than repeating them
594 without further clarification. E.g.:
595
596 foo (instance)
597 (start) starting
598 (start) running, process 1000
599 (stop) post-stop, process 1050
600
601 The "stop" command will stop all instances when given the name of
602 an instance job; individual instances can be stopped using "--by-id"
603 after obtaining the id from "status --show-ids".
604
605 * Wildcard patterns of job names to be listed can be given as an
606 argument to the initctl "list" command.
607
608 * Starting and stopping jobs with initctl will now block until the
609 job reaches its goal state, outputting all status changes and
610 process ids until the goal is reached and will also output an error
611 and exit with a non-zero status if the job fails.
612
613 Remember that jobs default to being tasks, so "start" will actually
614 block until the job finishes and returns back to "(stop) waiting".
615 Use the "service" or "respawn" stanza to turn them into services to
616 that they only block until the "(start) running" state is reached.
617
Scott James Remnant4e977172007-02-10 21:24:29 +00006180.3.5 2007-02-10 "Wear flowers in your hair"
619
620 * Serialisation of job state between upstart processes is disabled;
621 though upstart will still re-exec itself when sent the TERM
622 signal, the new copy will not have any of the state of the old.
623 This will be restored in a later release.
624
625 * WARNING: if you have any job declared "console owner" which is
626 run by the "stalled" event, comment out the "start on" stanza
627 before sending the TERM signal -- otherwise the newly started
628 process will start that job, which will kill your running X
629 server.
630
631 * logd and the "console logged" (default) option are currently
632 disabled, pending large-scale changes to the way that this
633 works.
634
635 * Job scripts have been renamed; "start" to "pre-start" and
636 "stop" to "pre-stop".
637
638 * A new "post-start" script has been added, it's run after the
639 main process has been started and the "started" event is not
640 emitted until it finished.
641
642 * A new "pre-stop" script has also been added, it's run when a
643 request or event comes in to stop a job, before the "stopping"
644 event is emitted and before the job is killed. If this restarts
645 the job, it will not be stopped.
646
647 * Job processes now have an UPSTART_JOB environment variable
648 containing the name of the job.
649
650 * initctl start, stop and status will default to using UPSTART_JOB
651 if no arguments are given. Therefore you can just put "stop"
652 or "start" into a job script.
653
654 * Where a job was started or stopped by an event, the processes
655 now have an UPSTART_EVENT environment variable containing the
656 name of the event.
657
658 * Events may now have arguments and environment variables attached,
659 these can be specified with initctl, e.g.
660
661 # initctl emit network-interface-up eth0 -eADDR=00:11:22:33:44:55:66
662
663 * These arguments can be matched in the job by placing them after
664 the event name for the "start on" or "stop on" stanzas:
665
666 start on network-interface-up eth*
667
668 Additional arguments in the event are assumed to match if not
669 specified in the job definition, and wildcards may be used within
670 the job definition as shown above.
671
672 * The arguments are also passed to the script of any job started or
673 stopped by this event as positional arguments, and the environment
674 variables are placed into the environment of the job.
675
676 * The set of events emitted due to a job state change have been
677 completely changed. The new events are as follows:
678
679 started: this is emitted once the job is running and ready, and
680 receives the job name as an argument.
681
682 stopped: this is emitted once the job has been fully stopped. As
683 well as the job name, if the job terminated normally it will have
684 the "ok" argument; otherwise it will have the "failed" argument
685 followed by the name of the script that failed ("running" for the
686 main job) and either an EXIT_STATUS or EXIT_SIGNAL environemtn
687 variable indicating why it failed.
688
689 starting: this is emitted before the job is started (before even
690 the pre-start script is run). Arguments are as "started". The
691 job will not be started until this event has finished.
692
693 stopping: this is emitted before the job is stopped (but after the
694 pre-stop script is run). Arguments are as "stopped". The job will
695 not be stopped until this event has finished.
696
697 These events can be usefully combined as follows.
698
699 If the "hal" job requires "dbus" to be running, and "hal" must be
700 stopped before "dbus" may stop:
701
702 start on started dbus
703 stop on stopping dbus
704
705 If the "tomcat" job believes that it must be running before "apache"
706 can run, and should not be stopped until "apache" has been stopped:
707
708 start on starting apache
709 stop on stopped apache
710
711 * The event named for the job has been completely removed; thus
712 jobs and events no longer share a namespace.
713
714 * Jobs have goals to reach; for a task (the default), the goal is
715 to go from stopped, to started and back to stopped again. This
716 means that when used for the "starting" or "stopping" event, the
717 entire task has to complete before the referenced job can actually
718 be started or stopped.
719
720 Services will normally only want the goal to be to go from stopped
721 to started; thus when used in "starting" in the example above, the
722 referenced job can be started once the service has been started
723 (and not stopped again). A service is defined by specifying either
724 "respawn" or "service" in the definition.
725
726 * The list of exit codes that determine whether the main process
727 failed or succeeded can be specified by the "normalexit"
728 configuration stanza. The arguments to this stanza can be exit
729 codes or signal names, e.g.
730
731 normalexit 1 99 100 INT QUIT
732
733 Zero is implied in the list, unless the job is marked "respawn"
734 since for those jobs, this is the list of exit codes and signals
735 that cause the job to be not respawned.
736
737 * There is no longer a respawning state, or "respawn script". Jobs
738 will instead be stopped and started through the same scripts.
739
740 * Jobs marked with the "instance" stanza can be started multiple
741 times; each time they are started, a new instance is created.
742
743 * If any job whose goal is changed by an event fail to reach their
744 new goal, a further "EVENT-NAME/failed" event will be emitted once
745 the event has finished being handled.
746
747 This can be used to emit, for example, a "path-unmounting" event
748 and to not proceed to "path-unmounted" unless it succeeds.
749
750 * initctl emit will block until the event has been handled; it will
751 also output job status information for any job changed by the event
752 and terminate with an exit status of 1 if any of those jobs failed
753 to reach their new goal.
754
755 * The set of events emitted by the "telinit" compatibility command
756 have been changed. It now only emits a single "runlevel" event,
757 and supplies the new runlevel as an argument to it.
758
759 You should change job files that use:
760
761 start on runlevel-2
762
763 to use the following:
764
765 start on runlevel 2
766
767 This means also that "stop on runlevel" would stop the job on
768 any runlevel change.
769
770 * Neither the "telinit" nor "shutdown" commands now emit a
771 "shutdown" event, in fact, this event has been removed altogether.
772 "shutdown" now simply emits the appropriate runlevel event;
773 the -H and -P arguments set the INIT_HALT variable in the
774 environment of that event, just as it does in sysvinit.
775
776 * Normal output from initctl, etc. is no longer prefixed "initctl:"
777
778 * The "ctrlaltdel" event has been renamed to "control-alt-delete".
779
Scott James Remnantcf64c482007-02-05 23:14:00 +00007800.3.2 2007-02-06 "Could anybody have tampered with your luggage?"
781
782 * Fix leak of inotify file descriptor that could allow any process
783 on the system to remove upstart's watch on its configuration
784 directory.
785
786 * New "emits" configuration stanza, used to list events that are
787 emitted by the job itself. Intended for use by front-ends to
788 draw event graphs and the like.
789
790 * Dropped "depends" configuration stanza and all related code.
791 This will be replaced by the complex state mechanism.
792
793 * Rewritten IPC code to be significantly simpler, with the goal of
794 having a stable interface once we hit the end of this milestone
795 series.
796
797 * Rewritten configuration parser and inotify watch infrastructure
798 to be more maintainable in future.
799
800 * Now supports systems where inotify is disabled.
801
802 * Duplicate configuration stanzas are no longer permitted.
803
804 * Bug fixes, especially concerning malloc failure.
805
Scott James Remnantf642ffa2006-12-13 18:24:22 +00008060.3.1 2006-12-13 "The Gathering"
807
808 * Compilation fixes
809
810 * Bug fixes.
811
812 * Massive improvement to test framework, which should make it much
813 easier to test new features.
814
Scott James Remnantfd029da2006-10-17 19:21:07 +01008150.3.0 2006-10-17
816
817 * Reverted logd behaviour from previous version, it's up to the
818 init scripts to send messages to the console if they wish.
819
820 * Compatibility programs must now be explicitly enabled by using
821 ./configure --enable-compat=sysv
822
823 * "shutdown" and "reboot" are now considered System V compatibility
824 programs, as they emulate the behaviour of those. Dropped some
825 added options to make them fit.
826
827 * All programs given improved --help text.
828
829 * "initctl" rewritten, any sub-command can be run directly by
830 making it a symlink to "initctl" itself.
831
832 * "start", "stop" and "status" are now just symlinks to "initctl";
833 not a separate binary.
834
Scott James Remnant4e58f752006-09-20 06:33:50 +01008350.2.7 2006-09-20
836
837 * logd writes received messages to the console unless "quiet" is
838 on the kernel command-line
839
840 * runaway jobs are now caught when they start, rather than respawn,
841 so stop/start loops are caught
842
843 * Include inotify support for compiling under glibc 2.3
844
Scott James Remnant948ab872006-09-14 10:34:34 +01008450.2.6 2006-09-13
846
847 * Fix major bug on architectures with 64-bit kernel and 32-bit
848 user-land caused by an inconsitency between the behaviour of
849 kernel's compat_sys_waitid() vs. sys_waitid() functions.
850
851 * "halt" now only calls "shutdown -h now"
852
Scott James Remnant760237e2006-09-09 05:38:32 +01008530.2.5 2006-09-09
854
855 * "control-alt-delete" event name changed to "ctrlaltdel".
856
857 * "initctl shutdown EVENT" added that performs the same job as
858 "shutdown" but without all the usual warnings, timings, etc.
859
860 * "logd" has now been written, if installed this is started by init
861 before sending the "startup" call and all jobs with "console logged"
862 (the default) will have their output sent to this daemon. It
863 currently just logs to /var/log/boot.
864
865 * "shutdown -k" implemented.
866
867 * The "shutdown" utility has been changed to generate "system-halt"
868 for "-H", "power-off" for "-P" and just "halt" if only "-h" given.
869
870 * If "shutdown" is run when running under sysvinit, it will now
871 send the appropriate /dev/initctl message to allow upgrades.
872
873 * "telinit S" implemented.
874
875 * Instead of trying to start or stop jobs, "telinit" now just sends
876 "runlevel-X" events.
877
878 * The "telinit" utility now ensures a "shutdown" event is sent
879 before switching to runlevel 0, 1 or 6.
880
881 * If "telinit" is installed and init is called by the super-user,
882 "telinit" is invoked instead.
883
884 * Basic manual pages included.
885
Scott James Remnant7663bfb2006-09-01 19:58:19 +01008860.2.1 2006-09-01
887
888 * Compilation fixes
889
Scott James Remnant12dd7252006-09-01 02:27:04 +01008900.2.0 2006-09-01
891
892 * "shutdown", "reboot", "halt" and "poweroff" utilities provided
893 that match their traditional equivalents.
894
895 * "start", "stop" and "status" utilities provided to start, stop
896 and query the status of jobs respectively.
897
898 * "runlevel" and "telinit" utilities provided for compatibility.
899
900 * "initctl list" will list active jobs.
901
902 * Events vastly simplified to just simple strings.
903
904 * Jobs now generate "jobname/start", "jobname/started",
905 "jobname/stop" and "jobname/stopped" events as they go through
906 state transitions.
907
908 * Services generate a "jobname" event when they are running.
909
910 * Tasks generate a "jobname" event when they have finished.
911
912 * The "shutdown" utility will generate a "shutdown" event followed
913 by one of "maintenance", "reboot", "halt" or "poweroff" or any
914 admin-specified event.
915
916 * "stalled" event generated when no jobs are running or queued.
917
918 * "control-alt-delete" event generated when that key combination
919 is pressed
920
921 * "kbdrequest" event generated when Alt-UpArrow is pressed
922
923 * Runaway respawning services will now be caught.
924
925 * init will re-exec on receipt of the SIGUSR1 signal.
926
Scott James Remnant21679252006-08-25 16:22:13 +02009270.1.1 2006-08-25
928
929 * Minor bug fixes.
930
Scott James Remnant33e64d02006-08-25 14:44:32 +02009310.1.0 2006-08-24
Scott James Remnant8a0cd072006-05-14 18:28:58 +0100932
933 * Initial public release.
934