liminix

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit 0687ae7f5c9b27ce164dd5153f94df57788ca1c8
parent 2e15acd61c7dfcee844465843837aa8a65012405
Author: Daniel Barlow <dan@telent.net>
Date:   Mon, 10 Apr 2023 18:09:37 +0100

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)

Diffstat:
Mdoc/user.rst | 4++--
Mexamples/arhcive.nix | 2+-
Mexamples/extneder.nix | 2+-
Mexamples/rotuer.nix | 2+-
Dmodules/flashable.nix | 63---------------------------------------------------------------
Amodules/flashimage.nix | 63+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mmodules/kexecboot.nix | 12++++++------
Mmodules/outputs.nix | 6+++---
Mmodules/tftpboot.nix | 12++++++------
Mtests/pppoe/test.nix | 2+-
Mtests/smoke/test.nix | 2+-
Mtests/wlan/test.nix | 2+-
12 files changed, 86 insertions(+), 86 deletions(-)

diff --git a/doc/user.rst b/doc/user.rst @@ -13,12 +13,12 @@ and the services that you want to run on it. Start by copying directory for some pre-written configurations. If you want to create a configuration that can be installed on -a hardware device, be sure to include the "flashable" module. +a hardware device, be sure to include the "flashimage" module. .. code-block: nix imports = [ - ./modules/flashable.nix + ./modules/flashimage.nix ] diff --git a/examples/arhcive.nix b/examples/arhcive.nix @@ -33,7 +33,7 @@ in rec { imports = [ ../modules/tftpboot.nix ../modules/wlan.nix - ../modules/flashable.nix + ../modules/flashimage.nix ../modules/kexecboot.nix ]; diff --git a/examples/extneder.nix b/examples/extneder.nix @@ -35,7 +35,7 @@ in rec { imports = [ ../modules/wlan.nix ../modules/tftpboot.nix - ../modules/flashable.nix + ../modules/flashimage.nix ]; hostname = "extneder"; diff --git a/examples/rotuer.nix b/examples/rotuer.nix @@ -33,7 +33,7 @@ in rec { imports = [ ./modules/wlan.nix ./modules/tftpboot.nix -# ./modules/flashable.nix +# ./modules/flashimage.nix ]; kernel = { diff --git a/modules/flashable.nix b/modules/flashable.nix @@ -1,63 +0,0 @@ -{ - config -, pkgs -, lib -, ... -}: -let - inherit (lib) mkOption types concatStringsSep; - inherit (config.boot) tftp; -in { - options = { - }; - config = { - kernel = { - config = { - MTD_SPLIT_UIMAGE_FW = "y"; - }; - }; - - programs.busybox.applets = [ - "flashcp" - ]; - - outputs.firmware = - let o = config.outputs; in - pkgs.runCommand "firmware" {} '' - dd if=${o.uimage} of=$out bs=128k conv=sync - dd if=${o.squashfs} of=$out bs=128k conv=sync,nocreat,notrunc oflag=append - ''; - outputs.flashable = - let o = config.outputs; in - pkgs.runCommand "flashable" {} '' - mkdir $out - cd $out - ln -s ${o.firmware} firmware.bin - ln -s ${o.squashfs} squashfs - ln -s ${o.kernel} vmlinux - ln -s ${o.manifest} manifest - ln -s ${o.kernel.headers} build - ln -s ${o.uimage} uimage - ln -s ${o.dtb} dtb - ln -s ${o.flash-scr} flash.scr - ''; - - outputs.flash-scr = - let - inherit (pkgs.lib.trivial) toHexString; - inherit (config.hardware) flash; - in - pkgs.buildPackages.runCommand "" {} '' - imageSize=$(stat -L -c %s ${config.outputs.firmware}) - cat > $out << EOF - setenv serverip ${tftp.serverip} - setenv ipaddr ${tftp.ipaddr} - tftp 0x$(printf %x ${tftp.loadAddress}) result/firmware.bin - erase 0x$(printf %x ${flash.address}) +\''${filesize}) - cp.b 0x$(printf %x ${tftp.loadAddress}) 0x$(printf %x ${flash.address}) \''${filesize} - echo command line was ${builtins.toJSON (concatStringsSep " " config.boot.commandLine)} - EOF - ''; - - }; -} diff --git a/modules/flashimage.nix b/modules/flashimage.nix @@ -0,0 +1,63 @@ +{ + config +, pkgs +, lib +, ... +}: +let + inherit (lib) mkOption types concatStringsSep; + inherit (config.boot) tftp; +in { + options = { + }; + config = { + kernel = { + config = { + MTD_SPLIT_UIMAGE_FW = "y"; + }; + }; + + programs.busybox.applets = [ + "flashcp" + ]; + + outputs.firmware = + let o = config.outputs; in + pkgs.runCommand "firmware" {} '' + dd if=${o.uimage} of=$out bs=128k conv=sync + dd if=${o.rootfs} of=$out bs=128k conv=sync,nocreat,notrunc oflag=append + ''; + outputs.flashimage = + let o = config.outputs; in + pkgs.runCommand "flashimage" {} '' + mkdir $out + cd $out + ln -s ${o.firmware} firmware.bin + ln -s ${o.rootfs} rootfs + ln -s ${o.kernel} vmlinux + ln -s ${o.manifest} manifest + ln -s ${o.kernel.headers} build + ln -s ${o.uimage} uimage + ln -s ${o.dtb} dtb + ln -s ${o.flash-scr} flash.scr + ''; + + outputs.flash-scr = + let + inherit (pkgs.lib.trivial) toHexString; + inherit (config.hardware) flash; + in + pkgs.buildPackages.runCommand "" {} '' + imageSize=$(stat -L -c %s ${config.outputs.firmware}) + cat > $out << EOF + setenv serverip ${tftp.serverip} + setenv ipaddr ${tftp.ipaddr} + tftp 0x$(printf %x ${tftp.loadAddress}) result/firmware.bin + erase 0x$(printf %x ${flash.address}) +\''${filesize}) + cp.b 0x$(printf %x ${tftp.loadAddress}) 0x$(printf %x ${flash.address}) \''${filesize} + echo command line was ${builtins.toJSON (concatStringsSep " " config.boot.commandLine)} + EOF + ''; + + }; +} diff --git a/modules/kexecboot.nix b/modules/kexecboot.nix @@ -16,7 +16,7 @@ in { pkgs.runCommand "kexecboot" {} '' mkdir $out cd $out - ln -s ${o.squashfs} squashfs + ln -s ${o.rootfs} rootfs ln -s ${o.kernel} kernel ln -s ${o.manifest} manifest ln -s ${o.boot-sh} boot.sh @@ -27,19 +27,19 @@ in { outputs.boot-sh = let inherit (pkgs.lib.trivial) toHexString; - inherit (config.outputs) squashfs kernel; + inherit (config.outputs) rootfs kernel; cmdline = concatStringsSep " " config.boot.commandLine; in pkgs.buildPackages.runCommand "boot.sh.sh" { } '' - squashfsStart=${toString (100 * 1024 * 1024)} - squashfsBytes=$(stat -L -c %s ${squashfs}) - append_cmd="mtdparts=phram0:''${squashfsBytes}(rootfs) phram.phram=phram0,''${squashfsStart},''${squashfsBytes} memmap=''${squashfsBytes}\$''${squashfsStart}"; + rootfsStart=${toString (100 * 1024 * 1024)} + rootfsBytes=$(stat -L -c %s ${rootfs}) + append_cmd="mtdparts=phram0:''${rootfsBytes}(rootfs) phram.phram=phram0,''${rootfsStart},''${rootfsBytes} memmap=''${rootfsBytes}\$''${rootfsStart}"; cat > $out <<EOF #!/bin/sh test -d \$1 cd \$1 - ./kexec -f -d --map-file squashfs@$squashfsStart --dtb dtb --command-line '${cmdline} $append_cmd' kernel + ./kexec -f -d --map-file rootfs@$rootfsStart --dtb dtb --command-line '${cmdline} $append_cmd' kernel EOF ''; }; diff --git a/modules/outputs.nix b/modules/outputs.nix @@ -17,7 +17,7 @@ in }; config = { outputs = rec { - squashfs = liminix.builders.squashfs config.filesystem.contents; + rootfs = liminix.builders.squashfs config.filesystem.contents; tftpd = pkgs.buildPackages.tufted; kernel = liminix.builders.kernel.override { inherit (config.kernel) config src extraPatchPhase; @@ -40,13 +40,13 @@ in } '' mkdir $out dd if=${uimage} of=$out/firmware.bin bs=128k conv=sync - dd if=${squashfs} of=$out/firmware.bin bs=128k conv=sync,nocreat,notrunc oflag=append + dd if=${rootfs} of=$out/firmware.bin bs=128k conv=sync,nocreat,notrunc oflag=append ''; vmroot = pkgs.runCommand "qemu" {} '' mkdir $out cd $out - ln -s ${squashfs} squashfs + ln -s ${rootfs} rootfs ln -s ${kernel} vmlinux ln -s ${manifest} manifest ln -s ${kernel.headers} build diff --git a/modules/tftpboot.nix b/modules/tftpboot.nix @@ -17,7 +17,7 @@ in { pkgs.runCommand "tftpboot" {} '' mkdir $out cd $out - ln -s ${o.squashfs} squashfs + ln -s ${o.rootfs} rootfs ln -s ${o.kernel} vmlinux ln -s ${o.manifest} manifest ln -s ${o.kernel.headers} build @@ -31,16 +31,16 @@ in { in pkgs.buildPackages.runCommand "boot-scr" {} '' uimageSize=$(($(stat -L -c %s ${config.outputs.uimage}) + 0x1000 &(~0xfff))) - squashfsStart=0x$(printf %x $((${cfg.loadAddress} + 0x100000 + $uimageSize))) - squashfsBytes=$(($(stat -L -c %s ${config.outputs.squashfs}) + 0x100000 &(~0xfffff))) - squashfsMb=$(($squashfsBytes >> 20)) - cmd="mtdparts=phram0:''${squashfsMb}M(rootfs) phram.phram=phram0,''${squashfsStart},''${squashfsMb}Mi memmap=''${squashfsMb}M\$''${squashfsStart} root=1f00"; + rootfsStart=0x$(printf %x $((${cfg.loadAddress} + 0x100000 + $uimageSize))) + rootfsBytes=$(($(stat -L -c %s ${config.outputs.rootfs}) + 0x100000 &(~0xfffff))) + rootfsMb=$(($rootfsBytes >> 20)) + cmd="mtdparts=phram0:''${rootfsMb}M(rootfs) phram.phram=phram0,''${rootfsStart},''${rootfsMb}Mi memmap=''${rootfsMb}M\$''${rootfsStart} root=1f00"; cat > $out << EOF setenv serverip ${cfg.serverip} setenv ipaddr ${cfg.ipaddr} setenv bootargs 'liminix $cmd' - tftp 0x$(printf %x ${cfg.loadAddress}) result/uimage ; tftp 0x$(printf %x $squashfsStart) result/squashfs + tftp 0x$(printf %x ${cfg.loadAddress}) result/uimage ; tftp 0x$(printf %x $rootfsStart) result/rootfs bootm 0x$(printf %x ${cfg.loadAddress}) EOF ''; diff --git a/tests/pppoe/test.nix b/tests/pppoe/test.nix @@ -46,7 +46,7 @@ trap fatal ERR routeros $serverstatedir mkdir vm -mips-vm --background ./vm ${img}/vmlinux ${img}/squashfs +mips-vm --background ./vm ${img}/vmlinux ${img}/rootfs expect ${./getaddress.expect} set -o pipefail diff --git a/tests/smoke/test.nix b/tests/smoke/test.nix @@ -5,7 +5,7 @@ let img = (import liminix { device = import "${liminix}/devices/qemu/"; liminix-config = "${liminix}/vanilla-configuration.nix"; - }).outputs.squashfs; + }).outputs.rootfs; pkgs = import <nixpkgs> {}; in pkgs.runCommand "check" { nativeBuildInputs = with pkgs; [ squashfsTools s6-rc ] ; diff --git a/tests/wlan/test.nix b/tests/wlan/test.nix @@ -34,6 +34,6 @@ fatal(){ trap fatal ERR mkdir vm -mips-vm --background ./vm ${img}/vmlinux ${img}/squashfs +mips-vm --background ./vm ${img}/vmlinux ${img}/rootfs expect ${./wait-for-wlan.expect} |tee output && mv output $out ''