6 votes

Démarrage sans disque sous Linux - Le partage NFS ne se monte pas pendant le démarrage du ramdisk

(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 ?

0voto

Pat Points 3240

Vous pouvez démarrer CentOS-7.0-1406-x86_64-DVD.iso avec HTML au lieu de NFS avec

kernel   = /NWA_PXE/$HEAD_DIR$/images/pxeboot/vmlinuz 
append   = initrd=/NWA_PXE/$HEAD_DIR$/images/pxeboot/initrd.img root=live:http://$IP_BSRV$/$HEAD_DIR$/LiveOS/squashfs.img ksdevice=bootif repo=http://$IP_BSRV$/$HEAD_DIR$/ 
ipappend = 2

source Serva

Vous pouvez facilement le changer en NFS si vous en avez vraiment besoin.

0voto

hargut Points 3820

Sur la base de vos informations, il est difficile de dire ce qui cause exactement le timeout. Quelques suggestions à essayer :

  • Démarrez le système avec selinux désactivé, en utilisant rd.brak pour entrer dans le pré-boot initrd.
  • Vérifiez ce qui cause le délai d'attente. Vérifiez si le pilote réseau est chargé, et si l'affectation dhcp a fonctionné. Voyez si un montage nfs manuel peut réussir. Essayez de démarrer manuellement le périphérique dev-nfs.device.
  • Vérifiez vos étapes par rapport à diverses documentations, par exemple http://www.iram.fr/~blanchet/tutoriels/diskless-centos-7.pdf
  • Essayez de bien comprendre le processus de démarrage et la création des fichiers initramfs.

Juste quelques mots sur le démarrage d'une instance :

  • vmlinux/vmlinuz contient seulement l'image du noyau avec les pilotes.
  • initramfs contient un système de fichiers racine basique qui est entièrement chargé en ram.
  • Typiquement (sur les systèmes de bureau et de serveur), les responsabilités d'initramfs sont de préparer le noyau (par exemple, charger les pilotes de noyau pertinents), monter le système de fichiers racine (rhel 7 ; généralement, le vrai système de fichiers racine sera dans /sysroot après rd.break), puis transmettre le démarrage au vrai système de fichiers racine.
  • Dans ce cas, je suppose que quelque chose ne va pas lors de la préparation du noyau, il semble que quelque chose manque ou ne peut être trouvé dans le initramfs. éventuellement les modules du pilote nfs.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X