Review your favorite Linux distribution.
Go Back > Forums > Linux Forums > Linux - Server
User Name
Linux - Server This forum is for the discussion of Linux Software used in a server related context.


  Search this Thread
Old 08-27-2012, 04:21 AM   #1
Registered: Jan 2006
Location: Belgique
Distribution: Gentoo, Debian, Redhat, Centos, (x)Ubuntu
Posts: 111

Rep: Reputation: 27
pxe boot "ubuntu precise" from nfs root - / not found.


Recently, I got myself a small QNAP nas to support my small fanless htpc with network booting.

As usual, I created an NFS directory where I debootstrapped the precise version from ubuntu, chrooted into it and then did the config for network and locales + tzdata, installed the latest generic kernel, busybox, initramfs-tools etc.

When I boot the system from network, tftp and dhcp work fine because it gets the pxelinux.0 and the new kernel + initramfs from another share on the nas. (in the tftp root directory) the kernel and initrd from the chroot install are then copied to this tftp root ofcourse.

But: the boot process halts with the error that it cannot find the root directory and drops me into busybox. (root=/dev/nfs nfsroot=<serverip><nfsroot>)
So I thought that the problem was with initramfs not supporting network boot.
I chrooted again into the debootstrapped system and went into /etc/initramfs-tools directory, there I changed the boot to NFS in the initramfs.conf file and did update-initramfs -u.

Problem 1: My main system is gentoo and even in chroot, the update-initramfs complained about not finding /lib/modules/3.4.?-gentoo/modules.dep which seemed normal to me because the chroot actually uses the running gentoo kernel. (uname -a confirmed it)
so I found no options in update-initramfs to work around it and created a softlink "ln -s /lib/modules/3.2.?-??-ubuntu-generic /lib/modules/3.4.?-gentoo"

Problem 2: in the chroot, it complains about mtab missing. logically, I have no mtab there, so I created one from fstab and the error also went away.

result: the update-initramfs complains no more but the problem remains and when I pxe-boot, I still get dropped to busybox with the complaint that /dev/nfs cannot be found.
There is no /dev/nfs when I do an ls /dev.

what worked from the busybox (initramfs):
ifconfig <ip>/<mask> eth0
mount -t nfs <nfsip>:<nfsdir> / -o nolock (I need nolock for the qnap nfs implementation)
=> while I'm writing here, it occurs to me that I did not give this nolock option anywhere in the kernel options for the pxe boot (pxelinux.cfg/default) or the initramfs.conf file.

my questions:
1) when I drop into the initramfs system, is it normal to have no network configured, having to manually do ifconfig? I suppose it is, the pxe-boot works and thus I do have network but the system config is probably later in the boot?
Am I missing a module for my nic? A cd-install of ubuntu precise to the harddisk (to be removed) of the htpc did not have problems with my nic.

2) Is it even possible to do the update-initramfs from the chroot in gentoo for this ubuntu system? Or do I have to install ubuntu somewhere and do the update-initramfs there so that the chroot is using the same kernel as the host system? Seems rather ridiculous to me :-)

Any tips are appreciated.

Old 08-27-2012, 04:23 AM   #2
Registered: Jan 2006
Location: Belgique
Distribution: Gentoo, Debian, Redhat, Centos, (x)Ubuntu
Posts: 111

Original Poster
Rep: Reputation: 27
I may have forgotten to copy the newly created initramfs to the tftp root directory to use for pxe boot..
Will try that this evening and post result here. (pfhew, I must have been on drugs or something)
Old 08-28-2012, 05:20 PM   #3
Registered: Jan 2006
Location: Belgique
Distribution: Gentoo, Debian, Redhat, Centos, (x)Ubuntu
Posts: 111

Original Poster
Rep: Reputation: 27
Meanwhile, I've spent many an hour to get this pxe boot working.

the guest os is ubuntu 12.04 chroot-installation as mentioned before.
the problem is that whatever I try, I get stuck after init-bottom has finished. Some debugging messages in the init script (/usr/share/initramfs-tools/init) show me that it gets stuck here:

exec run-init ${rootmnt} ${init} "$@" ${recovery:+--startup-event=recovery} <${rootmnt}/dev/console >${rootmnt}/dev/console 2>&1

this is how I added "debug" msg:
log_begin_msg "chain real fs"
echo "rootmnt: ${rootmnt}"
echo "init: ${init}"
exec run-init ${rootmnt} ${init} "$@" ${recovery:+--startup-event=recovery} <${rootmnt}/dev/console >${rootmnt}/dev/console 2>&1
panic "Could not execute run-init."

then I did an "update-initramfs -u" in the chroot and copied the new initrd to the pxelinux directory.

my etc/fstab from the chroot env. is like this:

#<filesystem> <mountpoint> <type> <options> <d> <p>
proc /proc proc defaults 0 0
#/dev/nfs / nfs defaults,nolock,nfsvers=3,rw 0 0 / nfs4 defaults 0 0
none /tmp tmpfs defaults 0 0
none /var/run tmpfs defaults 0 0
none /var/lock tmpfs defaults 0 0
none /var/tmp tmpfs defaults 0 0
none /dev/pts devpts gid=5,mode=620 0 0
none /sys sysfs defaults 0 0

I tried several things, no / mountpoint, normal nfs, whatever I try here seems to be ignored.
After a testrun, I can see that the nfs root has been mounted because the logs in the chroot have been updated with new entries.

and the mtab from chroot is created, it always shows like this: / nfs rw,vers=4,addr=,clientaddr= 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
udev /dev devtmpfs rw,mode=0755 0 0
devpts /dev/pts devpts rw,gid=5,mode=620 0 0
tmpfs /run tmpfs rw,noexec,nosuid,size=10%,mode=0755 0 0
none /sys/fs/fuse/connections fusectl rw 0 0
none /sys/kernel/debug debugfs rw 0 0
none /sys/kernel/security securityfs rw 0 0
none /tmp tmpfs rw 0 0
none /run/lock tmpfs rw,noexec,nosuid,nodev,size=5242880 0 0
none /run/shm tmpfs rw,nosuid,nodev 0 0
none /var/tmp tmpfs rw 0 0
rpc_pipefs /run/rpc_pipefs rpc_pipefs rw 0 0

In fact, this is on a second nfs server as my first one is a qnap I thought changing nfs server would help. but no.
when I use the qnap nfs, it correctly shows the ip and chroot mountpoint on that qnap.

for sake of completeness, this is default for the pxeboot:

cthulhu vm # cat /mnt/tftpboot/pxelinux.cfg/default
DISPLAY boot.txt
kernel ubuntu/precise/amd64/vmlinuz-3.2.0-29-generic
append initrd=ubuntu/precise/amd64/initrd.img-3.2.0-29-generic root=/dev/nfs nfsroot=,nolock ip=dhcp rw --

Also here, I tried specifying the nfs version with the v3 option in nfsroot parameter.

What am I missing.
all advice welcome.


initramfs, nfs, precise, pxe, ubuntu

Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off

Similar Threads
Thread Thread Starter Forum Replies Last Post
"No root device found.Boot has failed.sleeping forever." on rhel6 when compile kernel upo Linux - Kernel 12 08-23-2011 02:23 AM
pxe boot "PXE-T01 file not found" ssharma_02 Linux - Networking 16 05-18-2011 04:21 PM
[SOLVED] SuSE fails to boot from qLogic Fibre channel card - "No root device found" nonshatter SUSE / openSUSE 4 11-01-2010 08:38 AM
first line on disp during boot "doing fast boot", then "FATAL: mbcache not found" rangerpresto SUSE / openSUSE 2 02-13-2010 11:18 PM
Standard commands give "-bash: open: command not found" even in "su -" and "su root" mibo12 Linux - General 4 11-11-2007 11:18 PM > Forums > Linux Forums > Linux - Server

All times are GMT -5. The time now is 10:14 PM.

Main Menu
Write for LQ is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Facebook: linuxquestions Google+: linuxquestions
Open Source Consulting | Domain Registration