Önyükleyici Ayarları

Eyl 06, 2013

Giriş:

GRUB (GRand Unified Bootloader) çok güçlü bir önyükleyici yöneticisidir. Sistemin yüklenmesinden ve kontrolün çekirdeğe (kernel) 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ı şunlardır:

Veriye Doğrudan Erişim İmkanı:

BIOS tarafından tanınan tüm sürücüleri  bağlayıp (disk, disket) doğrudan 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 sisteminde önyükleme yapabilme özelliğine sahiptir.

LBA (Logical Block Address) Desteği:

LBA desteği olan makinelerde bu desteği kullarak yüksek kapasiteli disk alanlarına da erişim sağlar.

Ağ Üzerinden Önyükleme:

TFTP protokolunu kullanarak ağ üzerindeki bir işletim sistemi imajini yüklemesi mümkündür.

Menü ve Komut Satırı Desteği:

İlk önyükleme esnasında kullanıcının karşısına gelen menüde "c" tuşuna basarak grub komut satırına düşülebilir, işlemler buradan da yapılabilir.
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 yoktur. (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:

Grub Resmi Sitesi : http://www.gnu.org/software/grub/
FTP Adresi : ftp://alpha.gnu.org/pub/gnu/grub/

Kaynak koddan kurulum yapmak için ftp://alpha.gnu.org/pub/gnu/grub/ adresinde yer alan en son grub sürümü indirilir.

Grub Ayarları

Yapılacak bütün ayarlar “root” yani yönetici olarak yapılacaktır, o yüzden “root” iken yapılan bir hatadan geriye dönüş olmayacaktır.

Grub İçin Şifre Oluşturulması


Grub için bir parola oluşturulmak istenirse;  /sbin/grub-md5-crypt komutu girilir. Kullanıcının kullanmak istediği parola istenir. Örneğin: erkan70 olarak giriş yapılırsa, bunun md5 olarak şifrelenmiş halde ekranda bir çıktısı görülür. İleride sisteme girmek için gerekli olan şifre md5 olarak şifrelenmiş olandır.
(‘#’ karakteri ile başlayan satırlar açıklama satırlarıdır.) 

# /sbin/grub-md5-crypt
Password:
$1$Zo25d/$I1HusFuQ7F6ZC2klLTybJ/

Sonra grub ayar dosyası olan /boot/grub/grub.conf dosyası root hakları ile herhangi bir editor kullanılarak açılır. timeout (zaman aşımı) yazan satır bulunup hemen altına password --md5 SIFRE satırı eklenir.

splashimage=(hd0,4)/boot/grub/splash.xpm.gz
default=0
timeout=10
#######
password --md5 $1$Zo25d/$I1HusFuQ7F6ZC2klLTybJ/
#######
title Red Hat Linux (2.6)
root (hd0,4)
kernel /boot/vmlinuz-2.6 ro root=/dev/hda5
initrd /boot/initrd-2.6.img

Yapılan değişikliklerin kaydolması için grub-install komutu yürütülür:

# 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

Artık bilgisayar yeniden başlatıldığında, "single mod” ile çalışmak istenirse, önce "p" tuşuna basılıp, sonra doğru şifre (md5 işe şifrelenmiş olanı, yani erkan70 parolasını) girilmeden, GRUB editor ve komut satırının kullanım hakkını vermeyecektir. Yani zarar vermek isteyen kişinin single moda geçmesi için bu parolayı bilmesi gereklidir. Aksi taktirde single modda çalışmaz ve normal önyükleme işlemleri yapılır. Yani PC normal bir şekilde boot eder, ki burda da yine ya kullanıcı ya da yönetici parolasını verilmek zorunluluğu olur. Yönetici parolası bilinmiyorsa zaten sisteme yönetici olarak girilemez.

Yalnız burada yine bir güvenlik açığı söz konusu olabilir. Yani,

cat /boot/grub/grub.conf

komutu ile MD5 ile şifrelenmiş olan dosya alınıp, deşifre edilebilir. Çok basit bir işlem ile md5 ile şifrelenmiş şifre normal metin olarak görülebilmektedir. Bu yüzden bu dosyanın erişim haklarını sadece ROOT kullanıcısına yani yönetici kullanıcıya devretmekte çok büyük fayda vardır. Bunu gerçekleştirmek için ise aşağıdaki basit komutu vermek ve root harici kullanıcılara bütün erişim haklarını kapatmak gerekir:

# chmod 600 /boot/grub/grub.conf

Ancak, Linux’dan SINGLE modda açılma seçeneği kapatıldıktan sonra, zarar vermek isteyen kişi diğer işletim sistemlerini açmaya kalkarsa, onlara zarar vermesini engellemek için, diğer işletim sistemlerinin korunması da bu yöntemle yapılabilir. Mesela sistemde bir de Windows olduğu düşünülürse yapılması gereken, başlık (title) satırından sonra kilit (lock) satırını eklemektir. Bu sayede açılmak edilmek istenen işletim sistemi içinde bir parola verilmesi gerekmektedir:

title Win2K
#######
lock
#######
rootnoverify (hd0,1)
chainloader +1

Windows için ayrı parola verilmesi için yapılması gereken ise, MD5 ile üretilen yeni şifreyi "lock" satırından sonra aynen yukarda Linux için yapılan şekilde eklemek olacaktır:

title Win2K
#######
lock
password --md5 $1$pbK5d/$2DC/UUKF4nyuwU6WWsHsT0
#######
rootnoverify (hd0,1)
chainloader +1
[değiştir]

Örnek Bir grub.conf Dosyası

default=0
timeout=10
splashimage=(hd0,4)/boot/grub/splash.xpm.gz
#Burda şifre "erkan70"
password --md5 $1$Zo25d/$I1HusFuQ7F6ZC2klLTybJ/

title Red Hat Linux (2.6)
root (hd0,4)
kernel /boot/vmlinuz-2.6 ro root=/dev/hda5
initrd /boot/initrd-2.6.img

title Win2K
#######
lock
#Burda şifre "erkan"
password --md5 $1$pbK5d/$2DC/UUKF4nyuwU6WWsHsT0
#######
rootnoverify (hd0,1)
chainloader +1

Yapılandırma

İşletim sisteminin önyüklemesi için birkaç komut kullanılması gereklidir. Buna çözüm olarak GRUB, bir işletim sisteminin önyüklemesi için gerekli tüm öğelerden oluşan bir menü arayüzü sağlamaktadır.

Bu menüyü aktif kılabilmek için önyükleme (açılış) dizininin altındaki “menu.lst” yapılandırma dosyası gereklidir.

Dosya öncelikle genel ayarları içerir ve menü arayüzü bu seçeneklerle alakalıdır. Bu komutlar herhangi bir seçenekten önce de kullanılabilir.

#
# Sample boot menu configuration file
#

Tahmin edileceği gibi bu satırlar yorumlardır. `#' karakteri ve boş satırlar GRUB tarafından göz ardı edilir.

  • İlk giriş (burada sayma 0 dan başlar, 1’den değil) varsayılan seçenek olur. 

# By default, boot the first entry.
default 0

  • Yorumda söylendiği gibi, GRUB otomatik olarak 30 saniye içinde açılacaktır. (Bir tuşa basılarak yarıda kesilmezse bu durum geçerlidir.)

# Boot automatically after 30 secs.
timeout 30

  • 'Herhangi bir nedenden dolayı geçerli giriş çalışmazsa ikincisine geri dön' demektir. (Çok nadir kullanılır.)

  # Fallback to the second entry.
fallback 1

Şimdi asıl işletim sistemi tanımlarından bahsedilecek olursa, her girişin özel bir komut olan “title” ile başladığını görülür ki, işlemler bu komuttan sonra tanımlanmaktadır. Burada her öğeden sonra  “boot” komutu yoktur. Bunun sebebi Grub'ın diğer komutları kaydettiğinde “boot” komutunu otomatik olarak gerçekleştirmesidir.

“title” komutu, menüdeki kısa bir başlık/tanım görüntülemek için kullanılır. “title” bağımsız değişkeni görüntülerken oraya bir şeyler yazılabilir.

  • Bu satırlar "GNU/Hurd"u birinci sabit diskten başlatır:

# For booting the GNU Hurd
title  GNU/Hurd
root   (hd0,0)
kernel /boot/gnumach.gz root=hd0s1
module /boot/serverboot.gz

  • Bu satırlar "GNU/Linux"u ikinci sabit diskten başlatır: 

# For booting the GNU/Linux
title  GNU/Linux
root   (hd0,1)
kernel /boot/gnumach.gz root=hd0s1
module /boot/serverboot.gz

  • Bu satırlar "Mach"i disketteki hd0s3 teki kök dosyadaki bir çekirdekten başlatır. Aynı zamanda grub, grub'ın geri kalan komutları gerçekleştirmesinden ve bilgisayarın açılışından önce, bir yönlendirme ve geciktirme görüntülemesini sağlayan bir “pause” satırı içerir.

# For booting Mach (getting kernel from floppy)
title  Utah Mach4 multiboot
root   (hd0,2)
pause  Insert the diskette now^G!!
kernel (fd0)/boot/kernel root=hd0s3
module (fd0)/boot/bootstrap

  • Bu öğe 1. harddiskin 3. PC diliminin bir bölümünden kaydedilen FreeBSD çekirdeğini başlatır.

# For booting FreeBSD
title  FreeBSD
root   (hd0,2,a)
kernel /boot/loader

  • Bu komut, zincir yükleyicisi kullanarak işletim sistemi/2'yi başlatır.

# For booting OS/2
title OS/2
root  (hd0,1)
makeactive
# chainload OS/2 bootloader from the first sector
chainloader +1
# This is similar to "chainload", but loads a specific file
#chainloader /boot/chain.os2

  • Yukarıdakinin aynısı olup, Windows içindir.
# For booting Windows NT or Windows95title Windows NT / Windows 95 boot menu
root        (hd0,0)
makeactive
chainloader +1
# For loading DOS if Windows NT is installed
# chainload /bootsect.dos