]> git.ipfire.org Git - thirdparty/dracut.git/blame - 50-dracut.install
dracut_mkdir(): create parent directories as needed.
[thirdparty/dracut.git] / 50-dracut.install
CommitLineData
69395a52 1#!/bin/bash
9dd9d81f 2
ccb8ce04
HH
3COMMAND="$1"
4KERNEL_VERSION="$2"
5BOOT_DIR_ABS="$3"
6KERNEL_IMAGE="$4"
83bb0893 7
b71d162a
YW
8# If KERNEL_INSTALL_MACHINE_ID is defined but empty, BOOT_DIR_ABS is a fake directory.
9# So, let's skip to create initrd.
10if ! [[ ${KERNEL_INSTALL_MACHINE_ID-x} ]]; then
11 exit 0
12fi
13
b39b8452
JMC
14if [[ -d "$BOOT_DIR_ABS" ]]; then
15 INITRD="initrd"
16else
17 BOOT_DIR_ABS="/boot"
18 INITRD="initramfs-${KERNEL_VERSION}.img"
19fi
20
ccb8ce04
HH
21ret=0
22case "$COMMAND" in
23 add)
bc140a0b
HH
24 INITRD_IMAGE_PREGENERATED=${KERNEL_IMAGE%/*}/initrd
25 if [[ -f ${INITRD_IMAGE_PREGENERATED} ]]; then
26 # we found an initrd at the same place as the kernel
27 # use this and don't generate a new one
b39b8452
JMC
28 cp --reflink=auto "$INITRD_IMAGE_PREGENERATED" "$BOOT_DIR_ABS/$INITRD" \
29 && chown root:root "$BOOT_DIR_ABS/$INITRD" \
30 && chmod 0600 "$BOOT_DIR_ABS/$INITRD" \
bc140a0b
HH
31 && exit 0
32 fi
33
ccb8ce04 34 if [[ -f /etc/kernel/cmdline ]]; then
a6018700 35 read -r -d '' -a BOOT_OPTIONS < /etc/kernel/cmdline
a7d3ad67 36 elif [[ -f /usr/lib/kernel/cmdline ]]; then
a6018700 37 read -r -d '' -a BOOT_OPTIONS < /usr/lib/kernel/cmdline
38b4f4b2 38 else
b1c5cae6
ZJS
39 declare -a BOOT_OPTIONS
40
41 read -r -d '' -a line < /proc/cmdline
42 for i in "${line[@]}"; do
43 [[ "${i#initrd=*}" != "$i" ]] && continue
44 BOOT_OPTIONS+=("$i")
45 done
ccb8ce04 46 fi
83bb0893 47
ccb8ce04 48 unset noimageifnotneeded
83bb0893 49
ccb8ce04
HH
50 for ((i=0; i < "${#BOOT_OPTIONS[@]}"; i++)); do
51 if [[ ${BOOT_OPTIONS[$i]} == root\=PARTUUID\=* ]]; then
52 noimageifnotneeded="yes"
53 break
54 fi
55 done
48c283a2 56 dracut -f ${noimageifnotneeded:+--noimageifnotneeded} "$BOOT_DIR_ABS/$INITRD" "$KERNEL_VERSION"
9dd9d81f
HH
57 ret=$?
58 ;;
59 remove)
b39b8452 60 rm -f -- "$BOOT_DIR_ABS/$INITRD"
9dd9d81f
HH
61 ret=$?
62 ;;
63esac
64exit $ret