Jak uratować Nie uruchamiającego się GRUB 2 na Linuksie

powłoka polecenia grub

Dawno, dawno temu mieliśmy starszego Gruba, Wielkiego Unified Linux bootloader w wersji 0.97. Legacy GRUB miał wiele zalet, ale stał się stary, a jego twórcy tęsknili za większą funkcjonalnością, dlatego GRUB 2 przyszedł na świat.

GRUB 2 to duża przeróbka z kilkoma znaczącymi różnicami. Uruchamia wymienne nośniki i może być skonfigurowany z opcją wejścia do systemu BIOS. Bardziej skomplikowana jest konfiguracja ze wszystkimi rodzajami skryptów do przebrnięcia i zamiast mieć ładny, dość prosty plik/boot/grub/menu.lst z wszystkimi konfiguracjami w jednym miejscu, domyślnie jest/boot/grub/grub.cfg. Których nie edytujesz bezpośrednio, o nie, bo to nie jest zwykłe dotykanie ludzi, a tylko Inne skrypty. Możemy edytować /etc/default/grub, który kontroluje głównie wygląd menu GRUB. Możemy również edytować skrypty w /etc/grub.d/. Są to skrypty, które uruchamiają systemy operacyjne, sterują zewnętrznymi aplikacjami, takimi jakmemtest Ios_prober oraz tematyką./boot/grub/grub.cfg jest zbudowany z/etc/default/grub I/etc/grub.d/* po uruchomieniu poleceniaupdate-grub, które należy uruchamiać za każdym razem, gdy wprowadzasz zmiany.

dobrą wiadomością jest to, że skryptupdate-grub jest niezawodny do wyszukiwania jąder, plików startowych i dodawania wszystkich systemów operacyjnych do menu startowego GRUB, więc nie musisz tego robić ręcznie.

nauczymy się, jak naprawić dwie najczęstsze awarie. Gdy uruchomisz system i zatrzyma się on na grub>, jest to pełna powłoka polecenia GRUB 2. Oznacza to, że GRUB 2 uruchomił się normalnie i załadował moduł normal.mod (I inne moduły znajdujące się w /boot/grub//), ale nie znalazł pliku grub.cfg. Jeśli widzisz grub rescue>, oznacza to, że nie mógł znaleźć normal.mod, więc prawdopodobnie nie mógł znaleźć żadnego z Twoich plików startowych.

Jak to się dzieje? Jądro mogło zmienić przydziały dysków lub przenieść dyski twarde, zmienić niektóre partycje lub zainstalować nowy system operacyjny i przenieść rzeczy wokół. W tych scenariuszach Twoje pliki startowe nadal tam są, ale GRUB nie może ich znaleźć. Możesz więc wyszukać pliki rozruchowe w monicie GRUB, ustawić ich lokalizacje, a następnie uruchomić system i naprawić konfigurację GRUB.

powłoka polecenia GRUB 2

powłoka polecenia GRUB 2 jest tak samo potężna jak powłoka w starszej wersji GRUB. Można go używać do wykrywania obrazów rozruchowych, jąder i głównych systemów plików. W rzeczywistości daje pełny dostęp do wszystkich systemów plików na komputerze lokalnym, niezależnie od uprawnień lub innych zabezpieczeń. Co niektórzy mogą uznać za lukę w zabezpieczeniach, ale znasz stare uniksowe dyktando: ten, kto ma fizyczny dostęp do maszyny, jest jej właścicielem.

gdy znajdujesz się w wierszu polecenia grub>, masz wiele funkcji podobnych do każdej powłoki poleceń, takich jak historia i uzupełnianie tabulatorów. Trybgrub rescue> jest bardziej ograniczony, bez historii i bez uzupełniania tabulatorów.

jeśli ćwiczysz na działającym systemie, naciśnij C, gdy pojawi się menu startowe GRUB, aby otworzyć powłokę polecenia GRUB. Możesz zatrzymać odliczanie rozruchu, przewijając pozycje menu w górę iw dół za pomocą klawiszy strzałek. Można bezpiecznie eksperymentować w wierszu poleceń GRUB, ponieważ nic, co tam robisz, nie jest trwałe. Jeśli już patrzysz na grub> lub grub rescue>, jesteś gotowy do rocka.

kilka następnych komend działa zarówno z grub>, jak i grub rescue>. Pierwsze polecenie, które należy uruchomić, wywołuje pager, w celu wywołania długich wyjść poleceń:

grub> set pager=1

nie może być spacji po obu stronach znaku równości. Teraz zróbmy trochę zwiedzania. Wpiszls aby wyświetlić listę wszystkich partycji, które widzi GRUB:

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

Co to jestmsdos stuff? Oznacza to, że system ten ma starą tablicę partycji MS-DOS, a nie nową, błyszczącą Globally Unique Identifiers partition table (GPT). (Zobacz Używanie nowej tabeli partycji GUID w Linuksie (Goodbye Ancient MBR). Jeśli używasz GPT, powie (hd0,gpt1). A teraz węszmy. Użyj polecenials, aby zobaczyć, jakie pliki są w Twoim systemie:

grub> ls (hd0,1)/lost+found/ bin/ boot/ cdrom/ dev/ etc/ home/ lib/lib64/ media/ mnt/ opt/ proc/ root/ run/ sbin/ srv/ sys/ tmp/ usr/ var/ vmlinuz vmlinuz.old initrd.img initrd.img.old

Hurra, znaleźliśmy główny system plików. Możesz pominąć etykiety msdos I gpt. Jeśli pominiesz ukośnik, wyświetli on informacje o partycji. Możesz odczytać dowolny plik w systemie za pomocą poleceniacat :

grub> cat (hd0,1)/etc/issueUbuntu 14.04 LTS n l

Czytanie/etc/issue może być przydatne w systemie multi-boot do identyfikacji różnych Linuksów.

uruchamianie z grub>

oto jak ustawić pliki rozruchowe i uruchomić system z zachętygrub>. Po uruchomieniu polecenia ls wiemy, że na (hd0,1) istnieje główny system plików Linuksa i możesz szukać dalej, dopóki nie sprawdzisz, gdzie znajduje się /boot/grub. Następnie uruchom te polecenia, używając własnej partycji głównej, jądra i obrazu initrd:

grub> set root=(hd0,1)grub> linux /boot/vmlinuz-3.13.0-29-generic root=/dev/sda1grub> initrd /boot/initrd.img-3.13.0-29-genericgrub> boot

pierwsza linia ustawia partycję, na której znajduje się główny system plików. Druga linia mówi GRUB o lokalizacji jądra, którego chcesz użyć. Zacznij wpisywać /boot/vmli, a następnie użyj tab-completion, aby wypełnić resztę. Wpisz root=/dev/sdX, aby ustawić lokalizację głównego systemu plików. Tak, wydaje się to zbędne, ale jeśli to pominiesz, dostaniesz paniki jądra. Skąd znasz poprawną partycję? hd0,1 = /dev/sda1. hd1,1 = /dev/sdb1. hd3,2 = /dev/sdd2. Myślę, że możesz ekstrapolować resztę.

trzecia linia ustawia plik initrd, który musi mieć ten sam numer wersji co jądro.

czwarta linia uruchamia system.

w niektórych systemach linuksowych obecne jądra i initrd są symbolicznie połączone do najwyższego poziomu głównego systemu plików:

$ ls -l /vmlinuz -> boot/vmlinuz-3.13.0-29-genericinitrd.img -> boot/initrd.img-3.13.0-29-generic

, więc można uruchomić zgrub> w ten sposób:

grub> set root=(hd0,1)grub> linux /vmlinuz root=/dev/sda1grub> initrd /initrd.imggrub> boot

uruchamianie z grub-rescue>

Jeśli jesteś w powłoce ratunkowej GRUB, polecenia są różne i musisz załadowaćnormal.mod Ilinux.mod Moduły:

grub rescue> set prefix=(hd0,1)/boot/grubgrub rescue> set root=(hd0,1)grub rescue> insmod normalgrub rescue> normalgrub rescue> insmod linuxgrub rescue> linux /boot/vmlinuz-3.13.0-29-generic root=/dev/sda1grub rescue> initrd /boot/initrd.img-3.13.0-29-genericgrub rescue> boot

tab-completion powinien zacząć działać po załadowaniu obu modułów.

Dokonywanie trwałych napraw

Po pomyślnym uruchomieniu systemu uruchom te polecenia, aby trwale naprawić GRUB:

# update-grubGenerating grub configuration file ...Found background: /usr/share/images/grub/Apollo_17_The_Last_Moon_Shot_Edit1.tgaFound background image: /usr/share/images/grub/Apollo_17_The_Last_Moon_Shot_Edit1.tgaFound linux image: /boot/vmlinuz-3.13.0-29-genericFound initrd image: /boot/initrd.img-3.13.0-29-genericFound linux image: /boot/vmlinuz-3.13.0-27-genericFound initrd image: /boot/initrd.img-3.13.0-27-genericFound linux image: /boot/vmlinuz-3.13.0-24-genericFound initrd image: /boot/initrd.img-3.13.0-24-genericFound memtest86+ image: /boot/memtest86+.elfFound memtest86+ image: /boot/memtest86+.bindone# grub-install /dev/sdaInstalling for i386-pc platform.Installation finished. No error reported.

podczas uruchamianiagrub-install pamiętaj, że instalujesz go w sektorze rozruchowym dysku twardego, a nie na partycji, więc nie używaj numeru partycji, takiego jak/dev/sda1.

ale nadal nie działa

Jeśli Twój system jest tak popaprany, że nic z tego nie działa, spróbuj Super GRUB2 live rescue disk. Pomocny powinien być również oficjalny podręcznik GNU GRUB 2.00.

Related Posts

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *