- GRUB bieži vien pārstāj darboties pēc nodalījumu izmaiņām, citu sistēmu instalēšanas vai atjauninājumiem, taču to gandrīz vienmēr var atjaunot.
- Pati GRUB konsole ļauj atrast /boot/grub, manuāli ielādēt kodolu un startēt sistēmu, neizmantojot LiveCD.
- Kad sistēma ir startēta, ir svarīgi pārinstalēt un atjaunināt GRUB no Linux, lai novērstu kļūmes atkārtošanos.
- Nopietnākos gadījumos dziļāku labošanu piedāvā metodes, kas izmanto LiveUSB, chroot un tādus rīkus kā Boot-Repair.

Ja kādreiz esat ieslēdzis datoru un tā vietā, lai redzētu sava izplatīšanas produkta logotipu, jūs esat redzējis melnu ekrānu un ziņojumu, piemēram, "kļūda: šāda ierīce nav pieejama" vai "grub rescue"Jūs precīzi zināsiet, kādu panikas sajūtu tas izraisa. Pēkšņi šķiet, ka esat pazaudējis visu sistēmu, ka tā būs jāpārformatē un ka jūsu dati ir neskaidri... bet patiesībā vairumā gadījumu to var labot, neiedziļinoties šādās galējībās.
Labā ziņa ir tā, ka, lai gan šķiet, ka tā ir nopietna problēma, GRUB labošana bez LiveCD ir pilnīgi iespējama. Izmantojot pašu GRUB konsoli, ja diska bojājums nav katastrofāls, varat restartēt savu Linux sistēmu. Ar nelielu pacietību, dažām labi ierakstītām komandām un izpratni par to, kas notiek aizkulisēs, varat atkārtoti startēt savu Linux sistēmu, pārinstalēt sāknēšanas pārvaldnieku un sagatavot to turpmākai restartēšanai.

Pirms sākam rakstīt kā traki, ir svarīgi skaidri saprast sekojošo: Kāda loma GRUB ir jaunuzņēmumā? jūsu datora. GRUB 2 ir sāknēšanas pārvaldnieks, ko izmanto lielākā daļa mūsdienu GNU/Linux distribūciju: tas parasti tiek instalēts MBR vai nodalījuma galvenē un ir atbildīgs par izvēlnes attēlošanu ar pieejamajām operētājsistēmām un Linux kodola ielādi ar atbilstošajiem parametriem.
Šis sāknēšanas pārvaldnieks Tas balstās uz failiem, kas parasti atrodas direktorijā /boot/grub jūsu instalācijas daļas: moduļus, konfigurācijas failus, kodola attēlus, initrd utt. Ja šī direktorijs kļūst nepieejams, tiek pārvietots, bojāts vai mainās diski, GRUB to nepamanot, jūs sāksiet saņemt kļūdas, piemēram, "šādas ierīces nav", "nezināma failu sistēma" vai baiso uzvedni. grub glābšana>.
Tipiski vadītāja sabrukuma cēloņi ir diezgan labi zināmi: Instalējiet Windows pēc Linux un pārrakstīt MBR, modificējot nodalījumus (mainot izmērus, pārvietojot, dzēšot, izveidojot jaunus) ar tādiem rīkiem kā GParted vai līdzīgiem, vai pat ar kodola vai sistēmas atjauninājums kas kaut kādu iemeslu dēļ GRUB konfigurācijā atstāj nekonsekventas atsauces.
Papildus visam iepriekšminētajam, daži lietotāji dod priekšroku Instalējiet /boot atsevišķā nodalījumāTas ir ļoti bieži sastopams sarežģītās konfigurācijās vai vidēs, kur pārējā diska daļa ir jāšifrē. Šādos gadījumos jebkādas izmaiņas šajā nodalījumā vai tā diska numurā var liegt GRUB atrast savus moduļus un konfigurāciju.
GRUB kļūdu veidi un konsoles režīmi
Kad GRUB neizdodas, tas parasti vienkārši nepazūd: Parasti tas mūs atstāj kaut kādā konsoles vai glābšanas izvēlnē. ko mēs varam izmantot, lai manuāli palaistu sistēmu. Darbība nedaudz mainās atkarībā no problēmas nopietnības un instalētās GRUB versijas.
Daudzos izplatījumos jūs redzēsiet, ka sistēma mēģina ielādēt GRUB un galu galā avarē. uzvedne ar tekstu grub rescue>Šis režīms ir diezgan ierobežots, taču tas ļauj palaist dažas taustiņu komandas, piemēram, ls, set o insmod, pietiekami, lai atrastu pareizo nodalījumu un piespiedu kārtā ielādētu Linux moduli.
Citos gadījumos jūs redzēsiet, GRUB parastā izvēlne (operētājsistēmu saraksts), bet palaišanas mēģinājums neizdodas vai izvēlne izskatās bojāta. Tur varat nospiest taustiņu c lai ievadītu pilnu GRUB komandrindu, kas ir daudz jaudīgāka nekā glābšanas režīms, ar plašāku pieejamo komandu kopumu.
Vecākās instalācijās dažas sistēmas joprojām pastāv ar GRUB mantojums (nevis GRUB 2), piemēram, noteiktas CentOS 5/6 versijas vai citas vecākas distribūcijas. Šādā gadījumā komandas sintakse nedaudz mainās, lai gan vispārējā ideja ir tāda pati: atrodiet /boot direktoriju, norādiet GRUB, kur atrodas tā sakne, un manuāli ielādējiet kodolu un initrd.
Kā labot GRUB bez LiveCD, izmantojot glābšanas režīmu
Ja dators nevar atrast pareizi konfigurētu sāknēšanas pārvaldnieku, diezgan bieži var redzēt šādu ziņojumu: “Kļūda: šāda ierīce nav pieejama”, kam seko “grub rescue>”Tas nozīmē, ka GRUB ir izdevies palaisties, taču tas nezina, kur atrodas tā konfigurācijas faili vai nepieciešamie moduļi.
Šajā scenārijā jums ir mini komandu tulks, no kura varat atrodiet nodalījumus, atrodiet /boot/grub un manuāli ielādējiet kodoluProcess var šķist ilgs, taču tas ir diezgan sistemātisks.
Uzskaitiet pieejamos diskus un nodalījumus
Pirmais solis ir noskaidrot, kurus diskus un nodalījumus GRUB redz jūsu datorā. Lai to izdarītu, uzvednē grub glābšana> raksta:
ls
Komanda parādīs kaut ko līdzīgu (hd0) (hd0,1) (hd0,2) (hd0,3) (hd1) (hd1,1) (hd1,2). Katrs hdX apzīmē citu cieto disku: hd0 būtu pirmais fiziskais disks, hd1 — otrais.un tā tālāk. Varianti ar komatu, piemēram, (hd0,1), norāda diska numurētās nodalījumus.
Atkarībā no datora, jūs varat redzēt vienu disku, piemēram, (hd0) ar divām vai trim nodalījumiem vai vairākus diskus: (hd0,1) (hd1,1) (hd1,5) (hd2,1) (hd3,1)Jebkurā gadījumā mērķis tagad ir vienkāršs: atvērt katru nodalījumu pa vienam, līdz atrodat to, kurā atrodas direktorijs. / boot / grub.
Atrodiet nodalījumu, izmantojot /boot/grub
Lai pārbaudītu nodalījuma saturu, mēs atkal izmantojam ls bet pievienojot nodalījuma nosaukumu un pēdējo slīpsvītru. Piemēram: pārbaudīt saturu Tas palīdzēs jums noteikt, vai tas ir pareizais.
ls (hd0,1)/
Ja šim nodalījumam ir failu sistēma, ko GRUB atpazīst, tas parādīs direktoriju sarakstu: jūs redzēsiet tādus nosaukumus kā atkritumu tvertne utt., sākumlapa, sāknēšana, sakneutt. Šādā gadījumā šis nodalījums varētu būt jūsu saknes nodalījums (/) vai atsevišķs nodalījums no /boot atkarībā no struktūras, kas jums bija sistēmas instalēšanas laikā. Ja sarakstā ir norādīts failu sistēma, ko GRUB atpazīst, tu esi uz pareizā ceļa.
Ja, izpildot iepriekšējo komandu, redzat vienu no direktorijiem ar nosaukumu bootVarat turpināt rakšanu dziļāk un pārbaudīt, vai tajā ir grub mape:
ls (hd0,1)/boot/grub
Kad atrodat failu sarakstu, kurā ir iekļauti tādi moduļi kā linux.mod vai citus tipiskus GRUB failus, jūs jau būsiet atradis nodalījums, kas mūs interesēJa nekas neparādās vai rodas kļūda, turpiniet mēģināt ar pārējām sadaļām: ls (hd0,2) /, ls (hd1,1) /utt., līdz atrodat īsto.
Norādiet GRUB, kur atrodas jūsu faili.
Kad ir identificēta pareizā sadaļa, jums ir jā norādīt GRUB, kur atrodas tā moduļi un konfigurācijaPieņemsim, ka esam atklājuši, ka /boot atrodas (hd0,1). Nākamais solis būs prefiksa iestatīšana:
set prefix=(hd0,1)/boot/grub
Ar šo instrukciju sistēmas pārvaldnieks zinās, ka tā atbalsta faili atrodas šajā ceļā. Mums arī jānorāda, kuru saknes nodalījumu izmantot, lai atrastu kodolu un pārējos sistēmas datus:
set root=(hd0,1)
Ir svarīgi pareizi uzrakstīt pāri. (disks, nodalījums) un vienmēr izmantojiet slīpsvītru / kad mēs publicējam saturu ar lsTāpat paturiet prātā, ka GRUB konsoles tastatūras izkārtojums parasti ir amerikāņu, tāpēc iekavas un slīpsvītras var neatbilst tam, ko redzat uz tām. Ieteicams pārliecināties, ka iestatīt prefiksu pareizi, pirms mēģināt ielādēt moduļus.
Ielādējiet GRUB moduļus un Linux kodolu
Kad prefikss ir konfigurēts, nākamais solis būs šāds: piespiedu kārtā ielādēt Linux moduli no GRUB. Daudzās rokasgrāmatās jūs redzēsiet kaut ko līdzīgu:
insmod (hd0,1)/boot/grub/linux.mod
Daudzās mūsdienu sistēmās atbilstošais modulis var būt normāls.mod vai citiem, bet ideja ir tāda pati: ja neesat pārliecināts par precīziem nosaukumiem, izmantojiet komandu ls (hd0,1)/boot/grub Lai uzskaitītu failus, izvēlieties atbilstošo moduli, pamatojoties uz jūsu GRUB versiju. Funkcija insmod Tas ietver nepieciešamā moduļa ielādi, lai turpinātu sāknēšanas procesu. Lūdzu, ņemiet vērā, ka nenormāls Tā ir instrukcija, kas faktiski iekļauj moduli ielādētājā.
Nākamais jums būs ielādēt Linux kodola attēlu norādot tā ceļu failu sistēmā. Startēšanas piemērs: linux /boot/vmlinuz-4.13.3-generic root=/dev/sda1
Precīzs kodola nosaukums jūsu datorā atšķirsies (tas var būt vmlinuz-2.6.32-23-generic, vmlinuz-6.1.0-10-amd64 vai jebkuru citu versiju). Varat izmantot arī ls /boot Lai redzētu, kādi attēli jums ir pieejami, un izvēlētos jaunāko. Svarīgi ir neaizmirst parametru. root=/dev/sdXn ar pareizo saknes nodalījumu.
Lai izvairītos no neskaidrībām attiecībā uz GRUB un Linux nosaukumu piešķiršanas konvenciju līdzvērtību, paturiet prātā, ka hd0 atbilst /dev/sda, hd1 atbilst /dev/sdb, hd2 atbilst /dev/sdcun tā tālāk. Arī nodalījuma numura formāts mainās: (hd0,1) kļūst par /dev/sda1, (hd1,2) kļūst par /dev/sdb2 utt.
Dažos gadījumos pēc kodola attēla ielādes ieteicams Ielādēt initrd attēlu (sākotnējais RAM disks), ja jūsu izplatīšanas pakotne to pieprasa. tipiska komanda būtu:
initrd /initrd.img
Tāpat kā ar kodolu, jūs varat pārbaudīt, kuri initrd faili ir pieejami, izmantojot ls / o ls /boot un izmantojiet cilnes taustiņu lai automātiski pabeigtu vārdus un izvairītos no pareizrakstības kļūdām.
Palaidiet sistēmu un pārinstalējiet GRUB no Linux
Kad kodols un iespējamais initrd ir ielādēts, atliek vien pateikt GRUB, ka turpiniet, lai sāktu startēšanuLai to izdarītu, vienkārši ierakstiet:
Sākšana: boot
Ja viss noritēs labi, kodols pārņems vadību, operētājsistēma tiks ielādēta kā parasti, un jūs varēsiet pieteikties savā Linux sistēmā. Šajā brīdī jums būs izdevies atrisināt problēmu bez LiveCD, taču joprojām ir viens svarīgs solis: Pārinstalējiet GRUB, lai tas nākamajā reizē nesabojātos..
Kad esat sistēmā, atveriet termināli ar superlietotāja privilēģijām (root vai izmantojot sudo) un palaist: grub-install /dev/sdX
kur / dev / sdX Tas ir disks (nevis nodalījums), kurā vēlaties ievietot pārvaldnieku, piemēram. / Dev / SDA o / dev / sdb Ja atrodaties citā diskā. Atcerieties, ka šeit nevajadzētu norādīt nodalījuma numuru: komanda ieraksta pārvaldnieku MBR vai visa diska sāknēšanas apgabalā.
Daudzās Debian vai Ubuntu balstītās distribūcijās tas ir arī ļoti ieteicams, ģenerēt GRUB konfigurācijas failu Lai nodrošinātu, ka visas instalētās sistēmas tiek pareizi noteiktas, varat izmantot:
Palaist: update-grub o update-grub2
Un, ja vēlaties atjaunināt arī sākotnējo startēšanas attēlu, atjaunināt initramfs ar:
Komanda: update-initramfs -u
Citos gadījumos problēma ar GRUB nav tik radikāla un Jā, jūs redzat sāknēšanas izvēlniBet kāda sistēma neizdodas startēt, atlasot konkrētu ierakstu, parādās kļūda vai arī jums vienkārši ir aizdomas, ka izvēlne ir nepareizi konfigurēta.
Šādos gadījumos, kad pēc datora ieslēgšanas redzat GRUB izvēlni, varat nospiediet virziena bultiņas (uz augšu vai uz leju), lai apturētu automātisko atpakaļskaitīšanu, pēc tam nospiediet taustiņu c lai piekļūtu pilnai komandrindai.
No šīs uzlabotās konsoles Komandas būtībā ir vienādas nekā glābšanas režīmā, taču jums būs vairāk rīku sistēmas pārbaudei. Piemēram, varat izmantot ls lai uzskaitītu diskus un nodalījumus, set lai skatītu un modificētu GRUB vides mainīgos, insmod lai ielādētu papildu moduļus vai pat komandas, piemēram, cat lai lasītu teksta failu saturu.
Pēc tās pašas shēmas vispirms noteiksiet, kuri diski un nodalījumi jums ir:
ls
un jūs redzēsiet šādu izvadi (hd0) (hd0,msdos1) (hd0,msdos5) o (hd0,1) (hd1,1) (hd1,5) (hd2,1)atkarībā no tā, vai jūsu nodalījumu tabula ir MBR (msdos) vai GPT, un no datorā esošo disku skaita.
Pēc tam jūs pārbaudīsiet katru nodalījumu ar tādām komandām kā:
ls (hd0,msdos1)/
līdz atrodat direktoriju boot un tajā mape izlauztKad tas ir identificēts, jūs atkārtosiet kustību labot prefiksu un sakni ar:
set prefix=(hd0,msdos1)/boot/grub
set root=(hd0,msdos1)
Turpmāk pieejamos kodolus varēsiet meklēt, uzskaitot /boot saturu:
/boot saraksts: ls /boot
un jūs izvēlēsieties vienu no tiem, ko ielādēt:
linux /boot/vmlinuz-6.1.0-10-amd64 root=/dev/sda1
pielāgojot kodola versiju un saknes nodalījumu jūsu gadījumam. Atcerieties vēlreiz diska kartēšanu: hd0 → /dev/sda, hd1 → /dev/sdb, hd2 → /dev/sdcutt. Varat izmantot taustiņu TAB, lai automātiski pabeigtu ceļus un failu nosaukumus.
Visbeidzot, ja nepieciešams, jūs ielādēsiet initrd un izpildīsiet komandu boot Lai startētu sistēmu. Pēc pieteikšanās veicamās darbības ir tādas pašas kā iepriekšējā scenārijā: Pārinstalējiet GRUB diskā un atjauniniet tā konfigurāciju izmantojot grub-install /dev/sda y update-grub.
GRUB labošana sistēmās ar GRUB Legacy
Lai gan mūsdienās lielākā daļa izplatījumu ir ieviesuši GRUB 2, joprojām var atrast vecākus datorus vai specifiskas sistēmas, kas to izmanto. GRUB mantojumsŠajos gadījumos saskarne ir nedaudz atšķirīga, taču pamatkoncepcija nemainās: sistēmas pārstartēšanai var izmantot interaktīvu ielādes čaulu.
Pēc palaišanas šis klasiskais GRUB parasti atļauj piekļūt savai komandrindai nospiežot noteiktu taustiņu (bieži vien taustiņu c vai atslēga e (lai rediģētu ierakstus). Kad esat nokļuvis uzvednē, jums ir tādas komandas kā find kas ir īpaši noderīgi.
Piemēram, ja vēlaties atrast direktoriju, / boot kurā ir kodola attēli un initrd faili, varat izmantot:
atrast komandu: find /boot/grub/stage1 vai līdzīgu maršrutu
Atkarībā no tā, vai /boot ir atsevišķa nodalījuma daļa vai arī tas atrodas saknē, ceļš būs /boot o simplemente / ar citām apakšmapēm. Kad atrodat pareizo nodalījumu, GRUB Legacy parasti parāda kaut ko līdzīgu (hd0,0) vai citu disku/nodalījumu pāri, ko varat izmantot atkārtoti.
Nākamais jums būs definējiet GRUB sakni ar šādu instrukciju:
Saknes piemērs: root (hd0,0)
un norādiet, kur atrodas kodols un initrd. Atkal parasti nav nepieciešams rakstīt pilnus failu nosaukumus, jo TAB taustiņš darbojas kā automātiskās pabeigšanas taustiņš un tas palīdz izvairīties no drukas kļūdām garos maršrutos.
Lai vēl precīzāk noregulētu, varat izmantot komandu cat lai nolasītu GRUB konfigurācijas failu (piemēram, /boot/grub/menu.lstun pārbaudīt, kura ierīce ir pievienota saknes direktorijam, kādi kodola parametri tiek nodoti utt. Tas ir ļoti praktisks veids, kā Kopējiet to pašu konfigurāciju, ko sistēma izmantoja, kad tā darbojās pareizi..
Visbeidzot, kad jums ir līnijas sakne, kodols e initrd Sarakstu gadījumā vienkārši palaidiet komandu boot lai palaistu sistēmu. Kad esat iekļuvis iekšā, pēdējais solis būs GRUB atkārtota instalēšana no pašas Linux sistēmas, izmantojot grub-install atbilstošajā diskā, nodrošinot, ka manuālā procedūra nav jāatkārto nākamajās restartēšanas reizēs.
Citas izplatītas metodes (izmantojot LiveCD, chroot un Boot-Repair)
Līdz šim esam redzējuši, kā glābiet situāciju, izmantojot tikai GRUB konsolineizmantojot nekādus ārējus līdzekļus. Tomēr ieteicams arī iepazīties ar klasiskajām metodēm, izmantojot LiveCD/LiveUSB un grafiskos rīkus, jo dažos gadījumos bojājumi ir tik lieli, ka nav citas iespējas kā startēt no dublējuma sistēmas.
Debian un Ubuntu balstītos distribūcijās plaši izmantota metode ir startēšana no LiveCD vai LiveUSB (piemēram, Ubuntu, Linux Mint, Debian Live u. c. attēlu), pievienojiet bojātās sistēmas saknes nodalījumu, pievienojiet arī /boot, ja tas ir atsevišķs nodalījums, un pēc tam veiciet chroot šajā failu sistēmā lai pārinstalētu GRUB tā, it kā mēs darbotos no pašas instalācijas.
Process, vispārīgi runājot, sastāv no starpsienu identificēšanas ar fdisk -l, nosakiet, kas ir sakne (piemēram, / Dev / sda2) un kura ir sāknēšanas nodalījuma daļa, ja tāda pastāv (piemēram, / Dev / sda7Tad tie tiek salikti kopā ar:
Starpsienu montāža (piemēram,):sudo mount /dev/sda2 /mntsudo mount /dev/sda7 /mnt/boot (ja jums ir atsevišķs /boot fails)
un tas ir izdarīts saistīt /dev, /dev/pts, /proc un /sys pieslēgumu ietvaros /mnt:
Saistītie stiprinājumi:sudo mount --bind /dev /mnt/dev
sudo mount --bind /dev/pts /mnt/dev/pts
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
No šejienes varat piekļūt instalētajai sistēmai, izmantojot:
Pieteikties ar: sudo chroot /mnt
un to var izpildīt no iekšpuses grub-instalēt norādot uz disku:
Instalēšana no chroot: grub-install --boot-directory=/boot/ --recheck /dev/sda
lai atkārtoti ielādētu sāknēšanas pārvaldnieku MBR vai līdzvērtīgā apgabalā, kam seko:
Ģenerējiet konfigurāciju: grub-mkconfig -o /boot/grub/grub.cfg
lai atjaunotu konfigurācijas failu. Pēc izejas no chroot ar exit un restartējiet datoru (sudo reboot), parasti GRUB izvēlne atkal parādās normāli..
Vēl viena ļoti ērta iespēja lietotājiem, kuri vēlas izvairīties no termināļa, ir rīks Zābaku remontsko var instalēt Live Ubuntu vidē un kas piedāvā grafisko saskarni, kas spēj noteikt operētājsistēmas instalācijas un gandrīz automātiski labot GRUBVienkārši palaidiet rīku, atlasiet "ieteicamo remontu" un ļaujiet tam analizēt un pārrakstīt ielādētāju.
Lai gan šie risinājumi, kuru pamatā ir LiveCD vai ārējie utilītprogrammas, ir ļoti praktiski, sākumā redzēto metožu apgūšanas priekšrocība ir tāda, ka Jums nav nepieciešams USB disks vai disks.Ar pašu GRUB konsoli var iztikt daudzās situācijās, it īpaši, ja problēma ir "tikai" tā, ka pārvaldnieks ir pazaudējis pareizo atsauci uz nodalījumu, kurā atrodas /boot.
Ņemot vērā visu teikto, ir skaidrs, ka Bojāts GRUB ne vienmēr nozīmē pazaudētu sistēmu.Jums ir rīki pašā sāknēšanas ielādētājā, komandrindā un Live vidē, lai atrastu pareizo nodalījumu, manuāli ielādētu kodolu, palaistu GNU/Linux un atkārtoti instalētu sāknēšanas pārvaldnieku, lai tas atkal darbotos kā jauns.