Commit Graph
100 Commits
Author SHA1 Message Date
Daniel Barlow aa3b635f61 bordervm: add sshd, usbutils 2023-05-17 15:38:22 +01:00
Daniel Barlow 648ac2eb7f Document jffs2, min-copy-closure, liminix-rebuild
Some of the code is now out of date w.r.t. some of the text
2023-05-17 15:38:22 +01:00
Daniel Barlow b1f4db00a0 add liminix-rebuild command 2023-05-17 15:38:22 +01:00
Daniel Barlow b0a0fdcfcc add "standard" module, which includes flashimage kexec & jffs2
most systems need most of these, so it makes writing the docs a
lot easier
2023-05-17 15:38:22 +01:00
Daniel Barlow 6870abfe83 add min-copy-closure to buildEnv 2023-05-11 23:53:25 +01:00
Daniel Barlow ddd7b68b30 min-copy-closure: remove verbose output 2023-05-11 23:52:13 +01:00
Daniel Barlow 6184148dfd add example host config for bordervm ethernet 2023-05-10 21:38:46 +01:00
Daniel Barlow b70c8ee258 support USB ethernet in bordervm 2023-05-09 22:58:56 +01:00
Daniel Barlow 55387b0ee3 extract common shell fns in tests 2023-05-07 23:01:24 +01:00
Daniel Barlow d8cc6ab61c eth1 is lan in qemu 2023-05-07 22:52:09 +01:00
Daniel Barlow cc6c790746 set up path for min-copy-closure 2023-05-07 22:51:10 +01:00
Daniel Barlow bcf5dac5d7 min-copy-closure: honour $SSH_COMMAND env var 2023-05-07 22:07:35 +01:00
Daniel Barlow 1c002c4065 min-copy-closure: improve output 2023-05-07 22:06:49 +01:00
Daniel Barlow 2af8f2382a test min-copy-closure 2023-05-07 22:02:10 +01:00
Daniel Barlow 74f2aa6247 initramfs-peek: an initramfs image with a shell, for debugging 2023-05-06 23:03:51 +01:00
Daniel Barlow 888a0d5f74 mips-vm: allow env var to override la network interface
this is handy if you want to connect to it from the host
for e.g. seeing if min-copy-closure works
2023-05-06 23:01:56 +01:00
Daniel Barlow 30153a2d4e add min-copy-closure, a minimal nix-copy-closure substitute 2023-05-06 22:47:03 +01:00
Daniel Barlow 67768004ee erase full flash, it seems to help with jffs2 2023-04-26 22:19:01 +01:00
Daniel Barlow 26c6eac937 delete config boot.tftp.enable as it doesn't enable anything 2023-04-26 22:18:23 +01:00
Daniel Barlow 4cfaed7303 specify root device as /dev/mtdblockn
the (openwrt?) magic that autodetects it based on mtd labels
won't work with a two-stage boot
2023-04-26 22:16:15 +01:00
Daniel Barlow 6d6dbe1cbb tftpboot: allow padding image with freeSpaceBytes
this is useful for writable filesystems so that there's more than
an erase block of space to write into
2023-04-26 22:15:19 +01:00
Daniel Barlow 151dc88c28 little evidence of thinking 2023-04-23 21:24:37 +01:00
Daniel Barlow 2f3b108ef1 tftpboot: set phram erase block size to match hardware
this is needed for tftp boot with a jffs2 filesystem
2023-04-23 21:24:37 +01:00
Daniel Barlow 6adab44fcf rotuer; run chronyd for accurate time 2023-04-23 20:56:20 +01:00
Daniel Barlow 4342d3403f make rotuer example build again 2023-04-23 20:56:20 +01:00
Daniel Barlow 28264febdb add smaller-than-gnu "hello world" package 2023-04-23 20:56:20 +01:00
Daniel Barlow 2c4f8b823e remove jffs2boot target
It's not needed now initramfs is compiled into the kernel.
2023-04-23 20:56:20 +01:00
Daniel Barlow 3595e36294 workaround for huge musl binaries
something in our configuration is causing gcc to generate binaries
in excess of 68K for "hello world". hardeningDisable seems to stop it
doing that, turning it on for s6 which writes _lots_ of binaries
but would be good to get to the bottom of this

https://discourse.nixos.org/t/crosscompilation-to-musl32-problems/3110
may have more
2023-04-22 23:04:03 +01:00
Daniel Barlow 245bf534e6 refactor: inline definition 2023-04-22 23:03:36 +01:00
Daniel Barlow 3feb8eb5f9 shrink hostap, build it without openssl 2023-04-22 22:17:35 +01:00
Daniel Barlow c7aa8c7756 some notes on how we couldn't make it smaller 2023-04-19 22:03:18 +01:00
Daniel Barlow c6b8a8488f build s6 with shared libraries 2023-04-19 21:44:06 +01:00
Daniel Barlow 99af416e14 use /bin/sh for init scripts 2023-04-19 21:41:05 +01:00
Daniel Barlow ad3ef53171 ntp: don't install manpages, docs etc 2023-04-18 23:57:15 +01:00
Daniel Barlow 65dfbad365 systemconfig: chown files if uid/gid > 0 2023-04-15 22:53:28 +01:00
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 b1a89ae8c3 jffs2: squash uids, enable lzo compression 2023-04-15 17:23:58 +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
Daniel Barlow 9f3c80e774 make initramfs busybox (very slightly) smaller 2023-04-11 23:08:02 +01:00
Daniel Barlow 29c7af5892 set qemu flash erase block size 2023-04-10 22:57:51 +01:00
Daniel Barlow 2566dc564c remove need for symlinks in initramfs busybox 2023-04-10 22:57:50 +01:00
Daniel Barlow 0ad7b0e48b don't hardcode mtd0 initramfs->second stage 2023-04-10 22:57:50 +01:00
Daniel Barlow 0a2881914b set erase block size to something that works for jffs2 2023-04-10 22:57:50 +01:00
Daniel Barlow 4638092d3d build initramfs into kernel
this doesn't matter for qemu, but there's no other way of
getting a hardware device to find it if the bootloader
won't co-operate
2023-04-10 22:57:50 +01:00
Daniel Barlow 633a4f8003 move BLK_DEV_INITRD to base.nix 2023-04-10 22:57:50 +01:00
Daniel Barlow fe99abc450 shrink rsync
remove openssl requirement, it  uses it for "optimised assembly
versions" of md5 - but only on x86/arm/sparc not mips anyway
2023-04-10 22:57:50 +01:00
Daniel Barlow 42725f56f9 make jffs2 module provide o.rootfs, conditionally
it's enabled if config.rootfsType == "jffs2"
2023-04-10 20:01:58 +01:00
Daniel Barlow 63a89f7d0d add config.boot.initramfs.enable 2023-04-10 19:07:27 +01:00
Daniel Barlow 07eb3d66da remove unused combined-image output 2023-04-10 18:15:48 +01:00
Daniel Barlow 0687ae7f5c rename flashable->flashimage, o.squashfs to rootfs
"rootfs" describes what it is for, "squashfs" merely says
how it's implemented

(also, rootfs-as-jffs2 will soon be added)
2023-04-10 18:13:27 +01:00
Daniel Barlow 2e15acd61c whitespace 2023-04-10 17:46:39 +01:00
Daniel Barlow 18b35b1ca6 thinking ... 2023-04-10 17:36:00 +01:00
Daniel Barlow f5156425a2 correct jffs2 endian, remove unused bindings 2023-04-07 09:39:47 +01:00
Daniel Barlow db54c877d6 add CI test for jffs2 2023-04-06 20:58:26 +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 3194262eb3 it has not been a production-ready week 2023-03-31 23:44:49 +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 e0bd64b80f week source 2023-03-28 16:14:00 +01:00
Daniel Barlow a5630c1f30 add cautionary note about flashing a running device 2023-03-26 10:21:36 +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 608d750b60 describe how to flash Liminix, and kexecboot 2023-03-24 23:39:06 +00:00
Daniel Barlow f5a7b78679 rename kexec-tools-static
it doesn't build natively on x86-64 and I don't suppose we need it to
anyway
2023-03-24 20:51:46 +00:00
Daniel Barlow 3608cc5e33 add kenrel command line cookie to mips-vm script 2023-03-24 18:48:38 +00:00
Daniel Barlow c831859513 add flashcp to allow flashing from a running system 2023-03-24 17:32:46 +00:00
Daniel Barlow 404162ac1e support all kinds of boot for arhcive
now we can have flashable and tftpboot in the same configuration
2023-03-24 17:14:15 +00:00
Daniel Barlow 045f10e79b build kexec statically 2023-03-24 17:12:19 +00:00
Daniel Barlow 4ea60a6082 watchdog support for mt300n-v2 2023-03-24 17:11:36 +00:00
Daniel Barlow 561d55ed5f arhcive: rsync daemon needs a group 2023-03-24 17:10:49 +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 1c36f1b373 demonstrate adding ssh keys 2023-03-23 13:18:05 +00:00
Daniel Barlow beb6e260d4 PoC support for hardware watchdog 2023-03-23 13:18:05 +00:00
Daniel Barlow e84285e576 remove second copy of lua 2023-03-23 13:18:05 +00:00
Daniel Barlow 64d8602408 some kexecboot notes 2023-03-19 20:27:43 +00:00
Daniel Barlow 8250d592ba don't hardcode root device, too confusing when adding phram 2023-03-19 20:27:05 +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 e40170f7d5 pppoe test: update to expect change in root's PS1 2023-03-18 19:16:27 +00:00
Daniel Barlow b85492c744 when flashing, only need to erase the space we're writing 2023-03-18 14:50:09 +00:00
Daniel Barlow 3c6ec354ce move root's home directory to /home/root
/ is a bad choice of home directory

/home/root instead of /root is to make it easier to write
ssh keys to the right place
2023-03-18 14:46:50 +00:00
Daniel Barlow e78d5212e6 move tftp config to base module
we need it for flashing from u-boot even when tftp booting
is not enabled
2023-03-18 14:45:51 +00:00
Daniel Barlow ce05f4e44c extract phram.mtd ramdisk support from tftpboot module
also rename tftproot output to tftpboot for consistency
2023-03-18 14:30:10 +00:00
Daniel Barlow 6e95932e0e untested fix for unable to mount usb disk at boot 2023-03-18 14:30:10 +00:00
Daniel Barlow 9f9558c9e8 style: let inherit fetchpatch 2023-03-18 14:30:10 +00:00
Daniel Barlow 153cbec573 fix pathnames of modules 2023-03-18 14:30:10 +00:00
Daniel Barlow 3f11a3c708 gl-ar750 gpio support is required for USB to work
_legacy_ gpio sysfs interface is required  by the openwrt
ath79 phy usb driver
2023-03-18 14:30:10 +00:00
Daniel Barlow 71ae8f8784 overthinking 2023-03-18 14:30:10 +00:00
Daniel Barlow 23b434b80e add a logo 2023-03-18 14:30:10 +00:00
Daniel Barlow a4e1dcedd3 redirect stderr 2023-03-10 23:39:53 +00:00
Daniel Barlow 53810e1f5f tidy up a bit 2023-03-10 23:39:32 +00:00
Daniel Barlow ad3f241af9 support mt300n-v2 flash 2023-03-10 23:24:05 +00:00
Daniel Barlow 3efa9e0af2 restore missing applets 2023-03-10 23:14:13 +00:00
Daniel Barlow f2d1789ad7 add openssh authorized_keys 2023-03-10 23:13:32 +00:00