usr-merged systems are default since bookworm [0]. the proxmox-restore-daemon otoh uses absolute paths to execute commands inside the initramfs, without having a PATH set (which would be used by Command::new (and execvpe(2) to resolve a relative command).
merging all directories as on regular debian system ensures that the restore-daemon does not need adapations based on the paths used in upstream (and our) debian packages. Found while looking through potential pitfalls due to ZFS usrmerge. The change to the dpkg-deb invocation is based on what a quick look through dpkg-sources [1] say dpkg does to unpack archives, as `dpkg-deb -x` removed the symlinks to create a directory. [0] https://wiki.debian.org/UsrMerge [1] https://salsa.debian.org/dpkg-team/dpkg/-/blob/main/src/main/unpack.c?ref_type=heads#L1544 Signed-off-by: Stoiko Ivanov <s.iva...@proxmox.com> --- src/build_initramfs.sh | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/build_initramfs.sh b/src/build_initramfs.sh index 1ed0177..52a50c3 100755 --- a/src/build_initramfs.sh +++ b/src/build_initramfs.sh @@ -15,7 +15,12 @@ if [ -d pkgs ]; then NO_DOWNLOAD="1" fi cd "$BUILDDIR" -mkdir "$ROOT" +mkdir -p "$ROOT/usr" + +for dir in "bin" "sbin" "lib" "lib32" "lib64" ; do + mkdir "$ROOT/usr/$dir" + ln -sr "$ROOT/usr/$dir" "$ROOT/$dir" +done # adds necessary packages to initramfs build root folder add_pkgs() { @@ -44,7 +49,7 @@ add_pkgs() { fi if [ -z "$DOWNLOAD_ONLY" ]; then for deb in pkgs/$debdir/*.deb; do - dpkg-deb -x "$deb" "$ROOT" + dpkg-deb --fsys-tarfile "$deb" |tar -C "$ROOT" --keep-directory-symlink -x done fi } -- 2.39.5 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel