mirror of
git://git.openembedded.org/meta-openembedded
synced 2026-01-01 13:58:06 +00:00
dracut: Switch to dracut-ng and upgrade to version 102
The previous dracut 056 was hopelessly outdated. When creating an initramfs from a systemd based system with a recent systemd version, booting failed with this error: [ 1.906055] systemd[1]: Failed to open executor binary '/usr/lib/systemd/systemd-executor' [ 1.912230] systemd[1]: Failed to allocate manager object: No such file or directory [!!!!!!] Failed to allocate manager object [ 1.912480] systemd[1]: Freezing execution dracut-ng took over after development in the original dracut repository stopped. Switched to the new source repository. Dropped two patches upstreamed in dracut-ng. Added a new patch that partially reverts a change that broke creating an initramfs on the host using the cross-compiled sysroot. Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
This commit is contained in:
parent
da13475f00
commit
ae843182b4
|
|
@ -1,35 +0,0 @@
|
|||
From ff5e1a662ba93ba79e2aeaaaec48a2a8ec4b4701 Mon Sep 17 00:00:00 2001
|
||||
From: Yi Zhao <yi.zhao@windriver.com>
|
||||
Date: Thu, 31 Mar 2022 22:22:44 +0800
|
||||
Subject: [PATCH] Guard against __GLIBC_PREREQ for musl libc
|
||||
|
||||
Upstream-Status: Pending
|
||||
|
||||
Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
|
||||
---
|
||||
src/install/util.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/src/install/util.c b/src/install/util.c
|
||||
index 5721de89..784aec48 100644
|
||||
--- a/src/install/util.c
|
||||
+++ b/src/install/util.c
|
||||
@@ -27,6 +27,7 @@
|
||||
|
||||
#include "util.h"
|
||||
|
||||
+#if defined(__GLIBC__)
|
||||
#if __GLIBC_PREREQ(2, 30) == 0
|
||||
#include <sys/syscall.h>
|
||||
#ifndef SYS_gettid
|
||||
@@ -35,6 +36,7 @@
|
||||
|
||||
#define gettid() ((pid_t) syscall(SYS_gettid))
|
||||
#endif /*__GLIBC_PREREQ */
|
||||
+#endif /*__GLIBC__*/
|
||||
|
||||
size_t page_size(void)
|
||||
{
|
||||
--
|
||||
2.25.1
|
||||
|
||||
|
|
@ -0,0 +1,91 @@
|
|||
From 38dea7dd671fd621b563377cfbd95e4783568c6e Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Zolt=C3=A1n=20B=C3=B6sz=C3=B6rm=C3=A9nyi?=
|
||||
<zboszor@gmail.com>
|
||||
Date: Fri, 7 Jun 2024 10:32:40 +0200
|
||||
Subject: [PATCH] feat(dracut-install): split ldd command arguments for
|
||||
execvp()
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
This restores a not-so-subtle feature of previously executing ldd
|
||||
via popen(), i.e. the ability to use a cross-compiled sysroot.
|
||||
|
||||
The ldd command may be passed in via the DRACUT_LDD environment
|
||||
variable, and the command may contain command line arguments.
|
||||
The number of such arguments are not known in advance.
|
||||
|
||||
Split the command into executable and arguments and run it
|
||||
via execvp().
|
||||
|
||||
Fixes: d010fa0d7f8ef42ad31729d027d2e4be6dd6e588
|
||||
Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
|
||||
Upstream-Status: Submitted [https://github.com/dracut-ng/dracut-ng/pull/339]
|
||||
---
|
||||
src/install/dracut-install.c | 47 +++++++++++++++++++++++++++++++++++-
|
||||
1 file changed, 46 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/install/dracut-install.c b/src/install/dracut-install.c
|
||||
index e9708c45..724b27b5 100644
|
||||
--- a/src/install/dracut-install.c
|
||||
+++ b/src/install/dracut-install.c
|
||||
@@ -559,10 +559,55 @@ static int resolve_deps(const char *src)
|
||||
log_debug("%s %s", ldd, fullsrcpath);
|
||||
pid_t ldd_pid;
|
||||
if ((ldd_pid = fork()) == 0) {
|
||||
+ char **cmdline = NULL;
|
||||
+ int start, pos, idx = 0;
|
||||
+ /* Account for at least 2 elements plus the terminating NULL in cmdline */
|
||||
+ int args = 3;
|
||||
+
|
||||
+ /* Estimate the number of space-separated elements in the "ldd" string */
|
||||
+ pos = 0;
|
||||
+ while (isspace(ldd[pos]))
|
||||
+ pos++;
|
||||
+ for (; ldd[pos]; pos++) {
|
||||
+ if (isspace(ldd[pos])) {
|
||||
+ if (pos)
|
||||
+ args++;
|
||||
+ while (isspace(ldd[pos]))
|
||||
+ pos++;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ cmdline = malloc(args * sizeof(char *));
|
||||
+ memset(cmdline, 0, args * sizeof(char *));
|
||||
+
|
||||
+ pos = 0;
|
||||
+ while (isspace(ldd[pos]))
|
||||
+ pos++;
|
||||
+ start = pos;
|
||||
+ for (; ldd[pos]; pos++) {
|
||||
+ while (ldd[pos] && !isspace(ldd[pos]))
|
||||
+ pos++;
|
||||
+
|
||||
+ cmdline[idx] = malloc(pos - start + 1);
|
||||
+ memcpy(cmdline[idx], ldd + start, pos - start);
|
||||
+ cmdline[idx][pos - start] = 0;
|
||||
+ idx++;
|
||||
+
|
||||
+ if (!ldd[pos])
|
||||
+ break;
|
||||
+
|
||||
+ while (isspace(ldd[pos]))
|
||||
+ pos++;
|
||||
+ start = pos;
|
||||
+ }
|
||||
+
|
||||
+ cmdline[idx++] = fullsrcpath;
|
||||
+ cmdline[idx] = NULL;
|
||||
+
|
||||
dup2(fds[1], 1);
|
||||
dup2(fds[1], 2);
|
||||
putenv("LC_ALL=C");
|
||||
- execlp(ldd, ldd, fullsrcpath, (char *)NULL);
|
||||
+ execvp(cmdline[0], cmdline);
|
||||
_exit(errno == ENOENT ? 127 : 126);
|
||||
}
|
||||
close(fds[1]);
|
||||
--
|
||||
2.45.2
|
||||
|
||||
|
|
@ -1,32 +0,0 @@
|
|||
From 7f8ef553b7c433af153d48c6a16b2943780abf67 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Sat, 31 Dec 2022 14:41:52 -0800
|
||||
Subject: [PATCH] install: Do not undef _FILE_OFFSET_BITS
|
||||
|
||||
_FILE_OFFSET_BITS is a feature test macro to determine largefile
|
||||
support. Usually its set to 64 on systems supporting LFS. Its also
|
||||
needed to be set to 64 for supporting 64bit time_t on glibc on 32bit
|
||||
systems. If its undefined explicitly, then 64bit time_t can not be
|
||||
enabled.
|
||||
|
||||
Upstream-Status: Submitted [https://github.com/dracutdevs/dracut/pull/2157]
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
src/install/dracut-install.c | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/src/install/dracut-install.c b/src/install/dracut-install.c
|
||||
index dda0caca..05a67a03 100644
|
||||
--- a/src/install/dracut-install.c
|
||||
+++ b/src/install/dracut-install.c
|
||||
@@ -22,7 +22,6 @@
|
||||
#ifndef _GNU_SOURCE
|
||||
#define _GNU_SOURCE
|
||||
#endif
|
||||
-#undef _FILE_OFFSET_BITS
|
||||
#include <ctype.h>
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
--
|
||||
2.39.0
|
||||
|
||||
|
|
@ -7,11 +7,10 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
|
|||
|
||||
PE = "1"
|
||||
|
||||
SRCREV = "631d5f72a223288aa1f48bb8e8d0313e75947400"
|
||||
SRC_URI = "git://git.kernel.org/pub/scm/boot/dracut/dracut.git;protocol=http;branch=master \
|
||||
SRCREV = "1a8ee6e00bbe017717a5ef9e9bcfefb3b88f629e"
|
||||
SRC_URI = "git://github.com/dracut-ng/dracut-ng.git;protocol=http;branch=main \
|
||||
file://0001-util.h-include-sys-reg.h-when-libc-glibc.patch \
|
||||
file://0001-Guard-against-__GLIBC_PREREQ-for-musl-libc.patch \
|
||||
file://0001-install-Do-not-undef-_FILE_OFFSET_BITS.patch \
|
||||
file://0001-feat-dracut-install-split-ldd-command-arguments-for-.patch \
|
||||
"
|
||||
|
||||
DEPENDS += "kmod"
|
||||
Loading…
Reference in New Issue
Block a user