Ubuntu reconhecido pelo os-prober mas não pelo grub

3

Eu tenho o dual-boot do Windows 7 e Ubuntu 12.04. Reduzi minha partição do Windows 7 e aumentei minha partição do Ubuntu usando o gparted de um live CD de 12.04. Tudo estava bem por cerca de uma semana. Então no outro dia eu inicializei e fui recebido com "resgate grub". Eu depurei e re-instalei o grub e depois o grub2 de acordo com os muitos tutoriais on-line, mas todos os esforços encontraram os mesmos resultados: Parece que o os-prober vê minhas partições do Windows 7 (reais e de restauração), bem como a partição Ubuntu 12.04 LTS; mas quando executo qualquer variante de update-grub ou update-grub2, ele detecta apenas as duas partições do Windows 7. Como resultado, não consigo inicializar no Ubuntu (que é onde 99% do meu trabalho é). Aqui está a saída do bootinfoscript:

    Boot Info Script 0.61      [1 April 2012]


============================= Boot Info Summary: ===============================

 => Grub2 (v1.99) is installed in the MBR of /dev/sda and looks at sector 1 of 
    the same hard drive for core.img. core.img is at this location and looks 
    for (,msdos5)/boot/grub on this drive.

sda1: __________________________________________________________________________

    File system:       ntfs
    Boot sector type:  Windows Vista/7: NTFS
    Boot sector info:  No errors found in the Boot Parameter Block.
    Operating System:  
    Boot files:        /bootmgr /Boot/BCD

sda2: __________________________________________________________________________

    File system:       ntfs
    Boot sector type:  Windows Vista/7: NTFS
    Boot sector info:  No errors found in the Boot Parameter Block.
    Operating System:  Windows 7
    Boot files:        /bootmgr /Boot/BCD /Windows/System32/winload.exe

sda3: __________________________________________________________________________

    File system:       ntfs
    Boot sector type:  Windows Vista/7: NTFS
    Boot sector info:  No errors found in the Boot Parameter Block.
    Operating System:  
    Boot files:        

sda4: __________________________________________________________________________

    File system:       Extended Partition
    Boot sector type:  -
    Boot sector info: 

sda5: __________________________________________________________________________

    File system:       ext4
    Boot sector type:  Grub2 (v1.99)
    Boot sector info:  Grub2 (v1.99) is installed in the boot sector of sda5 
                       and looks at sector 525161552 of the same hard drive 
                       for core.img. core.img is at this location and looks 
                       for (,msdos5)/boot/grub on this drive.
    Operating System:  Ubuntu 12.04 LTS
    Boot files:        /boot/grub/grub.cfg /etc/fstab /boot/grub/core.img

sda6: __________________________________________________________________________

    File system:       
    Boot sector type:  -
    Boot sector info: 
    Mounting failed:   mount: unknown filesystem type ''

============================ Drive/Partition Info: =============================

Drive: sda _____________________________________________________________________

Disk /dev/sda: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders, total 625142448 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes

Partition  Boot  Start Sector    End Sector  # of Sectors  Id System

/dev/sda1               2,048       206,847       204,800   7 NTFS / exFAT / HPFS
/dev/sda2             206,848   504,360,959   504,154,112   7 NTFS / exFAT / HPFS
/dev/sda3         591,218,688   625,137,663    33,918,976   7 NTFS / exFAT / HPFS
/dev/sda4         504,360,960   591,218,687    86,857,728   5 Extended
/dev/sda5    *    504,363,008   583,360,511    78,997,504  83 Linux
/dev/sda6         583,362,560   591,218,687     7,856,128  82 Linux swap / Solaris


"blkid" output: ________________________________________________________________

Device           UUID                                   TYPE       LABEL

/dev/loop0                                              squashfs   
/dev/sda1        DA669D8C669D69D1                       ntfs       System Reserved
/dev/sda2        BAAAA703AAA6BAF1                       ntfs       
/dev/sda3        8E22D1E022D1CCF9                       ntfs       OS Recovery
/dev/sda5        c35e7a0a-408c-4586-8a18-b3faa368ef3f   ext4       
/dev/sr0                                                iso9660    Ubuntu 12.04 LTS amd64

================================ Mount points: =================================

Device           Mount_Point              Type       Options

/dev/loop0       /rofs                    squashfs   (ro,noatime)
/dev             /mnt/dev                 none       (rw,bind)
/dev/pts         /mnt/dev/pts             none       (rw,bind)
/dev/sda2        /media/BAAAA703AAA6BAF1  fuseblk    (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096)
/dev/sda5        /media/c35e7a0a-408c-4586-8a18-b3faa368ef3f ext4       (rw,nosuid,nodev,uhelper=udisks)
/dev/sda5        /mnt                     ext4       (rw)
/dev/sr0         /cdrom                   iso9660    (ro,noatime)


=========================== sda5/boot/grub/grub.cfg: ===========================

--------------------------------------------------------------------------------
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then
  set have_grubenv=true
  load_env
fi
set default="0"
if [ "${prev_saved_entry}" ]; then
  set saved_entry="${prev_saved_entry}"
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true
fi

function savedefault {
  if [ -z "${boot_once}" ]; then
    saved_entry="${chosen}"
    save_env saved_entry
  fi
}

function recordfail {
  set recordfail=1
  if [ -n "${have_grubenv}" ]; then if [ -z "${boot_once}" ]; then save_env recordfail; fi; fi
}

function load_video {
  insmod vbe
  insmod vga
  insmod video_bochs
  insmod video_cirrus
}

insmod part_msdos
insmod ext2
set root='(hd0,msdos5)'
search --no-floppy --fs-uuid --set=root c35e7a0a-408c-4586-8a18-b3faa368ef3f
if loadfont /usr/share/grub/unicode.pf2 ; then
  set gfxmode=auto
  load_video
  insmod gfxterm
  insmod part_msdos
  insmod ext2
  set root='(hd0,msdos5)'
  search --no-floppy --fs-uuid --set=root c35e7a0a-408c-4586-8a18-b3faa368ef3f
  set locale_dir=($root)/boot/grub/locale
  set lang=en_US
  insmod gettext
fi
terminal_output gfxterm
if [ "${recordfail}" = 1 ]; then
  set timeout=-1
else
  set timeout=10
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
if background_color 44,0,30; then
  clear
fi
### END /etc/grub.d/05_debian_theme ###

### BEGIN /etc/grub.d/10_linux ###
function gfxmode {
    set gfxpayload="${1}"
    if [ "${1}" = "keep" ]; then
        set vt_handoff=vt.handoff=7
    else
        set vt_handoff=
    fi
}
if [ "${recordfail}" != 1 ]; then
  if [ -e ${prefix}/gfxblacklist.txt ]; then
    if hwmatch ${prefix}/gfxblacklist.txt 3; then
      if [ ${match} = 0 ]; then
        set linux_gfx_mode=keep
      else
        set linux_gfx_mode=text
      fi
    else
      set linux_gfx_mode=text
    fi
  else
    set linux_gfx_mode=keep
  fi
else
  set linux_gfx_mode=text
fi
export linux_gfx_mode
if [ "${linux_gfx_mode}" != "text" ]; then load_video; fi
### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###

### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Windows 7 (loader) (on /dev/sda1)" --class windows --class os {
    insmod part_msdos
    insmod ntfs
    set root='(hd0,msdos1)'
    search --no-floppy --fs-uuid --set=root DA669D8C669D69D1
    chainloader +1
}
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###

### BEGIN /etc/grub.d/41_custom ###
if [ -f  $prefix/custom.cfg ]; then
  source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###
--------------------------------------------------------------------------------

=============================== sda5/etc/fstab: ================================

--------------------------------------------------------------------------------
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    nodev,noexec,nosuid 0       0
# / was on /dev/sda5 during installation
UUID=c35e7a0a-408c-4586-8a18-b3faa368ef3f /               ext4    errors=remount-ro 0       1
# swap was on /dev/sda6 during installation
#UUID=a4d335d5-6a81-4af8-a1c7-3beeee8699a1 none            swap    sw              0       0
/dev/mapper/cryptswap1 none swap sw 0 0
--------------------------------------------------------------------------------

=================== sda5: Location of files loaded by Grub: ====================

           GiB - GB             File                                 Fragment(s)

               =                boot/grub/core.img                             1
               =                boot/grub/grub.cfg                             1

========= Devices which don't seem to have a corresponding hard drive: =========

sdb 

=============================== StdErr Messages: ===============================

xz: (stdin): Compressed data is corrupt
xz: (stdin): Compressed data is corrupt
awk: cmd. line:36: Math support is not compiled in
awk: cmd. line:36: Math support is not compiled in

E do sudo os-prober do LiveCD 12.04:

/dev/sda1:Windows 7 (loader):Windows:chain
/dev/sda2:Windows 7 (loader):Windows1:chain
/dev/sda5:Ubuntu 12.04 LTS (12.04):Ubuntu:linux

Eu li praticamente todos os guias, tutoriais e perguntas que existem por aí para atualizar qualquer versão do grub, mas nada funcionou. Mas o mais confuso é que o os-prober vê a instalação; Eu apreciaria muito qualquer ajuda neste assunto.

    
por msolters 12.06.2012 / 16:58

2 respostas

2

Você tentou adicionar um "custom" menuentry para inicializar o Ubuntu editando grub.cfg ?


Decidi sugerir isso também, pois, mesmo que não funcione, talvez resulte em uma mensagem de erro mais útil.

  1. Inicialize seu sistema usando seu LiveCD 12.04.

  2. Monte a partição sda5 em que o Ubuntu está instalado. Neste exemplo, assumirei que sda5 foi montado em /mnt usando, por exemplo, sudo mount -t ext4 /dev/sda5 /mnt .

  3. Determine quais os kernel (s) que você instalou listando o conteúdo do diretório /mnt/boot . Você precisará dessas informações para concluir a etapa (5) abaixo.
    Observação: O comando abaixo é uma maneira de fazer isso.

    ls /mnt/boot/{initrd*,vmlinuz*}
    
  4. Use sudo para editar o arquivo /mnt/boot/grub/grub.cfg (ou seja, o arquivo grub.cfg na sua partição sda5 Ubuntu).

  5. Encontre as linhas abaixo no arquivo. Eles devem ter ~ 10 linhas antes do final do arquivo.

    ### BEGIN /etc/grub.d/40_custom ###
    # This file provides an easy way to add custom menu entries.  Simply type the
    # menu entries you want to add after this comment.  Be careful not to change
    # the 'exec tail' line above.
    ### END /etc/grub.d/40_custom ###
    

    Substitua o acima pelos comandos do GRUB para o menuentry abaixo.
    Importante: No exemplo abaixo, você deve substituir ?.?.?-?? no linux e initrd linhas com o número da versão (do passo (3)) do kernel que você deseja inicializar.

    ### BEGIN /etc/grub.d/40_custom ###
    menuentry 'Ubuntu on sda5' --class ubuntu --class gnu-linux --class gnu --class os {
      recordfail
      insmod gzio
      insmod part_msdos
      insmod ext2
      set root='(hd0,msdos5)'
      search --no-floppy --fs-uuid --set=root c35e7a0a-408c-4586-8a18-b3faa368ef3f
      linux /boot/vmlinuz-?.?.?-??-generic root=UUID=c35e7a0a-408c-4586-8a18-b3faa368ef3f ro quiet splash
      initrd    /boot/initrd.img-?.?.?-??-generic
    }
    ### END /etc/grub.d/40_custom ###
    
  6. Reinicialize e veja se essa entrada personalizada permite que você inicialize o Ubuntu em /dev/sda5 .

Se a sugestão acima funcionasse, sugiro tentar o seguinte.

  • Use sudo para editar o arquivo /etc/grub.d/40_cutom e anexe o comandos menuentry do passo (5) para o final do arquivo. Desta forma, o a entrada do menu não será perdida se você executar update-grub .

    Aviso: Não exclua as duas linhas abaixo! Eles precisam estar no início do arquivo 40_custom para update-grub para funcionar corretamente.

    #!/bin/sh
    exec tail -n +3 $0
    
  • Tente reinstalar o GRUB ainda mais uma vez usando o comando abaixo. (Por quê não?)

    sudo grub-install --recheck /dev/sda
    

Atualize a resposta para comentar se os arquivos do kernel estão faltando em /boot


Eu nunca encontrei uma situação em que os arquivos do kernel estivessem faltando em /boot . Minha primeira preocupação seria que se seus arquivos de kernel estivessem faltando, então algo mais poderia estar seriamente errado com o Ubuntu instalado em sda5 .

Sugiro que você atualize sua pergunta e seu título para refletir que não há arquivos de kernel em /boot . Isso aumenta suas chances de obter uma resposta melhor de outra pessoa.

Eu procurei no AskUnbuntu por uma pergunta semelhante, mas tudo que encontrei foi o link abaixo.
Como restaurar um sistema após remover acidentalmente todos os kernels?

A melhor resposta para essa pergunta foi chroot e tente reinstalar o kernel que você diz que já tentou. A única mudança que eu poderia sugerir é que você tente novamente usando esses comandos. (Nota: sudo não foi usado abaixo porque se você chroot já é root .)

apt-get update
apt-get --reinstall install linux-generic linux-image-generic linux-headers-generic
  • Nota: Se o acima parecer funcionar, é provavelmente mais seguro executar também% grub-install --recheck /dev/sda

A manpage para update-initramfs também pode ajudar a fornecer algum contexto sobre o que acontece quando um kernel é" instalado ".

Em retrospectiva, eu deveria ter percebido que algo estava errado ao ler seu resumo do BootInfo. Termina com o trecho abaixo.

=================== sda5: Location of files loaded by Grub: ====================

           GiB - GB             File                                 Fragment(s)

               =                boot/grub/core.img                             1
               =                boot/grub/grub.cfg                             1

========= Devices which don't seem to have a corresponding hard drive: =========

sdb 

=============================== StdErr Messages: ===============================

xz: (stdin): Compressed data is corrupt
xz: (stdin): Compressed data is corrupt
awk: cmd. line:36: Math support is not compiled in
awk: cmd. line:36: Math support is not compiled in

Mas ao invés dos erros acima eu deveria ter esperado ver algo como o trecho abaixo de um Resumo do BootInfo que criei como exemplo .

=================== sda5: Location of files loaded by Grub: ====================

           GiB - GB             File                                 Fragment(s)

  23.440826416 = 25.169395712   boot/grub/core.img                             1
  23.440864563 = 25.169436672   boot/grub/grub.cfg                             1
  18.791522980 = 20.177244160   boot/initrd.img-3.2.0-23-generic               1
  25.439197540 = 27.315130368   boot/vmlinuz-3.2.0-23-generic                  1
  18.791522980 = 20.177244160   initrd.img                                     1
  25.439197540 = 27.315130368   vmlinuz                                        1


ADDITIONAL INFORMATION :
=================== log of boot-repair 2012-06-13__16h58 ===================
boot-repair version : 3.18-0ppa25~precise
boot-sav version : 3.19-0ppa14~precise
glade2script version : 0.3.2.1-0ppa7~precise
boot-repair is executed in live-session (Ubuntu 12.04 LTS , precise , Ubuntu , x86_64)

=================== OSPROBER:
/dev/sda1:Windows 7 (loader):Windows:chain
/dev/sda5:Ubuntu 12.04 LTS (12.04):Ubuntu:linux

... et cetera ....
por irrational John 13.06.2012 / 03:51
0

Execute o Reparo recomendado do Boot-Repair ". Isso irá reinstalar o GRUB e reinstalar um kernel, se necessário. Se algum problema indicar o URL que será exibido.

    
por LovinBuntu 20.06.2012 / 15:29

Tags