GRUB Onyukleyici Yoneticisi (GRand Unified Bootloader)
From Lapis Wiki
Bu makale NASIL bölümü serisinin bir parçasıdır
|
| MasaÜstü • Donanım • Ağ • Dağıtımlar |
| Tarayıcılar• Programlama • Linux ve Oyunlar |
Giriş
Belgede yazılanların uygulanıp uygulanmaması tamamen uygulayan kişinin sorumluluğundadır. Belgede bahsedilenlerin uygulanması sonucu ortaya çıkabilecek hertürlü zarardan yazar sorumlu tutulamaz. Belge GNU Özgür Belgeleme Lisansının http://www.gnu.org/copyleft/fdl.html adresinde yer alan lisans içeriğine bağlı kalmak koşulu ile aynen yada kısmen dağıtılabilir, yayınlanabilir. Bu belgenin son sürümüne http://www.serdaraytekin.com/docs/os/grub/ adresinden ulaşabilirsiniz.
Grub Resmi Sitesi : http://www.gnu.org/software/grub/
FTP Adresi : ftp://alpha.gnu.org/pub/gnu/grub/
GRUB (GRand Unified Bootloader) çok güçlü bir önyükleyici yöneticisidir. Sistemin yüklenmesinden ve kontrolun kernel'a devredilmesinden sorumludur.
En önemli özelliği esnek bir yapıya sahip olması ve her türlü işletim sistemini (Windows, Dos, Linux, Gnu Hurd, *BSD , BeOs vb.) desteklemesidir.
Diğer önemli özelliklerinden bazıları :
- Veriye direk erişim imkanı : Bios tarafından tanınan tüm sürücüleri mount edip (disk, disket) direk olarak ulaşabilir.
- Birçok dosya sistemini destekler : BSD FFS, DOS FAT16 ve FAT32, Minix fs, Linux ext2fs, ReiserFS, JFS, XFS vb.
- Her türlü işletim sistemini boot edebilme özelliği.
- LBA (Logical Block Address) desteği : LBA desteği olan makinelerde bu desteği kullarak yüksek kapasiteli disk alanlarınada erişim sağlar.
- Ağ üzerinden boot edebilme : Ağ üzerinde boot edebilme özelliğine sahip. TFTP protokolunu kullanarak ağ üzerindeki bir işletim sistemi image'ini yüklemesi mümkün.
- Menu ve komut satırı desteği sunar : İlk boot esnasında karşımıza gelen boot menüsünde istersek "c" tuşuna basarak grub komut satırına düşebilir, işlemlerimizi burdanda yapabiliriz.
- Konfigürasyon dosyasında (grub.conf) değişiklik yaptıktan sonra değişikliklerin aktif edilmesi için herhangi bir komut çalıştırmaya gerek yok. (Mesela lilo.conf'da yapılan değişikliklerin aktif edilmesi için "lilo" komutunun çalıştırılması zorunluluğu gibi)
Grub Önyükleyici Yöneticisinin Sisteme Yüklenmesi
Kaynak koddan kurulum yapmak için ftp://alpha.gnu.org/pub/gnu/grub/ adresinde yer alan en son grub sürümü indirilir.
(Örn : ftp://alpha.gnu.org/pub/gnu/grub/grub-0.93.tar.gz ).
Daha sonra sırası ile aşağıdaki işlemler uygulanır.
# tar -zxvf dosya-ismi.tar.gz ( örn: tar -zxvf grub-0.93.tar.gz ) # cd dosya-ismi ( örn: cd grub-0.93) # ./configure # make
| Uyarı: configure --help" komutu ile yardım alabilirsiniz. Kurulması sizin için gerekli olmayan destekleri disable edebilirsiniz veya gereklileri enable edebilirsiniz. |
Kurulum tamamlandıktan sonra "grub" komutu ile grub komut satırına geçerek veya "grub-install" ile grub'un HDD'in MBR'sine yazılmasını sağlayacağız.
Örnek -1 : /dev/hda5 deki grubun MBR'ye yazılmasını sağlamak için.Grub komut satırına geçtikten sonra sırası ile "root (hd0,4)" ve "setup (hd0)" komutlarını veriyoruz.
grub> root (hd0,4) Filesystem type is ext2fs, partition type 0x83 grub> setup (hd0) Checking if "/boot/grub/stage1" exists... yes Checking if "/boot/grub/stage2" exists... yes Checking if "/boot/grub/e2fs_stage1_5" exists... yes Running "embed /boot/grub/e2fs_stage1_5 (hd0)"... 22 sectors are embedded. succeeded Running "install /boot/grub/stage1 (hd0) (hd0)1+22 p (hd0,4)/boot/grub/stage2 /boot/grub/grub.conf"... succeeded Done.
veya ikinci bir yöntem olan "grub-install" komutu ile daha kolayca yukarıdaki işlemi yapabiliriz.
[root@serdar root]# grub-install /dev/hda Installation finished. No error reported. This is the contents of the device map /boot/grub/device.map. Check if this is correct or not. If any of the lines is incorrect, fix it and re-run the script `grub-install'. # this device map was generated by anaconda (fd0) /dev/fd0 (hd0) /dev/hda
RPM tabanlı dağıtımları kullananlar http://rpmfind.net/linux/rpm2html/search.php?query=grub adresinden kendi sistemleri için uygun olan .rpm'i çekip sistemlerine
rpm -ivh <dosya_ismi> (Örn: rpm -ivh grub-0.92-7.i386.rpm)
Debian kullanıcıları ise;
apt-get install grub
komutu ile grub'u sistemlerine kurabilirler.
Yine kurulumdan sonra "grub-install /dev/hda" şeklindeki bir komut ile grubun MBR' ye yazılmasını sağlamamız gerekli. Debian tarafından /boot/grub/ veya /boot/boot/ içerisinde bir menu.lst oluşturulmasını sağlamak için debiana özgü olan "update-grub" komutunu kullanabilirsiniz.
Yukarıda bahsedilen yöntemlerden herhangi biri ile kurulum tamamlandıktan sonra, bir editör ile /etc/grub.conf dosyasını aşağıdaki bilgiler ışığında oluşturup yine aşağıdaki bilgiler ışığında aktif ederek kullanmaya başlıyabilirler.
Grub konfigürasyon dosyası olarak /boot/grub/grub.conf dosyasını arar. Çoğu sistemde /boot/grub/grub.conf ve /etc/grub.conf dosyaları /boot/grub/menu.lst ' ye bağlanmış durumdadır. Bu dosyada yaptığımız değişikliklerin yine aynı şekilde /boot/grub/ içerisinde yer alan menu.lst dosyasına aktarılması gereklidir. Biz konfigurasyon dosyalarının /etc/ altında bulunmasına alışık olduğumuz için /boot/grub/grub.conf dosyasını /etc/grub.conf dosyasına link ile bağlayabiliriz.Yine aynı şekilde /boot/grub/grub.conf dosyasınında /boot/grub/menu.lst 'e bağlanması gerekli. Kısaca sistemde /boot/grub/grub.conf, /boot/grub/menu.lst ve /etc/grub.conf dosyalarının birbirleri ile bağlı olması gereklidir.
# ln -s /boot/grub/grub.conf /boot/grub/menu.lst # ln -s /boot/grub/grub.conf /etc/grub.conf
/boot/grub/grub.conf, /boot/grub/menu.lst ve /et/grub.conf dosyalarının aynı içeriğe sahip olacağına ve /etc/grub.conf da yapılacak değişikliğin /boot/grub/ içerisindeki grub.conf ve menu.lst'ye link yoluyla aktarılacağına dikkat ediniz.
Grub Önyükleme İşlemi İçin Kullanılan Yöntemler
Kernelin doğrudan yüklenmesi (directly boot with grub)
Chain-Loading yöntemi ile, direk destek verilmeyen işletim sistemlerinin yüklenmesi
Grub İmage'leri
stage 1
stage 1.5
stage 2
nbgrub ve pxegrub
Grub Komutları
Boot menüsünde "c" tuşuna basıp komut satırına geçtiğimizde yada işletim sistemi içerisinde "grub" yazıp entere bastığımızda karşımıza gelen grub komut satırında "help" yazarak grub içerisinde yer alan komutların listesini görebiliriz.
[root@serdar root]# grub Probing devices to guess BIOS drives. This may take a long time. GRUB version 0.92 (640K lower / 3072K upper memory) [ Minimal BASH-like line editing is supported. For the first word, TAB lists possible command completions. Anywhere else TAB lists the possible completions of a device/filename. ] grub> help blocklist FILE boot cat FILE chainloader [--force] FILE color NORMAL [HIGHLIGHT] configfile FILE device DRIVE DEVICE displayapm displaymem find FILENAME geometry DRIVE [CYLINDER HEAD SECTOR [ halt [--no-apm] help [--all] [PATTERN ...] hide PARTITION initrd FILE [ARG ...] kernel [--no-mem-option] [--type=TYPE] makeactive map TO_DRIVE FROM_DRIVE md5crypt module FILE [ARG ...] modulenounzip FILE [ARG ...] pager [FLAG] partnew PART TYPE START LEN parttype PART TYPE quit reboot root [DEVICE [HDBIAS]] rootnoverify [DEVICE [HDBIAS]] serial [--unit=UNIT] [--port=PORT] [-- setkey [TO_KEY FROM_KEY] setup [--prefix=DIR] [--stage2=STAGE2_ terminal [--dumb] [--timeout=SECS] [--testvbe MODE unhide PARTITION uppermem KBYTES vbeprobe [MODE]
Yukarıda listesi görünen komutlardan en çok ihtiyaç duyulanları izah etmeye çalışalım.
cat
Kullanımı : cat <dosya_ismi> (örn : cat (hd0,1)/etc/fstab)
İstenilen dosya içeriğini görüntüler.
grub> cat (hd0,4)/etc/fstab LABEL=/ / ext3 defaults 1 1 none /dev/pts devpts gid=5,mode=620 0 0 none /proc proc defaults 0 0 none /dev/shm tmpfs defaults 0 0 /dev/hda8 swap swap defaults 0 0 /dev/hda6 swap swap defaults 0 0
chainloader
Kullanımı : chainloader -force <dosya_ismi>
rootnoverify ile belirtilen disk bölümünde boot image'inin hangi sektörde bulunduğunu işaret eder. "chainloader +1" kullanımı rootnoverify ile belirtilen bölümün ilk sektöründen boot etmesini belirtir. Aksi bir durum söz konusu ise "chainloader -force <dosya_ismi> ile yer belirtilebilir.
color
Kullanımı : color <normal> <highlight> (örn : color light-gray/blue black/light-gray)
Menü rengini değiştirmek için kullanılır. İlk kısımda belirtilen parametre menünün normal halinin rengini ifade eder. İkinci kısımda belirtilen parametre ise kursorun belirtilen title'ın üzerine geldiğinde oluşacak rengi ifade eder. Yine her iki kısımdaki parametrelerde kullanım şekli önplan-rengi/geriplan-rengi (FG/BG) şeklindedir.
Yani "color light-gray/blue black/light-gray" ifadesi ile menünün rengi önplan, light-gray arkada plan, blue olacak şekilde belirtilmiş. Kursorun title'lar üzerindeki durumunda ise önplan rengi, black geriplan rengi ise light-gray olarak seçilmiş.
Kullanılabilecek renkler :
black, blue, green, cyan, red, magenta, brown, light-gray, dark-gray, light-blue, light-green, light-cyan, light-red, light-magenta, yellow, white.
Bu renklerden sadece ilk sekiz tanesi geriplan (background) rengi olarak kullanılabilir.
configfile
Kullanımı : configfile <dosya_ismi>
Belirtilen yerdeki dosyayı konfigurasyon dosyası olarak yükler. Örnek :
grub> configfile (hd0,4)/boot/grub/menu.lst
grub.conf içerisinde düzenlenen yapının boot ekranında gelecek olan halidir.
default
Kullanımı : default <numara> (örn: default 1)
grub.conf içerisinde yer alan OS bilgilerinden kaçıncı sıradakinin default olarak açılacağını belirtir.
default 1 title Red Hat Linux root (hd0,4) kernel /boot/vmlinuz-2.4.18-14 ro root=/dev/hda5 initrd /boot/initrd-2.4.18-14.img title Debian root (hd0,6) kernel /boot/vmlinuz-2.2.20-idepci ro root=/dev/hda7 title WinXP rootnoverify (hd0,0) chainloader +1
Şekilde girilen bir yapıda "default 1" değeri ile boot işlemi sırasında herhangi bir mudahale olmazsa default olarak "Debian" ile ilgili kısmı işleme sok anlamındadır. Yani
default 0 -> 1. kısım (Redhat) default 1 -> 2. kısım (Debian) default 2 -> 3. kısım (WinXP) gibi.
fallback
Kullanımı : fallback <numara> (örn : fallback 0)
Default olarak belirtilen kayıdın boot işlemi sırasında herhangi bir hata olursa fallback ile belirtilen kayıt devreye sokulur.
default 0 fallback 1
şeklinde bir yapı belirlemiş olduğumuzu varsayarsak yukarıda yer alan grub.conf içeriğimize göre ilk önce "Red Hat" boot edilmek istenecek. Şayet boot işleminde bir hata oluşursa "timeout" ile belirtilen zaman kadar bekleyip otomatik olarak "Debian" kısmını işletecek.
find
Kullanımı : find <dosya_ismi> (örn : find /etc/fstab)
Belirtilen dosyayı tüm harddisk alanlarında arar.
grub> find /etc/fstab (hd0,4) (hd0,6)
/etc/ altındaki fstab dosyasını yer aldığı harddisk bölümlerini listeler ( (hd0,4) ve (hd0,6) ).
hide
Kullanımı : hide <hdd bölümü> ( Örn : hide (hd0,1) )
Belirtilen disk bölümünü gizlemeye yarar. Harddiskinizin birinci bölümünde DOS aynı hardiskin ikinci bölümünde Windows kurulu olduğunu farzedelim (ker ikiside primary olarak işaretlenmiş olsun). Siz sadece Dos kısmında boot edilmesini sağlamak istiyorsanız.
grub> unhide (hd0,0) grub> hide (hd0,1) grub> rootnoverify (hd0,0) grub> chainloader +1 grub> makeactive grub> boot
Şeklinde birinci harddiskdeki birinci bölümü öne çıkarıp ikinci bölümü gizleyebilirsiniz.
initrd
Kullanımı : initrd <dosya ismi> (Örn : initrd /boot/initrd-2.4.18-14.img)
Ram disk image'i kullananlar için image'in yüklenmesini sağlar.
kernel
Kullanımı : kernel [`--type=tip'] [`--no-mem-option'] dosya ...
Sisteme yüklenecek boot image'inin yerini belirtir.
kernel /boot/vmlinuz-2.2.20-idepci ro root=/dev/hda7 (/dev/hda7 de /boot dizininde yer alan "vmlinuz-2.2.20-idepci" isimli image'i yüklemesini sağlar.)
makeactive
Disk bölümünnün aktif edilmesini sağlar. Windows vb. işletim sistemleri buna ihtiyaç duyar.
# For booting Windows NT or Windows95 title Windows NT / Windows 95 boot menu root (hd0,0) makeactive chainloader +1
map
Kullanımı : map <map edilecek sürücü ismi> <map edilen sürücü> (Örn : map (hd0) (hd1))
Şayet dos veya windows'u birinci diskinize harddiskinize yüklememişseniz vede diğer diskten boot edemiyorsanız. "map" komutu ile dos veya windows'un olduğu diski birinci disk ile yer değiştirebilirsiniz. Yani o diski birinci disk gibi gösterebilirsiniz. Aşağıda birinci disk ile ikinci diskin nasıl yer değiştirilebileceğine dair bir örnek.
grub> map (hd0) (hd1) grub> map (hd1) (hd0)
md5crypt
Kullanımı : md5crypt
password komutu ile birlikte kullanılmak üzere encrypt edilmiş şifre üretir. Örnek verecek olursak:
grub> md5crypt Password: ***** Encrypted: $1$M.P8g/$CwPjmlPRCZLo7wL5rMJyD1
password
Kullanımı : password [`--md5'] <şifre> (örn : password --md5 $1$M.P8g/$CwPjmlPRCZLo7wL5rMJyD1)
grub.conf içerisinde istenilen işletim sisteminin boot edilmesi işleminde şifre sorulmasını veya "single mod" ile sistem açılmak istenildiginde şifre sorulması işlemi için kullanılır. İster md5crypt fonksiyonu ile ürettiğimiz md5 yapısındaki şifreyi kullanabiliriz, istersek düz metin olarakda ("password sifrem" şeklinde) şifremizi belirtebiliriz.
root
Kullanımı : root (<sürücü>,<bölüm_ismi>,<dilim_ismi>)
Belirtilen sürücü üzerindeki disk bölümünde bulunan kısmı mount eder.
Örnekler :
Linux'e ait kullanım örnekleri :
root (hd0,1) : Birinci diskin 2. bölümünde (/dev/hda2 veya /dev/sda2) yer alan bölümdür. root (hd1,4) : İkinci diskin 5. bölümünde (/dev/hdb5 veya /dev/sdb5) yer alan bölümdür.
grub> root (hd0,4) Filesystem type is ext2fs, partition type 0x83
BSD ve vb işletim sistemelerine ait kullanım örnekleri :
root (hd0,1,a) : Birinci diskin 2. bölümünün "a" (/dev/ad1s2a) dilimini işaret eder. root (hd1,2,d) : İkinci diskin 3. bölümünün "d" (/dev/ad2s3d) dilimini işaret eder.
rootnoverify
Kullanımı : rootnoverify (<sürücü>,<bölüm_ismi>,<dilim_ismi>)
Gruba chain-loading metodu ile işletim sistemi ekleneceği zaman (windows, dos, winxp vb.) belirtilen kısmın mount edilmeyeceğini belirtir.
Örnek :
title WinXP rootnoverify (hd0,0) chainloader +1
setup
Kullanımı : setup [`--force-lba'] [`--stage2=os_stage2_dosyası] [`--prefix=dir'] yüklenecek_sürücü [image_sürücü]
Karmaşık kullanımı olan "install" komutunu kullarak grub'un MBR' ye yüklenmesini sağlar. Genellikle root komutu ile birlikte kullanılır.
grub> setup (hd0) Checking if "/boot/grub/stage1" exists... yes Checking if "/boot/grub/stage2" exists... yes Checking if "/boot/grub/e2fs_stage1_5" exists... yes Running "embed /boot/grub/e2fs_stage1_5 (hd0)"... 22 sectors are embedded. succeeded Running "install /boot/grub/stage1 (hd0) (hd0)1+22 p (hd0,4)/boot/grub/stage2 /boot/grub/grub.conf"... succeeded Done.
timeout
Kullanımı : timeout <saniye> (örn : timeout 10)
Default yada fallback komutlarında belirtilen kısmı işleme sokmadan önce olası bir kullanıcı müdahalesine karşın belirtilen saniye kadar bekler.
title
Kullanımı : title <isim> (örn : title GNU/Debian)
Boot işleminde belirtilen kısımların isimlendirilmesini sağlar.
unhide
Kullanımı : unhide <disk bölümü> ( Örn : unhide (hd0,0) )
"hide" komutunun yaptığı işin tam tersi olarak disk bölümünü aktif eder. Aynı diskte birden fazla primary alan olduğu zaman istenilen birinin iptal edilip diğerinin aktif edilmesi amacı ile kullanılır.
Splashimage Kullanımı ve Splashimage Yapımı
Boot menüsünde cok daha güzel, hoş görüntüler elde edebilmek için splashimage'lerinden faydalanabilirsiniz. Bu desteğin verilmesi için "vga-16" yamasına ihtiyaç vardır. Redhat tarafından hazırlanmış son rpm'ler bu yama ile birlikte çıkmıştır, yani bu desteğe sahiptirler.
Kaynak koddan kurulum yapanlar için yamaların bulunabileceği bir adres: http://people.redhat.com/~katzj/grub/patches/
Debian kullananlar (unstable) source.list'e aşağıdaki adresleri girdikten sonra "apt-get update" daha sonra "apt-get install grub" ile vga desteğine sahip grub önyükleyici yöneticisini kurabilirler.
deb http://people.debian.org/~ingo/grub/unstable/ ./ deb-src http://people.debian.org/~ingo/grub/unstable/ ./
Splashimage'ler 640 x 480, 14 renk olarak yapılmış resim dosyalarıdır. Sizde kendinize ögzün resim dosyaları yapmak için
# convert -geometry 640x480 -colors 14 image.jpg image.xpm # gzip image.xpm
ile image.xpm.gz dosyasını elde edersiniz. daha sonra bunu /boot/grub/ altina yerleştirip, grub.conf içerisinde
splashimage (hd0,1)/boot/grub/image.xpm.gz
veya
splashimage /boot/grub/image.xpm.gz
şeklindeki bir tanımlama ile kullanmanız mümkün.
Splashimage örneklerine buradan ulaşabilirsiniz
http://www.serdaraytekin.com/docs/os/grub/images/
Boot Menüsüne Ait Kısayollar ve İşlemler
İlk açılışta karşımıza gelen boot menüsüne ait kısa yol tuşları ve onlara ait işlemler şu şekildedir.
- c
- Grub komut satırına geçmemizi sağlar.
- e
- Kursorun üzerinde bulunduğu satıra ait bilgilerin edit edilebilmesini sağlar.
- b
- Edit kısmında kursorun üzerinde bulunduğu kısmın boot etmesini sağlar.
- o
- Edit kısmında kursorun bulunduğu satırın sonrasına yeni boş bir satır açar.
- O
- Yine edit kısmında kursorun bulunduğu satırın önüne yeni boş bir satır açar.
- d
- Kursorun üzerinde bulunduğu satırı siler.
Örnek Konfigürasyon Dosyaları
1
default=1 timeout=10 splashimage=(hd0,4)/boot/grub/splash.xpm.gz title Red Hat Linux (2.4.18-14) root (hd0,4) kernel /boot/vmlinuz-2.4.18-14 ro root=/dev/hda5 initrd /boot/initrd-2.4.18-14.img title Debian root (hd0,6) kernel /boot/vmlinuz-2.2.20-idepci ro root=/dev/hda7 title WinXP rootnoverify (hd0,0) chainloader +1
2
timeout 5 color black/yellow yellow/black default 0 password freeos title Red Hat Linux root (hd0,2) kernel /vmlinuz-2.4.18-3 ro root=/dev/hda5 hdc=ide-scsi idebus=50 initrd /initrd-2.4.18-3.img title WinXP root (hd0,1) makeactive chainloader +1
Grub hakkında daha detaylı bilgi edinmek için
http://www.gnu.org/manual/grub/index.html
http://www.fifi.org/doc/grub-doc/html/grub_toc.html
Belge Hakkında
Bu belge Serdar Aytekin ( serdar@eximinter.com ) tarafından hazırlanmıştır.
Belgenin orjinal adresi:
