iPXE discussion forum

Full Version: Encounter "Kernel panic - not syncing: VFS" when boot ArchLinux installation files
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
I am trying to boot the installation ArchLinux files on my machine with UEFI firmware. I had turned off secure boot.

I am able to reach the iPXE shell from DHCP undionly.ipxe.

Here is my iPXE script that trying to fetch kernel and initrd files from http:

Code:
kernel http://192.168.0.5/arch/boot/x86_64/vmlinuz archisobasedir=arch archiso_http_srv=http://192.168.0.5/ ip=:::::eth0:dhcp

initrd http://192.168.05/arch/boot/x86_64/archiso.img

boot

I encounter this error after fetching the files from http service and boot:

Code:
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

This is the ArchLinux ISO files structure:

Code:
├── arch
│   ├── boot
│   │   ├── intel_ucode.img
│   │   ├── intel_ucode.LICENSE
│   │   ├── memtest
│   │   ├── memtest.COPYING
│   │   ├── syslinux
│   │   │   ├── archiso.cfg
│   │   │   ├── archiso_head.cfg
│   │   │   ├── archiso_pxe.cfg
│   │   │   ├── archiso_sys.cfg
│   │   │   ├── archiso_tail.cfg
│   │   │   ├── cat.c32
│   │   │   ├── chain.c32
│   │   │   ├── cmd.c32
│   │   │   ├── cmenu.c32
│   │   │   ├── config.c32
│   │   │   ├── cptime.c32
│   │   │   ├── cpu.c32
│   │   │   ├── cpuid.c32
│   │   │   ├── cpuidtest.c32
│   │   │   ├── debug.c32
│   │   │   ├── dhcp.c32
│   │   │   ├── disk.c32
│   │   │   ├── dmi.c32
│   │   │   ├── dmitest.c32
│   │   │   ├── elf.c32
│   │   │   ├── ethersel.c32
│   │   │   ├── gfxboot.c32
│   │   │   ├── gpxecmd.c32
│   │   │   ├── hdt
│   │   │   │   ├── modalias.gz
│   │   │   │   └── pciids.gz
│   │   │   ├── hdt.c32
│   │   │   ├── hexdump.c32
│   │   │   ├── host.c32
│   │   │   ├── ifcpu64.c32
│   │   │   ├── ifcpu.c32
│   │   │   ├── ifmemdsk.c32
│   │   │   ├── ifplop.c32
│   │   │   ├── kbdmap.c32
│   │   │   ├── kontron_wdt.c32
│   │   │   ├── ldlinux.c32
│   │   │   ├── lfs.c32
│   │   │   ├── libcom32.c32
│   │   │   ├── libgpl.c32
│   │   │   ├── liblua.c32
│   │   │   ├── libmenu.c32
│   │   │   ├── libutil.c32
│   │   │   ├── linux.c32
│   │   │   ├── lpxelinux.0
│   │   │   ├── ls.c32
│   │   │   ├── lua.c32
│   │   │   ├── mboot.c32
│   │   │   ├── memdisk
│   │   │   ├── meminfo.c32
│   │   │   ├── menu.c32
│   │   │   ├── pci.c32
│   │   │   ├── pcitest.c32
│   │   │   ├── pmload.c32
│   │   │   ├── poweroff.c32
│   │   │   ├── prdhcp.c32
│   │   │   ├── pwd.c32
│   │   │   ├── pxechn.c32
│   │   │   ├── reboot.c32
│   │   │   ├── rosh.c32
│   │   │   ├── sanboot.c32
│   │   │   ├── sdi.c32
│   │   │   ├── splash.png
│   │   │   ├── sysdump.c32
│   │   │   ├── syslinux.c32
│   │   │   ├── syslinux.cfg
│   │   │   ├── vesa.c32
│   │   │   ├── vesainfo.c32
│   │   │   ├── vesamenu.c32
│   │   │   ├── vpdtest.c32
│   │   │   ├── whichsys.c32
│   │   │   └── zzjson.c32
│   │   └── x86_64
│   │       ├── archiso.img
│   │       └── vmlinuz
│   ├── pkglist.x86_64.txt
│   └── x86_64
│       ├── airootfs.sfs
│       ├── airootfs.sfs.sig
│       └── airootfs.sha512
├── EFI
│   ├── archiso
│   │   └── efiboot.img
│   ├── boot
│   │   ├── bootx64.efi
│   │   ├── HashTool.efi
│   │   └── loader.efi
│   ├── shellx64_v1.efi
│   └── shellx64_v2.efi
├── isolinux
│   ├── boot.cat
│   ├── isohdpfx.bin
│   ├── isolinux.bin
│   ├── isolinux.cfg
│   └── ldlinux.c32
└── loader
    ├── entries
    │   ├── archiso-x86_64.conf
    │   ├── uefi-shell-v1-x86_64.conf
    │   └── uefi-shell-v2-x86_64.conf
    └── loader.conf

Thank you.
undionly.kpxe is for legacy bios boot, (I'm assuming undionly.ipxe was a spello)

for EFI boot you would like snponly.efi or ipxe.efi instead....

However you have clearly been able to boot the kernel so not sure how you got to that point...

any way in efi mode you will have to add initrd= option to the kernel command line for it to know whch file it should use from efifs as ram image data.

Code:
kernel http://192.168.0.5/arch/boot/x86_64/vmlinuz archisobasedir=arch archiso_http_srv=http://192.168.0.5/ ip=:::::eth0:dhcp initrd=archiso.img
initrd http://192.168.05/arch/boot/x86_64/archiso.img
boot

Forum FAQ covers this as well:
http://forum.ipxe.org/showthread.php?tid...1#pid19101

(2018-01-23 08:23)FAQ Wrote: [ -> ]
"Kernel panic - not syncing: VFS" when booting Linux in EFI mode

For the kernel to know which initrd it should load, it needs to be specified on the cmdline mentioned in efi stub documentation

Example:
Code:
kernel vmlinuz initrd=initram.igz
initrd initram.igz
boot


(2018-01-20 15:00)NiKiZe Wrote: [ -> ]undionly.kpxe is for legacy bios boot, (I'm assuming undionly.ipxe was a spello)

for EFI boot you would like snponly.efi or ipxe.efi instead....

However you have clearly been able to boot the kernel so not sure how you got to that point...

I am sorry, it was my mistake. I am using ipxe.efi to boot instead of undionly.kpxe
(2018-01-20 15:00)NiKiZe Wrote: [ -> ]undionly.kpxe is for legacy bios boot, (I'm assuming undionly.ipxe was a spello)

for EFI boot you would like snponly.efi or ipxe.efi instead....

However you have clearly been able to boot the kernel so not sure how you got to that point...

any way in efi mode you will have to add initrd= option to the kernel command line for it to know whch file it should use from efifs as ram image data.

Code:
kernel http://192.168.0.5/arch/boot/x86_64/vmlinuz archisobasedir=arch archiso_http_srv=http://192.168.0.5/ ip=:::::eth0:dhcp initrd=archiso.img
initrd http://192.168.05/arch/boot/x86_64/archiso.img
boot

yes, it works. thks! you must explicitly specify the initrd filename in the kernel line
(2018-01-20 15:00)NiKiZe Wrote: [ -> ]any way in efi mode you will have to add initrd= option to the kernel command line for it to know whch file it should use from efifs as ram image data.

THIS! Fixed my problem. Had system booting in BIOS mode fine, but using same files would not boot in EFI. Looked as if the initrd was never loaded, though the kernel output never said such.

Can you point to where in the iPXE documentation (or elsewhere) this is noted?

Thank you!!
(2019-07-23 19:04)cspxe Wrote: [ -> ]Can you point to where in the iPXE documentation (or elsewhere) this is noted?

This should be in the kernel documentation, but it's also in the forum FAQ:
http://forum.ipxe.org/showthread.php?tid...1#pid19101

(2018-01-23 08:23)FAQ Wrote: [ -> ]
"Kernel panic - not syncing: VFS" when booting Linux in EFI mode

For the kernel to know which initrd it should load, it needs to be specified on the cmdline mentioned in efi stub documentation

Example:
Code:
kernel vmlinuz initrd=initram.igz
initrd initram.igz
boot


(2019-07-23 20:16)NiKiZe Wrote: [ -> ]This should be in the kernel documentation, but it's also in the forum FAQ:
http://forum.ipxe.org/showthread.php?tid...1#pid19101

For the kernel to know which initrd it should load, it needs to be specified on the cmdline mentioned in efi stub documentation

Awesome, thank you sir! Moderately obscure (like a lot of this stuff is).

CS
Reference URL's