#!/bin/sh # NB: -f prohibited in this shebang # check relevant kernel features availability CONFIGS=/boot/config-* GZ_OPTS="-comp gzip" XZ_OPTS="-comp xz" LZO_OPTS="-comp lzo" verbose() { [ -z "$GLOBAL_VERBOSE" ] || echo "** $@" >&2; } fatal() { echo "** error: $@" >&2; exit 1; } configured() { local option="CONFIG_$1" if grep -q "^$option" $CONFIGS; then verbose "${option%=*} available" return 0 else return 1 fi } ls $CONFIGS >&/dev/null || fatal "no stage1 kernel config found in /boot" # test for installer-required filesystems support configured "OVERLAY_FS=[my]" || configured "AUFS_FS=[my]" || echo fatal "stage1 kernel must support overlayfs or aufs" for opt in SQUASHFS $GLOBAL_STAGE1_KCONFIG; do configured "$opt=[my]" || fatal "stage1 kernel must have $opt support" done verbose "GLOBAL_SQUASHFS: $GLOBAL_SQUASHFS" options() { # squashfs options: not really neccessary but better than none # NB: this config file should be carried over into install2 if [ "$GLOBAL_SQUASHFS" != "fast" ] && configured "SQUASHFS_XZ=y"; then # NB: the decompression filter overhead might hurt # NB: there are arm, powerpc and some other filters too if [ "$GLOBAL_SQUASHFS" = "tight" ] && configured "X86"; then XZ_OPTS="$XZ_OPTS -b 524288 -Xbcj x86" else XZ_OPTS="$XZ_OPTS -b 262144" fi echo "$XZ_OPTS" else # go fast, or even faster if possible if configured "SQUASHFS_LZO=y"; then echo "$LZO_OPTS" else # safe default echo "$GZ_OPTS" fi fi } echo "PACK_SQUASHFS_OPTS=-no-recovery `options`" > /.image/squashcfg.mk