การกู้คืนไฟล์. mod ที่ย้ายโดยใช้ grubrescue


33

ฉันทำสิ่งที่เป็นใบ้ ... ฉันลืมว่า Ubuntu 10.04 (Lucid Lynx) เปลี่ยนเป็นGRUB  2 ซึ่งทำให้ไฟล์ * .mod (โมดูลเคอร์เนล) /boot/grubตัน ฉันคิดว่าพวกเขาเป็นไฟล์ซาวด์แทร็กที่ใส่ผิดและฉันก็ย้ายมัน ไม่จำเป็นต้องพูดรีบูตครั้งต่อไปเป็นบาดแผล ฉันถูกนำเสนอด้วยบางสิ่งที่ฉันไม่มีความทรงจำในการมองเห็น ... 'การช่วยเหลือด้วงด้วง>'

ด้วยความช่วยเหลือของการแก้ไขข้อผิดพลาด GRUB:“ ข้อผิดพลาด: ระบบแฟ้มที่ไม่รู้จัก”อย่างไรก็ตามฉันสามารถกู้คืน ...

  • ฉันค้นพบว่าการกู้ภัย GRUB ไม่มี 'cd', 'cp' หรือคำสั่งระบบไฟล์อื่น ๆ ยกเว้นการเปลี่ยนแปลง 'ls'
  • ดังนั้นครั้งแรกที่ผมได้ไปหาพาร์ทิชันที่มี/bootไดเรกทอรีที่มีvmlinuzไฟล์และไฟล์ภาพบูตอื่น ๆ ... (ประมาณจากความทรงจำของความพยายามที่ล้มเหลวเช่นเดียวกับบรรทัดว่างเพื่อความชัดเจนเพิ่ม 2014/07/10 โดย docsalvage)

    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 
    
  • ผมพบว่า/bootไดเรกทอรีที่มีvmlinuzไฟล์บนพาร์ติชันvmlinuz-2.6.32-33-generic(hd0,2)

  • จากนั้นฉันบูตด้วยตนเองจากพรอมต์ 'grub rescue>' คำสั่งต่อไปนี้จะ ...

    • ตั้งค่าrootการใช้ไดเรกทอรีบนพาร์ติชัน/boot(hd0,2)
    • linuxเคอร์เนลโมดูลโหลด
    • vmlinuz-2.6.32-33-genericตั้งโมดูลที่ใช้ภาพเคอร์เนล
    • ชุด initrd (RAM ดิสก์เริ่มต้น) initrd.img-2.6.32-33-genericเพื่อใช้ภาพ
    • Boot Linux
  • grub rescue>  set root=(hd0,2)/boot  
    grub rescue>  insmod linux  
    grub rescue>  linux (hd0,2)/boot/vmlinuz-2.6.32-33-generic root=/dev/sda2
    grub rescue>  initrd (hd0,2)/boot/initrd.img-2.6.32-33-generic  
    grub rescue>  boot  
    
  • การบูทและขัดข้องกับพรอมต์ BusyBox ซึ่งไม่มีคำสั่งระบบไฟล์พื้นฐาน

  • จากนั้นฉันย้ายไฟล์ * .mod กลับไปที่/boot/grubไดเรกทอรี ...

    busybox>  cd /boot  
    busybox>  mv mod/* grub
    busybox>  reboot
    
  • การรีบูตนั้นประสบความสำเร็จ แต่นั่นเป็นการทำงานมากมาย

มีวิธีที่ง่ายกว่านี้ไหม?


1
การซ่อมแซมบูทจะเป็นวิธีที่ง่ายกว่าในความคิดของฉัน ลองอ่านหนึ่งในหลาย ๆ คำตอบของฉันใน Boot-Repair
SirCharlo

1
วิธีที่ "ง่ายที่สุด" ไม่ใช่วิธีที่ดีที่สุดเสมอไป ฉันไม่เห็นด้วยอย่างยิ่งกับความคิดเห็นทั้งหมดที่แนะนำให้ใช้ Live CD; เป็นการยากมากที่จะบูตจาก Live CD บนระบบที่ไม่มีตัวอ่าน CD / DVD
Simón

ican ไม่พบพาร์ทิชันที่มี / boot directory พาร์ทิชันทั้งหมดตามคำสั่ง ls ให้เอาท์พุทระบบไฟล์ที่ไม่รู้จัก
Rafed Nole

1
โพสต์ของคุณมีประโยชน์มากสำหรับการบูตเคอร์เนลและ initrd ด้วยตนเอง แต่ระบบของฉันไม่พบ dev, sys หรือ proc ฯลฯ / fstab หรือ sbin / init ที่ทำให้ฉันไปยังอีกโพสต์ซึ่งปัญหาโหลดเคอร์เนลและการตั้งค่ารากตามรายละเอียดในทิศทางบูตด้วยตนเองในเอกสารด้วง , เช่น grub> linux (hd0,X)/boot/vmlinuz-a.b.c-d-generic root=/dev/sdaXที่Xเป็นพาร์ทิชันที่มี/boot, a.b.c-dเป็นรุ่นเคอร์เนล จากนั้นระบบของฉันบูตได้ดี! ขอบคุณ!
Mark Mikofski

1
นอกเหนือไปจาก [แก้ไขข้อผิดพลาดด้วง“ข้อผิดพลาด: ระบบไฟล์ที่ไม่รู้จัก” [ซ้ำ]] ( askubuntu.com/q/142300/36961 ) อีกการเชื่อมโยงที่ดีที่ครอบคลุมขั้นตอนเหล่านี้เป็นวิธีการกู้ภัยไม่บูตด้วง 2 บน Linuxที่คู่มือ grub 2ก็มีประโยชน์มากเช่นกัน
Mark Mikofski

คำตอบ:


5

เลขที่ฉันคิดว่าคุณสวยมากพบว่าวิธีที่ง่ายที่สุดในการกู้คืนจากสถานะของระบบของคุณโดยใช้กู้ภัยด้วง ; มันเป็นระบบที่เรียบง่ายมากที่ให้ความสามารถเพียงพอในการบูตระบบ

BTW ฉันเชื่อว่าคุณต้องพบ.modไฟล์และดำเนินการinsmod linuxไม่เช่นนั้นlinuxคำสั่งจะล้มเหลว

วิธีอื่น ๆ ดังที่กล่าวมาคือการบูต Live CD และติดตั้ง grub2 อีกครั้งหลังจาก chroot'ing ไปที่ระบบ 'broken'


คุณพูดถูก! ฉันลืมไปเลยว่าทำไปแล้ว เพิ่มลงในโพสต์ดั้งเดิมของฉันด้านบนเพื่อการอ้างอิงในอนาคต ฉันต้องมีวินัยในการจดบันทึกอย่างระมัดระวังในสถานการณ์เหล่านี้ โปรดแนะนำหากจำเป็นต้องแก้ไขเพิ่มเติม
DocSalvager

ฉันยังมีการระบุรากเมื่อโหลดเคอร์เนลในขณะที่ด้วงเอกสาร เช่น grub> linux (hd0,2)/boot/vmlinuz-2.6.32-33-generic root=/dev/sda2
มาร์ค Mikofski

โปรดทราบว่าหากคุณพบไฟล์. mod คุณสามารถกู้คืน“ grub rescue” เป็น GRUB ที่มีคุณลักษณะครบถ้วน: # Inspect the current prefix (and other preset variables): set # Find out which devices are available: ls # Set to the correct value, which might be something like this: set prefix=(hd0,1)/grub set root=(hd0,1) insmod normal normal ที่มา: gnu.org/software/grub/manual/html_node/ …
MegaBrutal

7

ต่อไปนี้เป็นคำแนะนำทั่วไปและพื้นฐานในการช่วยเหลือข้อผิดพลาดในการบูตเช่นGRUB loading stage 1.5 error 15 (เช่นหลังจากการติดตั้ง Windows ในดิสก์ไดรฟ์อื่น):

  1. บูตด้วย LiveDVD (เช่นดิสก์ Ubuntu Desktop)

  2. เปิดเทอร์มินัลและเขียนการกำหนดค่าด้วงใหม่โดยใช้คำสั่งเหล่านี้:

    • sudo mount /dev/sdXY /mnt
    • sudo grub-install --root-directory=/mnt /dev/sdX

ในกรณีที่/dev/sdXเป็นดิสก์ที่มีการติดตั้งอูบุนตูและ/dev/sdXYเป็นพาร์ทิชันบนดิสก์ที่มีการติดตั้งอูบุนตู ในคำอื่น ๆ/dev/sdXYมี/bootและอื่น ๆ

ใช้fdisk -lเพื่อตรวจสอบตำแหน่งการติดตั้ง Ubuntu


ไม่ทำงาน. บางทีถ้าทิศทางนั้นเจาะจงมากขึ้นมันก็น่าจะใช้ได้
Tim Stewart

เมื่อฉันมีปัญหา grub2 บนเครื่องที่ไม่มีไดรฟ์ซีดีฉันสามารถกู้คืนได้โดยใช้ไดรฟ์หน่วยความจำ usb Stick Gparted Live ของฉัน ฉัน booted เป็น Gparted live จากนั้นฉันเริ่มต้นเทอร์มินัลและพิมพ์ fdisk -l (นั่นคือตัวอักษร ell ไม่ใช่หมายเลข 1) ผลลัพธ์จากนั้นให้ฉันระบุพาร์ติชันที่มีพาร์ติชันรูทและจากนั้นฉันทำตามคำแนะนำที่ดีด้านบน .
Vic

4
  1. บู๊ตเป็น Live CD

  2. เปิดเทอร์มินัล (CTRL + ALT + T)

  3. ป้อนคำสั่งต่อไปนี้:

sudo fdisk -l

และค้นหาพาร์ติชั่น Ubuntu ของคุณ (ควรเป็น / dev / sda1 หากเป็นพาร์ติชั่นแรก)

sudo mount /dev/sda1 /mnt

sudo mount --bind /sys /mnt/sys

sudo mount --bind /proc /mnt/proc

sudo mount --bind /dev /mnt/dev

sudo chroot /mnt

ตอนนี้ติดตั้ง Grub2 ใหม่

sudo apt-get install --reinstall grub2

2
นี่เป็นวิธีที่ดีกว่าดีกว่าsudo mount /dev/sda1 /mntและsudo grub-install --root-directory=/mnt/ /dev/sda && sudo update-grub?

4

ฉันมีปัญหาเดียวกันเมื่อฉันอัพเกรดระบบ

ฉันขอแนะนำขั้นตอนง่าย ๆ ดังต่อไปนี้:

  1. บูตระบบของคุณด้วย ubuntu live CD หรือ live USB
  2. เปิดเทอร์มินัลและเรียกใช้คำสั่ง sudo add-apt-repository ppa: yannubuntu / boot-repair && sudo apt-get update
  3. จากนั้นติดตั้งการซ่อมแซมการบู๊ตด้วยการรันคำสั่ง sudo apt-get install -y boot-repair && boot-repair

  4. เรียกใช้การซ่อมแซมการบู๊ตหลังจากติดตั้ง ตัวอย่างเช่นจากเมนูใช้System->Administration->Boot-Repair (Ubuntu 10.04 เท่านั้น) และทำตามคำแนะนำ

    อาจใช้เวลา 15-20 นาทีเพื่อพิจารณาปัญหาและทำการแก้ไข

สำหรับความช่วยเหลือเพิ่มเติมไปที่ลิงค์https://help.ubuntu.com/community/Boot-Repair


0

คุณสามารถบูทซีดีสดติดฮาร์ดไดรฟ์เปิดหอยโข่งเป็นรูทและคัดลอกไฟล์เหล่านั้นไปที่ / boot

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