blob: 699e040a3af726bfe4f5b37eb9c02fa1f93a58dd [file] [log] [blame]
Scott James Remnant2e8760b2009-01-26 01:15:21 +000010.5.0 2008-07-29 "One of those deaf-mutes"
2
3 * The relationship between job definitions and their running
4 instances has been overhauled completely. Jobs may have
5 zero or more instances, each one uniquely identified by
6 their instance name which is set by expanding the argument
7 to the "instance" stanza against the instance's environment.
8
9 For example, a job with "instance $TTY" in its definition
10 will have new instances created when started with TTY=tty1
11 and TTY=tty2, but starting again with TTY=tty1 will fail if
12 that instance is already running.
13
14 * The default job configuration remains to be a singleton,
15 however this is now accomplished simply by having the
16 default for the instance stanza set to a static string.
17
18 * Job events now include the instance name in a new $INSTANCE
19 variable, and will always have $UPSTART_INSTANCE set in the
20 environment of their processes.
21
22 * Jobs may export environment from themselves into the job
23 events using the new "export" stanza.
24
25 * Events no longer have both arguments and environment,
26 instead the order the environment is specified in is
27 remembered and is used when matching.
28
29 * The "start on" and "stop on" stanzas may now only be
30 specified once, multiple events should be joined with the
31 new "or" operator. A new "and" operator exists as well, and
32 parentheses are permitted, allowing arbitrarily complicated
33 expression matches.
34
35 * All environment from the matched start events is placed in
36 the job, with the list of matched events placed in the
37 $UPSTART_EVENTS variable, replacing the previous singular
38 $UPSTART_EVENT variable.
39
40 * The matches for the "stop on" stanza may refer to variables
41 from the job environment, which comes from the "start on"
42 stanza.
43
44 For example:
45 start on started apache or started httpd
46 stop on stopping $JOB
47
48 * Job environment from the start command or events is
49 available to all scripts, including "pre-stop" and "post-stop".
50
51 * Environment from the matched stop events is only available
52 to the "pre-stop" script, with the list of matched events
53 placed in the $UPSTART_STOP_EVENTS variable so that the list
54 of events that started the job is still available.
55
56 * Environment is no longer lost after a respawn.
57
58 * Environment from the kernel or initramfs may be included in
59 a job by use of the "env NAME" stanza without a value set.
60
61 * The "started" event is no longer emitted if the pre-stop
62 script restarts the job, since the "stopping" event was
63 never emitted.
64
65 * By default, jobs now have the most suitable settings for
66 a daemon process that would match what they would have had
67 by calling daemon(). In particular, this means that the
68 previous "service" stanza is now the default and tasks need
69 to specify a "task" stanza. It also means that if the job
70 really wishes to be a session leader (e.g. getty), it must
71 specify the new "session leader" stanza.
72
73 * Processes that fork once may be supervised with the new
74 "expect fork" stanza, processes that fork twice (most
75 daemons) may be supervised with the new "expect daemon"
76 stanza and processes that do not fork may signal readiness
77 by SIGSTOP with the new "expect stop" stanza.
78
79 * The "pid file", "pid timeout" and "daemon" stanzas have been
80 removed in favour of the new functionality.
81
82 * "respawn" now works for tasks, this will repeat the task
83 until it finishes with a zero exit status or any other
84 specified by "normal exit".
85
86 * "respawn limit" now only affects automatic respawns, not
87 those done by command.
88
89 * If the main process fails to start due to exec() error, or
90 other process setup error, it will not be respawned.
91
92 * "respawn limit" may be "unlimited".
93
94 * The "stalled" event has been removed.
95
96 * "logd" was not maintained, and did not function correctly,
97 so has been removed from the source. The "console logged"
98 stanza has also been removed.
99
100 * New "oom" stanza allows adjustment of the OOM killer
101 priority of the process and may be "never" to inhibit it.
102
103 * The configuration directory has now changed to
104 /etc/init/jobs.d
105
106 * Configuration is still reloaded with inotify, but may be
107 forced by sending init a HUP signal.
108
109 * Support for the STOP, CONT and TERM signals has been
110 removed.
111
112 * libupstart and the native IPC mechanism has been removed,
113 communication is now via D-Bus which is a new dependency.
114
115 * The dependency on D-Bus introduces build-dependencies on
116 pkg-config and Python.
117
118 * The minimal recommended kernel version is now 2.6.24
119
120 * The compat directory has been removed, the utilities are now
121 considered part of Upstart.
122
123 * initctl commands do not support --no-wait yet
124
125 * initctl status with no arguments now shows all jobs.
126
127 * initctl events no longer exists
128
Scott James Remnant5d6466d2007-10-15 01:40:52 +01001290.3.9 2007-10-11 "Highway to the Danger Zone"
130
131 * Fixed crasher caused by starting a job with a no-arguments event.
132
133 * Initialisation order changed so that the control socket is opened
134 and configuration parsed after inherited file descriptors are closed
135 and the console opened. Otherwise if we inherit fewer than the
136 standard three file descriptors (e.g. from OpenVZ) we closed our
137 own control socket, etc. (Bug: #87173)
138
139 * Kill all processes in a supervised process's process group so that
140 we catch looping or sleeping processes that a shell is waiting
141 for. (Bug: #121733)
142
143 * Missing inotify support detected correctly and warning suppressed.
144
145 * Stanza names in configuration may no longer be placed inside quotes.
146
147 * Fix dangling halt and poweroff symlinks when Upstart compiled
148 without --enable-compat=sysv. (Bug: #93356)
149
150 * Fix that --with-included-gettext did not include libintl.a
151 as it should have. (Bug: #117848)
152
153 * Updated hacking requirements to Automake 1.10 and Gettext 0.16.1
154 since this version of Automake makes it easier for package
155 maintainers because it causes us to ship libtool.m4 ourselves.
156
Scott James Remnant7c862ed2007-03-11 19:13:24 +00001570.3.8 2007-03-11 "I had a little drink about an hour ago"
158
159 * Fix an assertion error that occurred whenever a stop event for an
160 instance job was emitted.
161
162 * Correct a bug where calling "stop" from a job without arguments
163 would stop the running job, and attempt to block until it was
164 stopped. This can obviously never happen since it won't stop until
165 stop unblocks.
166
167 * Add "version" and "log-priority" commands to initctl.
168
Scott James Remnant79a3c9a2007-03-09 21:35:31 +00001690.3.7 2007-03-09 "Lines of communication"
170
171 * The "normalexit" stanza has been changed to "normal exit".
172
173 * The "respawn COMMAND" short-cut for specifying both "respawn" and
174 "exec" in the same stanza has been removed. Jobs that previously
175 used syntax such as:
176
177 respawn /sbin/getty 38400 tty1
178
179 Should be changed to use:
180
181 exec /sbin/getty 38400 tty1
182 respawn
183
184 While the shortcut saved a little typing, it caused confusion and
185 hid the fact that "exec" and "script" were both options for
186 respawning services.
187
188 * The "on EVENT" stanza has been removed, change your jobs to use
189 the identical "start on EVENT" instead. This is because the "on"
190 stanza may be useful for other things in future.
191
192 * Stanzas in job definitions may no longer be surrounded by single
193 or double quotes, allowing them to be turned into ordinary
194 tokens by quoting them.
195
196 * Configuration of running jobs is no longer immediately changed
197 when the definition is changed on disk; the job must be stopped
198 first. If the job is an instance job, all instances must be
199 stopped before an instance of the changed job definition will be
200 started.
201
202 This ensures that the post-stop process run when the job is stopped
203 matches the pre-start process run when it was started, and for
204 instance jobs ensures that any locking between them is identical.
205
206 Jobs marked for deletion, or jobs that have not yet replaced
207 another, will not ordinarily show up in the output of initctl
208 "status" or "list" unless addressed by id. They cannot be
209 started or stopped, even when addressed by id.
210
211 * Job definitions may safely omit "exec"/"script"; the job will stay
212 in the running state with no process until it is stopped manually
213 or by an event.
214
215 This allows a service to define hardware configuration; for example
216 the mixer service could restore the ALSA mixer in its pre-start
217 script and save the mixer state in its stop script. "start mixer"
218 would restore the state, "status mixer" would show it was running
219 and "stop mixer" would save the state again and presumably mute it.
220
221 * Sending the SIGPWR signal to init will emit the power-status-changed
222 event. A simple job can hook this event, check the /etc/powerstatus
223 file and take further action.
224
225 * As well as their name, all jobs now also have a unique id exported
226 in the UPSTART_JOB_ID environment variable and viewable with initctl
227 by using the "--show-ids" option to "status" or "list".
228
229 The unique id is changed whenever the job is reloaded from disk, or
230 whenever a new instance is started. "start" and "stop" now default
231 to UPSTART_JOB_ID if no arguments are given (falling back to
232 UPSTART_JOB if that is not present either). This means they act on
233 the current instance of the job, rather than spawning a new instance
234 or stopping all instances.
235
236 "start", "status" and "stop" also accept a new "--by-id" option
237 which makes them expect job ids as arguments instead of job names.
238
239 * The initctl "status" and "list" commands group instances of
240 instance jobs together in their output, rather than repeating them
241 without further clarification. E.g.:
242
243 foo (instance)
244 (start) starting
245 (start) running, process 1000
246 (stop) post-stop, process 1050
247
248 The "stop" command will stop all instances when given the name of
249 an instance job; individual instances can be stopped using "--by-id"
250 after obtaining the id from "status --show-ids".
251
252 * Wildcard patterns of job names to be listed can be given as an
253 argument to the initctl "list" command.
254
255 * Starting and stopping jobs with initctl will now block until the
256 job reaches its goal state, outputting all status changes and
257 process ids until the goal is reached and will also output an error
258 and exit with a non-zero status if the job fails.
259
260 Remember that jobs default to being tasks, so "start" will actually
261 block until the job finishes and returns back to "(stop) waiting".
262 Use the "service" or "respawn" stanza to turn them into services to
263 that they only block until the "(start) running" state is reached.
264
Scott James Remnant4e977172007-02-10 21:24:29 +00002650.3.5 2007-02-10 "Wear flowers in your hair"
266
267 * Serialisation of job state between upstart processes is disabled;
268 though upstart will still re-exec itself when sent the TERM
269 signal, the new copy will not have any of the state of the old.
270 This will be restored in a later release.
271
272 * WARNING: if you have any job declared "console owner" which is
273 run by the "stalled" event, comment out the "start on" stanza
274 before sending the TERM signal -- otherwise the newly started
275 process will start that job, which will kill your running X
276 server.
277
278 * logd and the "console logged" (default) option are currently
279 disabled, pending large-scale changes to the way that this
280 works.
281
282 * Job scripts have been renamed; "start" to "pre-start" and
283 "stop" to "pre-stop".
284
285 * A new "post-start" script has been added, it's run after the
286 main process has been started and the "started" event is not
287 emitted until it finished.
288
289 * A new "pre-stop" script has also been added, it's run when a
290 request or event comes in to stop a job, before the "stopping"
291 event is emitted and before the job is killed. If this restarts
292 the job, it will not be stopped.
293
294 * Job processes now have an UPSTART_JOB environment variable
295 containing the name of the job.
296
297 * initctl start, stop and status will default to using UPSTART_JOB
298 if no arguments are given. Therefore you can just put "stop"
299 or "start" into a job script.
300
301 * Where a job was started or stopped by an event, the processes
302 now have an UPSTART_EVENT environment variable containing the
303 name of the event.
304
305 * Events may now have arguments and environment variables attached,
306 these can be specified with initctl, e.g.
307
308 # initctl emit network-interface-up eth0 -eADDR=00:11:22:33:44:55:66
309
310 * These arguments can be matched in the job by placing them after
311 the event name for the "start on" or "stop on" stanzas:
312
313 start on network-interface-up eth*
314
315 Additional arguments in the event are assumed to match if not
316 specified in the job definition, and wildcards may be used within
317 the job definition as shown above.
318
319 * The arguments are also passed to the script of any job started or
320 stopped by this event as positional arguments, and the environment
321 variables are placed into the environment of the job.
322
323 * The set of events emitted due to a job state change have been
324 completely changed. The new events are as follows:
325
326 started: this is emitted once the job is running and ready, and
327 receives the job name as an argument.
328
329 stopped: this is emitted once the job has been fully stopped. As
330 well as the job name, if the job terminated normally it will have
331 the "ok" argument; otherwise it will have the "failed" argument
332 followed by the name of the script that failed ("running" for the
333 main job) and either an EXIT_STATUS or EXIT_SIGNAL environemtn
334 variable indicating why it failed.
335
336 starting: this is emitted before the job is started (before even
337 the pre-start script is run). Arguments are as "started". The
338 job will not be started until this event has finished.
339
340 stopping: this is emitted before the job is stopped (but after the
341 pre-stop script is run). Arguments are as "stopped". The job will
342 not be stopped until this event has finished.
343
344 These events can be usefully combined as follows.
345
346 If the "hal" job requires "dbus" to be running, and "hal" must be
347 stopped before "dbus" may stop:
348
349 start on started dbus
350 stop on stopping dbus
351
352 If the "tomcat" job believes that it must be running before "apache"
353 can run, and should not be stopped until "apache" has been stopped:
354
355 start on starting apache
356 stop on stopped apache
357
358 * The event named for the job has been completely removed; thus
359 jobs and events no longer share a namespace.
360
361 * Jobs have goals to reach; for a task (the default), the goal is
362 to go from stopped, to started and back to stopped again. This
363 means that when used for the "starting" or "stopping" event, the
364 entire task has to complete before the referenced job can actually
365 be started or stopped.
366
367 Services will normally only want the goal to be to go from stopped
368 to started; thus when used in "starting" in the example above, the
369 referenced job can be started once the service has been started
370 (and not stopped again). A service is defined by specifying either
371 "respawn" or "service" in the definition.
372
373 * The list of exit codes that determine whether the main process
374 failed or succeeded can be specified by the "normalexit"
375 configuration stanza. The arguments to this stanza can be exit
376 codes or signal names, e.g.
377
378 normalexit 1 99 100 INT QUIT
379
380 Zero is implied in the list, unless the job is marked "respawn"
381 since for those jobs, this is the list of exit codes and signals
382 that cause the job to be not respawned.
383
384 * There is no longer a respawning state, or "respawn script". Jobs
385 will instead be stopped and started through the same scripts.
386
387 * Jobs marked with the "instance" stanza can be started multiple
388 times; each time they are started, a new instance is created.
389
390 * If any job whose goal is changed by an event fail to reach their
391 new goal, a further "EVENT-NAME/failed" event will be emitted once
392 the event has finished being handled.
393
394 This can be used to emit, for example, a "path-unmounting" event
395 and to not proceed to "path-unmounted" unless it succeeds.
396
397 * initctl emit will block until the event has been handled; it will
398 also output job status information for any job changed by the event
399 and terminate with an exit status of 1 if any of those jobs failed
400 to reach their new goal.
401
402 * The set of events emitted by the "telinit" compatibility command
403 have been changed. It now only emits a single "runlevel" event,
404 and supplies the new runlevel as an argument to it.
405
406 You should change job files that use:
407
408 start on runlevel-2
409
410 to use the following:
411
412 start on runlevel 2
413
414 This means also that "stop on runlevel" would stop the job on
415 any runlevel change.
416
417 * Neither the "telinit" nor "shutdown" commands now emit a
418 "shutdown" event, in fact, this event has been removed altogether.
419 "shutdown" now simply emits the appropriate runlevel event;
420 the -H and -P arguments set the INIT_HALT variable in the
421 environment of that event, just as it does in sysvinit.
422
423 * Normal output from initctl, etc. is no longer prefixed "initctl:"
424
425 * The "ctrlaltdel" event has been renamed to "control-alt-delete".
426
Scott James Remnantcf64c482007-02-05 23:14:00 +00004270.3.2 2007-02-06 "Could anybody have tampered with your luggage?"
428
429 * Fix leak of inotify file descriptor that could allow any process
430 on the system to remove upstart's watch on its configuration
431 directory.
432
433 * New "emits" configuration stanza, used to list events that are
434 emitted by the job itself. Intended for use by front-ends to
435 draw event graphs and the like.
436
437 * Dropped "depends" configuration stanza and all related code.
438 This will be replaced by the complex state mechanism.
439
440 * Rewritten IPC code to be significantly simpler, with the goal of
441 having a stable interface once we hit the end of this milestone
442 series.
443
444 * Rewritten configuration parser and inotify watch infrastructure
445 to be more maintainable in future.
446
447 * Now supports systems where inotify is disabled.
448
449 * Duplicate configuration stanzas are no longer permitted.
450
451 * Bug fixes, especially concerning malloc failure.
452
Scott James Remnantf642ffa2006-12-13 18:24:22 +00004530.3.1 2006-12-13 "The Gathering"
454
455 * Compilation fixes
456
457 * Bug fixes.
458
459 * Massive improvement to test framework, which should make it much
460 easier to test new features.
461
Scott James Remnantfd029da2006-10-17 19:21:07 +01004620.3.0 2006-10-17
463
464 * Reverted logd behaviour from previous version, it's up to the
465 init scripts to send messages to the console if they wish.
466
467 * Compatibility programs must now be explicitly enabled by using
468 ./configure --enable-compat=sysv
469
470 * "shutdown" and "reboot" are now considered System V compatibility
471 programs, as they emulate the behaviour of those. Dropped some
472 added options to make them fit.
473
474 * All programs given improved --help text.
475
476 * "initctl" rewritten, any sub-command can be run directly by
477 making it a symlink to "initctl" itself.
478
479 * "start", "stop" and "status" are now just symlinks to "initctl";
480 not a separate binary.
481
Scott James Remnant4e58f752006-09-20 06:33:50 +01004820.2.7 2006-09-20
483
484 * logd writes received messages to the console unless "quiet" is
485 on the kernel command-line
486
487 * runaway jobs are now caught when they start, rather than respawn,
488 so stop/start loops are caught
489
490 * Include inotify support for compiling under glibc 2.3
491
Scott James Remnant948ab872006-09-14 10:34:34 +01004920.2.6 2006-09-13
493
494 * Fix major bug on architectures with 64-bit kernel and 32-bit
495 user-land caused by an inconsitency between the behaviour of
496 kernel's compat_sys_waitid() vs. sys_waitid() functions.
497
498 * "halt" now only calls "shutdown -h now"
499
Scott James Remnant760237e2006-09-09 05:38:32 +01005000.2.5 2006-09-09
501
502 * "control-alt-delete" event name changed to "ctrlaltdel".
503
504 * "initctl shutdown EVENT" added that performs the same job as
505 "shutdown" but without all the usual warnings, timings, etc.
506
507 * "logd" has now been written, if installed this is started by init
508 before sending the "startup" call and all jobs with "console logged"
509 (the default) will have their output sent to this daemon. It
510 currently just logs to /var/log/boot.
511
512 * "shutdown -k" implemented.
513
514 * The "shutdown" utility has been changed to generate "system-halt"
515 for "-H", "power-off" for "-P" and just "halt" if only "-h" given.
516
517 * If "shutdown" is run when running under sysvinit, it will now
518 send the appropriate /dev/initctl message to allow upgrades.
519
520 * "telinit S" implemented.
521
522 * Instead of trying to start or stop jobs, "telinit" now just sends
523 "runlevel-X" events.
524
525 * The "telinit" utility now ensures a "shutdown" event is sent
526 before switching to runlevel 0, 1 or 6.
527
528 * If "telinit" is installed and init is called by the super-user,
529 "telinit" is invoked instead.
530
531 * Basic manual pages included.
532
Scott James Remnant7663bfb2006-09-01 19:58:19 +01005330.2.1 2006-09-01
534
535 * Compilation fixes
536
Scott James Remnant12dd7252006-09-01 02:27:04 +01005370.2.0 2006-09-01
538
539 * "shutdown", "reboot", "halt" and "poweroff" utilities provided
540 that match their traditional equivalents.
541
542 * "start", "stop" and "status" utilities provided to start, stop
543 and query the status of jobs respectively.
544
545 * "runlevel" and "telinit" utilities provided for compatibility.
546
547 * "initctl list" will list active jobs.
548
549 * Events vastly simplified to just simple strings.
550
551 * Jobs now generate "jobname/start", "jobname/started",
552 "jobname/stop" and "jobname/stopped" events as they go through
553 state transitions.
554
555 * Services generate a "jobname" event when they are running.
556
557 * Tasks generate a "jobname" event when they have finished.
558
559 * The "shutdown" utility will generate a "shutdown" event followed
560 by one of "maintenance", "reboot", "halt" or "poweroff" or any
561 admin-specified event.
562
563 * "stalled" event generated when no jobs are running or queued.
564
565 * "control-alt-delete" event generated when that key combination
566 is pressed
567
568 * "kbdrequest" event generated when Alt-UpArrow is pressed
569
570 * Runaway respawning services will now be caught.
571
572 * init will re-exec on receipt of the SIGUSR1 signal.
573
Scott James Remnant21679252006-08-25 16:22:13 +02005740.1.1 2006-08-25
575
576 * Minor bug fixes.
577
Scott James Remnant33e64d02006-08-25 14:44:32 +02005780.1.0 2006-08-24
Scott James Remnant8a0cd072006-05-14 18:28:58 +0100579
580 * Initial public release.
581