GRUB et le SE Solaris 10 1/06 : le nouveau chargeur de démarrage pour les plates-formes x86Shudong Zhou et Jan Setje-Eiler, décembre 2005 Cet article décrit l'architecture de démarrage du système d'exploitation Solaris 10 1/06 sur les plates-formes x86, ainsi que l'expérience de l'utilisateur. Remarque : certains détails de cet article peuvent changer sans préavis. Consultez les pages du manuel et les documents d'administration du SE Solaris pour connaître les interfaces prises en charge. Le nouveau chargeur de démarrage décrit dans ce document est disponible avant le lancement formel du SE Solaris 10 1/06 auprès de OpenSolaris Project ou du programme Solaris Express. 1. Présentation du processus de démarrageLors de la mise sous tension d'un système x86, le BIOS initialise la CPU, la mémoire et le matériel de la plate-forme. Une fois cette opération terminée, le BIOS charge le logiciel d'initialisation initial (c'est-à-dire le chargeur de démarrage) depuis le périphérique de démarrage configuré et lui transmet les commandes. Le SE Solaris 10 3/05 et les versions antérieures utilisent un chargeur de démarrage développé par Sun qui comporte un shell interactif et un assistant de configuration du périphérique géré par menu, basé sur les pilotes en mode réel. A partir de la version Solaris 10 1/06, le GRUB ou GNU GRand Unified Bootloader open source (voir la référence 1) est utilisé comme chargeur de démarrage. La première distribution est basée sur la version GRUB 0.95 et sera mise à jour à mesure de que nouvelles versions seront disponibles. Le noyau Solaris est totalement compatible avec la spécification Multi-initialisation (référence 2) ; par conséquent, le SE Solaris peut être démarré avec n'importe quel chargeur de démarrage mettant en oeuvre la spécification Multi-initialisation. Le passage au GRUB présente plusieurs avantages pour les clients Solaris.
Enfin, en adoptant un chargeur de démarrage développé par la communauté open source, les clients Sun peuvent exploiter la considérable expérience de GRUB accumulée par cette communauté. 2. Initialisation du SE Solaris avec GRUBUne fois que GRUB contrôle les opérations, il affiche un menu sur la console, invitant l'utilisateur à choisir une instance du SE à initialiser. L'utilisateur peut choisir une option de menu, modifier une option de menu avec l'éditeur intégré ou charger manuellement un noyau du SE en mode commande. Pour initialiser le SE Solaris, GRUB doit charger un fichier Le programme multi-initialisation est responsable d'assembler les modules du noyau de base en mémoire en lisant Lorsque le noyau obtient le contrôle, il initialise la CPU, la mémoire et les périphériques d'E/S, et monte le système de fichiers racine sur le périphérique, comme spécifié par la propriété 3. InstallationLe SE Solaris peut être installé à partir d'un CD, d'un DVD et des serveurs d'installation en réseau. Le SE Solaris 10 1/06 diffère de la version Solaris 10 3/05 par plusieurs aspects :
Lors de l'initialisation de la mini racine d'installation, un menu GRUB s'affiche. Un utilisateur peut éditer les options d'initialisation interactivement (voir la section 4.2). Une fois le SE Solaris chargé par le GRUB, le menu d'installation suivant s'affiche :
L'assistant de configuration du périphérique et le shell interactif associé, que les utilisateurs ont rencontrés dans les versions Solaris 10 3/05 et antérieures, n'existe plus. Les utilisateurs qui souhaitent ajouter les pilotes nécessaires pendant l'installation (par exemple, des pilotes d'adaptateur hôte) doivent choisir l'option 5 et fournir une disquette ou unCD/DVD ITU (Install Time Update, mise à jour d'installation). L'option 6 est disponible pour récupérer le système. Elle permet d'accéder rapidement à une invite root sans passer par l'identification du système. Cette option est identique à une session de secours Solaris (voir la section 4.4). 4. Gestion du sous-système d'initialisation4.1 BIOS Il est généralement préférable de mettre à jour le microprogramme BIOS selon la révision la plus récente avant d'installer le SE Solaris. Vous pouvez généralement le faire en consultant la page d'assistance du fabricant de l'ordinateur. Par rapport à la version Solaris 10 3/05, le SE Solaris 10 1/06 utilise un sous-ensemble de caractéristiques BIOS différent. En particulier, le noyau utilise davantage d'informations de la table Advanced Configuration and Power Management Interface (ACPI), en utilisant l'analyseur du logiciel ACPI CA d'Intel. Sur les systèmes non conformes aux spécifications BIOS 2.0, le syslog peut contenir des messages concernant l'analyse de la table ACPI, tels que : ACPI-0725: *** Warning: Type override - [4s] had invalid type (DEB_[\200IODB
Ces messages sont inoffensifs et n'exercent aucune influence sur le fonctionnement normal du système. Si des erreurs ACPI empêchent l'initialisation normale du système, l'utilisateur peut désactiver l'analyseur ACPI en réglant kernel .. -B ...,acpi-user-options=2 Dans ce cas, le système suppose qu'un ensemble de périphériques ISA est présent, notamment un clavier, une souris, deux ports série et un port parallèle. 4.2 Options d'initialisation Pour initialiser le SE Solaris, un utilisateur peut spécifier le noyau à charger, les options à transmettre au noyau (voir La spécification du nom et des options du noyau via # eeprom boot-file="kernel/unix -v"
Pour spécifier la même chose dans le menu GRUB, modifiez la commande kernel /platform/i86pc/multiboot pour : kernel /platform/i86pc/multiboot kernel/unix -v
Voir Les propriétés autres que kernel /platform/i86pc/multiboot -B prop1=val1[,prop2=val2...]
Pour configurer la console série sur kernel /platform/i86pc/multiboot -B console=ttya
Si la valeur de propriété contient des virgules, la valeur doit être entre guillemets. La commande GRUB paramètre la console Solaris sur kernel /platform/i86pc/multiboot -B console=ttya,ttya-mode="115200,8,n,1,-"
En bref, le fait de spécifier 4.3 Archive d'initialisation L'archive d'initialisation se rapporte au fichier Le contenu de l'archive d'initialisation est spécifié dans 4.4 Entrée de menu de secours Le fichier Imaginez que vous ajoutez un nouveau package contenant un pilote défectueux et que le système panique pendant l'initialisation. Lors de la réinitialisation, vous pouvez choisir l'entrée Solaris failsafe. En session de secours, montez le système de fichiers racine sur Le fichier 4.5 Maintien du système amorçable Pour garantir que le système demeure amorçable, les blocs d'initialisation GRUB, le menu GRUB et l'archive d'initialisation doivent être à jour. Les blocs d'initialisation GRUB résident dans la partition Solaris. Si les blocs GRUB sont corrompus, ils doivent être réinstallés avec la commande Le menu GRUB réside dans L'archive d'initialisation doit être mise à jour à mesure que le système de fichiers racine est modifié. En cas de défaillance du système (panne de courant ou erreur grave du noyau) faisant immédiatement suite à une mise à jour du fichier noyau, l'archive d'initialisation peut être désynchronisée du système de fichiers racine. Dans de tels cas, le service 5. Configuration de la multi-initialisationS'il existe d'autres partitions amorçables, le programme d'installation de Solaris tente d'ajouter des entrées GRUB pour elles. A l'heure où nous écrivons, Microsoft Windows et les partitions de diagnostic sont reconnus. Les utilisateurs peuvent ajouter d'autres systèmes d'exploitation en éditant directement le menu GRUB. Imaginez que vous avez un système comportant le SE Solaris, Linux et Windows disposés comme suit sur le même disque : fdisk partition 0: Windows
fdisk partition 1: Linux
fdisk partition 2:
slice 0 Solaris 9
slice 3 Solaris 10 1/06Le menu GRUB doit présenter l'aspect suivant : #---------- ADDED BY BOOTADM - DO NOT EDIT ----------
title Solaris 10 1/06
root (hd0,2,d)
kernel /platform/i86pc/multiboot
module /platform/i86pc/boot_archive
#---------------------END BOOTADM--------------------
title Solaris 9
root (hd0,2,a)
chainloader +1
makeactive
title Linux
root (hd0,1)
kernel <from Linux's GRUB menu...>
initrd <from Linux's GRUB menu...>
title Windows
root (hd0,0)
chainloader +1
Notez que la partition de disque Solaris Le GRUB obtenu auprès d'autres sources que Sun ne reconnaît pas actuellement les formats Solaris sur disque VTOC et UFS. Sun a soumis des modifications au projet GRUB pour les prendre en charge ; jusqu'à leur intégration, seul le GRUB Solaris fonctionne. Si Linux a installé le GRUB sur le bloc d'initialisation maître, vous ne pourrez pas accéder au SE Solaris, même si vous rendez la partition Solaris active. Dans ce cas, vous pouvez charger en chaîne depuis le GRUB Linux en modifiant le menu dans Linux. Sinon, vous pouvez aussi remplacer le secteur d'initialisation maître par le GRUB Solaris de l'exemple ci-dessus, en utilisant la commande installgrub -m /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c0t2d0s3 En attendant la propagation de l'implémentation Solaris de l'UFS et de la VTOC à la version standard du GRUB, seule la version Solaris du GRUB fonctionne. 6. Initialisation réseau et clients sans disqueL'initialisation depuis un réseau exige généralement un serveur DHCP configuré pour les clients PXE et un serveur d'initialisation offrant le service TFTP. En l'absence d'un serveur PXE/DHCP disponible (ou si le BIOS ne contient pas le code PXE), il est possible de charger le GRUB à partir d'une disquette, d'un CD-ROM ou d'un disque local, de configurer le réseau manuellement dans le menu GRUB et d'initialiser le SE Solaris à partir d'un serveur de fichiers. Voir l'annexe B pour des informations plus détaillées. La configuration du serveur DHCP est une tâche spécifique au site qui relève de l'administrateur du réseau local. Voir le document Sun BluePrints, “Configuring JumpStart Servers to Provision Sun x86-64 Systems”: http://www.sun.com/blueprints/0205/819-1692.pdf. Pour initialiser le SE Solaris, le serveur DHCP doit répondre à la demande du BIOS PXE avec l'adresse IP du serveur de fichiers et le nom du fichier d'initialisation ( 6.1 Serveur d'installation réseau La commande Après l'exécution de 6.2. Clients sans disque La commande Après l'exécution de L'archive d'initialisation des clients sans disque est automatiquement mise à jour à l'arrêt du client. Si l'archive d'initialisation du client est périmée lors de l'arrêt du client, elle peut être mise à jour du côté serveur en utilisant : # bootadm update-archive -R /export/root/<hostname> Cette méthode fonctionne sur les serveurs sur plate-forme SPARC et x86 servant des clients x86. 7. Problèmes liés aux éléments hérités7.1 La partition d'initialisation Solaris x86 Pour les systèmes x86, la partition d'initialisation Solaris est une toute petite partition (environ 10 Mo) principale Avec les systèmes modernes, la partition d'initialisation est devenue inutile. A partir du SE Solaris 10 1/06, les utilisateurs n'ont plus l'option de créer une partition d'initialisation. Lors de la mise à niveau d'une ancienne version, une partition d'initialisation x86 peut être conservée pour maintenir le système amorçable sans intervention manuelle. Dans de tels cas, la partition d'initialisation x86 est montée au niveau 7.2 Pilotes en mode réel Avant le SE Solaris 10 1/06, les pilotes en mode réel étaient exécutés dans le cadre du processus d'initialisation. Il est possible que certains pilotes de noyau dépendent implicitement d'un pilote en mode réel correspondant pour placer le matériel dans un état spécifique. Les pilotes en mode réel ne faisant plus partie de l'initialisation GRUB, un tel pilote de noyau peut ne pas fonctionner correctement. Si vous rencontrez ce type de cas, signalez le problème au fournisseur du pilote afin de modifier le pilote de noyau. Annexe A. Bases GRUBCette annexe décrit les concepts de base du GRUB. Certains détails de cette annexe peuvent changer sans préavis. Consultez la documentation GRUB pour des informations plus détaillées. A.1 Nommage du périphérique L'objectif principal d'un chargeur de démarrage consiste à charger des données d'un périphérique de stockage dans la mémoire du système. Pour utiliser le GRUB, il est nécessaire de comprendre comment il nomme les périphériques. La disquette est nommée : (fd0) -- first, second floppy Le GRUB ne peut référencer qu'une seule interface réseau : (nd) -- network interface Il s'agit presque toujours de l'interface sondée par le BIOS et configurée via DHCP. Il est également possible de configurer une interface réseau en initialisant le GRUB à partir d'une disquette ou d'un autre support local (voir l'annexe B). Les noms des disques durs commencent par (hd0) -- first bios disk (also the BIOS boot disk 0x81) (hd1) -- second bios disk (BIOS disk 0x81) (hd0,1) -- first bios disk, second primary partition (hd0,0,a) -- first bios disk, first fdisk partition, Solaris/BSD slice 0 and 1 Sachez que la numérotation des disques par le BIOS peut changer lorsque la configuration du BIOS est modifiée. Par conséquent, le menu GRUB peut être invalidé si vous changez l'ordre du disque d'initialisation BIOS ou si vous modifiez la configuration du disque. Pour résoudre les problèmes liés à la renumérotation des disques dans le BIOS, il est essentiel de connaître les conventions de nommage des disques. A.2 Composants fonctionnels Le composants fonctionnels GRUB comprennent Notez que vous ne pouvez pas utiliser Le shell GRUB, bien que présent dans A.3 Le menu GRUB Le fichier de menu par défaut est default 0 timeout 10 serial --unit=0 --speed=9600 terminal serial #---------- ADDED BY BOOTADM - DO NOT EDIT ---------- title Solaris root (hd0,0,a) kernel /platform/i86pc/multiboot -B console=ttya module /platform/i86pc/boot_archive #---------------------END BOOTADM-------------------- #---------- ADDED BY BOOTADM - DO NOT EDIT ---------- title Solaris failsafe root (hd0,0,a) kernel /boot/multiboot -B console=ttya -s module /boot/x86.miniroot.safe #---------------------END BOOTADM--------------------
La ligne Pour spécifier explicitement un noyau 64 bits, modifiez la commande de noyau GRUB pour : kernel /platform/i86pc/multiboot kernel/amd64/unix De la même façon, la commande suivante initialise le noyau 32 bits : kernel /platform/i86pc/multiboot kernel/unix A.4 Mode commande GRUB Vous pouvez initialiser le SE en tapant les commandes à l'invite GRUB. Pour obtenir l'invite GRUB, appuyez sur 'c' dans le menu GRUB; Tapez 'help' pour obtenir la liste des commandes disponibles. Appuyez sur Echap pour revenir au menu. Vous pouvez aussi appuyer sur 'e' pour modifier une option de menu existante. Une fois la modification terminée, appuyez sur 'b' pour initialiser le système avec l'entrée GRUB modifiée. Annexe B. Déploiement en réseauCette annexe décrit les meilleures pratiques de déploiement du SE Solaris sur les plates-formes x86 via le réseau. Certains détails de cette annexe peuvent changer sans préavis. Consultez les pages du manuel et les documents d'administration de Solaris pour connaître les interfaces prises en charge. B.1 Vue d'ensemble du déploiement de Solaris en réseau L'idée de déployer le SE Solaris sur le réseau vise à placer les images du SE Solaris dans un emplacement centralisé. Toute machine connectée au réseau peut initialiser et installer la version choisie avec une intervention minime ou nulle de l'administrateur. Le processus d'installation peut même être effectué de façon pratique via le logiciel Solaris JumpStart. L'initialisation à partir du réseau nécessite généralement un serveur DHCP configuré pour les clients PXE et un serveur de fichiers offrant le service L'initialisation du SE Solaris en utilisant PXE fonctionne comme suit :
Dans un scénario de déploiement type, Dans les sections qui suivent, nous entrerons dans les détails de configuration du serveur DHCP, les exigences du client et plusieurs scénarios de déploiement. B.2 Le service DHCP Lorsqu'un client envoie une requête DHCP, le serveur est informé de l'identité du client (généralement son adresse Ethernet), de la "classe" de la requête et du sous-réseau dans lequel le client réside. Le serveur DHCP Solaris forme les macros basées sur les réponses correspondant aux requêtes du client :
La macro de classe est nommée par une "chaîne de classe" intégrée à la requête DHCP. Sur les plates-formes x86, le BIOS effectue toujours une requête DHCP avec la classe La macro de réseau est nommée par l'adresse IP du sous-réseau. Si une macro La macro IP est nommée par l'adresse IP. Elle est rarement utilisée dans le contexte d'initialisation du SE Solaris sur les plates-formes x86. La macro de client est nommée par le type de client (01 pour ether) et l'adresse MAC en lettres capitales. Pour un client dont l'adresse Ethernet est Imaginons que nous avons un client dans le sous-réseau Le serveur DHCP contient des macros correspondantes : - PXEClient BootSrvA: 129.146.87.194 BootFile: pxegrub - 129.146.87.0 Router: 129.146.87.1 NISdmain: sunsoft.eng.sun.com - 01000039FCF2EF BootFile: 01000039FCF2EF La réponse effective du DHCP est la suivante : BootSrvA: 129.146.87.194 BootFile: 01000039FCF2EF Router: 129.146.87.1 NISdmain: sunsoft.eng.sun.com
Notez que B.3. La configuration d'initialisation réseau la plus simple Vous devez disposer au strict minimum d'un serveur et d'un client. Le serveur doit comporter un serveur DHCP fonctionnel et disposer d'une image de distribution Solaris. La machine cliente est connectée au même sous-réseau que le serveur capable de prendre en charge une demande d'initialisation PXE. Voici des étapes de configuration du serveur, en supposant que l'adresse IP du serveur est a. Accédez au répertoire Tools de l'image de distribution Solaris et exécutez : # add_install_client -d -e 0:0:39:fc:f2:ef i86pc
b. Créez un nom de macro client BootSrvA: 192.168.0.123 BootFile: 01000039FCF2EF
Vous pouvez le faire à partir de l'IG Vous pouvez maintenant initialiser le client et installer le SE Solaris. B.4. Installation en réseau sans PXE/DHCP Il est possible de télécharger le GRUB à partir d'une disquette, d'un CD-ROM ou d'un disque local, de configurer le réseau manuellement dans le GRUB et de télécharger
Le grub> ifconfig --address=192.168.0.02 --gateway=192.168.0.1 --mask=255.255.255.0 --server=192.168.123.110 grub> root (nd) grub> kernel /multiboot.I86PC.Solaris_10-1 kernel/unix -B install_media=192.168.123.110:/export/setje/boot_74L2 grub> module /x86.miniroot grub> boot
Bien entendu, la commande N'oubliez pas d'éditer <format floppy> # mount -F pcfs /dev/diskette /mnt (you may have to disable vold prior to doing this) # cd /boot/grub # /sbin/installgrub stage1 stage2 /dev/rdiskette stage1 written to boot sector on floppy first 2 sectors of stage2 written on floppy
Editez
title Solaris
ifconfig --address=192.168.0.2 --gateway=192.168.0.1
--mask=255.255.255.0 --server=192.168.123.110
root (nd)
kernel /multiboot.I86PC.Solaris_11-1 kernel/unix -B
install_media=192.168.123.110:/export/setje/boot_74L2
module /x86.miniroot
B.5. Gestion de plusieurs images Solaris En présence de plusieurs images Solaris, il vous faut une méthode de sélection de la version ou construction à installer pour chaque client. Voici quelques possibilités pour ce faire.
Le cas (a) est la méthode de gestion standard du serveur d'initialisation. L'administrateur réseau effectue une seule configuration du service DHCP pour chaque client. Ensuite, l'utilisateur du client se connecte au serveur d'initialisation et exécute Le cas (b) nécessite d'utiliser l'option DHCP 150 pour fournir le fichier de menu GRUB. Lorsque l'utilisateur sélectionne une version/build pour un client, la configuration DHCP est modifiée pour définir l'option 150 dans le fichier de menu contenant la version/build sélectionnée. Notez que le fichier de menu pour chaque version/build doit être créé à priori sur le serveur d'initialisation. Si la version/build sélectionnée n'utilise pas
Le cas (c) ne fonctionne que pour les versions ou build basées sur B.6. Séquence de déploiement automatisée Le déploiement automatisé effectue souvent la séquence suivante :
A l'issue du déploiement, la machine reste en attente de l'action suivante. Dans la plupart des cas, l'initialisation réseau initiale peut être déclenchée manuellement en appuyant sur la touche F12 (ou une autre séquence de touches, selon la plate-forme). Toutefois, certains systèmes ne prennent pas en charge la redirection de console série BIOS, et il n'est pas raisonnable d'exiger la présence d'un utilisateur à la console physique. De plus, certains BIOS offrent un créneau temporel très court pour demander l'initialisation réseau, ce qui est inconfortable pour l'utilisateur. Une solution de contournement consiste à initialiser depuis la disquette vers le réseau, puis à réécrire la disquette pour initialiser le disque. Cette méthode n'est plus viable car les plates-formes les plus récentes ne sont plus livrées avec des lecteurs de disquette. Nous recommandons de charger le GRUB depuis le disque. Ajoutez l'entrée de menu suivante dans # bootadm set-menu default=<menu_entry_number> où
title Solaris Jumpstart
dhcp
root (nd)
kernel .../multiboot kernel/unix - install -B console=...
module ../x86.miniroot
Une fois le système installé, l'entrée par défaut B.7. Dépannage Qu'advient-il si cela ne fonctionne pas ? Voici quelques conseils de dépannage. a. Le client s'initialise directement du disque sans tenter d'initialisation réseau. Cela signifie généralement que le client PXE ROM est désactivé ou que le BIOS est configuré pour initialisation depuis le disque avant le réseau. Pour résoudre ce problème, accédez au BIOS et modifiez la configuration. Les détails varient selon la machine. b. Le client tente l'initialisation réseau, mais n'obtient pas de réponse. Effectuez les vérifications habituelles de câbles réseau, témoins DEL (le cas échéant) sur la carte réseau, et ainsi de suite. Exécutez # snoop -v [-d <interface>] 0:0:39:fc:f2:ef
où
S'il n'y a pas de message Si vous voyez le paquet PXEClient:Arch:00000:UNDI:002001 c. Le client affiche un message de délai d'attente TFTP. Ceci peut arriver lorsque le service d. Le client se fige au milieu du téléchargement de Le protocole TFTP peut transférer des blocs jusqu'à 65K. Certains serveurs Si le serveur exécute le SE Solaris 8, vous pouvez copier e. Le client termine le téléchargement de Il est probable que la sortie de la console soit allée ailleurs. Vérifiez que la variable f. Le client affiche le message "No ethernet card found" (carte Ethernet introuvable). Ceci peut se produire en initialisant le GRUB depuis un support local et en chargeant le SE Solaris depuis le réseau. C'est une indication que le GRUB ne trouve pas d'interface réseau utilisant le service PCI BIOS32. g. Le client affiche le message "No PnPBios found" (PnPBios introuvable). Ceci peut se produire en initialisant le GRUB depuis un support local et en chargeant le SE Solaris depuis le réseau. Dans ce cas, le GRUB a localisé l'interface réseau, mais n'a pas réussi à localiser le service PnP Bios pour installer UNDI ROM à partir de la carte d'interface réseau. Références
Comments (latest comments first)Discuss and comment on this resource in the BigAdmin Wiki
Unless otherwise licensed, code in all technical manuals herein (including articles, FAQs, samples) is provided under this License. |
BigAdmin SubscriptionsBigAdmin Areas
BigAdmin Sun Center
BigAdmin Topics | ||||