summarylogtreecommitdiffstats
path: root/grub-initrd-generation-fix
blob: b2898a31842beda6b03d206eb079f42aabababc9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/bin/bash

30_os-prober() {
    local file=/etc/grub.d/30_os-prober  # from package 'grub'

    sed -i $file \
        -e "s|\(echo \${LINUX} \| cut -d ':' -f 5\)\`|\1 \| tr '^' ' '\`|" \
        -e 's|LINITRD="${LINITRD#/boot}"$|LINITRD=$(echo "$LINITRD" \| sed -e "s\|/boot/\|/\|g")|'  # remove /boot
}

40grub2() {
    local file=/usr/lib/linux-boot-probes/mounted/40grub2  # from package 'os-prober'

        # use all (but first) parameters:
        local c1='s|initrd="$(echo "$2"|shift; initrd="$(echo "$@"|'

        # add prefix /boot:
        local c2='s|initrd="/boot$initrd"|initrd=$(echo "$initrd" \| sed -e "s\|^/\|/boot/\|" -e "s\| /\| /boot/\|g")|'

        sed -i $file -e "$c1" -e "$c2"


}

Main()
{
    local hookname="$1"

    case "$hookname" in
        30_os-prober) 30_os-prober ;;
        40grub2) 40grub2 ;;
        "")          30_os-prober
                     40grub2
                     ;;
    esac
}

Main "$@"