main/postmarketos-mkinitfs: avoid storing initramfs-extra twice (!932)
At the moment we store the same initramfs-extra twice on the file system: - /boot/initramfs-<flavor>-extra - /var/cache/postmarketos-mkinitfs/initramfs-<flavor>-extra_<hash> The second copy is exactly the same file, just with the <hash> (for caching) appended to the filename. We can avoid this by appending the hash directly to the filename on the boot partition, i.e. - /boot/initramfs-<flavor>-extra_<hash> This is possible because we only reference initramfs-extra from the main initramfs, and we already replace the path in it dynamically. It will just let the main initramfs load -extra_<hash> instead of just -extra. This saves a few megabytes of disk space on the rootfs.
This commit is contained in:
parent
a415548b1d
commit
24fa68c9b6
2 changed files with 13 additions and 15 deletions
|
@ -1,5 +1,5 @@
|
||||||
pkgname=postmarketos-mkinitfs
|
pkgname=postmarketos-mkinitfs
|
||||||
pkgver=0.9.0
|
pkgver=0.9.1
|
||||||
pkgrel=0
|
pkgrel=0
|
||||||
pkgdesc="Tool to generate initramfs images for postmarketOS"
|
pkgdesc="Tool to generate initramfs images for postmarketOS"
|
||||||
url="https://postmarketos.org"
|
url="https://postmarketos.org"
|
||||||
|
@ -23,6 +23,7 @@ package() {
|
||||||
"$pkgdir/sbin/mkinitfs"
|
"$pkgdir/sbin/mkinitfs"
|
||||||
mkdir -p "$pkgdir/etc/postmarketos-mkinitfs/hooks/"
|
mkdir -p "$pkgdir/etc/postmarketos-mkinitfs/hooks/"
|
||||||
}
|
}
|
||||||
|
|
||||||
sha512sums="1d49db8a48ad513cc548b8a0ea23cc64518e71c93863155b4e9d2271fb46090506331c03d6955d693c8568c248ecc76b218efe4a6f6bba57c41c5f6d775dc61b init.sh.in
|
sha512sums="1d49db8a48ad513cc548b8a0ea23cc64518e71c93863155b4e9d2271fb46090506331c03d6955d693c8568c248ecc76b218efe4a6f6bba57c41c5f6d775dc61b init.sh.in
|
||||||
3bcec7b35ced7e87c301f71a892e54aa40983396e2ebaa3c8cbd84c91f711b3ca0e30fbc3104b1a1018ec1af51844ba90a63d380359b51db6242562d21776ed0 init_functions.sh
|
3bcec7b35ced7e87c301f71a892e54aa40983396e2ebaa3c8cbd84c91f711b3ca0e30fbc3104b1a1018ec1af51844ba90a63d380359b51db6242562d21776ed0 init_functions.sh
|
||||||
eaad43a846eea96abe1bb876369b0925ab52a141545b13099c634f9422017b5e57f809274ae89c0b53ade1db2c5cc4e96bb9841ad933d68f7664543992e8391b mkinitfs.sh"
|
3f46fc98f1f8839153858efb390abd6e2ef655ad46e471d14ab21c2a187776b4b5612aa4f25f136bb52cdcb9143169163ad73d539194459fcad3a8d42fc97bcd mkinitfs.sh"
|
||||||
|
|
|
@ -335,10 +335,10 @@ append_or_copy_dtb()
|
||||||
}
|
}
|
||||||
|
|
||||||
# Create the initramfs-extra archive
|
# Create the initramfs-extra archive
|
||||||
# $1: outfile
|
# Updates $outfile_extra with path to cached file (hash appended to filename)
|
||||||
generate_initramfs_extra()
|
generate_initramfs_extra()
|
||||||
{
|
{
|
||||||
echo "==> initramfs: creating $1"
|
echo "==> initramfs: creating $outfile_extra"
|
||||||
|
|
||||||
osk_conf="$(get_osk_config)"
|
osk_conf="$(get_osk_config)"
|
||||||
if [ $? -eq 1 ]; then
|
if [ $? -eq 1 ]; then
|
||||||
|
@ -346,19 +346,15 @@ generate_initramfs_extra()
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Ensure cache folder exists
|
# Generate output filename (initfs_extra_cache) by hashing all input files
|
||||||
mkinitfs_cache_dir="/var/cache/postmarketos-mkinitfs"
|
|
||||||
mkdir -p "$mkinitfs_cache_dir"
|
|
||||||
|
|
||||||
# Generate cache output filename (initfs_extra_cache) by hashing all input files
|
|
||||||
initfs_extra_files=$(echo "$BINARIES_EXTRA$osk_conf" | xargs -0 -I{} sh -c 'ls $1 2>/dev/null' -- {} | sort -u)
|
initfs_extra_files=$(echo "$BINARIES_EXTRA$osk_conf" | xargs -0 -I{} sh -c 'ls $1 2>/dev/null' -- {} | sort -u)
|
||||||
initfs_extra_files_hashes="$(md5sum $initfs_extra_files)"
|
initfs_extra_files_hashes="$(md5sum $initfs_extra_files)"
|
||||||
initfs_extra_hash="$(echo "$initfs_extra_files_hashes" | md5sum | awk '{ print $1 }')"
|
initfs_extra_hash="$(echo "$initfs_extra_files_hashes" | md5sum | awk '{ print $1 }')"
|
||||||
initfs_extra_cache="$mkinitfs_cache_dir/$(basename $1)_${initfs_extra_hash}"
|
initfs_extra_cache="${outfile_extra}_${initfs_extra_hash}"
|
||||||
|
|
||||||
if ! [ -e "$initfs_extra_cache" ]; then
|
if ! [ -e "$initfs_extra_cache" ]; then
|
||||||
# If a cached file is missing, clear the whole cache and create it
|
# Delete old initramfs-extra_<hash> files
|
||||||
rm -f ${mkinitfs_cache_dir}/*
|
rm -f "$outfile_extra"_*
|
||||||
|
|
||||||
# Set up initramfs-extra in temp folder
|
# Set up initramfs-extra in temp folder
|
||||||
tmpdir_extra=$(mktemp -d /tmp/mkinitfs.XXXXXX)
|
tmpdir_extra=$(mktemp -d /tmp/mkinitfs.XXXXXX)
|
||||||
|
@ -369,13 +365,16 @@ generate_initramfs_extra()
|
||||||
rm -rf "$tmpdir_extra"
|
rm -rf "$tmpdir_extra"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cp "$initfs_extra_cache" "$1"
|
outfile_extra="$initfs_extra_cache"
|
||||||
}
|
}
|
||||||
|
|
||||||
# initialize
|
# initialize
|
||||||
source_deviceinfo
|
source_deviceinfo
|
||||||
parse_commandline "$1" "$2" "$3"
|
parse_commandline "$1" "$2" "$3"
|
||||||
check_hook_files
|
check_hook_files
|
||||||
|
|
||||||
|
generate_initramfs_extra
|
||||||
|
|
||||||
echo "==> initramfs: creating $outfile"
|
echo "==> initramfs: creating $outfile"
|
||||||
tmpdir=$(mktemp -d /tmp/mkinitfs.XXXXXX)
|
tmpdir=$(mktemp -d /tmp/mkinitfs.XXXXXX)
|
||||||
|
|
||||||
|
@ -402,6 +401,4 @@ create_bootimg
|
||||||
|
|
||||||
rm -rf "$tmpdir"
|
rm -rf "$tmpdir"
|
||||||
|
|
||||||
generate_initramfs_extra "$outfile_extra"
|
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
|
Loading…
Reference in a new issue