From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from gandalf.ozlabs.org (gandalf.ozlabs.org [150.107.74.76]) by passt.top (Postfix) with ESMTPS id BCD605A0276 for ; Fri, 26 Apr 2024 04:01:17 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gibson.dropbear.id.au; s=202312; t=1714096870; bh=7QUKlKZK9+PbiaMSin87XPopCWgJFBOYfCnkHGgJaVc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=olHFlnhFzkyS4HiMeZ00oKrTR0lgHkZR8WJrFumj6XHH6G39cQpFrTtKIkddEan06 ETLbmenlWDp84Ueh31CZbfnzXg02l3orw3V21Vlrpasr22f2eRXya5TESOe8Ev+jEa D0usO3pyI7IdHI9OFNkeL1el8B22dUHSa5Ib7B7LsXeRNkGwvqvw1Jb/Rf+8VTeQYk zWBEZ01B8Spp7qbKbOJ9TgalIvXrua/gmhESnHmVXJAEcrY7BoMNxLk/jO96HU4Ep2 RvsVHndzEW0FuDo+xz86PWZECtSDGHdwjps4Sn0LPxl2IWbCviAWVdFYsxXOrYvOCl DFFiRwnRi0Y0Q== Received: by gandalf.ozlabs.org (Postfix, from userid 1007) id 4VQbYL6050z4x11; Fri, 26 Apr 2024 12:01:10 +1000 (AEST) From: David Gibson To: Stefano Brivio Subject: [PATCH v2 2/4] Remove stale archivemount support Date: Fri, 26 Apr 2024 12:01:06 +1000 Message-ID: <20240426020108.1522375-3-david@gibson.dropbear.id.au> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20240426020108.1522375-1-david@gibson.dropbear.id.au> References: <20240426020108.1522375-1-david@gibson.dropbear.id.au> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Message-ID-Hash: H2YKRHY4OC44NDGJKJJJ2HIRZJKLM2L6 X-Message-ID-Hash: H2YKRHY4OC44NDGJKJJJ2HIRZJKLM2L6 X-MailFrom: dgibson@gandalf.ozlabs.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: passt-dev@passt.top, lvivier@redhat.com, David Gibson X-Mailman-Version: 3.3.8 Precedence: list List-Id: Development discussion and patches for passt Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: mbuto has two ways of building the initramfs. One is the typical approach of staging its contents in a temporary directory, then building the initramfs with cpio. The other is to create an empty initramfs, mount it with archivemount, and copy things into the mounted archive. However, the archivemount approach is broken. I'm not entirely sure why, but it appears not to properly unmount the archive and retrieve the final. filled version. The upshot is that if archivemount is installed, then mbuto generates an empty, gzip-compressed initramfs instead of whatever it was supposed to. It appears the archivemount approach was there to allow some later changes to the archive without re-running mbuto. However, it's essentially impossible to use this safely - if archivemount still has the archive open for writing, it's not safe to read it concurrently. This appears to have worked by accident with some earlier versions, but doesn't work now. Just remove the archivemount approach entirely. Reported-by: Laurent Vivier Signed-off-by: David Gibson --- mbuto | 41 +++++------------------------------------ 1 file changed, 5 insertions(+), 36 deletions(-) diff --git a/mbuto b/mbuto index a6f80ab..49d032c 100755 --- a/mbuto +++ b/mbuto @@ -368,7 +368,6 @@ cmd_check() { # cleanup() - Remove left-overs on exit, used from trap cleanup() { - [ -n "${ARCHIVEMOUNT}" ] && "${UMOUNT}" "${wd}" 2>/dev/null "${RM}" -rf "${wd}" [ -n "${pkg_tmp}" ] && "${RM}" -f "${pkg_tmp}" [ -n "${compress_test1}" ] && "${RM}" -f "${compress_test1}" @@ -564,16 +563,6 @@ cpio_init() { else OUT="$("${REALPATH}" "${OUT}")" fi - - if [ -n "${ARCHIVEMOUNT}" ]; then - : | "${CPIO}" --create -H newc --quiet | \ - "${GZIP}" > "${OUT}" - fi - fi - - if [ -n "${ARCHIVEMOUNT}" ]; then - "${ARCHIVEMOUNT}" "${OUT}" "${wd}" - info "Mounted CPIO archive ${OUT} at ${wd}" fi } @@ -1099,26 +1088,17 @@ cmds() { [ "${NOSTRIP}" != "y" ] && strip_all - if [ -z "${ARCHIVEMOUNT}" ]; then - ( __out="$("${REALPATH}" "${OUT}")" - "${CD}" "${wd}" - "${FIND}" . | "${CPIO}" --create -H newc --quiet > "${OUT}" - cpio_compress "${__out}" - ) - else - "${SYNC}" - fi + ( __out="$("${REALPATH}" "${OUT}")" + "${CD}" "${wd}" + "${FIND}" . | "${CPIO}" --create -H newc --quiet > "${OUT}" + cpio_compress "${__out}" + ) stats printf "%s" "${OUTPUT}" | \ sed 's,__INITRD__,'"$("${REALPATH}" "${OUT}")"',g' | \ sed 's,__KERNEL__,/boot/vmlinuz-'"${KERNEL}"',g' - - if [ -n "${ARCHIVEMOUNT}" ]; then - trap - EXIT - notice "initramfs mounted at: ${wd}" - fi } # usage() - Print usage and exit @@ -1271,17 +1251,6 @@ else eval "profile_${PROFILE}" || err "profile ${PROFILE} not found" fi -# Check if we can keep the CPIO mounted for convenience as we exit. This isn't -# safe with fakeroot, as contents can't be touched before the environment -# save-file is loaded again, so it needs root (and archivemount). -if [ "${LD_PRELOAD}" = "libfakeroot-sysv.so" ]; then - if command -v archivemount >/dev/null 2>&1; then - notice "Not running as root, won't keep cpio mounted" - fi -elif ! ARCHIVEMOUNT="$(command -v archivemount)"; then - warn "archivemount not available, won't keep cpio mounted" -fi - trap cleanup EXIT cmds "$@" -- 2.44.0