]> git.ipfire.org Git - thirdparty/dracut.git/blob - mkinitrd-dracut.sh
base/module-setup.sh: only mkdir /lib, if it does not exist
[thirdparty/dracut.git] / mkinitrd-dracut.sh
1 #!/bin/bash --norc
2 kver=$(uname -r)
3
4 error() { echo "$@" >&2; }
5
6 usage () {
7 [[ $1 = '-n' ]] && cmd=echo || cmd=error
8
9 $cmd "usage: ${0##*/} [--version] [--help] [-v] [-f] [--preload <module>]"
10 $cmd " [--image-version] [--with=<module>]"
11 $cmd " <initrd-image> <kernel-version>"
12 $cmd ""
13 $cmd " (ex: ${0##*/} /boot/initramfs-$kver.img $kver)"
14
15 [[ $1 = '-n' ]] && exit 0
16 exit 1
17 }
18
19 # Little helper function for reading args from the commandline.
20 # it automatically handles -a b and -a=b variants, and returns 1 if
21 # we need to shift $3.
22 read_arg() {
23 # $1 = arg name
24 # $2 = arg value
25 # $3 = arg parameter
26 local rematch='^[^=]*=(.*)$'
27 if [[ $2 =~ $rematch ]]; then
28 read "$1" <<< "${BASH_REMATCH[1]}"
29 elif [[ $3 != -* ]]; then
30 # Only read next arg if it not an arg itself.
31 read "$1" <<< "$3"
32 # There is no way to shift our callers args, so
33 # return 1 to indicate they should do it instead.
34 return 1
35 fi
36 }
37
38 while (($# > 0)); do
39 case ${1%%=*} in
40 --with-usb) read_arg usbmodule "$@" || shift
41 basicmodules="$basicmodules ${usbmodule:-usb-storage}"
42 unset usbmodule;;
43 --with-avail) read_arg modname "$@" || shift
44 basicmodules="$basicmodules $modname";;
45 --with) read_arg modname "$@" || shift
46 basicmodules="$basicmodules $modname";;
47 --version)
48 echo "mkinitrd: dracut compatibility wrapper"
49 exit 0;;
50 -v|--verbose) dracut_args="${dracut_args} -v";;
51 -f|--force) dracut_args="${dracut_args} -f";;
52 --preload) read_args modname "$@" || shift
53 basicmodules="$basicmodules $modname";;
54 --image-version) img_vers=yes;;
55 --rootfs) read_args rootfs "$@" || shift
56 dracut_args="${dracut_args} --filesystems $rootfs";;
57 --nocompress) dracut_args="$dracut_args --no-compress";;
58 --help) usage -n;;
59 --builtin) ;;
60 --without*) ;;
61 --without-usb) ;;
62 --fstab*) ;;
63 --ifneeded) ;;
64 --omit-scsi-modules) ;;
65 --omit-ide-modules) ;;
66 --omit-raid-modules) ;;
67 --omit-lvm-modules) ;;
68 --omit-dmraid) ;;
69 --allow-missing) ;;
70 --net-dev*) ;;
71 --noresume) ;;
72 --rootdev*) ;;
73 --thawdev*) ;;
74 --rootopts*) ;;
75 --root*) ;;
76 --loopdev*) ;;
77 --loopfs*) ;;
78 --loopopts*) ;;
79 --looppath*) ;;
80 --dsdt*) ;;
81 --bootchart) ;;
82 *) if [[ ! $target ]]; then
83 target=$1
84 elif [[ ! $kernel ]]; then
85 kernel=$1
86 else
87 usage
88 fi;;
89 esac
90 shift
91 done
92
93 [[ $target && $kernel ]] || usage
94 [[ $img_vers ]] && target="$target-$kernel"
95
96 if [[ $basicmodules ]]; then
97 dracut $dracut_args --add-drivers "$basicmodules" "$target" "$kernel"
98 else
99 dracut $dracut_args "$target" "$kernel"
100 fi