Commit graph

337 commits

Author SHA1 Message Date
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
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
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