LFCS: Grand Unified Bootloader (GRUB) Nasıl Yapılandırılır ve Sorun Giderilir - Bölüm 13


2 Şubat 2016 tarihinden itibaren geçerli olmak üzere LFCS sertifikasyon sınavı hedeflerinde yapılan son değişiklikler nedeniyle, gerekli konuları burada yayınlanan LFCS serisine ekliyoruz. Bu sınava hazırlanmak için LFCE serisini de takip etmeniz önemle tavsiye edilir.

Bu yazıda size GRUB'u tanıtacağız ve bir önyükleyicinin neden gerekli olduğunu ve sisteme nasıl çok yönlülük kattığını açıklayacağız.

Bilgisayarınızın güç düğmesine bastığınız andan tam işlevsel bir sistem elde edene kadar Linux önyükleme işlemi şu yüksek düzey sırayı izler:

  1. 1. POST (Açılışta Otomatik Test) olarak bilinen bir işlem, bilgisayarınızın donanım bileşenleri üzerinde genel bir kontrol gerçekleştirir.
  2. 2. POST tamamlandığında kontrolü önyükleme yükleyicisine aktarır ve bu da Linux çekirdeğini belleğe yükler (initramfs ile birlikte) ) ve onu yürütür. Linux'ta en çok kullanılan önyükleme yükleyicisi GRand Unified Bootloader veya kısaca GRUB'dur.
  3. 3. Çekirdek, donanımı kontrol eder ve donanıma erişir ve ardından ilk işlemi (çoğunlukla "init" genel adıyla bilinir) çalıştırır ve bu da daha sonra sistemin önyüklemesini başlatarak tamamlar. Hizmetler.

Bu serinin Bölüm 7'sinde (“SysVinit, Upstart ve Systemd”) modern Linux dağıtımları tarafından kullanılan hizmet yönetimi sistemlerini ve araçlarını tanıttık. Devam etmeden önce bu makaleyi incelemek isteyebilirsiniz.

GRUB Önyükleyici Yükleyiciyle Tanışın

Modern sistemlerde iki ana GRUB sürümü (v1 bazen GRUB Legacy ve v2 olarak da adlandırılır) bulunabilir, ancak çoğu dağıtımlar en son sürümlerinde varsayılan olarak v2'yi kullanır. Bugün yalnızca Red Hat Enterprise Linux 6 ve türevleri hala v1'i kullanıyor.

Bu nedenle bu kılavuzda öncelikle v2'nin özelliklerine odaklanacağız.

GRUB sürümünden bağımsız olarak, bir önyükleyici kullanıcının şunları yapmasına olanak tanır:

  1. 1). kullanılacak farklı çekirdekleri belirterek sistemin davranış şeklini değiştirin,
  2. 2). önyükleme yapmak için alternatif işletim sistemleri arasından seçim yapın ve
  3. 3). Diğer şeylerin yanı sıra, önyükleme seçeneklerini değiştirmek için yapılandırma kıtaları ekleyin veya düzenleyin.

Bugün, GRUB, GNU projesi tarafından sürdürülmektedir ve web sitelerinde iyi bir şekilde belgelenmiştir. Bu kılavuzu incelerken GNU resmi belgelerini kullanmanız önerilir.

Sistem önyüklendiğinde ana konsolda aşağıdaki GRUB ekranıyla karşılaşırsınız. Başlangıçta, alternatif çekirdekler arasında seçim yapmanız istenir (varsayılan olarak sistem en son çekirdeği kullanarak önyüklenir) ve GRUB komut satırına girmenize izin verilir (c ile) veya önyükleme seçeneklerini düzenleyin (e tuşuna basarak).

Daha eski bir çekirdekle önyükleme yapmayı düşünmenizin nedenlerinden biri, eskiden düzgün çalışan ve yükseltme sonrasında "çalışmaya" başlayan bir donanım aygıtıdır (AskUbuntu'daki bu bağlantıya bakın) forumları örneğin).

GRUB v2 yapılandırması önyükleme sırasında /boot/grub/grub.cfg veya /boot/grub2/grub.cfg adresinden okunur, oysa < v1'de/boot/grub/grub.conf veya /boot/grub/menu.lst kullanılır. Bu dosyalar elle DÜZENLENMEZ, ancak /etc/default/grub içeriğine ve /etc/grub.d içinde bulunan dosyalara göre değiştirilir.

CentOS 7'de, sistem ilk kurulduğunda oluşturulan yapılandırma dosyası aşağıda verilmiştir:

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="vconsole.keymap=la-latin1 rd.lvm.lv=centos_centos7-2/swap crashkernel=auto  vconsole.font=latarcyrheb-sun16 rd.lvm.lv=centos_centos7-2/root rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

Çevrimiçi belgelere ek olarak, aşağıdaki bilgileri kullanarak GNU GRUB kılavuzunu da bulabilirsiniz:

info grub

Özellikle /etc/default/grub için mevcut seçeneklerle ilgileniyorsanız, doğrudan yapılandırma bölümünü çağırabilirsiniz:

info -f grub -n 'Simple configuration'

Yukarıdaki komutu kullanarak GRUB_TIMEOUT öğesinin, kullanıcı tarafından kesintiye uğramadığı sürece başlangıç ekranının belirdiği an ile sistemin otomatik önyüklemesinin başladığı an arasındaki süreyi ayarladığını göreceksiniz. Bu değişken -1 olarak ayarlandığında, kullanıcı bir seçim yapana kadar önyükleme başlatılmayacaktır.

Aynı makineye birden fazla işletim sistemi veya çekirdek kurulduğunda, GRUB_DEFAULT, varsayılan olarak önyükleme için GRUB başlangıç ekranında hangi işletim sistemi veya çekirdek girişinin seçilmesi gerektiğini belirten bir tamsayı değeri gerektirir. Girişlerin listesi yalnızca yukarıda gösterilen açılış ekranında değil, aynı zamanda aşağıdaki komut kullanılarak da görüntülenebilir:

CentOS ve openSUSE'de:

awk -F\' '$1=="menuentry " {print $2}' /boot/grub2/grub.cfg

Ubuntu'da:

awk -F\' '$1=="menuentry " {print $2}' /boot/grub/grub.cfg

Aşağıdaki resimde gösterilen örnekte, 3.10.0-123.el7.x86_64 (4. giriş) çekirdek sürümüyle önyükleme yapmak istiyorsak, GRUB_DEFAULT kodunu ayarlamamız gerekir. 3'e kadar (girişler dahili olarak sıfırla başlayarak numaralandırılır):

GRUB_DEFAULT=3

Özel ilgi çekici son GRUB yapılandırma değişkeni, seçenekleri çekirdeğe iletmek için kullanılan GRUB_CMDLINE_LINUX'dur. GRUB aracılığıyla çekirdeğe aktarılabilecek seçenekler Çekirdek Parametreleri dosyasında ve man 7 bootparam'da ayrıntılı bir şekilde belgelenmiştir.

CentOS 7 sunucumdaki mevcut seçenekler şunlardır:

GRUB_CMDLINE_LINUX="vconsole.keymap=la-latin1 rd.lvm.lv=centos_centos7-2/swap crashkernel=auto  vconsole.font=latarcyrheb-sun16 rd.lvm.lv=centos_centos7-2/root rhgb quiet"

Neden varsayılan çekirdek parametrelerini değiştirmek veya ekstra seçenekler aktarmak istiyorsunuz? Basit bir ifadeyle, çekirdeğe kendi başına belirleyemeyeceği belirli donanım parametrelerini söylemeniz veya algılayacağı değerleri geçersiz kılmanız gerektiği zamanlar olabilir.

Bu, çok uzun zaman önce, Slackware'in bir türevi olan Vector Linux'u 10 yıllık dizüstü bilgisayarımda denediğimde başıma geldi. Kurulumdan sonra video kartım için doğru ayarları tespit edemedi, bu yüzden çalışabilmesi için GRUB'dan geçen çekirdek seçeneklerini değiştirmek zorunda kaldım.

Başka bir örnek, bakım görevlerini gerçekleştirmek için sistemi tek kullanıcı moduna getirmeniz gerektiği durumdur. Bunu GRUB_CMDLINE_LINUX'a single kelimesini ekleyip yeniden başlatarak yapabilirsiniz:

GRUB_CMDLINE_LINUX="vconsole.keymap=la-latin1 rd.lvm.lv=centos_centos7-2/swap crashkernel=auto  vconsole.font=latarcyrheb-sun16 rd.lvm.lv=centos_centos7-2/root rhgb quiet single"

/etc/defalt/grub'u düzenledikten sonra update-grub (Ubuntu) veya grub2-mkconfig -o /boot/grub2/grub.dll'yi çalıştırmanız gerekecektir. Daha sonra grub.cfg'yi güncellemek için cfg (CentOS ve openSUSE) kullanın (aksi takdirde değişiklikler önyükleme sırasında kaybolacaktır).

Bu komut, grub.cfg'yi güncellemek için daha önce bahsedilen önyükleme yapılandırma dosyalarını işleyecektir. Bu yöntem, değişikliklerin kalıcı olmasını sağlarken, önyükleme sırasında GRUB'dan geçirilen seçenekler yalnızca geçerli oturum boyunca geçerli olacaktır.

Linux GRUB Sorunlarını Düzeltme

İkinci bir işletim sistemi kurarsanız veya GRUB yapılandırma dosyanız insan hatası nedeniyle bozulursa, sisteminizi tekrar ayağa kaldırmanın ve yeniden önyükleme yapabilmenin yolları vardır.

Başlangıç ekranında GRUB komut satırını almak için c tuşuna basın (varsayılan önyükleme seçeneklerini düzenlemek için e tuşuna da basabileceğinizi unutmayın) ve mevcut komut satırını getirmek için yardımı kullanın. GRUB istemindeki komutlar:

Kurulu cihazları ve dosya sistemlerini listeleyen ls'e odaklanacağız ve ne bulduğunu inceleyeceğiz. Aşağıdaki resimde 4 sabit sürücünün (hd0 ila hd3) olduğunu görebiliriz.

Yalnızca hd0 bölümlenmiş görünüyor (msdos1 ve msdos2 ile kanıtlandığı üzere, burada 1 ve 2) bölüm numaralarıdır ve msdos bölümleme şemasıdır).

Şimdi GRUB'u bulup bulamayacağımızı görmek için hd0 (msdos1) üzerindeki ilk bölümü inceleyelim. Bu yaklaşım, Linux'u başlatmamıza ve yapılandırma dosyasını onarmak veya gerekirse GRUB'u tamamen yeniden yüklemek için diğer üst düzey araçları kullanmamıza olanak tanıyacaktır:

ls (hd0,msdos1)/

Vurgulanan alanda görebileceğimiz gibi, bu bölümde grub2 dizinini bulduk:

GRUB'un (hd0,msdos1) konumunda olduğundan emin olduktan sonra GRUB'a yapılandırma dosyasını nerede bulacağını söyleyelim ve ardından ona menüsünü başlatmayı denemesi talimatını verelim:

set prefix=(hd0,msdos1)/grub2
set root=(hd0,msdos1)
insmod normal
normal

Daha sonra GRUB menüsünde bir giriş seçin ve onu kullanarak önyükleme yapmak için Enter'a basın. Sistem başlatıldıktan sonra grub2-install /dev/sdX komutunu verebilirsiniz (sdX'i GRUB'u kurmak istediğiniz cihazla değiştirin). Önyükleme bilgileri daha sonra güncellenecek ve ilgili tüm dosyalar geri yüklenecektir.

grub2-install /dev/sdX

Diğer daha karmaşık senaryolar, önerilen düzeltmelerle birlikte Ubuntu GRUB2 Sorun Giderme kılavuzunda belgelenmiştir. Burada açıklanan kavramlar diğer dağılımlar için de geçerlidir.

Özet

Bu makalede size GRUB'u tanıttık, belgeleri hem çevrimiçi hem de çevrimdışı olarak nerede bulabileceğinizi belirttik ve önyükleyiciyle ilgili bir sorun nedeniyle bir sistemin düzgün şekilde önyüklemeyi durdurduğu bir senaryoya nasıl yaklaşacağınızı açıkladık.

Neyse ki GRUB, en iyi şekilde belgelendirilmiş araçlardan biridir ve bu makalede paylaştığımız kaynakları kullanarak yüklü belgelerde veya çevrimiçi olarak kolayca yardım bulabilirsiniz.

Sorularınız veya yorumlarınız var mı? Aşağıdaki yorum formunu kullanarak bize bildirmekten çekinmeyin. Sizden haber almak için sabırsızlanıyoruz!