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:
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:
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é). 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. 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
.