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.master
parent
39250fc622
commit
cd55aa9801
|
@ -7,6 +7,7 @@
|
||||||
;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com>
|
;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||||
;;; Copyright © 2022 Pavel Shlyak <p.shlyak@pantherx.org>
|
;;; Copyright © 2022 Pavel Shlyak <p.shlyak@pantherx.org>
|
||||||
;;; Copyright © 2022 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
|
;;; Copyright © 2022 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
|
||||||
|
;;; Copyright © 2023 Efraim Flashner <efraim@flashner.co.il>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; 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))))
|
(string-append "::" file))))
|
||||||
(scandir root))))
|
(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)
|
(define* (make-partition-image partition-sexp target root)
|
||||||
"Create and return the image of PARTITION-SEXP as TARGET. Use the given
|
"Create and return the image of PARTITION-SEXP as TARGET. Use the given
|
||||||
ROOT directory to populate the image."
|
ROOT directory to populate the image."
|
||||||
|
@ -134,6 +143,8 @@ ROOT directory to populate the image."
|
||||||
(make-vfat-image partition target root 16))
|
(make-vfat-image partition target root 16))
|
||||||
((string=? type "fat32")
|
((string=? type "fat32")
|
||||||
(make-vfat-image partition target root 32))
|
(make-vfat-image partition target root 32))
|
||||||
|
((string=? type "unformatted")
|
||||||
|
(make-unformatted-image partition target))
|
||||||
(else
|
(else
|
||||||
(raise (condition
|
(raise (condition
|
||||||
(&message
|
(&message
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
;;; Copyright © 2022 Pavel Shlyak <p.shlyak@pantherx.org>
|
;;; Copyright © 2022 Pavel Shlyak <p.shlyak@pantherx.org>
|
||||||
;;; Copyright © 2022 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
|
;;; Copyright © 2022 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
|
||||||
;;; Copyright © 2022 Alex Griffin <a@ajgrf.com>
|
;;; Copyright © 2022 Alex Griffin <a@ajgrf.com>
|
||||||
|
;;; Copyright © 2023 Efraim Flashner <efraim@flashner.co.il>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
;;;
|
;;;
|
||||||
|
@ -390,6 +391,9 @@ used in the image."
|
||||||
((or (string=? file-system "vfat")
|
((or (string=? file-system "vfat")
|
||||||
(string=? file-system "fat16")
|
(string=? file-system "fat16")
|
||||||
(string=? file-system "fat32")) "F")
|
(string=? file-system "fat32")) "F")
|
||||||
|
((and (string=? file-system "unformatted")
|
||||||
|
(partition-uuid partition))
|
||||||
|
(uuid->string (partition-uuid partition)))
|
||||||
(else
|
(else
|
||||||
(raise (condition
|
(raise (condition
|
||||||
(&message
|
(&message
|
||||||
|
|
Reference in New Issue