From 80d03e0e3cc47f8a949a8a3b9137aade18df0c21 Mon Sep 17 00:00:00 2001 From: Ing Date: Tue, 23 Sep 2025 18:10:35 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20unpackInitrd=20=E5=87=BD?= =?UTF-8?q?=E6=95=B0=E4=BB=A5=E8=A7=A3=E5=8E=8B=20initrd=20=E6=96=87?= =?UTF-8?q?=E4=BB=B6=EF=BC=8C=E6=94=AF=E6=8C=81=E5=A4=9A=E7=A7=8D=E5=8E=8B?= =?UTF-8?q?=E7=BC=A9=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/func.sh | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/scripts/func.sh b/scripts/func.sh index 72dc97fe..b04b69d1 100755 --- a/scripts/func.sh +++ b/scripts/func.sh @@ -242,6 +242,35 @@ function getModules() { echo "Getting Modules end" } +# unpack initrd +# $1 initrd file +# $2 output path +function unpackInitrd() { + local INITRD_FILE="${1}" + local OUTPUT_PATH="${2}" + + [ -z "${INITRD_FILE}" ] || [ ! -f "${INITRD_FILE}" ] && exit 1 + [ -z "${OUTPUT_PATH}" ] || [ ! -d "${OUTPUT_PATH}" ] && exit 1 + + INITRD_FILE="$(realpath "${INITRD_FILE}")" + OUTPUT_PATH="$(realpath "${OUTPUT_PATH}")" + + mkdir -p "${OUTPUT_PATH}" + local INITRD_FORMAT + INITRD_FORMAT=$(file -b --mime-type "${INITRD_FILE}") + + case "${INITRD_FORMAT}" in + *'x-cpio'*) (cd "${OUTPUT_PATH}" && sudo cpio -idm <"${INITRD_FILE}") >/dev/null 2>&1 ;; + *'x-xz'*) (cd "${OUTPUT_PATH}" && xz -dc "${INITRD_FILE}" | sudo cpio -idm) >/dev/null 2>&1 ;; + *'x-lz4'*) (cd "${OUTPUT_PATH}" && lz4 -dc "${INITRD_FILE}" | sudo cpio -idm) >/dev/null 2>&1 ;; + *'x-lzma'*) (cd "${OUTPUT_PATH}" && lzma -dc "${INITRD_FILE}" | sudo cpio -idm) >/dev/null 2>&1 ;; + *'x-bzip2'*) (cd "${OUTPUT_PATH}" && bzip2 -dc "${INITRD_FILE}" | sudo cpio -idm) >/dev/null 2>&1 ;; + *'gzip'*) (cd "${OUTPUT_PATH}" && gzip -dc "${INITRD_FILE}" | sudo cpio -idm) >/dev/null 2>&1 ;; + *'zstd'*) (cd "${OUTPUT_PATH}" && zstd -dc "${INITRD_FILE}" | sudo cpio -idm) >/dev/null 2>&1 ;; + *) ;; + esac +} + # repack initrd # $1 initrd file # $2 plugin path