การกู้คืนจากข้อผิดพลาด 'grub rescue>' [ปิด]


25

โพสต์ต้นฉบับไปยัง AskUbuntu.com ...

AskUbuntu ได้นำนโยบายการปิดคำถามเกี่ยวกับรุ่น EOL (End Of Life) มาใช้ มีแกนนำในการลบออกเช่นกัน เพื่อป้องกันการสูญเสียคำถามยอดนิยมที่เป็นไปได้ (342335 จำนวนการดูล่าสุด) กำลังวางเวอร์ชันที่แก้ไข --- docsalvager

ระบบ "คลาสสิค" ...

  • Puppy Linux 5.2.8 (Lucid) อ้างอิงจาก Ubuntu 10.04 (Lucid Lynx)
  • ตัวโหลดบูตGRUB 2

ด้วง 2ทำให้จำนวนของ*.modไฟล์ (เคอร์เนลโมดูล) /boot/grubใน การลบไฟล์เหล่านี้ (คิดว่าพวกเขาถูกใส่ผิดไฟล์เสียง) grub rescue>ส่งผลให้ในความล้มเหลวในการบูตเครื่องและพรอมต์

วิธีการกู้คืนในสถานการณ์เช่นนี้?


1
ดูเหมือนว่าคำถามโง่ .. เห็นได้ชัดว่าคุณทั้งเรียกคืนไฟล์ที่ถูกลบจากการสำรองข้อมูลหรือติดตั้งด้วง (และมีคำถามมากมายเกี่ยวกับวิธีการทำเช่นนั้นแล้ว)
psusi

สถิติการดูที่ผ่านมาแบบสัมบูรณ์นั้นมีความเกี่ยวข้องกับสถิติของหนังสือพิมพ์เมื่อวาน
Anthon

หนังสือพิมพ์ในอดีตได้แก้ไขอาชญากรรมที่นับไม่ถ้วนและรับผิดชอบในการแก้ปัญหาที่ทำให้โลกนี้น่าอยู่ขึ้น
DocSalvager

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

อย่าบอกว่าฉันไม่คิดว่าการตกปลาไฟล์เฉพาะจาก initrd นั้นไม่ฉลาด ฉันแค่คิดว่ามันมีแนวโน้มที่จะสร้างความสับสนให้กับคนที่จะช่วย การบูตเข้าสู่โหมดช่วยเหลือ / กู้คืนเป็นขั้นตอนทั่วไป
Bratchley

คำตอบ:


43

คำตอบนี้มีไว้สำหรับคนอื่น ๆ ที่นั่นคำตอบของ DocSalvager ไม่ได้ผล

  1. ฉันติดตามการใช้ DocSalvager lsเพื่อค้นหาพาร์ติชั่นฮาร์ดไดรฟ์ที่ถูกต้อง (hd0,msdos5)ในกรณีของฉันมันเป็น
  2. จากนั้นฉันก็ดำเนินการคำสั่งต่อไปนี้เพื่อกลับไปที่หน้าจอบูตโหลดเดอร์ด้วงปกติ

    grub rescue>  set boot=(hd0,msdos5)
    grub rescue>  set prefix=(hd0,msdos5)/boot/grub
    grub rescue>  insmod normal  
    grub rescue>  normal  
    
  3. หลังจากบูทเข้า Ubuntu ฉันซ่อมแซมตัวโหลดบูตด้วงด้วยคำสั่งต่อไปนี้จากเทอร์มินัล

    sudo grub-install /dev/sda 
    

โปรดอ้างอิงแหล่งที่มานี้เพื่อดูภาพของกระบวนการนี้


6
ฉันดีใจที่พวกคุณโพสต์ก่อนหน้านี้ถูกปิด
smac89

2
สมบูรณ์แบบ - ความช่วยเหลือที่ฉันต้องการในการบูต! ฉันก็วิ่งไปsudo update-grubก่อนหน้าgrub-installนี้เพราะเลย์เอาต์ของพาร์ทิชันของฉันเปลี่ยนไป
mwfearnley

insmod normalคำสั่งใช้เวลานานเท่าไหร่? หลังจากกด Enter ubuntu hangs ของฉัน เป็นที่ยอมรับว่าเป็น 'ใช้งาน' เป็น VM ใน Oracle VirtualBox
snark

1
ปรับปรุง: มันกลับมาในที่สุดด้วยerror: failure reading sector 0x8019a4 from 'hd0'ดังนั้นฉันคิดว่ามันเป็นสถานีที่สวย!
snark

คำตอบในตำนาน!
แซ

28

กำลังกู้คืนจากความล้มเหลวในการช่วยเหลือด้วง ...

  • grub rescue>ไม่สนับสนุนcd, cpหรือคำสั่งระบบแฟ้มอื่น ๆ ยกเว้นการเปลี่ยนแปลงของตัวเองlsซึ่งจริงๆชนิดของfindคำสั่ง
  • ก่อนอื่นต้องหาพาร์ติชั่นที่มีได/bootเร็กตอรี่ที่บรรจุvmlinuzและไฟล์อิมเมจสำหรับบูตอื่น ๆ ...

    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 
    
    • ls โดยไม่มีข้อโต้แย้งส่งกลับสี่พาร์ติชันบนระบบนี้
    • ls (hd0,4)/bootไม่พบไดเรกทอรีบนพาร์ติชัน/boot(hd0,4)
    • ls (hd0,3)/bootไม่พบไดเรกทอรีบนพาร์ติชัน/boot(hd0,3)
    • ls (hd0,2)/bootค้นหา/bootไดเรกทอรีบนพาร์ติชัน(hd0,2)และมีvmlinuzไฟล์อิมเมจสำหรับบูตอื่น ๆ ที่เราต้องการ
  • หากต้องการบูตด้วยตนเองจากgrub rescue>พรอมต์ ...

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

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

    busybox>  cd /boot  
    busybox>  mv mod/* grub
    busybox>  reboot
    
  • รีบูตสำเร็จ!

ดูสิ่งนี้ด้วย ...


ฉันไม่สามารถหาโฟลเดอร์บูตใด ๆ ในระดับรากใน BusyBox
souparno Majumder

1
vmlinuz, ... อิมเมจการบูตที่คุณกำลังมองหาอาจอยู่ในระบบไฟล์รูทระดับบนสุดดังนั้นให้ลองใช้เพียงสแลช ที่จะแสดงไดเรกทอรีระดับบนสุด หากอิมเมจสำหรับบูตไม่อยู่ในรูทระดับบนสุดคุณสามารถเริ่มลองไดเรกทอรีที่มีแนวโน้มมากที่สุดจนกว่าคุณจะพบมัน ตัวอย่างเช่นls (hd0,1)/, ls (hd0,2)/, ls (hd0,2)/initramfs/ฯลฯ ..
DocSalvager

ในกรณีของฉันหลังจากทำงานls (hd0,7)/bootมันจะแสดงattempt to read or write outside of disk 'hd0'ขึ้น
เดซี่

มีพาร์ติชั่นน้อยกว่า 7 ตัวในไดรฟ์ hd0 อาจเป็นได้ว่ามีบางพื้นที่ที่ไม่ได้ปันส่วนบนไดรฟ์ที่ไม่ได้เป็นส่วนหนึ่งของพาร์ติชันใด ๆ
DocSalvager

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