]> git.ipfire.org Git - thirdparty/dracut.git/blob - 50-dracut.install
Merge pull request #161 from dracut-mailing-devs/1477422589-21327-1-git-send-email...
[thirdparty/dracut.git] / 50-dracut.install
1 #!/bin/bash
2
3 COMMAND="$1"
4 KERNEL_VERSION="$2"
5 BOOT_DIR_ABS="$3"
6 KERNEL_IMAGE="$4"
7
8 ret=0
9 case "$COMMAND" in
10 add)
11 INITRD_IMAGE_PREGENERATED=${KERNEL_IMAGE%/*}/initrd
12 if [[ -f ${INITRD_IMAGE_PREGENERATED} ]]; then
13 # we found an initrd at the same place as the kernel
14 # use this and don't generate a new one
15 cp --reflink=auto "$INITRD_IMAGE_PREGENERATED" "$BOOT_DIR_ABS/initrd" \
16 && chown root:root "$BOOT_DIR_ABS/initrd" \
17 && chmod 0600 "$BOOT_DIR_ABS/initrd" \
18 && exit 0
19 fi
20
21 if [[ -f /etc/kernel/cmdline ]]; then
22 read -r -d '' -a BOOT_OPTIONS < /etc/kernel/cmdline
23 elif [[ -f /usr/lib/kernel/cmdline ]]; then
24 read -r -d '' -a BOOT_OPTIONS < /usr/lib/kernel/cmdline
25 fi
26
27 if ! [[ ${BOOT_OPTIONS[*]} ]]; then
28 read -r -d '' -a BOOT_OPTIONS < /proc/cmdline
29 fi
30
31 unset noimageifnotneeded
32
33 for ((i=0; i < "${#BOOT_OPTIONS[@]}"; i++)); do
34 if [[ ${BOOT_OPTIONS[$i]} == root\=PARTUUID\=* ]]; then
35 noimageifnotneeded="yes"
36 break
37 fi
38 done
39 dracut ${noimageifnotneeded:+--noimageifnotneeded} "$BOOT_DIR_ABS"/initrd "$KERNEL_VERSION"
40 ret=$?
41 ;;
42 remove)
43 rm -f -- "$BOOT_DIR_ABS"/initrd
44 ret=$?
45 ;;
46 esac
47 exit $ret