| 12 |
12 |
#Check if EFI present
|
| 13 |
13 |
if [ -d /sys/firmware/efi ]; then
|
| 14 |
14 |
|
| 15 |
|
# Try to find EFI by gdisk CODE EF00
|
| 16 |
|
EFI_PART="/dev/sda$(gdisk -l /dev/sda | grep EF00 | awk '{print $1}')"
|
| 17 |
|
EFI_UUID=$(blkid -s PARTUUID $EFI_PART | sed 's/.*="//;s/".*//')
|
| 18 |
|
EFI_BY_DEV='by-partuuid'
|
|
15 |
while : ; do
|
|
16 |
# Try to find EFI by gdisk CODE EF00
|
|
17 |
EFI_PART="/dev/sda$(gdisk -l /dev/sda | grep EF00 | awk '{print $1}')"
|
|
18 |
EFI_UUID=$(blkid -s PARTUUID $EFI_PART | sed 's/.*="//;s/".*//')
|
|
19 |
EFI_BY_DEV='by-partuuid'
|
|
20 |
[ ! -z $EFI_UUID ] && [ -e /dev/disk/$EFI_BY_DEV/$EFI_UUID ] && break;
|
| 19 |
21 |
|
| 20 |
|
if [ -z $EFI_UUID ]; then
|
| 21 |
22 |
EFI_UUID=$(blkid -s UUID $EFI_PART | sed 's/.*="//;s/".*//')
|
| 22 |
23 |
EFI_BY_DEV='by-uuid'
|
| 23 |
|
fi
|
|
24 |
[ ! -z $EFI_UUID ] && [ -e /dev/disk/$EFI_BY_DEV/$EFI_UUID ] && break;
|
| 24 |
25 |
|
| 25 |
|
if [ -z $EFI_UUID ]; then
|
| 26 |
|
#Try to determine by PARTLABEL=EFI system partition and UUID
|
|
26 |
#Try to determine by PARTLABEL=EFI system partition and UUID
|
| 27 |
27 |
EFI_UUID=$(lsblk -Po UUID,PARTUUID,PARTLABEL,FSTYPE | grep vfat | grep 'PARTLABEL="EFI system partition"' | sed -e 's/^UUID="//;s/".*//')
|
| 28 |
28 |
EFI_BY_DEV='by-uuid'
|
| 29 |
|
fi
|
|
29 |
[ ! -z $EFI_UUID ] && [ -e /dev/disk/$EFI_BY_DEV/$EFI_UUID ] && break;
|
| 30 |
30 |
|
| 31 |
|
#Try to determine by PARTLABEL=EF and UUID
|
| 32 |
|
if [ -z $EFI_UUID ]; then
|
|
31 |
#Try to determine by PARTLABEL=EF and UUID
|
| 33 |
32 |
EFI_UUID=$(lsblk -Po UUID,PARTUUID,PARTLABEL,FSTYPE | grep vfat | grep 'PARTLABEL="EF"' | sed -e 's/^UUID="//;s/".*//')
|
| 34 |
33 |
EFI_BY_DEV='by-uuid'
|
| 35 |
|
fi
|
|
34 |
[ ! -z $EFI_UUID ] && [ -e /dev/disk/$EFI_BY_DEV/$EFI_UUID ] && break;
|
| 36 |
35 |
|
| 37 |
|
#Try to determine by PARTLABEL=EFI system partition and PARTUUID
|
| 38 |
|
if [ -z $EFI_UUID ]; then
|
|
36 |
#Try to determine by PARTLABEL=EFI system partition and PARTUUID
|
| 39 |
37 |
EFI_UUID=$(lsblk -Po UUID,PARTUUID,PARTLABEL,FSTYPE | grep vfat | grep 'PARTLABEL="EFI system partition"' | sed -e 's/.*PARTUUID="//;s/".*//')
|
| 40 |
38 |
EFI_BY_DEV='by-partuuid'
|
| 41 |
|
fi
|
|
39 |
[ ! -z $EFI_UUID ] && [ -e /dev/disk/$EFI_BY_DEV/$EFI_UUID ] && break;
|
| 42 |
40 |
|
| 43 |
|
#Try to determine by PARTLABEL=EF and PARTUUID
|
| 44 |
|
if [ -z $EFI_UUID ]; then
|
|
41 |
#Try to determine by PARTLABEL=EF and PARTUUID
|
| 45 |
42 |
EFI_UUID=$(lsblk -Po UUID,PARTUUID,PARTLABEL,FSTYPE | grep vfat | grep 'PARTLABEL="EF"' | sed -e 's/.*PARTUUID="//;s/".*//')
|
| 46 |
43 |
EFI_BY_DEV='by-partuuid'
|
| 47 |
|
fi
|
|
44 |
[ ! -z $EFI_UUID ] && [ -e /dev/disk/$EFI_BY_DEV/$EFI_UUID ] && break;
|
| 48 |
45 |
|
| 49 |
|
if [ -z $EFI_UUID ]; then
|
| 50 |
46 |
echo "systemd-efi-boot-generator failed to determine ESP UUID for $EFI_PART" > /dev/kmsg
|
| 51 |
47 |
exit 0
|
| 52 |
|
fi
|
|
48 |
done
|
| 53 |
49 |
|
| 54 |
50 |
echo "# Automatially generated by systemd-efi-boot-generator" > $systemd_unit_path/boot-efi.mount
|
| 55 |
51 |
echo "[Unit]" >> $systemd_unit_path/boot-efi.mount
|
New comment