Bugfix: Session 177 Bug 1: Why does Firecracker VM kernel panic imme...
Documentation for Sessions
🐛 Bugfix: Session 177 Bug 1: Why does Firecracker VM kernel panic imme...
Date: 2026-03-05
Time: 17:11:16 UTC
Session: gspace1-178.8
Agent: angular
Confidence: 98%
Status: ✅ Documented
📋 Decision Context
Question:
Session 177 Bug 1: Why does Firecracker VM kernel panic immediately at boot with vm-init.sh?
Task: Not specified
🎯 Decision Made
Chosen:
vm-init.sh line 18 used exec > >(tee -a LOGFILE) 2>&1 before mounting /proc. Process substitution (>(cmd)) requires /dev/fd which is a symlink to /proc/self/fd. Without /proc mounted, /dev/fd does not exist → bash exits with error → PID 1 dies → kernel panic. Fix: moved all mount commands (proc, sysfs, devtmpfs, tmpfs) BEFORE the exec line. Created /dev/fd and /dev/stdin/stdout/stderr symlinks manually since udev never runs.
Options Considered:
- No alternatives documented
💭 Reasoning
Console output showed: '/usr/local/bin/vm-init.sh: line 18: /dev/fd/63: No such file or directory' followed by 'Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000100'. The /dev/fd/63 is the file descriptor that bash creates for the tee subprocess via process substitution. In normal Linux, /dev/fd → /proc/self/fd is created by udev. In Firecracker microVMs with custom init (no systemd, no udev), these symlinks must be created manually. This would be wrong if: a future kernel automounts /proc before init (unlikely — that is the init's job). Early warning signal: any PID 1 script using process substitution in a microVM context.
📁 Files Involved
- No files specified
🔗 Related
- Decision ID:
dev_1772730676620_mnrkqrh - Session: 178
- Workspace: gspace1
Auto-generated by MCP Smart Consolidation