web-dev-qa-db-fra.com

grub-install échoue après la mise à niveau de 12.04 à 14.04 (grub-pc est cassé)

Je viens de mettre à jour Ubuntu 12.04 vers 14.04, mais lors de l'installation, grub-install a échoué:

enter image description here

enter image description here

J'ai continué l'installation et espérais régler le problème après. Cependant, j'ai rencontré quelques difficultés. Je n'ai pas redémarré mon système, car je crains qu'il ne puisse pas redémarrer.

C'est l'erreur que j'obtiens toujours lors de l'installation de grub:

 $ Sudo grub-install /dev/mapper/isw_cjccfdbihf_Volume0p1 
 Installing for i386-pc platform.
 grub-install: error: cannot find a GRUB drive for /dev/mapper/isw_cjccfdbihf_Volume0p1.  Check your device.map.

(J'ai aussi essayé Sudo grub-install /dev/sda mais il échoue également avec le même message d'erreur.)

La machine semble utiliser une configuration RAID 1. Voici quelques informations:

$ ls -algh /dev/mapper/
total 0
drwxr-xr-x  2 root     120 Aug 12 19:41 .
drwxr-xr-x 16 root    5.2K Aug 12 20:27 ..
crw-------  1 root 10, 236 Jul 28 10:30 control
lrwxrwxrwx  1 root       7 Aug 12 19:41 isw_cjccfdbihf_Volume0p1 -> ../dm-1
lrwxrwxrwx  1 root       7 Aug 12 19:41 isw_cjccfdbihf_Volume0p2 -> ../dm-2
lrwxrwxrwx  1 root       7 Aug 12 19:41 isw_cjccfdbihf_Volume0p5 -> ../dm-3

$ Sudo grub-probe -t device /boot/grub
/dev/mapper/isw_cjccfdbihf_Volume0p1

$ Sudo fdisk -l

Disk /dev/sda: 250.1 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders, total 488397168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0003b681

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048   468514815   234256384   83  Linux
/dev/sda2       468516862   488390655     9936897    5  Extended
/dev/sda5       468516864   488390655     9936896   82  Linux swap / Solaris

Disk /dev/sdb: 250.1 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders, total 488397168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0003b681

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048   468514815   234256384   83  Linux
/dev/sdb2       468516862   488390655     9936897    5  Extended
/dev/sdb5       468516864   488390655     9936896   82  Linux swap / Solaris

Disk /dev/mapper/isw_cjccfdbihf_Volume0p1: 239.9 GB, 239878537216 bytes
255 heads, 63 sectors/track, 29163 cylinders, total 468512768 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/mapper/isw_cjccfdbihf_Volume0p1 doesn't contain a valid partition table
fdisk: unable to read /dev/mapper/isw_cjccfdbihf_Volume0p2: Inappropriate ioctl for device

Surtout, les deux dernières lignes semblent indiquer un problème plus profond. :

Le message d'erreur de grub-install mentionne également un fichier device.map.

$ cat /boot/grub/device.map
cat: /boot/grub/device.map: No such file or directory

J'ai essayé de le générer mais cela n'a pas aidé non plus (le message d'erreur n'a pas changé):

$ Sudo grub-mkdevicemap
$ cat /boot/grub/device.map
 (hd0)  /dev/disk/by-id/ata-WDC_WD2500AAJS-00YZCA0_WD-WCAYU7549707
 (hd1)  /dev/disk/by-id/ata-WDC_WD2500AAJS-00YZCA0_WD-WCAYU7501473

Avez-vous des recommandations sur ce que je devrais essayer ensuite? Toute aide est très appréciée.

--- (Mise à jour:

$ debconf-show grub-pc
debconf: DbDriver "passwords" warning: could not open /var/cache/debconf    /passwords.dat: Permission denied
* grub-pc/install_devices: /dev/disk/by-id/dm-name-isw_cjccfdbihf_Volume0
  grub-pc/kopt_extracted: false
  grub-pc/partition_description:
* grub2/linux_cmdline:
  grub-pc/install_devices_empty: false
  grub-pc/timeout: 10
  grub-pc/install_devices_failed_upgrade: true
* grub2/linux_cmdline_default: quiet splash
  grub-pc/postrm_purge_boot_grub: false
  grub-pc/hidden_timeout: true
  grub-pc/disk_description:
  grub-pc/mixed_legacy_and_grub2: true
  grub2/kfreebsd_cmdline_default: quiet splash
  grub2/device_map_regenerated:
* grub-pc/install_devices_failed: true
  grub-pc/chainload_from_menu.lst: true
  grub-pc/install_devices_disks_changed:
  grub2/kfreebsd_cmdline:

Notez la ligne: grub-pc/install_devices: /dev/disk/by-id/dm-name-isw_cjccfdbihf_Volume0

Maintenant le contenu de /etc/fstab:

proc            /proc           proc    nodev,noexec,nosuid 0       0
/dev/mapper/isw_cjccfdbihf_Volume01 /               ext4    errors=remount-ro 0       1
/dev/mapper/isw_cjccfdbihf_Volume0p5 none            swap    sw              0       0

Un fichier de sauvegarde de 2012 indique des entrées légèrement différentes pour swap (Volume05 au lieu de Volume0p5), ce qui indique que les noms auraient pu être modifiés:

 # Note that this is an old file at the time the system was installed (Ubuntu 10.04 or 10.10)
 # (This is also the time from which the original grub configuration is from, isn't it?!)
 /dev/mapper/isw_cjccfdbihf_Volume01 /               ext4    errors=remount-ro 0       1
 /dev/mapper/isw_cjccfdbihf_Volume05 none            swap    sw              0       0

Donc, cela a peut-être quelque chose à voir avec "_Volume01" vs "_Volume0p1" vs "_Volume0". /etc/fstab dit "01", ls /dev/mapper renvoie les mappages "0p1", "0p2" et "0p5" (swap), et finalement debconf-show grub-pc dit "Volume0". Je pense que cette incohérence est la racine du problème.

Maintenant je me demande:

  1. Quelle doit être la ligne grub-pc/install_devices dans la sortie de debconf-show grub-pc?
  2. Comment puis-je modifier les paramètres Grub afin de pouvoir expérimenter différentes valeurs?

J'ai aussi remarqué que l'installation de grub-pc est cassée:

$ Sudo dpkg-reconfigure grub-pc
/usr/sbin/dpkg-reconfigure: grub-pc is broken or not fully installed
3
Philipp Claßen

Voici comment j'ai résolu le problème:

Dans un moment calme, j'ai eu le temps de risquer des temps d'arrêt. J'ai donc redémarré le système avec un Live CD Ubuntu 14.04 et réinstallé Grub. Je n'ai pas rencontré de problèmes et ensuite, le système a démarré normalement.

Voici une description générale: https://help.ubuntu.com/community/Grub2/Installing#via_the_LiveCD_terminal

De mémoire, voici les commandes que j'ai utilisées dans mon cas particulier:

Démarrez à partir de Live CD et exécutez les commandes suivantes:

 $ Sudo su
 $ mount /dev/mapper/isw_cjccfdbihf_Volume0p1 /mnt

 (Sorry, I'm not 100% sure whether the target was /dev/mapper/isw_cjccfdbihf_Volume0p1 or
  /dev/sda. I think it was /dev/mapper/isw_cjccfdbihf_Volume0p1.)
 $ grub-install --root-directory=/mnt /dev/mapper/isw_cjccfdbihf_Volume0p1
 $ reboot

Après cela, le système a redémarré. Enfin, je pourrais terminer l’installation endommagée avec Sudo apt-get install.

Pour le moment, /etc/fstab répertorie toujours /dev/mapper/isw_cjccfdbihf_Volume01 pour le répertoire racine. Je ne sais toujours pas si c'est vraiment correct, mais je n'ai pas essayé de le changer en /dev/mapper/isw_cjccfdbihf_Volume0p1 pour savoir s'il fonctionne toujours après un redémarrage.

3
Philipp Claßen

L'installation de grub2 dans une configuration RAID échoue, car la dénomination des périphériques est modifiée d'une manière ou d'une autre avec la mise à jour, mais le système d'exécution non encore redémarré utilise un schéma de dénomination différent.

Il suffit d'annuler l'installation de grub en cas d'échec et de redémarrer. Le grub précédemment installé pointe toujours sur un noyau valide et peut démarrer sans aucun problème. Après le redémarrage, grub s'installe sans aucun problème.

3
Peter Häring

Brillant. J'ai dû modifier une seule chose pour éviter cette erreur lors de l'exécution de la commande grub-install:

/usr/bin/grub-bios-setup: warning: Embedding is not possible. GRUB
can only be installed in this setup by using blocklists. However,
blocklists are UNRELIABLE and their use is discouraged..
/usr/bin/grub-bios-setup: error: will not proceed with blocklists.

En utilisant vos commandes ci-dessus, j'ai changé la commande grub-install pour installer GRUB sur le MBR au lieu de la partition de la manière suivante (en supprimant le 'p1'):

$ grub-install --root-directory=/mnt /dev/mapper/isw_cjccfdbihf_Volume0

Sinon, ça m'a vraiment épargné le dos et beaucoup de chagrin. Je suis très reconnaissant.

1
Kirtlander

Aucune des réponses ne fonctionnant pour moi, j'ai donc redémarré et utilisé le Boot Repair Disk pour résoudre le problème. Cela a fonctionné. Ouf...!

0
Josh B