Falha ao obter o caminho canônico de / vaca

43

Estou tentando instalar o Ubuntu 12.10 por um bom tempo e passando obstáculos um por um. Agora estou em uma situação da seguinte maneira.

Eu tenho um PC e um disco rígido de 10 GB que serão totalmente dedicados ao Ubuntu, portanto não há opção de Wubi e inicialização dupla.

Eu estava tentando instalar a partir do DVD, mas ele está ficando travado no erro "Fora de frequência". Então eu tive que me adaptar à opção de inicialização USB. Mas meu PC é USB não inicializável, portanto, a solução alternativa é "Plop Boot Manager". Então, eu estou executando o procedimento de instalação da seguinte maneira:

  1. a partir de uma unidade de CD que esteja tendo o plop instalado.
  2. optando pela inicialização USB nas opções de plop.
  3. a inicialização começa a partir do USB.
  4. o monitor eventualmente fornece erro "fora de frequência"
  5. pressione Shift+ Alt+ F1para obter o terminal.
  6. abra o grub com sudo nano /etc/default/grub.
  7. faça as alterações necessárias.
  8. sudo update-grub.

Agora, aqui estou recebendo o erro da seguinte maneira:

/usr/sbin/grub-probe:error:failed to get canonical path of /cow.

Meu sistema é

P4 3,06 GHz, 1 GB de RAM, 10 GB de disco rígido sem sistema operacional, monitore o CRT lg StudioWorks (7 anos). Mobo Mercury P4 266a NDMx (equivalente a 865). Todo o sistema está perfeitamente em condições de trabalho no XP, mas é USB não inicializável e todos os outros dispositivos estão funcionando perfeitamente.

O que eu devo fazer a seguir?

ulkaNCST
fonte
Seu computador possui os requisitos mínimos de sistema recomendados para executar o Ubuntu? Ocorreu um problema ao instalar o 12.04 em máquinas com menos de 1 GB de RAM.
CSCameron
Sim, agora eu adicionei a especificação do meu sistema à pergunta.
ulkaNCST
askubuntu.com/questions/207663/… pode valer a pena tentar.
Rinzwind
5
Primeiro monte seu disco rígido em alguma pasta, diga /mnte depois chrootem /mnt.
verde

Respostas:

30

Após inicializar a partir do CD ao vivo do Ubuntu (Tentativas 14.04 e 16.04), eu pude solucionar esse problema executando o update-grub chroot'ed na partição grub. (Substitua /dev/sda1abaixo por qualquer partição em que você instalou o grub. Todos os comandos como root.)

mkdir /mnt/chrootdir
mount /dev/sda1 /mnt/chrootdir
for dir in proc dev sys etc bin sbin var usr lib lib64 tmp; do
    mkdir /mnt/chrootdir/$dir && mount --bind /$dir /mnt/chrootdir/$dir
done
chroot /mnt/chrootdir
update-grub2  # inside chroot
Nathan Kidd
fonte
2
A tentativa de executar montar me dá o erro :, NTFS signature is missing.que é estranho, porque ele deve ser Ext4, não NTFS ...
Cerin
@ Cerin, enfatizo / dev / sda1 foi a partição certa para mim, mas evidentemente não para você, se esse volume for NTFS.
Nathan Kidd
Sua solução é confusa. Você precisa executar a primeira parte e a segunda de dentro do chroot da primeira? Ou você joga fora tudo o que fez na primeira parte e apenas executa a segunda parte? Por que você monta / dev / sda e / dev / sda1?
Cerin
2
Segui suas instruções e acabei com /usr/sbin/grub-probe: error: failed to get canonical path of '/boot'.apenas minha /bootpartição no meu drive de inicialização, o resto estava em outro lugar.
Sled
1
Tinha que fazer um adicional grub-install /dev/sdaantes update-grub, então funcionou!
Kev
11

Encontre sua unidade que deveria inicializar com

mount

Ou

parted -l

Ou

fdisk /dev/sda

E digite p para listar as partições, procure o tipo 83.

(Se você possui o Fedora, pode ser necessário usar os comandos "vgs" e "lvs" e, se tiver o mdraid, poderá "cat / proc / mdstat" ou mdadm -A --scan ou insmod raid1 ou insmod raid5 e depois mdadm -A --scan) e você usará / dev / md0 ou / dev / mapper / my-vg em vez de / dev / sda

então tente montá-lo

mkdir /mnt
mount /dev/sda1 /mnt
cd /mnt
ls -l

Essa é a sua unidade? Legal!

grub-install --recheck --root-directory=/mnt /dev/sda 

(Ou o / dev drive que for sua raiz, com o caminho montado)

grub-install --recheck --root-directory=/mnt /dev/sda --force

(Force se não gostar de suas partições.)

Agora, ele deve inicializar no grub, e você pode usar os comandos do grub para inicializar, após reiniciar e selecionar a unidade de inicialização correta na Configuração do BIOS ou pressionando ESC ou F12, dependendo do BIOS e se você é rápido o suficiente, em o prompt do Grub - você pode usar o preenchimento de guias para encontrá-lo, se não for (hd0,1), mas (hd1,3) ou qualquer outra coisa, mas cuidado, o preenchimento de guias às vezes trava por alguns segundos se o grub não consegue ler a unidade .

insmod linux
ls
root=(hd0,1)
linux /boot/vmlinuz root=/dev/sda1
initrd /boot/initrd
boot

Ou, espero que você ainda tenha um arquivo grub.cfg intacto ... ou talvez isso funcione:

grub-mkconfig -o /mnt/boot/grub/grub.cfg
Dagelf
fonte
1
Não gostou das minhas partições, mas -fnão estava funcionando. Eu tive que usar--force
RM
para inicializar a partir do GRUB, no meu sistema eu tive que mudar acima da seguinte maneira: linux /vmlinuz root=/dev/sda1 (ou seja, a pasta raiz) initrd /boot/initrd.img (ou seja, adicionar .img)
Warner
6

Solução revisada com base no código acima

A solução acima não funcionará totalmente sem problemas, porque monta a partição de inicialização no / (root) do sistema de arquivos. Isso faz o grub reclamar que / boot não existe, é claro. Isso resolverá esse problema:

mkdir /mnt/chrootdir
mkdir /mnt/chrootdir/boot
mount /dev/sda1 /mnt/chrootdir/boot
for dir in proc dev sys etc bin sbin var usr lib lib64 tmp; do mkdir /mnt/chrootdir/$dir && mount --bind /$dir /mnt/chrootdir/$dir ; done
chroot /mnt/chrootdir
update-grub2  # inside chroot

Como você vê, também removi as quebras de linha para que seja mais fácil de executar para todos.

Outra solução (mais simples)

Se você continuar tendo problemas para fazê-lo funcionar, copie a partição / boot para a partição / (root). Para isso, inicie seu sistema com o DVD de inicialização ao vivo do Ubuntu e abra o terminal. Dentro dele, digite:

sudo su
fdisk -l

Para descobrir quais partições você possui. No meu caso, sda1 é a partição my / boot, que tem cerca de 250 MB de tamanho e uma sda5, que tem cerca de 500 GB. Eu uso esses valores nos comandos abaixo:

mkdir /mnt/boot/
mount /dev/sda1 /mnt/boot/

mkdir /mnt/root/
mount /dev/sda5 /mnt/root/

cp -R /mnt/boot/ /mnt/root/boot/

Defina o sinalizador inicializável para a partição de dados e remova-o para a partição de inicialização:

fdisk /dev/sda
b -> 1 (unset the bootable flag for the first partition)
b -> 5 (set the bootable flag for the fifth partition)
w -> write changes to the MBR

Seu computador agora procurará dentro do sda5 os arquivos de inicialização. Hora de fazer o chroot novamente, desta vez com algumas pastas necessárias para o grub e que já são geradas pelo seu disco ao vivo do Ubuntu:

mkdir /mnt/chrootdir/
mkdir /mnt/chrootdir/dev/
mkdir /mnt/chrootdir/proc/
mkdir /mnt/chrootdir/sys/

mount /dev/sda5 /mnt/chrootdir/
mount --bind /dev/ /mnt/chrootdir/dev/
mount --bind /proc/ /mnt/chrootdir/proc/
mount --bind /sys/ /mnt/chrootdir/sys/

chroot /mnt/chrootdir/

grub-install /dev/sda

Instalação concluída. Nenhum erro relatado.

Se você não vir uma mensagem de que o arquivo grub.cnf foi gerado, execute também o comando update:

update-grub2 /dev/sda

Agora você pode reiniciar com segurança e ver o menu de inicialização conhecido aparecer novamente.

Essa solução foi a única que estava funcionando para mim depois de migrar de um servidor físico para uma máquina virtual. Espero que alguém ache isso útil!

Tim B.
fonte
0

Eu sei, é um problema antigo, mas eu tive os mesmos problemas hoje com a versão atual do mint-linux (baseada no ubuntu). Encontrei uma solução muito simples! :-) Retire a conexão à Internet durante a primeira instalação. Isso interrompe o carregamento de um grub2 não compatível. Faça a atualização de todos após a conclusão da instalação.

Chruegel
fonte
0

Obtive o mesmo erro. O único problema era que / cow ainda estava montado em /.

Um pouco de sudo / vaca fez o truque.

Simon Lejoly
fonte
-6

É o comando update-grub que fornecerá o erro ao usá-lo em um CD ao vivo. Eu enfrentei uma situação semelhante quando estava fazendo um resgate de larvas. O problema é que os comandos update-grub e grub-install não funcionam diretamente no live cd (não sei por que). Então, você precisa ir para / usr / sbin onde os comandos estão localizados e executá-los a partir daí (por exemplo, ./update-grub).

aveemashfaq
fonte
Não, você precisa montar o disco rígido e fazer chroot nele, como o @ green7 disse.
Psusi 2/04
meu método também funciona. tente. É mais simples
aveemashfaq 4/04
1
Você não tem um método / usr / sbin já está no caminho, portanto não há necessidade de fazer o cd lá. Você não pode executar o grub-install e o update-grub diretamente do live cd (como você observou) porque ele tenta configurar o grub para inicializar o sistema atual, que seria o live cd, em vez do sistema operacional instalado no disco rígido dirigir.
Psusi
Isso, é claro, não funciona. Você recebe o erro "não é possível obter o caminho canônico de / vaca". E as coisas sobre cd-ing para / usr / sbin ... oh garoto.
dan3
tente pessoas. ele trabalhou para mim o tempo todo
aveemashfaq