Skip to content

Commit 974eac3

Browse files
committed
pass env as initrd addition
1 parent 824fb1e commit 974eac3

1 file changed

Lines changed: 17 additions & 10 deletions

File tree

os/installer/kexec.nix

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,10 @@
2121
cp "${config.system.build.kernel}/${config.system.boot.loader.kernelFile}" xnodeos/bzImage
2222
cp "${config.system.build.kexecScript}" xnodeos/install
2323
cp "${pkgs.pkgsStatic.kexec-tools}/bin/kexec" xnodeos/kexec
24+
cp "${pkgs.pkgsStatic.coreutils}/bin/mkdir" xnodeos/mkdir
25+
cp "${pkgs.pkgsStatic.findutils}/bin/find" xnodeos/find
2426
cp "${pkgs.pkgsStatic.iproute2.override { iptables = null; }}/bin/ip" xnodeos/ip
27+
cp "${pkgs.pkgsStatic.cpio}/bin/cpio" xnodeos/cpio
2528
tar -czvf $out/xnodeos-kexec-installer-${pkgs.stdenv.hostPlatform.system}.tar.gz xnodeos
2629
'';
2730

@@ -31,22 +34,27 @@
3134
pkgs.writeScript "kexec-boot" ''
3235
#!/usr/bin/env bash
3336
SCRIPT_DIR=$( cd -- "$( dirname -- "''${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
34-
NETWORK_CONFIG="{ \"address\": $(''${SCRIPT_DIR}/ip -j address show), \"route\": $(''${SCRIPT_DIR}/ip -j route show) }"
35-
''${SCRIPT_DIR}/kexec --load ''${SCRIPT_DIR}/bzImage \
36-
--initrd=''${SCRIPT_DIR}/initrd \
37-
--command-line "init=${config.system.build.toplevel}/init ${toString config.boot.kernelParams} && $(cat << EOF
37+
cd ''${SCRIPT_DIR}
3838
39+
./mkdir -p ./xnode-config
40+
41+
NETWORK_CONFIG="{ \"address\": $(./ip --json address show), \"route\": $(./ip --json route show) }"
42+
cat << EOF > ./xnode-config/env
3943
export XNODE_OWNER="''${XNODE_OWNER}" && export DOMAIN="''${DOMAIN}" && export ACME_EMAIL="''${ACME_EMAIL}" && export USER_PASSWD="''${USER_PASSWD}" && export ENCRYPTED="''${ENCRYPTED}" && export NETWORK_CONFIG="''${NETWORK_CONFIG}" && export INITIAL_CONFIG="''${INITIAL_CONFIG}"
4044
EOF
41-
)"
42-
''${SCRIPT_DIR}/kexec -e
45+
46+
# ./find ./xnode-config -print | ./cpio --format newc --create --file ./initrd --append
47+
48+
./kexec --load ./bzImage \
49+
--initrd=./initrd \
50+
--command-line "init=${config.system.build.toplevel}/init ${toString config.boot.kernelParams}"
51+
./kexec -e
4352
''
4453
);
4554

4655
systemd.services.install-xnodeos.script = lib.mkBefore ''
4756
# Extract environmental variables
48-
sed '2q;d' /proc/cmdline > /tmp/xnode-env
49-
source /tmp/xnode-env
57+
source /xnode-config/env
5058
'';
5159

5260
systemd.services.apply-network-config = {
@@ -66,8 +74,7 @@
6674
];
6775
script = ''
6876
# Extract environmental variables
69-
sed '2q;d' /proc/cmdline > /tmp/xnode-env
70-
source /tmp/xnode-env
77+
source /xnode-config/env
7178
7279
if [[ $NETWORK_CONFIG ]]; then
7380
interfaces=$(echo "$NETWORK_CONFIG" | jq -c '.address.[]')

0 commit comments

Comments
 (0)