Thursday, February 21, 2008

Fancy GRUB

GRUB (GRand Unified Boot Loader), koji se kulturno instalirao u MBR mog hard diska, u toku instalacije Debian-a, i nije naročito dopadljiv (plava boja na crnoj pozadini, a devojka mi stalno govori da crna i plava ne idu zajedno:)). Manjak lepote ne treba da čudi, jer je primarna funkcija GRUB-a izlistavanje jednog ili više instaliranih sistema i omogućavanje njihovog startovanja (da ne kažem "podizanja").
Pošto "ulepšavanje" GRUB-a nije naročito opasno po zdravlje sistema (a i po živce), rešio sam i to da probam, ali na virtuelnoj mašini (zbog potreba foto session-a :)). Dakle, za "šminkanje" ovog korisnog programčića treba dobaviti pogodne fotkice koje treba da budu:
  1. .xpm formata (ili .xpm.gz)
  2. veličine 640x480 pixela
  3. sa 16 boja (od toga 14 za sliku, a 15 ako je cela pozadina crna)
Postoji više načina da se dođe do odgovarajućih fotkica. Jedan je da se neka fotka formata 640x480 (i 14 boja!) konvertuje u .xpm, a drugi, jednostavniji, podrazumeva da se iz Synaptic-a instalira paket grub-splashimages koji već ima nekoliko simpatičnih fotkica. Kako je nedostatak veština rukovanja GIMP-om jedna od mojih prepoznatljivih odlika, odustajem od pravljenja umetničkih fotkica i preuzimam sa repo-a već napravljene slike.
U Kate tekst editoru (Alt+F2>kdesu kate) otvaram fajl menu.lst (putanja /boot/grub/menu.lst) i u delu Pretty colours, upisivanjem znaka # isključujem opciju color cyan/blue white/blue, a zatim dodajem putanju do željene slike:

#Pretty colours

#color cyan/blue white/blue
splashimage=(hd0,0)/boot/grub/splashimages/
debsplash.xpm.gz
Napomena: Sve treba da bude u jednom redu!!

Kod mene se slike nalaze u /boot/grub/splashimages jer ih je Synaptic tamo kopirao. Inače, slike mogu biti bilo gde na disku. Takođe, na primeru se vidi da su slike kompresovane, ali to ne smeta njihovoj funkcionalnosti.
Treba obratiti pažnju gde se slike nalaze na hard disku, da bi se unele tačne vrednosti u menu.lst. Na mom računaru se slike nalaze na prvoj particiji (0) prvog diska (hd0). Dakle, GRUB označava particije i diskove brojevima 0-n, gde je n ne tako veliki (n<16) ceo broj :). Tako je prvi disk označen sa hd0, a prva particija na prvom disku brojem 0. Logično je da bi drugi disk imao oznaku hd1, a druga particija (bez obzira na disk) bi bila označena brojem 1. Zavisno od toga na kojoj particiji se nalazi fajl sa slikama (/home/user/grub_slike napr.) unos može biti drugačiji.
Da bi bilo jednostavnije, daću primer najverovatnije situacije, kada je na disku samo Linux sa /, /home i swap particijama, a slike se nalaze u /home/user/grub_slike. Tada bi unos u fajl menu.lst imao oblik:

#Pretty colours
#color cyan/blue white/blue
splashimage=(hd0,1)/home/user/grub_slike/slika.xpm
, jer se slike nalaze na /home particiji koja je u grubu predstavljena sa (hd0,1)


Da se kojim slučajem slike nalaze na trećoj particiji nekog drugog diska unos bi bio izmenjen za (hd1,2)/putanja/do/slika. Nadam se da sam bio jasan :)...
Sledi snimanje fajla i reboot, a proizvod manjih korekcija menu.lst fajla, u mom slučaju, izgleda skoro savršeno, jer su upotrebljene ne-Vista-Leopard boje. Jedna stvar koja me mnogo živcira kod Linux dizajnera je uporno kopiranje vizuelnog doživljaja iz Win OS-ova, a bez ikakve potrebe, jer ne mora svaki Welcome screen da bude plav, modrozelen, sa primesama crne i plave i zelene i plave i crne... Meni se crvena, ipak, najviše dopada, a ovaj grub-splash je blizu idealnog (ja bih, recimo, dodao još bele):




Za dopunu znanja preporučujem Debian Wiki sajt koji sadrži dosta korisnih informacija u vezi sa ovom temom...
...ili ovaj sajt, sveobuhvatan i jednostavan...
... a za gotove splash fotkice preporučujem shultz-net i Mcgrof's collection of splashimages...


Problemi

Ponekad i pored najboljih namera stvari krenu nekako "nakrivo" i završe naopačke. Posledica je nemogućnost podizanja sistema, što je zastrašujuće ako je jedino rešenje još izgubljenih sati u reinstalaciji i podešavanju sistema. Kako ne postoji situacija za koju se vezuje samo jedno rešenje, ni u slučaju da GRUB "zariba" ne treba gubiti nadu.
Za oporavak GRUB-a je potrebna neka Live Linux distribucija, malo rada u shell-u i minimum živaca. Prilikom pokretanja Live distro-a odabrati shell login (ili nesto sl.) i pozvati GRUB prostom komandom grub, radi ulaska u grub prompt.

Prvo se komandom find listaju particije na kojima se GRUB može nalaziti i sa kojih se može instalirati. Kod mene to nije slučaj, ali komanda find može izlistati više particija sa GRUB-om, ukoliko postoji više Linux-a instaliranih na konkretan računar:




Zatim se komandom root naznači sa koje particije da se instalira GRUB. U mom slučaju u pitanju je prva particija prvog diska (hd0,0):



Na kraju se napušta grub prompt komandom quit:

grub>quit

I to je kraj mukama i znojenju :)...

Ovaj postupak se može raditi i posle instalacije Windows-a na hardu sa Linux-om, jer Win u svom boot loader-u neće izlistati Linux (niti bilo koji drugi OS). Takođe, postoje i neki Linux-i čiji GRUB ne izlistava "komšijske OS-ove". Tada ovaj metod reinstalacije GRUB-a takođe ima smisla, U tom slučaju treba odabrati čiji će GRUB biti reinstaliran, jer će komanda find naći više particija sa GRUB-om...

Ko ne voli da "prlja ruke" ima na raspolaganju programčić simpatičnog imena Super Grub.

No comments: