Publishing details

Changelog

bit-babbler (0.8) unstable; urgency=medium

  * Support hotplugging devices into libvirt guest domains which have names
    containing characters that are not valid as part of a shell variable name.
    Another reminder that the important part of keeping things as simple as
    possible is always the "as possible" bit.

  * Support reading seedd(1) options from a configuration file.  The original
    design plan explicitly avoided this, partly just to keep the code as
    simple and easy to audit as possible, and partly because it was desirable
    to make invocation as simple and foolproof as possible.  The more options
    that something has, the easier it is to make some mistake with running it
    which could have subtle and even serious consequences.  But we are at the
    point now where there are enough real alternative options which are either
    genuinely desirable or needed for some use case, that the balance becomes
    weighted toward being able to keep persistent configuration settings in a
    file rather than having to spell them out on the command line each time.

    The final straw for making this change now was the inability of systemd to
    sanely support the existing simplified configuration interface that was
    provided in /etc/default/seedd for the SysV init script.  When given the
    alternative choices available to us of either adding a shell wrapper to
    do what systemd could not, or forcing people to manually edit or override
    the systemd unit directly to make any configuration change, this was
    clearly the Lesser Evil to embrace if we were going to provide a native
    systemd unit for the system daemon.  The former gains us nothing over the
    existing LSB init script, and the latter would require every user to first
    have a solid grasp of all the non-obvious consequences which can come into
    play when configuring a system which (according to systemd.directives(7))
    "contains 2464 entries in 13 sections, referring to 241 individual manual
    pages" - and where even package maintainers and systemd upstream still
    make mistakes that can take a long time for the real consequences to be
    noticed.  So if we were to provide a systemd unit, it needs to be well
    tested and give people few, if any, reasons to ever need to modify it.

  * Preserve existing configuration on package upgrades.  The new default
    configuration file behaves the same way as the old defaults did.  If the
    settings in /etc/default/seedd have been customised, then on upgrade we
    generate a custom /etc/bit-babbler/seedd.conf implementing the same set
    of options.  The old customised file content will be retained, and can
    be found in /etc/default/seedd.dpkg-old, in case there was anything else
    in it which people might also want to keep, but after checking for that
    it can safely be removed by the system admin.  Nothing from this package
    uses files in /etc/default from this version onward.

  * Two systemd unit files are now included in this package, but only one is
    enabled by default.

    The seedd.service unit provides the same functionality as the SysV init
    script does, and will be used instead of it on systems where systemd is
    running as the init process.  It will start the seedd(1) daemon as soon
    as possible during boot, reading its options from the new configuration
    file, and if feeding entropy to the kernel it will begin doing so as soon
    as the available USB devices are announced to the system by udev.

    The seedd-wait.service oneshot unit is not enabled by default. It provides
    a simple sequence point which may be used to ensure that QA checked seed
    entropy from available BitBabbler devices can be mixed into the kernel's
    pool before other ordinary services which might rely upon it are started.
    This is its default behaviour if it is simply enabled, and ordinarily it
    will not delay the boot for very long, only until udev announces a device
    that we can read some good seed bits from.  By default this will time out
    after 30 seconds if good entropy cannot be obtained, which should be more
    than enough time to get a good seed if that was going to be possible, but
    won't completely cripple the system when it is acceptable for it to still
    be running without having a working BitBabbler attached.

    Additionally, the seedd-wait.service can also be used to place a harder
    constraint on individual services, if there are particular things which
    the local admin does not want started at all if good seed entropy was not
    obtained.  Or it can be configured to divert the boot to a degraded mode
    (such as the single-user mode emergency.target) if the availability of
    good entropy from a BitBabbler should be a hard requirement for the whole
    system.  For more details of its use see the BOOT SEQUENCING section of
    the seedd(1) manual page.

 -- Ron Lee <email address hidden>  Thu, 08 Feb 2018 10:26:52 +1030

Available diffs

Builds

Built packages

Package files