liminix/pkgs
Daniel Barlow b9c0d93670 build modules at same time as main kernel vmlinux
This changes the practice for building kernel modules: now we expect
that the appropriate Kconfig symbols are set to =m in
config.kernel.config, and then use pkgs.kmodloader to create
a service that loads and unloads all the modules depended on by
a particular requirement.

Note that modules won't be installed on the target device just by
virue of having been built: only the modules that are referenced by a
kmodloader package will be in the closure.

An example may make this clearer: see modules/firewall/default.nix
in this commit.

Why?

If you have a compiled Linux kernel source tree and you change some
symbol from "is not set" to m and then run make modules, you cannot in
general expect that newly compiled module to work. This is because
there are places in the build of the main kernel where it looks to see
which modules _may_ be defined and uses that information to
accommodate them.

For example in an in-kernel build of

  https://github.com/torvalds/linux/blob/master/net/netfilter/core.c#L689

some symbols are defined only if CONFIG_NF_CONNTRACK is set, meaning
this code won't work if we have it unset initially then try later to
enable it and build modules only. Or see

  https://github.com/torvalds/linux/blob/master/include/linux/netdevice.h#L160
2024-02-11 23:47:11 +00:00
..
anoia anoia.system print command if it failed 2023-09-13 17:50:40 +01:00
fennel install fennel from source as a package 2023-07-04 22:56:17 +01:00
fennelrepl fennelrepl look for .fnl before .lua 2023-09-09 00:11:35 +01:00
firewallgen firewallgen: make nft shebang work 2023-06-27 21:26:23 +01:00
firmware-utils Add tplink module for creating 'safeloader' images 2024-02-06 17:59:38 +01:00
gen_init_cpio package gen_init_cpio, tool for making an initramfs 2023-04-04 22:54:20 +01:00
go-l2tp harcode paths for kpppoed, add port num in config 2023-02-17 00:09:02 +00:00
hi add smaller-than-gnu "hello world" package 2023-04-23 20:56:20 +01:00
ifwait rename luaSmall package to lua 2023-07-02 18:19:54 +01:00
initramfs-peek initramfs-peek: an initramfs image with a shell, for debugging 2023-05-06 23:03:51 +01:00
kernel build modules at same time as main kernel vmlinux 2024-02-11 23:47:11 +00:00
kernel-backport qemu: switch to building wireless as kernel modules 2023-02-22 18:41:41 +00:00
kmodloader build modules at same time as main kernel vmlinux 2024-02-11 23:47:11 +00:00
levitate add levitate package 2023-11-23 22:21:03 +00:00
libubootenv add libubootenv package 2024-01-02 17:44:56 +00:00
liminix-tools exit 0 on service down even if no outputs to delete 2023-11-21 17:25:50 +00:00
linotify ipv6 prefix delegation for rotuer 2023-05-31 23:29:05 +01:00
lzma move new packages to pkgs/default.nix 2023-03-03 22:21:27 +00:00
mac80211 mac80211: support ath9k pci variant 2023-11-25 18:39:15 +00:00
min-collect-garbage move min-list-garbage into min-collect-garbage pkg 2023-05-20 21:55:23 +01:00
min-copy-closure liminix-rebuild: escape brackets in usage message 2024-01-07 14:18:19 +00:00
mtdutils qemu: boot from mtd using mtd2block 2023-04-04 21:07:02 +01:00
netlink-lua update netlink-lua to latest 2023-02-28 20:56:19 +00:00
odhcp-script odhcp-script only write addresses if there are any 2023-09-13 17:51:07 +01:00
odhcp6c partly support getting IPv6 addresses 2023-05-24 23:01:50 +01:00
openwrt openwrt: update to v23.05.2 2024-01-25 12:29:03 +01:00
ppp upgrade to ppp 2.5.0 2023-05-22 23:31:57 +01:00
pppoe add pppoe derivation, replacing override 2022-09-27 22:04:22 +01:00
preinit pass rootOptions config as rootflags= kernel cmdline opt 2024-01-08 18:54:49 +00:00
pseudofile pseudofile: allow setting uid and gid of files 2023-04-14 23:12:52 +01:00
qemu patch qemu to load uncompressed ARM kernels at correct offset 2023-11-05 11:32:47 +00:00
routeros add routeros to overlay 2023-02-08 18:13:35 +00:00
run-liminix-vm use patched qemu only for run-liminix-vm 2024-01-03 17:53:30 +00:00
s6-init-bin configurable busybox 2023-03-10 18:40:45 +00:00
s6-rc-database make s6-rc-database a package 2022-09-26 15:59:21 +01:00
schnapps schnapps needs util-linux for mount 2024-02-04 15:50:25 +00:00
service-fns add o+x permission on service-state directories 2023-08-28 22:02:28 +01:00
swconfig pkgconfig is now pkg-config 2023-09-21 12:25:35 +01:00
systemconfig systemconfig: fix missing backslashes on env vars 2024-02-04 17:19:03 +00:00
tufted partial fix for timeout handling 2023-10-18 23:35:23 +01:00
u-boot add tftpboot test for mips 2023-12-21 19:25:45 +00:00
write-ash-script configurable busybox 2023-03-10 18:40:45 +00:00
write-fennel unbreak fennel test 2023-12-09 17:10:41 +00:00
write-fennel-script writeFennel is writeFennelScript with knobs on 2023-09-12 17:45:18 +01:00
default.nix build modules at same time as main kernel vmlinux 2024-02-11 23:47:11 +00:00
kexec-map-file.patch add kexecboot 2023-03-19 20:25:43 +00:00