LinuxPedia

Wiki libre et indépendant dédié à GNU-Linux et BSD.

Outils pour utilisateurs

Outils du site


expert:creer_une_disquette_ou_un_cd_grub_bootable

*Source : “Les recettes linux de Tyrtamos”*

Créer une disquette ou un CD grub bootable

Créer une disquette grub bootable

Créer la disquette à partir de l'image téléchargée

Si vous n'avez pas la possibilité de créer vous-même la disquette grub bootable avec le grub d'un linux, vous pouvez la télécharger ici.

La version formatée dos-fat vous permet de modifier les fichiers de configuration de grub sous windows:

  • Disquette grub bootable formatée dos-fat

La version formatée ext2 nécessite que vous ayez un linux pour créer et modifier les fichiers de configuration, mais un live-cd devrait convenir. Sinon, vous pouvez toujours utiliser le shell grub:

  • Disquette grub bootable formatée ext2

Une fois l'image téléchargée, vous devez créer la disquette de la façon suivante:

Sous windows:

Windows ne permet pas d'origine de manipuler des images de disquette. Rappelez-vous que l'image doit comporter la partie bootable, ce que la simple copie des fichiers ne le permet pas. Il faut alors utiliser le programme “Floppy Image.exe” trouvé ici: http://www.woundedmoon.org/win32/floppyimage.html

Avec une disquette libre de 1440 Ko dans le lecteur, vous utilisez la fonction “write floppy”, vous désignez l'emplacement de l'image, vous faites start, et c'est fini: vous avez votre disquette grub bootable.

Si vous la booter telle quelle, vous obtenez le shell grub qui vous permet de lancer ce que vous voulez (voir le manuel grub).

Sinon, il ne vous reste plus qu'à créer avant les fichiers texte “a:\boot\grub\device.map” et “a:\boot\grub\menu.lst” de la disquette comme c'est dit plus loin (en fonction de ce que vous voulez en faire).

Sous linux:

Vous utilisez l'image formatée en ext2. Si l'image téléchargée est dans /chemin/floppygrubext2.img, on obtient la disquette par:

dd if=/chemin/floppygrubext2.img of=/dev/fd0

Si la disquette n'est pas montée automatiquement dans /media/floppy, vous le faites “à la main” comme suit:

mkdir /media/floppy
mount -t ext2 /dev/fd0 /media/floppy

Il ne reste plus qu'à créer les fichiers texte ”/media/floppy/boot/grub/device.map” et ”/media/floppy/boot/grub/menu.lst” de la disquette montée, comme c'est dit plus loin (en fonction de ce que vous voulez en faire), et vous avez votre disquette grub bootable!

Créer la disquette grub avec le grub d'un linux

NB: ici, on n'est pas obligatoirement sous la suse! On pourrait aussi bien préparer cette disquette sous debian avec le grub de debian.

On formate la disquette en “DOS” ou en “ext2” avec KFloppy sous kde. Si vous voulez formater en console, faites:

fdformat /dev/fd0u1440

Ceci pour le formatage en dos (fat pour windows) d'une disquette 1440Ko

⇒ vérifier si c'est ce que vous avez dans /dev, car c'est marqué ”/dev/fd0h1440” dans la page man

Et pour le formatage en ext2:

mke2fs /dev/fd0

J'ai pu vérifier que ça marchait avec un formatage dos, l'avantage étant que la modif des fichiers de config de grub devient possible sous windows. Mais le formatage dos ne respecte pas les droits linux affectés à chaque fichier et à chaque répertoire, et il ne faut l'utiliser que si c'est vraiment nécessaire.

Avec la suse, le montage de la disquette est automatique. Si ce n'est pas le cas chez vous:

mkdir /media/floppy
mount -t auto /dev/fd0 /media/floppy

On crée les répertoires nécessaires /boot et /boot/grub avec konqueror. En console,ça donne (le ”-p” permet de créer en même temps /boot et /boot/grub):

mkdir -p /media/floppy/boot/grub

On copie les 2 fichiers stage1 et stage2 de grub dans /media/floppy/boot/grub avec konqueror. En console, ça fait:

cp -a /boot/grub/stage? /media/floppy/boot/grub>/code>

NB: les stage1 et 2 de grub se trouvent aussi, pour la suse, dans: /usr/lib/grub/

Il faudrait en principe démonter la disquette, mais avec la suse et son système de montage automatique, j'ai pu constater que ça marchait sans cela. Sinon:

<code>umount /media/floppy

Il faut ensuite préparer la disquette en utilisant le shell grub du linux en fonctionnement (en console sous root):

grub
> root (fd0)
> setup (fd0)
> quit

Si vous n'avez pas de message d'erreur fatale, c'est fait: vous avez votre “disquette grub bootable”

Sauvegarde et restauration de la disquette

Ne vous contentez pas des commandes de copie habituelles, tant sous windows que sous linux, parce qu'elles ne copient pas habituellement la partie qui rend la disquette “bootable” (l'amorce de boot). Sous windows, utilisez “Floppy Image.exe” cité plus haut. Sous linux, utilisez ce qui suit.

Si vous voulez sauvegarger l'mage de la disquette pour pouvoir en refaire une facilement, vous faites en console (ajustez le ”/chemin/”):

dd if=/dev/fd0 of=/chemin/floppygrub.img

Et si vous voulez en refabriquer une autre, vous faites avec une disquette libre dans le lecteur:

dd if=/chemin/floppygrub.img of=/dev/fd0

La suse accepte les 2 commandes sans plus de précision. Si ça ne suffit pas avec un autre linux, vous ajoutez ” bs=10k count=144” à la ligne de commande (séparé par des espaces).

Utilisation: lancer un linux déjà installé

Il suffit de mettre dans le /boot/grub de la disquette (c'est à dire dans /media/floppy/boot/grub de la disquette montée) le contenu des fichiers /boot/grub/device.map et /boot/grub/menu.lst du linux installé sur le disque dur.

  • Si votre disquette est en ext2, vous devez le faire sous linux (y compris avec un livecd), tant pour lire les fichiers du linux installé, que pour écrire sur la disquette.
  • Si votre disquette est en dos-fat, vous pouvez le faire sous windows, à condition d'avoir intallé le programme qui permet de lire l'ext2 du disque dur pour avoir les fichiers de config grub du linux installé (je ne connais pas de solution pour les autres formatages).
  • Mais pouvez aussi démarrer le linux installé avec le cd d'installation, afin de pouvoir lire les 2 fichiers grub, et de les recopier ensuite sur la disquette.

Autre solution: pendant l'installation du linux, ou après (par exemple avec le yast de la suse), vous avez placé l'amorce de boot de grub au début de la partition de linux (et pas au début du disque = mbr). Vous pouvez alors démarrer le linux de la même façon que windows, en utilisant par exemple “chainloader (hd0,4)+1” (si la partition linux est /dev/hda5).

Dernière solution: vous utilisez le shell grub pour lancer le linux installé “à la main”. Et dans ce cas, il est plus simple d'utiliser chainloader (n'oubliez pas le “boot” qui est nécessaire pour lancer le “chainloader (hd0,4)+1” avec le shell grub). Toujours dans ce cas, vous vous facilitez la vie si vous intégrez les commandes nécessaires dans menu.lst pour avoir un shell grub en “azerty”: voir la page “astuces grub”.

Utilisation: lancer l'installation sans lecteur de cd-dvd bootable

On va décrire ici comment on lance le programme d'installation avec une disquette grub bootable:

  • quand on a un lecteur de cd-dvd non bootable (il suffit que le lecteur soit reconnu par grub)
  • ou pire encore, quand on n'a pas de lecteur cd-dvd du tout, auquel cas, il faut copier le cd-dvd d'installation sur le disque dur.

Tout ceci concerne de la même manière l'opensuse, l'eval, ou la suse linux “boîte”. Mais si on doit charger le programme d'installation sur disque dur, il faut utiliser la version “dvd” pour ne pas avoir à gérer le changement de cd. De plus, pour la version “boîte”, le dvd est plus complet que la somme des cd.

Je n'ai pas traité ici les cas déjà prévus au manuel suse (manuel suse: voir liens utiles) ni sur la page aliowiki http://wiki.alionet.org/doku.php?id=suse9.2 qui traite (entr'autres) de la construction de disquettes bootables avec rawrite sous dos ou windows. La solution proposée ici est possible à partir de windows, et de n'importe quel linux utilisant grub (j'ai essayé avec ubuntu). Avantage supplémentaire, la disquette grub bootable, y compris celle formatée msdos (fat), peut lancer n'importe quoi: le programme d'installation, un linux quelconque, windows, un autre système d'exploitation inconnu, etc… Je n'ai pas traité non plus le cas possible d'un disque dur démonté, monté provisoirement sur un autre pc pour l'installation, et rapatrié ensuite.

Dans la mesure où vous n'avez pas de lecteur cd ou dvd, vous pouvez lancer le programme d'installation (contenu du dvd d'install par exemple) copié auparavant sur le disque dur par un moyen de votre choix (téléchargement web, chargement par clé usb ou carte mémoire dans lecteur usb, chargement par liaison directe ou par réseau avec un autre pc, chargement par montage du disque dur sur un autre pc, etc…). Par exemple, il existe maintenant des boitiers de raccordement (env. 50 Euros) permettant de brancher en usb un disque dur interne IDE démonté. Bien entendu, la partition sur laquelle vous avez copié le programme d'installation n'est pas une partition utilisée dans l'installation!

Il faut ensuite configurer le grub de la disquette, afin que celle-ci puisse lancer l'installation. Rappelons que vous pouvez avoir fait une disquette grub bootable formatée en msdos (fat pour windows), auquel cas les modifs suivantes peuvent se faire sous windows!

Sous linux, si vous aviez démonté la disquette avant, il faut la remonter (mais rappel: sur la suse, la disquette est montée automatiquement):

mount -t auto /dev/fd0 /media/floppy

Ajouter un fichier texte appelé ”/media/floppy/boot/grub/device.map”, et contenant les correspondances entre le nommage grub des disques et le nommage linux (mais j'ai essayé sans ce fichier et ça marche quand même chez moi):

(hd0) /dev/hda
(hd1) /dev/hdb
(fd0) /dev/fd0

Info supplémentaire sur ce sujet. Si vous voulez savoir à quel disque physique correspond (hd0), (hd1), etc… de grub, sans avoir le fichier device.map, c'est facile en utilisant le shell grub:

  • Faites “root (” à l'invite du shell grub, et tapez une tabulation. le shell grub vous donne en réponse les disques qu'il a reconnu. Attention, il ne reconnait un lecteur cd que s'il y a un cd dedans: c'est important si vous voulez démarrer le cd d'installation dans un lecteur cd non-bootable.
  • Choisissez un disque, (hd1) par exemple, et tapez “root (hd1,” et tapez une tabulation. Le shell grub vous donne alors la liste des partitions de ce disque.
  • Si ça ne suffit pas, faites “geometry (hd1)” et le shell grub vous donnera toutes les infos du disque dur (hd1). A vous de reconnaître le disque (hd1) parmi vos disques.

Vous pouvez ainsi construire votre device.map, ou, si vous travaillez directement avec le shell grub, d'utiliser la fonction “device (hd1) /dev/hdb” par exemple pour établir la correspondance à la main. Dans le cas où la correspondance entre le (hd1) et le /dev/hdb est faite, l'instruction “geometry (hd1)” rappelle aussi le ”/dev/hdb” dans ses résultats.

Ajouter un fichier texte appelé /media/floppy/boot/grub/menu.lst, et contenant:

default 0
timeout 8
title installation suse 10.0 sans lecteur cd-dvd bootable
root (hd0,2)
kernel /boot/loader/linux root=/dev/hda3 splash=silent showopts
initrd /boot/loader/initrd

Ceci en supposant que le programme d'installation a été copié sur la 3ème partition du 1er disque dur interne IDE ((hd0,2) pour grub, /dev/hda3 pour linux). Corrigez si nécessaire. Si vous lancez le programme d'installation sur le cd placé dans un lecteur non bootable, ajustez les noms de disque: par exemple (hd2) correspondant à /dev/hdc si votre lecteur est placé en maître sur la 2ème nappe IDE sur la carte mère.

Quand à /boot/loader/linux et /boot/loader/initrd, ils correspondent aux 2 fichiers du dvd d'install qu'il faut lancer pour lancer l'installation de la suse.

Voilà, c'est fait: vous pouvez lancer l'installation de votre suse sans lecteur de cd-dvd bootable!

Voici comment démarre l'installation à partir du boot de la disquette ainsi préparée:

  • menu installation
  • —> “make sure that CD number 1 is in your drive” —> répondre “yes” (alors que c'est faux si le programme est copié sur le disque dur!)
  • —> “erreur” ⇒ “active manual setup”
  • choix de la langue
  • choix du clavier
  • démarrer l'installation
  • sélectionner support source —> choisir “disque dur”
  • choisir la partition du disque dur —> hda3 (par exemple; c'est ici la partition du programme d'installation et non celle sur laquelle on installera linux!)
  • nom du répertoire source —> ”/” (à adapter si nécessaire: si vous avez copié le dvd d'install dans un répertoire /dvdinstall, il faut donner ce répertoire).
  • et l'installation se poursuit comme d'habitude.

Créer un CD grub bootable

La réalisation d'un cd bootable passe en général par “isolinux”. Mais il est aussi possible de faire un cd bootable avec grub.

Grub supporte le “no emulation mode” de la spécification 1 de El Torito. Cela veut dire que vous pouvez utiliser tout le cd à partir de grub, sans passer par une image de floppy ou de disque dur.

Pour booter sur un cd, grub utilise un stage 2 spécial appelé “stage2_eltorito”. Vous n'avez pas besoin de stage1.

Créez d'abord un répertoire dans lequel on va construire l'image du cd (en console sous root):

mkdir /media/cdiso

Créez le répertoire boot et boot/grub:

mkdir -p /media/cdiso/boot/grub

Copiez le fichier stage2_eltorito:

cp /usr/lib/grub/stage2_eltorito /media/cdiso/boot/grub

Si vous le souhaitez, vous pouvez intégrer les fichiers de configuration de grub device.map et menu.lst dans /media/cdiso/boot/grub, et intégrer tout ce que vous voulez sur ce cd.

Enfin, il faut créer une image iso du cd afin de pouvoir le graver:

mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o /chemin/cdgrub.iso /media/cdiso

Vous récupérez l'image iso dans /chemin/cdgrub.iso (/chemin/ doit exister avant!), et vous pouvez la graver avec la méthode habituelle (par exemple nero sous windows, ou k3b sous linux-kde).

A noter que si vous booter sur ce cd, vous pouvez faire référence à ce cd sous grub (dans device.map, menu.lst, ou sous le shell grub) avec ”(cd)”.

Utilisation possible: lancer un ou plusieurs linux installé(s) sans toucher à windows (même pas au multiboot de windows).

expert/creer_une_disquette_ou_un_cd_grub_bootable.txt · Dernière modification : 2018/11/17 12:53 de 127.0.0.1