Return to Level1Techs.com

PXE Booting CentOS 7: dracut timeouts leading to "/dev/root doesn't exist"

So, I’m trying to boot CentOS 7’s minimal install through PXE using Windows Deployment Services.

I followed this guide for WDS setup with PXELinux:

https://www.syslinux.org/wiki/index.php?title=WDSLINUX

Then I followed this for booting CentOS 7 (since the above guide didn’t have a specific set of steps for that):

When I actually select the option in PXELinux to boot, it loads the image correctly, but I think it’s failing to append the initrd.img.

Here is my default menu for PXELinux:

DEFAULT      vesamenu.c32
PROMPT       0
 
MENU TITLE PXE Boot Menu (x64)
MENU INCLUDE pxelinux.cfg/graphics.conf
MENU AUTOBOOT Starting Local System in 8 seconds
 
# Option 1 - Exit PXE Linux & boot normally
LABEL bootlocal
      MENU label ^Boot Normally
      MENU default
      localboot 0
      timeout 80
      TOTALTIMEOUT 9000
# Option 2 - Run WDS
LABEL WDS
     MENU LABEL ^Windows Deployment Services - Install Windows
     KERNEL pxeboot.0
# Option 3 - Install CentOS 7
LABEL CentOS7
     MENU LABEL Install CentOS 7 - 1708
     KERNEL /Linux/CentOS/images/pxeboot/vmlinuz
     APPEND initrd=/Linux/CentOS/images/pxeboot/initrd.img
# Option 4 - Exit PXE Linux
LABEL Abort
     MENU LABEL E^xit
     KERNEL abortpxe.0

Note that I’ve omitted these options form the APPEND in that blog post:

inst.repo=[IP of your WDS server]/CentOS/7.2 ks=[IP of your WDS server]/CentOS/7.2/centos-base-ks.cfg

That’s because I don’t have a Kickstart file (ks), and so I shouldn’t need an Installation Repo (inst.repo) as I intend to do the first installation manually.

However, booting this way leads to a bunch of lines showing that dracut can’t find /dev/root and boot fails because it doesn’t exist.

I’m not experienced enough with this to know what I’m doing wrong given that I’m using the settings the veeam guide had listed.

disclaimer… (posting before reading)
nevermind… see you’re using Windows.

1 Like

Reading through some stuff about that, it says this error only occurs when you use an initrd.img and a vmlinuz from different installation media with different versions.

However, I pulled both from the same ISO so I have no idea why that’s a thing?

That’s exactly what it says to do in that guide you linked:

If your machine has no DVD drive you can also download CentOS 7 DVD ISO locally using wget or curl utilities from a CentOS mirror and mount it.

After the DVD content is made available, create the centos7 directory and copy CentOS 7 bootable kernel and initrd images from the DVD mounted location to centos7 folder structure.

I am, but I’m using Windows Deployment Services to boot PXELinux. So functionally, all PXELinux guides work with this as far as I can tell.

Based on what the tutorial I used has…

image

I feel like you should be pointing to ftp/tftp… etc for it to continue getting the files it needs…?

Yes, I decided to skip that since I couldn’t be sure that was specific to CentOS’ PXE Server configuration and just used the line on Label 2.

I still got the same error though. I checked the vmlinuz and the initrd.img files and they are different versions indeed.

I’m going to try downloading the 1804 version of CentOS 7.5 instead of the 1708 version and try that instead.

Edit:

Strangely, getting the 1804 version of CentOS 7.5 fixed the issue? Odd.

1 Like

Welp, it works when I point it here: method=http://mirror.centos.org/centos/7/os/x86_64/

It doesn’t work when I point it here: method=tftp://server-hostname/REMINST/Boot/x64/Linux/CentOS

Which is the file share given by Windows Deployment Services with the contents of the ISO copied there.

It doesn’t work when I have no method stated either.

:thinking: I’d rather not rely on downloading the OS every time and just use what I have locally.

… I think I know what I’ll do. The point of this PXE setup is to use a bunch of old computers to create a GlusterFS cluster. Once I have the cluster setup, I will configure a FTP with that as the storage point and just store it there with that as the destination. That should work.

I don’t mean to necro this. But there’s a simple solution to this. Discovered it while I was setting this up in my own environment.

Install nfs on the WDS server you;re hosting this on.
Server Manager ->Install Roles ->Server Roles->File and Storage Services->File and iSCSI Services ->Server for NFS

Enable NFS sharing to read only on the centOS repo copy.
Right click the folder and click NFS sharing

after this append the method pointing to the repo so like this as example
append initrd=Linux/CentOS7/images/pxeboot/initrd.img method=nfs:SERVERNAME:/CentOS7 devfs=nomount

1 Like