Registration is now invite-only. Any user can make an invite, you need to create it here and give resulting link to someone to register.
avatar
law has added bb60bb954f
Make valid efi partition path on non-GPT disk
view file @ bb60bb954f
... ... --- a/systemd-efi-boot-generator
... ... +++ b/systemd-efi-boot-generator
... ... @@ -12,44 +12,40 @@ fi
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

Comments