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