Odzyskiwanie przeniesionych plików .mod za pomocą programu grubrescue

33

Zrobiłem głupią rzecz ... Zapomniałem, że Ubuntu 10.04 (Lucid Lynx) przełączył się na GRUB  2, który zawiera mnóstwo plików * .mod (modułów jądra) /boot/grub. Myślałem, że są to pliki ścieżki dźwiękowej umieszczone tam błędnie i przeniosłem je. Nie trzeba dodawać, że kolejny restart był traumatyczny. Przedstawiono mi coś, o czym nie pamiętałem, aby kiedykolwiek widziałem ... monit „rat grub>>”.

Za pomocą narzędzia Naprawianie błędu GRUB: „błąd: nieznany system plików” udało mi się jednak odzyskać ...

  • Odkryłem, że ratowanie GRUB-a nie ma poleceń „cd”, „cp” ani żadnych innych poleceń systemu plików poza własną odmianą „ls”.
  • Najpierw więc musiałem znaleźć partycję z /bootkatalogiem zawierającym vmlinuzplik i inne pliki obrazu rozruchowego ... (przybliżenie z pamięci nieudanych prób, a także puste wiersze dla przejrzystości, dodane 10.07.2014 przez 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 
    
  • Znalazłem /bootkatalog zawierający vmlinuzplik vmlinuz-2.6.32-33-genericna partycji (hd0,2).

  • Następnie ręcznie uruchomiłem system z monitu „grub rat>>”. Następujące polecenia ...

    • Ustaw, rootaby używać /bootkatalogu na partycji (hd0,2).
    • Załaduj moduł jądra linux.
    • Ustaw ten moduł, aby używał obrazu jądra vmlinuz-2.6.32-33-generic.
    • Ustaw initrd (zainicjuj dysk RAM), aby użyć obrazu initrd.img-2.6.32-33-generic.
    • Uruchom system 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  
    
  • Powoduje to uruchomienie i awarię wiersza polecenia BusyBox, który NIE zawiera podstawowych poleceń systemu plików.

  • Następnie przeniosłem pliki * .mod z powrotem do /boot/grubkatalogu ...

    busybox>  cd /boot  
    busybox>  mv mod/* grub
    busybox>  reboot
    
  • Ponowne uruchomienie zakończyło się powodzeniem, ale było to dużo pracy.

Czy istnieje prostszy sposób?

DocSalvager
źródło
1
Moim zdaniem, naprawa rozruchu byłaby o wiele łatwiejsza. Sprawdź jedną z moich wielu odpowiedzi na temat Boot-Repair, aby uzyskać szczegółowe informacje na temat korzystania z niej.
SirCharlo,
1
„Najłatwiejszy” sposób nie zawsze jest najlepszy. Zdecydowanie nie zgadzam się ze wszystkimi komentarzami sugerującymi użycie Live CD; bardzo trudno jest uruchomić komputer z Live CD w systemach, które nie mają czytnika CD / DVD.
Simón
Nie można zlokalizować partycji w katalogu / boot. Wszystkie partycje po poleceniu ls dają dane wyjściowe nieznanego systemu plików.
Rafed Nole
1
Twój post był bardzo pomocny przy ręcznym uruchamianiu jądra i initrd, ale mój system nie mógł znaleźć dev, sys lub proc, etc / fstab lub sbin / init. Doprowadziło mnie to do kolejnego postu , w którym zasugerowałem załadowanie jądra i ustawienie roota zgodnie ze szczegółowymi instrukcjami uruchamiania w dokumentacji grub , np .: grub> linux (hd0,X)/boot/vmlinuz-a.b.c-d-generic root=/dev/sdaX gdzie Xjest partycja /boot, a.b.c-dto wersja jądra. Potem mój system uruchomił się dobrze! Dzięki!
Mark Mikofski,
1
oprócz [Naprawa błędu GRUB: „błąd: nieznany system plików” [duplikat]] ( askubuntu.com/q/142300/36961 ) innym świetnym linkiem, który obejmuje te kroki, jest Jak uratować nie-bootujący GRUB 2 w systemie Linux , Bardzo pomocny jest także podręcznik grub 2
Mark Mikofski,

Odpowiedzi:

5

Nie. Myślę, że znalazłeś najłatwiejszy sposób na odzyskanie systemu ze stanu gruba przy pomocy GRUB-a ; jest to bardzo minimalistyczny system, który daje wystarczającą zdolność do uruchomienia systemu.

BTW, uważam, że musiałeś znaleźć .modpliki i wykonać je, insmod linuxinaczej linuxpolecenie się nie powiedzie.

Jedynym innym sposobem, jak wspomniano, byłoby uruchomienie Live CD i ponowna instalacja grub2 po chroot'owaniu do „zepsutego” systemu.

StarNamer
źródło
Masz całkowitą rację! Zapomniałem, że to zrobiłem. Dodano do mojego oryginalnego postu powyżej w celu odniesienia w przyszłości. Muszę być bardziej zdyscyplinowany w prowadzeniu ostrożnych notatek w takich sytuacjach. Proszę doradzić, czy potrzebne są dalsze zmiany.
DocSalvager,
Miałem też do określenia korzenia podczas ładowania jądra jak w żarcie docs przykład grub> linux (hd0,2)/boot/vmlinuz-2.6.32-33-generic root=/dev/sda2
Mark Mikofski
Pamiętaj też, że jeśli znalazłeś pliki .mod, możesz przywrócić „GRUB Rescue” do w pełni funkcjonalnego GRUB-a: # 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 Źródło: gnu.org/software/grub/manual/html_node/…
MegaBrutal
7

Oto kilka ogólnych i podstawowych instrukcji pomocnych w przypadku błędów rozruchu, takich jak GRUB loading stage 1.5 error 15 (np. Po instalacji systemu Windows na innym dysku):

  1. Uruchom z LiveDVD (np. Dysk Ubuntu Desktop).

  2. Otwórz terminal i ponownie napisz konfigurację grub za pomocą następujących poleceń:

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

Gdzie /dev/sdXjest dysk, na którym zainstalowano Ubuntu, a /dev/sdXYtakże partycja na dysku, na którym zainstalowano Ubuntu. Innymi słowy, /dev/sdXYzawiera /booti tak dalej.

Służy fdisk -ldo weryfikacji lokalizacji instalacji Ubuntu.

lamy
źródło
Nie działał. Być może, gdyby wskazówki były bardziej szczegółowe, zadziałałoby.
Tim Stewart
Kiedy miałem problem z grub2 na maszynie bez napędu CD, mogłem odzyskać za pomocą mojego napędu pamięci USB Gparted Live. Uruchomiłem Gparted na żywo. NASTĘPNIE uruchomiłem terminal i wpisałem fdisk -l (to jest litera ell, a nie cyfra 1) Dane wyjściowe z tego pozwoliły mi zidentyfikować partycję, która miała partycję root, a następnie postępowałem zgodnie z powyższymi doskonałymi instrukcjami i wkrótce znów szczęśliwie uruchomiłem podwójnie .
Vic
4
  1. Uruchom komputer na Live CD

  2. Otwarty terminal (CTRL + ALT + T)

  3. Wprowadź następujące polecenia:

sudo fdisk -l

I znajdź swoją partycję Ubuntu (powinna to być / dev / sda1, jeśli jest to pierwsza partycja)

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

Teraz zainstaluj ponownie Grub2

sudo apt-get install --reinstall grub2
paskudne
źródło
2
Czy to lepszy sposób niż sudo mount /dev/sda1 /mnti sudo grub-install --root-directory=/mnt/ /dev/sda && sudo update-grub?
4

Miałem ten sam problem podczas aktualizacji systemu.

Proponuję następujące proste kroki:

  1. Uruchom swój system z Live CD z Ubuntu lub Live USB.
  2. Otwórz terminal i uruchom polecenie sudo add-apt-repository ppa: yannubuntu / boot-repair && sudo apt-get update
  3. Następnie zainstaluj naprawę rozruchu, uruchamiając polecenie sudo apt-get install -y boot-repair && boot-repair

  4. Uruchom naprawę rozruchu po instalacji. Na przykład z menu użyj System->Administration->Boot-Repair (tylko Ubuntu 10.04) i postępuj zgodnie z instrukcjami.

    Rozwiązanie problemu może zająć 15–20 minut.

Aby uzyskać więcej pomocy, przejdź do linku https://help.ubuntu.com/community/Boot-Repair

Szorstki
źródło
0

Możesz uruchomić live CD, zamontować dysk twardy, otworzyć nautilus jako root i skopiować te pliki do / boot.

paskudne
źródło