mirror of
https://github.com/morgan9e/systemd
synced 2026-04-14 00:14:32 +09:00
The idea is to use this when building an image to mark the image as not needing updates after the reboot. In general it is impossible to say if any of the early boot update services can be safely skipped, except when the creator of the image knows all the contents there and has made sure that all the updates have been processed. (This is in fact what happens in a typical package-based installation: the packages have scriptlets which implement the changes during or after the installation process.) With this patch, the image build process can do 'systemd-update-done --root=…' at the appropriate point to avoid triggering of ldconfig.service, systemd-hwdb-update.service, etc. I didn't write --image=, because it doesn't seem immediately useful. The approach with --root is most useful when we're building the image "offline", which means that we have a directory we're working on.
95 lines
4.2 KiB
XML
95 lines
4.2 KiB
XML
<?xml version="1.0"?>
|
|
<!--*-nxml-*-->
|
|
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
|
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
|
|
<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
|
|
<refentry id="systemd-update-done.service" xmlns:xi="http://www.w3.org/2001/XInclude">
|
|
|
|
<refentryinfo>
|
|
<title>systemd-update-done.service</title>
|
|
<productname>systemd</productname>
|
|
</refentryinfo>
|
|
|
|
<refmeta>
|
|
<refentrytitle>systemd-update-done.service</refentrytitle>
|
|
<manvolnum>8</manvolnum>
|
|
</refmeta>
|
|
|
|
<refnamediv>
|
|
<refname>systemd-update-done.service</refname>
|
|
<refname>systemd-update-done</refname>
|
|
<refpurpose>Mark <filename>/etc/</filename> and <filename>/var/</filename> as fully updated</refpurpose>
|
|
</refnamediv>
|
|
|
|
<refsynopsisdiv>
|
|
<para><filename>systemd-update-done.service</filename></para>
|
|
<para><filename>/usr/lib/systemd/systemd-update-done</filename></para>
|
|
</refsynopsisdiv>
|
|
|
|
<refsect1>
|
|
<title>Description</title>
|
|
|
|
<para><filename>systemd-update-done.service</filename> is a
|
|
service that is invoked as part of the first boot after the vendor
|
|
operating system resources in <filename>/usr/</filename> have been
|
|
updated. This is useful to implement offline updates of
|
|
<filename>/usr/</filename> which might require updates to
|
|
<filename>/etc/</filename> or <filename>/var/</filename> on the
|
|
following boot.</para>
|
|
|
|
<para><filename>systemd-update-done.service</filename> updates the file modification time (mtime) stored
|
|
in and "on" the files <filename>/etc/.updated</filename> and <filename>/var/.updated</filename> to the
|
|
modification time of the <filename>/usr/</filename> directory, unless the stamp files are already newer.
|
|
(The timestamp is stored as the mtime field on the file, but also <emphasis>in</emphasis> the file
|
|
to support filesystems that do not store full timestamp precision.)</para>
|
|
|
|
<para>Services that shall run after offline upgrades of
|
|
<filename>/usr/</filename> should order themselves before
|
|
<filename>systemd-update-done.service</filename>, and use the
|
|
<varname>ConditionNeedsUpdate=</varname> (see
|
|
<citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>)
|
|
condition to make sure to run when <filename>/etc/</filename> or
|
|
<filename>/var/</filename> are older than <filename>/usr/</filename>
|
|
according to the modification times of the files described above.
|
|
This requires that updates to <filename>/usr/</filename> are always
|
|
followed by an update of the modification time of
|
|
<filename>/usr/</filename>, for example by invoking
|
|
<citerefentry project='man-pages'><refentrytitle>touch</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
|
on it.</para>
|
|
|
|
<para>Note that if the <varname>systemd.condition_needs_update=</varname> kernel command line option is
|
|
used it overrides the <varname>ConditionNeedsUpdate=</varname> unit condition checks. In that case
|
|
<filename>systemd-update-done.service</filename> will not reset the condition state until a follow-up
|
|
reboot where the kernel switch is not specified anymore.</para>
|
|
</refsect1>
|
|
|
|
<refsect1>
|
|
<title>Options</title>
|
|
|
|
<para>The following options are understood:</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><option>--root=<replaceable>root</replaceable></option></term>
|
|
<listitem><para>Takes a directory path as an argument. The program
|
|
will operate on paths below the specified root directory.
|
|
</para>
|
|
|
|
<xi:include href="version-info.xml" xpointer="v258"/></listitem>
|
|
</varlistentry>
|
|
|
|
<xi:include href="standard-options.xml" xpointer="help" />
|
|
</variablelist>
|
|
</refsect1>
|
|
|
|
<refsect1>
|
|
<title>See Also</title>
|
|
<para><simplelist type="inline">
|
|
<member><citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry></member>
|
|
<member><citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry></member>
|
|
<member><citerefentry project='man-pages'><refentrytitle>touch</refentrytitle><manvolnum>1</manvolnum></citerefentry></member>
|
|
</simplelist></para>
|
|
</refsect1>
|
|
|
|
</refentry>
|