Saya mencoba menginstal ulang grub dari drive USB. Saya menjalankan yang berikut ini:
sudo mount /dev/sda6 /mnt
sudo grub-install --root-directory=/mnt /dev/sda
Saya mendapatkan kesalahan berikut:
grub-probe: error: failed to get canonical path of /cow.
dapatkah seseorang menjelaskan kesalahannya, dan bagaimana cara menyelesaikannya?
Edit
Saya mencoba memperbaiki sistem dual-boot yang rusak, berjalan dari USB yang berisi linux mint.
sda6
? Apakah jawaban saya di sini membantu?Jawaban:
Ikuti langkah ini:
Boot ke sesi Linux Live.
Pasang
/
partisi OS yang Anda instal ke/mnt
Siapkan
chroot
lingkungan:Anda sekarang berada di instalasi Linux "palsu" yang memperlakukan
/mnt
sebagai/
. Ini berarti bahwa semua file yang diperlukan untuk GRUB berada di/boot
tempat sistem mengharapkannya dan Anda dapat menginstal GRUB seolah-olah Anda benar-benar menjalankan sistem yang diinstal:Sekarang reboot dan Anda akan melihat menu GRUB muncul secara normal.
sumber
root-device
opsi dan apa yang Anda harapkan dari opsi itu? Sudahkah Anda mengaturchroot
lingkungan? Setiap kali Anda mengajukan pertanyaan, Anda perlu menjelaskan dengan tepat apa yang Anda coba lakukan, kami tidak dapat menebaknya.--root-directory
ada. Baca jawaban saya di sini yang menjelaskan cara menginstal ulang grub.Jika grub mengatakan bahwa ia tidak dapat menyelesaikan jalur kanonik sesuatu, itu berarti ia tidak ada atau
realpath()
gagal.Dalam hal ini, coba:
Jika kedua perintah mengatakan "tidak dapat menemukan file atau direktori", maka Anda harus membuatnya.
Jika perintah kedua berfungsi, tetapi yang pertama tidak, periksa mengapa
realpath()
tidak berhasil. Salah satu alasannya bisa jadi yang/proc
tidak dipasang. Dalam beberapa implementasi libc,/proc/self/fd
digunakan untuk mendapatkan path kanonik file.sumber
Berdasarkan apa yang ditulis, sepertinya Anda mencoba menginstal GRUB ke / dev / sda. Anda tidak ingin memasang disk.
Anda mungkin mencari:
grub-install /dev/sda
Halaman manual GRUB untuk referensi, atau Anda dapat
man grub-install
dari sistem Anda: http://linux.die.net/man/8/grub-installsumber
Saya mendapatkan kesalahan ini juga, dan saya pikir itu tidak terjadi di chroot.
Latar Belakang
Saya pikir ini adalah ketika systemd tidak dapat menemukan jalan karena sudah terpasang di direktori. Jadi, perbedaannya adalah ketika Anda mengatur chroot Anda sudah mengkonfigurasi akses ke perangkat keras, termasuk drive.
Meskipun Anda dapat mengkonfigurasi akses ini di dalam Systemd itu tidak berarti Anda dapat mengkonfigurasi izin untuk drive tersebut dengan cara yang sama.
Misalnya, saya membuat file ini:
Dan itu berisi pengaturan ini:
Ini masih tidak berfungsi saat menggunakan
grub-install /dev/sda
atauupdate-grub
untuk USB pada Pi debootstrapped dengan Debian Stretch. Bahkan menggunakan grub-uboot dan grub-efi-arm masih ada kesalahan yanggrub-probe
tidak dapat menemukan jalur kanonik.Bukan hanya itu tetapi meskipun
update-grub
akan melihat dan tahu apa sistem operasi itu, tetapi menariknyagrub-install
tidak mengenali sistem operasi Debian pada USB.Contoh
Menarik, ketika saya membuat chroot dan dapat berjalan
update-grub
, meskipun saya berada di sistem operasi yang saya debootstrap ke USB itu sendiri tidak melihat sistem operasinya sendiri!Itu hanya melihat Raspbian. Ini terjadi hanya ketika mencoba menginstal dan memperbarui GRUB di dalam wadah, tetapi ketika saya keluar dari chroot.
Tonton cara kerjanya sekarang karena saya tidak meng-unmount direktori chroot:
Dari luar wadah pikiran Anda, saya menjalankan perintah ini dengan
grub-uboot
diinstal pada Raspbian dan tidak ada Grub pada USB yang mengandung Debian debootstrapped.Ini tidak terjadi menggunakan salah satu gambar yang tersedia secara tidak resmi untuk ARM Debian , tetapi jelas ini masih merupakan kustomisasi yang belum tersedia untuk debootstrapping.
Penyelesaian masalah
Sungguh ada saat-saat ketika lebih baik hanya membuat jalan. Satu-satunya kemungkinan berikutnya (dan kemungkinan) adalah cukup menulis GRUB. Dan untuk itu saya hanya akan membaca di halaman ini.
https://www.dedoimedo.com/computers/grub-2.html
Hal lain yang ingin saya bagikan tentang masalah ini adalah solusi yang mungkin berhasil, tetapi menyadari kartu microSD sangat sensitif. Saya telah membangun gambar Linux saya sendiri dan belajar ini dengan cepat. Hal terbaik untuk dilakukan adalah menggunakan Qemu kapan saja Anda bisa, tetapi untuk mencoba menghapus tabel partisi lama Anda mungkin mencoba menjalankannya
sgdisk --zap-all
di drive.Bahkan, kadang-kadang jika itu memberikan kesalahan pertama kali dan itu bukan kesalahan hanya baca, Anda bisa menjalankannya lagi dan akhirnya semua tabel partisi baru atau lama.
Dan Anda dapat menggunakan Qemu untuk meniru Raspberry Pi pada PC berbasis AMD / Intel standar. Saya akan merekomendasikannya. Saya tahu ini lebih banyak informasi daripada yang berkaitan dengan posting asli, tapi saya pikir itu kemungkinan bagaimana kesalahan ini diturunkan. Ini adalah usia wadah.
sumber
Bagi siapa pun yang berjuang dengan ini yang mencoba menggunakan USB langsung atau cara chroot lain untuk menginstal ulang atau menginstal grub - Saya sudah berurusan dengan ini beberapa kali dan lupa untuk mendokumentasikannya sebelumnya walaupun saya bermaksud.
Masalah yang Anda hadapi adalah grub tidak memiliki akses ke jalur yang Anda maksud sebagai sumber (/ boot) atau tujuan (dapatkah sistem dan chroot Anda melihat
/dev/sda
contohnya?) Atau keduanya. Saat Anda bersiap untuk chroot, Anda membuat ikatan bind yang dapat diakses di lingkungan chroot, atau Anda melakukannya di dalam chroot menggunakan mount -t. Ada begitu banyak panduan online yang melakukannya dengan cara apa pun.Anda perlu memastikan bahwa Anda mengikat / dev atau hanya partisi tertentu yang berisi file boot di / boot (mis. / Dev / sda1). / boot adalah partisi yang terpisah atau direktori di / Chroot membutuhkan akses ke drive yang akan Anda instal (ulang) grub untuk melakukan fdisk -l di chroot untuk memastikan Anda dapat melihat perangkat yang tercantum dalam output. Perhatikan juga, jika Anda tidak memiliki partisi boot terpisah, tetapi Anda memiliki direktori boot di / root dengan file boot (bukan hanya titik mount) maka Anda hanya perlu me-mount partisi yang berisi root. Maka Anda tidak perlu me-mount apa pun ke / root / boot.
Anda juga perlu memastikan Anda mengikat sistem file proc dan sistem file sys, tetapi setiap panduan yang saya lihat memiliki keduanya. Saya baru saja melihat / dev kadang-kadang ketinggalan. Mungkin ada beberapa kasus ketika Anda tidak membutuhkannya, tetapi saya tidak tahu mereka.
tl; dr: pastikan Anda mengikat mount / dev
sumber
chroot
ketika pertanyaannya bukan tentang `` chroot``?