Kesalahan grub: file '/grub/i386-pc/normal.mod' tidak ditemukan?

17

Saya baru-baru ini menginstal lengkungan (semoga berhasil) di mesin saya. Ketika saya pergi untuk reboot namun saya punya masalah. Saya mendapat layar hitam dengan tulisan teks

Grub loading.
Welcome to GRUB!
error: file '/grub/i386-pc/normal.mod' not found.
Entering rescue mode...
grub rescue>

Sejak itu saya telah mencari jawaban di Google. Saya hampir menemukan satu di sini di forum Ubuntu namun kemudian saya melihat salah satu komentar mengatakan itu tidak benar. Ada juga jawaban lain tetapi saya tidak yakin apakah saya ingin menginstal dari live CD karena takut mengacaukan semuanya.

Anda akan mengerti ketakutan saya jika Anda juga menghabiskan 7 jam untuk mengatur ini setelah terus-menerus mengalami masalah partisi, perintah, tutorial, dan sistem. Sungguh menyenangkan.

Adakah yang tahu solusi mudah untuk membuat grub bekerja?

Grifon
sumber
Saran kedua (dengan liveCD dan chroot) mungkin patut dicoba. Atau variasi di atasnya: Saya bukan pengguna lengkung tetapi telah menginstalnya sebelumnya, dan dari apa yang saya ingat, Anda mungkin ingin merenungkan saran itu sehubungan dengan berbagai tahap pemasangan lengkungan, beberapa di antaranya melibatkan chroot. Jika Anda dapat mundur ke langkah sebelumnya dengan mem-boot CD arch dan kemudian memasang dan chroot ke instalasi Anda, Anda harus dapat mencoba grub-install. Anda tidak harus mengulangi salah satu langkah, cukup gunakan sebagai panduan untuk mendapatkan chroot dari liveCD.
goldilocks
Sementara saya tidak di depan komputer sekarang, saya yakin saya sudah mencoba menginstal grub dan tidak berhasil.-
Griffin
@ Griffin Tidak berfungsi seperti "grub-install" gagal, atau tidak memperbaiki masalah?
derobert
@derobert grub-install bukan perintah yang valid \
Griffin
@goldilocks Yang kedua juga tidak berfungsi
Griffin

Jawaban:

9

Suatu hal yang sangat mengganggu ...

Karena direktori / boot / grub / i386-pc tidak ada, saya akhirnya menyelesaikan masalah dengan menyalin seluruh / usr / lib / grub / i386-pc ke / boot / grub. Itu saja.

cp -r /usr/lib/grub/i386-pc /boot/grub
flittermice
sumber
Saya juga melakukan itu karena itu juga hilang. Sayangnya, itu tidak memperbaikinya.
Wolfpack'08
8

Saya di tengah masalah yang sama (kebetulan juga di lengkungan)

Grub gagal menemukan file ini dan berjalan karena menggunakan "awalan" yang salah

Inilah yang Anda lakukan. Anda boot ke mode penyelamatan grub, maka Anda cukup mencari cara untuk membuatnya boot.

Pertama Anda menjalankan set ini akan mencantumkan variabel, misalnya milik saya

cmdpath=(hd0)
prefix=(hd1,msdos3)/boot/grub
root=hd1,msdos3

Sekarang, awalan adalah variabel tempat grub mencari file normal.mod. Dalam kasus saya hd1, msdos3 sama dengan / dev / sdb3 (sama dengan, hd0, msdos1 akan menjadi / dev / sda1) yang mungkin ingin Anda lakukan untuk melihat daftar partisi yang valid adalah dengan mengetikkan ls

Sekarang, dalam kasus saya, sekali lagi, grub diinstal pada / dev / sdb1 yang di-mount sebagai / boot di partisi arch saya, sehingga awalan yang benar adalah (hd1, msdos1) / grub

Jadi bagi saya untuk boot, saya perlu melakukan ini:

set prefix=(hd1,msdos1)/grub
insmod normal
normal

Dalam kasus Anda, Anda harus mengingat atau menebak partisi tempat Anda menginstal grub. Anda dapat menebak dengan salah, itu tidak akan membahayakan, perintah insmod hanya akan gagal dan Anda dapat mencoba lagi dengan partisi lain.

Setelah ini, grub memuat seperti biasanya, dan saya dapat memilih dari daftar apa yang ingin saya boot. Biasanya ketika kekacauan seperti ini terjadi, instal ulang grub ke mbr Anda (menggunakan grub-install ) harus memperbaikinya secara permanen sehingga Anda tidak harus melakukan ini setiap kali Anda boot. Namun saya mengalami banyak kesulitan mencari tahu apa yang harus dilakukan jika memperbaikinya tidak semudah ini (atau saya akan membagikan apa yang harus Anda lakukan).

Hanya jika ini gagal (mis. Jika awalannya benar tetapi Anda masih tidak bisa boot) Anda harus memilih untuk hidup atau menyelamatkan CD untuk mengatasi masalah (yang terbaik adalah menghindari itu)

Pemeliharaan
sumber
Ini mungkin sedikit pertanyaan lama, tetapi saya menemukan bahwa seseorang harus menjawab bagaimana cara benar-benar menggunakan penyelamatan grub daripada menggapai-gapai menggunakan live cd dan usb untuk memperbaiki keadaan. Kami tidak selalu memiliki media langsung untuk membantu kami, dan bahkan jika kami melakukannya, biasanya lebih baik bekerja dari lingkungan pilihan kami.
Cadangan
Penjelasan hebat! (Terutama catatan tentang "menebak salah tidak akan menyakiti apa pun"). Saya mengalami masalah yang sama dengan sistem dual boot windows + Ubuntu, setelah salah berpikir bahwa menghapus partisi windows tidak akan berdampak pada Ubuntu. Lagi pula, posting ini benar-benar membantu dalam memahami cara memperbaiki kesalahan. Karena saya tidak ingat partisi mana yang berisi grub, saya hanya mendaftar semuanya ls, lalu mencobanya satu per satu sampai saya menekan kombinasi yang tepat :-)
Leigh
@Leigh senang itu membantu seseorang :)
Cadangan
1
Memperbaiki sesuatu selalu baik, tetapi memahami bagaimana Anda memperbaikinya lebih baik lagi :-) Cheers.
Leigh
Anda jenius
Ashish Doneriya
5

Saya baru saja mengalami masalah ini hari ini setelah instalasi baru Mint 15.

Pemasang membuat /boot/grub/x86_64-efimodul tetapi bukan /boot/grub/i386-pcmodul biasa .

Instalasi ulang Grub dari Live CD memperbaiki masalah ini.

Ganti / dev / sda dan / dev / sda1 dengan perangkat boot dan partisi boot Anda dan jalankan perintah berikut dari Live CD:

sudo mount /dev/sda1 /mnt
sudo grub-install --boot-directory=/mnt /dev/sda
sudo reboot
jamesallman
sumber
1

Terima kasih atas kiriman Anda. Saya memecahkan pesan kesalahan yang hampir identik - "file '/grub2/i386-pc/normal.mod' not found" setelah instalasi baru Linux CentOS 5.11 pada komputer Dell Optiplex lama dengan Windows Vista, untuk membuat dual sistem -boot.

Yang rumit situasi saya adalah bahwa saya sudah mencoba dan gagal menginstal distro Fedora 20 yang lebih baru, yang menggunakan GRUB2 bukan GRUB (LEGACY), pada partisi standar FEDORA. Kemudian saya mencoba menginstal CentOS secara langsung, menjaga partisi Windows dan menimpa partisi FEDORA.

Selama instalasi CentOS, saya meninggalkan partisi (Windows) pertama saya sendiri (hd0,0) dan membuat direktori / boot pada partisi (boot) kedua (hd0,1). Saya kemudian memilih untuk tidak mengubah MBR pada saat itu dan sebagai gantinya memilih opsi lain (bootloader di partisi lain).

Setelah apa yang tampaknya instalasi berhasil, itu reboot ke kesalahan di atas.

Saya menduga bahwa informasi boot pada partisi pertama terus menunjuk ke lokasi GRUB2. CPU tidak dapat menemukan normal.mod, mungkin karena partisi FEDORA00 yang dibuat sebelumnya telah dihapus.

Inilah langkah-langkah saya:

  1. Boot dari CD instalasi Centos 5 saya ke mode penyelamatan ("linux rescue").

  2. Pasang drive lokal: chroot / mnt / sysimage

  3. Beralih ke mode pengguna tunggal: su

  4. Perbarui instalasi CentOS: pembaruan yum

  5. Gunakan editor emacs untuk menambahkan "Microsoft Windows Vista" ke file grub.conf: emacs /boot/grub/grub.conf, dan jadikan Vista OS default.

    ( CATATAN: Lihat www.cyberciti.biz/faq/grubconf-for-windows-vista-or-xp-dual-boot/ dan https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html /Installation_Guide/sn-medialess-editing-grub-conf.html .)

  6. Coba perbarui MBR: grub-install / dev / hda

  7. Reboot ke kesalahan GRUB yang tidak dikenal, di mana CPU digantung setelah menampilkan "GRUB".

  8. Reboot dari disk instalasi Windows Vista asli (atau disk pemulihan Windows lainnya) dan pilih opsi untuk memperbaiki disk. Terima pesan bahwa MBR telah diperbaiki.

  9. Reboot dengan benar ke Windows Vista.

Saya yakin ada solusi yang lebih elegan, tetapi ini berhasil bagi saya. Saya juga berusaha mengunduh paket migrasi GRUB ke GRUB2, seperti yang dijelaskan di http://help.ubuntu.com/community/Grub2/Upgrading , dengan mencoba:

$ yum install grub-pc

Tetapi tidak dapat menemukan paket. Mungkin aku seharusnya mencoba yum install grub.

dkergyl
sumber
0

Menambahkan ke flittermice ...

jika Anda boot dari USB, dan memiliki folder i386, Anda dapat membuka folder i386 pada partion yang rusak sebagai root dan kemudian menyalin folder i386 yang berfungsi dari usb.

Yakub David C. Cunningham
sumber
0

Saya telah masuk ke sistem CentOS 6.7 saya dalam dua tahap. Pertama, saya telah mengikuti saran dari flittermice di atas, boot dari live CD, me-mount / dev / sda2 saya sebagai / mnt dan hanya menyalin folder i386-pc dari / mnt / usr / ... (Anda dapat menemukan di mana milik Anda berada oleh find /|grep i386) ke / boot / grub dan reboot.

Ini memberi saya grub> bukannya grub rescue> ;-).

Kemudian saya telah mengikuti panduan di sini [ https://www.linux.com/learn/tutorials/776643-how-to-rescue-a-non-booting-grub-2-on-linux/] untuk menemukan dan boot ke partisi saya. Itu (hd0,2), karena (hd0,1) diambil oleh swap.

Kemudian, saya menemukan bahwa membuat boot ini "otomatis" tidak mungkin, mungkin karena / boot saya ada di ext4 dengan ukuran inode 256, dan grub1 lama membutuhkan 128. Saya akan mencoba mengikuti beberapa perintah dari [ http: // kb.kristianreese.com/index.php?View=entry&EntryID=113] untuk menyiapkan partisi sebelum instalasi.

Pavel Anaschenko
sumber
0

Instal ulang Ubuntu. Pergi ke "lakukan sesuatu yang lain". Pilih partisi instalasi Windows Anda sebagai lokasi di mana ia harus menginstal bootloader.

Jika Anda memiliki instalasi Windows yang ada, Anda harus menginstal grub ke partisi yang sama; jika tidak, Anda akan melihat masalah dalam pertanyaan.

Ini relevan untuk 14, 15, 16, 17 Ubuntu semua versi dan mungkin versi sebelumnya. Ketika ditanya di mana menginstal boot loader, jangan membuat dan memilih partisi / boot; sebagai gantinya, gunakan partisi Windows.

Terima kasih.

Wolfpack'08
sumber
0

Coba live grub cd: http://ccm.net/faq/2677-super-grub-disk-live-cd Kemudian terminal: cp -r / usr / lib / grub / i386-pc / boot / grub adalah Satu-satunya metode ini bekerja untuk saya.

Celso de Carvalho
sumber