# # generate initramfs of directory # usage: # generate_initramfs # example: # generate_initramfs "./server/boot/stage32_sqfs" "./mnt/openslx.sqfs" "./server/boot/initramfs2" # generate_initramfs "./server/build/stage31" "." "./server/boot/initramfs" generate_initramfs() { [ $# -ne 3 ] && perror "Sanity check failed: generate_initramfs needs exactly two params, but $# were given." cd "$1" || perror "Cannot cd to '$1'" rm -f -- "$3" find $2 | cpio --format="newc" --create | xz --check=crc32 --lzma2=dict=1MiB > "$3" local PS=(${PIPESTATUS[*]}) [ "x${PS[0]}" != "x0" ] && perror "'find $2' in '$(pwd)' failed." [ "x${PS[1]}" != "x0" ] && perror "cpio create failed." [ "x${PS[2]}" != "x0" ] && perror "gzip to '$3' failed." cd - > /dev/null pinfo "Created initramfs of $1 at $3" pinfo "Size: $(du -bsh "$3" | awk 'END {print $1}')" } # generates squashfs of directory # usage: # generate_squashfs generate_squashfs() { [ $# -ne 2 ] && perror "Sanity check failed: generate_squashfs needs exactly two params, but $# were given." [ -d "$1" ] || perror "$1 is not a directory." rm -f -- "$2" mksquashfs "$1" "$2" -comp xz -b 1M -no-recovery >&6 \ || perror "mksquashfs failed ($?)." pinfo "Created squashfs of $1 at $2" pinfo "Size: $(du -bsh "$2" | awk 'END {print $1}')" }