(C'est mon premier message, alors j'espère que je le mets en forme correctement). J'ai ajouté autant d'informations que possible sans être TL:DR.
Mon problème de base est que je me heurte à des murs lorsque j'essaie de faire un démarrage sans disque PXE sur un serveur NFS (CentOS 6.7 ou CentOS 7). J'ai essayé plusieurs choses et je ne parviens pas à reproduire le succès que j'ai eu initialement avec un serveur et un client CentOS7. Chaque fois que je suis mes notes maintenant, je n'arrive à rien.
Les erreurs les plus courantes que j'obtiens (en fonction du fichier initrd.img ou initramfs*.img que j'utilise) sont les suivantes
A ticker of *** that shows a text-based progress bar and the message
A start job is running for dev-nfs.device (xx s / 1min 30s)
Ensuite, il s'arrête et dit
Timed out waiting for device dev-nfs.device
Dependency failed for File System Check on /dev/nfs
Dependency failed for /sysroot
Dependency failed for Initrd Root File System
Dependency failed for Reload Configuration from the Real Root
L'erreur ci-dessus se produit lorsque je copie (l'un des) initramfs-3.10.*.img de /boot/ à l'emplacement de l'image PXE.
Si j'essaie de générer un nouveau fichier image initramfs à partir de dracut, l'erreur ci-dessus se produit également.
dracut initramfsnew.img
Il se peut que je ne sache pas comment générer un initramfs correct ou que je ne comprenne vraiment pas les fonctions initrd.img et initramfs. Je pense que le délai d'attente est dû au fait que les pilotes NFS ne sont pas encore chargés à ce stade du processus de démarrage et que le client ne peut pas monter correctement le partage NFS. La raison pour laquelle je pense cela est que j'ai démarré exactement le même client PXE dans son système d'exploitation local et monté manuellement le partage NFS et cela fonctionne à 100%, donc le partage NFS est actif et fonctionne. Je crois que j'ai mal compris le fonctionnement de initrd.img et initramfs*.img.
Si je télécharge initrd.img à partir d'un site miroir CentOS, j'arrive à 90 % du chemin, puis l'erreur se change en
No /sbin/init trying fallback
Je suis maintenant dans un (faute d'un meilleur terme, à moitié chargé) Shell qui me donne une navigation de base du partage NFS. Je peux aller dans le /home/disklessuser/ et même écrire dans le NFS ou lire de nouveaux fichiers depuis le NFS (commandes 'touch' simples testées sur le serveur et le client). Ce qui semble manquer, principalement, c'est l'option de connexion dans ce cas, ainsi qu'une limite correcte pour les répertoires (c'est-à-dire que je semble être connecté en tant que root à ce stade du démarrage).
La configuration de base est assez standard AFAIK :
/var/lib/tftpboot/pxelinux.cfg/default contient (j'ai laissé de côté les parties dont je sais qu'elles fonctionnent - le PXE fonctionne et pointe vers la bonne image etc) :
menu label ^1) CentOS 7
kernel /images/centos7/vmlinuz
append root=/dev/nfs initrd=/images/centos7/initrd.img nfsroot=10.10.10.10:/srv/nfs/diskless/images/centos7/root rw selinux=0
J'ai essayé des variantes de ce qui précède, comme le remplacement de initrd.img par initramfs3.10*.img (différentes versions situées dans le /boot/ du serveur) et j'ai essayé d'ajouter des paramètres tels que
ip=dhcp
parce que la documentation de dracut suggère que cela lui indique d'obtenir le chemin nfsroot à partir de DHCP au lieu du menu PXE.
Mon DHCP est actuellement configuré de cette façon :
subnet 10.10.10.0 netmask 255.255.255.0 {
option broadcast-address 10.10.10.255;
option routers 10.10.10.1;
range 10.10.10.100 10.10.10.150;
next-server 10.10.10.10;
option root-path "10.10.10.10:/var/lib/tftpboot";
filename "pxelinux.0";
}
Il est possible que cela soit en conflit avec le partage NFS prescrit dans le menu PXE ?
Quoi qu'il en soit, j'apprécierais tout conseil - peut-être que le plus pertinent pour moi est de savoir ce qu'il faut faire avec le initrd ou initramfs. Je suppose qu'il n'y a pas beaucoup de différences entre les deux, mais comment générer un nouveau fichier qui devrait (si tout va bien) inclure les pilotes réseau de base pour permettre un montage NFS ?
Deuxièmement, pourquoi /sbin/init est-il absent alors que je suis proche de la solution lorsque j'utilise l'initrd.img stocké dans le répertoire miroir CentOS sous /os/x86_64/isolinux ?