We have two FOG imaging environments with the same OS, same FOG version (1.5.10.1650), and nearly identical configuration. One site works perfectly; the other crashes every time at the same point, the FOG menu loads, but i get a kernel panic when deploying an image.
Clients (both laptops and Hyper-V Gen 2 VMs) successfully PXE boot and chainload iPXE, but instead of reaching the FOG menu, they hang with the following error: ```
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(1,0)
Kernel Off
What We’ve Done:
✅ Re-ran FOG installer
✅ Confirmed init.xz, init_32.xz, bzImage, bzImage32 exist under /var/www/html/fog/service/ipxe/
✅ Verified file ownership is fogproject:apache
✅ Replaced TFTP boot files (ipxe.efi, snponly.efi, undionly.kpxe) from the known-good environment
✅ Apache + TFTP verified working
✅ Packet captures show clean file downloads over HTTPS (port 443)
✅ Reinstalled kernel/init through FOG web interface
✅ Disabled dnsmasq entirely — we’re using ISC DHCP
✅ Permissions on TFTP directory are correct
✅ Hardware and VM settings match working site
DHCP snippet-----------```
subnet 192.168.X.0 netmask 255.255.255.0 {
range 192.168.X.50 192.168.X.254;
option routers 192.168.X.1;
option broadcast-address 192.168.X.255;
next-server 192.168.X.23;
}
class “Legacy” {
match if substring(option vendor-class-identifier, 0, 20) = “PXEClient:Arch:00000”;
filename “undionly.kpxe”;
}
class “UEFI-32” {
match if substring(option vendor-class-identifier, 0, 20) = “PXEClient:Arch:00002” or
substring(option vendor-class-identifier, 0, 20) = “PXEClient:Arch:00006”;
filename “i386-efi/ipxe.efi”;
option isc-ipxe-boot-script “http://192.168.X.23/fog/service/ipxe/boot.php”;
}
class “UEFI-64” {
match if substring(option vendor-class-identifier, 0, 20) = “PXEClient:Arch:00007” or
substring(option vendor-class-identifier, 0, 20) = “PXEClient:Arch:00008” or
substring(option vendor-class-identifier, 0, 20) = “PXEClient:Arch:00009”;
filename “ipxe.efi”;
option isc-ipxe-boot-script “http://192.168.X.23/fog/service/ipxe/boot.php”;
}
Packet Capture Observations:
TFTP downloads (ipxe.efi, default.ipxe, etc.) are clean
iPXE hands off to boot.php over HTTP
Apache serves init.xz and bzImage over HTTPS, TLS completes
Client terminates after transfer – no further boot activity
No NFS or iSCSI requests
autoexec.ipxe and default.ipxe are present, but never result in menu
Main Issue:
**Why does this one environment crash with kernel panic after a seemingly clean iPXE boot, while the other environment—identical in version and config—works?
Any ideas appreciated. Been at this for hours.**