diff options
| author | Mathieu Othacehe <othacehe@gnu.org> | 2020-07-05 12:23:21 +0200 |
|---|---|---|
| committer | Mathieu Othacehe <othacehe@gnu.org> | 2020-08-25 11:53:20 +0200 |
| commit | 755f365b02b42a5d1e8ef3000dadef069553a478 (patch) | |
| tree | 57ce759104439219c2c6076aa3c1af875487c5c1 /gnu/machine | |
| parent | 46ef674b34fd63f6bcd5bd07348d5c66eb8bdf29 (diff) | |
linux-libre: Support module compression.
This commit adds support for GZIP compression for linux-libre kernel
modules. The initrd modules are kept uncompressed as the initrd is already
compressed as a whole.
The linux-libre kernel also supports XZ compression, but as Guix does not have
any available bindings for now, and the compression time is far more
significant, GZIP seems to be a better option.
* gnu/build/linux-modules.scm (modinfo-section-contents): Use
'call-with-gzip-input-port' to read from a module file using '.gz' extension,
(strip-extension): new procedure,
(dot-ko): adapt to support compression,
(ensure-dot-ko): ditto,
(file-name->module-name): ditto,
(find-module-file): ditto,
(load-linux-module*): ditto,
(module-name->file-name/guess): ditto,
(module-name-lookup): ditto,
(write-module-name-database): ditto,
(write-module-alias-database): ditto,
(write-module-device-database): ditto.
* gnu/installer.scm (installer-program): Add "guile-zlib" to the extensions.
* gnu/machine/ssh.scm (machine-check-initrd-modules): Ditto.
* gnu/services.scm (activation-script): Ditto.
* gnu/services/base.scm (default-serial-port): Ditto,
(agetty-shepherd-service): ditto,
(udev-service-type): ditto.
* gnu/system/image.scm (gcrypt-sqlite3&co): Ditto.
* gnu/system/linux-initrd.scm (flat-linux-module-directory): Add "guile-zlib"
to the extensions and make sure that the initrd only contains
uncompressed module files.
* gnu/system/shadow.scm (account-shepherd-service): Add "guile-zlib" to the
extensions.
* guix/profiles.scm (linux-module-database): Ditto.
Diffstat (limited to 'gnu/machine')
| -rw-r--r-- | gnu/machine/ssh.scm | 35 |
1 files changed, 19 insertions, 16 deletions
diff --git a/gnu/machine/ssh.scm b/gnu/machine/ssh.scm index 4e31baa4b96..ee5032e2810 100644 --- a/gnu/machine/ssh.scm +++ b/gnu/machine/ssh.scm | |||
| @@ -21,6 +21,7 @@ | |||
| 21 | #:use-module (gnu bootloader) | 21 | #:use-module (gnu bootloader) |
| 22 | #:use-module (gnu machine) | 22 | #:use-module (gnu machine) |
| 23 | #:autoload (gnu packages gnupg) (guile-gcrypt) | 23 | #:autoload (gnu packages gnupg) (guile-gcrypt) |
| 24 | #:autoload (gnu packages guile) (guile-zlib) | ||
| 24 | #:use-module (gnu system) | 25 | #:use-module (gnu system) |
| 25 | #:use-module (gnu system file-systems) | 26 | #:use-module (gnu system file-systems) |
| 26 | #:use-module (gnu system uuid) | 27 | #:use-module (gnu system uuid) |
| @@ -248,22 +249,24 @@ not available in the initrd." | |||
| 248 | '((gnu build file-systems) | 249 | '((gnu build file-systems) |
| 249 | (gnu build linux-modules) | 250 | (gnu build linux-modules) |
| 250 | (gnu system uuid))) | 251 | (gnu system uuid))) |
| 251 | #~(begin | 252 | (with-extensions (list guile-zlib) |
| 252 | (use-modules (gnu build file-systems) | 253 | #~(begin |
| 253 | (gnu build linux-modules) | 254 | (use-modules (gnu build file-systems) |
| 254 | (gnu system uuid)) | 255 | (gnu build linux-modules) |
| 255 | 256 | (gnu system uuid)) | |
| 256 | (define dev | 257 | |
| 257 | #$(cond ((string? device) device) | 258 | (define dev |
| 258 | ((uuid? device) #~(find-partition-by-uuid | 259 | #$(cond ((string? device) device) |
| 259 | (string->uuid | 260 | ((uuid? device) #~(find-partition-by-uuid |
| 260 | #$(uuid->string device)))) | 261 | (string->uuid |
| 261 | ((file-system-label? device) | 262 | #$(uuid->string device)))) |
| 262 | #~(find-partition-by-label | 263 | ((file-system-label? device) |
| 263 | #$(file-system-label->string device))))) | 264 | #~(find-partition-by-label |
| 264 | 265 | #$(file-system-label->string device))))) | |
| 265 | (missing-modules dev '#$(operating-system-initrd-modules | 266 | |
| 266 | (machine-operating-system machine))))))) | 267 | (missing-modules dev |
| 268 | '#$(operating-system-initrd-modules | ||
| 269 | (machine-operating-system machine)))))))) | ||
| 267 | 270 | ||
| 268 | (remote-let ((missing remote-exp)) | 271 | (remote-let ((missing remote-exp)) |
| 269 | (unless (null? missing) | 272 | (unless (null? missing) |
