mirror of
https://github.com/systemd/systemd.git
synced 2024-11-27 12:13:33 +08:00
initrd: add unit files needed for basic systemd-in-initrd support
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) * 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 For an example of what files should be included in an initramfs based on this see <https://mailman.archlinux.org/pipermail/arch-projects/2013-February/003628.html>. Cc: Harald Hoyer <harald.hoyer@gmail.com> Cc: Dave Reisner <d@falconindy.com>
This commit is contained in:
parent
3d22d1ab57
commit
cf84347794
@ -379,7 +379,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/getty@.service \
|
||||
|
18
units/initrd-cleanup.service
Normal file
18
units/initrd-cleanup.service
Normal file
@ -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
|
19
units/initrd-parse-etc.service
Normal file
19
units/initrd-parse-etc.service
Normal file
@ -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
|
19
units/initrd-switch-root.service
Normal file
19
units/initrd-switch-root.service
Normal file
@ -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
|
16
units/initrd-switch-root.target
Normal file
16
units/initrd-switch-root.target
Normal file
@ -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
|
18
units/initrd-udevadm-cleanup-db.service
Normal file
18
units/initrd-udevadm-cleanup-db.service
Normal file
@ -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
|
Loading…
Reference in New Issue
Block a user