Nie udało się uzyskać kanonicznej ścieżki / krowy

42

Próbuję zainstalować Ubuntu 12.10 od dłuższego czasu i przechodzę przez kolejne przeszkody. Teraz jestem w następującej sytuacji.

Mam komputer i dysk twardy o pojemności 10 GB, który będzie całkowicie poświęcony Ubuntu, więc nie ma opcji Wubi i podwójnego rozruchu.

Próbowałem zainstalować z DVD, ale utknął na błędzie „Brak częstotliwości”. Musiałem więc dostosować się do opcji rozruchu USB. Ale mój komputer nie nadaje się do rozruchu przez USB, więc obejściem jest „Plop Boot Manager”. Dlatego wykonuję procedurę instalacji w następujący sposób:

  1. zaczynając od napędu CD, który ma zainstalowany plop.
  2. wybierając opcję rozruchu USB w opcjach Plop.
  3. uruchamianie rozpoczyna się od USB.
  4. monitor ostatecznie wyświetla błąd „poza częstotliwością”
  5. naciśnij Shift+ Alt+, F1aby uzyskać terminal.
  6. otwórz grub za pomocą sudo nano /etc/default/grub.
  7. dokonać niezbędnych zmian.
  8. sudo update-grub.

Teraz otrzymuję błąd w następujący sposób:

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

Mój system to

P4 3,06 GHz, 1 GB RAM, 10 GB HDD bez systemu operacyjnego, monitor CRT lg StudioWorks (7 lat). Mobo Mercury P4 266a NDMx (odpowiednik 865). Cały system jest idealnie sprawny pod XP, ale nie można go uruchomić z USB, a wszystkie inne urządzenia działają idealnie.

Co mam teraz zrobić?

ulkaNCST
źródło
Czy twój komputer ma zalecane minimalne wymagania systemowe do uruchomienia Ubuntu? Miałem problemy z instalacją 12.04 na komputerach z mniej niż 1 GB pamięci RAM.
CSCameron
Tak, teraz dodałem specyfikację mojego systemu do pytania.
ulkaNCST
askubuntu.com/questions/207663/… może być warte spróbowania.
Rinzwind
5
Najpierw zamontuj dysk twardy w jakimś folderze, powiedz, /mnta następnie chrootdo /mnt.
zielony

Odpowiedzi:

29

Po uruchomieniu z Live CD z Ubuntu (wersja próbna 14.04 i 16.04) udało mi się obejść ten problem, uruchamiając chroot update-grub na partycji grub. (Zamień /dev/sda1poniżej dowolną partycją, na której zainstalowałeś grub. Wszystkie komendy jako 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
źródło
2
Próba uruchomienia mount daje mi błąd :, NTFS signature is missing.co jest dziwne, ponieważ powinien to być Ext4, a nie NTFS ...
Cerin
@Cerin, podkreślam, że / dev / sda1 była właściwą partycją dla mnie, ale najwyraźniej nie dla ciebie, jeśli ten wolumin to NTFS.
Nathan Kidd
Twoje rozwiązanie jest mylące. Czy potrzebujesz uruchomić pierwszą i drugą część z chroot pierwszej? A może wyrzucasz wszystko, co zrobiłeś w pierwszej części i prowadzisz tylko drugą część? Dlaczego montujesz zarówno / dev / sda, jak / dev / sda1?
Cerin,
2
Postępowałem zgodnie z instrukcjami i skończyłem z tym, /usr/sbin/grub-probe: error: failed to get canonical path of '/boot'.że miałem tylko /bootpartycję na dysku rozruchowym, reszta była gdzie indziej.
Sled
1
Musiałem zrobić dodatkowy grub-install /dev/sdawcześniej update-grub, to zadziałało!
kiw
10

Znajdź dysk, który ma się uruchamiać

mount

Lub

parted -l

Lub

fdisk /dev/sda

I wpisz p, aby wyświetlić listę partycji, poszukaj typu 83.

(Jeśli masz Fedorę, być może będziesz musiał użyć poleceń „vgs” i „lvs”, a jeśli masz obawy, możesz użyć „cat / proc / mdstat” lub mdadm -A --scan lub insmod raid1 lub insmod raid5, a następnie mdadm -A --scan), a użyjesz / dev / md0 lub / dev / mapper / my-vg zamiast / dev / sda

następnie spróbuj go zamontować

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

Czy to twój dysk? Chłodny!

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

(Lub cokolwiek / dev dysk rootem, z zamontowaną ścieżką)

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

(Wymuś go, jeśli nie podoba ci się twoja partycja.)

Teraz powinien uruchomić się z GRUB-em i możesz użyć poleceń GRUB do uruchomienia, po ponownym uruchomieniu i wybraniu odpowiedniego napędu rozruchowego z BIOS Setup, lub naciskając ESC lub F12 w zależności od BIOS-u i tego, czy jesteś wystarczająco szybki, a następnie monit Grub - możesz użyć uzupełniania tabulatorów, aby go znaleźć, jeśli nie jest to (hd0,1), ale (hd1,3) lub coś innego, ale uwaga, uzupełnianie tab czasami zawiesza się na kilka sekund, jeśli grub nie może odczytać dysku .

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

Lub, mam nadzieję, że nadal masz nienaruszony plik grub.cfg ... a może to zadziała:

grub-mkconfig -o /mnt/boot/grub/grub.cfg
Dagelf
źródło
1
Nie podobały mi się moje partycje, ale -fnie działały. Musiałem użyć--force
RM
aby uruchomić z GRUB-a, w moim systemie musiałem zmienić powyższe tak: linux /vmlinuz root=/dev/sda1 (tzn. folder główny) initrd /boot/initrd.img (tj. dodać .img)
Warner
5

Zmienione rozwiązanie oparte na powyższym kodzie

Powyższe rozwiązanie nie będzie działać całkowicie bez problemów, ponieważ montuje partycję rozruchową w katalogu / (root) systemu plików. To powoduje, że grub narzeka, że ​​/ boot nie istnieje, oczywiście. To rozwiąże problem:

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

Jak widzisz, usunąłem także podział wiersza, aby łatwiej było wykonać go dla wszystkich.

Kolejne (prostsze) rozwiązanie

Jeśli nadal masz problemy z uruchomieniem go, powinieneś spróbować skopiować partycję / boot na partycję / (root). W tym celu uruchom system z DVD Live Boot Ubuntu i otwórz terminal. Wewnątrz wpisz:

sudo su
fdisk -l

Aby dowiedzieć się, jakie partycje masz. W moim przypadku sda1 to partycja my / boot, która ma około 250 MB dużych rozmiarów, a sda5 to około 500 GB. Używam tych wartości w poniższych poleceniach:

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

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

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

Ustaw flagę rozruchową dla partycji danych i usuń ją dla partycji rozruchowej:

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

Komputer zajrzy teraz do sda5 w poszukiwaniu plików rozruchowych. Czas ponownie wykonać chrooting, tym razem z kilkoma wymaganymi folderami potrzebnymi do GRUB-a, które są już generowane przez Twój dysk na żywo 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

Instalacja zakończona. Nie zgłoszono błędu.

Jeśli nie widzisz komunikatu, że plik grub.cnf jest generowany, uruchom także polecenie aktualizacji:

update-grub2 /dev/sda

Teraz możesz bezpiecznie zrestartować komputer i ponownie zobaczyć dobrze znane menu uruchamiania.

To rozwiązanie było jedynym, które działało dla mnie po migracji z serwera fizycznego na maszynę wirtualną. Mam nadzieję, że ktoś uzna to za przydatne!

Tim B.
źródło
0

Wiem, że to stary problem, ale miałem te same problemy z faktyczną wersją mint-linux (opartą na Ubuntu). Znalazłem bardzo proste rozwiązanie! :-) Zdejmij połączenie internetowe podczas pierwszej instalacji. To zatrzymuje ładowanie niekompatybilnego grub2. Dokonaj aktualizacji wszystkich po zakończeniu instalacji.

Chruegel
źródło
0

Mam ten sam błąd. Jedynym problemem było to, że / krowa była nadal zamontowana na /.

Trochę sudo umount / krowa załatwiło sprawę .

Simon Lejoly
źródło
-6

Jest to polecenie update-grub, które wyświetli błąd podczas używania go z płyty CD na żywo. Z podobną sytuacją spotkałem się, gdy ratowałem gruba. Problemem jest to, że polecenia update-grub i grub-install nie działają bezpośrednio na Live CD (nie wiem dlaczego). Musisz więc przejść do / usr / sbin, gdzie znajdują się polecenia i wykonać je stamtąd (tj ./update-grub).

aveemashfaq
źródło
Nie, musisz zamontować dysk twardy i chroot, jak powiedział @ green7.
psusi
moja metoda również działa. Spróbuj. to jest prostsze
aveemashfaq
1
Nie masz metody. / usr / sbin już znajduje się na ścieżce, więc nie ma potrzeby tam cd. Nie można uruchomić grub-install i update-grub bezpośrednio z live CD (jak zauważyłeś), ponieważ próbuje on skonfigurować gruba do uruchomienia obecnego systemu, którym byłby live cd, a nie system operacyjny zainstalowany na dysku twardym napęd.
psusi
To oczywiście nie działa. Pojawia się błąd „nie można uzyskać kanonicznej ścieżki / krowy”. I rzeczy związane z cd -ingiem do / usr / sbin ... oh boy.
dan3
spróbujcie ludzie. działało to dla mnie cały czas
aveemashfaq