gnu: linux-libre-with-bpf: Deprecate in favor of linux-libre.

The kernel has progressively enabled the BPF settings, to the point where
having a separate kernel for it makes little sense, so repatriate the few
non-default BPF-related configs to our main kernel.

* gnu/packages/linux.scm (%bpf-extra-linux-options): Delete variable.
(default-extra-linux-options): Enable CONFIG_NET_CLS_BPF and
CONFIG_NET_ACT_BPF.  CONFIG_IKHEADERS is dropped as it adds 4 MiB to the
kernel image and appears somewhat redundant with BTF debug info.
(linux-libre-with-bpf): Deprecate to linux-libre.

Change-Id: Id672241916dcbcdca7cbc16d869d00223446cd3d
This commit is contained in:
Maxim Cournoyer 2024-05-13 12:07:23 -04:00
parent afacfa33ec
commit 412d99a657
No known key found for this signature in database
GPG key ID: 1260E46482E63562

View file

@ -874,6 +874,8 @@ (define (default-extra-linux-options version)
,@(if (version>=? version "5.13") ,@(if (version>=? version "5.13")
'(("BPF_UNPRIV_DEFAULT_OFF" . #t)) '(("BPF_UNPRIV_DEFAULT_OFF" . #t))
'()) '())
("CONFIG_NET_CLS_BPF" . m) ;classify packets based on BPF filters
("CONFIG_NET_ACT_BPF" . m) ;to execute BPF code on packets
;; Compress kernel modules via Zstd. ;; Compress kernel modules via Zstd.
,(if (version>=? version "5.13") ,(if (version>=? version "5.13")
'("CONFIG_MODULE_COMPRESS_ZSTD" . #t) '("CONFIG_MODULE_COMPRESS_ZSTD" . #t)
@ -930,30 +932,6 @@ (define (default-extra-linux-options version)
("CONFIG_CIFS" . m) ("CONFIG_CIFS" . m)
("CONFIG_9P_FS" . m))) ("CONFIG_9P_FS" . m)))
;; See https://github.com/iovisor/bcc/blob/master/INSTALL.md#kernel-configuration
(define %bpf-extra-linux-options
`(;; Needed for probes
("CONFIG_UPROBE_EVENTS" . #t)
("CONFIG_KPROBE_EVENTS" . #t)
;; kheaders module also helpful for tracing
("CONFIG_IKHEADERS" . #t)
("CONFIG_BPF" . #t)
("CONFIG_BPF_SYSCALL" . #t)
("CONFIG_BPF_JIT_ALWAYS_ON" . #t)
;; optional, for tc filters
("CONFIG_NET_CLS_BPF" . m)
;; optional, for tc actions
("CONFIG_NET_ACT_BPF" . m)
("CONFIG_BPF_JIT" . #t)
;; for Linux kernel versions 4.1 through 4.6
;; ("CONFIG_HAVE_BPF_JIT" . y)
;; for Linux kernel versions 4.7 and later
("CONFIG_HAVE_EBPF_JIT" . #t)
;; optional, for kprobes
("CONFIG_BPF_EVENTS" . #t)
;; kheaders module
("CONFIG_IKHEADERS" . #t)))
(define (config->string options) (define (config->string options)
(string-join (map (match-lambda (string-join (map (match-lambda
((option . 'm) ((option . 'm)
@ -1431,25 +1409,7 @@ (define-public linux-libre-mips64el-fuloong2e
(default-extra-linux-options linux-libre-version)))) (default-extra-linux-options linux-libre-version))))
(define-public linux-libre-with-bpf (define-public linux-libre-with-bpf
(let ((base-linux-libre (deprecated-package "linux-libre-with-bpf" linux-libre))
(make-linux-libre*
linux-libre-6.8-version
linux-libre-6.8-gnu-revision
linux-libre-6.8-source
'("x86_64-linux" "i686-linux" "armhf-linux"
"aarch64-linux" "powerpc64le-linux" "riscv64-linux")
#:extra-version "bpf"
#:configuration-file kernel-config
#:extra-options
(append %bpf-extra-linux-options
(default-extra-linux-options linux-libre-6.8-version)))))
(package
(inherit base-linux-libre)
(inputs (modify-inputs (package-inputs base-linux-libre)
(prepend cpio)))
(synopsis "Linux-libre with BPF support")
(description "This package provides GNU Linux-Libre with support
for @acronym{BPF, the Berkeley Packet Filter}."))))
;;; ;;;