summary refs log tree commit diff
diff options
context:
space:
mode:
authorDanny Milosavljevic <dannym@scratchpost.org>2017-07-12 09:03:46 +0200
committerDanny Milosavljevic <dannym@scratchpost.org>2017-07-12 16:15:30 +0200
commit911a53a53f4898c386cbb7347daf928fae592fa3 (patch)
tree31ecfdb684d647ab728182bfb055f9776fdb87e5
parent0bc6fe323d34aabc7f51fa80b8872a2c1770d32a (diff)
downloadguix-911a53a53f4898c386cbb7347daf928fae592fa3.tar.gz
build: Make ISO-9660 image bootable from USB flash drive.
* gnu/build/vm.scm (make-iso9660-image): Make image bootable from USB flash
drive.
-rw-r--r--gnu/build/vm.scm13
1 files changed, 13 insertions, 0 deletions
diff --git a/gnu/build/vm.scm b/gnu/build/vm.scm
index 2d41c5756b..d8c53ef37f 100644
--- a/gnu/build/vm.scm
+++ b/gnu/build/vm.scm
@@ -367,6 +367,19 @@ Grub configuration and OS-DRV as the stuff in it."
                             "var=/tmp/root/var"
                             "run=/tmp/root/run"
                             "--"
+                            ;; Store two copies of the headers.
+                            ;; The resulting ISO-9660 image has a DOS MBR and
+                            ;; one protective partition (with type 0xCD).
+                            ;; Because GuixSD only uses actual partitions
+                            ;; rather than what /proc/partitions returns, work
+                            ;; around it by storing the primary volume
+                            ;; descriptor twice, once where it should be and
+                            ;; once in the partition.
+                            ;; Allegedly, otherwise, many other GNU tools
+                            ;; (automounters etc) would also be confused by
+                            ;; the extra partition so it makes sense to
+                            ;; store two copies in any case.
+                            "-boot_image" "any" "partition_offset=16"
                             "-volid" ,(string-upcase volume-id)
                             ,@(if volume-uuid
                                   `("-volume_date" "uuid"