fix: initramfs hard links, streaming archive, verbatim argv transport

- hard links in the rootfs were written as zero-size entries with no
  inode set (all zero), so the kernel could link them to the wrong file;
  assign a synthetic inode per (device, inode) group.
- build the cpio archive by streaming entries to disk instead of holding
  the whole archive in memory.
- the VM command was joined into a single string and shell-expanded in
  the guest, mangling quotes and nested commands; pass the argv
  base64-encoded (ECR_ARGV) and exec it verbatim.
- parse ecr parameters from /proc/cmdline in the init script, set the
  hostname via procfs (arch has no hostname binary), and give the serial
  console a moment to drain before poweroff.
This commit is contained in:
2026-09-20 22:37:33 +02:00
parent d64da0671b
commit 240a66c532
3 changed files with 315 additions and 120 deletions
Generated
+1
View File
@@ -301,6 +301,7 @@ name = "ecr"
version = "0.1.0"
dependencies = [
"anyhow",
"base64",
"clap",
"cpio",
"dirs",