Sembuh dari 'grub rescue>' crash [closed]

25

Awalnya diposting ke AskUbuntu.com ...

AskUbuntu telah mengadopsi kebijakan penutupan pertanyaan tentang versi EOL (End Of Life). Ada kontingen vokal untuk menghapusnya juga. Untuk mencegah kemungkinan hilangnya pertanyaan populer ini (342335 view to date), saya menempatkan versi revisi di sini. --- docsalvager

Sistem "klasik" ...

  • Puppy Linux 5.2.8 (Lucid) berdasarkan Ubuntu 10.04 (Lucid Lynx)
  • Boot loader GRUB 2

GRUB 2 menempatkan sejumlah *.modfile (modul kernel) /boot/grub. Menghapus file-file ini (mengira itu file suara salah tempat) mengakibatkan kegagalan saat reboot dan prompt grub rescue>.

Bagaimana memulihkan dalam situasi ini?

DocSalvager
sumber
1
Sepertinya pertanyaan bodoh .. jelas Anda mengembalikan file yang dihapus dari cadangan, atau instal ulang grub (dan sudah ada banyak pertanyaan tentang cara melakukannya)
psusi
Statistik tampilan absolut di masa lalu sama relevannya dengan yang dimiliki oleh surat kabar kemarin.
Anthon
Surat kabar dari masa lalu telah memecahkan banyak kejahatan dan bertanggung jawab atas banyak penyelesaian masalah yang membuat dunia menjadi tempat yang lebih baik.
DocSalvager
Sepertinya saya bahwa boot ke mode penyelamatan dari DVD dan menginstal ulang grub dari sana mungkin akan ideal. Ini mungkin jauh lebih mudah bagi kebanyakan orang karena kehilangan data yang disebutkan harus dibatasi pada file dalam paket.
Bratchley
Bukan untuk mengatakan bahwa saya tidak berpikir memancing file tertentu dari initrd tidak pintar. Saya hanya berpikir itu mungkin membingungkan orang karena itu membantu. Booting ke mode penyelamatan / pemulihan adalah prosedur yang lebih umum.
Bratchley

Jawaban:

43

Jawaban ini untuk orang lain di luar sana yang jawabannya tidak cocok untuk DocSalvager.

  1. Saya mengikuti penggunaan DocSalvager lsuntuk menemukan partisi hard drive yang benar. Dalam kasus saya itu (hd0,msdos5).
  2. Kemudian saya menjalankan perintah berikut untuk kembali ke layar boot loader grub yang normal.

    grub rescue>  set boot=(hd0,msdos5)
    grub rescue>  set prefix=(hd0,msdos5)/boot/grub
    grub rescue>  insmod normal  
    grub rescue>  normal  
    
  3. Setelah boot ke Ubuntu saya memperbaiki grub boot loader dengan perintah berikut dari terminal.

    sudo grub-install /dev/sda 
    

Harap rujuk sumber ini untuk penelusuran visual proses ini.

Gibado
sumber
6
Saya senang kalian diposting sebelum ini ditutup
smac89
2
Sempurna - persis bantuan yang saya butuhkan untuk boot! Saya juga berlari sudo update-grubsebelumnya grub-install, karena tata letak partisi saya telah berubah.
mwfearnley
Berapa lama insmod normalperintah itu berlangsung? Setelah menekan Enter saya ubuntu hang. Memang ini 'berjalan' sebagai VM di Oracle VirtualBox.
snark
1
Pembaruan: Akhirnya kembali dengan error: failure reading sector 0x8019a4 from 'hd0'jadi saya kira itu terminal cantik!
snark
jawaban legendaris!
Zack
28

Sembuh dari kecelakaan penyelamatan grub ...

  • grub rescue>tidak mendukung cd, cpatau perintah sistem file lain kecuali variasinya sendiri lsyang benar-benar sejenis findperintah.
  • Jadi pertama-tama, harus menemukan partisi dengan /bootdirektori yang berisi vmlinuzdan file-file image boot lainnya ...

    grub rescue>  ls  
    (hd0,4) (hd0,3) (hd0,2) (hd0,1)  
    
    grub rescue>  ls (hd0,4)/boot
    ... some kind of 'not found' message
    
    grub rescue>  ls (hd0,3)/boot
    ... some kind of 'not found' message
    
    grub rescue>  ls (hd0,2)/boot
    ... grub ... initrd.img-2.6.32-33-generic ... vmlinuz-2.6.32-33-generic 
    
    • ls tanpa argumen mengembalikan empat partisi pada sistem ini.
    • ls (hd0,4)/boottidak menemukan /bootdirektori pada partisi (hd0,4).
    • ls (hd0,3)/boottidak menemukan /bootdirektori pada partisi (hd0,3).
    • ls (hd0,2)/bootmenemukan /bootdirektori pada partisi (hd0,2)dan berisi a vmlinuzdan file boot image lain yang kita inginkan.
  • Untuk mem-boot secara manual dari grub rescue>prompt ...

    grub rescue>  set root=(hd0,2)/boot  
    grub rescue>  insmod linux  
    grub rescue>  linux (hd0,2)/boot/vmlinuz-2.6.32-33-generic  
    grub rescue>  initrd (hd0,2)/boot/initrd.img-2.6.32-33-generic  
    grub rescue>  boot  
    
    • Atur rootuntuk menggunakan /bootdirektori pada partisi (hd0,2).
    • Muat modul grub linux.
    • Setel modul itu untuk menggunakan gambar kernel vmlinuz-2.6.32-33-generic.
    • Set initrd (init RAM disk) untuk menggunakan gambar initrd.img-2.6.32-33-generic.
    • Boot Linux.
  • Ini mem-boot ke prompt perintah BusyBox yang memiliki semua perintah sistem file dasar ( dan kemudian beberapa! ).

  • Kemudian dapat memindahkan *.modfile kembali ke /boot/grubdirektori ...

    busybox>  cd /boot  
    busybox>  mv mod/* grub
    busybox>  reboot
    
  • Reboot yang Berhasil!

Lihat juga ...

DocSalvager
sumber
Saya tidak dapat menemukan folder boot di level root di BusyBox
souparno majumder
1
Vmlinuz, ... mem-boot image yang Anda cari bisa berada di sistem file root tingkat atas, jadi coba gunakan hanya garis miring. Itu juga akan menampilkan direktori tingkat atas. Jika gambar boot tidak berada di root tingkat atas, Anda dapat mulai mencoba direktori yang paling menjanjikan hingga Anda menemukannya. Sebagai contoh: ls (hd0,1)/, ls (hd0,2)/, ls (hd0,2)/initramfs/, dll ..
DocSalvager
Dalam kasus saya, setelah berjalan ls (hd0,7)/boot, itu menunjukkan attempt to read or write outside of disk 'hd0'.
Daisy
Ada kurang dari 7 partisi pada drive hd0. Mungkin juga ada beberapa ruang yang tidak terisi pada drive yang bukan bagian dari partisi apa pun.
DocSalvager
1
Saya harus mengatur awalan ke / boot / grub sebelum diizinkan untuk menjalankan linux insmod!
Emil