diff options
author | Efraim Flashner <efraim@flashner.co.il> | 2023-05-28 11:03:17 +0300 |
---|---|---|
committer | Efraim Flashner <efraim@flashner.co.il> | 2023-06-14 14:52:21 +0300 |
commit | cd55aa98011c42b8e97561f4eea024be751bcceb (patch) | |
tree | 4ee8d7f5838205762843312d4fc4ce19c87eaa7f | |
parent | 39250fc6229d60b7ae397749caf1e4c99e49b419 (diff) | |
download | guix-cd55aa98011c42b8e97561f4eea024be751bcceb.tar.gz |
gnu: image: Add support for unformatted partitions.
* gnu/build/image.scm (make-unformatted-image): New procedure. (make-partition-image): Add support for unformatted partition. * gnu/system/image.scm (system-disk-image)[partition->gpt-type]: Add case for using unformatted partition uuid.
-rw-r--r-- | gnu/build/image.scm | 11 | ||||
-rw-r--r-- | gnu/system/image.scm | 4 |
2 files changed, 15 insertions, 0 deletions
diff --git a/gnu/build/image.scm b/gnu/build/image.scm index 65a0373980..49dc01c0d1 100644 --- a/gnu/build/image.scm +++ b/gnu/build/image.scm @@ -7,6 +7,7 @@ ;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2022 Pavel Shlyak <p.shlyak@pantherx.org> ;;; Copyright © 2022 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> +;;; Copyright © 2023 Efraim Flashner <efraim@flashner.co.il> ;;; ;;; This file is part of GNU Guix. ;;; @@ -122,6 +123,14 @@ turn doesn't take any constant overhead into account, force a 1-MiB minimum." (string-append "::" file)))) (scandir root)))) +(define* (make-unformatted-image partition target) + "Make an unformatted partition of a certain size." + (let ((size (partition-size partition))) + ;; Create the file and then truncate it to the desired size. + (with-output-to-file target + (lambda _ (display ""))) + (truncate-file target size))) + (define* (make-partition-image partition-sexp target root) "Create and return the image of PARTITION-SEXP as TARGET. Use the given ROOT directory to populate the image." @@ -134,6 +143,8 @@ ROOT directory to populate the image." (make-vfat-image partition target root 16)) ((string=? type "fat32") (make-vfat-image partition target root 32)) + ((string=? type "unformatted") + (make-unformatted-image partition target)) (else (raise (condition (&message diff --git a/gnu/system/image.scm b/gnu/system/image.scm index afef79185f..958ba5cbb2 100644 --- a/gnu/system/image.scm +++ b/gnu/system/image.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2022 Pavel Shlyak <p.shlyak@pantherx.org> ;;; Copyright © 2022 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> ;;; Copyright © 2022 Alex Griffin <a@ajgrf.com> +;;; Copyright © 2023 Efraim Flashner <efraim@flashner.co.il> ;;; ;;; This file is part of GNU Guix. ;;; @@ -390,6 +391,9 @@ used in the image." ((or (string=? file-system "vfat") (string=? file-system "fat16") (string=? file-system "fat32")) "F") + ((and (string=? file-system "unformatted") + (partition-uuid partition)) + (uuid->string (partition-uuid partition))) (else (raise (condition (&message |