Dirbame su GRUB

20 vasario, 2007 – 11:51

GRUB logotipas GNU GRUB – GRand Unified Bootloader, bootloader’is (programa, kuri leidžia vartotojams užkrauti operacinę sistemą ir jų turėti daugiau negu vieną; ji yra būtina kompiuterio krovimuisi). Pasistengsiu aprašyti trumpą jo konfigūravimą daugeliui OS.

Truputis istorijos
GRUB „gimė“ 1995 m. Jo kūrėjas – Erich Stefan Boleyn. Erich’as bandė paleisti GNU Hurd (kernelio analogas Unix sistemų kernel’iams). Kartu su Brian Ford jie suformavo multikrovimosi (iš angl. k. multiboot; nesupraskite tiesiogine prasme, nes aš turiu omenyje tai, kad multiboot yra funkcija, kuri leidžia prieš kraunant OS pasirinkti kurią OS užkrauti) specifikacijas. Šios specifikacijos nurodė kaip turėtų veikti multikrovimasis. Vėliau Erich’as bandė modifikuoti FreeBSD bootloader’į taip, kad jis galėtų krauti daugiau negu vieną OS. Visgi jis suprato, kad modifikuoti bus sunkiau ir rezultatas gausis blogesnis negu rašant savo bootloader’į. Taip jis ir padarė t. y. sukūrė savo bootloader’į. Rezultate turime labai galingą ir vieną populiariausių bootloader’ių.

GRUB instaliavimas
Iš pradžių aptarsiu GRUB instaliavimą. Pirmiausiai turime gauti kokį nors Linux LiveCD (rekomenduoju su fdisk ir būtinai su GRUB‘o paketais) ir jį užsikrauti. Pavyzdžiuose mes naudosimės Ubuntu 6.10 Edgy Eft LiveCD. Kai jau gavote LiveCD tai sukurkite bet kokios failų sistemos particiją (būtinai nurodykite tipą kaip primary), kurios dydis būtų apytiksliai 30 MB, pagal mano parašytą straipsnį apie fdisk. Žinoma galite naudotis taip pat Ubuntu 6.10 LiveCD esančiu GParted. Tai grafinis particijų valdiklis, bet nemanau, kad mums jis reikalingas, nes viską galime padaryti su fdisk (nebent reikia „apkarpyti“ particiją, bet tada galime pasinaudoti Partition Magic, kurį nemokamai galime rasti Hiren’s BootCD kompakte). Nepamirškime uždėti boot žymę šiai particijai, o kitoms nuimti (kai kur tai traktuojama kaip Active režimas). Kompiuteris pirmiausiai naudos šią particiją.
Dabar pasirinkime failų sistemą. Aš rekomenduoju naudoti ext2, nes jos parametrai labiau tinkami negu ext3 ar kitų failų sistemų. Jeigu norime naudoti ext2 įvykdykime:

# mke2fs /dev/xdyi

Vietoje x rašykite h (IDE naudojantis įrenginys) arba s (SCSI įrenginys). Vietoje y rašykite:
a arba b – Master ir Slave diskai prijungti prie pirminio prievado, 1 IDE kontroleriaus;
c arba d – Master ir Slave diskai prijungti prie antrinio prievado, 1 IDE kontroleriaus;
e arba f – Master ir Slave diskai prijungti prie pirminio prievado, 2 IDE kontroleriaus;
g arba h – Master ir Slave diskai prijungti prie antrinio prievado, 2 IDE kontroleriaus.
O vietoje i rašykite particijos numerį, į kurią sukurėte GRUB‘ui.
Pavyzdžiui:

# mke2fs /dev/hda1

Štai komandų sąrašas failų sistemoms:
ext2 – mke2fs
ext3 – mke2fs -j
reiserfs – mkreiserfs
xfs – mkfs.xfs
jfs – mkfs.jfs
Pasileiskite terminalą ir iš LiveCD vykdykite šią komandą:

# grub-install /dev/xdy

Pavyzdžiui:

# grub-install /dev/hda

Atminkite, kad Linux sistemose skaičiai šalia įrenginio reiškia jo padalinį, todėl šiuo atveju skaičiaus nereikia nurodyti, nes taip instaliuotume GRUB’ą į particiją, o ne kietąjį diską. Jeigu instaliuotume į particiją tai norint užkrauti tą GRUB’ą mums reikėtų dar vieno bootloader’io, kuris būtų įdiegtas tame kietąjame diske iš kurio pasieksime tą GRUB’ą. Bet mes šiame straipsnyje aptariame GRUB’ą pagrindiniame kietąjame diske t. y. įrašytą į MBR (Master Boot Record – HDD takelis, kurį nuskaito ir įvykdo BIOS’ai, taip jie pratęsia kompiuterio krovimąsi ir darbą perduoda bootloader’iui).
Suinstaliavę GRUB’ą galime pradėti jo konfigūravimą. Tik prieš tai nustatykime default ir timeout reikšmes: default rekomenduoju nurodyti 0 (bus kraunamas pats pirmasis meniu punktas, jeigu jūs per nurodytą laiką nepasirinksite ką krauti), o timeout rekomenduoju nurodyti 10, jeigu nurodysite daugiau negu vieną meniu punktą (bus laukiama 10 sekundžių iki numatytosios OS krovimo), arba 0, jeigu nurodysite tik vieną meniu punktą (OS bus kraunama iš karto t. y. nematysite pasirinkimo meniu).

GRUB‘o konfigūravimas Linux‘ui
Primontuokime prie /boot GRUB‘o particiją:

# mkdir /mnt/boot
# mount /dev/xdyi /mnt/boot

Atsidarykime GRUB konfigūracinį failą:

# nano -w /mnt/boot/grub/menu.lst

Pridėkime šias eilutes:

# Meniu punkto pavadinimas, kurį matysime meniu
title Linux# Nurodome kernel'io particiją su HDD
# root ([hd – IDE vartotojams; sd – SCSI įrenginių vartotojams][kietojo disko numeris(pirmasis diskas ne 1, o 0!)],[particijos numeris(pirmoji particija ne 1, o 0!), kurioje yra kernel'is])
# Pavyzdžiui:
root (hd0,0)
# Tai atitiktų /dev/hda1 particiją

# kernel [nurodykite kernelį] root=[nurodykite šakninę (/) particiją]
# Pavyzdžiui:
kernel /boot/kernel root=/dev/hda2

Galutinį variantą šio meniu punkto be komentarų galite gauti http://pastebin.com/f454f294d adresu.
Išsaugoję konfigūracinį failą perkraukite kompiuterį ir jau galite užkrauti savo Linux distribuciją.

Per GRUB’ą užkrauname kitą bootloader’į
Dažnai pasitaiko, kad reikia užkrauti kokią nors Windows OS/Solaris/*BSD ar kitą operacinę sistemą. Bet Windows reikalauja savo bootloader’io. Yra OS, kurios nereikalauja savo bootloader’io ir jas galima sukonfigūruoti pagal Linux konfigūravimą, bet jeigu mes neturime laiko tai sekime straipsnį toliau, o ne grįžkime prie GRUB‘o konfigūravimo Linux‘e. Šioje straipsnio dalyje aptarsime kitų OS užkrovimą.
Mes pasirinksime paprastesnį būdą (jis yra universalesnis negu priversti kokią nors Microsoft Windows nuskaitinėti ir įrašinėti GRUB‘o particiją ir per Windows ar tą kitą OS konfigūruoti GRUB’ą) – užsikrausime mūsų pasirinktą Linux LiveCD ir redaguosime GRUB’o konfigūracinį failą. Bet prieš redaguodami nepamirškime prisimontuoti savo GRUB‘o particiją:

# mkdir /mnt/boot
# mount /dev/xdyi /mnt/boot

Redaguokime GRUB‘o konfigūraciją:

# nano -w /mnt/boot/grub/menu.lst

Pridėkime šias eilutes:

# Meniu punkto pavadinimas, kurį matysime GRUB meniu
# Pavyzdžiui:
title=Windows XP Professional
# Nurodome kurią particiją naudoti
# rootnoverify ([hd – IDE vartotojams; sd – SCSI įrenginių vartotojams][kietojo disko numeris(pirmasis diskas ne 1, o 0!)],[particijos numeris(pirmoji particija ne 1, o 0!), kurioje yra sekantis bootloader'is/operacinė sistema])
# Pavyzdžiui:
rootnoverify (hd0,0)
# Kai kurios OS (Windows OS toji eilutė nėra būtina) reikalauja, kad jų particijos būtų aktyvios, bet jeigu naudojame GRUB atskiroje particijoje tai aktyvi yra ne tos OS, o GRUB‘o particija. Todėl rekomenduoju konfigūraciniame faile nurodyti tolimesnę eilutę.
maceactive
# Tolimesnė eilutė nurodo GRUB‘ui perleisti bootloader'io darbą kitam bootloader'iui, kuris yra rootnoverify eilutėje nurodytoje particijoje. Priešingai negu buvusi eilutė, ši eilutė yra būtina
chainloader +1

Išsaugoję konfigūracinį failą ir perkrovę kompiuterį mes jau galime naudotis norimu bootloader’iu.

Galutinį variantą be komentarų galite gauti adresu http://pastebin.com/f63f4f04d.

GRUB meniu fonas
GRUB’as turi įdomią funkciją (numatyta, kad ji susikompiliuoja jeigu jūs neliepiate kompiliatoriui jos nekompiliuoti, todėl neaprašysiu ką daryti jeigu mūsų GRUB’as neturi tokios funkcijos, apie tai galite pasiskaityti pabaigoje pateiktoje nuorodoje), kuri leidžia mums nustatyti kokio nors paveikslėlio rodymą meniu fone. Iš tikrųjų tai gana daug pagražina mūsųs sistemos krovimąsi. Deja, reikia atminti, kad dydis ribojamas iki 640×480, o spalvų kiekis iki 14, bet ir tai galima puikiai išnaudoti.

Pirmiausiai nusipieškime paveikslėlį, kurio dydis maždaug atitiktų 5:4 santykį (jeigu galima tai pieškite 640×480 iš karto, nes taip išvengsite iškraipymų keičiant dydį). Dabar atidarykime jį su „The Gimp“ ir pakeiskime jo dydį:

Paveikslėlis–>Keisti paveikslėlio dydį

Nuimkime grandinę () ir „Plotis“ laukelyje įrašykime 640, o laukelyje „Ilgis“ – 480. Spustelėkime mygtuką „Ištempti“.

Dabar sumažinkime spalvų kiekį.

Sluoksniai–>Spalvos–>Spalvų sumažinimas…

Sumažinkime spalvų iki 14 ir paspauskime „Gerai“.
Dabar išsaugokime paveikslėlį (Byla–>Išsaugoti kaip…) XPM (X PixMap) formatu ir šia komanda jį suspauskime:

$ tar -cf [paveikslėlis].tar [paveikslėlis]

Paveikslėlį nukopijuokime į /boot katalogą (nepamirškime jo prisimontuoti kaip tai darėme kiekvieno konfigūravimo pradžioje):

# cp [paveikslėlis].tar /boot/[paveikslėlis].tar

Atsidarykime GRUB‘o konfigūraciją:

# nano -w /boot/grub/menu.lst

Ir prirašykime po eilute „timeout“ šias eilutes:

root ([hd – IDE vartotojams; sd – SCSI įrenginių vartotojams][kietojo disko numeris(pirmasis diskas ne 1, o 0!)],[particijos numeris(pirmoji particija ne 1, o 0!), kurioje yra sekantis bootloader'is/operacinė sistema])
splashimage /boot/[paveikslėlis].tar

Pavyzdžiui:

root (hd0,0)
splashimage /boot/vista.xpm.tar

Pastaba. Vietoje „[paveikslėlis]“ parašykite paveikslėlio failo pavadinimą.

Slaptažodžiai
Norėdami apsaugoti GRUB’ą jūs galite pasinaudoti „GRUB apsaugojimas“ straipsniu. Jame puikiai išdėstyta kaip uždėti slaptažodį ant GRUB’o ir apsaugoti jį.

Pabaiga
Apibendrinant, GRUB’as yra pakankamai galingas bootloader’is, kuris ateityje manau išpopuliarės dar labiau. GRUB’as įdedamas beveik į visas Linux OS, o ir būti pasiruošusiam Linux diegimui visada būna pravartu. Tikiuosi, kad jums pavyko puikiai sukonfigūruoti GRUB’ą ir šis straipsnis dar labiau padidins GRUB’o vartotojų skaičių.

Plačiau apie paveikslėlius GRUB meniu fone galite pasiskaityti adresu http://ruslug.rutgers.edu/%7Emcgrof/grub-images/.

2007 m. vasario 20 d., Pixel

Sorry, comments for this entry are closed at this time.