Lỗi grub: không tìm thấy tệp '/grub/i386-pc/n normal.mod'?


17

Gần đây tôi đã cài đặt vòm (hy vọng thành công) trên máy của mình. Khi tôi đi khởi động lại tuy nhiên tôi có một vấn đề. Tôi có một màn hình đen với văn bản nói

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

Kể từ đó tôi đã tìm kiếm một câu trả lời. Tôi gần như đã tìm thấy một ở đây trên các diễn đàn Ubuntu nhưng sau đó tôi thấy một trong những ý kiến ​​nói rằng nó không đúng sự thật. Ngoài ra còn có một câu trả lời khác nhưng tôi không chắc liệu tôi có muốn cài đặt từ đĩa CD trực tiếp hay không vì sợ làm hỏng mọi thứ.

Bạn sẽ hiểu nỗi sợ của tôi nếu bạn đã dành 7 giờ để thiết lập nó sau khi liên tục chạy vào các vấn đề về phân vùng, lệnh, hướng dẫn và hệ thống. Vui thế.

Bất cứ ai cũng biết về một giải pháp dễ dàng để làm cho grub làm việc?


Gợi ý thứ hai (với liveCD và chroot) có lẽ đáng để thử. Hoặc một biến thể của nó: Tôi không phải là người dùng vòm nhưng đã cài đặt nó trước đó và từ những gì tôi nhớ, bạn có thể muốn xem xét đề xuất đó liên quan đến các giai đoạn cài đặt vòm khác nhau, một số trong đó liên quan đến một chroot. Nếu bạn có thể quay lại bước trước đó để khởi động CD vòm và sau đó gắn và chroot vào cài đặt của bạn, bạn có thể thử grub-install. Bạn không phải lặp lại bất kỳ bước nào, chỉ cần sử dụng chúng làm hướng dẫn để nhận được thông báo từ liveCD.
goldilocks

Mặc dù hiện tại tôi không có máy tính nhưng tôi tin rằng tôi đã thử cài đặt grub và nó không hoạt động.-
Griffin

@Griffin Nó không hoạt động như trong "cài đặt grub" không thành công, hoặc nó không khắc phục được vấn đề?
derobert

@derobert grub-install không phải là một lệnh hợp lệ \
Griffin

@goldilocks Cái thứ hai cũng không hoạt động
Griffin

Câu trả lời:


9

Một điều thực sự khó chịu ...

Vì rõ ràng thư mục / boot / grub / i386-pc đơn giản là không có, cuối cùng tôi đã giải quyết vấn đề bằng cách sao chép toàn bộ / usr / lib / grub / i386-pc vào / boot / grub. Đó là tất cả.

cp -r /usr/lib/grub/i386-pc /boot/grub

Tôi cũng đã làm điều đó bởi vì nó cũng mất tích. Thật không may, điều đó đã không sửa nó.
Wolfpack'08

8

Tôi đang ở giữa một vấn đề tương tự (tình cờ cũng trên vòm)

Grub không tìm thấy tệp này và chạy vì nó đang sử dụng "tiền tố" không chính xác

Dưới đây là những gì bạn làm. Bạn khởi động vào chế độ cứu hộ grub, sau đó bạn chỉ cần tìm ra cách để khởi động nó.

Đầu tiên bạn chạy set này sẽ liệt kê các biến, ví dụ của tôi là

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

Bây giờ, tiền tố là biến trong đó grub tìm tệp normal.mod. Trong trường hợp của tôi hd1, msdos3 giống với / dev / sdb3 (tương tự, hd0, msdos1 sẽ là / dev / sda1) những gì bạn có thể muốn làm để xem danh sách các phân vùng hợp lệ được nhập vào ls

Bây giờ, trong trường hợp của tôi, một lần nữa, grub đã được cài đặt trên / dev / sdb1 được gắn kết là / boot trong phân vùng vòm của tôi, vì vậy tiền tố chính xác sẽ là (hd1, msdos1) / grub

Vì vậy, để tôi khởi động, tôi cần phải làm điều này:

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

Trong trường hợp của bạn, bạn sẽ phải nhớ hoặc đoán phân vùng mà bạn đã cài đặt grub trên. Bạn có thể đoán sai, nó sẽ không gây hại gì, lệnh insmod sẽ thất bại và bạn có thể thử lại với một phân vùng khác.

Sau này, grub tải như bình thường và tôi có thể chọn ra khỏi danh sách những gì tôi muốn khởi động. Thông thường khi một mớ hỗn độn như thế này xảy ra, việc cài đặt lại grub vào mbr của bạn (sử dụng grub-install ) sẽ khắc phục nó vĩnh viễn để bạn không phải làm điều này mỗi khi khởi động. Tuy nhiên tôi đang gặp rất nhiều khó khăn trong việc tìm hiểu phải làm gì nếu sửa nó không dễ dàng như vậy (hoặc tôi muốn chia sẻ những gì bạn nên làm).

Chỉ khi điều này không thành công (ví dụ: nếu tiền tố là chính xác nhưng bạn vẫn không thể khởi động) thì bạn nên dùng đến các cds sống hoặc cứu để giải quyết vấn đề (tốt nhất là tránh điều đó)


Đây có thể là một câu hỏi cũ, nhưng tôi thấy rằng ai đó phải trả lời làm thế nào để thực sự sử dụng cứu hộ grub thay vì vung vẩy xung quanh bằng cách sử dụng đĩa CD và usbs sống để sửa chữa mọi thứ. Chúng tôi không phải lúc nào cũng có phương tiện truyền thông trực tiếp để giúp chúng tôi và ngay cả khi chúng tôi làm, việc làm từ môi trường ưa thích của chúng tôi thường tốt hơn.
Cestarian

Giải thích tuyệt vời! (Đặc biệt là ghi chú về "đoán sai sẽ không làm tổn thương gì"). Tôi gặp vấn đề tương tự với một cửa sổ khởi động kép + hệ thống Ubuntu, sau khi nhầm tưởng rằng việc xóa phân vùng cửa sổ sẽ không ảnh hưởng đến Ubuntu. Dù sao, bài đăng này thực sự đã giúp hiểu cách khắc phục lỗi. Vì tôi không thể nhớ phân vùng nào chứa grub, tôi chỉ liệt kê tất cả chúng ls, sau đó thử từng cái một cho đến khi tôi kết hợp đúng :-)
Leigh

@Leigh rất vui vì nó đã giúp được ai đó :)
Cestarian

1
Sửa một cái gì đó luôn luôn tốt, nhưng hiểu cách bạn sửa nó thậm chí còn tốt hơn :-) Chúc mừng.
Leigh

Bạn là một thiên tài
Ashish Doneriya

5

Tôi vừa gặp vấn đề này ngày hôm nay sau khi cài đặt Mint 15 mới.

Trình cài đặt đã tạo /boot/grub/x86_64-eficác mô-đun nhưng không phải là các /boot/grub/i386-pcmô-đun thông thường .

Việc cài đặt lại Grub từ Live CD đã khắc phục sự cố.

Thay thế / dev / sda/ dev / sda1 bằng thiết bị khởi động và phân vùng khởi động của bạn và chạy các lệnh sau từ Live CD:

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

1

Cảm ơn bài viết của bạn. Tôi đã giải quyết một thông báo lỗi gần như giống hệt nhau - "tập tin '/grub2/i386-pc/n normal.mod' không tìm thấy" sau khi cài đặt Linux CentOS 5.11 mới trên máy tính Dell Optiplex cũ với Windows Vista, để tạo một bản kép hệ thống -boot.

Điều phức tạp của tôi là tôi đã thử và thất bại trong việc cài đặt bản phân phối Fedora 20 mới hơn, sử dụng GRUB2 thay vì GRUB (LEGACY), trên các phân vùng mặc định của FedORA. Sau đó, tôi đã cố gắng cài đặt CentOS trực tiếp trên đó, giữ phân vùng Windows và ghi đè lên các phân vùng FedORA.

Trong quá trình cài đặt CentOS, tôi đã để phân vùng (Windows) đầu tiên của mình (hd0,0) và tạo thư mục / boot trên phân vùng (boot) thứ hai (hd0,1). Sau đó tôi đã chọn không sửa đổi MBR tại thời điểm đó và thay vào đó chọn tùy chọn khác (bộ nạp khởi động trên phân vùng khác).

Sau khi cài đặt thành công, nó đã khởi động lại lỗi ở trên.

Tôi nghi ngờ rằng thông tin khởi động trên phân vùng đầu tiên tiếp tục trỏ đến vị trí GRUB2. CPU không thể tìm thấy normal.mod, có lẽ vì các phân vùng FedORA00 được tạo trước đó đã bị xóa.

Đây là các bước của tôi:

  1. Khởi động từ đĩa CD cài đặt Centos 5 của tôi vào chế độ cứu hộ ("cứu linux").

  2. Gắn ổ đĩa cục bộ: chroot / mnt / sysimage

  3. Chuyển sang chế độ một người dùng: su

  4. Cập nhật cài đặt CentOS: cập nhật yum

  5. Sử dụng trình chỉnh sửa emacs để thêm "Microsoft Windows Vista" vào tệp grub.conf: emacs /boot/grub/grub.conf và đặt Vista thành HĐH mặc định.

    ( LƯU Ý: Xem www.cyberciti.biz/faq/grubconf-for-windows-vista-or-xp-dual-boot/ và https://access.redhat.com/documentation/en-US/Red_Hat_ Entryprise_Linux / 6 / html /Installation_Guide/sn-medialess-editing-grub-conf.html .)

  6. Cố gắng cập nhật MBR: grub-install / dev / hda

  7. Khởi động lại lỗi GRUB không xác định, trong đó CPU bị treo sau khi hiển thị "GRUB".

  8. Khởi động lại từ đĩa cài đặt Windows Vista gốc (hoặc đĩa khôi phục Windows khác) và chọn tùy chọn để sửa chữa đĩa. Nhận thông báo rằng MBR đã được sửa chữa.

  9. Khởi động lại chính xác vào Windows Vista.

Tôi chắc chắn rằng các giải pháp thanh lịch hơn tồn tại, nhưng điều này làm việc cho tôi. Tôi cũng đã cố gắng để tải về GRUB để gói di cư GRUB2, như mô tả ở http://help.ubuntu.com/community/Grub2/Upgrading , bằng cách cố gắng:

$ yum install grub-pc

Nhưng nó không thể tìm thấy gói. Có lẽ tôi nên thử yum install grub.


0

Thêm vào flittermice ...

nếu bạn khởi động từ USB và có thư mục i386, bạn có thể mở thư mục i386 trên phần bị hỏng dưới quyền root và sau đó sao chép thư mục i386 đang hoạt động từ usb.


0

Tôi đã vào hệ thống CentOS 6.7 của mình trong hai giai đoạn. Đầu tiên, tôi đã làm theo lời khuyên từ flittermice ở trên, khởi động từ đĩa CD trực tiếp, gắn my / dev / sda2 là / mnt và chỉ sao chép thư mục i386-pc từ / mnt / usr / ... (bạn có thể tìm thấy vị trí của bạn bởi find /|grep i386) đến / boot / grub và khởi động lại.

Điều này đã cho tôi grub> thay vì giải cứu grub> ;-).

Sau đó, tôi đã làm theo một hướng dẫn tại đây [ https://www.linux.com/learn/tutorials/776643-how-to-resTHER-a-non-boote-grub-2-on-linux/] để tìm và khởi động vào phân vùng của tôi. Đó là (hd0,2), bởi vì (hd0,1) đã được thực hiện bởi trao đổi.

Sau đó, tôi đã phát hiện ra rằng việc khởi động này thành "tự động" là không thể, có lẽ vì / boot của tôi nằm trên ext4 với kích thước inode 256 và grub1 cũ yêu cầu 128. Tôi sẽ thử làm theo một số lệnh từ [ http: // kb.kristianreese.com/index.php?View=entry&EntryID=113] để chuẩn bị phân vùng trước khi cài đặt.


0

Cài đặt lại Ubuntu. Đi đến "làm một cái gì đó khác". Chọn phân vùng cài đặt Windows của bạn làm vị trí cần cài đặt bộ tải khởi động.

Nếu bạn có cài đặt Windows hiện có, bạn phải cài đặt grub vào cùng một phân vùng; nếu không, bạn sẽ có vấn đề nhìn thấy trong câu hỏi.

Điều này có liên quan đến 14, 15, 16, 17 Ubuntu tất cả các phiên bản và có thể là các phiên bản trước đó. Khi được hỏi nơi cài đặt bộ tải khởi động, không tạo và chọn phân vùng / boot; thay vào đó, hãy sử dụng phân vùng Windows.

Cảm ơn bạn.


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.