Commit Graph

305 Commits (main)

Author SHA1 Message Date
Arnout Engelen 61494fdc0c
Add tplink module for creating 'safeloader' images 2024-02-06 17:59:38 +01:00
Daniel Barlow c8154a2db9 kernel: add "conditional" config
imagine: you are using a device that requires
CONFIG_MYDEVICE_FROBOZZ_DRIVER but only if CONFIG_FROBOZZ has been
specified elsewhere. Because we check that every requested config
symbol actually appears in .config then it can't be added
unconditionally or the build will fail if CONFIG_FROBOZZ wasn't asked
for.

I'm not 100% happy about this design but it's the best I've thought of
so far.
2024-02-04 18:12:15 +00:00
Daniel Barlow 89c88dd472 specify type for rootDevice module option 2024-02-02 19:50:13 +00:00
Daniel Barlow c1ad139310 whitespace 2024-02-02 19:43:34 +00:00
Daniel Barlow 9e199c6957 tftpboot: compute dtbSize *after* changing dtb
Adding the reserved-memory node to the dtb can cause it to grow
by enough that it needs an extra page - this will overlap the start
of the kernel image if we calculate offsets based on the original size

Reported-by: sinavir
Authored-by: sinavir
2024-01-26 22:51:58 +00:00
Daniel Barlow dd8ec18881 restore boot.tftp.freeSpaceBytes 2024-01-26 22:46:36 +00:00
Daniel Barlow c219350d7c add usb storage for turris omnia
ideally we would make this a module instead of compiling in
directly
2024-01-26 22:46:36 +00:00
Daniel Barlow c1101d3af5 make extlinux work with liminix-rebuild
add /boot to the systemConfiguration closure
2024-01-08 18:58:07 +00:00
Daniel Barlow 228c0a1668 pass rootOptions config as rootflags= kernel cmdline opt 2024-01-08 18:54:49 +00:00
Daniel Barlow 7bc9cb6c55 why is extlink hardcoding root device? 2024-01-07 20:30:23 +00:00
Daniel Barlow 3c941b4ce2 partial btrfs support
doesn't actually know how to make the filesystem, just
kernel config and accept it as a valid option
2024-01-07 16:43:43 +00:00
Daniel Barlow 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
Daniel Barlow 64898eada8 mount tmpfs on /tmp
too much stuff doesn't work without it and it's not
all worth patching
2024-01-04 23:22:02 +00:00
Daniel Barlow ff991508ae build kernel only once for multiple outputs
e.g. vmlinux + zImage
2024-01-02 19:40:57 +00:00
Daniel Barlow 921b4f24af boot.scr: append ; not \n to lzmadec command
this is simply to make copy-paste slightly more convenient
2024-01-01 20:21:42 +00:00
Daniel Barlow ec1ff283da vmdisk output: allow extra params to run.sh 2023-12-29 18:12:57 +00:00
Daniel Barlow 0bf98c5243 add output for u-boot 2023-12-29 17:07:47 +00:00
Daniel Barlow dbf1ecdcb7 swap zimage and dtb in ram
kernel uncompression code creates a stack directly
after the compressed payload, which was trashing the dtb
2023-12-23 15:38:32 +00:00
Daniel Barlow 1042be912c turris omnia: switch to regular tftpboot output
now it does zimage and rootfs compression
2023-12-23 00:05:34 +00:00
Daniel Barlow c931d84828 tftproot: put command line in dtb 2023-12-23 00:05:34 +00:00
Daniel Barlow 64a3f50248 tftpboot: support compressed root 2023-12-23 00:05:34 +00:00
Daniel Barlow c5e9fcecc7 uninit var 2023-12-23 00:05:34 +00:00
Daniel Barlow f25c41b4d2 tftpboot: move things around in memory
new layout has rootfs followed by kernel and dtb, so that we
know the rootfs start and size to embed them into the dtb instead
of having to use dummy values and fill them in afterwards
2023-12-23 00:05:34 +00:00
Daniel Barlow bfa68d9c55 remove unused variable 2023-12-23 00:05:34 +00:00
Daniel Barlow ff0ef825a6 tftpboot: add option for kernel image format 2023-12-23 00:05:34 +00:00
Daniel Barlow 44a0cf364b remove boot-scr output, merge into tftpboot
(1) it creates two things (script and dtb); (2) it's a bit pointless
without the tftpboot output it depends on
2023-12-22 21:37:15 +00:00
Daniel Barlow c7b2733bea tftpbootlz: put command line in dtb
this makes boot.scr substantially shorter, in anticipation of using it
for first boot of the omnia and not wanting to embed an essay in
a setenv value
2023-12-22 20:09:44 +00:00
Daniel Barlow dfbc72dd51 tftpboot test: fix reserved-memory dt for aarch64 2023-12-22 17:37:53 +00:00
Daniel Barlow 231c2cef03 make reserved-memory work on mips, and improve test 2023-12-21 22:21:20 +00:00
Daniel Barlow 32c13c46bb support aarch64 in tftpboot test 2023-12-19 12:12:12 +00:00
Daniel Barlow 9ca9723c9d make rootfs work with tftpbootlz 2023-12-17 19:39:26 +00:00
Daniel Barlow d1e2d525a4 tftpboot omnia using bootz not bootm
because kernel size is now beyond the u-boot size
limit for bootm
2023-12-16 23:40:55 +00:00
Daniel Barlow 80528376a2 move o.systemConfiguration to initramfs module
as far as I can tell, we define it identically in every module
that uses initramfs
2023-12-11 21:47:15 +00:00
Daniel Barlow d707345891 rename rootfsFiles to rootdir, add bootablerootdir 2023-12-11 21:21:12 +00:00
Daniel Barlow 601bb289ee rename diskimage to mbrimage 2023-12-11 19:09:19 +00:00
Daniel Barlow 876bd7d8ce rename flashimage to mtdimage 2023-12-11 19:09:18 +00:00
Daniel Barlow 4ddce6e926 fix the tests we broke 2023-12-10 17:12:57 +00:00
Daniel Barlow 5eeb277564 move output module imports example -> device
The outputs available are a characteristic of the device, not
the example.
2023-12-10 16:38:53 +00:00
Daniel Barlow c81e7c4d35 move all output modules to subdirectory, trash standard.nix
standard.nix isn't, is the essence here. Not all devices
support flashimage as it is currently defined - some
have diskimage, some have neither
2023-12-10 15:23:12 +00:00
Daniel Barlow 4229b42d82 make config.hardware.dts.src nullable
This is for QEMU where we won't have to provide a dtb because the
device tree is built by the platform according the (emulated) hardware
present.

Maybe in future there will be other hardware devices where we
don't need to provide a dtb.
2023-12-09 15:51:30 +00:00
Daniel Barlow 03b17fa3ed add zImage output 2023-12-07 22:31:26 +00:00
Daniel Barlow a8891461aa use devtmpfs in initramfs
static device nodes don't work with virtio
2023-12-07 20:03:03 +00:00
Daniel Barlow 5adfb0230f WIP generate bootable disk image with partition table 2023-12-05 23:54:09 +00:00
Daniel Barlow 3f74fad966 don't double-json the command line 2023-12-05 17:32:18 +00:00
Daniel Barlow ed925588f7 extract common code to make root filesystem hierarchy
which is then used by the filesystem image creators (ubifs, ext4,
jffs2 etc)
2023-12-05 17:32:18 +00:00
Daniel Barlow 98d3336926 rewrite run-liminix-vm as a fennel program
the effect of shell quoting/word splitting rules was reaching
completely unreasonable, insofar as I was unable to reason about it
2023-12-03 22:51:39 +00:00
Daniel Barlow bb335050fd derivation that produces /boot 2023-12-02 15:31:55 +00:00
Daniel Barlow e518ab667b make job control work in console shell 2023-11-29 19:49:51 +00:00
Daniel Barlow cc73a98419 support setting network device names
this means that net devices in devices/foo/default.nix can be
specified by their sysfs paths (instead of by "eth0" and "eth1" that
may change from one kernel version to the next) and given mnenomic
names that are helpful for the hardware. Like "wan" and "lan[1..4]"
2023-11-26 23:15:28 +00:00
Daniel Barlow 27ce61ae4e add bootable config for Turris Omnia 2023-11-24 23:29:12 +00:00
Daniel Barlow 3df34428d6 remove unneeded login and getty applets 2023-11-23 20:01:13 +00:00
Daniel Barlow 62c788eb86 add hook to run maintenance mode instead of rebooting 2023-11-22 00:05:55 +00:00
Daniel Barlow bab6d346a8 add .../s6/bin to PATH for shutdownd 2023-11-22 00:05:03 +00:00
Daniel Barlow a202ae476a extract console redirection stuff from "quit" function
so we can use it for scripts that don't reboot at their end
2023-11-21 23:32:37 +00:00
Daniel Barlow 7c9297f91d use shotdown instead of hpr in .s6-svscan/SIGFOO
this is to bring them into line with what more recent
s6-init-linux-maker creates
2023-11-21 23:19:00 +00:00
Daniel Barlow a0bd250963 switch from getty to root shell on console
this just makes things marginally simpler
2023-11-21 23:09:48 +00:00
Daniel Barlow e5223f093f kernel.src may be a path not just a package
this makes it easier to hack the kernel locally and test things
2023-11-18 14:21:18 +00:00
Daniel Barlow f9f4d97bb8 convert flash params to int 2023-11-12 20:39:06 +00:00
Daniel Barlow abfb35a231 and entryPoint 2023-11-12 18:50:47 +00:00
Daniel Barlow 315907de98 convert hardware loadAddress to int 2023-11-12 18:47:31 +00:00
Daniel Barlow 185117843b convert tftp.loadAddress from string to int 2023-11-12 18:37:33 +00:00
Daniel Barlow 3da692f7ef don't import flashimage unconditionally, it breaks qemu 2023-11-12 18:11:13 +00:00
Daniel Barlow f61e737b54 improve doc for outputs and hardware
Changed my mind about "installer" as a first-class concept, at least
in the current implementation. Not every documented output is an
installer
2023-11-12 17:15:58 +00:00
Daniel Barlow 7cfb92e3ce more doc 2023-11-10 21:17:20 +00:00
Daniel Barlow a9760d239c basic doc for flashimage installer 2023-11-09 22:43:50 +00:00
Daniel Barlow 7d5c7b9b44 export evaluation from default.nix and use it for docs 2023-11-09 22:14:31 +00:00
Daniel Barlow 23b3a2baef extract vmroot output into its own file 2023-11-08 23:19:11 +00:00
Daniel Barlow a9d847e2c0 add ext4 as rootfsType 2023-11-06 21:52:31 +00:00
Daniel Barlow 6489a39424 qemu armv7 2023-11-05 23:19:11 +00:00
Daniel Barlow c94d12934f remove direct use of run-liminix-vm from tests and doc 2023-11-05 20:37:23 +00:00
Daniel Barlow c40eef25d6 qemu: use phram instead of block2mtd 2023-11-05 19:13:51 +00:00
Daniel Barlow 46991e2761 aarch64 ram starts at 0x40000000 2023-11-05 15:33:10 +00:00
Daniel Barlow a135cb1217 introduce lim, the liminix library
so far we have lim.parseInt, which parses an integer from a string
with optional base-selecting-prefix (e.g. 0755, 0x12ab)
2023-11-05 15:13:06 +00:00
Daniel Barlow 863045b86b added hardware.ram.startAddress config
it's not 0 on arm32, so this will be useful for qemu
2023-11-05 15:11:58 +00:00
Daniel Barlow 629624bb25 replace multiway if with pkgs.stdenv.hostPlatform.qemuArch 2023-11-05 11:40:26 +00:00
Daniel Barlow 92b9bf959e options.system.outputs.initramfs -> initramfs module 2023-11-05 11:33:02 +00:00
Daniel Barlow e6cb5e319b extract NETDEVICES kconfig to kernel.nix module 2023-11-05 11:31:23 +00:00
Daniel Barlow e6ef4f78bb "ubimage" module contains ubifs image + instructions
Presently either you run this from U-Boot or you figure out for
yourself how to kexecboot into a recovery system :-)
2023-10-21 23:20:53 +01:00
Daniel Barlow f3225c2bd5 delete dup outputs.systemConfiguration
perhaps this should go into initramfs.nix not jffs2.nix
2023-10-19 10:09:08 +01:00
Daniel Barlow 629914f65e initial support for ubifs 2023-10-16 19:55:17 +01:00
Daniel Barlow 364c5faf9e tftpboot: fix errors in phram partition size calc 2023-10-10 20:26:27 +01:00
Daniel Barlow bd20f3e419 uimage: make fit optional 2023-10-09 19:47:57 +01:00
Daniel Barlow f62ad0e1d7 use "tftpboot" instead of "tftp" in u-boot commands
openwrt's u-boot installation doesn't accept the short form
2023-10-09 19:47:57 +01:00
Daniel Barlow c18f07f02f aarch64: make tftpboot work
- patch dtb to add reserved-memory stanza for the phram device to use
  (aarch64 does not accept memmap= command line option)

- patch phram driver to use memremap() instead of ioremap() as
  ioremap can't be used for system ram on arm devices
2023-10-09 19:47:57 +01:00
Daniel Barlow dbc16edf96 don't use ttyAMA0 console on all aarch64, just qemu 2023-10-09 19:47:57 +01:00
Daniel Barlow 4df248323c use MTD_SPI_NOR_USE_4K_SECTORS only on MIPS 2023-10-07 22:41:15 +01:00
Daniel Barlow caf8e85061 remove USE_OF from aarch64 2023-10-02 22:43:13 +01:00
Daniel Barlow 76f03ecf0f move OF and USE_OF to arch modules 2023-09-30 21:52:13 +01:00
Daniel Barlow 3a2f074199 disable 4k flash erase blocks everywhere 2023-09-27 22:10:17 +01:00
Daniel Barlow ab147abd9b less padding in firmware.bin
we only need to align to erase block size, which may be
less than the 128k previously hard-coded
2023-09-26 16:43:03 +01:00
Daniel Barlow c59a228955 this is the dhcp6c service we want 2023-09-26 16:43:03 +01:00
Daniel Barlow 94e51db649 tests: use run.sh instead of calling run-liminix-vm directly
this makes it easier to run tests on aarch64 where
qemu wants an Image file instead of a vmlinux
2023-09-24 00:24:48 +01:00
Daniel Barlow be22fbbb0a bootable aarch64 liminux with qemu
I may have broken the run-liminix-vm command a bit for MIPS due to
necessary changes in how we pass the command line.  If CI isn't green
for this commit and youre trying the worked examples, I suggest
reverting to the commit before this one.
2023-09-20 22:55:51 +01:00
Daniel Barlow 4389fa15f7 rename mips-vm as run-liminix-vm 2023-09-20 18:33:20 +01:00
Daniel Barlow 4f29bdd3ed detect arch in kernel and uimage
also move kernel builder to pkgs/

FIXME we need to straighten out the mess in calling
dtb.nix/uimage.nix
2023-09-20 18:26:33 +01:00
Daniel Barlow f1c04c7979 extract mips kernel options to module 2023-09-20 17:50:21 +01:00
Daniel Barlow f75995e895 introduce modules/arch/{mipsel,mipseb}.nix
for settings that are common to all mipse[lb] but would not be shared
with e.g. aarch64 or x86
2023-09-20 17:30:05 +01:00
Daniel Barlow b36272f99e add outputs for vlan service 2023-09-17 17:00:31 +01:00
Daniel Barlow 0abe4f96a7 ssh ensure we create /run/dropbear
this is required if we don't have persistent store (jffs2)
2023-09-17 17:00:26 +01:00
Daniel Barlow 4fd1b5f08b er, "input" != output" 2023-09-13 18:01:50 +01:00