Fehler beim Abrufen des kanonischen Pfades von / cow

43

Ich versuche schon seit einiger Zeit Ubuntu 12.10 zu installieren und die Hürden nacheinander zu überwinden. Jetzt bin ich in einer Situation wie folgt.

Ich habe einen PC und eine 10-GB-Festplatte, die ausschließlich für Ubuntu vorgesehen ist, also keine Option für Wubi und Dual-Boot.

Ich habe versucht, von DVD zu installieren, aber es bleibt bei der Fehlermeldung "Außerhalb der Frequenz" hängen. Also musste ich mich für die USB-Boot-Option anpassen. Mein PC ist jedoch über USB nicht bootfähig, daher lautet die Problemumgehung "Plop Boot Manager". So mache ich den Installationsvorgang wie folgt:

  1. Ausgehend von einem CD-Laufwerk, auf dem plop installiert ist.
  2. Entscheiden Sie sich für USB-Boot in Plop-Optionen.
  3. Das Booten beginnt über USB.
  4. Monitor gibt schließlich "außerhalb der Frequenz" Fehler
  5. drücke Shift+ Alt+ F1, um zum Terminal zu gelangen.
  6. öffne den Maden mit sudo nano /etc/default/grub.
  7. notwendige Änderungen vornehmen.
  8. sudo update-grub.

Jetzt hier erhalte ich Störung wie folgt:

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

Mein System ist

P4 3,06 GHz, 1 GB RAM, 10 GB Festplatte ohne Betriebssystem, Monitor CRT LG StudioWorks (7 Jahre alt). Mobo Mercury P4 266a NDMx (865 Äquivalente). Das gesamte System ist unter XP in einwandfreiem Zustand, aber es ist über USB nicht bootfähig, und alle anderen Geräte funktionieren einwandfrei.

Was soll ich als nächstes tun?

ulkaNCST
quelle
Hat Ihr Computer die empfohlenen Mindestsystemanforderungen, um Ubuntu auszuführen? Ich hatte Probleme bei der Installation von 12.04 auf Computern mit weniger als 1 GB RAM.
CSCameron
Ja, jetzt habe ich meine Systemspezifikation zur Frage hinzugefügt.
ulkaNCST
askubuntu.com/questions/207663/… ist vielleicht einen Versuch wert.
Rinzwind
5
Mounten Sie zuerst Ihre Festplatte in einem Ordner, sagen wir, /mntund dann chrootin /mnt.
Grün

Antworten:

30

Nach dem Booten von der Ubuntu-Live-CD (Versucht 14.04 und 16.04) konnte ich dieses Problem umgehen, indem ich update-grub chroot'ed auf der grub-Partition ausführte. (Ersetzen Sie /dev/sda1unten die Partition, auf der Sie grub installiert haben. Alle Befehle als 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
quelle
2
Der Versuch, mount auszuführen, gibt mir den Fehler :, NTFS signature is missing.der seltsam ist, weil es Ext4 sein sollte, nicht NTFS ...
Cerin
@Cerin, ich betone, / dev / sda1 war die richtige Partition für mich, aber offensichtlich nicht für Sie, wenn dieses Volume NTFS ist.
Nathan Kidd
Ihre Lösung ist verwirrend. Müssen Sie den ersten Teil und den zweiten Teil aus der Chroot des ersten heraus ausführen? Oder wirfst du alles weg, was du im ersten Teil getan hast und läufst nur den zweiten Teil? Warum mounten Sie sowohl / dev / sda als auch / dev / sda1?
Cerin
2
Ich habe Ihre Anweisungen befolgt und festgestellt, dass /usr/sbin/grub-probe: error: failed to get canonical path of '/boot'.ich nur meine /bootPartition auf meinem Startlaufwerk hatte, der Rest war woanders.
Schlitten
1
Musste grub-install /dev/sdavorher noch einen machen update-grub, dann hat es geklappt!
Kiw
11

Suchen Sie Ihr Laufwerk, mit dem gebootet werden soll

mount

Oder

parted -l

Oder

fdisk /dev/sda

Geben Sie p ein, um die Partitionen aufzulisten, und suchen Sie nach Typ 83.

(Wenn Sie Fedora haben, müssen Sie möglicherweise die Befehle "vgs" und "lvs" verwenden, und wenn Sie befürchten, müssen Sie möglicherweise "cat / proc / mdstat" oder mdadm -A --scan oder insmod raid1 oder insmod raid5 und dann mdadm -A --scan) und Sie werden / dev / md0 oder / dev / mapper / my-vg anstelle von / dev / sda verwenden

dann versuchen Sie es zu montieren

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

Ist das dein Antrieb? Cool!

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

(Oder welches / dev-Laufwerk dein Root ist, mit dem gemounteten Pfad)

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

(Erzwinge es, wenn es deine Partitionen nicht mag.)

Jetzt sollte es in Grub booten und Sie können die Grub-Befehle zum Booten verwenden, nachdem Sie das richtige Boot-Laufwerk aus dem BIOS-Setup neu gestartet und ausgewählt haben, oder indem Sie ESC oder F12 drücken, abhängig von Ihrem BIOS und ob Sie schnell genug sind, dann um die Grub-Eingabeaufforderung - Sie können die Tab-Vervollständigung verwenden, um sie zu finden, wenn sie nicht (hd0,1), sondern (hd1,3) oder etwas anderes ist. Beachten Sie jedoch, dass die Tab-Vervollständigung manchmal einige Sekunden lang anhält, wenn Grub das Laufwerk nicht lesen kann .

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

Oder hoffentlich hast du noch eine intakte grub.cfg-Datei ... oder vielleicht funktioniert das:

grub-mkconfig -o /mnt/boot/grub/grub.cfg
Dagelf
quelle
1
Es mochte meine Partitionen -fnicht, funktionierte aber nicht. Ich musste verwenden--force
RM
Um von GRUB zu booten, musste ich auf meinem System oben wie folgt ändern: linux /vmlinuz root=/dev/sda1 (dh den Stammordner) initrd /boot/initrd.img (dh hinzufügen .img)
Warner
6

Überarbeitete Lösung basierend auf dem obigen Code

Die Lösung von oben funktioniert nicht ohne Probleme, da die Boot-Partition im / (Root) des Dateisystems gemountet wird. Das bringt Grub dazu, sich zu beschweren, dass / boot natürlich nicht existiert. Dies wird das Problem beheben:

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

Wie Sie sehen, habe ich auch die Zeilenumbrüche entfernt, damit es für alle einfacher ist, sie auszuführen.

Eine andere (einfachere) Lösung

Wenn Sie weiterhin Probleme haben, es zum Laufen zu bringen, sollten Sie versuchen, die Partition / boot auf die Partition / (root) zu kopieren. Starten Sie dazu Ihr System mit der Ubuntu Live-Boot-DVD und öffnen Sie das Terminal. Innerhalb davon Typ:

sudo su
fdisk -l

Um herauszufinden, welche Partitionen Sie haben. In meinem Fall ist sda1 meine / boot-Partition, die ungefähr 250 MB groß ist, und eine sda5, die ungefähr 500 GB groß ist. Ich benutze diese Werte in den Befehlen unten:

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

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

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

Setzen Sie das Boot-Flag für die Datenpartition und entfernen Sie es für die Boot-Partition:

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

Ihr Computer sucht nun in der SDA5 nach den Startdateien. Es ist Zeit, das Chrooten erneut durchzuführen, diesmal mit einigen für Grub erforderlichen Ordnern, die bereits von Ihrer Ubuntu-Live-CD erstellt wurden:

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

Installation beendet. Kein Fehler gemeldet.

Wenn keine Meldung angezeigt wird, dass die Datei grub.cnf generiert wurde, führen Sie auch den Befehl update aus:

update-grub2 /dev/sda

Jetzt können Sie sicher neu starten und sehen, dass das bekannte Startmenü wieder angezeigt wird.

Diese Lösung war die einzige, die nach der Migration von einem physischen Server auf eine virtuelle Maschine für mich funktioniert hat. Ich hoffe, jemand findet das nützlich!

Tim B.
quelle
0

Ich weiß, es ist ein altes Problem, aber ich hatte heute die gleichen Probleme mit der aktuellen Version von Mint-Linux (Ubuntu-basiert). Ich habe eine sehr einfache Lösung gefunden! :-) Bei der ersten Installation die Internetverbindung trennen. Dies stoppt das Laden eines nicht kompatiblen grub2. Aktualisieren Sie alle nach Abschluss der Installation.

Chruegel
quelle
0

Habe den gleichen Fehler. Das einzige Problem war, dass / cow noch auf / montiert war.

Ein wenig sudo umount / cow hat es geschafft.

Simon Lejoly
quelle
-6

Es ist der Befehl update-grub, der Ihnen den Fehler anzeigt, wenn Sie ihn von einer Live-CD verwenden. Ich sah mich einer ähnlichen Situation gegenüber, als ich eine Madenrettung durchführte. Das Problem, das Sie haben, ist, dass die Befehle update-grub und grub-install nicht direkt unter Live-CDs funktionieren (ich weiß nicht warum). Sie müssen also zu / usr / sbin gehen, wo sich die Befehle befinden, und sie von dort aus ausführen (dh ./update-grub).

aveemashfaq
quelle
Nein, Sie müssen die Festplatte einbinden und chroot darin, wie @ green7 sagte.
Psusi
meine methode funktioniert auch. Versuch es. es ist einfacher
aveemashfaq
1
Sie haben keine Methode. / usr / sbin befindet sich bereits auf dem Pfad, sodass dort keine CD erforderlich ist. Sie können grub-install und update-grub nicht direkt von der Live-CD ausführen (wie Sie bereits bemerkt haben), da es versucht, grub so einzurichten, dass das aktuelle System, also die Live-CD, gebootet wird und nicht das auf der Festplatte installierte Betriebssystem Fahrt.
Psusi
Das funktioniert natürlich nicht. Sie erhalten den Fehler "Kanonischer Pfad von / cow kann nicht abgerufen werden". Und das Zeug darüber, wie man / usr / sbin cdt ... oh boy.
Dan3
Probieren Sie es aus, Leute. es hat die ganze Zeit für mich
funktioniert