2010-01-13 18:03:32 +03:00
#!/bin/bash --norc
2010-08-14 23:23:25 +04:00
kver = $( uname -r)
2010-01-13 18:03:32 +03:00
2010-08-14 23:23:25 +04:00
error( ) { echo " $@ " >& 2; }
2010-01-13 18:03:32 +03:00
usage ( ) {
2010-08-14 23:23:25 +04:00
[ [ $1 = '-n' ] ] && cmd = echo || cmd = error
2010-01-13 18:03:32 +03:00
2011-03-10 18:05:08 +03:00
$cmd " usage: ${ 0 ##*/ } [--version] [--help] [-v] [-f] [--preload <module>] "
2010-01-13 18:03:32 +03:00
$cmd " [--image-version] [--with=<module>]"
$cmd " <initrd-image> <kernel-version>"
$cmd ""
2011-03-10 18:05:08 +03:00
$cmd " (ex: ${ 0 ##*/ } /boot/initramfs- $kver .img $kver ) "
2010-01-13 18:03:32 +03:00
2010-08-14 23:23:25 +04:00
[ [ $1 = '-n' ] ] && exit 0
exit 1
2010-01-13 18:03:32 +03:00
}
2010-08-14 23:23:26 +04:00
# 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
2010-09-10 17:55:51 +04:00
read " $1 " <<< " ${ BASH_REMATCH [1] } "
2010-08-14 23:23:26 +04:00
elif [ [ $3 != -* ] ] ; then
# Only read next arg if it not an arg itself.
2010-09-10 17:55:51 +04:00
read " $1 " <<< " $3 "
# There is no way to shift our callers args, so
# return 1 to indicate they should do it instead.
return 1
2010-08-14 23:23:26 +04:00
fi
}
2010-01-13 18:03:32 +03:00
2010-08-14 23:23:26 +04:00
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 " ; ;
2010-01-13 18:03:32 +03:00
--version)
echo "mkinitrd: dracut compatibility wrapper"
2010-08-14 23:23:26 +04:00
exit 0; ;
-v| --verbose) dracut_args = " ${ dracut_args } -v " ; ;
2010-12-06 18:18:54 +03:00
-f| --force) dracut_args = " ${ dracut_args } -f " ; ;
2010-08-14 23:23:26 +04:00
--preload) read_args modname " $@ " || shift
basicmodules = " $basicmodules $modname " ; ;
--image-version) img_vers = yes; ;
2010-09-10 17:55:51 +04:00
--rootfs) read_args rootfs " $@ " || shift
2010-08-14 23:23:26 +04:00
dracut_args = " ${ dracut_args } --filesystems $rootfs " ; ;
--nocompress) dracut_args = " $dracut_args --no-compress " ; ;
--help) usage -n; ;
--builtin) ; ;
2010-01-13 18:03:32 +03:00
--without*) ; ;
--without-usb) ; ;
--fstab*) ; ;
--ifneeded) ; ;
--omit-scsi-modules) ; ;
--omit-ide-modules) ; ;
--omit-raid-modules) ; ;
--omit-lvm-modules) ; ;
--omit-dmraid) ; ;
--allow-missing) ; ;
--net-dev*) ; ;
--noresume) ; ;
2010-09-10 17:55:51 +04:00
--rootdev*) ; ;
--thawdev*) ; ;
--rootopts*) ; ;
--root*) ; ;
--loopdev*) ; ;
--loopfs*) ; ;
--loopopts*) ; ;
--looppath*) ; ;
--dsdt*) ; ;
2010-01-13 18:03:32 +03:00
--bootchart) ; ;
2010-08-14 23:23:26 +04:00
*) if [ [ ! $target ] ] ; then
target = $1
elif [ [ ! $kernel ] ] ; then
kernel = $1
2010-01-13 18:03:32 +03:00
else
2010-08-14 23:23:26 +04:00
usage
fi ; ;
2010-01-13 18:03:32 +03:00
esac
shift
done
2010-08-14 23:23:26 +04:00
[ [ $target && $kernel ] ] || usage
[ [ $img_vers ] ] && target = " $target - $kernel "
2010-01-13 18:03:32 +03:00
2010-08-14 23:23:26 +04:00
if [ [ $basicmodules ] ] ; then
2010-09-10 17:55:51 +04:00
dracut $dracut_args --add-drivers " $basicmodules " " $target " " $kernel "
2010-01-13 18:03:32 +03:00
else
2010-09-10 17:55:51 +04:00
dracut $dracut_args " $target " " $kernel "
2010-01-13 18:03:32 +03:00
fi