1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
#!/bin/bash
check() {
require_binaries mkfs.erofs fsck.erofs || return 1
require_kernel_modules erofs || return 1
return 255
}
depends() {
echo "squash-lib"
return 0
}
erofs_install() {
hostonly="" instmods "erofs"
}
erofs_installpost() {
local _img="$squashdir/erofs-root.img"
local -a _erofs_args
# --exclude-path requires a relative path
_erofs_args+=("--exclude-path=${squashdir#"$initdir"/}")
# In order to match the default SquashFS "block size"
_erofs_args+=("-C" "65536")
_erofs_args+=("-E" "fragments")
# In order to match the SquashFS `-no-xattrs`
_erofs_args+=("-x" "-1")
# Clear UUID instead of randomness for the image reproducibility
_erofs_args+=("-U" "00000000-0000-0000-0000-000000000000")
# Clear inode timestamps for smaller image size
_erofs_args+=("-T" "0")
if [[ -n $squash_compress ]]; then
if mkfs.erofs "${_erofs_args[@]}" -z "$squash_compress" "$_img" "$initdir" &> /dev/null; then
return
fi
dwarn "mkfs.erofs doesn't support compressor '$squash_compress', failing back to no compression."
fi
if ! mkfs.erofs "${_erofs_args[@]}" "$_img" "$initdir" &> /dev/null; then
dfatal "Failed making squash image"
exit 1
fi
}
install() {
if [[ $DRACUT_SQUASH_POST_INST ]]; then
erofs_installpost
else
dstdir="$squashdir" erofs_install
fi
}
|