1

We have need of setting up an EFI PXE server. I've successfully been able to get a test machine to boot all the way up until we get to the pivot_root portion of the boot process. Then I get the dreaded:

VFS: Cannot open root device "nvram" or unknown-block(0,0)
Please append a correct "root=" boot option; here are the available partitions:

And yes, the list of partitions is nil.

Can anyone tell me how one can get the root= device for my legacy grub conf for diskless centos machines? Obviously, I've already tried /dev/nvram, and /dev/ram.

When we PXE boot (legacy mode) there is no problem or special settings requesting a root device. It just works. This is the first time I've ever worked with EFI booting, so I'm sure I'm just missing some parameters.

Current setup: CentOS 6.8, Legacy Grub (bootx64), ISC DHCP, TFTP

Current EFI config (/EFI/efidefault):

default=0
timeout=3
splashimage=(nd)/splash.xpm.gz
#prompt 0
#ONTIMEOUT default

title Linux
   menu label UEFI Image
   menu default
   root (nd)
   kernel /discovery_images/2.6.32-642.el6.x86_64/vmlinuz-2.6.32-642.el6.x86_64 root=/dev/nvram
   append initrd=/discovery_images/2.6.32-642.el6.x86_64/centos-initramfs-2.6.32-642.el6.x86_64.img.gz rw shell init=/init biosdevname=0 consoleblank=0 vga=773 ramdisk_size=9216

FINAL FIX

So the problem was that I was using the wrong syntax for the legacy GRUB config. Thanks to #CENTOS in Freenode (IRC), one of the members (apologies, I don't recall his/her nick) pointed out that Legacy GRUB doesn't understand the append directive. So, moving the arguments in the append string of my config (above) to the kernel directive and losing the append string on the initrd line, and then finally, removing the = between initrd and /discover..., fixed the problem:

default=0
timeout=3
splashimage=(nd)/splash.xpm.gz

title Linux
   menu label UEFI Image
   menu default
   root (nd)
   kernel /discovery_images/2.6.32-642.el6.x86_64/vmlinuz-2.6.32-642.el6.x86_64 rw shell init=/init biosdevname=0 consoleblank=0 vga=773 ramdisk_size=9216
   initrd /discovery_images/2.6.32-642.el6.x86_64/centos-initramfs-2.6.32-642.el6.x86_64.img.gz

1 Answer 1

2

AFAICT (but my own experiment is more with diskless Windows, even if we began to port our diskless solution to Windows before it was killed by this big two letters IT company...), you may need something different. 1 - Do not specify any "root=" on the kernel line 2 - use an initrd line (and related init ram drive, that you have to build) 3 - in this initrd, initiate whatever block device and filesystem driver you need to mount your root partition (and other partitions as well)

Check this page : http://linux120919.blogspot.fr/2015/01/redhat-65-as-legacy-and-uefi-pxe.html for instance

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .