19.03.2010

Grub2 menüsünde değişiklik yapmak

Microsoft'a boot.ini'yi kaldırıp yerine bcd'yi koydu diye kızarken linux dünyasında da grub'dan grub2'ye geçiş oldu. Artık Linux'ta da boot menümüzü basit bir metin dosyasını düzenleyerek değiştiremeyeceğiz.

Şu anda Ubuntu kurulumunda v1.97beta4 aşamasında olan grub2 projesi, önceki sürüme göre bazı yenilikler içeriyor. Ayrıntılar için bu linke gözatabilirsiniz. Pratik olarak farklarına gelirsek, artık /boot/grub/menu.lst dosyası yok. Bu dosyanın artık elle değiştirilmemesi öneriliyor. Onun yerine şu tavsiye ediliyor:
Eski menu.lst'nin bazı bölümlerden oluştuğunu düşünelim. Bu bölümlerin her birini ayrı ayrı metin dosyalarında düzenleyeceğiz. Sonra da bunları derleyip /boot/grub/grub.cfg dosyası oluşturacağız. Ama bu dosyayı update-grub komutu bizim yerimize oluşturacak. update-grub'ı çalıştırmak için root yetkileri gerek. Ama root ile bile olsa grub.cfg'yi elle değiştirmememiz önemli. menu.lst'nin bazı bölümlerden oluştuğunu düşünelim demiştim. Bu bölümler /etc/grub.d altında şöyle sıralanmış:
  • 00_header
  • 05_debian_theme
  • 10_linux
  • 20_memtest86+
  • 30_os-prober
  • 40_custom
00_header ve 05_debian_theme'i geçip 10_linux'a gelelim. Bu kısım, mevcut linux kurulumuna ait açılış menüsü. Örneğin kernel 2.6.24 sürüm çekirdek ile kurup, ardından 2.6.26 güncellemesi yaptıktan sonra bu iki çekirdek sürümü de ekranda bu satır aracılığıyla gözükecek.
Bunun altındaki 20_memtest86+ satırı da grub menüsünde görünecek bellek testi satırı. Bunu görüntülemek istemiyorsanız bu dosyanın execute yetkilerini almak yeterli. Yani komut satırından
sudo chmod -x 20_memtest86+
ile bunu yapabiliriz. 30_os-prober ise, grub2'nin bilgisayarda kurulu diğer işletim sistemlerinden haberdar olmak için yaptığı taramanın sonucunda bulduğu bilgileri menüye eklemesi için. Bilgisyarınızda bir Windows kurulumu varsa bu kuruluma ait bir chainloader komutu muhtemelen grub2 menünüzde gözükecektir. Eğer gözükmesini istemiyorsanız aynı şekilde bu dosyanın da execute yetkilerini kaldırabilirsiniz. Ama örneğin Windows kurulumunun başlığını (menüde gözüken adını) değitşrimek istiyorsanız bunu 30_os-prober dosyasını düzenleyerek yapamazsınız. Çünkü bu dosyanın içi boş. Menüde gözüken Windows girdisi, update-grub'ı çalıştırdığınız anda oluşturulacak ve doğrudan /boot/grub/grub.cfg dosyasına yazılacak. Bu işi yapmak için 40_custom'a giriş yapmanız gerek.
Eğer os-prober'ın bulamadığı girişleriniz varsa, veya os-prober'ın bulduklarını beğenmiyor ve kendi girişlerinizi yapmak istiyorsanız bunları yazacağınız yer 40_custom dosyası. Biraz önceki örneğimize devam edelim. Mesela grub2 menüsündeki Windows girdisine ait başlığı beğenmedik ve Windows XP SP2 yazmasını istiyoruz. Bu durumda öncelikle 30_os-prober'ın execute yetkilerini kaldırmak, ardından da şuna benzer satırları 40_custom dosyasının sonuna eklemek gerek.
menuentry "Windows XP SP2" {
set root=(hd0,2)
chainloader +1
}
Dosyayı kaydedip kapattıktan sonra komut satırından
sudo update-grub
komutunu vererek /boot/grub/grub.cfg dosyasını güncellemek gerek.

Örnek eski grub (grub legacy deniyor) ile yeni grub (grub2) menüsündeki öğeler arasındaki farkları aşağıdaki resim aracılığıyla gösterebiliriz sanırıım.


Bir nokta da grub2 menüsünün ayarları ile ilgili. Örneğin Ubuntu menüsünde gözüken recovery mode girdilerini görmek istemiyorsanız, bunu /etc/default/grub dosyasını root yekileriyle açıp en sondaki recovery ile ilgili satırın başındaki # karakterini silip şu şekilde bırakarak

GRUB_DISABLE_LINUX_RECOVERY=true

yapabilirsiniz. Veya menünün gösterilme zamanını (default 0)
GRUB_TIMEOUT=10
gibi bir satırla, veya menüdeki varsayılan girdiyi değiştirmeyi de
GRUB_DEFAULT=3
gibi bir satırla yapabilirsiniz.

Hiç yorum yok: