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