diff options
author | Mathieu Othacehe <othacehe@gnu.org> | 2021-06-12 18:40:39 +0200 |
---|---|---|
committer | Mathieu Othacehe <othacehe@gnu.org> | 2021-06-12 18:40:39 +0200 |
commit | 154a4e046281c28e39b5016e965d3d937a2ea4a1 (patch) | |
tree | 5e573daf3063022a23351eab90611590300f8a07 /gnu | |
parent | 7479124cd7030b9b303420cb28585bac4331daaf (diff) | |
download | guix-154a4e046281c28e39b5016e965d3d937a2ea4a1.tar.gz guix-154a4e046281c28e39b5016e965d3d937a2ea4a1.zip |
installer: Improve install device detection.
* gnu/installer/parted.scm (non-install-devices): Improve the detection by
assuming that any device with the ISO9660 label is the installation device.
Diffstat (limited to 'gnu')
-rw-r--r-- | gnu/installer/parted.scm | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/gnu/installer/parted.scm b/gnu/installer/parted.scm index 930f45ae1c..6bb5e9e85c 100644 --- a/gnu/installer/parted.scm +++ b/gnu/installer/parted.scm @@ -24,7 +24,8 @@ #:use-module (gnu installer newt page) #:use-module (gnu system uuid) #:use-module ((gnu build file-systems) - #:select (read-partition-uuid + #:select (find-partition-by-label + read-partition-uuid read-luks-partition-uuid)) #:use-module ((gnu build linux-modules) #:select (missing-modules)) @@ -338,14 +339,17 @@ fail. See rereadpt function in wipefs.c of util-linux for an explanation." (invoke "dmsetup" "remove_all"))) (define (non-install-devices) - "Return all the available devices, except the busy one, allegedly the -install device. DEVICE-IS-BUSY? is a parted call, checking if the device is -mounted." - ;; FIXME: The install image uses an overlayfs so the install device does not - ;; appear as mounted and won't be considered as busy. + "Return all the available devices, except the install device." + ;; XXX: The install image uses an overlayfs so detecting the install device + ;; is not easy. Assume that a given device is the installation device if it + ;; is reported as busy by parted or if its label is the ISO9660 image label. (remove (lambda (device) - (let ((file-name (device-path device))) - (device-is-busy? device))) + (let ((file-name (device-path device)) + (install-file-name + (find-partition-by-label "GUIX_IMAGE"))) + (or (device-is-busy? device) + (and install-file-name + (string=? file-name install-file-name))))) (devices))) |