Jai une boîte virtuelle fonctionnant avec CentOS.

Jai attaché un nouveau disque virtuel à la VM CentOS existante et je « m jessaye maintenant dinstaller GRUB sur ce disque nouvellement attaché.

Plus tard, jouvrirai une deuxième VM avec un disque dur de démarrage nouvellement préparé avec un système de fichiers racine et un noyau personnalisés.

I ont essayé les étapes suivantes:

  • Jai attaché un nouveau disque virtuel à la machine CentOS existante.
  • Créé une nouvelle partition avec fdisk /dev/sdb. Lors du partitionnement, jai choisi les options partition primaire, partition numéro 1 et autres options par défaut.
  • Formaté le disque avec mkfs.ext3 /dev/sdb1.
  • Monté le disque sur /media/new_drive.
  • Installation de GRUB grub-install /dev/sdb1 --root-directory=/media/new_drive/.

Après cela, la deuxième VM avec le disque dur nouvellement préparé na pas démarré; Jai eu lerreur: could not read from the boot medium. Il semble que le MBR ne soit pas mis à jour après grub-install, mais je peux voir GRUB installé sous /boot/grub sur le nouveau lecteur.

Mais le pire, cest quil a corrompu mon CentOS GRUB existant: La VM CentOS se bloque et affiche un écran noir avec le seul texte étant GRUB.

Pourquoi grub-install /dev/sdb1 ne modifie-t-il pas le MBR de sdb1? Nest-ce pas la bonne façon dinstaller GRUB sur un nouveau lecteur?

Commentaires

  • /dev/sdb1 ne lest pas là où le BIOS recherche le MBR, il ‘ se trouve dans /dev/sdb cest-à-dire le tout premier secteur du disque.
  • voulez-vous dire que je dois utiliser grub-install /dev/sdb --root-directory=/media/new_drive/ à la place sdb1
  • oui, cest exactement ce que @wurtel signifie
  • Oui. En supposant que vous ‘ avez placé un système de fichiers racine approprié à cet emplacement (je ne vois ‘ que létape mentionnée entre le montage et lexécution de grub -install).
  • Je vais essayer avec / dev / sdb, ouais je nai pas ‘ atteindre jusquà la mise en place du système de fichiers racine, jai pensé que je vais dabord essayer de montrer up grub screen.

Answer

Je « ne suis pas un expert de grub2 (désolé) mais essayez dajouter --skip-fs-probe à votre ligne grub-install, jai trouvé que cela empêche la création de /boot/grub/device.map qui peut provoquer le démarrage à une invite grub. Je pense que sans cela paramètre grub-install, au lieu de faire ce que vous lui dites, pense quil est plus intelligent que vous, et peut faire quelque chose de différent.

Une autre chose est dêtre sûr que vous utilisez le bon grub-install (cest-à-dire pour grub2 et pas pour grub dorigine). Ce nest pas un problème si vous êtes à lintérieur de Centos mais avec SystemRecoveryCD les deux versions sont disponibles et vous devez donc utiliser grub2-install. Jai appris à la dure …

Et comme @wurtel la souligné (bravo), vous devez spécifier un lecteur et non une partition. Grub2 installe dans le secteur 0 du lecteur de disque entier, et ce « stub » est ce qui sexécute au moment du démarrage, mais il doit savoir où se trouve le disque, il doit installer les fichiers pour la prochaine étape de démarrage – cest ce que le --root-directory est pour. (Je pense.)

Lire man grub-install et googler je vois que --root-directory nest pas vraiment destiné à être utilisé pour grub2 versions 1.99 ++, bien que cela fonctionne selon mon expérience. Vous êtes censé utiliser --boot-directory et faire référence au répertoire de démarrage réel, donc cela vous donnerait:

grub-install /dev/sdb --skip-fs-probe --boot-directory=/media/new_drive/boot 

Commentaires

  • Ma première tentative sest déroulée sans partitionnement ni formatage grub-install /dev/sdb mais cela a donné une erreur. Plus tard, jai essayé avec un disque partitionné et formaté, avec un disque formaté que jutilisais toujours / dev / sdb1, jessaierai avec –skip-fs-probe
  • @Renjith oh et le répertoire racine devrait faire référence à le point de montage monté lorsque vous exécutez grub-install, vous devez donc monter la partition sur le nouveau lecteur, par exemple à /mnt/sys2, puis dans votre ligne grub-install, spécifiez --root-directory=/mnt/sys2. Cela ‘ est contre-intuitif (comme beaucoup de trucs de grub je pense) mais cest ‘ comment cela fonctionne.
  • jai quelque peu modifié ma réponse …
  • Le grub que jutilise actuellement 0.97, ce qui ‘ t prend en charge –skip-fs-probe . mais sans cela, cela a fonctionné. sdb1 était lerreur.
  • ok heureux que vous layez résolu, cest lancien grub pas le plus récent ‘ brillant ‘ grub2. Je nai ‘ pas réalisé que RedHat était si lent à passer à grub2. CentOS 7 utilise grub2 mais CentOS 6 (et versions antérieures) utilise grub.

Réponse

Voici comment jai déplacé une installation Debian constituée dune partition de démarrage /boot et une partition racine / sur un nouveau lecteur et lont rendu amorçable à laide de GNU GRUB :

Cloner des partitions

  • En utilisant le CD live GParted , créez la partition de démarrage et racine sur le nouveau
  • À laide dune console racine dans GParted, montez lancienne partition de démarrage (disons-le /dev/sda1) et la nouvelle partition (/dev/sdb1): mount /dev/sda1 /mnt/oldBoot && mount /dev/sdb1 /mnt/newBoot
  • Copiez les données de lancienne partition de démarrage vers la nouvelle: cp -afv /mnt/oldBoot /mnt/newBoot. Explication de cp -afv:
    • a signifie  » archive  » ce qui signifie:
      • ne pas déréférencer les liens
      • copier récursivement (comme -R)
      • conserver tous les attributs (horodatage, propriétaire, autorisation)
    • f: forcer, si un fichier de destination existant ne peut pas être ouvert, supprimez-le et réessayez
    • v: verbeux, expliquez ce qui est fait
  • Cela générera une sortie sur votre console vous indiquant quel fichier est actuellement copié et si cp progresse
  • Montez et copiez les fichiers de votre ancienne partition racine vers la nouvelle:
    • Par sécurité: umount /mnt/oldBoot && umount /mnt/newBoot
    • Montez lancienne et la nouvelle partition racine (en supposant quelle « s /dev/sda2 et /dev/sdb2): mount /dev/sda2 /mnt/oldRoot && mount /dev/sdb2 /mnt/newRoot
    • Copiez les données a de lancienne partition racine vers la nouvelle partition racine: cp -afv /mnt/oldRoot /mnt/newRoot
  • Modifiez le table du système de fichiers qui définit quelles partitions sont montées au démarrage (jutiliserai Vim pour cela):
    • vi /etc/fstab

    • Vous remarquerez que vos anciennes partitions sont référencées ici. Utilisez plutôt les UUID des nouvelles partitions

    • Vous pouvez insérer temporairement tous les UUID dans fstab pour faciliter le copier-coller avec :r !blkid

    • Utilisez les UUID de vos nouvelles partitions pour changer les entrées dans fstab. Ils devraient ressembler à ceci:

       `# <file system> <mount point> <type> <options> <dump> <pass> # Root partition UUID=76fd1ffd-fb96-4ab4-be1a-42f8e9223983 / ext4 errors=remount-ro 0 1 # Boot partition UUID=e560e29e-8752-4b83-b1ee-4b86c0009f0b /boot ext2 defaults 0 2` 
      • Supprimez la sortie de blkid de fstab que vous avez inséré plus tôt avec :r !blkid

Installer GRUB

  • Montez les systèmes de fichiers virtuels du live CD GParted:

    mount --bind /dev /mnt/newRoot/dev mount --bind /proc /mnt/newRoot/proc mount --bind /sys /mnt/newRoot/sys

  • Créer les utilitaires GRUB du live CD GParted disponibles sur la partition racine: mount --bind /usr/ /mnt/newRoot/usr

  • Montez la partition de démarrage sur la partition racine depuis GRUB stockera sa configuration dans /boot: mount /dev/sdb1 /mnt/newRoot/boot

  • Utilisez chroot /mnt/newRoot pour faire de la nouvelle partition racine temporairement la racine du système de fichiers

  • Créez un fichier de configuration GRUB à /boot/grub/grub.cfg en utilisant update-grub2

  • Installez GRUB sur le nouveau lecteur: grub-install /dev/sdb. Vous ne devez pas « t spécifier de numéro de partition ici

  • Revenir au système de fichiers du live CD GParted: exit

  • Démonter les partitions: umount /mnt/newRoot/*

  • Arrêter la machine

  • Si plusieurs lecteurs sont connectés, assurez-vous que le lecteur le plus récent vient en premier dans lordre de démarrage

  • Démarrer la machine

Ces instructions sont inspirées de celles de oaktreepeak.com .

Vous pouvez également donner Clonezilla a essayer datteindre la même chose.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *