systemd acceptance, packaging guidelines (was Re: systemd and changes)

Bill Nottingham notting at redhat.com
Tue Aug 24 03:06:32 UTC 2010


(intentionally breaking thread)

Toshio Kuratomi (a.badger at gmail.com) said: 
> Maybe I should start a new thread since this isn't really a bug, but it is
> a blocker -- we need to get some packaging guidelines out for systemd.
> I think that the last message on the subject was this one:
> 
> http://lists.fedoraproject.org/pipermail/devel/2010-July/139483.html
> 
> Could I get a reply as to whether that looks right?

- At the moment, /bin/systemctl is in systemd-units. (I think this
  is a bug. Filed.)
- As long as we're still shipping upstart, the sysv scripts would still
  need included, and would still need to be set up with chkconfig the
  same way.

> As noted in the post, I'm not sure if the outlined procedure correctly
> implements level 1.

I believe it does.

> We should probably also have the scriptlets for implementing level 3 for the
> things basic to the system that require that.

My reading of your mail is different - the case we want to handle is case
#2 (installation of something that starts by default - dbus, NM, etc.)

As I understand it, they would be the same, with the addition of:

%post
if [ 0$1 -eq ]; then
	/bin/systemctl enable <foo.service>
fi

with foo.service having the appropriate [Install] stanza that says where it
should start up. As with SysV scripts, we generally do not start services
by default, so this is rare.

Case #3 that you mentioned is something I don't think we have in Fedora - 
we never start services on package installation.

This, however, is just packaging guidelines. From readng the thread, there
are many things that I think people would like covered with systemd before
they would feel comfortable with it. So, I'm going to attempt to quantify
what would need to be tested and verified. This document focuses on
backwards compatibility. THIS IS GOING TO BE VERY VERBOSE. Comments, changes,
etc. welcome.

BOOTUP
- System boots successfully to GUI, when configured.
- System boots successfully to text mode, when configured.
- System properly handles being passed [1-5], 'single', 'S', 's', '-s',
  booting to the appropriate 'runlevel' (0 and 6 can still work,
  but they're sort of pointless anyway) When booted in this manner,
  '5' will bring up a GUI, and '3' will not.

SINGLE USER MODE
- Exiting single user mode properly returns to the default state.
- single-user mode output is correctly displayed on the console.
 
PLYMOUTH
- plymouth is shown on startup.
- plymouth is quit correctly.
- plymouth is shown on shutdown.
- 'esc' to show details still functions in plymouth.
- an equivalent to /var/log/boot.log still exists, and is populated
  (can be normal syslog)
- plymouth transition from grub -> boot -> X is seamless for KMS cards,
  similar to Fedora 13.

RUNTIME TOOLS
- telinit [0123456] does the proper thing.
- the 'runlevel' command displays correct output if we are in a target
  that is aliased to a runlevel.
- 'halt' shuts down, but does not poweroff.
-- 'halt' supports -p, to power off.
- 'poweroff' shuts down, and powers off.
- 'reboot' shuts down and reboots.
- 'halt', 'poweroff', 'reboot' all support '-f', to force the action.
- 'halt', 'poweroff', 'reboot' all properly log to utmp, wtmp, and
  the audit layer.
- 'shutdown' shall support the following arguments in a compatible manner:
  'r', 'h', 'H', 'P', 'c', 'k', <time>.
- 'telinit' does not error when passed '[Qq]' (to reload its configuration)
  and '[Uu]' to re-exec itself. It can optionally make systemd do a similar
  action, if valid.
- init shall support a mechanism to re-exec itself to not cause dirty
  inodes on shutdown; initscripts will use this method on shutdown.
- the kbdrequest job currently in systemd will be disabled for final release.
- 'ctrl-alt-delete' will reboot the system.

PREFDM
- prefdm starts a configured display manager correctly.
- prefdm starts a installed display manager correctly without additional
  configuration.

CONSOLEKIT
- ConsoleKit properly logs system start, stop, and restart.
- The ConsoleKit shutdown/reboot/halt methods work as expected.
SERIAL CONSOLES
- Booting with a primary serial console (via console=) automatically
  sets up a getty on the console, and sets up securetty to allow for root
  login.
- (optional) Booting with secondary serial consoles does the same.

NON-SERIAL CONSOLES
- By default, 6 gettys will be started in text mode, on tty1-6. 5
  gettys will be started in GUI mode, on tty2-6.
- getty and X will not be started on the same tty.
- (optional) The number of ttys started can be configurable.

ERROR HANDLING
- SELinux automatic relabelling will still function.
- fsck will still function.
- Dropping to an emergency shell in the case where either of these fails
  shall still function.

SELINUX
- No AVCs from the init system in normal use.
- No AVCs when executing any of the cases specified here
- systemd shall still function if booted with selinux=0.

PACKAGING
- Guidelines for packaging systemd units shall be formalized.
- The behavior when both systemd units and SysV services are present on
  the system shall be defined. This includes defined behavior when a
  service appears to be 'enabled' for SysV links while 'disabled' for
  systemd (and vice-versa).
- The syntax of systemd units shall be frozen for the release (all future
  releases? Some set number of releases?)

SERVICE HANDLING
- Running 'chkconfig <foo> <(null)|on|off>' on a service managed by systemd
  will return the correct code/perform an appropriate action.
- Running 'service <foo> <start|stop|...>' on a service managed by systemd
  will perform the appropriate action (via systemctl), and return 
  similar errors.
- Running '/etc/init.d/<foo> <start|stop|...>' will not break the systemd
  environment, while still performing the action specified, and shall return
  similar errors.

GENERAL SANITY
- Booting a system shall achieve a similar result as booting in upstart:
-- The same set of services will be started.
-- The services shall function the same.
-- The same set of devices and filesystems shall be mounted.
-- The same set of devices and filesystems shall be fscked.

ORDERING
- rc.local will run as the final service on bootup.
- gettys will not start until after rc.local.
- prefdm will start coincident to gettys (earlier?)

ADMIN INTERFACE
- The files and paths used by systemd shall be frozen for future releases.
- The basic syntax of systemd commands shall be frozen for future releases.
- The syntax of systemd units shall be frozen for future releases.

ASSORTED RANDOM CONFIGURATIONS
- The system shall properly function with:
-- encrypted /
-- encrypted non-/
-- nfs /
-- iSCSI /
-- LDAP user information
-- IPA/AD user information
-- NIS user information
-- ext* filesystems
-- btrfs filesystems
-- xfs filesystems

ANY REMAINING UPSTART JOBS
- All packaged upstart jobs are modified to have some SysV or systemd-native
  equivalent.

... that's all I have at the moment. I'm sure I'm missing something.

Bill


More information about the devel mailing list