You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
101 lines
2.9 KiB
101 lines
2.9 KiB
#!/bin/bash --norc |
|
kver=$(uname -r) |
|
|
|
error() { echo "$@" >&2; } |
|
|
|
usage () { |
|
[[ $1 = '-n' ]] && cmd=echo || cmd=error |
|
|
|
$cmd "usage: ${0##*/} [--version] [--help] [-v] [-f] [--preload <module>]" |
|
$cmd " [--image-version] [--with=<module>]" |
|
$cmd " [--nocompress]" |
|
$cmd " <initrd-image> <kernel-version>" |
|
$cmd "" |
|
$cmd " (ex: ${0##*/} /boot/initramfs-$kver.img $kver)" |
|
|
|
[[ $1 = '-n' ]] && exit 0 |
|
exit 1 |
|
} |
|
|
|
# Little helper function for reading args from the commandline. |
|
# it automatically handles -a b and -a=b variants, and returns 1 if |
|
# we need to shift $3. |
|
read_arg() { |
|
# $1 = arg name |
|
# $2 = arg value |
|
# $3 = arg parameter |
|
local rematch='^[^=]*=(.*)$' |
|
if [[ $2 =~ $rematch ]]; then |
|
read "$1" <<< "${BASH_REMATCH[1]}" |
|
elif [[ $3 != -* ]]; then |
|
# Only read next arg if it not an arg itself. |
|
read "$1" <<< "$3" |
|
# There is no way to shift our callers args, so |
|
# return 1 to indicate they should do it instead. |
|
return 1 |
|
fi |
|
} |
|
|
|
while (($# > 0)); do |
|
case ${1%%=*} in |
|
--with-usb) read_arg usbmodule "$@" || shift |
|
basicmodules="$basicmodules ${usbmodule:-usb-storage}" |
|
unset usbmodule;; |
|
--with-avail) read_arg modname "$@" || shift |
|
basicmodules="$basicmodules $modname";; |
|
--with) read_arg modname "$@" || shift |
|
basicmodules="$basicmodules $modname";; |
|
--version) |
|
echo "mkinitrd: dracut compatibility wrapper" |
|
exit 0;; |
|
-v|--verbose) dracut_args="${dracut_args} -v";; |
|
-f|--force) dracut_args="${dracut_args} -f";; |
|
--preload) read_arg modname "$@" || shift |
|
basicmodules="$basicmodules $modname";; |
|
--image-version) img_vers=yes;; |
|
--rootfs) read_arg rootfs "$@" || shift |
|
dracut_args="${dracut_args} --filesystems $rootfs";; |
|
--nocompress) dracut_args="$dracut_args --no-compress";; |
|
--help) usage -n;; |
|
--builtin) ;; |
|
--without*) ;; |
|
--without-usb) ;; |
|
--fstab*) ;; |
|
--ifneeded) ;; |
|
--omit-scsi-modules) ;; |
|
--omit-ide-modules) ;; |
|
--omit-raid-modules) ;; |
|
--omit-lvm-modules) ;; |
|
--omit-dmraid) ;; |
|
--allow-missing) ;; |
|
--net-dev*) ;; |
|
--noresume) ;; |
|
--rootdev*) ;; |
|
--thawdev*) ;; |
|
--rootopts*) ;; |
|
--root*) ;; |
|
--loopdev*) ;; |
|
--loopfs*) ;; |
|
--loopopts*) ;; |
|
--looppath*) ;; |
|
--dsdt*) ;; |
|
--bootchart) ;; |
|
*) if [[ ! $target ]]; then |
|
target=$1 |
|
elif [[ ! $kernel ]]; then |
|
kernel=$1 |
|
else |
|
usage |
|
fi;; |
|
esac |
|
shift |
|
done |
|
|
|
[[ $target && $kernel ]] || usage |
|
[[ $img_vers ]] && target="$target-$kernel" |
|
|
|
if [[ $basicmodules ]]; then |
|
dracut $dracut_args --add-drivers "$basicmodules" "$target" "$kernel" |
|
else |
|
dracut $dracut_args "$target" "$kernel" |
|
fi
|
|
|