* [bug#28696] [PATCH 0/5] Support UUIDs for the EFI System Partition (FAT) @ 2017-10-04 7:24 Ludovic Courtès 2017-10-04 7:25 ` [bug#28696] [PATCH 1/5] file-systems: 'mount-file-system' now takes a <file-system> object Ludovic Courtès ` (2 more replies) 0 siblings, 3 replies; 9+ messages in thread From: Ludovic Courtès @ 2017-10-04 7:24 UTC (permalink / raw) To: 28696 Hello! This patch series fixes what Roel reported at <https://lists.gnu.org/archive/html/help-guix/2017-09/msg00094.html>: it allows users to refer to their EFI System Partition and to FAT file systems in general by UUID. I’ve tested it on my UEFI laptop where /boot/efi is actually FAT16, not FAT32 (I suppose UEFI supports both). Let me know what you think! Ludo’. Ludovic Courtès (5): file-systems: 'mount-file-system' now takes a <file-system> object. file-systems: Preserve UUID types when serializing. file-systems: Add support for FAT16. uuid: Change "fat32" to "fat". doc: Give an example with a FAT UUID. doc/guix.texi | 5 ++ gnu/build/file-systems.scm | 115 +++++++++++++++++---------- gnu/build/linux-boot.scm | 20 ++--- gnu/build/linux-container.scm | 3 +- gnu/services/base.scm | 6 +- gnu/system/examples/lightweight-desktop.tmpl | 8 +- gnu/system/file-systems.scm | 10 ++- gnu/system/linux-initrd.scm | 6 +- gnu/system/uuid.scm | 30 +++---- 9 files changed, 126 insertions(+), 77 deletions(-) -- 2.14.2 ^ permalink raw reply [flat|nested] 9+ messages in thread
* [bug#28696] [PATCH 1/5] file-systems: 'mount-file-system' now takes a <file-system> object. 2017-10-04 7:24 [bug#28696] [PATCH 0/5] Support UUIDs for the EFI System Partition (FAT) Ludovic Courtès @ 2017-10-04 7:25 ` Ludovic Courtès 2017-10-04 7:25 ` [bug#28696] [PATCH 2/5] file-systems: Preserve UUID types when serializing Ludovic Courtès ` (3 more replies) 2017-10-09 20:54 ` [bug#28696] [PATCH 0/5] Support UUIDs for the EFI System Partition (FAT) Roel Janssen 2017-10-11 9:13 ` bug#28696: " Ludovic Courtès 2 siblings, 4 replies; 9+ messages in thread From: Ludovic Courtès @ 2017-10-04 7:25 UTC (permalink / raw) To: 28696 * gnu/build/file-systems.scm (mount-file-system): Rename 'spec' to 'fs' and assume it's a <file-system>. * gnu/build/linux-boot.scm (boot-system): Assume MOUNTS is a list of <file-system> and adjust accordingly. * gnu/build/linux-container.scm (mount-file-systems): Remove 'file-system->spec' call. * gnu/services/base.scm (file-system-shepherd-service): Add 'spec->file-system' call. Add (gnu system file-systems) to 'modules'. * gnu/system/linux-initrd.scm (raw-initrd): Use (gnu system file-systems). Add 'spec->file-system' call for #:mounts. --- gnu/build/file-systems.scm | 65 ++++++++++++++++++++++--------------------- gnu/build/linux-boot.scm | 20 ++++++------- gnu/build/linux-container.scm | 3 +- gnu/services/base.scm | 6 ++-- gnu/system/linux-initrd.scm | 6 +++- 5 files changed, 53 insertions(+), 47 deletions(-) diff --git a/gnu/build/file-systems.scm b/gnu/build/file-systems.scm index 32885f1d2..8b1a4cb19 100644 --- a/gnu/build/file-systems.scm +++ b/gnu/build/file-systems.scm @@ -20,9 +20,11 @@ (define-module (gnu build file-systems) #:use-module (gnu system uuid) + #:use-module (gnu system file-systems) #:use-module (guix build utils) #:use-module (guix build bournish) - #:use-module (guix build syscalls) + #:use-module ((guix build syscalls) + #:hide (file-system-type)) #:use-module (rnrs io ports) #:use-module (rnrs bytevectors) #:use-module (ice-9 match) @@ -552,11 +554,8 @@ corresponds to the symbols listed in FLAGS." (() 0)))) -(define* (mount-file-system spec #:key (root "/root")) - "Mount the file system described by SPEC under ROOT. SPEC must have the -form: - - (DEVICE TITLE MOUNT-POINT TYPE (FLAGS ...) OPTIONS CHECK?) +(define* (mount-file-system fs #:key (root "/root")) + "Mount the file system described by FS, a <file-system> object, under ROOT. DEVICE, MOUNT-POINT, and TYPE must be strings; OPTIONS can be a string or #f; FLAGS must be a list of symbols. CHECK? is a Boolean indicating whether to @@ -582,34 +581,36 @@ run a file system check." (if options (string-append "," options) ""))))) - (match spec - ((source title mount-point type (flags ...) options check?) - (let ((source (canonicalize-device-spec source title)) - (mount-point (string-append root "/" mount-point)) - (flags (mount-flags->bit-mask flags))) - (when check? - (check-file-system source type)) + (let ((type (file-system-type fs)) + (options (file-system-options fs)) + (source (canonicalize-device-spec (file-system-device fs) + (file-system-title fs))) + (mount-point (string-append root "/" + (file-system-mount-point fs))) + (flags (mount-flags->bit-mask (file-system-flags fs)))) + (when (file-system-check? fs) + (check-file-system source type)) - ;; Create the mount point. Most of the time this is a directory, but - ;; in the case of a bind mount, a regular file or socket may be needed. - (if (and (= MS_BIND (logand flags MS_BIND)) - (not (file-is-directory? source))) - (unless (file-exists? mount-point) - (mkdir-p (dirname mount-point)) - (call-with-output-file mount-point (const #t))) - (mkdir-p mount-point)) + ;; Create the mount point. Most of the time this is a directory, but + ;; in the case of a bind mount, a regular file or socket may be needed. + (if (and (= MS_BIND (logand flags MS_BIND)) + (not (file-is-directory? source))) + (unless (file-exists? mount-point) + (mkdir-p (dirname mount-point)) + (call-with-output-file mount-point (const #t))) + (mkdir-p mount-point)) - (cond - ((string-prefix? "nfs" type) - (mount-nfs source mount-point type flags options)) - (else - (mount source mount-point type flags options))) + (cond + ((string-prefix? "nfs" type) + (mount-nfs source mount-point type flags options)) + (else + (mount source mount-point type flags options))) - ;; For read-only bind mounts, an extra remount is needed, as per - ;; <http://lwn.net/Articles/281157/>, which still applies to Linux 4.0. - (when (and (= MS_BIND (logand flags MS_BIND)) - (= MS_RDONLY (logand flags MS_RDONLY))) - (let ((flags (logior MS_BIND MS_REMOUNT MS_RDONLY))) - (mount source mount-point type flags #f))))))) + ;; For read-only bind mounts, an extra remount is needed, as per + ;; <http://lwn.net/Articles/281157/>, which still applies to Linux 4.0. + (when (and (= MS_BIND (logand flags MS_BIND)) + (= MS_RDONLY (logand flags MS_RDONLY))) + (let ((flags (logior MS_BIND MS_REMOUNT MS_RDONLY))) + (mount source mount-point type flags #f))))) ;;; file-systems.scm ends here diff --git a/gnu/build/linux-boot.scm b/gnu/build/linux-boot.scm index 360ef3fae..3712abe91 100644 --- a/gnu/build/linux-boot.scm +++ b/gnu/build/linux-boot.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; ;;; This file is part of GNU Guix. @@ -27,9 +27,11 @@ #:use-module (ice-9 match) #:use-module (ice-9 ftw) #:use-module (guix build utils) - #:use-module (guix build syscalls) + #:use-module ((guix build syscalls) + #:hide (file-system-type)) #:use-module (gnu build linux-modules) #:use-module (gnu build file-systems) + #:use-module (gnu system file-systems) #:export (mount-essential-file-systems linux-command-line find-long-option @@ -349,19 +351,17 @@ supports kernel command-line options '--load', '--root', and '--repl'. Mount the root file system, specified by the '--root' command-line argument, if any. -MOUNTS must be a list suitable for 'mount-file-system'. +MOUNTS must be a list of <file-system> objects. When VOLATILE-ROOT? is true, the root file system is writable but any changes to it are lost." - (define root-mount-point? - (match-lambda - ((device _ "/" _ ...) #t) - (_ #f))) + (define (root-mount-point? fs) + (string=? (file-system-mount-point fs) "/")) (define root-fs-type - (or (any (match-lambda - ((device _ "/" type _ ...) type) - (_ #f)) + (or (any (lambda (fs) + (and (root-mount-point? fs) + (file-system-type fs))) mounts) "ext4")) diff --git a/gnu/build/linux-container.scm b/gnu/build/linux-container.scm index 95bfd92dd..70e789403 100644 --- a/gnu/build/linux-container.scm +++ b/gnu/build/linux-container.scm @@ -152,8 +152,7 @@ for the process." ;; Mount user-specified file systems. (for-each (lambda (file-system) - (mount-file-system (file-system->spec file-system) - #:root root)) + (mount-file-system file-system #:root root)) mounts) ;; Jail the process inside the container's root file system. diff --git a/gnu/services/base.scm b/gnu/services/base.scm index 64620a9b0..541ca76f1 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -307,7 +307,8 @@ FILE-SYSTEM." '#$packages)))) (lambda () (mount-file-system - '#$(file-system->spec file-system) + (spec->file-system + '#$(file-system->spec file-system)) #:root "/")) (lambda () (setenv "PATH" $PATH))) @@ -322,9 +323,10 @@ FILE-SYSTEM." (umount #$target) #f)) - ;; We need an additional module. + ;; We need additional modules. (modules `(((gnu build file-systems) #:select (mount-file-system)) + (gnu system file-systems) ,@%default-modules))))))) (define (file-system-shepherd-services file-systems) diff --git a/gnu/system/linux-initrd.scm b/gnu/system/linux-initrd.scm index 5a7aec5c8..e78be8cd3 100644 --- a/gnu/system/linux-initrd.scm +++ b/gnu/system/linux-initrd.scm @@ -174,9 +174,11 @@ to it are lost." '((gnu build linux-boot) (guix build utils) (guix build bournish) + (gnu system file-systems) (gnu build file-systems))) #~(begin (use-modules (gnu build linux-boot) + (gnu system file-systems) (guix build utils) (guix build bournish) ;add the 'bournish' meta-command (srfi srfi-26) @@ -193,7 +195,9 @@ to it are lost." (set-path-environment-variable "PATH" '("bin" "sbin") '#$helper-packages))) - (boot-system #:mounts '#$(map file-system->spec file-systems) + (boot-system #:mounts + (map spec->file-system + '#$(map file-system->spec file-systems)) #:pre-mount (lambda () (and #$@device-mapping-commands)) #:linux-modules '#$linux-modules -- 2.14.2 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [bug#28696] [PATCH 2/5] file-systems: Preserve UUID types when serializing. 2017-10-04 7:25 ` [bug#28696] [PATCH 1/5] file-systems: 'mount-file-system' now takes a <file-system> object Ludovic Courtès @ 2017-10-04 7:25 ` Ludovic Courtès 2017-10-04 7:25 ` [bug#28696] [PATCH 3/5] file-systems: Add support for FAT16 Ludovic Courtès ` (2 subsequent siblings) 3 siblings, 0 replies; 9+ messages in thread From: Ludovic Courtès @ 2017-10-04 7:25 UTC (permalink / raw) To: 28696 Reported by Roel Janssen <roel@gnu.org> at <https://lists.gnu.org/archive/html/help-guix/2017-09/msg00094.html>. * gnu/system/file-systems.scm (file-system->spec): When DEVICE is a UUID, serialize it in a way that preserves its type. (spec->file-system): Adjust accordingly. * gnu/build/file-systems.scm (canonicalize-device-spec): Add case for when SPEC is 'uuid?'. --- gnu/build/file-systems.scm | 11 ++++++----- gnu/system/file-systems.scm | 10 ++++++++-- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/gnu/build/file-systems.scm b/gnu/build/file-systems.scm index 8b1a4cb19..dea5bc619 100644 --- a/gnu/build/file-systems.scm +++ b/gnu/build/file-systems.scm @@ -450,8 +450,7 @@ the following: \"/dev/sda1\"; • 'label', in which case SPEC is known to designate a partition label--e.g., \"my-root-part\"; - • 'uuid', in which case SPEC must be a UUID (a 16-byte bytevector) - designating a partition; + • 'uuid', in which case SPEC must be a UUID designating a partition; • 'any', in which case SPEC can be anything. " (define max-trials @@ -497,9 +496,11 @@ the following: (resolve find-partition-by-label spec identity)) ((uuid) (resolve find-partition-by-uuid - (if (string? spec) - (string->uuid spec) - spec) + (cond ((string? spec) + (string->uuid spec)) + ((uuid? spec) + (uuid-bytevector spec)) + (else spec)) uuid->string)) (else (error "unknown device title" title)))) diff --git a/gnu/system/file-systems.scm b/gnu/system/file-systems.scm index 52f16676f..fbd2b11cd 100644 --- a/gnu/system/file-systems.scm +++ b/gnu/system/file-systems.scm @@ -18,6 +18,7 @@ (define-module (gnu system file-systems) #:use-module (ice-9 match) + #:use-module (rnrs bytevectors) #:use-module (srfi srfi-1) #:use-module (guix records) #:use-module (gnu system uuid) @@ -157,7 +158,7 @@ initrd code." (match fs (($ <file-system> device title mount-point type flags options _ _ check?) (list (if (uuid? device) - (uuid-bytevector device) + `(uuid ,(uuid-type device) ,(uuid-bytevector device)) device) title mount-point type flags options check?)))) @@ -166,7 +167,12 @@ initrd code." (match sexp ((device title mount-point type flags options check?) (file-system - (device device) (title title) + (device (match device + (('uuid (? symbol? type) (? bytevector? bv)) + (bytevector->uuid bv type)) + (_ + device))) + (title title) (mount-point mount-point) (type type) (flags flags) (options options) (check? check?))))) -- 2.14.2 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [bug#28696] [PATCH 3/5] file-systems: Add support for FAT16. 2017-10-04 7:25 ` [bug#28696] [PATCH 1/5] file-systems: 'mount-file-system' now takes a <file-system> object Ludovic Courtès 2017-10-04 7:25 ` [bug#28696] [PATCH 2/5] file-systems: Preserve UUID types when serializing Ludovic Courtès @ 2017-10-04 7:25 ` Ludovic Courtès 2017-10-04 7:25 ` [bug#28696] [PATCH 4/5] uuid: Change "fat32" to "fat" Ludovic Courtès 2017-10-04 7:25 ` [bug#28696] [PATCH 5/5] doc: Give an example with a FAT UUID Ludovic Courtès 3 siblings, 0 replies; 9+ messages in thread From: Ludovic Courtès @ 2017-10-04 7:25 UTC (permalink / raw) To: 28696 * gnu/build/file-systems.scm (check-fat32-file-system): Rename to... (check-fat-file-system): ... this. (check-file-system): Adjust accordingly. (fat16-superblock?, read-fat16-superblock) (fat16-superblock-uuid, fat16-superblock-volume-name): New procedures. (%partition-label-readers, %partition-uuid-readers): Add FAT16. --- gnu/build/file-systems.scm | 39 +++++++++++++++++++++++++++++++++++---- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/gnu/build/file-systems.scm b/gnu/build/file-systems.scm index dea5bc619..5d6c335bb 100644 --- a/gnu/build/file-systems.scm +++ b/gnu/build/file-systems.scm @@ -194,7 +194,7 @@ if DEVICE does not contain a btrfs file system." Trailing spaces are trimmed." (string-trim-right (latin1->string (sub-bytevector sblock 71 11) (lambda (c) #f)) #\space)) -(define (check-fat32-file-system device) +(define (check-fat-file-system device) "Return the health of a fat file system on DEVICE." (match (status:exit-val (system* "fsck.vfat" "-v" "-a" device)) @@ -203,6 +203,33 @@ Trailing spaces are trimmed." (_ 'fatal-error))) \f +;;; +;;; FAT16 file systems. +;;; + +(define (fat16-superblock? sblock) + "Return #t when SBLOCK is a fat16 boot record." + (bytevector=? (sub-bytevector sblock 54 8) + (string->utf8 "FAT16 "))) + +(define (read-fat16-superblock device) + "Return the raw contents of DEVICE's fat16 superblock as a bytevector, or +#f if DEVICE does not contain a fat16 file system." + (read-superblock device 0 62 fat16-superblock?)) + +(define (fat16-superblock-uuid sblock) + "Return the Volume ID of a fat superblock SBLOCK as a 4-byte bytevector." + (sub-bytevector sblock 39 4)) + +(define (fat16-superblock-volume-name sblock) + "Return the volume name of SBLOCK as a string of at most 11 characters, or +#f if SBLOCK has no volume name. The volume name is a latin1 string. +Trailing spaces are trimmed." + (string-trim-right (latin1->string (sub-bytevector sblock 43 11) + (lambda (c) #f)) + #\space)) + +\f ;;; ;;; ISO9660 file systems. ;;; @@ -386,7 +413,9 @@ partition field reader that returned a value." (partition-field-reader read-btrfs-superblock btrfs-superblock-volume-name) (partition-field-reader read-fat32-superblock - fat32-superblock-volume-name))) + fat32-superblock-volume-name) + (partition-field-reader read-fat16-superblock + fat16-superblock-volume-name))) (define %partition-uuid-readers (list (partition-field-reader read-iso9660-superblock @@ -396,7 +425,9 @@ partition field reader that returned a value." (partition-field-reader read-btrfs-superblock btrfs-superblock-uuid) (partition-field-reader read-fat32-superblock - fat32-superblock-uuid))) + fat32-superblock-uuid) + (partition-field-reader read-fat16-superblock + fat16-superblock-uuid))) (define read-partition-label (cut read-partition-field <> %partition-label-readers)) @@ -511,7 +542,7 @@ the following: (cond ((string-prefix? "ext" type) check-ext2-file-system) ((string-prefix? "btrfs" type) check-btrfs-file-system) - ((string-suffix? "fat" type) check-fat32-file-system) + ((string-suffix? "fat" type) check-fat-file-system) (else #f))) (if check-procedure -- 2.14.2 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [bug#28696] [PATCH 4/5] uuid: Change "fat32" to "fat". 2017-10-04 7:25 ` [bug#28696] [PATCH 1/5] file-systems: 'mount-file-system' now takes a <file-system> object Ludovic Courtès 2017-10-04 7:25 ` [bug#28696] [PATCH 2/5] file-systems: Preserve UUID types when serializing Ludovic Courtès 2017-10-04 7:25 ` [bug#28696] [PATCH 3/5] file-systems: Add support for FAT16 Ludovic Courtès @ 2017-10-04 7:25 ` Ludovic Courtès 2017-10-04 7:25 ` [bug#28696] [PATCH 5/5] doc: Give an example with a FAT UUID Ludovic Courtès 3 siblings, 0 replies; 9+ messages in thread From: Ludovic Courtès @ 2017-10-04 7:25 UTC (permalink / raw) To: 28696 * gnu/system/uuid.scm (%fat32-endianness): Rename to... (%fat-endianness): ... this. (fat32-uuid->string): Rename to... (fat-uuid->string): ... this. (%fat32-uuid-rx): Rename to.. (%fat-uuid-rx): ... this. (string->fat32-uuid): Rename to... (string->fat-uuid): ... this. (%uuid-parsers, %uuid-printers): Add 'fat16. --- gnu/system/uuid.scm | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/gnu/system/uuid.scm b/gnu/system/uuid.scm index 6470abb8c..26953a9a9 100644 --- a/gnu/system/uuid.scm +++ b/gnu/system/uuid.scm @@ -41,7 +41,7 @@ string->ext3-uuid string->ext4-uuid string->btrfs-uuid - string->fat32-uuid + string->fat-uuid iso9660-uuid->string ;; XXX: For lack of a better place. @@ -163,25 +163,25 @@ ISO9660 UUID representation." \f ;;; -;;; FAT32. +;;; FAT32/FAT16. ;;; -(define-syntax %fat32-endianness - ;; Endianness of FAT file systems. +(define-syntax %fat-endianness + ;; Endianness of FAT32/FAT16 file systems. (identifier-syntax (endianness little))) -(define (fat32-uuid->string uuid) - "Convert fat32 UUID, a 4-byte bytevector, to its string representation." - (let ((high (bytevector-uint-ref uuid 0 %fat32-endianness 2)) - (low (bytevector-uint-ref uuid 2 %fat32-endianness 2))) +(define (fat-uuid->string uuid) + "Convert FAT32/FAT16 UUID, a 4-byte bytevector, to its string representation." + (let ((high (bytevector-uint-ref uuid 0 %fat-endianness 2)) + (low (bytevector-uint-ref uuid 2 %fat-endianness 2))) (format #f "~:@(~x-~x~)" low high))) -(define %fat32-uuid-rx +(define %fat-uuid-rx (make-regexp "^([[:xdigit:]]{4})-([[:xdigit:]]{4})$")) -(define (string->fat32-uuid str) - "Parse STR, which is in FAT32 format, and return a bytevector or #f." - (match (regexp-exec %fat32-uuid-rx str) +(define (string->fat-uuid str) + "Parse STR, which is in FAT32/FAT16 format, and return a bytevector or #f." + (match (regexp-exec %fat-uuid-rx str) (#f #f) (rx-match @@ -189,7 +189,7 @@ ISO9660 UUID representation." (match:substring rx-match 2) 16) (string->number (match:substring rx-match 1) 16)) - %fat32-endianness + %fat-endianness 2)))) \f @@ -215,14 +215,14 @@ ISO9660 UUID representation." (define %uuid-parsers (vhashq ('dce 'ext2 'ext3 'ext4 'btrfs 'luks => string->dce-uuid) - ('fat32 'fat => string->fat32-uuid) + ('fat32 'fat16 'fat => string->fat-uuid) ('iso9660 => string->iso9660-uuid))) (define %uuid-printers (vhashq ('dce 'ext2 'ext3 'ext4 'btrfs 'luks => dce-uuid->string) ('iso9660 => iso9660-uuid->string) - ('fat32 'fat => fat32-uuid->string))) + ('fat32 'fat16 'fat => fat-uuid->string))) (define* (string->uuid str #:optional (type 'dce)) "Parse STR as a UUID of the given TYPE. On success, return the -- 2.14.2 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [bug#28696] [PATCH 5/5] doc: Give an example with a FAT UUID. 2017-10-04 7:25 ` [bug#28696] [PATCH 1/5] file-systems: 'mount-file-system' now takes a <file-system> object Ludovic Courtès ` (2 preceding siblings ...) 2017-10-04 7:25 ` [bug#28696] [PATCH 4/5] uuid: Change "fat32" to "fat" Ludovic Courtès @ 2017-10-04 7:25 ` Ludovic Courtès 3 siblings, 0 replies; 9+ messages in thread From: Ludovic Courtès @ 2017-10-04 7:25 UTC (permalink / raw) To: 28696 * gnu/system/examples/lightweight-desktop.tmpl <file-systems>: Add a UUID for the /boot/efi partition. * doc/guix.texi (Using the Configuration System): Mention it. --- doc/guix.texi | 5 +++++ gnu/system/examples/lightweight-desktop.tmpl | 8 ++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index b9d127c47..13b6d721f 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -8396,6 +8396,7 @@ management, power management, and more, would look like this: @include os-config-desktop.texi @end lisp +@cindex UEFI A graphical UEFI system with a choice of lightweight window managers instead of full-blown desktop environments would look like this: @@ -8403,6 +8404,10 @@ instead of full-blown desktop environments would look like this: @include os-config-lightweight-desktop.texi @end lisp +This example refers to the @file{/boot/efi} partition by its UUID, +@code{1234-ABCD}. Replace this UUID with the right UUID on your system, +as returned by the @command{blkid} command. + @xref{Desktop Services}, for the exact list of services provided by @var{%desktop-services}. @xref{X.509 Certificates}, for background information about the @code{nss-certs} package that is used here. diff --git a/gnu/system/examples/lightweight-desktop.tmpl b/gnu/system/examples/lightweight-desktop.tmpl index fb7cfebf6..d13c04c76 100644 --- a/gnu/system/examples/lightweight-desktop.tmpl +++ b/gnu/system/examples/lightweight-desktop.tmpl @@ -17,16 +17,16 @@ (bootloader grub-efi-bootloader) (target "/boot/efi"))) - ;; Assume the target root file system is labelled "my-root". + ;; Assume the target root file system is labelled "my-root", + ;; and the EFI System Partition has UUID 1234-ABCD. (file-systems (cons* (file-system (device "my-root") (title 'label) (mount-point "/") (type "ext4")) (file-system - ;; Specify partition here since FAT - ;; labels are currently unsupported. - (device "/dev/sda1") + (device (uuid "1234-ABCD" 'fat)) + (title 'uuid) (mount-point "/boot/efi") (type "vfat")) %base-file-systems)) -- 2.14.2 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [bug#28696] [PATCH 0/5] Support UUIDs for the EFI System Partition (FAT) 2017-10-04 7:24 [bug#28696] [PATCH 0/5] Support UUIDs for the EFI System Partition (FAT) Ludovic Courtès 2017-10-04 7:25 ` [bug#28696] [PATCH 1/5] file-systems: 'mount-file-system' now takes a <file-system> object Ludovic Courtès @ 2017-10-09 20:54 ` Roel Janssen 2017-10-11 19:49 ` Ludovic Courtès 2017-10-11 9:13 ` bug#28696: " Ludovic Courtès 2 siblings, 1 reply; 9+ messages in thread From: Roel Janssen @ 2017-10-09 20:54 UTC (permalink / raw) To: Ludovic Courtès; +Cc: 28696 Ludovic Courtès writes: > Hello! > > This patch series fixes what Roel reported at > <https://lists.gnu.org/archive/html/help-guix/2017-09/msg00094.html>: it > allows users to refer to their EFI System Partition and to FAT file > systems in general by UUID. > > I’ve tested it on my UEFI laptop where /boot/efi is actually FAT16, not > FAT32 (I suppose UEFI supports both). > > Let me know what you think! > > Ludo’. > > Ludovic Courtès (5): > file-systems: 'mount-file-system' now takes a <file-system> object. > file-systems: Preserve UUID types when serializing. > file-systems: Add support for FAT16. > uuid: Change "fat32" to "fat". > doc: Give an example with a FAT UUID. > > doc/guix.texi | 5 ++ > gnu/build/file-systems.scm | 115 +++++++++++++++++---------- > gnu/build/linux-boot.scm | 20 ++--- > gnu/build/linux-container.scm | 3 +- > gnu/services/base.scm | 6 +- > gnu/system/examples/lightweight-desktop.tmpl | 8 +- > gnu/system/file-systems.scm | 10 ++- > gnu/system/linux-initrd.scm | 6 +- > gnu/system/uuid.scm | 30 +++---- > 9 files changed, 126 insertions(+), 77 deletions(-) Sorry for the delay. It's really awesome that you've work so hard to fix the issue I reported. I really appreciate it! I tried it with: (file-system (title 'uuid) (device (uuid "72E5-26A0" 'fat)) (mount-point "/boot/efi") (type "vfat")) And it works. These changes look good to me. Thanks again, Roel Janssen ^ permalink raw reply [flat|nested] 9+ messages in thread
* [bug#28696] [PATCH 0/5] Support UUIDs for the EFI System Partition (FAT) 2017-10-09 20:54 ` [bug#28696] [PATCH 0/5] Support UUIDs for the EFI System Partition (FAT) Roel Janssen @ 2017-10-11 19:49 ` Ludovic Courtès 0 siblings, 0 replies; 9+ messages in thread From: Ludovic Courtès @ 2017-10-11 19:49 UTC (permalink / raw) To: Roel Janssen; +Cc: 28696 Hi Roel, Roel Janssen <roel@gnu.org> skribis: > Sorry for the delay. It's really awesome that you've work so hard to > fix the issue I reported. I really appreciate it! > > I tried it with: > (file-system > (title 'uuid) > (device (uuid "72E5-26A0" 'fat)) > (mount-point "/boot/efi") > (type "vfat")) > > And it works. These changes look good to me. Awesome, thanks for testing! Most likely you can also do: (device "EFI") (title 'label) though I wouldn’t recommend that because if there’s, say, a bootable UEFI dongle plugged in when you boot, you could end up mounting that one instead of your actual hard disk. Ludo’. ^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#28696: [PATCH 0/5] Support UUIDs for the EFI System Partition (FAT) 2017-10-04 7:24 [bug#28696] [PATCH 0/5] Support UUIDs for the EFI System Partition (FAT) Ludovic Courtès 2017-10-04 7:25 ` [bug#28696] [PATCH 1/5] file-systems: 'mount-file-system' now takes a <file-system> object Ludovic Courtès 2017-10-09 20:54 ` [bug#28696] [PATCH 0/5] Support UUIDs for the EFI System Partition (FAT) Roel Janssen @ 2017-10-11 9:13 ` Ludovic Courtès 2 siblings, 0 replies; 9+ messages in thread From: Ludovic Courtès @ 2017-10-11 9:13 UTC (permalink / raw) To: 28696-done Hello, Ludovic Courtès <ludo@gnu.org> skribis: > This patch series fixes what Roel reported at > <https://lists.gnu.org/archive/html/help-guix/2017-09/msg00094.html>: it > allows users to refer to their EFI System Partition and to FAT file > systems in general by UUID. I went ahead and pushed this series. Let me know if anything’s wrong! Ludo’. ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2017-10-11 19:50 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2017-10-04 7:24 [bug#28696] [PATCH 0/5] Support UUIDs for the EFI System Partition (FAT) Ludovic Courtès 2017-10-04 7:25 ` [bug#28696] [PATCH 1/5] file-systems: 'mount-file-system' now takes a <file-system> object Ludovic Courtès 2017-10-04 7:25 ` [bug#28696] [PATCH 2/5] file-systems: Preserve UUID types when serializing Ludovic Courtès 2017-10-04 7:25 ` [bug#28696] [PATCH 3/5] file-systems: Add support for FAT16 Ludovic Courtès 2017-10-04 7:25 ` [bug#28696] [PATCH 4/5] uuid: Change "fat32" to "fat" Ludovic Courtès 2017-10-04 7:25 ` [bug#28696] [PATCH 5/5] doc: Give an example with a FAT UUID Ludovic Courtès 2017-10-09 20:54 ` [bug#28696] [PATCH 0/5] Support UUIDs for the EFI System Partition (FAT) Roel Janssen 2017-10-11 19:49 ` Ludovic Courtès 2017-10-11 9:13 ` bug#28696: " Ludovic Courtès
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/guix.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).