diff options
Diffstat (limited to 'gnu/services/linux.scm')
| -rw-r--r-- | gnu/services/linux.scm | 59 |
1 files changed, 29 insertions, 30 deletions
diff --git a/gnu/services/linux.scm b/gnu/services/linux.scm index 72c7779596c..1046a7e0c2d 100644 --- a/gnu/services/linux.scm +++ b/gnu/services/linux.scm | |||
| @@ -147,35 +147,34 @@ representation." | |||
| 147 | (define kernel-module-loader-shepherd-service | 147 | (define kernel-module-loader-shepherd-service |
| 148 | (match-lambda | 148 | (match-lambda |
| 149 | ((and (? list? kernel-modules) ((? string?) ...)) | 149 | ((and (? list? kernel-modules) ((? string?) ...)) |
| 150 | (list | 150 | (shepherd-service |
| 151 | (shepherd-service | 151 | (documentation "Load kernel modules.") |
| 152 | (documentation "Load kernel modules.") | 152 | (provision '(kernel-module-loader)) |
| 153 | (provision '(kernel-module-loader)) | 153 | (requirement '(file-systems)) |
| 154 | (requirement '(file-systems)) | 154 | (one-shot? #t) |
| 155 | (one-shot? #t) | 155 | (modules `((srfi srfi-1) |
| 156 | (modules `((srfi srfi-1) | 156 | (srfi srfi-34) |
| 157 | (srfi srfi-34) | 157 | (srfi srfi-35) |
| 158 | (srfi srfi-35) | 158 | (rnrs io ports) |
| 159 | (rnrs io ports) | 159 | ,@%default-modules)) |
| 160 | ,@%default-modules)) | 160 | (start |
| 161 | (start | 161 | #~(lambda _ |
| 162 | #~(lambda _ | 162 | (cond |
| 163 | (cond | 163 | ((null? '#$kernel-modules) #t) |
| 164 | ((null? '#$kernel-modules) #t) | 164 | ((file-exists? "/proc/sys/kernel/modprobe") |
| 165 | ((file-exists? "/proc/sys/kernel/modprobe") | 165 | (let ((modprobe (call-with-input-file |
| 166 | (let ((modprobe (call-with-input-file | 166 | "/proc/sys/kernel/modprobe" get-line))) |
| 167 | "/proc/sys/kernel/modprobe" get-line))) | 167 | (guard (c ((message-condition? c) |
| 168 | (guard (c ((message-condition? c) | 168 | (format (current-error-port) "~a~%" |
| 169 | (format (current-error-port) "~a~%" | 169 | (condition-message c)) |
| 170 | (condition-message c)) | 170 | #f)) |
| 171 | #f)) | 171 | (every (lambda (module) |
| 172 | (every (lambda (module) | 172 | (invoke/quiet modprobe "--" module)) |
| 173 | (invoke/quiet modprobe "--" module)) | 173 | '#$kernel-modules)))) |
| 174 | '#$kernel-modules)))) | 174 | (else |
| 175 | (else | 175 | (format (current-error-port) "error: ~a~%" |
| 176 | (format (current-error-port) "error: ~a~%" | 176 | "Kernel is missing loadable module support.") |
| 177 | "Kernel is missing loadable module support.") | 177 | #f)))))))) |
| 178 | #f))))))))) | ||
| 179 | 178 | ||
| 180 | (define kernel-module-loader-service-type | 179 | (define kernel-module-loader-service-type |
| 181 | (service-type | 180 | (service-type |
| @@ -183,7 +182,7 @@ representation." | |||
| 183 | (description "Load kernel modules.") | 182 | (description "Load kernel modules.") |
| 184 | (extensions | 183 | (extensions |
| 185 | (list (service-extension shepherd-root-service-type | 184 | (list (service-extension shepherd-root-service-type |
| 186 | kernel-module-loader-shepherd-service))) | 185 | (compose list kernel-module-loader-shepherd-service)))) |
| 187 | (compose concatenate) | 186 | (compose concatenate) |
| 188 | (extend append) | 187 | (extend append) |
| 189 | (default-value '()))) | 188 | (default-value '()))) |
