mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-11-07 07:26:13 -05:00
image: Add partition file-system options support.
* gnu/image.scm (<partition>)[file-system-options]: New field, (partition-file-system-options): new exported procedure. * gnu/system/image.scm (partition->gexp): Adapt accordingly. * gnu/build/image.scm (sexp->partition): Also adapt accordingly, (make-ext-image): and pass file-system options to mke2fs.
This commit is contained in:
parent
6ac7526e48
commit
bd3716f6fe
3 changed files with 28 additions and 20 deletions
|
@ -47,9 +47,10 @@ (define (sexp->partition sexp)
|
|||
"Take SEXP, a tuple as returned by 'partition->gexp', and turn it into a
|
||||
<partition> record."
|
||||
(match sexp
|
||||
((size file-system label uuid)
|
||||
((size file-system file-system-options label uuid)
|
||||
(partition (size size)
|
||||
(file-system file-system)
|
||||
(file-system-options file-system-options)
|
||||
(label label)
|
||||
(uuid uuid)))))
|
||||
|
||||
|
@ -71,19 +72,22 @@ (define* (make-ext-image partition target root
|
|||
'make-partition-image'."
|
||||
(let ((size (partition-size partition))
|
||||
(fs (partition-file-system partition))
|
||||
(fs-options (partition-file-system-options partition))
|
||||
(label (partition-label partition))
|
||||
(uuid (partition-uuid partition))
|
||||
(options "lazy_itable_init=1,lazy_journal_init=1"))
|
||||
(invoke "mke2fs" "-t" fs "-d" root
|
||||
"-L" label "-U" (uuid->string uuid)
|
||||
"-E" (format #f "root_owner=~a:~a,~a"
|
||||
owner-uid owner-gid options)
|
||||
target
|
||||
(format #f "~ak"
|
||||
(size-in-kib
|
||||
(if (eq? size 'guess)
|
||||
(estimate-partition-size root)
|
||||
size))))))
|
||||
(journal-options "lazy_itable_init=1,lazy_journal_init=1"))
|
||||
(apply invoke
|
||||
`("mke2fs" "-t" ,fs "-d" ,root
|
||||
"-L" ,label "-U" ,(uuid->string uuid)
|
||||
"-E" ,(format #f "root_owner=~a:~a,~a"
|
||||
owner-uid owner-gid journal-options)
|
||||
,@fs-options
|
||||
,target
|
||||
,(format #f "~ak"
|
||||
(size-in-kib
|
||||
(if (eq? size 'guess)
|
||||
(estimate-partition-size root)
|
||||
size)))))))
|
||||
|
||||
(define* (make-vfat-image partition target root)
|
||||
"Handle the creation of VFAT partition images. See 'make-partition-image'."
|
||||
|
|
|
@ -24,6 +24,7 @@ (define-module (gnu image)
|
|||
partition-size
|
||||
partition-offset
|
||||
partition-file-system
|
||||
partition-file-system-options
|
||||
partition-label
|
||||
partition-uuid
|
||||
partition-flags
|
||||
|
@ -46,14 +47,16 @@ (define-module (gnu image)
|
|||
|
||||
(define-record-type* <partition> partition make-partition
|
||||
partition?
|
||||
(device partition-device (default #f))
|
||||
(size partition-size)
|
||||
(offset partition-offset (default 0))
|
||||
(file-system partition-file-system (default "ext4"))
|
||||
(label partition-label (default #f))
|
||||
(uuid partition-uuid (default #f))
|
||||
(flags partition-flags (default '()))
|
||||
(initializer partition-initializer (default #f)))
|
||||
(device partition-device (default #f))
|
||||
(size partition-size)
|
||||
(offset partition-offset (default 0))
|
||||
(file-system partition-file-system (default "ext4"))
|
||||
(file-system-options partition-file-system-options
|
||||
(default '()))
|
||||
(label partition-label (default #f))
|
||||
(uuid partition-uuid (default #f))
|
||||
(flags partition-flags (default '()))
|
||||
(initializer partition-initializer (default #f)))
|
||||
|
||||
|
||||
;;;
|
||||
|
|
|
@ -117,6 +117,7 @@ (define (partition->gexp partition)
|
|||
'make-partition-image'."
|
||||
#~'(#$@(list (partition-size partition))
|
||||
#$(partition-file-system partition)
|
||||
#$(partition-file-system-options partition)
|
||||
#$(partition-label partition)
|
||||
#$(and=> (partition-uuid partition)
|
||||
uuid-bytevector)))
|
||||
|
|
Loading…
Reference in a new issue