On Mon, 25.02.13 16:00, Tom Gundersen ([email protected]) wrote: Two of the units definitely sound like good stuff to have in systemd. But let's first discuss the fstab.sys issue. I am not convinced about that one. Would still prefer to simply have root= and usr= on the kernel cmdline and live without fstab.sys...
> This will: > * mount all configured filesystems (typically the rootfs on /sysroot) > * reload the configuration to pick up anything from the mounted fs (typically > /sysroot/etc/fstab.sys) > * mount any newly configured filesystems (typically /usr on /sysroot/usr, if > applicable) > * shut-down and clean-up any daemons running in the initramfs (typically > udevd) > * switch-root to /sysroot and start the real init > > Cc: Harald Hoyer <[email protected]> > Cc: Dave Reisner <[email protected]> > --- > Makefile.am | 7 ++++++- > units/initrd-cleanup.service | 18 ++++++++++++++++++ > units/initrd-parse-etc.service | 19 +++++++++++++++++++ > units/initrd-switch-root.service | 19 +++++++++++++++++++ > units/initrd-switch-root.target | 16 ++++++++++++++++ > units/initrd-udevadm-cleanup-db.service | 18 ++++++++++++++++++ > 6 files changed, 96 insertions(+), 1 deletion(-) > create mode 100644 units/initrd-cleanup.service > create mode 100644 units/initrd-parse-etc.service > create mode 100644 units/initrd-switch-root.service > create mode 100644 units/initrd-switch-root.target > create mode 100644 units/initrd-udevadm-cleanup-db.service > > diff --git a/Makefile.am b/Makefile.am > index f0f0ebc..aa2164c 100644 > --- a/Makefile.am > +++ b/Makefile.am > @@ -373,7 +373,12 @@ dist_systemunit_DATA = \ > units/systemd-ask-password-console.path \ > units/systemd-udevd-control.socket \ > units/systemd-udevd-kernel.socket \ > - units/system-update.target > + units/system-update.target \ > + units/initrd-parse-etc.service \ > + units/initrd-cleanup.service \ > + units/initrd-switch-root.target \ > + units/initrd-udevadm-cleanup-db.service \ > + units/initrd-switch-root.service > > nodist_systemunit_DATA = \ > units/[email protected] \ > diff --git a/units/initrd-cleanup.service b/units/initrd-cleanup.service > new file mode 100644 > index 0000000..8998696 > --- /dev/null > +++ b/units/initrd-cleanup.service > @@ -0,0 +1,18 @@ > +# This file is part of systemd. > +# > +# systemd is free software; you can redistribute it and/or modify it > +# under the terms of the GNU Lesser General Public License as published by > +# the Free Software Foundation; either version 2.1 of the License, or > +# (at your option) any later version. > + > +[Unit] > +Description=Cleaning Up and Shutting Down Daemons > +DefaultDependencies=no > +ConditionPathExists=/etc/initrd-release > +OnFailure=emergency.target > +Requires=local-fs.target swap.target > +After=local-fs.target swap.target > + > +[Service] > +Type=oneshot > +ExecStart=/usr/bin/systemctl --no-block isolate initrd-switch-root.target > diff --git a/units/initrd-parse-etc.service b/units/initrd-parse-etc.service > new file mode 100644 > index 0000000..4bfbb0f > --- /dev/null > +++ b/units/initrd-parse-etc.service > @@ -0,0 +1,19 @@ > +# This file is part of systemd. > +# > +# systemd is free software; you can redistribute it and/or modify it > +# under the terms of the GNU Lesser General Public License as published by > +# the Free Software Foundation; either version 2.1 of the License, or > +# (at your option) any later version. > + > +[Unit] > +Description=Reload Configuration from the Real Root > +DefaultDependencies=no > +Requires=local-fs.target swap.target > +After=local-fs.target swap.target > +OnFailure=emergency.target > +ConditionPathExists=/etc/initrd-release > + > +[Service] > +Type=oneshot > +ExecStartPre=/usr/bin/systemctl daemon-reload > +ExecStart=/usr/bin/systemctl --no-block start initrd-cleanup.service > diff --git a/units/initrd-switch-root.service > b/units/initrd-switch-root.service > new file mode 100644 > index 0000000..e076b39 > --- /dev/null > +++ b/units/initrd-switch-root.service > @@ -0,0 +1,19 @@ > +# This file is part of systemd. > +# > +# systemd is free software; you can redistribute it and/or modify it > +# under the terms of the GNU Lesser General Public License as published by > +# the Free Software Foundation; either version 2.1 of the License, or > +# (at your option) any later version. > + > +[Unit] > +Description=Switch Root > +DefaultDependencies=no > +ConditionPathExists=/etc/initrd-release > +OnFailure=emergency.target > +AllowIsolate=yes > + > +[Service] > +Type=oneshot > +# we have to use "--force" here, otherwise systemd would umount /run > +ExecStart=/usr/bin/systemctl --no-block --force switch-root /sysroot > +KillMode=none > diff --git a/units/initrd-switch-root.target b/units/initrd-switch-root.target > new file mode 100644 > index 0000000..f706d29 > --- /dev/null > +++ b/units/initrd-switch-root.target > @@ -0,0 +1,16 @@ > +# This file is part of systemd. > +# > +# systemd is free software; you can redistribute it and/or modify it > +# under the terms of the GNU Lesser General Public License as published by > +# the Free Software Foundation; either version 2.1 of the License, or > +# (at your option) any later version. > + > +[Unit] > +Description=Switch Root > +ConditionPathExists=/etc/initrd-release > +DefaultDependencies=no > +Requires=initrd-switch-root.service > +Before=initrd-switch-root.service > +AllowIsolate=yes > +Wants=initrd-udevadm-cleanup-db.service local-fs.target swap.target > systemd-journald.service > +After=initrd-udevadm-cleanup-db.service local-fs.target swap.target > emergency.service emergency.target > diff --git a/units/initrd-udevadm-cleanup-db.service > b/units/initrd-udevadm-cleanup-db.service > new file mode 100644 > index 0000000..983189e > --- /dev/null > +++ b/units/initrd-udevadm-cleanup-db.service > @@ -0,0 +1,18 @@ > +# This file is part of systemd. > +# > +# systemd is free software; you can redistribute it and/or modify it > +# under the terms of the GNU Lesser General Public License as published by > +# the Free Software Foundation; either version 2.1 of the License, or > +# (at your option) any later version. > + > +[Unit] > +Description=Cleanup udevd DB > +DefaultDependencies=no > +ConditionPathExists=/etc/initrd-release > +Conflicts=systemd-udevd.service systemd-udevd-control.socket > systemd-udevd-kernel.socket > +After=systemd-udevd.service systemd-udevd-control.socket > systemd-udevd-kernel.socket > +Before=initrd-switch-root.target > + > +[Service] > +Type=oneshot > +ExecStart=-/usr/bin/udevadm info --cleanup-db Lennart -- Lennart Poettering - Red Hat, Inc. _______________________________________________ systemd-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/systemd-devel
