image: Add Hurd support.

* gnu/system/image.scm (hurd-disk-image): New exported variable,
(root-offset, root-label): new variables,
(esp-partition, root-partition): adapt accordingly,
(find-image): add Hurd support.
This commit is contained in:
Mathieu Othacehe 2020-05-23 19:10:44 +02:00 committed by Jan Nieuwenhuizen
parent 6cea61f2fa
commit c77b92859f
No known key found for this signature in database
GPG key ID: F3C1A0D9C1D65273
2 changed files with 40 additions and 5 deletions

View file

@ -161,6 +161,8 @@ (define* (initialize-root-partition root
references-graphs
(register-closures? #t)
system-directory
(make-device-nodes
make-essential-device-nodes)
#:allow-other-keys)
"Initialize the given ROOT directory. Use BOOTCFG and BOOTCFG-LOCATION to
install the bootloader configuration.
@ -172,6 +174,9 @@ (define* (initialize-root-partition root
(populate-root-file-system system-directory root)
(populate-store references-graphs root)
;; Populate /dev.
(make-device-nodes root)
(when register-closures?
(for-each (lambda (closure)
(register-closure root

View file

@ -43,6 +43,7 @@ (define-module (gnu system image)
#:use-module (gnu packages genimage)
#:use-module (gnu packages guile)
#:autoload (gnu packages gnupg) (guile-gcrypt)
#:use-module (gnu packages hurd)
#:use-module (gnu packages linux)
#:use-module (gnu packages mtools)
#:use-module ((srfi srfi-1) #:prefix srfi-1:)
@ -54,6 +55,7 @@ (define-module (gnu system image)
#:export (esp-partition
root-partition
hurd-disk-image
efi-disk-image
iso9660-image
@ -91,6 +93,26 @@ (define root-partition
(flags '(boot))
(initializer (gexp initialize-root-partition))))
(define hurd-initialize-root-partition
#~(lambda* (#:rest args)
(apply initialize-root-partition
(append args
(list #:make-device-nodes
make-hurd-device-nodes)))))
(define hurd-disk-image
(image
(format 'disk-image)
(partitions
(list (partition
(size 'guess)
(offset root-offset)
(label root-label)
(file-system "ext2")
(file-system-options '("-o" "hurd" "-O" "ext_attr"))
(flags '(boot))
(initializer hurd-initialize-root-partition))))))
(define efi-disk-image
(image
(format 'disk-image)
@ -145,12 +167,14 @@ (define-syntax-rule (with-imported-modules* gexp* ...)
(with-imported-modules `(,@(source-module-closure
'((gnu build vm)
(gnu build image)
(gnu build linux-boot)
(guix store database))
#:select? not-config?)
((guix config) => ,(make-config.scm)))
#~(begin
(use-modules (gnu build vm)
(gnu build image)
(gnu build linux-boot)
(guix store database)
(guix build utils))
gexp* ...))))
@ -525,10 +549,16 @@ (define (find-image file-system-type)
"Find and return an image that could match the given FILE-SYSTEM-TYPE. This
is useful to adapt to interfaces written before the addition of the <image>
record."
(mbegin %store-monad
(return
(match file-system-type
("iso9660" iso9660-image)
(_ efi-disk-image)))))
(mlet %store-monad ((target (current-target-system)))
(mbegin %store-monad
(return
(match file-system-type
("iso9660" iso9660-image)
(_ (cond
((and target
(hurd-triplet? target))
hurd-disk-image)
(else
efi-disk-image))))))))
;;; image.scm ends here