summaryrefslogtreecommitdiff
path: root/README.org
diff options
context:
space:
mode:
authorAlex Griffin <a@ajgrf.com>2020-01-08 12:46:32 -0600
committerAlex Griffin <a@ajgrf.com>2020-01-08 15:53:58 -0600
commit6ece1a5da737c5862812aa86e3d2431f0d2f44a9 (patch)
tree2dcc9249935dfd0df9e0ffdd5eac029832fc091c /README.org
parent1d7177a786d0cf6f40941900a1c5016c4f003bc3 (diff)
README.org: Illustrate use of 'microcode-initrd'.
Closes #14. * README.org: Update example 'operating-system' definition to include 'microcode-initrd'.
Diffstat (limited to 'README.org')
-rw-r--r--README.org37
1 files changed, 36 insertions, 1 deletions
diff --git a/README.org b/README.org
index e3da1d1..6760109 100644
--- a/README.org
+++ b/README.org
@@ -61,10 +61,12 @@ the ~kernel~ and ~firmware~ fields of the ~operating-system~ definition in
61 61
62#+BEGIN_SRC scheme 62#+BEGIN_SRC scheme
63 ;; Import nonfree linux module. 63 ;; Import nonfree linux module.
64 (use-modules (nongnu packages linux)) 64 (use-modules (nongnu packages linux)
65 (nongnu system linux-initrd))
65 66
66 (operating-system 67 (operating-system
67 (kernel linux) 68 (kernel linux)
69 (initrd microcode-initrd)
68 (firmware (list linux-firmware)) 70 (firmware (list linux-firmware))
69 ... 71 ...
70 ) 72 )
@@ -91,6 +93,39 @@ nonfree Linux kernel and nonfree firmware with the following command:
91guix system disk-image /path/to/this/channel/nongnu/system/install.scm 93guix system disk-image /path/to/this/channel/nongnu/system/install.scm
92#+end_src 94#+end_src
93 95
96** CPU Microcode
97
98CPU microcode updates are nonfree blobs that apply directly to a processor to
99patch its behavior, and are therefore not included in upstream GNU Guix.
100However, running the latest microcode is important to avoid nasty CPU bugs and
101hardware security vulnerabilities.
102
103To enable early loading of CPU microcode, use the ~microcode-initrd~ function
104to add the microcode to the Initial RAM Disk. Most users can simply import
105~(nongnu system linux-initrd)~ and add ~(initrd microcode-initrd)~ to their
106~operating-system~ definition, as illustrated above.
107
108If you need to customize the ~initrd~ for some reason, you should first
109understand the upstream documentation on
110[[https://guix.gnu.org/manual/en/html_node/Initial-RAM-Disk.html][Initial RAM Disks]].
111~microcode-initrd~ simply wraps another ~initrd~ function, which you can swap
112out for your own. For example, this:
113
114#+BEGIN_SRC scheme
115 (initrd microcode-initrd)
116#+END_SRC
117
118is exactly equivalent to:
119
120#+BEGIN_SRC scheme
121 (initrd (lambda (file-systems . rest)
122 (apply microcode-initrd file-systems
123 #:initrd base-initrd
124 #:microcode-packages (list amd-microcode
125 intel-microcode)
126 rest)))
127#+END_SRC
128
94** Broadcom Wireless 129** Broadcom Wireless
95 130
96Some Broadcom wireless hardware requires a proprietary kernel module in 131Some Broadcom wireless hardware requires a proprietary kernel module in