Current Path : /bin/ |
Current File : //bin/mkinitrd |
#!/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