summaryrefslogtreecommitdiff
path: root/gnu/system/image.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/system/image.scm')
-rw-r--r--gnu/system/image.scm23
1 files changed, 22 insertions, 1 deletions
diff --git a/gnu/system/image.scm b/gnu/system/image.scm
index 5b8da2f896..a990c4f861 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)
@@ -232,7 +246,7 @@ set to the given OS."
(name 'qcow2)
(constructor (cut image-with-os
(image
- (inherit mbr-disk-image)
+ (inherit mbr-hybrid-disk-image)
(name 'image.qcow2)
(format 'compressed-qcow2))
<>))))
@@ -516,6 +530,13 @@ used in the image."
(image-partition-table-type image)))
(else "")))
+ (when (and (gpt-image? image)
+ (not
+ (memq (bootloader-name bootloader) '(grub-efi grub-efi32))))
+ (raise
+ (formatted-message
+ (G_ "EFI bootloader required with GPT partitioning"))))
+
(let* ((format (image-format image))
(image-type (format->image-type format))
(image-type-options (genimage-type-options image-type image))