diff options
author | Mathieu Othacehe <othacehe@gnu.org> | 2021-04-25 19:06:31 +0200 |
---|---|---|
committer | Mathieu Othacehe <othacehe@gnu.org> | 2021-04-28 15:52:20 +0200 |
commit | c254af8c73ca0aa6e2179112cdd1ea70800fa5ea (patch) | |
tree | 8ad87ff39d509a90205202a0458e50e095c4bb79 | |
parent | 2b645e359e18742c7aed90eeb96a412ae5130a5a (diff) | |
download | guix-c254af8c73ca0aa6e2179112cdd1ea70800fa5ea.tar guix-c254af8c73ca0aa6e2179112cdd1ea70800fa5ea.tar.gz |
installer: Add MSDOS disk label support on UEFI systems.
Fixes: <https://issues.guix.gnu.org/47889>.
* gnu/installer/parted.scm (esp-partition?): Remove the MSDOS check.
(auto-partition!): On MSDOS disks, check if an ESP partition is present. If
that's the case, do not remove it. Otherwise, if UEFI is supported, create
one.
-rw-r--r-- | gnu/installer/parted.scm | 45 |
1 files changed, 19 insertions, 26 deletions
diff --git a/gnu/installer/parted.scm b/gnu/installer/parted.scm index 9ef263d1f9..6d6e500d71 100644 --- a/gnu/installer/parted.scm +++ b/gnu/installer/parted.scm @@ -70,6 +70,7 @@ small-freespace-partition? esp-partition? boot-partition? + efi-installation? default-esp-mount-point with-delay-device-in-use? @@ -193,12 +194,8 @@ inferior to MAX-SIZE, #f otherwise." (define (esp-partition? partition) "Return #t if partition has the ESP flag, return #f otherwise." (let* ((disk (partition-disk partition)) - (disk-type (disk-disk-type disk)) - (has-extended? (disk-type-check-feature - disk-type - DISK-TYPE-FEATURE-EXTENDED))) + (disk-type (disk-disk-type disk))) (and (data-partition? partition) - (not has-extended?) (partition-is-flag-available? partition PARTITION-FLAG-ESP) (partition-get-flag partition PARTITION-FLAG-ESP)))) @@ -918,30 +915,26 @@ exists." ;; disk space. Otherwise, set the swap size to 5% of the disk space. (swap-size (min default-swap-size five-percent-disk))) - (if has-extended? - ;; msdos - remove everything. - (disk-remove-all-partitions disk) - ;; gpt - remove everything but esp if it exists. - (for-each - (lambda (partition) - (and (data-partition? partition) - (disk-remove-partition* disk partition))) - non-boot-partitions)) + ;; Remove everything but esp if it exists. + (for-each + (lambda (partition) + (and (data-partition? partition) + (disk-remove-partition* disk partition))) + non-boot-partitions) (let* ((start-partition - (and (not has-extended?) - (if (efi-installation?) - (and (not esp-partition) - (user-partition - (fs-type 'fat32) - (esp? #t) - (size new-esp-size) - (mount-point (default-esp-mount-point)))) + (if (efi-installation?) + (and (not esp-partition) (user-partition - (fs-type 'ext4) - (bootable? #t) - (bios-grub? #t) - (size bios-grub-size))))) + (fs-type 'fat32) + (esp? #t) + (size new-esp-size) + (mount-point (default-esp-mount-point)))) + (user-partition + (fs-type 'ext4) + (bootable? #t) + (bios-grub? #t) + (size bios-grub-size)))) (new-partitions (cond ((or (eq? scheme 'entire-root) |