ข้อผิดพลาด: ไม่พบไฟล์ '/grub/i386-pc/normal.mod'


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

ฉันควรทำอย่างไร ฉันแค่นั่งและจ้องที่มัน

ฉันพบเน็ตบุ๊กเก่าของฉัน (Dell Inspiron 1010) ซึ่งฉันไม่ได้ใช้เป็นเวลาประมาณสี่ปี ฉันแทนที่ Windows XP ด้วย Ubuntu 12.10 ฉันใช้ไดรฟ์ USB ที่สามารถบู๊ตได้ ฉันติดตั้งและรีบูตแล้ว ฉันได้รับข้อความที่normal.modไม่พบ

ฉันควรทำอย่างไร? ประเภทexit, rebootหรือquit? ฉันควรติดตั้งใหม่หรือไม่


1
คำตอบด้านล่างไม่เคยทำงาน นี้ทำงาน: ติดตั้งใหม่ระบบปฏิบัติการของคุณให้ไปที่ "ทำอย่างอื่น" use your windows partition as your primary boot deviceสร้างตารางพาร์ทิชันของคุณแล้ว ขั้นตอนสุดท้ายนั้นเป็นสิ่งจำเป็น ห้ามใช้ / boot อาจมีวิธีอื่น: ลองเปลี่ยนอุปกรณ์บู๊ตด้วยตนเองในระหว่างการเริ่มต้น อย่างไรก็ตามฉันไม่คิดว่ามันจะใช้งานได้ ปัญหานี้เป็นปัญหาที่เกิดขึ้นมานานและยังคงมีอยู่ใน Ubuntu จนถึงปัจจุบันรวมถึง 17.10 ขอขอบคุณ.
Wolfpack'08

ไม่มีคำแนะนำเหล่านี้สำหรับฉัน ในความเป็นจริงการใช้เครื่องมือการกู้คืนต่าง ๆ ทำให้ปัญหาแย่ลง ฉันสามารถติดตั้งด้วงใหม่ได้ แต่เนื่องจากฉันใช้ lvm2 เคอร์เนลจึงไม่สามารถเริ่มต้นได้ หากคุณใช้ lvm2 เพื่ออะไรก็ตามเมื่อเกิดปัญหานี้ขึ้นคุณจะต้องติดตั้งระบบปฏิบัติการใหม่ เท่าที่ฉันสามารถบอกได้ไม่มีการกู้คืนจากการรวมเคอร์เนล update + grub + lvm2 ที่ล้มเหลว lvm2 เห็นการสนับสนุนอย่างเป็นทางการน้อยมากแม้จะถูกผลักสำหรับเซิร์ฟเวอร์ Ubuntu LTS ณ จุดหนึ่ง ฉันสำรองข้อมูลของฉันและติดตั้งระบบปฏิบัติการใหม่และจะไม่แตะต้อง lvm2 อีกครั้ง เรียนรู้บทเรียนของฉัน
CubicleSoft

1
ฉันเปลี่ยนจาก lvm2 ไปแล้วและไม่มีปัญหาตั้งแต่ศูนย์ ไม่มีโครงสร้างพื้นฐานของฉันใช้อีกต่อไป โซลูชันการช่วยเหลือระบบเริ่มต้น (ทั้งกราฟิกและ CLI) ไม่รู้จักหรือเพิ่งทราบ LVM เพียงอย่างเดียวและนั่นเป็นเหตุผลเพียงพอที่ฉันจะไม่ใช้ LVM แม้ว่าฉันจะทำตามคำแนะนำของคุณเพื่อกู้คืนระบบและพวกเขาทำงานได้ปัญหาอาจจะเกิดขึ้นอีกในอนาคต การติดตั้งระบบปฏิบัติการซ้ำซ้อน LVM เป็นตัวเลือกที่ดีที่สุดและเร็วที่สุดสำหรับฉัน
CubicleSoft

1
@ Wolfpack ในกรณีของฉันปัญหาคือว่าถ้าไม่มี Normal.mod ทำให้ฉันไม่สามารถติดตั้ง Ubuntu ได้อีกครั้ง lgoin จะไม่ทำงาน ฉันจะทำอย่างไร
HoCo_

1
@ Wolfpack'08 โปรดโพสต์คำตอบของคุณใหม่ การโพสต์โซลูชันเป็นความคิดเห็นหลีกเลี่ยงหลักการของไซต์ คุณควรพูดถึงว่า "คำตอบด้านล่างไม่ทำงาน" เนื่องจากมีมากกว่านั้น
Melebius

คำตอบ:


40

ด้วงมีภาพหลักขนาดเล็กที่โหลดในเวลาบูต ภาพแกนโหลดโมดูลแบบไดนามิกซึ่งให้การทำงานเพิ่มเติม i386-pc/normal.mod not foundแสดงด้วงที่ไม่สามารถโหลดnormal.modซึ่งเป็นโมดูลด้วงที่ให้คำสั่งปกติ ในการโหลดปกติคุณต้องบอกด้วงว่ามันอยู่ที่ไหน ในการทำเช่นนี้คุณสามารถใช้บรรทัดคำสั่งด้วง (aka Rescue Console) ด้วงจะเริ่มบรรทัดคำสั่งหากมีปัญหาในการบูทหรือคุณสามารถเริ่มด้วยตนเองโดยกดปุ่ม Shift ค้างไว้เมื่อด้วงเริ่ม (เพื่อบังคับให้แสดงเมนูด้วง) จากนั้นกดปุ่ม 'c'

การใช้ด้วงคุณสามารถสำรวจไดรฟ์พาร์ติชั่นและระบบไฟล์ คุณต้อง:

  • ค้นหาการติดตั้งด้วงโดยใช้lsหรือsearch.file
  • ตั้งค่าตัวแปร grub $ คำนำหน้าและ $ root
  • โหลดและรันโมดูลปกติ

ตัวอย่าง

ต่อไปนี้เป็นเพียงตัวอย่าง คุณจะต้องปรับให้เข้ากับการตั้งค่าไดรฟ์และพาร์ติชันของคุณ

ปกติอยู่ที่ไหน ดูในสถานที่ที่น่าจะเป็น

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

หากคุณได้รับ"Unknown command 'search.file'"สิ่งนี้หมายความว่าคำสั่ง search.file ไม่พร้อมใช้งาน นี่อาจเป็นเพราะคุณอยู่ในช่วงgrub rescue>พร้อมรับคำและไม่grub>พร้อมต์ ในกรณีนี้คุณยังคงสามารถใช้lsคำสั่งและความรู้เกี่ยวกับเค้าโครงพาร์ติชันของคุณเพื่อค้นหาnormal.modได้

พบได้ที่ (hd0, msdos1)

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

ทำไมด้วงไม่พบมัน
ตรวจสอบคำนำหน้า $ - ตำแหน่งที่แน่นอนของไดเรกทอรีด้วง
(นี่คือการตั้งค่าเมื่อด้วงถูกติดตั้งโดยด้วง - ติดตั้ง)

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

ตรวจสอบ $ root - อุปกรณ์เริ่มต้นสำหรับเส้นทางที่ไม่รวม
ด้วงอุปกรณ์ในขั้นต้นตั้งค่านี้ให้อุปกรณ์จาก $ คำนำหน้า

grub> echo $root
hd0,msdos2

root และคำนำหน้าชี้ไปที่พาร์ติชันที่ไม่ถูกต้อง (hd0, msdos2)
ตั้งค่า $ root และ $ prefix ไปยังพาร์ติชันที่เราพบ normal.mod (hd0, msdos1)

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

โหลดและรันโมดูลปกติ

grub> insmod normal
grub> normal

คำสั่งอื่น ๆ ที่อาจเป็นประโยชน์

ls แสดงรายการอุปกรณ์และพาร์ติชันทั้งหมด

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

พาร์ทิชัน 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

ls ระบบไฟล์ (note / at end)

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/

ดูข้างใน / boot / grub การ
มีอยู่ของไดเรกทอรี i386-pc หมายความว่านี่คือการติดตั้ง BIOS
ของไดเรกทอรี x86_64-efi จะบ่งบอกถึงการติดตั้ง EFI

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


+1 หลังจากทำตามขั้นตอนเหล่านี้เพื่อบูตเข้าสู่การติดตั้ง Ubuntu ของฉันฉันวิ่งsudo grub-install /dev/sdXไปติดตั้งด้วง ฉันคิดว่าการติดตั้ง LVM ทำให้ด้วงของฉันสับสน
DavidG

ฉันเดาว่าถ้าคุณได้รับ "คำสั่งที่ไม่รู้จัก 'ค้นหาไฟล์' เหมือนที่ฉันเพิ่งทำมันถึงเวลาแล้วที่จะให้คำแนะนำของฉันกับคนที่ไม่เคยติดตั้ง Ubuntu โดยไม่ต้องใช้ Windows Recovery DVD เหมือนที่ฉันเพิ่งพบ ไม่เพียงพอเมื่อ Grub เกิดความยุ่งเหยิงและห้ามติดตั้ง Ubuntu บนคอมพิวเตอร์ที่ใช้ Windows ของคนอื่นเพราะถ้ามันเกิดความยุ่งเหยิงพวกเขาจะโกรธจริงๆ
Scooter

@Scooter ดูคำตอบนี้สำหรับคำแนะนำในการติดตั้ง Grub โดยการบูต CD / USB สด
bain

@Bain ขอบคุณสำหรับการตอบกลับ ในกรณีของฉันติดตั้งใหม่จากดิสก์ iso ของ Ubuntu อูบุนตูคิดว่าด้วงนั้นมีความยุ่งเหยิงหรือบางทีมันอาจเขียนทับมันโดยอัตโนมัติ
สกูตเตอร์

Grub rescue shell ไม่ปรากฏขึ้นเพื่อรองรับคำสั่งใด ๆ เหล่านี้ "คำสั่งที่ไม่รู้จัก 'search.file'"
Cerin

30

แก้ไขสิ่งนี้ในเครื่องเมื่อบ่ายนี้ ดูเหมือนว่าสาเหตุหนึ่งของปัญหานี้คือตัวติดตั้งคิดว่าคุณมีบูตแบบปลอดภัย EFI เมื่อคุณไม่โหลดไฟล์ด้วงที่ไม่ถูกต้อง

สิ่งที่คุณต้องทำคือติดตั้งด้วง 2 ในการทำเช่นนี้คุณต้องบูตกับอินสแตนซ์สดติดตั้งพาร์ติชันรูทและติดตั้ง

จากอินสแตนซ์สดค้นหาพาร์ติชันที่โหลดพาร์ติชันรากของคุณ GParted จะบอกคุณนี้หรือคุณสามารถใช้

sudo fdisk -l

ไปสำหรับพาร์ติชันที่ติดตั้ง Ubuntu

เมื่อคุณมีพาร์ติชันของคุณคุณต้องติดตั้ง สมมติว่าพาร์ติชันรูทอยู่บน / dev / sda5 นั่นก็คือ:

sudo mount /dev/sda5 /mnt

จากนั้นติดตั้ง GRUB 2

sudo grub-install /dev/sda --root-directory=/mnt [ใช้การคัดลอกและวางสำหรับอันนี้เนื่องจากมีช่องว่างที่คุณต้องทำให้ถูกต้อง]

สมมติว่านี่เป็นปัญหาของคุณจากนั้นคุณควรจะสามารถรีบูตและทุกอย่างจะทำงานได้ดี

โซลูชันดั้งเดิมสำหรับสิ่งนี้มาจากที่นี่: http://ubuntujournal.blogspot.com/2012/11/fix-new-install-of-ubuntu-1210-wont-boot.html


1
ไม่ได้ผลสำหรับฉัน ฉันมีปัญหาเดียวกันและฉันยังคงมองหาวิธีการแก้ปัญหา
ExpatEgghead

3
--root-directoryตอนนี้- boot-directoryใน grub2
bain

1
อีกหนึ่งการแก้ไขที่ใช้งานได้ง่ายสำหรับฉันคือการคัดลอกข้อมูลสำรองกลุ่มที่อยู่ใน /etc/grub.d/backup ไปยัง / boot / grub ตรวจสอบ readme ที่แนบมาเพื่อดูโฟลเดอร์และเส้นทางที่เหมาะสม
jhexp

ในกรณีของฉันปัญหาคือฉันมีฮาร์ดไดรฟ์ 2 ตัวและลำดับไบออสดูที่ไดรฟ์ผิดก่อน ไดรฟ์นั้นติดตั้งด้วงเสียหายเก่า
eusoubrasileiro

ถ้าคุณไม่สามารถบอกได้ว่าอะไรคือสิ่งที่ถูกต้องจาก fdisk ดังนั้นสิ่งนี้สามารถช่วยได้ (ช่วยฉันค้นหาว่าอุปกรณ์ / สื่อ / ubuntu / ชื่อบางชื่อเปิดอยู่) unix.stackexchange.com/questions/11311/ …
Michael

2

ฉันไม่พบข้อมูลในฟอรัมดังนั้นฉันต้องการแบ่งปันข้อมูลบางอย่างแม้ว่าข้อเท็จจริงที่ว่าคำถามนี้ถูกถามมานานแล้ว:

หากคุณมีพาร์ติชันขนาดใหญ่ (เช่น 1TB) ที่ติดตั้ง Ubuntu และคุณไม่ได้จัดสรรพาร์ติชั่นเพิ่มเติมสำหรับ / boot / อาจเป็นสาเหตุของข้อผิดพลาดดังกล่าว เมื่อ GRUB เริ่มทำงานจะใช้ไดรเวอร์ biosdisk เพื่ออ่านไดรเวอร์ปกติจากไดเร็กทอรี / boot / grub / บางครั้งไดเรกทอรีนี้อาจอยู่ในฮาร์ดไดรฟ์หลังจากที่ได้รับการสนับสนุนสูงสุดโดยภาค biosdisk ปัญหาอาจปรากฏขึ้นเช่นหลังจากการอัพเกรดระบบ นอกจากนี้ฉันมักจะประสบปัญหานี้หลังจากติดตั้ง Ubuntu 13.10 ใหม่ แต่มันอาจแตกต่างกันขึ้นอยู่กับเมนบอร์ด / ไบออส

คุณสามารถตรวจสอบว่าใช้การกู้คืนด้วง - หลังจากตั้งค่าคำนำหน้าและรูตที่ถูกต้องแล้วลอง ls / boot - หากคุณไม่เห็นอะไรเลย แต่สามารถดูไฟล์ที่นั่นเมื่อทำการบูทจากไดรฟ์สด / แฟลชไดรฟ์ - .

คุณสามารถทำสิ่งต่าง ๆ เพื่อให้ระบบสามารถบูตได้ แต่วิธีเดียวที่จะหลีกเลี่ยงปัญหานี้ได้ในอนาคต (ในระหว่างการอัพเกรด dist) คือการวาง / boot directory บนพาร์ติชั่นเล็ก ๆ แยกต่างหาก


1

วิธีแก้ไขปัญหาอื่น ๆ อาจไม่ทำงานหากคุณได้รับgrub-rescueข้อความแจ้งและ / หรือการกำหนดค่าของคุณใช้ LVM วิธีนี้ควรทำ

บูตบนดิสก์กู้ชีพ (เคล็ดลับ: ฉันเก็บการกระจายขนาดเล็กไว้ในพาร์ติชันเฉพาะของดิสก์ USB สำรองของฉัน)

หากคุณใช้ LVM ให้ค้นหาชื่อกลุ่มวอลุ่มของคุณด้วยlvdisplayหรือคำสั่งที่เกี่ยวข้องกับ LVM อื่น เปิดใช้งาน (มิฉะนั้นคุณจะได้รับmount: special drive /dev/volumegroupname/partition does not existข้อผิดพลาดเมื่อพยายามเมานต์):

vgchange -a y volumegroupname

ตอนนี้เมานต์/พาร์ติชันตามปกติของคุณ, เช่น/mnt :

mount /dev/volumegroupname/partition /mnt

ติดตั้งอุปกรณ์พิเศษบางอย่างเช่นกัน (เช่นเดียวกับ/bootในพาร์ติชันแยกต่างหาก):

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

จากนั้นchrootเป็นการกระจายตามปกติของคุณ:

chroot /mnt

ในที่สุดติดตั้ง GRUB2 - คำสั่งอาจแตกต่างกันไปขึ้นอยู่กับการกระจายของคุณนี้ทำงานบน Slackware (ถ้าไดรฟ์ของคุณ/dev/sda):

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

เริ่มต้นใหม่และคุณควรจะทำ


0

คำตอบที่เลือกไม่เคยทำงาน

สิ่งนี้ใช้ได้ผล:

  1. ติดตั้งระบบปฏิบัติการของคุณใหม่ไปที่ "ทำอย่างอื่น " สร้างตารางพาร์ติชันของคุณ
  2. ใช้พาร์ทิชันหน้าต่างของคุณเช่นอุปกรณ์การบูตหลักของคุณ

ขั้นตอนขั้นตอนที่สองเป็นสิ่งจำเป็น

/bootไม่ได้ใช้

อาจมีวิธีอื่น: ลองเปลี่ยนอุปกรณ์บู๊ตด้วยตนเองในระหว่างการเริ่มต้น อย่างไรก็ตามฉันไม่คิดว่ามันจะใช้ได้และยังไม่ได้ทดสอบ

ปัญหานี้เป็นปัญหาที่เกิดขึ้นมานานและยังคงมีอยู่ใน Ubuntu จนถึงปัจจุบันรวมถึง 17.10

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.