Tendo problemas com o Grub2 inicializando o Ubuntu do meu Disco Rígido Externo

0

Instalei o Ubuntu no meu disco rígido externo, mas ele não inicializa no meu laptop. O que eu faço?

Eu fiz algumas leituras e tracei a origem do problema para o Grub2. Aparentemente, o Grub2 não usa o UUID do dispositivo e usa o diretório linux (/ dev / sdf2). Isso significa que sempre que eu conectar meu E-HDD em um sistema que tenha um número diferente de unidades conectadas a ele, não serei capaz de inicializar sem editar o comando de inicialização. Eu não entendo muito bem, mas é o que eu recebi do que li.

Existe alguma maneira de corrigir isso?

Aqui está minha configuração do grub (aparada para mostrar a entrada do kernel de exemplo). Eu não tenho idéia porque não está usando o UUID. Eu não ajustei uma vez ...

### BEGIN /etc/grub.d/10_linux ###
menuentry "Ubuntu, Linux 2.6.31-20-generic" {
        recordfail=1
        if [ -n ${have_grubenv} ]; then save_env recordfail; fi
    set quiet=1
    linux   /boot/vmlinuz-2.6.31-20-generic root=/dev/sdc2 ro   quiet splash
    initrd  /boot/initrd.img-2.6.31-20-generic
}
menuentry "Ubuntu, Linux 2.6.31-20-generic (recovery mode)" {
        recordfail=1
        if [ -n ${have_grubenv} ]; then save_env recordfail; fi
    linux   /boot/vmlinuz-2.6.31-20-generic root=/dev/sdc2 ro single 
    initrd  /boot/initrd.img-2.6.31-20-generic
}
    
por cesar 18.04.2010 / 08:22

2 respostas

1

O problema é que meu device.map não foi configurado corretamente, o que levou ao grub usando os nomes do ubuntu, por exemplo. sdf2, em vez dos UUIDs do disco rígido. a correção foi atualizar device.map e atualizar o grub2. Isso é feito rodando 'drivemap', eu acho, então update-grub. Eu não estou muito certo sobre o comando para atualizar device.map porque eu fiz isso cerca de uma semana atrás, mas sim. Isto é apenas no caso de alguém se deparar com o meu problema.

    
por 23.04.2010 / 07:45
0

OK, você está certo de que não está pegando UUIDs, o que me parece estranho.

Veja como uma entrada de kernel deve aparecer (isso é da minha VM Ubuntu 9.10, ligeiramente ajustada, mas isso deve ser razoavelmente armazenado):

menuentry "Ubuntu, Linux 2.6.31-20-generic" {
    recordfail=1
    if [ -n ${have_grubenv} ]; then save_env recordfail; fi
    set quiet=1
    insmod ext2
    set root=(hd0,1)
    search --no-floppy --fs-uuid --set b22c7fe9-4354-40bf-b9bf-87a469289f6e
    linux /boot/vmlinuz-2.6.31-20-generic root=UUID=b22c7fe9-4354-40bf-b9bf-87a469289f6e ro
    initrd        /boot/initrd.img-2.6.31-20-generic
}

O arquivo /boot/grub/grub.cfg é gerado quando algo é executado update-grub dos scripts em /etc/grub.d e variáveis no arquivo / etc / default / grub .

  • Agora, há uma variável no arquivo padrão, GRUB_DISABLE_LINUX_UUID , que, se definida como true , dê um valor root = / dev / sdXY para a linha do kernel linux (em vez de um valor root = UUID = ... ). Eu não acho que isso seja problema seu, mas verifique seu arquivo / etc / default / grub para ter certeza. Você deve ver essas linhas (o # no começo da linha significa que está comentado):

    # Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
    #GRUB_DISABLE_LINUX_UUID=true
    

    Se você vir sem o # no início, insira-o, salve o arquivo e execute sudo update-grub para gerar grub.cfg . Em seguida, verifique grub.cfg novamente para ver se está certo.

  • Se o arquivo padrão parecer OK, verifique os UUIDs da unidade. É possível que os UUIDs da unidade não estejam configurados corretamente ou não sejam detectados corretamente. uDev tem a tarefa de criar links simbólicos na árvore de dispositivos para UUIDs de disco; verifique-os:

    $ ls -l /dev/disk/by-uuid
    total 0
    lrwxrwxrwx 1 root root 10 2010-04-18 04:15 b22c7fe9-4354-40bf-b9bf-87a469289f6e -> ../../sda1
    lrwxrwxrwx 1 root root 10 2010-04-18 04:15 e1c64ac1-186d-4c15-8833-6072ac6421df -> ../../sda5
    

    Se isso não mostrar uma partição que você espera ver, talvez seja necessário verificar o sistema de arquivos diretamente com tune2fs ( manpage ) (substitua / dev / sda1 pelo nome do dispositivo correto):

    $ sudo tune2fs -l /dev/sda1 | grep UUID
    Filesystem UUID:          b22c7fe9-4354-40bf-b9bf-87a469289f6e
    

    Se isso estiver faltando, você poderá recriá-lo com:

    $ sudo tune2fs -U random /dev/sda1
    

    Agora, verifique novamente a saída tune2fs -l e, em seguida, verifique / dev / disks / by-uuid novamente. Talvez seja necessário reinicializar antes que o uDev ative as alterações. Os scripts update-grub devem agora pegar o UUID, então volte a executá-lo e verifique o novo grub.cfg para ver se parece direito.

  • Se nada disso estiver ocorrendo, talvez seja necessário explorar um pouco mais. Vamos verificar nossas suposições:
    • Como sua unidade de inicialização é particionada? ( fdisk -l )
    • Como sua unidade de inicialização é formatada? (ext2 / 3/4? FAT32? NTFS?)
    • Você instalou via Wubi?
por 18.04.2010 / 15:31