diff --git a/src/install/dracut-install.c b/src/install/dracut-install.c index b1b2391b..6cee3f8e 100644 --- a/src/install/dracut-install.c +++ b/src/install/dracut-install.c @@ -440,7 +440,7 @@ normal_copy: const char *preservation = (geteuid() == 0 && no_xattr == false) ? "--preserve=mode,xattr,timestamps,ownership" : "--preserve=mode,timestamps,ownership"; if (pid == 0) { - execlp("cp", "cp", "--reflink=auto", "--sparse=auto", preservation, "-fL", src, dst, NULL); + execlp("cp", "cp", "--remove-destination", "--reflink=auto", "--sparse=auto", preservation, "-fL", src, dst, NULL); _exit(errno == ENOENT ? 127 : 126); } @@ -1203,6 +1203,8 @@ static int resolve_deps(const char *src, Hashmap *pdeps) char *p, *q; for (p = &shebang[2]; *p && isspace(*p); p++) ; for (q = p; *q && (!isspace(*q)); q++) ; + if (strncmp(p, "/bin/ash", q - p) == 0) + goto finish; char *interpreter = strndup(p, q - p); log_debug("Script install: '%s'", interpreter); ret = dracut_install(interpreter, interpreter, false, true, false);