Phục hồi từ 'cứu hộ grub>' sự cố [đóng]


25

Ban đầu được đăng lên AskUbfox.com ...

AskUbfox đã áp dụng chính sách đóng câu hỏi về các phiên bản EOL (End Of Life). Có một đội ngũ thanh nhạc để loại bỏ chúng là tốt. Để ngăn chặn khả năng mất câu hỏi phổ biến này (342335 lượt xem cho đến nay), đang đặt phiên bản sửa đổi tại đây. --- tài liệu

Hệ thống "cổ điển" ...

  • Puppy Linux 5.2.8 (Lucid) dựa trên Ubuntu 10.04 (Lucid Lynx)
  • Bộ tải khởi động GRUB 2

GRUB 2 đặt một số *.modtệp (mô-đun hạt nhân) vào /boot/grub. Xóa các tệp này (nghĩ rằng chúng là các tệp âm thanh bị thất lạc) dẫn đến lỗi khi khởi động lại và lời nhắc grub rescue>.

Làm thế nào để phục hồi trong tình huống này?


1
Có vẻ như một câu hỏi ngớ ngẩn .. rõ ràng bạn có thể khôi phục các tệp đã bị xóa khỏi bản sao lưu hoặc cài đặt lại grub (và có rất nhiều câu hỏi về cách thực hiện điều đó)
psusi 28/12/14

Số liệu thống kê xem tuyệt đối trong quá khứ cũng có liên quan như số liệu của tờ báo ngày hôm qua.
Anthon

Báo chí từ xưa đã giải quyết vô số tội ác và chịu trách nhiệm cho rất nhiều cách giải quyết vấn đề khiến thế giới trở nên tốt đẹp hơn.
DocSalvager

Dường như với tôi rằng việc khởi động vào chế độ cứu hộ khỏi DVD và cài đặt lại grub từ đó có lẽ là lý tưởng. Có lẽ mọi thứ đơn giản hơn nhiều đối với hầu hết mọi người vì việc mất dữ liệu được đề cập nên được giới hạn ở các tệp trong gói.
Bratchley

Không phải nói rằng tôi không nghĩ rằng việc khai thác các tệp cụ thể trong initrd là không thông minh. Tôi chỉ nghĩ rằng nó có thể gây nhầm lẫn cho mọi người vì nó là để giúp đỡ. Khởi động vào chế độ cứu / phục hồi là một thủ tục phổ biến hơn.
Bratchley

Câu trả lời:


43

Câu trả lời này dành cho những người khác mà câu trả lời của DocSalvag không có tác dụng.

  1. Tôi đã theo dõi sử dụng của DocSalvag lsđể tìm phân vùng ổ cứng chính xác. Trong trường hợp của tôi, nó đã được (hd0,msdos5).
  2. Sau đó, tôi đã thực hiện các lệnh sau để quay lại màn hình bộ tải khởi động grub bình thường.

    grub rescue>  set boot=(hd0,msdos5)
    grub rescue>  set prefix=(hd0,msdos5)/boot/grub
    grub rescue>  insmod normal  
    grub rescue>  normal  
    
  3. Sau khi khởi động vào Ubuntu, tôi đã sửa chữa bộ tải khởi động grub bằng các lệnh sau từ thiết bị đầu cuối.

    sudo grub-install /dev/sda 
    

Vui lòng tham khảo nguồn này để xem trực quan quá trình này.


6
Tôi rất vui vì các bạn đã đăng trước khi nó được đóng lại
smac89

2
Hoàn hảo - chính xác là sự giúp đỡ tôi cần để khởi động! Tôi cũng đã chạy sudo update-grubtrước đó grub-install, vì bố cục phân vùng của tôi đã thay đổi.
mwfearnley

Không bao lâu insmod normallệnh mất? Sau khi nhấn Enter ubfox của tôi bị treo. Phải thừa nhận rằng nó 'đang chạy' như một VM trong Oracle VirtualBox.
sủa

1
Cập nhật: Cuối cùng nó đã trở lại với error: failure reading sector 0x8019a4 from 'hd0'vì vậy tôi đoán đó là thiết bị đầu cuối đẹp!
sủa

câu trả lời huyền thoại!
zack

28

Phục hồi từ một vụ tai nạn cứu hộ ...

  • grub rescue>không hỗ trợ cd, cphoặc bất kỳ lệnh hệ thống tập tin nào khác ngoại trừ biến thể của chính lsnó thực sự là một loại findlệnh.
  • Vì vậy, trước tiên, phải tìm phân vùng với /bootthư mục chứa vmlinuzvà các tệp hình ảnh khởi động khác ...

    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 không có đối số trả về bốn phân vùng trên hệ thống này.
    • ls (hd0,4)/bootkhông tìm thấy một /bootthư mục trên phân vùng (hd0,4).
    • ls (hd0,3)/bootkhông tìm thấy một /bootthư mục trên phân vùng (hd0,3).
    • ls (hd0,2)/boottìm thấy một /bootthư mục trên phân vùng (hd0,2)và nó chứa một vmlinuzvà các tệp hình ảnh khởi động khác mà chúng ta muốn.
  • Để tự khởi động từ grub rescue>dấu nhắc ...

    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  
    
    • Đặt rootđể sử dụng /bootthư mục trên phân vùng (hd0,2).
    • Tải mô-đun grub linux.
    • Đặt mô-đun đó để sử dụng hình ảnh hạt nhân vmlinuz-2.6.32-33-generic.
    • Đặt initrd (đĩa RAM init) để sử dụng hình ảnh initrd.img-2.6.32-33-generic.
    • Khởi động Linux.
  • Điều này khởi động đến một dấu nhắc dòng lệnh BusyBox có tất cả các lệnh hệ thống tập tin cơ bản ( và sau đó là một số! ).

  • Sau đó có thể di chuyển các *.modtập tin trở lại /boot/grubthư mục ...

    busybox>  cd /boot  
    busybox>  mv mod/* grub
    busybox>  reboot
    
  • Khởi động lại thành công!

Xem thêm ...


Tôi không thể tìm thấy bất kỳ thư mục khởi động nào ở cấp gốc trong BusyBox
souparno majumder

1
Các hình ảnh khởi động vmlinuz, ... bạn đang tìm kiếm có thể nằm trong hệ thống tập tin gốc cấp cao nhất, vì vậy hãy thử sử dụng chỉ một dấu gạch chéo. Điều đó cũng sẽ hiển thị các thư mục cấp cao nhất. Nếu hình ảnh khởi động không nằm trong thư mục gốc cấp cao nhất, bạn có thể bắt đầu thử các thư mục hứa hẹn nhất cho đến khi bạn tìm thấy chúng. Ví dụ: ls (hd0,1)/, ls (hd0,2)/, ls (hd0,2)/initramfs/, vv ..
DocSalvager

Trong trường hợp của tôi, sau khi chạy ls (hd0,7)/boot, nó cho thấy attempt to read or write outside of disk 'hd0'.
cúc

Có ít hơn 7 phân vùng trên ổ đĩa hd0. Nó cũng có thể là có một số không gian chưa phân bổ trên ổ đĩa không phải là một phần của bất kỳ phân vùng.
DocSalvager

1
Tôi đã phải đặt tiền tố thành / boot / grub trước khi được phép chạy linux insmod!
Emil
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.