From 2b583ce6576d4a074ce6f1570b3e60b65c64ae7d Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Fri, 25 Mar 2011 05:07:20 +0100 Subject: use /run instead of /dev/.run Instead of the /dev/.run trick we have currently implemented, we decided to move the early-boot runtime dir to /run. An existing /var/run directory is bind-mounted to /run. If /var/run is already a symlink, no action is taken. An existing /var/lock directory is bind-mounted to /run/lock. If /var/lock is already a symlink, no action is taken. To implement the directory vs. symlink logic, we have a: ConditionPathIsDirectory= now, which is used in the mount units. Skipped mount unit in case of symlink: $ systemctl status var-run.mount var-run.mount - Runtime Directory Loaded: loaded (/lib/systemd/system/var-run.mount) Active: inactive (dead) start condition failed at Fri, 25 Mar 2011 04:51:41 +0100; 6min ago Where: /var/run What: /run CGroup: name=systemd:/system/var-run.mount The systemd rpm needs to make sure to add something like: %pre mkdir -p -m0755 /run >/dev/null 2>&1 || : or it needs to be added to filesystem.rpm. Udev -git already uses /run if that exists, and is writable at bootup. Otherwise it falls back to the current /dev/.udev. Dracut and plymouth need to be adopted to switch from /dev/.run to run too. Cheers, Kay --- src/machine-id-setup.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'src/machine-id-setup.c') diff --git a/src/machine-id-setup.c b/src/machine-id-setup.c index 59a14249e4..98e288e1b5 100644 --- a/src/machine-id-setup.c +++ b/src/machine-id-setup.c @@ -142,20 +142,20 @@ int machine_id_setup(void) { fd = -1; /* Hmm, we couldn't write it? So let's write it to - * /dev/.run/systemd/machine-id as a replacement */ + * /run/systemd/machine-id as a replacement */ - mkdir_p("/dev/.run/systemd", 0755); + mkdir_p("/run/systemd", 0755); - if ((r = write_one_line_file("/dev/.run/systemd/machine-id", id)) < 0) { - log_error("Cannot write /dev/.run/systemd/machine-id: %s", strerror(-r)); + if ((r = write_one_line_file("/run/systemd/machine-id", id)) < 0) { + log_error("Cannot write /run/systemd/machine-id: %s", strerror(-r)); - unlink("/dev/.run/systemd/machine-id"); + unlink("/run/systemd/machine-id"); goto finish; } /* And now, let's mount it over */ - r = mount("/dev/.run/systemd/machine-id", "/etc/machine-id", "bind", MS_BIND|MS_RDONLY, NULL) < 0 ? -errno : 0; - unlink("/dev/.run/systemd/machine-id"); + r = mount("/run/systemd/machine-id", "/etc/machine-id", "bind", MS_BIND|MS_RDONLY, NULL) < 0 ? -errno : 0; + unlink("/run/systemd/machine-id"); if (r < 0) log_error("Failed to mount /etc/machine-id: %s", strerror(-r)); -- cgit v1.2.3-54-g00ecf