Hi! First of all, I was previously not subscribed to this list, so please excuse any broken references.
Kerim Gueney wrote: > > Do note the new "efi" partition type. It applies the vFAT filesystem > onto the partition and sets the partition type to EFI System Partition. > > We'd appreciate it, if you guys could test it and reported any bugs you > encounter. I have some remarks, and one bug report. To create an EFI System partition (ESP; gdisk partition type EF00) with parted, you need to set a partition's "boot" flag (see [0]). The bug is: The new code sets a partition's "bios_grub" flag, resulting in (gdisk) partition type EF02. Also, I feel that "esp" is a better identifier than "efi", as the former abbreviation appears in other literature and seems less ambiguous. I have attached a patch that addresses these issues (based on 2dadbeeaddaa7f6c778146ad35782281de5b074d rather than HEAD because I feel it shows the differences better). Please feel free to use it if you find it helpful. Additionally, I want to point out that you can create an EFI System partition without the new feature with the "bootable:<number>" disk option, like so: disk_config disk1 disklabel:gpt fstabkey:uuid bootable:1 primary /boot/efi 200 vfat rw [...] Regards, Ulrich [0] https://wiki.archlinux.org/index.php/Unified_Extensible_Firmware_Interface#GPT_partitioned_disks
diff --git a/lib/setup-storage/Commands.pm b/lib/setup-storage/Commands.pm index 00d5e33..60426b0 100644 --- a/lib/setup-storage/Commands.pm +++ b/lib/setup-storage/Commands.pm @@ -1328,7 +1328,7 @@ sub setup_partitions { $flags = $FAI::current_config{$disk}{partitions}{$mapped_id}{flags} if ($part->{size}->{preserve} || $part->{size}->{resize}); # set the bootable flag, if requested at all - $flags .= ",boot" if($FAI::configs{$config}{bootable} == $part_id); + $flags .= ",boot" if($FAI::configs{$config}{bootable} == $part_id || defined($part->{esp})); # set the bios_grub flag on BIOS compatible GPT tables $flags .= ",bios_grub" if($FAI::configs{$config}{disklabel} eq "gpt-bios" && $FAI::configs{$config}{gpt_bios_part} == $part_id); diff --git a/lib/setup-storage/Parser.pm b/lib/setup-storage/Parser.pm index 5e47ac5..25ff2dd 100755 --- a/lib/setup-storage/Parser.pm +++ b/lib/setup-storage/Parser.pm @@ -1066,6 +1066,14 @@ $FAI::Parser = Parse::RecDescent->new( my ($fs, $journal) = split(/:/, $item[1]); my $to_be_preserved = 0; + if ($fs eq "esp") { + # EFI System Partition + die "EFI system partition (ESP) requires mountpoint at or in /boot\n" + unless ($FAI::partition_pointer->{mountpoint} =~ m/^\/boot/); + $FAI::partition_pointer->{esp} = 1; + $fs = "vfat"; + } + $FAI::partition_pointer->{filesystem} = $fs; defined($journal) and $journal =~ s/journal=//;