grub-install falha após a atualização de 12.04 para 14.04 (o grub-pc está quebrado)

3

Acabei de atualizar do Ubuntu 12.04 para o 14.04, mas durante a instalação o grub-install falhou:

Eu continuei com a instalação e esperei consertar o problema do grub depois. No entanto, me deparei com algumas dificuldades. Eu não reiniciei meu sistema, pois temo que ele não possa ser reinicializado.

Este é o erro que eu sempre tento instalar o 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.

(Eu também tentei sudo grub-install /dev/sda , mas ele também falha com a mesma mensagem de erro).

A máquina parece usar uma configuração RAID 1. Aqui estão algumas informações:

$ 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

Especialmente, as duas últimas linhas parecem indicar um problema mais profundo. : - (

A mensagem de erro grub-install também menciona um arquivo device.map.

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

Eu tentei gerá-lo, mas também não ajudou (a mensagem de erro não foi alterada):

$ 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

Você tem alguma recomendação sobre o que devo experimentar em seguida? Qualquer ajuda é profundamente apreciada.

Atualização:

$ 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:

Anote a linha: grub-pc/install_devices: /dev/disk/by-id/dm-name-isw_cjccfdbihf_Volume0

Agora, o conteúdo 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

Um arquivo de backup de 2012 mostra entradas ligeiramente diferentes para swap (Volume05 em vez de Volume0p5), o que indica que os nomes poderiam ter sido alterados:

 # 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

Então, talvez tenha algo a ver com "_Volume01" vs "_Volume0p1" vs "_Volume0". /etc/fstab diz "01", ls /dev/mapper retorna mapeamentos "0p1", "0p2" e "0p5" (troca) e finalmente debconf-show grub-pc diz "Volume0". Eu acho que essa inconsistência é a raiz do problema.

Agora eu me pergunto:

  1. Qual deve ser a linha grub-pc/install_devices na saída de debconf-show grub-pc ?
  2. Como posso alterar as configurações do Grub para que eu possa experimentar diferentes valores?

Eu também notei que a instalação do grub-pc está quebrada:

$ sudo dpkg-reconfigure grub-pc
/usr/sbin/dpkg-reconfigure: grub-pc is broken or not fully installed
    
por Philipp Claßen 12.08.2014 / 21:04

4 respostas

3

Veja como resolvi o problema:

Em um momento de silêncio, tive tempo para arriscar o tempo de inatividade. Então eu reiniciei o sistema com um Live CD do Ubuntu 14.04 e reinstalei o Grub. Eu não encontrei problemas e depois, o sistema inicializou normalmente.

Aqui está uma descrição geral: link

Da memória, aqui estão os comandos que usei no meu caso específico:

Inicialize a partir do Live CD e execute os seguintes comandos:

 $ 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

Depois disso, o sistema é reinicializado. Finalmente, eu pude terminar a instalação quebrada com sudo apt-get install .

No momento, /etc/fstab ainda lista /dev/mapper/isw_cjccfdbihf_Volume01 para o diretório raiz. Ainda não sei se isso está correto, mas não tentei alterá-lo para /dev/mapper/isw_cjccfdbihf_Volume0p1 para descobrir se ele ainda funciona depois de uma reinicialização.

    
por Philipp Claßen 13.08.2014 / 19:30
3

A instalação do grub2 em uma configuração RAID falha, porque a nomenclatura do dispositivo é de alguma forma alterada com a atualização, mas o sistema de execução ainda não reiniciado usa um esquema de nomenclatura diferente.

Apenas cancele o grub-install quando ele falhar e reinicie. O grub instalado anteriormente ainda aponta para um kernel válido e pode inicializar sem nenhum problema. Após a reinicialização, o grub é instalado sem problemas.

    
por Peter Häring 05.10.2014 / 17:38
1

Brilhante. Eu tive que mudar apenas uma coisa para evitar esse erro ao executar o comando 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.

Usando seus comandos acima, eu mudei o comando grub-install para instalar o GRUB no MBR ao invés da partição assim (removendo o 'p1'):

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

Caso contrário, isso realmente salvou minha dor e muita dor. Eu sou muito grato.

    
por Kirtlander 08.10.2014 / 01:34
0

Nenhuma das respostas funcionou para mim, então eu reiniciei e usei o Disco de reparo de inicialização para consertar o problema. Isso funcionou. Ufa ...!

    
por Josh B 09.12.2014 / 15:43