diff options
| author | Alex Griffin <a@ajgrf.com> | 2020-01-08 12:46:32 -0600 |
|---|---|---|
| committer | Alex Griffin <a@ajgrf.com> | 2020-01-08 15:53:58 -0600 |
| commit | 6ece1a5da737c5862812aa86e3d2431f0d2f44a9 (patch) | |
| tree | 2dcc9249935dfd0df9e0ffdd5eac029832fc091c /README.org | |
| parent | 1d7177a786d0cf6f40941900a1c5016c4f003bc3 (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.org | 37 |
1 files changed, 36 insertions, 1 deletions
| @@ -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: | |||
| 91 | guix system disk-image /path/to/this/channel/nongnu/system/install.scm | 93 | guix system disk-image /path/to/this/channel/nongnu/system/install.scm |
| 92 | #+end_src | 94 | #+end_src |
| 93 | 95 | ||
| 96 | ** CPU Microcode | ||
| 97 | |||
| 98 | CPU microcode updates are nonfree blobs that apply directly to a processor to | ||
| 99 | patch its behavior, and are therefore not included in upstream GNU Guix. | ||
| 100 | However, running the latest microcode is important to avoid nasty CPU bugs and | ||
| 101 | hardware security vulnerabilities. | ||
| 102 | |||
| 103 | To enable early loading of CPU microcode, use the ~microcode-initrd~ function | ||
| 104 | to 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 | |||
| 108 | If you need to customize the ~initrd~ for some reason, you should first | ||
| 109 | understand 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 | ||
| 112 | out for your own. For example, this: | ||
| 113 | |||
| 114 | #+BEGIN_SRC scheme | ||
| 115 | (initrd microcode-initrd) | ||
| 116 | #+END_SRC | ||
| 117 | |||
| 118 | is 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 | ||
| 96 | Some Broadcom wireless hardware requires a proprietary kernel module in | 131 | Some Broadcom wireless hardware requires a proprietary kernel module in |
