Commit graph

106 commits

Author SHA1 Message Date
Daniel Barlow
5dd0c6e3c0 rewrite preinit as very small C program
By using the kernel "nolibc" header to avoid requiring a C library, we
can bring the initramfs size to around 4k

This does involve a tiny bit of inline mips assembly which I'm not
sure about. gcc seems unwilling to generate the code to load $gp at
function entry of main(), so we do it by hand - but I'd rather find
out why gcc doesn't.
2023-04-15 18:27:39 +01:00
Daniel Barlow
11f2715d18 mips-vm: enlarge mtd 2023-04-15 17:22:35 +01:00
Daniel Barlow
1cc0b13b57 rewrite systemconfig in C and link statically
systemconfig (a.k.a "activate") is run from the initramfs. Converting
it from a shell script to an executable means it doesn't depend on
there being a shell in the initramfs
2023-04-15 17:21:27 +01:00
Daniel Barlow
c744ef8c17 systemconfig: accept uid and gid options
all we do with them is assert they're zero, to unbreak CI.
This code is getting rewritten anyway
2023-04-14 23:19:56 +01:00
Brian McKenna
fb796e61e0 pseudofile: allow setting uid and gid of files
Necessary for Dropbear to accept non-root authorized_keys files.
2023-04-14 23:12:52 +01:00
Daniel Barlow
2e15acd61c whitespace 2023-04-10 17:46:39 +01:00
Daniel Barlow
54a1ab3529 support jffs2, with initramfs
the jffs2 filesystem contains only /nix/store and a script which is
run in early init (initramfs) and is responsible for recreating
"traditional" directories (/bin /etc/**/* /var &c) based on the
configuration.

this is tested only in qemu so far and could use some cleanup
2023-04-04 23:35:49 +01:00
Daniel Barlow
25d9da967c remove support for sockets in pseudofiles
(1) we can't make them on a real filesystem except by running
something that calls socket()
(2) whyever would we want to?
2023-04-04 23:23:22 +01:00
Daniel Barlow
aa1a2e5d75 package gen_init_cpio, tool for making an initramfs 2023-04-04 22:54:20 +01:00
Daniel Barlow
f02efa3fe3 refactor 2023-04-04 21:11:28 +01:00
Daniel Barlow
342c87b256 qemu: boot from mtd using mtd2block
doesn't make much difference for squashfs but this will make it much
simpler to test jffs2/ubifs
2023-04-04 21:07:02 +01:00
Daniel Barlow
07e7d63ade fixup 98243d43da 2023-04-02 18:46:27 +01:00
Daniel Barlow
98243d43da add mtdutils mkfs.jffs2 --graft option
we'd like a bit more of the convenience of mksquashfs
(never thought I'd say _that_) for jffs2, in particular
not having to copy all the desired store paths into a
single directory just so we can create an image from them
2023-03-31 23:42:13 +01:00
Daniel Barlow
a172180be8 don't set lua5_3 in overlay
sphinx depends on lua5_3, so overriding it globally means rebuilding
that - which isn't really necessary
2023-03-24 23:43:13 +00:00
Daniel Barlow
3608cc5e33 add kenrel command line cookie to mips-vm script 2023-03-24 18:48:38 +00:00
Daniel Barlow
a5cfa37ed3 unify kernel command line handling
We now use MIPS_CMDLINE_DTB_EXTEND for all boot varieties
(tftpboot, flash boot, kexec) with the addition of
MIPS_BOOTLOADER_CMDLINE_REQUIRE_COOKIE - local patch -
so that the bootloader args are ignored unless they
contain the string "liminix"
2023-03-23 22:24:44 +00:00
Daniel Barlow
4b19568f1b add kexecboot
This allows booting a new image from a running OS, creating a
phram mtd for the root squashfs

* enable CONFIG_KEXEC
* add modules/kexecboot
* patch kexec-tools to add --map-file option for the squashfs
* patch kernel kexec code to call new kernel with DTB
2023-03-19 20:25:43 +00:00
Daniel Barlow
429ffa8e7d make applyPatches work for ramips 2023-03-19 20:25:23 +00:00
Daniel Barlow
efd878dc5e extract common code for patching kernel source fdorm openwrt 2023-03-18 19:17:58 +00:00
Daniel Barlow
a4e1dcedd3 redirect stderr 2023-03-10 23:39:53 +00:00
Daniel Barlow
225fc6fe51 configurable busybox
allows modules to add to the busybox applets and change config
2023-03-10 18:40:45 +00:00
Daniel Barlow
91c0147919 set hostname before dhcp client runs 2023-03-08 22:11:59 +00:00
Daniel Barlow
70f8f5ecfd remove hostapd debugging flag 2023-03-07 19:11:25 +00:00
Daniel Barlow
e86e9430fc vlans and mt300a wired network interfaces 2023-03-07 19:10:12 +00:00
Daniel Barlow
06687a819a udhcpc notify when ready 2023-03-07 19:06:40 +00:00
Daniel Barlow
f9f9720ba7 ${!foo} doesn't work in ash, switch to printenv 2023-03-07 19:05:58 +00:00
Daniel Barlow
1565a8414d remove inadvertant references to bash 2023-03-06 17:48:31 +00:00
Daniel Barlow
83e56a3a90 add swconfig package 2023-03-05 22:32:56 +00:00
Daniel Barlow
2787e6a230 reformat qprint substitutions 2023-03-05 21:33:51 +00:00
Daniel Barlow
a8cb872859 add service name to log lines 2023-03-04 23:08:25 +00:00
Daniel Barlow
5427456c21 rename notificationFd to notification-fd
it's perfectly valid syntax and consistent with the s6 spelling
2023-03-04 21:19:30 +00:00
Daniel Barlow
25a46dcb2c escape $ in pseudofile
this is needed to write /etc/passwd when it contains $5$....
strings
2023-03-04 00:23:21 +00:00
Daniel Barlow
38756af1c1 add in_outputs shell function which ensures umask is set 2023-03-03 23:07:03 +00:00
Daniel Barlow
fd500041fa move new packages to pkgs/default.nix 2023-03-03 22:21:27 +00:00
Daniel Barlow
adc198b3af WIP push to see what passes 2023-03-01 22:24:58 +00:00
Daniel Barlow
fc4f726dd6 make hostapd service depend on its interface 2023-03-01 18:16:01 +00:00
Daniel Barlow
626a365f79 replace waitup with more generally useful ifwait
* wait for $interface present before ip link set up dev
* wait for wlan0 running before adding to bridge
2023-03-01 18:16:01 +00:00
Daniel Barlow
14dacb8056 update netlink-lua to latest 2023-02-28 20:56:19 +00:00
Daniel Barlow
ea2c5e158d add missing argument 2023-02-26 17:54:58 +00:00
Daniel Barlow
c37332910a add option to provide dnsmasq resolv-file from a service 2023-02-25 22:53:50 +00:00
Daniel Barlow
59ce03630a consistent ownership/permissions for /run/service-state/** 2023-02-25 22:53:06 +00:00
Daniel Barlow
228b270385 pppoe: capture nameserver addresses as outputs 2023-02-25 20:31:41 +00:00
Daniel Barlow
3b75cadb20 improve bridge support
instead of a bridge specifiying its members (not ideal if they're
not all always up), the member interfaces specify their primary
2023-02-24 23:49:05 +00:00
Daniel Barlow
8194e909ac fix typo, remove debug spew 2023-02-24 23:22:28 +00:00
Daniel Barlow
03aec58c2c add "waitup", s6 readiness helper for network interfaces
run e.g. "waitup wlan0 10" to wait until wlan0 is operationally
up and running, and then send a newline to file descriptor 10
2023-02-24 23:22:28 +00:00
Daniel Barlow
3e1082ad18 allow interface service to specify dependencies 2023-02-22 19:18:59 +00:00
Daniel Barlow
751920c8fc qemu: switch to building wireless as kernel modules
This is a hefty change

* add support for kernel backports project
* build wireless stack/drivers as modules from a backported kernel
* create a service to load/unload the modules
2023-02-22 18:41:41 +00:00
Daniel Barlow
891db9edc5 kernel derivation: add output for module support 2023-02-22 18:33:17 +00:00
Daniel Barlow
05576eeb94 harcode paths for kpppoed, add port num in config 2023-02-17 00:09:02 +00:00
Daniel Barlow
b438a0fd17 handlersocket must be bound before calling select()
this is due to a rather odd (imo) decision in luasocket which
says that the underlying socket (and therefore its file
descriptor) isn't actually created until we call something
that lets it work out whether ipv4 or ipv6
2023-02-15 22:06:28 +00:00