diff options
| author | Ludovic Courtès <ludo@gnu.org> | 2019-03-20 12:19:14 +0100 |
|---|---|---|
| committer | Ludovic Courtès <ludo@gnu.org> | 2019-03-24 23:06:12 +0100 |
| commit | ae7a316b9da0d1a50c5abdc531c68c8e98e561c9 (patch) | |
| tree | c9d07ee413f3b9e2896931e4c49daf9acadf37fc /gnu/system/linux-initrd.scm | |
| parent | 48e595b7a8f8f83ba00386e4dccf1ef809474226 (diff) | |
system: Initialize console keyboard layout in the initrd.
Partially fixes <https://bugs.gnu.org/25453>.
* gnu/system.scm (<operating-system>)[keyboard-layout]: New field.
(operating-system-initrd-file): Pass #:keyboard-layout to MAKE-INITRD.
* gnu/system/linux-initrd.scm (raw-initrd): Add #:keyboard-layout.
Pass #:keymap-file to 'boot-system'.
(base-initrd): Add #:keyboard-layout.
[helper-packages]: Add LOADKEYS-STATIC when KEYBOARD-LAYOUT is true.
Pass #:keyboard-layout to 'raw-initrd'.
* gnu/build/linux-boot.scm (boot-system): Add #:keymap-file and honor
it.
* doc/guix.texi (operating-system Reference): Document the
'keyboard-layout' field.
(Initial RAM Disk): Update 'raw-initrd' and 'base-initrd' documentation.
Diffstat (limited to 'gnu/system/linux-initrd.scm')
| -rw-r--r-- | gnu/system/linux-initrd.scm | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/gnu/system/linux-initrd.scm b/gnu/system/linux-initrd.scm index 983c6d81c86..656afd1ddb5 100644 --- a/gnu/system/linux-initrd.scm +++ b/gnu/system/linux-initrd.scm | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | ;;; GNU Guix --- Functional package management for GNU | 1 | ;;; GNU Guix --- Functional package management for GNU |
| 2 | ;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org> | 2 | ;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org> |
| 3 | ;;; Copyright © 2016 Mark H Weaver <mhw@netris.org> | 3 | ;;; Copyright © 2016 Mark H Weaver <mhw@netris.org> |
| 4 | ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> | 4 | ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> |
| 5 | ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> | 5 | ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> |
| @@ -31,10 +31,13 @@ | |||
| 31 | #:use-module (gnu packages disk) | 31 | #:use-module (gnu packages disk) |
| 32 | #:use-module (gnu packages linux) | 32 | #:use-module (gnu packages linux) |
| 33 | #:use-module (gnu packages guile) | 33 | #:use-module (gnu packages guile) |
| 34 | #:use-module ((gnu packages xorg) | ||
| 35 | #:select (console-setup xkeyboard-config)) | ||
| 34 | #:use-module ((gnu packages make-bootstrap) | 36 | #:use-module ((gnu packages make-bootstrap) |
| 35 | #:select (%guile-static-stripped)) | 37 | #:select (%guile-static-stripped)) |
| 36 | #:use-module (gnu system file-systems) | 38 | #:use-module (gnu system file-systems) |
| 37 | #:use-module (gnu system mapped-devices) | 39 | #:use-module (gnu system mapped-devices) |
| 40 | #:use-module (gnu system keyboard) | ||
| 38 | #:use-module (ice-9 match) | 41 | #:use-module (ice-9 match) |
| 39 | #:use-module (ice-9 regex) | 42 | #:use-module (ice-9 regex) |
| 40 | #:use-module (ice-9 vlist) | 43 | #:use-module (ice-9 vlist) |
| @@ -139,6 +142,7 @@ MODULES and taken from LINUX." | |||
| 139 | (linux linux-libre) | 142 | (linux linux-libre) |
| 140 | (linux-modules '()) | 143 | (linux-modules '()) |
| 141 | (mapped-devices '()) | 144 | (mapped-devices '()) |
| 145 | (keyboard-layout #f) | ||
| 142 | (helper-packages '()) | 146 | (helper-packages '()) |
| 143 | qemu-networking? | 147 | qemu-networking? |
| 144 | volatile-root? | 148 | volatile-root? |
| @@ -152,6 +156,11 @@ mappings to realize before FILE-SYSTEMS are mounted. | |||
| 152 | HELPER-PACKAGES is a list of packages to be copied in the initrd. It may include | 156 | HELPER-PACKAGES is a list of packages to be copied in the initrd. It may include |
| 153 | e2fsck/static or other packages needed by the initrd to check root partition. | 157 | e2fsck/static or other packages needed by the initrd to check root partition. |
| 154 | 158 | ||
| 159 | When true, KEYBOARD-LAYOUT is a <keyboard-layout> record denoting the desired | ||
| 160 | console keyboard layout. This is done before MAPPED-DEVICES are set up and | ||
| 161 | before FILE-SYSTEMS are mounted such that, should the user need to enter a | ||
| 162 | passphrase or use the REPL, this happens using the intended keyboard layout. | ||
| 163 | |||
| 155 | When QEMU-NETWORKING? is true, set up networking with the standard QEMU | 164 | When QEMU-NETWORKING? is true, set up networking with the standard QEMU |
| 156 | parameters. | 165 | parameters. |
| 157 | 166 | ||
| @@ -206,6 +215,8 @@ upon error." | |||
| 206 | (and #$@device-mapping-commands)) | 215 | (and #$@device-mapping-commands)) |
| 207 | #:linux-modules '#$linux-modules | 216 | #:linux-modules '#$linux-modules |
| 208 | #:linux-module-directory '#$kodir | 217 | #:linux-module-directory '#$kodir |
| 218 | #:keymap-file #+(and=> keyboard-layout | ||
| 219 | keyboard-layout->console-keymap) | ||
| 209 | #:qemu-guest-networking? #$qemu-networking? | 220 | #:qemu-guest-networking? #$qemu-networking? |
| 210 | #:volatile-root? '#$volatile-root? | 221 | #:volatile-root? '#$volatile-root? |
| 211 | #:on-error '#$on-error))) | 222 | #:on-error '#$on-error))) |
| @@ -290,6 +301,7 @@ FILE-SYSTEMS." | |||
| 290 | (linux linux-libre) | 301 | (linux linux-libre) |
| 291 | (linux-modules '()) | 302 | (linux-modules '()) |
| 292 | (mapped-devices '()) | 303 | (mapped-devices '()) |
| 304 | (keyboard-layout #f) | ||
| 293 | qemu-networking? | 305 | qemu-networking? |
| 294 | volatile-root? | 306 | volatile-root? |
| 295 | (extra-modules '()) ;deprecated | 307 | (extra-modules '()) ;deprecated |
| @@ -300,6 +312,11 @@ mounted by the initrd, possibly in addition to the root file system specified | |||
| 300 | on the kernel command line via '--root'. MAPPED-DEVICES is a list of device | 312 | on the kernel command line via '--root'. MAPPED-DEVICES is a list of device |
| 301 | mappings to realize before FILE-SYSTEMS are mounted. | 313 | mappings to realize before FILE-SYSTEMS are mounted. |
| 302 | 314 | ||
| 315 | When true, KEYBOARD-LAYOUT is a <keyboard-layout> record denoting the desired | ||
| 316 | console keyboard layout. This is done before MAPPED-DEVICES are set up and | ||
| 317 | before FILE-SYSTEMS are mounted such that, should the user need to enter a | ||
| 318 | passphrase or use the REPL, this happens using the intended keyboard layout. | ||
| 319 | |||
| 303 | QEMU-NETWORKING? and VOLATILE-ROOT? behaves as in raw-initrd. | 320 | QEMU-NETWORKING? and VOLATILE-ROOT? behaves as in raw-initrd. |
| 304 | 321 | ||
| 305 | The initrd is automatically populated with all the kernel modules necessary | 322 | The initrd is automatically populated with all the kernel modules necessary |
| @@ -316,13 +333,18 @@ loaded at boot time in the order in which they appear." | |||
| 316 | ,@extra-modules)) | 333 | ,@extra-modules)) |
| 317 | 334 | ||
| 318 | (define helper-packages | 335 | (define helper-packages |
| 319 | (file-system-packages file-systems #:volatile-root? volatile-root?)) | 336 | (append (file-system-packages file-systems |
| 337 | #:volatile-root? volatile-root?) | ||
| 338 | (if keyboard-layout | ||
| 339 | (list loadkeys-static) | ||
| 340 | '()))) | ||
| 320 | 341 | ||
| 321 | (raw-initrd file-systems | 342 | (raw-initrd file-systems |
| 322 | #:linux linux | 343 | #:linux linux |
| 323 | #:linux-modules linux-modules* | 344 | #:linux-modules linux-modules* |
| 324 | #:mapped-devices mapped-devices | 345 | #:mapped-devices mapped-devices |
| 325 | #:helper-packages helper-packages | 346 | #:helper-packages helper-packages |
| 347 | #:keyboard-layout keyboard-layout | ||
| 326 | #:qemu-networking? qemu-networking? | 348 | #:qemu-networking? qemu-networking? |
| 327 | #:volatile-root? volatile-root? | 349 | #:volatile-root? volatile-root? |
| 328 | #:on-error on-error)) | 350 | #:on-error on-error)) |
