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