Yet Another Solution to "/dev/root does not exist" when PXE Booting Fedora 20

Back when I first started working out of my house I set up a PXE boot server to make it easer to install Fedora on new boxes. That worked well for a while, but at some point I ran into some issues where the PXE boots would fail right after the boot message "Reached target Basic System". It would hang at that step for a while, then after a few minutes Dracut would report a couple of warnings, most interesting of which was "Warning: /dev/root does not exist".

For a while I just worked around the issue by installing through other methods instead of fixing the problem (in part because I spent a fair amount of time debugging without success). Today I wanted to reinstall a server that wouldn't boot off a USB stick and I didn't feel like burning a Fedora DVD, but fortunately I found a solution to the problem. In short, it boiled down to adding a root= option to the append line for the pxelinux.cfg file. In my case, I uploaded a squashfs.img from one of the repos to a local web server and pointed the root at it like this: root=live:http://torch/fedora/20/os/LiveOS/squashfs.img

For reference, the entire boot option config looks like this:

LABEL fedora20_install
        kernel fedora20/images/pxeboot/vmlinuz
        append vga=normal initrd=fedora20/images/pxeboot/initrd.img inst.repo=http://dl.fedoraproject.org/pub/fedora/linux/releases/20/Fedora/x86_64/os rd.debug=1 root=live:http://torch/fedora/20/os/LiveOS/squashfs.img

I suspect this may fix the problem because it forces Dracut to bring up networking properly (rd.neednet=1 might have done the trick too, in retrospect), but evidently these symptoms can be caused by a number of different things so YMMV. Hopefully this will help someone else who runs into the same issue though.