Compare commits
9 Commits
cd1428255b
...
4b513cdb98
Author | SHA1 | Date | |
---|---|---|---|
4b513cdb98 | |||
77922c875b | |||
fa31d00d6a | |||
7d1c85f680 | |||
70fa328574 | |||
2276c548ba | |||
e823e7a29c | |||
20b9eb16ec | |||
cd37627cbe |
60
THOUGHTS.txt
60
THOUGHTS.txt
@ -341,3 +341,63 @@ For Liminix we're not going to do that.
|
|||||||
PHRAM support)
|
PHRAM support)
|
||||||
* it means we need to memmap out enough ram for the whole image inc kernel when really
|
* it means we need to memmap out enough ram for the whole image inc kernel when really
|
||||||
all we need to reserve is the rootfs bit
|
all we need to reserve is the rootfs bit
|
||||||
|
|
||||||
|
|
||||||
|
Sat Oct 8 11:23:08 BST 2022
|
||||||
|
|
||||||
|
"halt" and "reboot" don't work on gl-ar750
|
||||||
|
|
||||||
|
Sat Oct 8 13:10:00 BST 2022
|
||||||
|
|
||||||
|
Where do we go with this ar750?
|
||||||
|
|
||||||
|
- wired networking
|
||||||
|
- wifi
|
||||||
|
|
||||||
|
|
||||||
|
Sun Oct 9 09:57:35 BST 2022
|
||||||
|
|
||||||
|
We want to be able to package kernel modules as regular derivations, so that
|
||||||
|
they get added to the filesystem
|
||||||
|
|
||||||
|
This means they need access to kernel.modulesupport
|
||||||
|
|
||||||
|
This means kernel.modulesupport needs to be in pkgs too?
|
||||||
|
|
||||||
|
This is fine, probably, but we'd like to avoid closing over vmlinux because
|
||||||
|
there's no need for it to be in the filesystem
|
||||||
|
|
||||||
|
Mon Oct 10 22:57:23 BST 2022
|
||||||
|
|
||||||
|
The problem is that kernel kconfig options are manipulated in the
|
||||||
|
liminix modules, which means that data must be (transitively) available
|
||||||
|
to modules, so they can't be regular packages as they're tied so tightly
|
||||||
|
to the exact config. Unless we define a second overlay that references
|
||||||
|
the configuration object, but my head hurts when I start to think about that
|
||||||
|
so maybe not.
|
||||||
|
|
||||||
|
Tue Oct 11 00:00:13 BST 2022
|
||||||
|
|
||||||
|
Building ag71xx (ethernet driver) as a module doesn't work because
|
||||||
|
it references a symbol ath79_pll_base in the kernel that hasn't been
|
||||||
|
marked with EXPORT_SYMBOL.
|
||||||
|
|
||||||
|
We could forge an object file that "declares" it with a gross and disgusting hack like this
|
||||||
|
|
||||||
|
$ echo > empty # not actually "empty", objcopy complains about that
|
||||||
|
$ grep ath79_pll_base /nix/store/jcc114cd13xa8aa4mil35rlnmxnlmv09-vmlinux-mips-unknown-linux-musl-modulesupport/System.map
|
||||||
|
ffffffff807b2094 B ath79_pll_base
|
||||||
|
$ mips-unknown-linux-musl-objcopy -I binary -O elf32-big --add-section .bss=empty --add-symbol ath79_pll_base=.bss:0x807b2094 empty f.o
|
||||||
|
|
||||||
|
I don't claim this is a good idea, just an idea. Thought was that we would not
|
||||||
|
have to declare its type this way. Also it might not work with kaslr
|
||||||
|
https://stackoverflow.com/a/68903503
|
||||||
|
|
||||||
|
|
||||||
|
Backstory: why are we trying to build this as a module? because the
|
||||||
|
openwrt fork of it seems to be a bit more advanced than the mainline,
|
||||||
|
and I *suspect* that the mainline version doesn't work with our
|
||||||
|
openwrt-based device tree which ahs the mdio as a nested node inside
|
||||||
|
the ag71xx node - in mainline the driver seems to have all the mdio
|
||||||
|
stuff inline. So, could we build the openwrt driver without patching
|
||||||
|
the crap out of our kernel
|
||||||
|
11
default.nix
11
default.nix
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
let
|
let
|
||||||
overlay = import ./overlay.nix;
|
overlay = import ./overlay.nix;
|
||||||
nixpkgs = import <nixpkgs> ( device.system // {overlays = [overlay]; });
|
nixpkgs = import <nixpkgs> (device.system // {overlays = [overlay device.overlay]; });
|
||||||
inherit (nixpkgs.pkgs) callPackage writeText liminix;
|
inherit (nixpkgs.pkgs) callPackage writeText liminix;
|
||||||
inherit (nixpkgs.lib) concatStringsSep;
|
inherit (nixpkgs.lib) concatStringsSep;
|
||||||
config = (import ./merge-modules.nix) [
|
config = (import ./merge-modules.nix) [
|
||||||
@ -44,7 +44,7 @@ let
|
|||||||
let
|
let
|
||||||
inherit (nixpkgs.lib.trivial) toHexString;
|
inherit (nixpkgs.lib.trivial) toHexString;
|
||||||
uimageStart = 10485760; # 0xa00000
|
uimageStart = 10485760; # 0xa00000
|
||||||
squashfsStart = uimageStart + 2 * 1024 * 1024;
|
squashfsStart = uimageStart + 4 * 1024 * 1024;
|
||||||
squashfsSize = 8;
|
squashfsSize = 8;
|
||||||
cmd = "mtdparts=phram0:${toString squashfsSize}M(nix) phram.phram=phram0,0x${toHexString squashfsStart},${toString squashfsSize}Mi memmap=${toString squashfsSize}M\$0x${toHexString squashfsStart} root=1f00";
|
cmd = "mtdparts=phram0:${toString squashfsSize}M(nix) phram.phram=phram0,0x${toHexString squashfsStart},${toString squashfsSize}Mi memmap=${toString squashfsSize}M\$0x${toHexString squashfsStart} root=1f00";
|
||||||
in
|
in
|
||||||
@ -56,16 +56,19 @@ let
|
|||||||
bootm 0x${toHexString uimageStart}
|
bootm 0x${toHexString uimageStart}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
directory = nixpkgs.pkgs.runCommand "liminix" {} ''
|
directory = nixpkgs.pkgs.runCommand "liminix" {} (''
|
||||||
mkdir $out
|
mkdir $out
|
||||||
cd $out
|
cd $out
|
||||||
ln -s ${squashfs} squashfs
|
ln -s ${squashfs} squashfs
|
||||||
ln -s ${kernel.vmlinux} vmlinux
|
ln -s ${kernel.vmlinux} vmlinux
|
||||||
ln -s ${manifest} manifest
|
ln -s ${manifest} manifest
|
||||||
|
ln -s ${kernel.vmlinux.modulesupport} build
|
||||||
|
'' +
|
||||||
|
(if device ? boot then ''
|
||||||
ln -s ${uimage} uimage
|
ln -s ${uimage} uimage
|
||||||
${if phram then "ln -s ${boot-scr} boot.scr" else ""}
|
${if phram then "ln -s ${boot-scr} boot.scr" else ""}
|
||||||
ln -s ${boot-scr} flash.scr
|
ln -s ${boot-scr} flash.scr
|
||||||
'';
|
'' else ""));
|
||||||
# this exists so that you can run "nix-store -q --tree" on it and find
|
# this exists so that you can run "nix-store -q --tree" on it and find
|
||||||
# out what's in the image, which is nice if it's unexpectedly huge
|
# out what's in the image, which is nice if it's unexpectedly huge
|
||||||
manifest = writeText "manifest.json" (builtins.toJSON config.filesystem.contents);
|
manifest = writeText "manifest.json" (builtins.toJSON config.filesystem.contents);
|
||||||
|
@ -10,6 +10,9 @@
|
|||||||
# DIY users: the serial port connections have headers preinstalled
|
# DIY users: the serial port connections have headers preinstalled
|
||||||
# and don't need soldering
|
# and don't need soldering
|
||||||
|
|
||||||
|
# Mainline linux 5.19 doesn't have device-tree support for this device
|
||||||
|
# or even for the SoC, so we use the extensive OpenWrt kernel patches
|
||||||
|
|
||||||
{
|
{
|
||||||
system = {
|
system = {
|
||||||
crossSystem = {
|
crossSystem = {
|
||||||
@ -20,11 +23,66 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# We need to be able to import default.nix before we import nixpkgs
|
||||||
|
# because it has the system config to tell nixpkgs what arch to build for.
|
||||||
|
# But we also need some way to do things like fetchFromGitHub in the
|
||||||
|
# per-device config and we can only do that once we have a reference to
|
||||||
|
# pkgs
|
||||||
|
|
||||||
|
overlay = final: prev:
|
||||||
|
let
|
||||||
|
inherit (final) fetchFromGitHub fetchgit stdenvNoCC;
|
||||||
|
openwrt = fetchFromGitHub {
|
||||||
|
name = "openwrt-source";
|
||||||
|
repo = "openwrt";
|
||||||
|
owner = "openwrt";
|
||||||
|
rev = "a5265497a4f6da158e95d6a450cb2cb6dc085cab";
|
||||||
|
hash = "sha256-YYi4gkpLjbOK7bM2MGQjAyEBuXJ9JNXoz/JEmYf8xE8=";
|
||||||
|
};
|
||||||
|
mainline = fetchFromGitHub {
|
||||||
|
name = "kernel-source";
|
||||||
|
owner = "torvalds";
|
||||||
|
repo = "linux";
|
||||||
|
rev = "90c7e9b400c751dbd73885f494f421f90ca69721";
|
||||||
|
hash = "sha256-pq6QNa0PJVeheaZkuvAPD0rLuEeKrViKk65dz+y4kqo=";
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
sources = {
|
||||||
|
inherit openwrt;
|
||||||
|
kernel = stdenvNoCC.mkDerivation {
|
||||||
|
name = "spindled-kernel-tree";
|
||||||
|
src = mainline;
|
||||||
|
phases = [
|
||||||
|
"unpackPhase" "patchPhase" "openWrtPatchPhase"
|
||||||
|
"patchScripts" "installPhase"
|
||||||
|
];
|
||||||
|
patches = [ ../../kernel/random.patch ];
|
||||||
|
patchScripts = ''
|
||||||
|
patchShebangs scripts/
|
||||||
|
'';
|
||||||
|
openWrtPatchPhase = ''
|
||||||
|
cp -av ${openwrt}/target/linux/generic/files/* .
|
||||||
|
chmod -R u+w .
|
||||||
|
cp -av ${openwrt}/target/linux/ath79/files/* .
|
||||||
|
chmod -R u+w .
|
||||||
|
for i in ${openwrt}/target/linux/ath79/patches-5.15/* ; do patch --batch --forward -p1 < $i ;done
|
||||||
|
'';
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out
|
||||||
|
cp -a . $out
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
kernel = rec {
|
kernel = rec {
|
||||||
checkedConfig = {
|
checkedConfig = {
|
||||||
"MIPS_ELF_APPENDED_DTB" = "y";
|
"MIPS_ELF_APPENDED_DTB" = "y";
|
||||||
OF = "y";
|
OF = "y";
|
||||||
USE_OF = "y";
|
USE_OF = "y";
|
||||||
|
ATH79 = "y";
|
||||||
|
# SOC_QCA955X = "y"; # actually QCA9531, is this even right?
|
||||||
|
LIMINIX = "y";
|
||||||
SERIAL_8250_CONSOLE = "y";
|
SERIAL_8250_CONSOLE = "y";
|
||||||
SERIAL_8250 = "y";
|
SERIAL_8250 = "y";
|
||||||
SERIAL_CORE_CONSOLE = "y";
|
SERIAL_CORE_CONSOLE = "y";
|
||||||
@ -39,13 +97,21 @@
|
|||||||
CONSOLE_LOGLEVEL_DEFAULT = "8";
|
CONSOLE_LOGLEVEL_DEFAULT = "8";
|
||||||
CONSOLE_LOGLEVEL_QUIET = "4";
|
CONSOLE_LOGLEVEL_QUIET = "4";
|
||||||
|
|
||||||
|
|
||||||
# "empty" initramfs source should create an initial
|
# "empty" initramfs source should create an initial
|
||||||
# filesystem that has a /dev/console node and not much
|
# filesystem that has a /dev/console node and not much
|
||||||
# else. Note that pid 1 is started *before* the root
|
# else. Note that pid 1 is started *before* the root
|
||||||
# filesystem is mounted and it expects /dev/console to
|
# filesystem is mounted and it expects /dev/console to
|
||||||
# be present already
|
# be present already
|
||||||
BLK_DEV_INITRD = "n";
|
BLK_DEV_INITRD = "n";
|
||||||
|
|
||||||
|
NET = "y";
|
||||||
|
NETDEVICES = "y";
|
||||||
|
ETHERNET = "y";
|
||||||
|
NET_VENDOR_ATHEROS = "y";
|
||||||
|
AG71XX = "y"; # ethernet (qca,qca9530-eth)
|
||||||
|
|
||||||
|
MFD_SYSCON = "y"; # ethernet (compatible "syscon")
|
||||||
|
|
||||||
};
|
};
|
||||||
config = {
|
config = {
|
||||||
CPU_LITTLE_ENDIAN= "n";
|
CPU_LITTLE_ENDIAN= "n";
|
@ -12,6 +12,21 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
overlay = final: prev:
|
||||||
|
let inherit (final) fetchFromGitHub;
|
||||||
|
in {
|
||||||
|
sources = {
|
||||||
|
kernel = fetchFromGitHub {
|
||||||
|
name = "kernel-source";
|
||||||
|
owner = "torvalds";
|
||||||
|
repo = "linux";
|
||||||
|
rev = "3d7cb6b04c3f3115719235cc6866b10326de34cd"; # v5.19
|
||||||
|
hash = "sha256-OVsIRScAnrPleW1vbczRAj5L/SGGht2+GnvZJClMUu4=";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
kernel = {
|
kernel = {
|
||||||
config = {
|
config = {
|
||||||
SYSVIPC= "y";
|
SYSVIPC= "y";
|
@ -1,57 +1,19 @@
|
|||||||
{
|
{
|
||||||
callPackage
|
callPackage
|
||||||
, buildPackages
|
|
||||||
, stdenvNoCC
|
|
||||||
, fetchFromGitHub
|
|
||||||
|
|
||||||
, config
|
, config
|
||||||
, checkedConfig
|
, checkedConfig
|
||||||
|
, sources
|
||||||
}:
|
}:
|
||||||
let
|
{
|
||||||
source = fetchFromGitHub {
|
|
||||||
owner = "torvalds";
|
|
||||||
repo = "linux";
|
|
||||||
rev = "3d7cb6b04c3f3115719235cc6866b10326de34cd"; # v5.19
|
|
||||||
hash = "sha256-OVsIRScAnrPleW1vbczRAj5L/SGGht2+GnvZJClMUu4=";
|
|
||||||
};
|
|
||||||
|
|
||||||
# The kernel is huge and takes a long time just to
|
|
||||||
# download and unpack. This derivation creates
|
|
||||||
# a source tree in a suitable shape to build from -
|
|
||||||
# today it just patches some scripts but as we add
|
|
||||||
# support for boards/SoCs we expect the scope of
|
|
||||||
# "pre-treatment" to grow
|
|
||||||
|
|
||||||
tree = stdenvNoCC.mkDerivation {
|
|
||||||
name = "spindled-kernel-tree";
|
|
||||||
src = source;
|
|
||||||
phases = [ "unpackPhase" "patchScripts" "installPhase" ];
|
|
||||||
patchScripts = ''
|
|
||||||
patchShebangs scripts/
|
|
||||||
'';
|
|
||||||
installPhase = ''
|
|
||||||
mkdir -p $out
|
|
||||||
cp -a . $out
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
openwrtSource = fetchFromGitHub {
|
|
||||||
repo = "openwrt";
|
|
||||||
owner = "openwrt";
|
|
||||||
rev = "a5265497a4f6da158e95d6a450cb2cb6dc085cab";
|
|
||||||
hash = "sha256-YYi4gkpLjbOK7bM2MGQjAyEBuXJ9JNXoz/JEmYf8xE8=";
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
in rec {
|
|
||||||
vmlinux = callPackage ./vmlinux.nix {
|
vmlinux = callPackage ./vmlinux.nix {
|
||||||
inherit tree config checkedConfig;
|
tree = sources.kernel;
|
||||||
|
inherit config checkedConfig;
|
||||||
};
|
};
|
||||||
|
|
||||||
uimage = callPackage ./uimage.nix { };
|
uimage = callPackage ./uimage.nix { };
|
||||||
|
|
||||||
dtb = callPackage ./dtb.nix {
|
dtb = callPackage ./dtb.nix {
|
||||||
openwrt = openwrtSource;
|
inherit (sources) openwrt kernel;
|
||||||
kernel = tree;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
9
kernel/random.patch
Normal file
9
kernel/random.patch
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
diff --git a/Kconfig b/Kconfig
|
||||||
|
index 745bc773f567..24a6ea92ee19 100644
|
||||||
|
--- a/Kconfig
|
||||||
|
+++ b/Kconfig
|
||||||
|
@@ -30,3 +30,4 @@ source "lib/Kconfig"
|
||||||
|
source "lib/Kconfig.debug"
|
||||||
|
|
||||||
|
source "Documentation/Kconfig"
|
||||||
|
+source "Kconfig.local"
|
@ -16,6 +16,17 @@ let writeConfig = name : config: writeText name
|
|||||||
config
|
config
|
||||||
));
|
));
|
||||||
kconfigFile = writeConfig "kconfig" (config // checkedConfig);
|
kconfigFile = writeConfig "kconfig" (config // checkedConfig);
|
||||||
|
# KLUDGE FIXME. some symbols we need to enable in some configurations don't
|
||||||
|
# have a prompt (!), so we can't turn them on just by adding FOO=y and make oldconfig
|
||||||
|
#
|
||||||
|
# (!) yes, that was my reaction too
|
||||||
|
kconfigLocal = writeText "Kconfig.local" ''
|
||||||
|
config LIMINIX
|
||||||
|
prompt "Local symbols"
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
select SOC_QCA955X
|
||||||
|
'';
|
||||||
checkedConfigFile = writeConfig "checked_kconfig" checkedConfig ;
|
checkedConfigFile = writeConfig "checked_kconfig" checkedConfig ;
|
||||||
inherit lib; in
|
inherit lib; in
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
@ -60,6 +71,7 @@ stdenv.mkDerivation rec {
|
|||||||
export KBUILD_OUTPUT=`pwd`
|
export KBUILD_OUTPUT=`pwd`
|
||||||
cp ${kconfigFile} .config
|
cp ${kconfigFile} .config
|
||||||
cp ${kconfigFile} .config.orig
|
cp ${kconfigFile} .config.orig
|
||||||
|
cp ${kconfigLocal} Kconfig.local
|
||||||
( cd ${tree} && make V=1 olddefconfig )
|
( cd ${tree} && make V=1 olddefconfig )
|
||||||
'';
|
'';
|
||||||
|
|
||||||
@ -74,14 +86,15 @@ stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
KBUILD_BUILD_HOST = "liminix.builder";
|
KBUILD_BUILD_HOST = "liminix.builder";
|
||||||
buildPhase = ''
|
buildPhase = ''
|
||||||
make -C ${tree} vmlinux
|
make -C ${tree} vmlinux modules_prepare
|
||||||
'';
|
'';
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
${CROSS_COMPILE}strip -d vmlinux
|
${CROSS_COMPILE}strip -d vmlinux
|
||||||
cp vmlinux $out
|
cp vmlinux $out
|
||||||
make clean
|
|
||||||
mkdir -p $modulesupport
|
mkdir -p $modulesupport
|
||||||
|
cp .config $modulesupport/config
|
||||||
|
make clean
|
||||||
cp -a . $modulesupport
|
cp -a . $modulesupport
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
@ -53,6 +53,9 @@ in {
|
|||||||
IKCONFIG = "y";
|
IKCONFIG = "y";
|
||||||
IKCONFIG_PROC = "y";
|
IKCONFIG_PROC = "y";
|
||||||
PROC_FS = "y";
|
PROC_FS = "y";
|
||||||
|
|
||||||
|
MODULES = "y";
|
||||||
|
|
||||||
# s6-linux-init mounts this on /dev
|
# s6-linux-init mounts this on /dev
|
||||||
DEVTMPFS = "y";
|
DEVTMPFS = "y";
|
||||||
# some or all of these may be fix for "tmpfs: Unknown parameter 'mode'" error
|
# some or all of these may be fix for "tmpfs: Unknown parameter 'mode'" error
|
||||||
@ -64,6 +67,7 @@ in {
|
|||||||
};
|
};
|
||||||
boot.commandLine = [
|
boot.commandLine = [
|
||||||
"earlyprintk=serial,ttyS0 console=ttyS0,115200 panic=10 oops=panic init=/bin/init loglevel=8 rootfstype=squashfs"
|
"earlyprintk=serial,ttyS0 console=ttyS0,115200 panic=10 oops=panic init=/bin/init loglevel=8 rootfstype=squashfs"
|
||||||
|
"fw_devlink=off"
|
||||||
];
|
];
|
||||||
users.root = {
|
users.root = {
|
||||||
uid = 0; gid= 0; gecos = "Root of all evaluation";
|
uid = 0; gid= 0; gecos = "Root of all evaluation";
|
||||||
|
11
overlay.nix
11
overlay.nix
@ -12,10 +12,19 @@ final: prev: {
|
|||||||
s6-init-bin = final.callPackage ./pkgs/s6-init-bin {};
|
s6-init-bin = final.callPackage ./pkgs/s6-init-bin {};
|
||||||
s6-rc-database = final.callPackage ./pkgs/s6-rc-database {};
|
s6-rc-database = final.callPackage ./pkgs/s6-rc-database {};
|
||||||
|
|
||||||
dnsmasq = prev.dnsmasq.override {
|
|
||||||
|
dnsmasq =
|
||||||
|
let d = prev.dnsmasq.overrideAttrs(o: {
|
||||||
|
preBuild = ''
|
||||||
|
makeFlagsArray=("COPTS=")
|
||||||
|
'';
|
||||||
|
});
|
||||||
|
in d.override {
|
||||||
dbusSupport = false;
|
dbusSupport = false;
|
||||||
|
nettle = null;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
tufted = final.callPackage ./pkgs/tufted {};
|
tufted = final.callPackage ./pkgs/tufted {};
|
||||||
|
|
||||||
pppoe = final.callPackage ./pkgs/pppoe {};
|
pppoe = final.callPackage ./pkgs/pppoe {};
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
set -e
|
set -e
|
||||||
NIXPKGS_ALLOW_UNSUPPORTED_SYSTEM=1 nix-build '<liminix>' -I liminix-config=../smoke/configuration.nix --arg device "import <liminix/devices/$DEVICE.nix>" -A outputs.kernel.vmlinux -o vmlinux $*
|
NIXPKGS_ALLOW_UNSUPPORTED_SYSTEM=1 nix-build '<liminix>' -I liminix-config=../smoke/configuration.nix --arg device "import <liminix/devices/$DEVICE>" -A outputs.kernel.vmlinux -o vmlinux $*
|
||||||
|
|
||||||
TESTS=$(cat <<"EOF"
|
TESTS=$(cat <<"EOF"
|
||||||
|
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
set -e
|
set -e
|
||||||
NIXPKGS_ALLOW_UNSUPPORTED_SYSTEM=1 nix-build --arg device "import <liminix/devices/qemu.nix>" test.nix
|
NIXPKGS_ALLOW_UNSUPPORTED_SYSTEM=1 nix-build --arg device "import <liminix/devices/qemu>" test.nix
|
||||||
|
@ -14,7 +14,7 @@ fatal(){
|
|||||||
}
|
}
|
||||||
trap fatal ERR
|
trap fatal ERR
|
||||||
|
|
||||||
NIXPKGS_ALLOW_UNSUPPORTED_SYSTEM=1 nix-build '<liminix>' -I liminix-config=./configuration.nix --arg device "import <liminix/devices/qemu.nix>" -A outputs.default $*
|
NIXPKGS_ALLOW_UNSUPPORTED_SYSTEM=1 nix-build '<liminix>' -I liminix-config=./configuration.nix --arg device "import <liminix/devices/qemu>" -A outputs.default $*
|
||||||
|
|
||||||
if ! ( echo "cont" | socat - unix-connect:../support/ppp-server/qemu-monitor); then
|
if ! ( echo "cont" | socat - unix-connect:../support/ppp-server/qemu-monitor); then
|
||||||
echo "need pppoe server running"
|
echo "need pppoe server running"
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
set -e
|
set -e
|
||||||
NIXPKGS_ALLOW_UNSUPPORTED_SYSTEM=1 nix-build '<liminix>' -I liminix-config=./configuration.nix --arg device "import <liminix/devices/$DEVICE.nix>" -A outputs.squashfs -o smoke.img $*
|
NIXPKGS_ALLOW_UNSUPPORTED_SYSTEM=1 nix-build '<liminix>' -I liminix-config=./configuration.nix --arg device "import <liminix/devices/$DEVICE>" -A outputs.squashfs -o smoke.img $*
|
||||||
|
|
||||||
TESTS=$(cat <<"EOF"
|
TESTS=$(cat <<"EOF"
|
||||||
test -n "${TMPDIR}"
|
test -n "${TMPDIR}"
|
||||||
|
@ -14,7 +14,7 @@ fatal(){
|
|||||||
}
|
}
|
||||||
trap fatal ERR
|
trap fatal ERR
|
||||||
|
|
||||||
NIXPKGS_ALLOW_UNSUPPORTED_SYSTEM=1 nix-build '<liminix>' -I liminix-config=./configuration.nix --arg device "import <liminix/devices/qemu.nix>" -A outputs.default $*
|
NIXPKGS_ALLOW_UNSUPPORTED_SYSTEM=1 nix-build '<liminix>' -I liminix-config=./configuration.nix --arg device "import <liminix/devices/qemu>" -A outputs.default $*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user