summaryrefslogtreecommitdiff
path: root/gnu/system
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2019-03-20 12:19:14 +0100
committerLudovic Courtès <ludo@gnu.org>2019-03-24 23:06:12 +0100
commitae7a316b9da0d1a50c5abdc531c68c8e98e561c9 (patch)
treec9d07ee413f3b9e2896931e4c49daf9acadf37fc /gnu/system
parent48e595b7a8f8f83ba00386e4dccf1ef809474226 (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')
-rw-r--r--gnu/system/linux-initrd.scm26
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.
152HELPER-PACKAGES is a list of packages to be copied in the initrd. It may include 156HELPER-PACKAGES is a list of packages to be copied in the initrd. It may include
153e2fsck/static or other packages needed by the initrd to check root partition. 157e2fsck/static or other packages needed by the initrd to check root partition.
154 158
159When true, KEYBOARD-LAYOUT is a <keyboard-layout> record denoting the desired
160console keyboard layout. This is done before MAPPED-DEVICES are set up and
161before FILE-SYSTEMS are mounted such that, should the user need to enter a
162passphrase or use the REPL, this happens using the intended keyboard layout.
163
155When QEMU-NETWORKING? is true, set up networking with the standard QEMU 164When QEMU-NETWORKING? is true, set up networking with the standard QEMU
156parameters. 165parameters.
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
300on the kernel command line via '--root'. MAPPED-DEVICES is a list of device 312on the kernel command line via '--root'. MAPPED-DEVICES is a list of device
301mappings to realize before FILE-SYSTEMS are mounted. 313mappings to realize before FILE-SYSTEMS are mounted.
302 314
315When true, KEYBOARD-LAYOUT is a <keyboard-layout> record denoting the desired
316console keyboard layout. This is done before MAPPED-DEVICES are set up and
317before FILE-SYSTEMS are mounted such that, should the user need to enter a
318passphrase or use the REPL, this happens using the intended keyboard layout.
319
303QEMU-NETWORKING? and VOLATILE-ROOT? behaves as in raw-initrd. 320QEMU-NETWORKING? and VOLATILE-ROOT? behaves as in raw-initrd.
304 321
305The initrd is automatically populated with all the kernel modules necessary 322The 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))