diff options
author | Adam Quandour <adam.quandour@gmail.com> | 2025-03-16 16:21:23 -0700 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2025-04-06 11:49:59 +0200 |
commit | 0e144a0da24a30f86c9fa33c3f3fcfd7ac6e21be (patch) | |
tree | c1f53c0c23dd5511b51f71b3c6b1b838a89cbfbd | |
parent | a2ef2bcbfd75593a865e726b014594a73aa0e441 (diff) |
doc: cookbook: Update instructions for building a custom kernel.
* doc/guix-cookbook.texi (Customizing the Kernel): Update.
Change-Id: I4451f038219c73b685fa3e80e1b05c729d4bea35
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Modified-by: Ludovic Courtès <ludo@gnu.org>
-rw-r--r-- | doc/guix-cookbook.texi | 47 |
1 files changed, 16 insertions, 31 deletions
diff --git a/doc/guix-cookbook.texi b/doc/guix-cookbook.texi index fe4cac79c3..6296156855 100644 --- a/doc/guix-cookbook.texi +++ b/doc/guix-cookbook.texi @@ -1725,43 +1725,28 @@ this, it is not actually easy to include a custom kernel configuration from the definition, but don't worry, there are other ways to work with what we do have. There are two ways to create a kernel with a custom kernel configuration. The -first is to provide a standard @file{.config} file during the build process by -including an actual @file{.config} file as a native input to our custom -kernel. The following is a snippet from the custom @code{'configure} phase of -the @code{make-linux-libre} package definition: +first is to provide a standard @file{defconfig} to @code{customize-linux} +procedure. To produce such file you need to obtain Linux source code, create a +@file{.config} file (using @code{make menuconfig} command, for example) or +provide one you already have. After that you will need to run +@code{make savedefconfig} command within the kernel source tree---this will +produce the @file{defconfig} file which we can be used to build a custom kernel. -@lisp -(let ((build (assoc-ref %standard-phases 'build)) - (config (assoc-ref (or native-inputs inputs) "kconfig"))) - - ;; Use a custom kernel configuration file or a default - ;; configuration file. - (if config - (begin - (copy-file config ".config") - (chmod ".config" #o666)) - (invoke "make" ,defconfig))) -@end lisp - -Below is a sample kernel package. The @code{linux-libre} package is nothing -special and can be inherited from and have its fields overridden like any -other package: +Below is a sample kernel package. @lisp -(define-public linux-libre/E2140 +(define-public my-linux-libre (package - (inherit linux-libre) - (native-inputs - `(("kconfig" ,(local-file "E2140.config")) - ,@@(alist-delete "kconfig" - (package-native-inputs linux-libre)))))) + (inherit (customize-linux + #:linux linux-libre + #:defconfig + (local-file "defconfig"))) + (name "my-linux-libre"))) @end lisp -In the same directory as the file defining @code{linux-libre-E2140} is a file -named @file{E2140.config}, which is an actual kernel configuration file. The -@code{defconfig} keyword of @code{make-linux-libre} is left blank here, so the -only kernel configuration in the package is the one which was included in the -@code{native-inputs} field. +In the same directory as the file defining @code{my-linux-libre} is a file +named @file{defconfig}. This way you way you can provide kernel options +you want to have in the result kernel. The second way to create a custom kernel is to pass a new value to the @code{extra-options} keyword of the @code{make-linux-libre} procedure. The |