delete the initrd-usr-fs.target
This commit is contained in:
parent
98c74861f2
commit
f857ced99a
240
backport-revert-delete-initrd-usr-fs-target.patch
Normal file
240
backport-revert-delete-initrd-usr-fs-target.patch
Normal file
@ -0,0 +1,240 @@
|
||||
From 29a24ab28e9790680348b1ffab653a321fa49a67 Mon Sep 17 00:00:00 2001
|
||||
From: Lennart Poettering <lennart@poettering.net>
|
||||
Date: Fri, 26 Mar 2021 22:40:40 +0100
|
||||
Subject: [PATCH] fstab-generator: if usr= is specified, mount it to
|
||||
/sysusr/usr/ first.
|
||||
|
||||
This reverts 29a24ab28e9790680348b1ffab653a321fa49a67
|
||||
|
||||
Reason: In systemd 249, at initrd stage, /usr fs will be mounted on
|
||||
/sysroot, or on /sysusr.
|
||||
This will cause sysroot.mount to be run ahead of time. But at this time,
|
||||
the lvm of extra file directory is inactive,
|
||||
This will make the crashed system have to wait 5 minutes. So we revert
|
||||
the commit, and don't mount sysroot in advance.
|
||||
|
||||
Conflict:NA
|
||||
Reference:https://github.com/systemd/systemd/commit/29a24ab28e9790680348b1ffab653a321fa49a67
|
||||
---
|
||||
src/basic/special.h | 1 -
|
||||
src/fstab-generator/fstab-generator.c | 90 ++++----------------------
|
||||
units/initrd-usr-fs.target | 17 -----
|
||||
units/initrd.target | 4 +-
|
||||
units/meson.build | 1 -
|
||||
units/systemd-repart.service.in | 2 +-
|
||||
units/systemd-volatile-root.service.in | 2 +-
|
||||
7 files changed, 17 insertions(+), 100 deletions(-)
|
||||
delete mode 100644 units/initrd-usr-fs.target
|
||||
|
||||
diff --git a/src/basic/special.h b/src/basic/special.h
|
||||
index 78f22f1..8b01df8 100644
|
||||
--- a/src/basic/special.h
|
||||
+++ b/src/basic/special.h
|
||||
@@ -37,7 +37,6 @@
|
||||
#define SPECIAL_INITRD_FS_TARGET "initrd-fs.target"
|
||||
#define SPECIAL_INITRD_ROOT_DEVICE_TARGET "initrd-root-device.target"
|
||||
#define SPECIAL_INITRD_ROOT_FS_TARGET "initrd-root-fs.target"
|
||||
-#define SPECIAL_INITRD_USR_FS_TARGET "initrd-usr-fs.target"
|
||||
#define SPECIAL_REMOTE_FS_TARGET "remote-fs.target" /* LSB's $remote_fs */
|
||||
#define SPECIAL_REMOTE_FS_PRE_TARGET "remote-fs-pre.target"
|
||||
#define SPECIAL_SWAP_TARGET "swap.target"
|
||||
diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c
|
||||
index a4e3ea5..54bfbc2 100644
|
||||
--- a/src/fstab-generator/fstab-generator.c
|
||||
+++ b/src/fstab-generator/fstab-generator.c
|
||||
@@ -758,10 +758,6 @@ static int add_sysroot_mount(void) {
|
||||
static int add_sysroot_usr_mount(void) {
|
||||
_cleanup_free_ char *what = NULL;
|
||||
const char *opts;
|
||||
- int r;
|
||||
-
|
||||
- /* Returns 0 if we didn't do anything, > 0 if we either generated a unit for the /usr/ mount, or we
|
||||
- * know for sure something else did */
|
||||
|
||||
if (!arg_usr_what && !arg_usr_fstype && !arg_usr_options)
|
||||
return 0;
|
||||
@@ -785,23 +781,8 @@ static int add_sysroot_usr_mount(void) {
|
||||
return log_oom();
|
||||
}
|
||||
|
||||
- if (isempty(arg_usr_what)) {
|
||||
- log_debug("Could not find a usr= entry on the kernel command line.");
|
||||
+ if (!arg_usr_what)
|
||||
return 0;
|
||||
- }
|
||||
-
|
||||
- if (streq(arg_usr_what, "gpt-auto")) {
|
||||
- /* This is handled by the gpt-auto generator */
|
||||
- log_debug("Skipping /usr/ directory handling, as gpt-auto was requested.");
|
||||
- return 1; /* systemd-gpt-auto-generator will generate a unit for this, hence report that a
|
||||
- * unit file is being created for the host /usr/ mount. */
|
||||
- }
|
||||
-
|
||||
- if (path_equal(arg_usr_what, "/dev/nfs")) {
|
||||
- /* This is handled by the initrd (if at all supported, that is) */
|
||||
- log_debug("Skipping /usr/ directory handling, as /dev/nfs was requested.");
|
||||
- return 1; /* As above, report that NFS code will create the unit */
|
||||
- }
|
||||
|
||||
what = fstab_node_to_udev_node(arg_usr_what);
|
||||
if (!what)
|
||||
@@ -814,62 +795,17 @@ static int add_sysroot_usr_mount(void) {
|
||||
else
|
||||
opts = arg_usr_options;
|
||||
|
||||
- /* When mounting /usr from the initrd, we add an extra level of indirection: we first mount the /usr/
|
||||
- * partition to /sysusr/usr/, and then afterwards bind mount that to /sysroot/usr/. We do this so
|
||||
- * that we can cover for systems that initially only have a /usr/ around and where the root fs needs
|
||||
- * to be synthesized, based on configuration included in /usr/, e.g. systemd-repart. Software like
|
||||
- * this should order itself after initrd-usr-fs.target and before initrd-fs.target; and it should
|
||||
- * look into both /sysusr/ and /sysroot/ for the configuration data to apply. */
|
||||
-
|
||||
- log_debug("Found entry what=%s where=/sysusr/usr type=%s opts=%s", what, strna(arg_usr_fstype), strempty(opts));
|
||||
-
|
||||
- r = add_mount(arg_dest,
|
||||
- what,
|
||||
- "/sysusr/usr",
|
||||
- NULL,
|
||||
- arg_usr_fstype,
|
||||
- opts,
|
||||
- is_device_path(what) ? 1 : 0, /* passno */
|
||||
- 0,
|
||||
- SPECIAL_INITRD_USR_FS_TARGET,
|
||||
- "/proc/cmdline");
|
||||
- if (r < 0)
|
||||
- return r;
|
||||
-
|
||||
- log_debug("Synthesizing entry what=/sysusr/usr where=/sysrootr/usr opts=bind");
|
||||
-
|
||||
- r = add_mount(arg_dest,
|
||||
- "/sysusr/usr",
|
||||
- "/sysroot/usr",
|
||||
- NULL,
|
||||
- NULL,
|
||||
- "bind",
|
||||
- 0,
|
||||
- 0,
|
||||
- SPECIAL_INITRD_FS_TARGET,
|
||||
- "/proc/cmdline");
|
||||
- if (r < 0)
|
||||
- return r;
|
||||
-
|
||||
- return 1;
|
||||
-}
|
||||
-
|
||||
-static int add_sysroot_usr_mount_or_fallback(void) {
|
||||
- int r;
|
||||
-
|
||||
- r = add_sysroot_usr_mount();
|
||||
- if (r != 0)
|
||||
- return r;
|
||||
-
|
||||
- /* OK, so we didn't write anything out for /sysusr/usr/ nor /sysroot/usr/. In this case, let's make
|
||||
- * sure that initrd-usr-fs.target is at least ordered after sysroot.mount so that services that order
|
||||
- * themselves get the guarantee that /usr/ is definitely mounted somewhere. */
|
||||
-
|
||||
- return generator_add_symlink(
|
||||
- arg_dest,
|
||||
- SPECIAL_INITRD_USR_FS_TARGET,
|
||||
- "requires",
|
||||
- "sysroot.mount");
|
||||
+ log_debug("Found entry what=%s where=/sysroot/usr type=%s", what, strna(arg_usr_fstype));
|
||||
+ return add_mount(arg_dest,
|
||||
+ what,
|
||||
+ "/sysroot/usr",
|
||||
+ NULL,
|
||||
+ arg_usr_fstype,
|
||||
+ opts,
|
||||
+ is_device_path(what) ? 1 : 0, /* passno */
|
||||
+ 0,
|
||||
+ SPECIAL_INITRD_FS_TARGET,
|
||||
+ "/proc/cmdline");
|
||||
}
|
||||
|
||||
static int add_volatile_root(void) {
|
||||
@@ -1031,7 +967,7 @@ static int run(const char *dest, const char *dest_early, const char *dest_late)
|
||||
if (in_initrd()) {
|
||||
r = add_sysroot_mount();
|
||||
|
||||
- r2 = add_sysroot_usr_mount_or_fallback();
|
||||
+ r2 = add_sysroot_usr_mount();
|
||||
|
||||
r3 = add_volatile_root();
|
||||
} else
|
||||
diff --git a/units/initrd-usr-fs.target b/units/initrd-usr-fs.target
|
||||
deleted file mode 100644
|
||||
index 7219655..0000000
|
||||
--- a/units/initrd-usr-fs.target
|
||||
+++ /dev/null
|
||||
@@ -1,17 +0,0 @@
|
||||
-# SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
-#
|
||||
-# 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=Initrd /usr File System
|
||||
-Documentation=man:systemd.special(7)
|
||||
-AssertPathExists=/etc/initrd-release
|
||||
-OnFailure=emergency.target
|
||||
-OnFailureJobMode=replace-irreversibly
|
||||
-DefaultDependencies=no
|
||||
-Conflicts=shutdown.target
|
||||
diff --git a/units/initrd.target b/units/initrd.target
|
||||
index fc8fbff..655158a 100644
|
||||
--- a/units/initrd.target
|
||||
+++ b/units/initrd.target
|
||||
@@ -14,6 +14,6 @@ OnFailure=emergency.target
|
||||
OnFailureJobMode=replace-irreversibly
|
||||
AssertPathExists=/etc/initrd-release
|
||||
Requires=basic.target
|
||||
-Wants=initrd-root-fs.target initrd-root-device.target initrd-fs.target initrd-usr-fs.target initrd-parse-etc.service
|
||||
-After=initrd-root-fs.target initrd-root-device.target initrd-fs.target initrd-usr-fs.target basic.target rescue.service rescue.target
|
||||
+Wants=initrd-root-fs.target initrd-root-device.target initrd-fs.target initrd-parse-etc.service
|
||||
+After=initrd-root-fs.target initrd-root-device.target initrd-fs.target basic.target rescue.service rescue.target
|
||||
AllowIsolate=yes
|
||||
diff --git a/units/meson.build b/units/meson.build
|
||||
index df6741b..31fedf5 100644
|
||||
--- a/units/meson.build
|
||||
+++ b/units/meson.build
|
||||
@@ -38,7 +38,6 @@ units = [
|
||||
['initrd-switch-root.service', 'ENABLE_INITRD'],
|
||||
['initrd-switch-root.target', 'ENABLE_INITRD'],
|
||||
['initrd-udevadm-cleanup-db.service', 'ENABLE_INITRD'],
|
||||
- ['initrd-usr-fs.target', 'ENABLE_INITRD'],
|
||||
['initrd.target', 'ENABLE_INITRD'],
|
||||
['kexec.target', ''],
|
||||
['ldconfig.service', 'ENABLE_LDCONFIG',
|
||||
diff --git a/units/systemd-repart.service.in b/units/systemd-repart.service.in
|
||||
index 92e0a9b..f39a990 100644
|
||||
--- a/units/systemd-repart.service.in
|
||||
+++ b/units/systemd-repart.service.in
|
||||
@@ -12,7 +12,7 @@ Description=Repartition Root Disk
|
||||
Documentation=man:systemd-repart.service(8)
|
||||
DefaultDependencies=no
|
||||
Conflicts=shutdown.target
|
||||
-After=initrd-usr-fs.target
|
||||
+After=sysroot.mount
|
||||
Before=initrd-root-fs.target shutdown.target
|
||||
ConditionVirtualization=!container
|
||||
ConditionDirectoryNotEmpty=|/usr/lib/repart.d
|
||||
diff --git a/units/systemd-volatile-root.service.in b/units/systemd-volatile-root.service.in
|
||||
index 5a0ec89..37eb23c 100644
|
||||
--- a/units/systemd-volatile-root.service.in
|
||||
+++ b/units/systemd-volatile-root.service.in
|
||||
@@ -12,7 +12,7 @@ Description=Enforce Volatile Root File Systems
|
||||
Documentation=man:systemd-volatile-root.service(8)
|
||||
DefaultDependencies=no
|
||||
Conflicts=shutdown.target
|
||||
-After=sysroot.mount sysroot-usr.mount systemd-repart.service
|
||||
+After=sysroot.mount systemd-repart.service
|
||||
Before=initrd-root-fs.target shutdown.target
|
||||
AssertPathExists=/etc/initrd-release
|
||||
|
||||
--
|
||||
2.27.0
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
Name: systemd
|
||||
Url: https://www.freedesktop.org/wiki/Software/systemd
|
||||
Version: 249
|
||||
Release: 35
|
||||
Release: 36
|
||||
License: MIT and LGPLv2+ and GPLv2+
|
||||
Summary: System and Service Manager
|
||||
|
||||
@ -111,6 +111,7 @@ Patch6030: backport-core-replace-slice-dependencies-as-they-get-added.patch
|
||||
Patch6031: backport-journal-Only-move-to-objects-when-necessary.patch
|
||||
Patch6032: backport-scsi_id-retry-inquiry-ioctl-if-host_byte-is-DID_TRAN.patch
|
||||
Patch6033: backport-revert-units-add-ProtectClock-yes.patch
|
||||
Patch6034: backport-revert-delete-initrd-usr-fs-target.patch
|
||||
|
||||
BuildRequires: gcc, gcc-c++
|
||||
BuildRequires: libcap-devel, libmount-devel, pam-devel, libselinux-devel
|
||||
@ -921,7 +922,6 @@ fi
|
||||
/usr/lib/sysusers.d/systemd.conf
|
||||
/usr/lib/sysusers.d/basic.conf
|
||||
/usr/lib/systemd/system/hwclock-save.service
|
||||
/usr/lib/systemd/system/initrd-usr-fs.target
|
||||
/usr/lib/systemd/system/sysinit.target.wants/hwclock-save.service
|
||||
%{_systemddir}/systemd-update-done
|
||||
%{_systemddir}/systemd-update-utmp
|
||||
@ -1514,6 +1514,9 @@ fi
|
||||
%{_libdir}/security/pam_systemd.so
|
||||
|
||||
%changelog
|
||||
* Fri Sep 16 2022 yangmingtai <yangmingtai@huawei.com> -249-36
|
||||
- revert:delete the initrd-usr-fs.target
|
||||
|
||||
* Wed Sep 14 2022 xujing <xujing125@huawei.com> -249-35
|
||||
- revert add ProtectClock=yes
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user