I have a pretty simple mythtv box. It boots over PXE and the root partition is read-only exported over NFS. After bumping the kernel on the server that hosts the NFS to 2.6.34 my mythbox no longer wanted to boot. It was hanging right after managing to look up the mountd port on the NFS server with RPC. After enabling NFS_DEBUG the output looks like this:

Looking up port of RPC 100003/2 on 10.0.0.19
Root-NFS: Portmapper on server returned 2049 as nfsd port
Looking up port of RPC 100005/1 on 10.0.0.19
Root-NFS: mountd port is 45731

tcpdump on the server didn’t reveal much either. Everything was fine until the point of hanging, where the client sent a couple of retransmission requests for the last UDP packet. In wireshark, these packets look like:

5127    4.366527    10.0.0.42    10.0.0.19    NFS    V2 NULL Call
5128    4.366638    10.0.0.19    10.0.0.42    NFS    V2 NULL Reply (Call In 5127)
5129    5.463390    10.0.0.42    10.0.0.19    NFS    [RPC retransmission of #5127]V2 NULL Call (Reply In 5128)
5130    5.463543    10.0.0.19    10.0.0.42    NFS    [RPC duplicate of #5128]V2 NULL Reply (Call In 5127)

A couple of more requests for retries and retransmissions later and

VFS: Unable to mount root fs via NFS, trying floppy.

I tried the following:

  • Copy the mythtv root partition to another PC and use that as the NFS server – boots fine
  • Add ,tcp to the nfsroot kernel command line parameter – boots fine
  • Use a virtual machine on my laptop to boot as the mythtv system (even gave it the same MAC address) – boots fine

I am out of ideas why only this client with only this server only with UDP does not work.