Construit le kernel avec le support de NFS mais ne recevant pas / dev / nfs

J'essaye de build le kernel 3.13.9, récupéré en utilisant apt-get source , et construit dans un propre debootstrap chroot (l'hôte et le chroot étant des installations d'Ubuntu Trusty). Mon but est de démarrer une machine sans disque vers une console via NFS.

J'ai exécuté make menuconfig et activé le kernel 64 bits, debugging désactivé, et fait en sorte que je faisais une version 64 bits. De plus, je suis allé au système de files filesystems en réseau, et a permis ce qui suit:

  • Systèmes de files réseau
  • Support client NFS

L'hôte a installé le nfs-kernel-server et une export est configurée pour le directory que j'aimerais utiliser comme racine du système démarré par le réseau.

Le démarrage PXE se passe bien, le kernel et initrd sont chargés, mais après une longue pause, je suis basculé vers une invite busybox, en raison d'un système de files racine manquant.

Quelle pourrait-être la cause? (ou est-ce que plus d'informations sont nécessaires?)

Edit: Je passe déjà nfsroot :

 LABEL linux KERNEL vmlinuz-3.13.9 APPEND root=/dev/nfs initrd=initrd.img-3.13.9 nfsroot=192.168.1.39:/nfsroot,rw ip=dhcp rw 

Comme l'indique la documentation du kernel , /dev/nfs n'est pas un vrai périphérique, mais seulement un indice pour le kernel d'utiliser NFS comme rootfs . Vous devrez également indiquer au kernel où find cette racine via le paramètre nfsroot ou un démon DHCP correctement configuré. Pour que ce dernier fonctionne, vous devez également configurer votre kernel pour configurer automatiquement ses interfaces réseau ou avoir un initramfs qui s'occupe de cela.

Assurez-vous également que le support NFS est embedded au binary du kernel et non pas en tant que module (ou que vous ayez un initramfs qui s'occupe de cela). Il en va de même pour les pilotes de réseau: vous voudrez probablement avoir le pilote pour votre NIC Ethernet embedded dans votre image de kernel, sinon vous devrez le charger à partir d'un initramfs .

En bref, il existe plusieurs possibilités:

  1. Faites comme le dit le lien ci-dessus: ayez la root=/dev/nfs , donnez le paramètre nfsroot correct et dites à votre kernel votre configuration réseau via le paramètre ip (ce serait le meilleur moyen de s'assurer que tout fonctionne, un server DHCP mal configuré).
  2. CONFIG_IP_PNP et CONFIG_IP_PNP_DHCP et configurez un démon DHCP pour indiquer à votre client quelle adresse IP utiliser et où find sa racine NFS.
  3. Construisez un initramfs qui fait la bonne configuration et le assembly NFS.

Edit: Je pense que si vous utilisez un initrd / initramfs comme le suggère votre édition, vous devrez faire le assembly NFS dans initrd (votre initrd doit être conscient du fait qu'il doit le faire) . Le assembly automatique à travers le kernel (en tant qu'autoconfiguration IP, IIRC) ne fonctionne que s'il n'y a pas d' initrd .