1
0
Commit Graph

482 Commits

Author SHA1 Message Date
159bfa3057 make xl2tpd quit when the connections close 2024-07-08 21:44:15 +01:00
7f9971512d a6-rc-up-tree: handle blocked deps, exit 1 if nothing started 2024-07-08 21:28:31 +01:00
f0f6cc80d7 remove dead code 2024-07-08 21:28:11 +01:00
afcc6a6436 s6-rc-up-tree pass -b to s6-rc command 2024-07-08 21:27:54 +01:00
2e8e05f31a wip: rewrite s6-rc-up-tree in an actual procgramming language
and write some tests for it, too
2024-07-08 21:27:42 +01:00
5ac7e1e9b2 write-fennel: set $PATH if lualinux is available 2024-07-08 21:18:02 +01:00
3df1ec76ff cleanup whitespace and commas
* [] is now [ ]
* {} is now { }
* commas in arglists go at end of line not beginning

In short, I ran the whole thing through nixfmt-rfc-style but only
accepted about 30% of its changes. I might grow accustomed to more
of it over time
2024-06-30 17:16:28 +01:00
0d3218127f remove unused makeWrapper input 2024-06-30 10:46:37 +01:00
e94bf62ec1 remove dead code (run deadnix) 2024-06-29 22:59:27 +01:00
16a2499d74 avoid makeWrapper on host, it requires bash 2024-06-29 22:36:05 +01:00
d4d8093f97 working l2tp-over-wwan stick example 2024-06-20 10:15:54 +01:00
7c9c801afc rename isTrigger to restart-on-upgrade
we're moving away from "trigger" services to "controller" services,
and "restart-on-upgrade" is the name used by s6-rc
2024-06-16 12:58:06 +01:00
c4185617c0 a6-rc-up-tree wait for lock if needed 2024-06-15 15:36:07 +01:00
9540fc2641 add writeAshScriptBin (forgot to add file) 2024-06-15 15:04:56 +01:00
49d1703428 add s6-rc-up-tree: start reverse deps of controlled service
When s6-rc stops a service, it also stops everything that
depends on it. but when it starts a service it starts only
that service, so we have to go through the other services
depending on it and figure out if they should be started too.
2024-06-15 14:59:34 +01:00
e6ca5ea064 store derivations not just names for service deps
.. also controllers, contents. This is to make it possible (easier)
to work out transitive dependencies at build time
2024-06-11 14:01:06 +01:00
e6e4665a18 flip dependencies for triggered/controlled services
Instead of treating the trigger as the "main" service and the
triggered service as subsidary, now we treat the triggered
service as the service and the trigger as "subsidary". This
needs some special handling when we work out which services
go in the default bundle, but it works better for declaring
dependencies on triggered services because it means the
dependency runs after the triggered service comes up, not
just when the watcher-for-events starts
2024-06-09 22:37:45 +01:00
571adf84c0 inherit builtins.map 2024-06-07 16:55:45 +01:00
f091bbd706 devout: recognise attr,attrs when parsing search term string 2024-06-01 23:48:05 +01:00
04b068f7a3 delete unused code 2024-06-01 22:43:48 +01:00
53f57c1a8c devout: support sysfs attributes for (grand*)parent device 2024-06-01 22:43:27 +01:00
19aba0d873 devout: support search for sysfs attributes 2024-06-01 21:20:41 +01:00
7d00b39249 rename attributes->properties when referring to uevent fields
properties: key-value pairs in the uevent message
attributes: file contents in sysfs
2024-06-01 12:17:49 +01:00
a3fca5bf05 devout: add functions to read sysfs attributes 2024-05-26 18:03:32 +01:00
af9200a136 skip symlink handing unless linkname was provided 2024-05-26 18:00:31 +01:00
58cd007ccc barebones usb_modeswitch package 2024-05-22 18:54:49 +01:00
c0ef6ce282 list pkgs we need in bordervm build
it's a bit silly trying to build it with the whole liminix overlay
when it's a nixos system not a liminix system
2024-05-22 18:45:35 +01:00
471c63b399 s6-rc do cleanup in "finish", don't append to "run" script
s6-supervise sends signals (e.g. SIGTERM) to the pid of the process
running "run", so how do we know if the ceanup commands are even
getting executed if the shell interpreter that is supposed to do that
got killed already?
2024-05-13 17:53:02 +01:00
8b69dcc209 pass entire config fragment to levitate, not just services
to make it useful we need to be able to set packages, passwords, ssh
keys etc
2024-04-29 20:07:01 +01:00
3d4e782929 devout: run tests in postBuild
because checkPhase is not executed when cross-compiling, and this
package is always only cross-compiled
2024-04-27 21:07:25 +01:00
1b6a05aec5 make uevent-watch use devout instead of direct netlink 2024-04-27 21:07:25 +01:00
80628a3d90 move event matching tests to devout
in preparation for future uevent-watch not needing to do
event matching
2024-04-27 21:07:25 +01:00
bf0cafffed start devout alongside mdevd
ensure it starts before mdevd-coldplug so it can populate
its database
2024-04-26 20:52:12 +01:00
e49aba127c devout: improve socket error handling 2024-04-26 20:49:23 +01:00
324465bc18 devout: write uevent KEY=value format to clients 2024-04-26 17:37:28 +01:00
b33249a050 devout: add readiness notification 2024-04-26 17:23:29 +01:00
b9c084415e devout: handle readiness on netlink socket but no event 2024-04-26 17:20:33 +01:00
cf9cadd212 devout: replay relevant events to new subscriber 2024-04-26 17:20:33 +01:00
a116fe084a devout: use socket constants from anoia.net.constants 2024-04-26 16:48:51 +01:00
74cf3e0711 add anoia.net.constants for SOCK_{STREAM,DGRAM} etc
we use an ugly bit of C preprocessor to get the values from
header files, because certain constants are different on MIPS
than on other architectures
2024-04-26 16:43:09 +01:00
cdb23b147c convert anoia.fs to use lualinux 2024-04-25 21:14:37 +01:00
dbd1264352 convert anoia.fs to use lualinux instead of lfs 2024-04-24 20:44:32 +01:00
18335b95e3 devout: strip newlines from client terms
this is just to make testing with socat easier
2024-04-24 18:33:02 +01:00
6bee2f67ac devout: add incoming netlink messages to database 2024-04-24 18:32:27 +01:00
b4ba3eea21 fix revents in unpack-pollfds 2024-04-24 18:31:26 +01:00
16af3984c9 add lualinux to fennelrepl 2024-04-24 18:30:34 +01:00
ce7e395295 devout test: replace minisock with lualinux 2024-04-24 18:29:24 +01:00
7e13e017eb add readline suport to fennelrepl 2024-04-24 18:28:39 +01:00
bbf2f53c0e cross-compile lualinux 2024-04-24 18:28:14 +01:00
032d0f8aca add netlink socket
it's not hooked up to anything yet, but it proves we can
do this with lualinux
2024-04-23 23:34:25 +01:00
b8ac9e5279 convert devout from minisock to lualinux 2024-04-23 23:33:11 +01:00
72789984ce add lualinux package 2024-04-23 22:41:38 +01:00
90d9d0e811 update minisock to not scribble on lua strings 2024-04-23 20:19:33 +01:00
97a8ae1c84 devout: add event loop and main run function 2024-04-23 20:15:02 +01:00
52eb283a26 implement unsubscribe
and add ids to subscribe so that there's a unique identifier
to pass to unsubscribe
2024-04-23 20:12:46 +01:00
cbb1de804e switch to minisock fork witj poll() call
this is likely to be temporary as minisock is getting
replaced with lualinux
2024-04-23 20:09:41 +01:00
f9c03998b8 implement subscriptions with callback 2024-04-21 13:19:17 +01:00
50de1b090f add the rest of the test list (all we've thought of) 2024-04-21 11:22:26 +01:00
648382f64a report bodyless tests as PENDING 2024-04-21 11:19:42 +01:00
e9370358ae implement "remove" events 2024-04-21 11:19:06 +01:00
762ce7b6b8 cut/paste devout implementation into a real module 2024-04-20 22:48:00 +01:00
b1c0560f4f implement fetch by path 2024-04-20 22:20:43 +01:00
e34135c41a improve failed test reporting 2024-04-20 21:46:37 +01:00
712c9b266f implement find 2024-04-20 18:42:42 +01:00
4df963996c devout: add device 2024-04-20 18:24:10 +01:00
349bfecbb8 new package "devout", does nothing yet 2024-04-20 17:45:40 +01:00
450d3820b2 clean up uevent-watch test using writeFennel and mainFunction
requires less cavorting with globals and stuff
2024-04-20 16:53:43 +01:00
771585546d import expect= where previously it was copy-pasted 2024-04-20 15:09:50 +01:00
73abf952d5 package minisock, a minimal Lua socket library 2024-04-20 15:09:17 +01:00
8af4e9fd5b package anoia assert macros and point fennelrepl at them 2024-04-20 14:59:14 +01:00
7e19d80130 anoia: add assert macro module
contains expect and expect=
2024-04-20 14:04:32 +01:00
ea2b25168e add uevent-watch, which toggles services based on uevent msgs 2024-04-15 21:15:07 +01:00
5564cf0554 add nellie.close 2024-04-14 22:45:29 +01:00
f3a13630d3 add multicast groups param to nellie.open 2024-04-14 22:45:29 +01:00
f233acf9ff netlink uevent hello world 2024-04-14 22:45:29 +01:00
b231664a06 anoia: add basename, dirname 2024-04-11 23:11:20 +01:00
f4bf3029fa anoia: alphabetize exports 2024-04-11 23:11:13 +01:00
4795dd05b7 unconditionally restart trigger services on liminix-rebuild
We call s6-rc -u -p default to restart/start the base services
on a rebuild, otherwise services that are only in the new
configuration won't come up. However, this stops any service
started by a trigger. So, workaround is to restart the trigger
service and expect it to restart the services it manages if they're
needed
2024-04-03 23:07:56 +01:00
a873dc6608 Merge commit 'efcfdcc' 2024-03-28 23:47:04 +00:00
2fb4756a7f add soft restart option to liminix-rebuild
instead of doing a full reboot, it runs activate / and uses
s6-rc-update to install the new service database
2024-03-28 23:45:10 +00:00
76f11bcc93 liminix-rebuild: remove -f flag from reboot call
now we have timeouts in service definitions, shouldn't need this
any more
2024-03-28 21:37:47 +00:00
77f1a78331 ifwait block if s6-rc lock is held
otherwise it doesn't trigger the service if something else is
slow to start
2024-03-28 20:59:39 +00:00
b8a46fc05e allow buildInputs param to s6 service
this is in preparation for trigger services that need to
close over the triggered service without adding it to
s6-rc dependencies
2024-03-28 20:58:53 +00:00
8ac2c6cec1 support timeouts (default 30s) for starting s6-rc services 2024-03-28 20:58:47 +00:00
8879b2d1ba fix rt2x00 wifi 2024-03-28 20:58:39 +00:00
e4ac7f19dc fix ifwait deps 2024-03-16 20:16:49 +00:00
f164f19d95 service starts and stops 2024-03-06 23:19:47 +00:00
dd4ab41f6a rename run-event 2024-03-06 23:19:47 +00:00
5d5dff6729 WIP add failing test that service starts 2024-03-06 23:19:47 +00:00
570d29c368 pass command line params to run instead of reffing global 2024-03-06 23:19:47 +00:00
725af00dc9 improve test for dummy0 up
if we run off the end of the events fixture, it didn't work
2024-03-06 23:19:47 +00:00
e1b932ec27 remove hardcoded filename in test event generator 2024-03-06 23:19:47 +00:00
7173b6fb1c don't call os.exit 2024-03-06 23:19:47 +00:00
ed9548f21d pass event producer fn as param 2024-03-06 23:19:47 +00:00
0787807a7f ifwait: don't run on load if in test harness 2024-03-06 23:19:47 +00:00
38ed91f641 simplify assertion 2024-03-06 23:19:47 +00:00
ffe9603c39 remove file-scoped parameters var 2024-03-06 23:19:47 +00:00
cbd3dfefc5 ifwait fixture/test harness 2024-03-06 23:19:47 +00:00
018c1868b5 ifwait: use anoia.assoc 2024-03-06 23:19:47 +00:00
5184ff63f7 add anoia.nl, a convenience wrapper on netlink 2024-03-06 23:19:47 +00:00
35909c9a23 add netlink to fennelrepl 2024-03-06 23:19:47 +00:00
9730cdd63b add assoc to anoia 2024-03-06 23:19:47 +00:00
sinavir
29c9de248d fix import of openwrt sources 2024-02-22 21:57:33 +01:00
f9ab0590a6 Merge remote-tracking branch 'raito/nwa50ax' 2024-02-21 19:27:23 +00:00
84fa8d65f4 fennel: system: verbose log of command that was run 2024-02-21 19:27:14 +00:00
Raito Bezarius
c5145b5fc9 devices/zyxel-nwa50ax: make zyxel-bootconfig executable
Otherwise, it doesn't work well…

Signed-off-by: Raito Bezarius <masterancpp@gmail.com>
2024-02-19 03:13:21 +01:00
Raito Bezarius
422f3edab1 modules/zyxel-dual-image: init
This adds a simple boot blessing module, to be used, with the Zyxel NWA50AX.

There's a lot of elephant in the rooms: how do you upgrade kernel, etc.

Signed-off-by: Raito Bezarius <masterancpp@gmail.com>
2024-02-19 02:48:50 +01:00
Raito Bezarius
019fef6929 zyxel-bootconfig: init at no version
This tool is useful for manipulating the A/B boot status of the image.
2024-02-18 20:30:41 +01:00
Raito Bezarius
dde8386f75 builders/uimage: support aligning the FIT
This is necessary when writing to a MTD partition with a certain erasesize.
2024-02-18 20:30:41 +01:00
Raito Bezarius
0a8343be66 pkgs/kernel/uimage: introduce commandLineDtbNode
Certain devices like the Zyxel NWA50AX will pass information on the command-line
to explain what is the current image (`bootImage=1` vs. `bootImage=0`).

Unfortunately, if we set the `chosen/bootargs` node, this will be overridden forcibly
by U-Boot.

To avoid this problem, it's easier to simply just use another DTB node like `bootargs-override` which
is what OpenWRT does [1].

[1]: https://git.openwrt.org/?p=openwrt/openwrt.git;a=blob;f=target/linux/ramips/patches-5.15/314-MIPS-add-bootargs-override-property.patch;h=e7dca7af886e8c0b69ba2b23f5855ddfeeb0d4a1;hb=refs/heads/main

Signed-off-by: Raito Bezarius <masterancpp@gmail.com>
2024-02-18 20:30:41 +01:00
Raito Bezarius
d14ee41325 liminix-rebuild: use -f flag to reboot effectively
My AP does not reboot upon `reboot` but `reboot -f`… why?

Signed-off-by: Raito Bezarius <masterancpp@gmail.com>
2024-02-17 11:45:17 +00:00
4bcc3d5b28 dhcpc6 scripts: simplify (and improve correctness) 2024-02-16 18:47:12 +00:00
b5722a0153 gl-ar750: ath10k wireless depends on firmware
so make sure the firmware is present _first_

the ath10k is still broken anyway, looking into why
2024-02-16 00:38:36 +00:00
3c950704e1 rename /run/service-state to /run/services/outputs 2024-02-13 21:41:43 +00:00
16e4b05653 dhcp6c: set preferred and valid address lifetimes
also workaround a bug in rebinding/updates where we get an error
from "ip addr add" trying to add an address that's already present
2024-02-13 13:49:12 +00:00
79926c6fe7 remove call to deleted package 2024-02-12 14:56:12 +00:00
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
812f497660 add kernel.version param to allow for version-specific patches
default to 5.15.137 to avoid breaking the devices that don't declare it
2024-02-11 16:19:52 +00:00
dan
273c66b2d3 Merge pull request 'Add support for TP-Link Archer AX23' (#6) from raboof/liminix:add-archer-ax23-v1-bak into main
Reviewed-on: #6
2024-02-08 17:47:46 +00:00
82537bbe68 delete commented-out code 2024-02-07 23:47:38 +00:00
c9e4c1b0da kernel-modules: use linuxArch instead of case expression 2024-02-07 16:20:34 +00:00
Arnout Engelen
61494fdc0c
Add tplink module for creating 'safeloader' images 2024-02-06 17:59:38 +01:00
b0709a6443 systemconfig: fix missing backslashes on env vars 2024-02-04 17:19:03 +00:00
86f5c9b568 schnapps needs util-linux for mount
specifically, it expects mount /dev/foo -o blah /dest to work,
but busybox mount expects options to precede all the other
command line args
2024-02-04 15:50:25 +00:00
Arnout Engelen
04895f9cf6
openwrt: update to v23.05.2 2024-01-25 12:29:03 +01:00
83ee488e4c systemconfig: /boot needs to go inside /persist 2024-01-09 13:10:02 +00:00
c1101d3af5 make extlinux work with liminix-rebuild
add /boot to the systemConfiguration closure
2024-01-08 18:58:07 +00:00
228c0a1668 pass rootOptions config as rootflags= kernel cmdline opt 2024-01-08 18:54:49 +00:00
63f034e362 preinit: parse rootflags= in kernel command line 2024-01-08 00:35:13 +00:00
6971d03520 preinit: check return from write() 2024-01-07 21:24:16 +00:00
c0c4752350 systemconfig "install" cmd honours prefix on source 2024-01-07 16:54:44 +00:00
45e8db09e1 liminix-rebuild: escape brackets in usage message 2024-01-07 14:18:19 +00:00
2a93f24a58 add turris "schnapps" tool
in its current state this is useful for turris omnia only, but will
allow us to do installs and rollback to turris os if needed.
2024-01-05 00:07:01 +00:00
136c5e6f32 alphabetize package list 2024-01-04 10:15:23 +00:00
9369fdf314 use patched qemu only for run-liminix-vm 2024-01-03 17:53:30 +00:00
ff991508ae build kernel only once for multiple outputs
e.g. vmlinux + zImage
2024-01-02 19:40:57 +00:00
d6f96c0448 add libubootenv package 2024-01-02 17:44:56 +00:00
2152a3f207 a test for liminix-rebuild
it's hacky as Selby, but it's better than no test
2023-12-29 22:11:04 +00:00
1a041392aa liminix-rebuild: add --no-reboot param 2023-12-27 17:47:42 +00:00
6469408d5f run-liminix-vm: don't reverse order of --flags params 2023-12-26 21:59:00 +00:00
e5cbc2b86b WIP add systemConfiguration "install" command
which copies the init stuff (whatever it is) from store to /persist
instead of making liminix-rebuild have to know what the files are.

This is principally to ease making a system configuration in /mnt or
similar when operating in a rescue/recovery scenario, and we
don't want to liminix-rebuild because it will reboot
2023-12-23 23:53:47 +00:00
29f35cb902 min-copy-closure: add --root to copy to non-standard place 2023-12-23 23:12:40 +00:00
aecc44aaa0 run-liminix-vm: --flag parameter passes arg straight to qemu 2023-12-23 15:32:59 +00:00
9f851b229c inadvertently committed, remove 2023-12-22 16:25:54 +00:00
4a606a4b19 tidy up kernel patch 2023-12-21 21:12:55 +00:00
9c894bdabf add tftpboot test for mips 2023-12-21 19:25:45 +00:00
a962f18369 run-liminix-vm: map rootfs file iff --phram-address supplied 2023-12-21 19:25:45 +00:00
9a29a042e8 fix tftpboot test on boards without autoboot, swap wan/lan
This is for MIPS.  I spent a while investigating why the second virtio
net device doesn't function in qemu mips malta u-boot, but with no
success. Use the first one instead.
2023-12-21 19:25:16 +00:00
ab0631c555 qemu mips expects different file size for u-boot 2023-12-19 18:48:28 +00:00
32c13c46bb support aarch64 in tftpboot test 2023-12-19 12:12:12 +00:00