On Fri, Mar 01, 2013 at 02:30:26PM +0100, Lennart Poettering wrote: > 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... >
I'm not a fan of the fstab.sys idea either. I suggested to Tom that a flag in fstab could be used instead -- something like "x-initrd.mount" to denote mounts that need to be taken care of in early userspace. > > 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 _______________________________________________ systemd-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/systemd-devel
