Fix bug introduced in r326674, in which efi boot partitions created by
the installer but not mounted (i.e. with boot1.efifat dd'ed to them rather than the forthcoming proper filesystem) would get newfs_msdos run on them immediately after the boot code was copied. This would overwrite the bootstrap code, causing the EFI system partition to be blanked and resulting in an unbootable system. PR: 224562
This commit is contained in:
parent
5af952ff99
commit
6c4940c2ad
@ -942,7 +942,9 @@ add_boot_partition(struct ggeom *geom, struct gprovider *pp,
|
||||
choice = 0;
|
||||
|
||||
if (choice == 0) { /* yes */
|
||||
struct partition_metadata *md;
|
||||
const char *bootmount = NULL;
|
||||
char *bootpartname = NULL;
|
||||
char sizestr[7];
|
||||
|
||||
humanize_number(sizestr, 7,
|
||||
@ -950,7 +952,21 @@ add_boot_partition(struct ggeom *geom, struct gprovider *pp,
|
||||
HN_NOSPACE | HN_DECIMAL);
|
||||
|
||||
gpart_create(pp, bootpart_type(scheme, &bootmount),
|
||||
sizestr, bootmount, NULL, 0);
|
||||
sizestr, bootmount, &bootpartname, 0);
|
||||
|
||||
if (bootpartname == NULL) /* Error reported to user already */
|
||||
return 0;
|
||||
|
||||
/* If the part is not mountable, make sure newfs isn't set */
|
||||
if (bootmount == NULL) {
|
||||
md = get_part_metadata(bootpartname, 0);
|
||||
if (md != NULL && md->newfs != NULL) {
|
||||
free(md->newfs);
|
||||
md->newfs = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
free(bootpartname);
|
||||
|
||||
return (bootpart_size(scheme));
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user