przez pomyłkę usunięto folder / boot i uruchomiono ponownie

16

Przez pomyłkę usunąłem folder / boot z mojego systemu plików, uruchomiłem ponownie i wszystko, co teraz otrzymuję, to:

error: file '/boot/grub/i368-pc/linux.mod' not found.

grub rescue>
Imad Nouari
źródło
jest inaczej, w tym przypadku folder / boot został całkowicie usunięty. nie tylko niektóre pliki, dzięki.
Imad Nouari,
Nie wydaje mi się, żeby żadna odpowiedź na drugie pytanie była wystarczająca, aby to naprawić ...
Graeme
W porządku, naprawdę nie przeczytałem wszystkich odpowiedzi. Zawsze sugerowałbym przebudowanie całości, zamiast bawić się w szukanie tego, czego brakuje, więc zakładałem, że ktoś też by to zrobił. Zajmuje to połowę czasu.
Cthulhu Tentacles
7
Znacznie większym błędem w porównaniu do usuwania /bootjest oczywiście ponowne uruchomienie systemu, zanim zostało to naprawione.
Anthon

Odpowiedzi:

36

Ups!

Oto co robić:

  1. Uruchom dystrybucję na żywo. Może to być dysk instalacyjny Ubuntu lub inny, na przykład Knoppix .

  2. Znajdź dysk / partycję, na której zainstalowałeś główny system plików. Aby to zrobić, można otworzyć terminal i uruchomić albo sudo parted -lalbo sudo fdisk -l. Jeśli nie możesz powiedzieć, edytuj swoje pytanie i dodaj wynik.

  3. Zakładając, że twoja partycja główna znaleziona w ostatnim kroku to /dev/sdxy( xpowinna być kolejna litera i ypowinna być liczba), a następnie uruchom następujące polecenia w terminalu:

    mkdir mnt
    sudo mount /dev/sdxy mnt
    sudo mount --bind /dev /mnt/dev
    sudo mount --bind /proc /mnt/proc
    sudo mount --bind /sys /mnt/sys
    sudo chroot mnt
    
  4. Będziesz teraz w chrootśrodowisku, co oznacza, że ​​wykonywanie tutaj poleceń jest równoważne z uruchamianiem ich w zainstalowanym systemie. Pierwszą rzeczą, którą chcesz zrobić, to ponownie zainstalować GRUB2 na urządzeniu, aby skopiowało prawidłowe pliki do /bootfolderu. Aby to zrobić, uruchom następujące polecenie na dysku, na którym znajduje się twoja partycja główna (tzn. /dev/sdxyZ yusuniętą liczbą ( )):

    grub-install /dev/sdx
    
  5. Teraz chcesz dowiedzieć się, które zainstalowane pakiety mają pliki w katalogu rozruchowym i ponownie je zainstalować. Zastąpi to między innymi obrazy jądra, które zostały usunięte. Polecenie znalezienia pakietów to:

    dpkg -S /boot
    

    I aby je ponownie zainstalować:

    apt-get --reinstall install ...
    

    Gdzie ...jest zastąpione nazwami pakietów z pierwszego polecenia. Nie dołączaj przecinków, po prostu umieść nazwy pakietów ze spacjami do oddzielenia.

    Ten krok prawdopodobnie będzie wymagał dostępu do Internetu (chyba że pakiety są już w pamięci podręcznej), więc upewnij się, że masz połączenie, jeśli występuje problem.

  6. Ponieważ usuniesz jądra i ponownie je zainstalujesz, powinno to spowodować automatyczne uruchomienie aktualizacji GRUB2. Ale na wypadek, gdyby tego nie zrobili, możesz uruchomić:

    update-grub
    
  7. Uruchom ponownie i rzeczy powinny być teraz naprawione. Jednym z problemów, które miałem po raz ostatni, gdy zrobiłem coś podobnego, było to, że system Windows instaluje się tam, gdzie nie można go znaleźć update-grubpo uruchomieniu z chrootpowodu błędu os-prober. Jeśli jest to problem, po prostu uruchom sudo update-grubponownie w naprawionym systemie.

Graeme
źródło
@Olivier, dzięki, że pierwotnie miałem /dev/sdaxwszędzie, a potem zmieniłem na /dev/sdxy.
Graeme,
Dzięki za wspaniałe informacje - uratowało mnie to, z jednym dodatkiem. Ponieważ mam programową macierz RAID, musiałem również postępować zgodnie z instrukcjami tutaj: help.ubuntu.com/community/Grub2/Instalacja w ramach ponownej instalacji za pomocą metody chroot, aby uruchomić mdadm i złożyć elementy RAID i odpowiednio wykonać montaż. Następnie po chroot zainstaluj ponownie pakiety zgodnie z opisem w tej odpowiedzi i wszystko będzie dobrze!
bitfiddler