Nhắc nhở cứu hộ, sửa chữa grub


30

Gần đây tôi đã phân vùng lại ổ cứng và tôi đã làm hỏng GRUB trên hệ thống của mình. Khi khởi động, tôi nhận được lời nhắc cứu GRUB và tôi phải thực hiện các bước sau để khởi động bình thường:

set root=(hd0,msdos6)
set prefix=(hd0,msdos6)/boot/grub
insmod normal
normal

(Những bước này đã được tìm thấy trên một bài đăng khác ở đây!).

Tôi rất mệt mỏi khi lặp lại điều này trên mỗi lần khởi động, làm cách nào để khắc phục GRUB vĩnh viễn?


1
Hai khả năng: (1) Boot-Repair (2) Super Grub Cứu đĩa Xem: http://linuxnorth.wordpress.com/2012/02/07/repairing-grub/
CentaurusA

1
Các bước được liệt kê trong câu hỏi để khởi động làm việc cho tôi. Mọi người nên nhớ chính xác phân vùng của linux.
TheCrazyProgrammer

1
Như những người khác đã nói thực hiện update-grub và sau đó grub-install / dev / sda giải quyết vấn đề.
TheCrazyProgrammer

Xem câu trả lời của Karthik cho "không tìm thấy tệp": askubfox.com/questions/443241/iêu
samis

Câu trả lời:


11

Để khắc phục cứu hộ grub, hãy thực hiện theo các bước sau:

  • Điều đầu tiên là chúng ta phải khởi động hệ điều hành của mình sau đó sau khi chúng ta có thể sửa lỗi grub.

    #to start OS-->
    error: unknown filesystem.
    Entering rescue mode...
    grub rescue>

    Khi bạn thấy một lỗi như vậy trước tiên, chúng ta phải kiểm tra xem Files Filesystem là ext2 '

    grub rescue> ls        # type 'ls' and hit enter to see drive partition.
    (hd0) (hd0,msdos6) (hd0,msdos5) (hd0,msdos4) ...   # you will see such things 

đây là ổ đĩa của chúng tôi bây giờ chúng tôi phải kiểm tra xem cái nào là ext2.

grub rescue>ls (hd0,msdos6)
error: disk 'hd,msdos6' not found.

đi cho các ổ đĩa khác cho đến khi bạn nhận được hệ thống tập tin của hệ thống là ext2.

grub rescue>ls (hd0,msdos5)
error: disk 'hd,msdos5' not found.
grub rescue>ls (hd0,msdos2)
(hd0,msdos2): Filesystem is ext2        # this is what we want

bây giờ đặt đường dẫn

grub rescue>set boot=(hd0,msdos2)
grub rescue>set prefix=(hd0,msdos6)/boot/grub
grub rescue>insmod normal
grub rescue>normal
  • Bây giờ chỉ cần sửa grub bằng cách làm theo lệnh trên bất kỳ Ubuntu nào

    sudo grub-install /dev/sda
    sudo apt-get update
    # to update grub
    sudo apt-get upgrade

đảm bảo bạn phải cập nhật grub sau khi đăng nhập vào HĐH


1
OP đã biết cách khởi động vào hệ điều hành của mình. Câu trả lời này có thể ngắn gọn hơn.
Anh Cả Geek

1
Câu trả lời này rất hữu ích cho tôi. Vấn đề của tôi không hoàn toàn giống với câu hỏi ban đầu, vì vậy thông tin bổ sung trở nên hữu ích.
retroj

1
+1 Điều này được khắc phục bởi các sự cố khi cài đặt KDE Neon không thành công.
Darren Lewis

lỗi: tập tin '/boot/grub/i386-pc/n normal.mod' Tôi không nên làm gì?
BhushanDhamale

7

Tôi sẽ thử chạy update-grubđể xây dựng grub.conf/ grub.cfgmột lần nữa.

Bạn cũng có thể thử sử dụng grub-install, nhưng tôi nghĩ cái này sẽ không giúp được gì.

Nếu bạn muốn đọc thêm, trước tiên hãy kiểm tra phiên bản nào bạn có (GRUB 1 hoặc 2) bằng cách chạy:

dpkg -l | grep grub

Nếu bạn có GRUB 2, bạn có thể sử dụng hướng dẫn sau: http://www.dedoimedo.com/computers/grub-2.html

Tất nhiên hãy cẩn thận khi xử lý GRUB vì chúng ta đang nói về quá trình khởi động, đây là một cơ chế nhạy cảm.


2
grub-install <correct-drive, i.e. /dev/sda>update-grub2cuối cùng đã làm điều đó cho tôi trên Ubuntu 15.04
Greg Kramida

6

Dường như với tôi, nó update-grublắp ráp grub.cfg, nhưng bạn cũng cần (chạy lại) grub-install(hoặc grub-setup?) Để cập nhật MBR / boot sector với thông tin cơ bản - trên phân vùng nào để tìm grub.cfgtệp & rõ ràng là các mô-đun này.


4

Khi bạn nhận được lời nhắc cứu GRUB, điều đó có nghĩa là bộ tải khởi động GRUB không thể định vị các mô-đun của nó từ phân vùng chứa chúng trong đó /boot/grub. Lý do cho điều này là mã phù hợp với bản ghi MBR của ổ đĩa rất nhỏ và vì vậy mục đích chính của nó là xác định vị trí và tải phần còn lại của mã bộ tải khởi động. Khi đã tải các mô-đun, nó có thể hiển thị menu GRUB và xử lý phần còn lại của quá trình khởi động. Nếu nó không thể tìm thấy các mô-đun, nó đưa ra một dấu nhắc cứu hộ rất hạn chế.

Vì vậy, những gì bạn đang thấy là hoàn toàn bình thường nếu bạn phân vùng lại, do đó phá vỡ tham chiếu mà bộ tải khởi động đã có cho phân vùng chứa các mô-đun khởi động.

Vì bạn có thể khởi động thủ công, cách khắc phục đơn giản nhất là tự khởi động và cài đặt lại bộ tải khởi động trong MBR để nó có tham chiếu chính xác đến phân vùng của bạn. Cách để làm điều đó là:

sudo grub-install /dev/sda

Điều này giả sử bạn khởi động từ /dev/sda(hầu hết các trường hợp, nhưng nếu không, hãy thay thế nó bằng ổ đĩa chính xác).

Giải pháp này đơn giản hơn nhiều so với sử dụng boot-repair, nhưng nếu bạn không chắc chắn thì điều này có thể phù hợp hơn.


1
+1 để giải thích những gì đang diễn ra theo thuật ngữ dễ hiểu.
đơn điệu

2

Cách đơn giản nhất sẽ là:

sudo apt-get purge grub-pc grub-pc-bin

Sau đó:

sudo apt-get install grub-pc grub-pc-bin

2
Đây là một cách tiếp cận búa tạ có thể sẽ hoạt động, nhưng đơn giản hơn là chỉ cần cài đặt lại bộ nạp khởi động để cập nhật tham chiếu đến phân vùng (đã bị hỏng bằng cách phân vùng lại).
bcbc

1

Giải quyết trường hợp cuối cùng của lỗi cứu hộ grub: các vấn đề: 1. Không tìm thấy i386-pc **** Chế độ bình thường không hoạt động cp không hoạt động tìm kiếm . Không hoạt động . Tất cả có thể được giải quyết bằng các lệnh sau, Hoạt động với Ubuntu 18.04 cũng được. Bước 1: Tìm thư mục gốc chứa thư mục.

ls

Ví dụ: nếu thư mục gốc nằm trong (hd0, gpt4), thì hãy gõ

Cái này nó thì trông như thế nào

ls (hd0, 4)/

Bạn sẽ thấy một số tệp hoặc thư mục:

tập tin gốc của tôi là trong (hd0, gpt4)

Bây giờ nếu bạn may mắn thì hãy làm như sau:

set root=(hd0, 4)
set prefix=(hd0, 4)/boot/grub/
insmode normal
normal

Nếu bạn may mắn thì nó sẽ giải quyết vấn đề của bạn. Đôi khi mọi người có vấn đề như không thể tìm thấy thư mục 1386-pc. Trong trường hợp đó, bạn phải xem thư mục grub của bạn ở đâu. Nếu bạn gặp vấn đề như:

không tìm thấy boot / grub / i386-pc / normal.mod

Trong trường hợp này, bạn cần tìm thư mục grub2. Nếu bạn có grub2 và trong thư mục đó, bạn có thể có thư mục i386-pc. Sau đó, bạn cần phải gõ

prefix=(hd0, 4)/grub2/

nó sẽ làm việc Nếu bạn không có grub2 và không thể định vị thư mục i386-pc thì hãy làm như sau:

grub rescue>set root=(hd0, 4)
grub rescue>set prefix=(hd0, 4)/usr/lib/grub
grub rescue>insmode normal
grub rescue>normal

Sau khi thực hiện lệnh này, chế độ cứu hộ của bạn sẽ chuyển sang menu grub . Bây giờ bạn có thể thực thi lệnh linux.

hôn mê linux

grub>set root =(hd0, 4)
grub>set prefix= (hd0, 4)/boot
grub>insmaod linux
grub>linux vmlinuz.....-generic
grub>intrd (hd0, 4)/boot/...-generic
grub>boot

Nó sẽ đưa bạn đến chế độ phục hồi. Từ đó bạn có thể chọn từ một số tùy chọn khôi phục có sẵn. Nếu nó không giúp được gì thì bạn cần tải xuống hệ điều hành Ubuntu, ví dụ như Ubuntu 18.04. Bạn có thể tải xuống từ liên kết sau: liên kết Ubuntu

Tạo một ổ đĩa khởi động và mở máy tính của bạn với đĩa trực tiếp đó. Nó sẽ không làm hại bất kỳ tài liệu của bạn. Xem video về cách làm điều đó. Bây giờ bạn phải tìm thư mục i386-pc của bạn. Nó sẽ ở trong

rootContainingDirectory-usr-lib-grub

Bây giờ sao chép i386-pc vào thư mục boot / grub /. bạn có thể có một vấn đề về quyền để khắc phục loại lệnh sau:

sudo nautilus

Bây giờ, nhấp chuột phải vào thư mục đó và thay đổi chủ sở hữu thành người dùng phiên trực tiếp trên Ubuntu

theo video: thay đổi quyền

Bây giờ sau khi bạn dán nó vào thư mục boot / grub, hãy khởi động lại và tháo ổ USB. Lần này sử dụng bộ lệnh đầu tiên , nó sẽ hoạt động. Nếu lệnh cp đang hoạt động thì bạn cũng có thể làm điều này từ menu grub.

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.