summaryrefslogtreecommitdiff
path: root/nongnu/system/linux-initrd.scm
diff options
context:
space:
mode:
authorJelle Licht <jlicht@fsfe.org>2021-11-29 19:33:44 +0100
committerJelle Licht <jlicht@fsfe.org>2021-11-29 19:33:44 +0100
commitf99d5fabd3baee4f378aaf83f13c589b76337a18 (patch)
tree0d6302d99d4e4abb4ed58f15ef9d0906dec763b1 /nongnu/system/linux-initrd.scm
parent3ec1e7f16590c3b681d6cb3b110b0d9c115586ea (diff)
[WIP] Move channel to "guix" subdirectory.
Diffstat (limited to 'nongnu/system/linux-initrd.scm')
-rw-r--r--nongnu/system/linux-initrd.scm99
1 files changed, 0 insertions, 99 deletions
diff --git a/nongnu/system/linux-initrd.scm b/nongnu/system/linux-initrd.scm
deleted file mode 100644
index 5b29235..0000000
--- a/nongnu/system/linux-initrd.scm
+++ /dev/null
@@ -1,99 +0,0 @@
-;;; Copyright © 2020 Alex Griffin <a@ajgrf.com>
-;;;
-;;; This program is free software: you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published by
-;;; the Free Software Foundation, either version 3 of the License, or
-;;; (at your option) any later version.
-;;;
-;;; This program is distributed in the hope that it will be useful,
-;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-;;; GNU General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with this program. If not, see <https://www.gnu.org/licenses/>.
-
-(define-module (nongnu system linux-initrd)
- #:use-module (gnu system linux-initrd)
- #:use-module (guix gexp)
- #:use-module (guix modules)
- #:use-module (guix utils)
- #:use-module (nongnu packages linux)
- #:use-module (nonguix modules)
- #:export (microcode-initrd))
-
-;; See https://www.kernel.org/doc/Documentation/x86/microcode.txt
-
-(define* (microcode-initrd file-systems
- #:key
- (initrd base-initrd)
- (microcode-packages (list amd-microcode
- intel-microcode))
- #:allow-other-keys
- #:rest rest)
- "Build INITRD, extended to include x86 processor microcode from
-MICROCODE-PACKAGES."
- (let ((args (strip-keyword-arguments '(#:initrd #:microcode-packages) rest)))
- (combined-initrd (microcode-initrd* microcode-packages)
- (apply initrd file-systems
- args))))
-
-(define (microcode-initrd* microcode-packages)
- "Build an uncompressed initrd containing x86 processor microcode from
-MICROCODE-PACKAGES, in the format expected by the kernel."
- (define builder
- (with-imported-modules (source-module-closure
- '((gnu build linux-initrd)
- (guix build utils)
- (nonguix build utils))
- #:select? import-nonguix-module?)
- #~(begin
- (use-modules (gnu build linux-initrd)
- (guix build utils)
- (nonguix build utils))
-
- (let* ((initrd (string-append #$output "/initrd.cpio"))
- (dest-dir "kernel/x86/microcode")
- (amd-bin (string-append dest-dir "/AuthenticAMD.bin"))
- (intel-bin (string-append dest-dir "/GenuineIntel.bin")))
- (mkdir-p dest-dir)
- (for-each
- (lambda (package)
- (let ((intel-ucode (string-append package
- "/lib/firmware/intel-ucode"))
- (amd-ucode (string-append package
- "/lib/firmware/amd-ucode")))
- (when (directory-exists? intel-ucode)
- (concatenate-files (find-files intel-ucode ".*")
- intel-bin))
- (when (directory-exists? amd-ucode)
- (concatenate-files (find-files amd-ucode
- "^microcode_amd.*\\.bin$")
- amd-bin))))
- '#$microcode-packages)
-
- (mkdir-p #$output)
- (write-cpio-archive initrd "kernel" #:compress? #f)))))
-
- (file-append (computed-file "microcode-initrd" builder)
- "/initrd.cpio"))
-
-(define (combined-initrd . initrds)
- "Return a combined initrd, the result of concatenating INITRDS."
- (define builder
- (with-imported-modules (source-module-closure
- '((guix build utils)
- (nonguix build utils))
- #:select? import-nonguix-module?)
- #~(begin
- (use-modules (guix build utils)
- (nonguix build utils))
-
- ;; Use .img suffix since the result is no longer easily inspected by
- ;; standard tools like cpio and gzip.
- (let ((initrd (string-append #$output "/initrd.img")))
- (mkdir-p #$output)
- (concatenate-files '#$initrds initrd)))))
-
- (file-append (computed-file "combined-initrd" builder)
- "/initrd.img"))