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
Daniel Barlow
2594239bbc
can't use builtins.fetchurl on hydra?
2023-03-10 18:51:07 +00:00
Daniel Barlow
be06363e4f
new example for rsync/usb backup server
2023-03-10 18:42:32 +00:00
Daniel Barlow
9f03276db8
move noise sources around in tests
...
wlan test shows output to make it easier to see when it went wrong
2023-03-10 18:41:43 +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
8b2fcb5336
move non-normative examples into a subdirectory
2023-03-10 14:38:13 +00:00
Daniel Barlow
43f1fb230b
remove unrecoginsed earlyprintk param from kernel commandline
2023-03-10 00:50:28 +00:00
Daniel Barlow
d83bcc643e
add wifi firmware, move things around in ram
...
* at the base address we were using, the filesystem was getting
corrupted presumably because the kernel unpacked into it
* leave a little more space between compressed kernel and
squashfs. this is probably ineffective but also harmless
2023-03-10 00:48:47 +00:00
Daniel Barlow
f50b0627a2
gl-mt300n-v2: initialize switch & define networkInterfaces
...
It booted and mounted rootfs the first time I tried, which
was nice. Wireless doesn't work yet, it needs firmware
2023-03-09 19:30:57 +00:00
Daniel Barlow
91c0147919
set hostname before dhcp client runs
2023-03-08 22:11:59 +00:00
Daniel Barlow
2318c54037
blah
2023-03-08 21:00:12 +00:00
Daniel Barlow
95e14b5c05
extract secrets for extneder
2023-03-08 20:37:08 +00:00
Daniel Barlow
f36d8ef1d0
make mt300a flash-ready
2023-03-08 20:35:41 +00:00
Daniel Barlow
85b5edc39d
vlan interfaces depend on parent
2023-03-08 20:34:39 +00:00
Daniel Barlow
d290965711
shuffle kernel config for gl-mt300a
2023-03-07 22:49:33 +00:00