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


46
error: file '/grub/i386-pc/normal.mod' not found.
grub rescue>

Tôi có thể làm gì? Tôi chỉ ngồi và nhìn chằm chằm vào nó.

Tôi tìm thấy netbook cũ của tôi (Dell Inspiron 1010) mà tôi đã không sử dụng trong khoảng bốn năm. Tôi đã thay thế Windows XP bằng Ubuntu 12.10. Tôi đã sử dụng ổ USB có thể khởi động của tôi. Tôi đã cài đặt và khởi động lại. Tôi nhận được tin nhắn normal.modkhông tìm thấy.

Tôi nên làm gì? Loại exit, reboothoặc quit? Có nên cài đặt lại?


1
TRẢ LỜI DƯỚI ĐÂY KHÔNG BAO GIỜ LÀM VIỆC. ĐIỀU NÀY LÀM VIỆC: cài đặt lại hệ điều hành của bạn, đi đến "làm việc khác", sau đó tạo các bảng phân vùng của bạn use your windows partition as your primary boot device. Đó là bước cuối cùng là điều cần thiết. KHÔNG SỬ DỤNG / khởi động. Có thể có một giải pháp khác: thử thay đổi thủ công thiết bị khởi động của bạn trong khi khởi động; Tuy nhiên, tôi không nghĩ rằng nó sẽ làm việc. Đây là một vấn đề tồn tại từ lâu đã tồn tại trong Ubuntu và bao gồm 17.10. Cảm ơn bạn.
Wolfpack'08

Không có hướng dẫn nào trong số này làm việc cho tôi. Trong thực tế, sử dụng các công cụ phục hồi khác nhau làm cho vấn đề tồi tệ hơn. Tôi đã có thể nhận được loại cài đặt grub nhưng vì tôi sử dụng lvm2, kernel không khởi động được. Nếu bạn đang sử dụng lvm2 cho bất cứ điều gì, thì khi sự cố này xảy ra, bạn sẽ phải cài đặt lại HĐH. Theo như tôi có thể nói, không có sự phục hồi nào từ một bản cập nhật kernel bị lỗi + grub + lvm2. lvm2 thấy rất ít hỗ trợ chính thức mặc dù đã được thúc đẩy cho Ubuntu Server LTS tại một thời điểm. Tôi đang sao lưu dữ liệu của mình và cài đặt lại HĐH và sẽ không chạm vào lvm2 nữa. Đã học bài học của tôi.
CubicleSoft

1
Tôi đã chuyển đi từ lvm2 và không có vấn đề gì kể từ đó. Không có cơ sở hạ tầng của tôi sử dụng nó nữa. Các giải pháp cứu hộ hệ thống mặc định (cả đồ họa và CLI) không biết hoặc chỉ hầu như không biết về LVM và đó là lý do đủ để tôi không sử dụng LVM. Ngay cả khi tôi làm theo chỉ dẫn của bạn để khôi phục hệ thống và chúng đã hoạt động, vấn đề có thể sẽ xảy ra một lần nữa trong tương lai. Cài đặt lại hệ điều hành và bỏ LVM là lựa chọn tốt nhất và nhanh nhất đối với tôi.
CubicleSoft

1
@Wolfpack trong trường hợp của tôi, vấn đề là không có chế độ normal.mod ngăn tôi có thể cài đặt lại ubfox, lgoin không hoạt động. Tôi có thể làm gì?
HoCo_

1
@ Wolfpack'08 Vui lòng đăng lại giải pháp của bạn dưới dạng câu trả lời. Đăng giải pháp như ý kiến ​​là phá vỡ các nguyên tắc trang web. Bạn cũng nên đề cập đến “câu trả lời dưới đây không bao giờ làm việc” vì có nhiều trong số họ.
Melebius

Câu trả lời:


40

Grub có một hình ảnh lõi nhỏ được tải khi khởi động. Hình ảnh cốt lõi tự động tải các mô-đun cung cấp thêm chức năng. i386-pc/normal.mod not foundchỉ ra rằng grub không thể tải normal.mod , đây là mô đun grub cung cấp lệnh bình thường . Để tải normal.mod, bạn cần cho grub biết nó ở đâu. Để làm điều này, bạn có thể sử dụng dòng lệnh grub (còn gọi là Bảng điều khiển cứu hộ). Grub sẽ khởi động dòng lệnh nếu có sự cố khi khởi động hoặc bạn có thể khởi động thủ công bằng cách giữ phím shift khi grub bắt đầu (để hiển thị menu grub), rồi nhấn phím 'c'.

Sử dụng grub bạn có thể khám phá các ổ đĩa, phân vùng và hệ thống tập tin. Bạn cần phải:

  • xác định vị trí cài đặt grub bằng ls hoặc search.file
  • đặt các biến grub $ tiền tố và $ root
  • tải và chạy mô-đun bình thường

Thí dụ

Sau đây chỉ là một ví dụ. Bạn sẽ cần phải điều chỉnh nó để thiết lập phân vùng và ổ đĩa cục bộ của bạn.

Bình thường.mod ở đâu? nhìn vào một số vị trí có khả năng

grub> search.file /i386-pc/normal.mod
error: no such device: /i386-pc/normal.mod

grub> search.file /grub/i386-pc/normal.mod
error: no such device: /grub/i386-pc/normal.mod

grub> search.file /boot/grub/i386-pc/normal.mod
hd0,msdos1

Nếu bạn nhận được "Unknown command 'search.file'"điều này có nghĩa là lệnh search.file không khả dụng. Điều này có thể là do bạn đang ở grub rescue>dấu nhắc và không grub>nhắc. Trong trường hợp này, bạn vẫn có thể tiếp tục và sử dụng lslệnh và kiến ​​thức về bố cục phân vùng của bạn để tìm normal.mod.

tìm thấy nó tại (hd0, msdos1)

grub> ls (hd0,msdos1)/boot/grub/i386-pc/normal.mod
normal.mod

Tại sao grub không tìm thấy nó?
kiểm tra tiền tố $ - vị trí tuyệt đối của thư mục grub
(điều này được đặt khi grub được cài đặt bởi grub-install)

grub> echo $prefix
(hd0,msdos2)/boot/grub

kiểm tra $ root - thiết bị mặc định để biết các đường dẫn không bao gồm một
grub thiết bị ban đầu đặt điều này cho thiết bị từ tiền tố $

grub> echo $root
hd0,msdos2

gốc và tiền tố đang trỏ đến phân vùng sai (hd0, msdos2)
đặt $ root và $ prefix cho phân vùng nơi chúng tôi tìm thấy normal.mod (hd0, msdos1)

grub> set root=(hd0,msdos1)
grub> set prefix=(hd0,msdos1)/boot/grub

tải và chạy mô-đun bình thường

grub> insmod normal
grub> normal

Một số lệnh khác có thể hữu ích

ls liệt kê tất cả các thiết bị và phân vùng

grub> ls
(hd0) (hd0,msdos5) (hd0,msdos1)

phân vùng ls

grub> ls (hd0,msdos1)
        Partition hd0,msdos1: Filesystem type ext* - Last modification time
2014-05-08 15:56:38 Thursday, UUID c864cbdd-a2ba-43a4-83a3-66e305adb1b6 -
Partition start at 1024KiB - Total size 6290432Kib

Hệ thống tập tin ls (ghi chú / ở cuối)

grub> ls (hd0,msdos1)/
lost+found/ etc/ media/ bin/ boot/ dev/ home/ lib/ lib64/ mnt/ opt/ proc/
root/ run/ sbin/ srv/ sys/ tmp/ usr/ var/ vmlinuz initrd.img cdrom/

Nhìn vào bên trong / boot / grub
của thư mục i386-pc có nghĩa đây là
sự hiện diện cài đặt BIOS của thư mục x86_64-efi sẽ chỉ ra cài đặt EFI

grub> ls (hd0,msdos1)/boot/grub
i386-pc/ locale/ fonts/ grubenv grub.cfg


+1 Sau khi làm theo các bước này để khởi động vào bản cài đặt Ubuntu của tôi, tôi đã chạy sudo grub-install /dev/sdXđể cài đặt grub của mình. Tôi nghĩ rằng cài đặt LVM nhầm lẫn grub của tôi bằng cách nào đó.
DavidG

Tôi đoán nếu bạn nhận được "tập tin tìm kiếm 'tập tin không xác định như tôi vừa làm, đã đến lúc bỏ cuộc. Lời khuyên của tôi cho mọi người là đừng bao giờ cài đặt Ubuntu mà không có Windows Recovery DVD. Như tôi đã phát hiện ra, có một phân vùng phục hồi là Không đủ một khi Grub bị rối tung. Và cũng vậy, đừng bao giờ cài đặt Ubuntu trên máy tính Windows của người khác, bởi vì nếu nó gây rối, họ sẽ thực sự tức giận.
Xe tay ga

@Scooter Xem câu trả lời này để biết hướng dẫn cài đặt lại Grub bằng cách khởi động CD / USB trực tiếp.
Bain

@bain Cảm ơn bạn đã trả lời. Trong trường hợp của tôi đã cài đặt lại từ đĩa iso Ubuntu. Ubuntu phát hiện ra rằng grub đã bị rối hoặc có thể nó chỉ tự động ghi lên nó, nhưng nó đã chuyển nó đến nơi tôi quay lại để có thể khởi động lại vào Windows.
Xe tay ga

Shell cứu hộ Grub dường như không hỗ trợ bất kỳ lệnh nào trong số này. "Lệnh không xác định 'search.file'"
Cerin

30

Giải quyết điều này trên một máy chiều nay. Có vẻ như một nguyên nhân của vấn đề này là trình cài đặt nghĩ rằng bạn có khởi động an toàn EFI, khi bạn không tải và do đó tải các tệp GRUB không chính xác.

Những gì bạn cần làm là cài đặt GRUB 2. Để làm điều này, bạn cần khởi động vào thể hiện trực tiếp, gắn kết phân vùng gốc của bạn và cài đặt.

Từ một thể hiện trực tiếp, tìm phân vùng mà phân vùng gốc của bạn được tải. GParted sẽ cho bạn biết điều này, hoặc bạn có thể sử dụng

sudo fdisk -l

Đi đến phân vùng trong đó ubfox được cài đặt.

Một khi bạn có phân vùng của bạn, bạn cần phải gắn kết nó. Giả sử phân vùng gốc là trên / dev / sda5, đó sẽ là:

sudo mount /dev/sda5 /mnt

Sau đó cài đặt GRUB 2

sudo grub-install /dev/sda --root-directory=/mnt [sử dụng bản sao và dán cho cái này vì có một số khoảng trống mà bạn cần phải có.]

Giả sử đây là vấn đề của bạn, thì bạn sẽ có thể khởi động lại và mọi thứ sẽ hoạt động tốt.

Giải pháp ban đầu cho vấn đề này là từ đây: http://ubfoxjournal.blogspot.com/2012/11/fix-new-install-of-ubfox-1210-wont-boot.html


1
Không làm việc cho tôi. Tôi có cùng một vấn đề và tôi vẫn đang tìm kiếm một giải pháp.
ExpatEgghead

3
--root-thư mục hiện là --boot-thư mục trong grub2
bain

1
Một cách khắc phục dễ dàng khác có hiệu quả với tôi là sao chép bản sao lưu grup nằm trong /etc/grub.d/backup sang / boot / grub. Kiểm tra readme đính kèm cho các thư mục và đường dẫn thích hợp.
jhEx

Trong trường hợp của tôi, vấn đề là tôi có 2 ổ cứng và trình tự bios đã tìm sai ổ đĩa trước. Ổ đĩa đó đã có một cài đặt grub cũ bị hỏng.
eusoubrasileiro

Nếu bạn không thể biết cái nào là đúng từ fdisk, thì SO này có thể giúp (nó giúp tôi tìm thiết bị / phương tiện / ubfox
Michael

2

Tôi không tìm thấy thông tin đó trên các diễn đàn, vì vậy tôi muốn chia sẻ một số thông tin mặc dù thực tế là câu hỏi này đã được hỏi từ lâu:

Nếu bạn có một phân vùng lớn (ví dụ 1TB) với Ubuntu được cài đặt và bạn không phân bổ thêm một cho / boot /, đó có thể là lý do của các lỗi đó. Khi GRUB khởi động, nó sử dụng trình điều khiển biosdisk để đọc trình điều khiển bình thường từ thư mục / boot / grub /. Đôi khi, thư mục này có thể được đặt vật lý trên ổ cứng ở đâu đó sau khi được hỗ trợ tối đa bởi biosdisk sector. Vấn đề có thể xuất hiện, ví dụ, sau khi nâng cấp hệ thống. Ngoài ra, tôi luôn phải đối mặt với vấn đề đó sau khi cài đặt Ubuntu 13.10 mới, nhưng nó có thể khác, vì nó phụ thuộc vào bo mạch chủ / bios.

Bạn có thể kiểm tra xem bằng cách sử dụng khôi phục grub - sau khi cài đặt PREFIX và ROOT chính xác, hãy thử ls / boot - nếu bạn không thấy gì, nhưng có thể thấy các tệp ở đó khi khởi động từ ổ đĩa cd / flash trực tiếp - hơn là bạn gặp vấn đề được mô tả ở trên .

Bạn có thể làm những việc khác nhau để làm cho hệ thống có khả năng khởi động, nhưng cách duy nhất để tránh vấn đề đó trong tương lai (trong quá trình nâng cấp) là đặt / thư mục khởi động trên một phân vùng nhỏ riêng biệt.


1

Các giải pháp khác có thể không hoạt động nếu bạn nhận được grub-rescuelời nhắc và / hoặc cấu hình của bạn sử dụng LVM, giải pháp này nên.

Khởi động trên đĩa cứu hộ (mẹo: Tôi giữ một bản phân phối nhỏ trên một phân vùng chuyên dụng của đĩa USB dự phòng của tôi).

Nếu bạn sử dụng LVM, hãy tìm tên của nhóm âm lượng của bạn bằng lvdisplayhoặc các lệnh khác liên quan đến LVM. Kích hoạt nó (nếu không bạn sẽ gặp mount: special drive /dev/volumegroupname/partition does not existlỗi khi cố gắng gắn kết):

vgchange -a y volumegroupname

Bây giờ gắn kết /phân vùng thông thường của bạn , ví dụ /mnt :

mount /dev/volumegroupname/partition /mnt

Gắn kết một vài thiết bị đặc biệt (cũng như /boottrên một phân vùng riêng):

mount -t proc none /mnt/proc
mount -o bind /dev /mnt/dev
mount -t sysfs /sys /mnt/sys

Sau đó chrootvào phân phối thông thường của bạn:

chroot /mnt

Cuối cùng, cài đặt lại GRUB2 - các lệnh có thể thay đổi tùy theo bản phân phối của bạn, thao tác này hoạt động trên Slackware (nếu ổ đĩa của bạn là /dev/sda):

grub-install /dev/sda
grub2-mkconfig -o /boot/grub2/grub.cfg

Khởi động lại và bạn nên được thực hiện.


0

! CÂU TRẢ LỜI CHỌN KHÔNG BAO GIỜ LÀM VIỆC.

CÔNG VIỆC NÀY:

  1. Cài đặt lại hệ điều hành của bạn , đi đến " làm việc khác ", tạo các bảng phân vùng của bạn,
  2. Sử dụng phân vùng windows của bạn làm thiết bị khởi động chính của bạn .

Bước thứ hai là rất cần thiết .

KHÔNG SỬ DỤNG/boot .

Có thể có một giải pháp khác: thử thay đổi thủ công thiết bị khởi động của bạn trong khi khởi động; tuy nhiên, tôi không nghĩ rằng nó sẽ hoạt động và tôi chưa thử nghiệm nó.

Đây là một vấn đề tồn tại từ lâu đã tồn tại trong Ubuntu và bao gồm 17.10.

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.