Gagal mendapatkan jalur kanonik / sapi

43

Saya mencoba menginstal Ubuntu 12.10 untuk beberapa waktu, dan melewati rintangan satu per satu. Sekarang saya berada dalam situasi sebagai berikut.

Saya sudah mendapatkan PC dan HDD 10 GB yang akan didedikasikan sepenuhnya untuk Ubuntu sehingga tidak ada opsi Wubi dan dual boot.

Saya mencoba menginstal dari DVD, tetapi macet di kesalahan "Out of frequency". Jadi saya harus beradaptasi untuk opsi boot USB. Tapi PC saya adalah USB non-bootable, jadi solusinya adalah "Plop Boot Manager". Jadi saya melakukan prosedur instalasi sebagai berikut:

  1. mulai dari CD drive yang memiliki plop terpasang.
  2. memilih untuk boot USB dalam opsi plop.
  3. booting dimulai dari USB.
  4. Monitor akhirnya memberikan kesalahan "out of frequency"
  5. tekan Shift+ Alt+ F1untuk mendapatkan terminal.
  6. buka grub dengan sudo nano /etc/default/grub.
  7. lakukan perubahan yang diperlukan.
  8. sudo update-grub.

Sekarang di sini saya mendapatkan kesalahan sebagai berikut:

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

Sistem saya adalah

P4 3,06 GHz, ram 1 GB, HDD 10 GB tanpa OS, monitor CRT lg StudioWorks (7 tahun). Mobo Mercury P4 266a NDMx (setara 865). Seluruh sistem bekerja dengan baik di bawah XP, tetapi USB tidak dapat dibooting, dan semua perangkat lain berfungsi dengan baik.

Apa yang harus saya lakukan selanjutnya?

ulkaNCST
sumber
Apakah komputer Anda memiliki Persyaratan Sistem Minimum yang Disarankan untuk menjalankan Ubuntu? Saya punya masalah menginstal 12,04 ke mesin dengan kurang dari 1GB RAM.
CSCameron
Ya, Sekarang saya telah menambahkan spesifikasi sistem saya ke pertanyaan.
ulkaNCST
askubuntu.com/questions/207663/… mungkin patut dicoba.
Rinzwind
5
Pertama-tama pasang hard drive Anda ke beberapa folder, ucapkan /mntdan kemudian chrootke /mnt.
hijau

Jawaban:

30

Setelah boot dari live CD Ubuntu (Mencoba 14.04 dan 16.04) saya dapat mengatasi masalah ini dengan menjalankan update-grub chroot'ed ke partisi grub. (Ganti di /dev/sda1bawah ini dengan partisi apa pun yang Anda instal grub. Semua perintah sebagai 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
sumber
2
Mencoba menjalankan mount memberi saya kesalahan :, NTFS signature is missing.yang aneh, karena seharusnya Ext4, bukan NTFS ...
Cerin
@Cerin, saya tekankan / dev / sda1 adalah partisi yang tepat untuk saya, tetapi jelas bukan untuk Anda, jika volume itu adalah NTFS.
Nathan Kidd
Solusi Anda membingungkan. Apakah Anda perlu menjalankan bagian pertama dan kedua dari dalam chroot bagian pertama? Atau apakah Anda membuang semua yang Anda lakukan di bagian pertama dan hanya menjalankan bagian kedua? Mengapa Anda me-mount kedua / dev / sda dan / dev / sda1?
Cerin
2
Saya mengikuti instruksi Anda dan berakhir dengan /usr/sbin/grub-probe: error: failed to get canonical path of '/boot'.hanya /bootpartisi saya di boot drive saya, sisanya ada di tempat lain.
Kereta luncur
1
Harus melakukan tambahan grub-install /dev/sdasebelumnya update-grub, lalu berhasil!
kiw
11

Temukan drive Anda yang seharusnya boot

mount

Atau

parted -l

Atau

fdisk /dev/sda

Dan ketik p untuk daftar partisi, cari tipe 83.

(Jika Anda punya Fedora Anda mungkin harus menggunakan perintah "vgs" dan "lvs" dan jika Anda punya mdraid Anda mungkin harus "cat / proc / mdstat" atau mdadm -A --scan atau insmod raid1 atau insmod raid5 dan kemudian mdadm -A --scan) dan Anda akan menggunakan / dev / md0 atau / dev / mapper / my-vg alih-alih / dev / sda

lalu coba pasang

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

Apakah ini drive Anda? Keren!

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

(Atau yang mana / dev drive root Anda, dengan jalur yang sudah terpasang itu)

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

(Paksa jika tidak menyukai partisi Anda.)

Sekarang seharusnya boot ke grub, dan Anda dapat menggunakan perintah grub untuk boot, setelah me-reboot dan memilih drive boot yang tepat dari BIOS Setup, atau dengan menekan ESC atau F12 tergantung pada BIOS Anda dan apakah Anda cukup cepat, maka pada prompt Grub - Anda dapat menggunakan penyelesaian tab untuk menemukannya jika bukan (hd0,1) tetapi (hd1,3) atau yang lainnya, tetapi berhati-hatilah, penyelesaian tab terkadang hang selama beberapa detik jika grub tidak dapat membaca drive .

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

Atau, semoga Anda masih memiliki file grub.cfg yang utuh ... atau mungkin ini akan berfungsi:

grub-mkconfig -o /mnt/boot/grub/grub.cfg
Dagelf
sumber
1
Itu tidak suka partisi saya, tetapi -ftidak berfungsi. Saya harus menggunakan--force
RM
untuk boot dari GRUB, pada sistem saya, saya harus mengubah di atas seperti: linux /vmlinuz root=/dev/sda1 (yaitu folder root) initrd /boot/initrd.img (mis. add .img)
Warner
6

Solusi yang direvisi berdasarkan kode di atas

Solusi dari atas tidak akan berfungsi sepenuhnya tanpa masalah karena me-mount partisi boot ke / (root) dari sistem file. Itu membuat grub mengeluh bahwa / boot tidak ada, tentu saja. Ini akan memperbaiki masalah itu:

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

Seperti yang Anda lihat, saya juga menghapus jeda baris sehingga lebih mudah dieksekusi untuk semua orang.

Solusi lain (lebih sederhana)

Jika Anda terus mengalami masalah untuk membuatnya berfungsi, Anda harus melihat untuk menyalin partisi / boot ke partisi / (root). Untuk itu, mulailah sistem Anda dengan live boot Ubuntu dan buka terminal. Ketik di dalamnya:

sudo su
fdisk -l

Untuk mengetahui partisi yang Anda miliki. Dalam kasus saya, sda1 adalah partisi / boot saya yang berukuran sekitar 250MB dan sda5 yang berukuran sekitar 500GB. Saya menggunakan nilai-nilai ini dalam perintah di bawah ini:

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

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

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

Atur flag yang dapat di-boot untuk partisi data dan hapus untuk partisi boot:

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 Anda sekarang akan mencari di dalam sda5 untuk file boot. Saatnya melakukan chroot lagi, kali ini dengan beberapa folder yang diperlukan untuk grub dan yang sudah dihasilkan oleh live disk Ubuntu Anda:

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

Instalasi selesai. Tidak ada kesalahan yang dilaporkan.

Jika Anda tidak melihat pesan bahwa file grub.cnf dihasilkan kemudian jalankan perintah pembaruan:

update-grub2 /dev/sda

Sekarang Anda dapat dengan aman reboot dan melihat menu boot terkenal muncul lagi.

Solusi ini adalah satu-satunya yang bekerja untuk saya setelah bermigrasi dari server fisik ke mesin virtual. Saya harap seseorang menemukan ini berguna!

Tim B.
sumber
0

Saya tahu, ini adalah masalah lama, tetapi saya memiliki masalah yang sama hari ini dengan versi sebenarnya dari mint-linux (berbasis ubuntu). Saya menemukan solusi yang sangat sederhana! :-) Lepaskan koneksi internet selama instalasi pertama. Ini menghentikan pemuatan grub2 yang tidak kompatibel. Lakukan pembaruan semua setelah instalasi selesai.

Chruegel
sumber
0

Mendapat kesalahan yang sama. Satu-satunya masalah adalah bahwa / cow masih terpasang pada /.

Sedikit sudo umount / sapi berhasil.

Simon Lejoly
sumber
-6

Ini adalah perintah update-grub yang akan memberi Anda kesalahan saat menggunakannya dari live cd. Saya menghadapi situasi yang sama ketika saya melakukan penyelamatan grub. Masalah yang Anda miliki adalah bahwa perintah update-grub dan grub-install tidak berfungsi langsung di bawah live cd (saya tidak tahu mengapa). Jadi, Anda harus pergi ke / usr / sbin di mana perintah berada dan jalankan dari sana (mis ./update-grub).

aveemashfaq
sumber
Tidak, Anda harus memasang hard disk dan chroot ke dalamnya, seperti kata @ green7.
psusi
metode saya juga berhasil. Cobalah. ini lebih sederhana
aveemashfaq
1
Anda tidak punya metode. / usr / sbin sudah di jalan jadi tidak perlu cd di sana. Anda tidak dapat menjalankan grub-install dan perbarui-grub langsung dari live cd (seperti yang Anda catat) karena mencoba untuk mengatur grub untuk mem-boot sistem saat ini, yang akan menjadi live cd, daripada os yang diinstal pada hard mendorong.
psusi
Tentu saja ini tidak berhasil. Anda mendapatkan kesalahan "tidak bisa mendapatkan jalur kanonikal / sapi". Dan hal-hal tentang cd-ing ke / usr / sbin ... oh boy.
dan3
coba itu orang. itu bekerja untuk saya sepanjang waktu
aveemashfaq