diff options
author | Carlo Landmeter <clandmeter@alpinelinux.org> | 2018-02-24 12:26:49 +0000 |
---|---|---|
committer | Carlo Landmeter <clandmeter@alpinelinux.org> | 2018-04-11 12:42:16 +0000 |
commit | e52743306a5686f79a30e62cfb02c450bf71db3f (patch) | |
tree | 29cea64bf839e7104b58098e5409d99e61024b70 /mkinitfs.in | |
parent | e95fe8f4fadcf6b496ba8198f091fe04d16ec203 (diff) | |
download | mkinitfs-e52743306a5686f79a30e62cfb02c450bf71db3f.tar.bz2 mkinitfs-e52743306a5686f79a30e62cfb02c450bf71db3f.tar.xz |
mkinitfs: add xz compression support
Diffstat (limited to 'mkinitfs.in')
-rwxr-xr-x | mkinitfs.in | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/mkinitfs.in b/mkinitfs.in index 83333ca..9bffa01 100755 --- a/mkinitfs.in +++ b/mkinitfs.in @@ -12,6 +12,8 @@ group="$datadir"/group startdir=$PWD +initfscomp=gzip + feature_files() { local dir="$1" local suffix="$2" @@ -147,16 +149,26 @@ initfs_cpio() { fi rm -f $outfile umask 0022 - (cd "$tmpdir" && find . | sort | cpio --quiet -o -H newc | gzip -9) > $outfile + (cd "$tmpdir" && find . | sort | cpio --quiet -o -H newc | $comp) > $outfile +} + +cmd_exists() { + local cmd="$1" + if ! command -v "$cmd" >/dev/null 2>&1; then + echo "Command \"$cmd\" is not available." + exit 1 + fi } usage() { cat <<EOF usage: mkinitfs [-hkKLln] [-b basedir] [-c configfile] [-F features] [-f fstab] - [-i initfile ] [-o outfile] [-P featuresdir] [-t tempdir] [kernelversion]" + [-C initramfs compression] [-i initfile] [-o outfile] + [-P featuresdir] [-t tempdir] [kernelversion] options: -b prefix files and kernel modules with basedir -c use configfile instead of $config + -C initramfs compression (gzip|xz defaults to $initfscomp) -f use fstab instead of $fstab -F use specified features -h print this help @@ -178,10 +190,11 @@ EOF # main features_dirs=${features_dir:-"${basedir%/:-}/${sysconfdir#/}/features.d"} -while getopts "b:c:f:F:hi:kKLlno:P:qt:" opt; do +while getopts "b:c:C:f:F:hi:kKLlno:P:qt:" opt; do case "$opt" in b) basedir="$OPTARG";; c) config="$OPTARG";; + C) initfscomp="$OPTARG";; F) myfeatures="$OPTARG";; f) fstab="$OPTARG";; h) usage;; @@ -257,6 +270,12 @@ if [ -z "$list_sources" ] && [ -z "$quiet" ]; then echo "==> initramfs: creating $outfile" fi +case "$initfscomp" in + gzip) comp="gzip -9" ;; + xz) cmd_exists xz; comp="xz -C crc32 -T 0" ;; + *) echo "Initramfs compression \"$initfscomp\" not supported!"; exit 1 ;; +esac + initfs_base \ && initfs_kmods \ && initfs_firmware \ |