summary refs log tree commit diff
path: root/gnu
diff options
context:
space:
mode:
authorMathieu Othacehe <othacehe@gnu.org>2023-09-09 17:57:25 +0200
committerMathieu Othacehe <othacehe@gnu.org>2023-09-20 09:38:36 +0200
commite5ed1712da049b1c3dcf01e0a7e02e48a8aff012 (patch)
treef03647099e8b3ad67267c180ecfb2edc602921bb /gnu
parent00a1ee15cdc046708d2df35d3854156da14fcbb9 (diff)
downloadguix-e5ed1712da049b1c3dcf01e0a7e02e48a8aff012.tar.gz
image: Introduce the mbr-hybrid-raw image type.
Until 209204e23b39af09e0ea92540b6fa00a60e6a0ae and
d57cab764122af69d52d8cc9c843456044e5d7bc, the default image type used by "guix
system image" was an MBR image with an ESP partition.

Having both an MBR image and an ESP partition is handy because the image will
boot on most x86 based systems using legacy BIOS and/or UEFI.

We now have a distinction between MBR images and EFI images. Introduce a new
MBR hybrid image type and default to it to restore the default behaviour.

This also fixes the images section of (gnu ci) that was trying to install a
BIOS bootloader on an EFI, GPT image and failing to do so.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
Diffstat (limited to 'gnu')
-rw-r--r--gnu/ci.scm2
-rw-r--r--gnu/system/image.scm14
2 files changed, 15 insertions, 1 deletions
diff --git a/gnu/ci.scm b/gnu/ci.scm
index 520ac28110..279dd4d910 100644
--- a/gnu/ci.scm
+++ b/gnu/ci.scm
@@ -268,7 +268,7 @@ otherwise use the IMAGE name."
     (if (member system %guix-system-supported-systems)
         `(,(image->job store
                        (image
-                        (inherit efi-disk-image)
+                        (inherit mbr-hybrid-disk-image)
                         (operating-system installation-os))
                        #:name "usb-image"
                        #:system system)
diff --git a/gnu/system/image.scm b/gnu/system/image.scm
index 5b8da2f896..b1b928b222 100644
--- a/gnu/system/image.scm
+++ b/gnu/system/image.scm
@@ -77,6 +77,7 @@
             root-partition
 
             mbr-disk-image
+            mbr-hybrid-disk-image
             efi-disk-image
             iso9660-image
             docker-image
@@ -86,6 +87,7 @@
 
             image-with-os
             mbr-raw-image-type
+            mbr-hybrid-raw-image-type
             efi-raw-image-type
             efi32-raw-image-type
             qcow2-image-type
@@ -156,6 +158,13 @@ parent image record."
            (inherit root-partition)
            (offset root-offset))))))
 
+(define mbr-hybrid-disk-image
+  (image-without-os
+   (format 'disk-image)
+   (partition-table-type 'mbr)
+   (partitions
+    (list esp-partition root-partition))))
+
 (define efi-disk-image
   (image-without-os
    (format 'disk-image)
@@ -217,6 +226,11 @@ set to the given OS."
    (name 'mbr-raw)
    (constructor (cut image-with-os mbr-disk-image <>))))
 
+(define mbr-hybrid-raw-image-type
+  (image-type
+   (name 'mbr-hybrid-raw)
+   (constructor (cut image-with-os mbr-hybrid-disk-image <>))))
+
 (define efi-raw-image-type
   (image-type
    (name 'efi-raw)