A atualização do kernel em uma instalação do pendrive USB falha com o erro grub-probe

1

Estou diagnosticando alguns problemas de hardware usando uma instalação de pen drive USB do Ubuntu 11.10.

O pendrive USB foi configurado com a imagem 11.10 e o método pendrivelinux.com como recomendado no site do Ubuntu. O pen drive USB é de 8 GB.

Meu notebook permite que eu inicialize diretamente a partir do USB, então o HDD ainda tem uma estrutura de inicialização no estilo Micro $ oft (Windows 7).

Depois de brincar com o O / S um pouco (e saber que meu HDD tem 15.000 setores realocados), o gerenciador de atualização solicitou que eu instalasse algumas atualizações. Tudo atualizado corretamente, exceto pela atualização do kernel (3.0.0.14).

Parece haver um erro no grub:

ubuntu@ubuntu:/dev$ sudo apt-get install
Reading package lists... Done  
Building dependency tree   
Reading state information... Done  
0 upgraded, 0 newly installed, 0 to remove and 21 not upgraded.  
3 not fully installed or removed.  
After this operation, 0 B of additional disk space will be used.  
Setting up linux-image-3.0.0-14-generic (3.0.0-14.23) ...  
Running depmod.  
update-initramfs: deferring update (hook will be called later)  
Examining /etc/kernel/postinst.d.  
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 3.0.0-14-generic /boot/vmlinuz-3.0.0-14-generic  
update-initramfs: Generating /boot/initrd.img-3.0.0-14-generic  
cryptsetup: WARNING: failed to detect canonical device of overlayfs  
cryptsetup: WARNING: could not determine root device from /etc/fstab  
run-parts: executing /etc/kernel/postinst.d/pm-utils 3.0.0-14-generic /boot/vmlinuz-3.0.0-14-generic  
run-parts: executing /etc/kernel/postinst.d/update-notifier 3.0.0-14-generic /boot/vmlinuz-3.0.0-14-generic  
run-parts: executing /etc/kernel/postinst.d/zz-update-grub 3.0.0-14-generic /boot/vmlinuz-3.0.0-14-generic  
/usr/sbin/grub-probe: error: cannot find a device for / (is /dev mounted?).  
run-parts: /etc/kernel/postinst.d/zz-update-grub exited with return code 1

que persiste sempre que tento repetir a instalação. Felizmente, o sistema é sempre deixado em um estado inicializável, apesar da falha.

Eu tenho que dar alguns passos especiais para atualizar o kernel? Eu tenho um problema de instalação sutil que preciso resolver manualmente para superar isso?

Pelo menos um outro teve o mesmo problema em uma versão mais antiga do O / S. Eu fornecerei a saída de mount (como foi solicitado na pergunta anterior) quando eu tiver acesso ao laptop novamente.

Editar: os resultados de mount :

/cow on / type overlayfs (rw)   
proc on /proc type proc (rw,noexec,nosuid,nodev  
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)  
fusectl on /sys/fs/fuse/connections type fusectl (rw)  
udev on /dev type devtmpfs (rw,mode=0755)  
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)  
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)  
/dev/sdb1 on /cdrom type vfat  (rw,relatime,fmask=0022,dmask=0022,codepage=cp437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)  
/dev/loop0 on /rofs type squashfs (ro,noatime)  
none on /sys/kernel/debug type debugfs (rw)  
none on /sys/kernel/security type securityfs (rw)  
tmpfs on /tmp type tmpfs (rw,nosuid,nodev)  
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)  
none on /run/shm type tmpfs (rw,nosuid,nodev)  
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)  
gvfs-fuse-daemon on /home/ubuntu/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=ubuntu)

Editar # 2: Eu determinei que o utilitário pendrivelinux.com flash drive pode estar desempenhando um papel nisso. O stick USB contendo minha distribuição Ubuntu é formatado como FAT32, e o gerenciador de inicialização que está sendo instalado não é realmente o GRUB, mas o SYSLINUX, de acordo com o script boot_info_script.

Faz sentido que o grub-probe não consiga descobrir o que fazer, considerando que o grub não está envolvido no processo de inicialização.

(Isso me leva a perguntar por que o apt-get não verifica um bootloader grub como uma dependência antes de tentar uma atualização do kernel?)

Suponho que o próximo passo é tentar substituir o SYSLINUX pelo GRUB e tentar fazer com que o stick seja inicializável dessa forma e, em seguida, verificar se as atualizações funcionam.

Minha primeira tentativa com isso levou a um sistema não inicializável - o grub estava carregando, eu poderia carregar o kernel OK, mas não consegui descobrir o que montar como root. Eu tive que limpar e reinstalar o flash drive para ir novamente.

    
por Adam Lawrence 13.12.2011 / 15:16

2 respostas

5

Eu vejo que você corrigiu seu problema (usando o Windows 7 ... não é realmente uma solução, mas mesmo assim). Eu encontrei uma solução. Estou postando aqui, para outros usuários que podem se deparar com o problema.

Eu encontrei como consertar isso. A linha que quebra a instalação é:

run-parts: executing /etc/kernel/postinst.d/zz-update-grub 3.0.0-15-generic /boot/vmlinuz-3.0.0-15-generic

(A versão do kernel pode ser diferente em sua instalação)

Edite o arquivo problemático para comentar a linha que atualiza o Grub. É um arquivo muito pequeno, então não é muito difícil.

OBSERVAÇÃO : Se você quiser fazer o backup do arquivo primeiro (geralmente é uma idéia sensata), copie-o em outro diretório ( /root é bom, /tmp não é não sobreviverá a um reboot). Se você fizer um backup na mesma pasta ( /etc/kernel/postinst.d/ ), ele será chamado também e falhará.

Edite /etc/kernel/postinst.d/zz-update-grub para comentar a linha 15.

ANTES:

    */postinst.d/*:|*/postinst.d/*:configure|*/postrm.d/*:|*/postrm.d/*:remove)
        exec update-grub
        ;;

DEPOIS:

    */postinst.d/*:|*/postinst.d/*:configure|*/postrm.d/*:|*/postrm.d/*:remove)
#       exec update-grub
        ;;

Execute o script de configuração:

sudo dpkg --configure -a

Você deve ver muita depuração e NÃO a linha de erro no final.

Para ter certeza, execute novamente a configuração. Deve terminar imediatamente sem nenhum registro:

sudo dpkg --configure -a

Agora, você pode restaurar o arquivo zz-update-grub , caso queira instalar um outro kernel posteriormente e grub comece a trabalhar com overlayfs .

    
por bbp 24.01.2012 / 14:52
0

Você resolveu seu problema? Eu tenho o mesmo erro aqui. Eu realmente não preciso consertar, eu posso facilmente reinstalar o sistema no pen drive, mas eu gosto do desafio:)

A maneira mais inteligente de corrigir isso seria instruir o Grub a entender o overlayfs, mas eu não sei o pacote que devo instalar para isso (se houver). Como meu pendrive USB ainda é inicializável, quero forçar o apt-get a ignorar esse aviso. I.E. Considere este pacote como instalado, mesmo que não seja completamente verdadeiro. Bem, tecnicamente, ele foi instalado corretamente, somente o Grub não atualiza o MBR. Não é grande coisa, já que está inicializando a versão mais recente do kernel.

Toda tentativa leva um tempo, porque ela tenta configurar o pacote, mas o Grub falha, do que tentar reverter e o Grub falha novamente ...

Eu tentei o seguinte sem sucesso:

(apt-get -f is for fixing problems)
sudo apt-get -f install
sudo apt-get -f --force-yes install
sudo apt-get --force-yes install linux-image-3.0.0-15-generic
sudo apt-get install --force-yes linux-image-3.0.0-15-generic
sudo dpkg --force-all -i linux-image-3.0.0-15-generic
sudo apt-mark manual linux-image-3.0.0-15-generic
(the following command is the one that trigger the bug)
sudo dpkg --configure -a
sudo dpkg --configure --force-all -a
(I think the next one need the .deb file)
sudo dpkg --force-confmiss -i linux-image-3.0.0-15-generic
sudo dpkg --force-confold -i linux-image-3.0.0-15-generic
sudo dpkg --no-triggers -i linux-image-3.0.0-15-generic

... e muito mais ...

    
por bbp 22.01.2012 / 15:18