Grub sistem açılırken bizi ilk karşılayan önyükleyicimizdir. Grub sayesinde çekirdeğimiz ve initramfs imajımız belleğe yüklenir ve sistem başlatılır.

Grub ekranını tanıyalım

Grub ekranını kullanarak açılış seçeneklerini değiştirmemiz mümkündür. Bunun için düzenleme modu ve komut satırı modu bulunmaktadır.

Not: Grub ekranında klavye desteği bulunmadığı için ingilizce q klavye düzenine göre yazmanız gerekmektedir.

Grub ekranında eğer e tuşuna basarsanız düzenleme modune geçecektir. Bu sayede sistemi başlatmadan önce açılış parametrelerini değiştirmemiz mümkün olur.

Grub metin düzenleme modu

Düzenleme işlemimizi yaptıktan sonra f10 veya ctrl-x tuşuna basarak açılışı başlatabilirsiniz. Düzenleme modundan çıkmak ve değişiklikleri geri almak için esc tuşunu kullanabilirsiniz.

Eğer c tuşuna basarsanız komut satırı moduna geçer. Burada komutları elle girerek açılışı elle yapmamız mümkündür.

Grub komut satırı modu

Komut satırı modundan çıkmak için esc tuşunu kullanabilirsiniz.

Temel komutlar

ls komutu mevcut diskleri listeler. Komutun yanına dizin adını eklerseniz dizin içeriğini listeler.

ls komutu

clear komutu komut satırını temizler.

clear komutu

set komutu değişken ayarlamak için kullanılır. root değişkeni bulunduğumuz diski ifade eder.

set komutu

echo komutu ekrana yazı yazdırır. Değişkenler $variable veya ${variable} şeklinde ifade edilir.

echo komutu

exit komutu grub ekranından çıkar ve bios sıralamasındaki bir sonraki önyükleyicinin başlatılmasını sağlar.

fwsetup komutu ile uefi bios bulunan sistemlerde biosa erişebilirsiniz.

Koşul oluşturmak için if kullanılır. Yapısal olarak bash içerisindeki if ile aynıdır fakat koşullar için sadece [ ] kullanılır. ([[ ]] bu şekilde bulunmaz.)

if [ "${root}" ] ; then
   set root=(hd0,gpt2)
else
   echo $root
fi

search komutu disklerde arama yapar. eğer –file parametresi eklerseniz dosya araması yapar. Eğer –fs-uuid eklerseniz uuid değeri arar. –set=xxx eklersek bulunan diski değişkene atar.

search --file --set=root /boot/vmlinuz-xxx

source komutu bir yapılandırma dosyasını içeri aktarır.

source ($root)/boot/grub/linux.cfg

insmod komutu modül yükler. Mevcut modüllerin listesine lsmod komutu ile ulaşabilirsiniz.

insmod all_video
lsmod

Sistemin komut satırı ile başlatılması

GNU/Linux açılış için çekirdeğe ve initramfs imajına gereksinim duyar. Bunun için aşağıdaki komutları sırayla çalıştırmamız gereklidir.

set root=(hd0,gpt2)
linux /boot/vmlinuz-xxx root=/dev/sda2 ro quiet splash
initrd /boot/initrd.img-xxx
boot

Burada ilk komutumuzda çekirdeğin bulunduğu diski mevcut disk haline getirdik. İkinci komutta ise çekirdeğin konumunu ve parametrelerini vererek çekirdeğin yüklenmesini sağladık. Üçüncü komutta ise initramfs imajımızın konumunu vererek yüklenmesini sağladık. Son olarak açılışın başlatılması için gereken komutu yazdık.

Grub yapılandırması

grub-mkconfig komutunu kullanarak (veya update-grub) otomatik yapılandırma oluşturabilirsiniz. Fakat bununla birlikte bu yapılandırmayı elle yazmak da mümkündür. Bunun için /boot/grub/grub.cfg dosyamızı aşağıdaki gibi yazabiliriz.

insmod all_video
insmod ext2
menuentry Pardus {
    set root=(hd0,gpt2)
    linux /boot/vmlinux-xxx ro quiet splash
    initd /boot/initrd.img-xxx
}

Yukarıdaki örnek yapılandırmada menuentry ifadesi açılış ekranına bir seçenek eklemeye yaramaktadır. Bir alt menü oluşturmak için submenu ifadesini kullanabilirsiniz.

Bununla birlikte chainloader komutu kullanılarak farklı (linux olmayan) bir sistemi açmak mümkündür.

menuentry "Winzort 10 UEFI" {
    search --file --set=root /EFI/MICROSOFT/BOOT/bootmgfw.efi
    chainloader ($root)/EFI/MICROSOFT/BOOT/bootmgfw.efi
}

Legacy bioslarda nt çekirdeğini çalıştırmak için ise aşağıdaki gibi bir yol izleyebilirsiniz.

menuentry "Winzort Xp Legacy" {
    insmod ntfs
    insmod ntldr
    search --file --set=root /bootmgr
    ntldr /bootmgr
}

Faydalı olabilecek bağlantılar

https://www.gnu.org/software/grub/manual/grub/html_node/Shell_002dlike-scripting.html#Shell_002dlike-scripting

https://www.gnu.org/software/grub/manual/grub/html_node/Multi_002dboot-manual-config.html#Multi_002dboot-manual-config