GRUB (Türkçe)

From ArchWiki
Çeviri Durumu: Bu makale, GRUB (Türkçe) makalesinin çevirisidir. Son çeviri tarihi (yıl-ay-gün şeklinde): 2024-08-27. Eğer makalenin İngilizce sürümünde değişiklik yapılmış ise çevirinin senkronize edilmesine yardımcı olabilirsiniz. Çevirmenliğe dair bilgi edinmek için Telegram grubumuzu ziyaret edebilirsiniz. Çevrilmiş tüm makelelere buradan erişebilirsiniz.
Not: Söz konusu çeviri henüz taslak aşamasındadır. Bu nedenle ana dildeki gönderiyi dikkate almanızı tavsiye ederiz.

GRUB (Büyük Birleşik Önyükleyici) bir açılış önyükleyicisi'dir. Mevcut GRUB aynı zamanda GRUB 2' olarak da adlandırılmaktadır. Orijinal GRUB veya GRUB Legacy, 0.9x sürümlerine karşılık gelir. Bu sayfa sadece GRUB 2'yi açıklamaktadır.

Not: Makale boyunca esp EFI sistem bölümü'ne veya diğer adıyla ESP'nin bağlama noktasına işaret etmektedir.

Desteklenen dosya sistemleri

GRUB, özellikle FAT32, ext4, Btrfs veya XFS gibi çoklu dosya sistemleri için kendi desteğini paketler. Uyarılar için #Desteklenmeyen dosya sistemleri[broken link: invalid section] bölümüne bakınız.

Uyarı: Dosya sistemleri henüz GRUB tarafından desteklenmeyen yeni özelliklere sahip olabilir. Bu da uyumsuz özellikler devre dışı bırakılmadıkça onları /boot bölümü için uygunsuz hale getirebilir. Bu durum genellikle FAT32 gibi evrensel olarak desteklenen bir dosya sistemi ile ayrı bir önyükleme bölümü kullanılarak önlenebilir.

UEFI sistemler

Not:
  • UEFI, GUID Bölüm tabloları ve Arch'da önyükleme süreci sayfalarının okunması ve anlaşılması tavsiye edilir.
  • UEFI kullanmak için kurulum yaparken, yükleme medyasını UEFI modunda olması önemlidir. Aksi takdirde efibootmgr GRUB'a UEFI önyükleme girdisini ekleyemez. Kurulum yedek önyükleme yolu'na yapılırken NVRAM'e dokunmadığı için BIOS modunda bile çalışacaktır.
  • UEFI kullanarak bir diskten önyükleme yapmak için bir EFI sistem bölümü gereklidir. Zaten bir bölümünüz olup olmadığını öğrenmek için Mevcut bir bölüm olup olmadığını kontrol edin seçeneğini izleyin, aksi takdirde sizin oluşturmanız gerekir.
  • Tüm bu makale insmod aracı ile ek GRUB2 modülleri eklemenin mümkün olduğunu varsaymaktadır. #Shim-kilidi bölümünde tartışıldığı gibi, Secure Boot'un etkin olduğu UEFI sistemlerinde durum bu şekilde değildir. Standart GRUB EFI dosyası grubx64.efi içerisinde bulunmayan herhangi bir ek GRUB modülünü Güvenli Önyükleme sisteminde kullanmak istiyorsanız, GRUB EFI grubx64.efi'yi grub-mkstandalone aracı ile yeniden oluşturmanız veya ek GRUB modülleri için dahili grub-install aracını kullanarak GRUB'u yeniden yüklemeniz gerekir.

Kurulum

Not:
  • UEFI yazılımları, üreticilere göre tutarlı bir şekilde uygulanmamış olabilir. Aşağıda açıklanan prosedür geniş bir UEFI sistemi yelpazesinde çalışması için tasarlanmıştır; ancak bu yöntemi uygulamanıza rağmen sorun yaşayanlar, ayrıntılı bilgileri ve mümkünse bulunan geçici çözümleri paylaşmaları teşvik edilir. Böyle durumlar için bir EFI örnekleri makalesi sağlanmıştır.
  • Bu bölüm, GRUB'u x64 (64-bit) UEFI için kurduğunuzu varsayar. IA32 (32-bit) UEFI (32-bit CPU'larla karıştırılmamalıdır) için uygun yerlerde x86_64-efi yerine i386-efi kullanın. UEFI'nizin bit'ini öğrenmek için Aygıt yazılımı bit'inin kontrolü talimatlarını takip edin.

İlk olarak, grub ve efibootmgr paketlerini yükleyin: GRUB önyükleyicidir, efibootmgr ise GRUB kurulum betiği tarafından NVRAM'e önyükleme girişlerini yazmak için kullanılır.

Daha sonra, GRUB'u diskinize kurmak için aşağıdaki adımları takip edin:

  1. EFI sistem bölümünü bağlayın ve bu bölümün geri kalanında esp ile bağlama noktasını değiştirin.
  2. Bir önyükleyici tanımlayıcı seçin, burada GRUB olarak adlandırılmıştır. Bu isimde bir dizin esp/EFI/ içinde oluşturulacak ve EFI ikili dosyasını depolayacaktır ve bu isim UEFI önyükleme menüsünde GRUB önyükleme girişini tanımlamak için görünecektir.
  3. GRUB EFI uygulamasını grubx64.efi esp/EFI/GRUB/ içine kurmak ve modüllerini /boot/grub/x86_64-efi/ içine kurmak için aşağıdaki komutu çalıştırın.
Not:
  • Paketleri kurduğunuzdan ve grub-install komutunu GRUB'un önyükleyici olarak kurulacağı sistemden çalıştırdığınızdan emin olun. Yani, canlı kurulum ortamından önyükleme yapıyorsanız, grub-install komutunu çalıştırırken chroot içinde olmanız gerekir. Bir nedenle grub-install'i kurulu sistem dışından çalıştırmanız gerekirse, --boot-directory= seçeneğine bağlı /boot dizininin yolunu ekleyin, örneğin --boot-directory=/mnt/boot.
  • Bazı anakartlar, bootloader-id içinde boşluk olan değerleri işleyemez.
# grub-install --target=x86_64-efi --efi-directory=esp --bootloader-id=GRUB

Yukarıdaki kurulum tamamlandığında, ana GRUB dizini /boot/grub/ içinde bulunur. Alternatif bir konum belirtme hakkında bilgi için Alternatif yükleme yöntemi#ipuçları ve püf noktaları kısmını okuyun. Ayrıca grub-install'in firmware boot yöneticisinde bir giriş oluşturmayı da denediğini unutmayın. Yukarıdaki örnekte GRUB olarak adlandırılmıştır – eğer önyükleme girişleriniz doluysa bu işlem başarısız olacaktır; gereksiz girişleri kaldırmak için efibootmgr kullanın.

Konfigürasyonu tamamladıktan sonra Ana yapılandırma dosyasını oluşturun adımını atlamayın.

İpucu: --removable seçeneğini kullanırsanız, GRUB esp/EFI/BOOT/BOOTX64.EFI (veya esp/EFI/BOOT/BOOTIA32.EFI i386-efi hedefi için) içine kurulacaktır ve EFI değişkenleri sıfırlanırsa veya diski başka bir bilgisayara taşırsa, diskinizi önyükleme yapma yeteneğiniz olacaktır. Genellikle bunu BIOS kullanarak yaptığınız gibi, diski kendisini seçerek yapabilirsiniz. Windows ile çift önyükleme yapıyorsanız, Windows genellikle oraya bir EFI yürütülebilir dosya koyar; ancak bunun tek amacı Windows için UEFI önyükleme girişini yeniden oluşturmaktır. Eğer GRUB'u bir Mac'e kuruyorsanız, bu seçeneği kullanmanız gerekecektir. Bazı masaüstü anakartlar sadece bu konumda bir EFI yürütülebilir dosya arar, bu nedenle bu seçenek zorunlu olabilir, özellikle MSI anakartları ile. UEFI güncellemesi gerçekleştirirseniz, bu güncelleme mevcut UEFI önyükleme girişlerini silebilir. Bu nedenle, "taşınabilir" önyükleme girişini etkinleştirmek olası bir geri dönüş stratejisidir.
Not:
  • --efi-directory ve --bootloader-id GRUB UEFI'ye özgüdür, --efi-directory --root-directory'yi, artık kullanılmayan bir seçeneği değiştirir.
  • grub-install komutunda bir device_path seçeneğinin (örneğin: /dev/sda) olmamasını fark edebilirsiniz. Aslında, sağlanan herhangi bir device_path GRUB UEFI kurulum betiği tarafından yoksayılır. Gerçekten de, UEFI önyükleyicileri bir MBR önyükleme kodu veya bölüm önyükleme sektörü kullanmaz.

Sorun yaşarsanız UEFI sorun giderme kısmına bakın. Ayrıca GRUB/Tips and tricks#UEFI further reading bölümüne göz atın.

Güvenli Önyükleme Desteği

GRUB, CA anahtarları veya shim kullanarak güvenli önyüklemeyi tamamen destekler, ancak hangi yöntemi kullanacağınıza bağlı olarak kurulum komutu farklıdır.

Uyarı:
  • Güvenli Önyükleme'yi yanlış yapılandırmak sisteminizi önyüklenemez hale getirebilir. Güvenli önyüklemeyi etkinleştirdikten sonra herhangi bir nedenle önyükleme yapamazsanız, firmware'de güvenli önyüklemeyi devre dışı bırakmalı ve sistemi yeniden başlatmalısınız.
  • Önyükleyicinizde gereksiz modüller yüklemek bir güvenlik riski oluşturabilir, bu komutları yalnızca ihtiyacınız varsa kullanın.

CA Anahtarları

CA Anahtarlarını kullanmak için komut şu şekildedir:

# grub-install --target=x86_64-efi --efi-directory=esp --bootloader-id=GRUB --modules="tpm" --disable-shim-lock

Shim-lock

Not: Bu bölümü takip etmeden önce Güvenli Önyükleme#shim kısmındaki talimatları izlediğinizden ve sbsigntools'in anahtarları almak için hazır olduğundan emin olun.

Shim-lock kullanırken, GRUB'un güvenli önyükleme modunda başarılı bir şekilde önyüklenebilmesi için EFI ikili dosyasının vmlinuz ve initramfs görüntülerini içeren dosya sistemini okumak için gerekli tüm modülleri içermesi gerekir.

GRUB sürüm 2.06.r261.g2f4430cc0'dan itibaren, güvenli önyükleme modunda insmod ile modül yüklemek artık izin verilmemektedir, çünkü bu, rastgele kod eklememe beklentisini ihlal eder. GRUB modülleri EFI ikili dosyasına gömülmemişse ve GRUB bunları eklemeye/insmod'a çalışırsa, GRUB şu mesajla önyükleme yapamayacaktır:

hata: güvenli önyükleme politikası tarafından yasaklandı

Ubuntu, resmi derleme betiğine göre, imzalı GRUB EFI ikili dosyasına grubx64.efi aşağıdaki GRUB modüllerini gömer:


  • temel modüller, bir CD'den veya basit bir bölümlendirilmiş diskten önyükleme için gerekli olanlar: all_video, boot, btrfs, cat, chain, configfile, echo, efifwsetup, efinet, ext2, fat, font, gettext, gfxmenu, gfxterm, gfxterm_background, gzio, halt, help, hfsplus, iso9660, jpeg, keystatus, loadenv, loopback, linux, ls, lsefi, lsefimmap, lsefisystab, lssal, memdisk, minicmd, normal, ntfs, part_apple, part_msdos, part_gpt, password_pbkdf2, png, probe, reboot, regexp, search, search_fs_uuid, search_fs_file, search_label, sleep, smbios, squash4, test, true, video, xfs, zfs, zfscrypt, zfsinfo
  • platforma özgü modüller, x86_64-efi mimarisi için, örneğin:
    • play: önyükleme sırasında sesleri oynatmak için
    • cpuid: CPU'yu önyükleme sırasında okumak için
    • tpm: Ölçülen Önyükleme / Güvenilir Platform Modülleri desteği için
  • gelişmiş modüller, şu modüllerden oluşur:
    • cryptodisk: düz mod şifrelenmiş disklerden önyükleme yapmak için
    • gcry_algorithm: belirli hash ve şifreleme algoritmalarını desteklemek için
    • luks: LUKS-şifrelenmiş disklerden önyükleme yapmak için
    • lvm: LVM mantıksal hacim disklerinden önyükleme yapmak için
    • mdraid09, mdraid1x, raid5rec, raid6rec: RAID sanal disklerden önyükleme yapmak için

GRUB modüllerinizin listesini GRUB_MODULES olarak adlandırdığımız bir shell değişkeni biçiminde oluşturmalısınız. En güncel Ubuntu betiğini kullanarak temel alabilir ve sisteminizde gereksiz olan modülleri çıkarabilirsiniz. Modülleri atlamak, önyükleme sürecini nispeten hızlandırır ve ESP bölümünde bazı alan kazandırır.

Ayrıca EFI ikili dosyasına, GRUB'un UEFI shim yükleyicisinden başlatıldığında güvenliği artırmak için bir Secure Boot Advanced Targeting (SBAT) dosyası/bölümü eklemeniz gerekir. Bu SBAT dosyası/bölümü, GRUB ikili dosyasının (sürüm, bakıcı, geliştirici, yukarı akış URL'si) meta verilerini içerir ve shim'in, güvenlik açıkları olan belirli GRUB sürümlerini yüklemeyi engellemesini kolaylaştırır [1][2], shim'in UEFI shim önyükleyici güvenli önyükleme yaşam döngüsü iyileştirmeleri belgesinde açıklandığı gibi.

İlk aşama UEFI önyükleyici shim, grubx64.efi'yi başlatmayı başarısız kılacaktır eğer grubx64.efi'den SBAT bölümü eksikse!

GRUB yüklendiyse, örnek bir SBAT .csv dosyası /usr/share/grub/sbat.csv altında sağlanır.

GRUB'u sağlanan /usr/share/grub/sbat.csv dosyası ve gereken tüm GRUB_MODULES ile yeniden yükleyin ve imzalayın:

# grub-install --target=x86_64-efi --efi-directory=esp --modules=${GRUB_MODULES} --sbat /usr/share/grub/sbat.csv
# sbsign --key MOK.key --cert MOK.crt --output esp/EFI/GRUB/grubx64.efi esp/EFI/GRUB/grubx64.efi
# cp esp/EFI/GRUB/grubx64.efi esp/EFI/BOOT/grubx64.efi

Yeniden başlatın, MokManager içinde anahtarı seçin ve Güvenli Önyükleme çalışmalıdır.

Güvenli Önyükleme Kullanımı

Kurulumdan sonra Secure Boot#Implementing Secure Boot kısmında güvenli önyüklemeyi etkinleştirme talimatlarını takip edin.

Eğer CA Anahtarları yöntemini kullanıyorsanız, anahtar yönetimi, kaydını yapma ve dosya imzalama işlemleri sbctl kullanılarak otomatikleştirilebilir, detaylar için Secure Boot#Assisted process with sbctl kısmına bakın.

BIOS sistemleri

GUID Bölüm Tablosu (GPT) özgü talimatlar

Bir BIOS/GPT yapılandırmasında, bir BIOS önyükleme bölümü gereklidir. GRUB, core.img dosyasını bu bölüme gömer.

Not:
  • Bu yöntemi denemeden önce, tüm sistemlerin bu bölümleme şemasını desteklemeyebileceğini unutmayın. Daha fazla bilgi için Partitioning#GUID Partition Table kısmına bakın.
  • BIOS/GPT yapılandırmasında GRUB'un yalnızca BIOS önyükleme bölümüne ihtiyacı vardır. BIOS/MBR yapılandırmasında, GRUB core.img'yi MBR sonrası boşluk kullanarak gömer. Ancak GPT'de, ilk bölümden önce garanti edilmiş kullanılmayan alan bulunmamaktadır.
  • UEFI sistemleri için bu ekstra bölüme gerek yoktur, çünkü bu durumda önyükleme sektörlerinin gömülmesi gerçekleşmez. Ancak, UEFI sistemleri yine de bir EFI sistem bölümü gerektirir.

Bir mebibyte bölümü (+1M fdisk veya gdisk ile) dosya sistemi olmadan ve bölüm türü GUID 21686148-6449-6E6F-744E-656564454649 ile oluşturun.

  • fdisk için bölüm türü BIOS boot'u seçin.
  • gdisk için bölüm türü kodu ef02'yi seçin.
  • parted için bölümde bios_grub bayrağını ayarlayın/etkinleştirin.

Bu bölüm herhangi bir sıra konumunda olabilir ancak diskin ilk 2 TiB'inde olmalıdır. Bu bölüm, GRUB kurulumu öncesinde oluşturulmalıdır. Bölüm hazır olduğunda, aşağıdaki talimatlara göre önyükleyiciyi kurun.

İlk bölümden önceki boşluk BIOS önyükleme bölümü olarak da kullanılabilir, ancak GPT hizalama spesifikasyonunun dışında olacaktır. Bölüm düzenli olarak erişilmeyeceğinden performans sorunları dikkate alınmayabilir, ancak bazı disk yardımcı programları uyarı verebilir. fdisk veya gdisk içinde, sektörden 34 başlayarak ve 2047'ye kadar genişleyen bir yeni bölüm oluşturun ve türü ayarlayın. Görülebilir bölümlerin tabanda başlaması için bu bölümü en sona eklemeyi düşünebilirsiniz.

Master Boot Record (MBR) özgü talimatlar

Çoğu MBR bölümlendirilmiş sistemlerde, 512 baytlık MBR bölgesinin ardından ve ilk bölümün başlangıcından önceki boşluk genellikle 31 KiB'dir, eğer DOS uyumlu silindir hizalama sorunları bölüm tablosunda çözülmüşse. Ancak, GRUB'un core.img'sini gömmek için yaklaşık 1 ila 2 MiB'lik bir boşluk önerilir (FS#24103). GRUB'un core.img'ini gömmek için bu alanı sağlamak ve diğer 512-bayt sektör sorunlarını karşılamak için 1 MiB bölüm hizalaması destekleyen bir bölümleme aracı kullanmanız tavsiye edilir.

Kurulum

grub paketini Install edin. (Zaten kurulu ise grub-legacyAUR'yi değiştirecektir.) Ardından:

# grub-install --target=i386-pc /dev/sdX

burada i386-pc kasıtlı olarak kullanılır, gerçek mimarinizden bağımsız olarak ve /dev/sdX GRUB'un kurulacağı disk (bölüm değil) olmalıdır. Örneğin /dev/sda veya /dev/nvme0n1, veya /dev/mmcblk0. Blok cihaz adlandırma şeması hakkında daha fazla bilgi için Device file (Türkçe)#Blok aygıt isimleri kısmına bakın.

Şimdi ana yapılandırma dosyasını oluşturmanız gerekiyor.

Eğer /boot için LVM kullanıyorsanız, GRUB'u birden fazla fiziksel diske kurabilirsiniz.

İpucu: GRUB'u bir USB bellek gibi başka bir cihaza kurmak gibi diğer yöntemler için GRUB/Tips and tricks#Alternative installation methods kısmına bakın.

grub-install(8) ve GRUB Kılavuzu üzerinde grub-install komutu hakkında daha fazla detay için bakın.

Yapılandırma

Kurulu bir sistemde, GRUB her önyüklemede /boot/grub/grub.cfg yapılandırma dosyasını yükler. #Üretilmiş grub.cfg kısmını bir araç kullanarak veya #Özel grub.cfg kısmını manuel olarak oluşturmak için takip edebilirsiniz.

Üretilmiş grub.cfg

Bu bölüm yalnızca /etc/default/grub yapılandırma dosyasını düzenlemeyi kapsar. Daha fazla bilgi için GRUB/Tips and tricks kısmına bakın.

Not: Her zaman ana yapılandırma dosyasını değiştirdikten sonra /etc/default/grub ve/veya /etc/grub.d/ dosyalarındaki değişikliklerden sonra tekrar oluşturmayı unutmayın.
Uyarı: Bir yeni GRUB sürümü yapılandırma dosyasının sözdizimini değiştirirse, yapılandırmanın uyuşmazlığı sisteminizin önyüklenememesine neden olabilir: uyumsuz yapılandırma mevcut GRUB ikili dosyasının tanımadığı bir işlev kullanabilir, bu da beklenmeyen davranışlara yol açabilir.

Ana yapılandırma dosyasını oluştur

Kurulumdan sonra, ana yapılandırma dosyası /boot/grub/grub.cfg oluşturulmalıdır. Oluşturma süreci, /etc/default/grub ve /etc/grub.d/ dosyalarındaki çeşitli seçeneklerden etkilenebilir. /etc/default/grub içindeki seçeneklerin listesi ve her birinin kısa açıklaması için GNU'nun dokümantasyonuna bakın.

Ek bir yapılandırma yapmadıysanız, otomatik oluşturma işlemi, yapılandırma dosyası için sistemin kök dosya sistemini belirleyecektir. Bunun başarılı olması için sistemin ya önyüklenmiş ya da chroot edilmiş olması önemlidir.

Not:

grub-mkconfig aracını kullanarak /boot/grub/grub.cfg dosyasını oluşturun:

# grub-mkconfig -o /boot/grub/grub.cfg

Varsayılan olarak, oluşturma betikleri tüm kurulu Arch Linux kernel'leri için menü girişlerini otomatik olarak ekler.

İpucu:
  • Bir kernel kurduktan veya kaldırdıktan sonra, yukarıdaki grub-mkconfig komutunu tekrar çalıştırmanız yeterlidir.
  • Birden fazla GRUB girişini yönetme konusunda ipuçları için, örneğin hem linux hem de linux-lts çekirdeklerini kullanıyorsanız, GRUB/Tips and tricks#Multiple entries bölümüne bakın.

Diğer kurulu işletim sistemleri için otomatik olarak giriş eklemek için, #Diğer işletim sistemlerini algılama bölümüne bakın.

Ekstra özel menü girişleri eklemek için /etc/grub.d/40_custom dosyasını düzenleyebilir ve /boot/grub/grub.cfg dosyasını yeniden oluşturabilirsiniz. Ya da /boot/grub/custom.cfg dosyasını oluşturup buraya ekleyebilirsiniz. /boot/grub/custom.cfg dosyasındaki değişiklikler grub-mkconfig'i yeniden çalıştırmayı gerektirmez, çünkü /etc/grub.d/41_custom gerekli source ifadesini oluşturulan konfigürasyon dosyasına ekler.

İpucu: /etc/grub.d/40_custom dosyası, /etc/grub.d/nn_custom oluşturmak için bir şablon olarak kullanılabilir, burada nn önceliği tanımlar ve betiğin yürütme sırasını gösterir. Betiklerin yürütme sırası, GRUB önyükleme menüsündeki yerini belirler. nn değerinin 06'dan büyük olması, gerekli betiklerin önce çalıştırılmasını sağlar.

Özel menü girişi örnekleri için #Önyükleme menüsü girişi örnekleri kısmına bakın.

Diğer işletim sistemlerini algılama

grub-mkconfig'in diğer kurulu sistemleri aramasını ve menüye otomatik olarak eklemesini sağlamak için, os-prober paketini install edin ve diğer sistemlerin önyüklediği bölümleri mount edin. Ardından grub-mkconfig komutunu yeniden çalıştırın. Aşağıdaki çıktıyı alırsanız: Warning: os-prober will not be executed to detect other bootable partitions, /etc/default/grub dosyasını düzenleyin ve ekleyin/yorum satırı haline getirin:

GRUB_DISABLE_OS_PROBER=false

Sonra tekrar deneyin.

Not:
  • Tam bağlama noktası önemli değildir, os-prober mtab'i okuyarak önyüklenebilir girişleri aramak için yerleri tanımlar.
  • Diğer işletim sistemlerini her zaman dahil etmek için grub-mkconfig'i her çalıştırdığınızda bölümleri bağlamayı unutmayın.
  • os-prober bir chroot içinde çalışırken düzgün çalışmayabilir. Bu durumu yaşarsanız, sistemi yeniden başlattıktan sonra tekrar deneyin.
İpucu: GRUB'un son seçilen önyükleme girişini hatırlamasını da isteyebilirsiniz, GRUB/Tips and tricks#Recall previous entry kısmına bakın.
Windows

UEFI modunda kurulu Windows için, Windows Boot Manager'ı (bootmgfw.efi) içeren EFI sistem bölümü'nün bağlı olduğundan emin olun. Bunu tespit etmek ve bir giriş oluşturmak için os-prober'i root olarak çalıştırın.

BIOS modunda kurulu Windows için, Windows system partition'ını bağlayın (dosya sistemi etiketi System Reserved veya SYSTEM olmalıdır). Bunu tespit etmek ve bir giriş oluşturmak için os-prober'i root olarak çalıştırın.

Not: BIOS modunda kurulu Windows için:
  • NTFS bölümleri varsayılan Linux sürücüler ile bağlandığında her zaman algılanmayabilir. Eğer GRUB bunu algılamıyorsa, NTFS-3G'yi yüklemeyi ve tekrar bağlamayı deneyin.

This article or section is out of date.

Reason: Windows 7'den itibaren bootmgr sistem bölümüne yerleştirilir ve bu bölüm şifrelenmemiştir. (Discuss in Talk:GRUB (Türkçe))
  • Şifrelenmiş Windows bölümlerinin bağlanmadan önce şifrelerinin çözülmesi gerekebilir. BitLocker için, bu cryptsetup veya dislockerAUR ile yapılabilir. Bu, os-prober'in doğru girişi eklemesi için yeterli olmalıdır.

Ek Argümanlar

Linux görüntüsüne özel ek argümanlar geçirmek için, GRUB_CMDLINE_LINUX ve GRUB_CMDLINE_LINUX_DEFAULT değişkenlerini /etc/default/grub dosyasında ayarlayabilirsiniz. İkisi bir araya getirilir ve düzenli önyükleme girişleri oluşturulurken çekirdeğe iletilir. Recovery önyükleme girişi için, yalnızca GRUB_CMDLINE_LINUX kullanılır.

Her ikisini de kullanmak zorunlu değildir, ancak faydalı olabilir. Örneğin, GRUB_CMDLINE_LINUX_DEFAULT="resume=UUID=swap-bölümünün-uuid quiet" şeklinde kullanabilirsiniz, burada swap-bölümünün-uuid swap bölümünüzün UUID'sidir ve uykudan sonra devam etmesini sağlar. Bu, geri yükleme önyükleme girişi oluşturur, ancak devam etmeyi ve quiet'in çekirdek mesajlarını bastırmasını içermez. Diğer (düzenli) menü girişleri ise bu seçenekleri içerebilir.

Varsayılan olarak, grub-mkconfig konfigürasyon için kök dosya sisteminin UUID'sini belirler. Bunu devre dışı bırakmak için, GRUB_DISABLE_LINUX_UUID=true satırını yorum satırından çıkarın.

GRUB geri yükleme girişini oluşturmak için GRUB_DISABLE_RECOVERY'in true olarak ayarlanmadığından emin olun /etc/default/grub dosyasında.

Daha fazla bilgi için Kernel parameters kısmına bakın.

Üst Düzey Menü Girişini Ayarlama

Varsayılan olarak, grub-mkconfig dahil edilen çekirdekleri sort -V kullanarak sıralar ve bu listede ilk çekirdeği üst düzey giriş olarak kullanır. Bu, örneğin, /boot/vmlinuz-linux-lts'nin /boot/vmlinuz-linux'ten önce sıralanmış olması durumunda, hem linux-lts hem de linux kuruluysa, LTS çekirdeğinin üst düzey menü girişi olacağı anlamına gelir ve bu istenmeyebilir. Bunu, GRUB_TOP_LEVEL=path_to_kernel" ile /etc/default/grub dosyasında belirterek geçersiz kılabilirsiniz. Örneğin, düzenli çekirdeğin üst düzey menü girişi olmasını istiyorsanız, GRUB_TOP_LEVEL="/boot/vmlinuz-linux" kullanabilirsiniz.

LVM

Uyarı: GRUB ince ayrılmış mantıksal hacimleri desteklemez.

Eğer /boot veya / kök bölümü için LVM kullanıyorsanız, lvm modülünün önceden yüklenmiş olduğundan emin olun:

/etc/default/grub
GRUB_PRELOAD_MODULES="... lvm"

RAID

GRUB, RAID hacimlerinin yönetimini kolaylaştırır. Hacmi yerel olarak adresleyebilmeniz için mdraid09 veya mdraid1x GRUB modüllerini yüklemeniz gerekir:

/etc/default/grub
GRUB_PRELOAD_MODULES="... mdraid09 mdraid1x"

Örneğin, /dev/md0 şu şekilde olur:

set root=(md/0)

bir bölümlenmiş RAID hacmi (örneğin /dev/md0p1) ise şu şekilde olur:

set root=(md/0,1)

RAID1 olarak /boot bölümünü kullanıyorsanız (veya /boot'ün RAID1 kök bölümünde bulunduğu bir durumda), BIOS sistemlerinde, grub-install komutunu her iki diskte de çalıştırın, örneğin:

# grub-install --target=i386-pc --debug /dev/sda
# grub-install --target=i386-pc --debug /dev/sdb

Burada RAID 1 dizisi /boot/dev/sda ve /dev/sdb üzerinde barındırmaktadır.

Not: GRUB, Btrfs RAID 0/1/10'dan önyükleme yapmayı destekler, ancak RAID 5/6'yı desteklemez. RAID 5/6 için mdadm kullanabilirsiniz, bu GRUB tarafından desteklenir.

Şifreli /boot

GRUB, şifreli /boot ile önyükleme yapma için özel bir destek sağlar. Bu, bir LUKS blok aygıtını açarak yapılandırmasını okumak ve herhangi bir initramfs ve kernel'i yüklemek için yapılır. Bu seçenek, şifrelenmemiş boot bölümü sorununu çözmeyi amaçlar.

İpucu: /boot ayrı bir bölümde tutulmak zorunda değildir; aynı zamanda sistemin kök / dizin ağacının altında da kalabilir.
Uyarı: GRUB 2.12rc1, LUKS2 için sınırlı destek sunar. Ayrıntılar için aşağıdaki #LUKS2 bölümüne bakın.

Bu özelliği etkinleştirmek için, /boot'ın bulunduğu bölümü normal şekilde LUKS ile şifreleyin. Ardından /etc/default/grub dosyasına aşağıdaki seçeneği ekleyin:

/etc/default/grub
GRUB_ENABLE_CRYPTODISK=y

Bu seçenek, grub core.img'yi oluşturmak için grub-install tarafından kullanılır.

Bu seçeneği değiştirdikten veya bölümü şifreledikten sonra GRUB'u yüklediğinizden emin olun.

Ek bir değişiklik yapmadan, GRUB'un /boot bağlama noktasını erken önyüklemede açmak için iki kez şifre girilmesini istersiniz; ilki GRUB için, ikincisi ise initramfs tarafından kök dosya sisteminin kendisini açmak içindir. Bunu önlemek için bir anahtar dosyası kullanabilirsiniz.

Uyarı:
  • Ana yapılandırma dosyasını üretmek istiyorsanız, /boot'ın bağlandığından emin olun.
  • /boot bağlama noktasını içeren sistem güncellemelerini gerçekleştirmek için, güncelleme yapmadan önce şifreli /boot'ın açıldığından ve bağlandığından emin olun. Ayrı bir /boot bölümü ile bu, crypttab kullanılarak ve bir anahtar dosyası kullanılarak önyükleme sırasında otomatik olarak yapılabilir.
Not:
  • Eğer özel bir tuş haritası kullanıyorsanız, varsayılan GRUB kurulumu bunu bilmez. Bu, LUKS blok aygıtını açmak için şifreyi nasıl gireceğinizle ilgilidir. GRUB/Tips and tricks#Manual configuration of core image for early boot'e bakın.
  • Şifreyi girme isteminin görüntülenmesiyle ilgili sorunlar yaşarsanız (cryptouuid, cryptodisk veya "cihaz bulunamadı" hataları), GRUB'u yeniden yüklemeyi ve --modules="part_gpt part_msdos" seçeneğini grub-install komutunuza eklemeyi deneyin.
İpucu: Güncellemeler sırasında ilgili dosyalara erişilmesi gerektiğinde /boot'ınızı otomatik olarak bağlamak için pacman kancaları kullanabilirsiniz.
LUKS2

LUKS desteği ile önyüklenebilir bir GRUB görüntüsü oluşturmak için grub-install'i #Kurulum bölümünde açıklandığı şekilde kullanın. Şu uyarılara dikkat edin:

  • İlk LUKS2 desteği GRUB 2.06'ya eklendi, ancak GRUB 2.12rc1'de sadece kısmi sınırlamalarla ele alındı. Daha fazla bilgi için GRUB hata #55093'a bakın.
  • GRUB 2.12rc1'den itibaren, grub-install LUKS2'yi açmak için bir çekirdek görüntüsü oluşturabilir. Ancak, yalnızca PBKDF2'yi destekler, Argon2'yi değil.
  • Argon2id (cryptsetup varsayılanı) ve Argon2i PBKDF'ler desteklenmemektedir (GRUB hata #59409), yalnızca PBKDF2 desteklenir.
İpucu: grub-improved-luks2-gitAUR kullanabilirsiniz; bu, LUKS2 ve Argon desteği için yamanmış bir pakettir. Paketin Argon desteği bir UEFI sistemi gerektirir. [3]
Not: GRUB 2.12rc1'den önce, grub-mkimage kullanarak özel bir GRUB yapılandırma dosyası ile bir EFI ikili dosyası manuel olarak oluşturmanız gerekiyordu. Örneğin, /boot/grub/grub-pre.cfg, cryptomount, insmod normal ve normal çağrılarıyla. Bu artık gerekli değildir, grub-install yeterlidir. Ancak, 2.06'dan güncelledikten sonra grub-mkconfig -o /boot/grub/grub.cfg komutunu en az bir kez çalıştırmanız gerekebilir.

Bir geçersiz şifre girerseniz ve GRUB kurtarma kabuğuna düşerseniz, cryptomount -a komutunu kullanarak tüm (umarım yalnızca bir) şifreli bölümü bağlamayı veya cryptomount -u $crypto_uuid komutunu kullanarak belirli bir bölümü bağlamayı deneyin. Ardından insmod normal ve normal komutlarını kullanmaya devam edin.

Doğru şifre girerseniz ancak hemen Invalid passphrase hatası alırsanız, doğru kriptografik modüllerin belirtildiğinden emin olun. cryptsetup luksDump /dev/nvme0n1p2 komutunu kullanın ve hash fonksiyonunun (SHA-256, SHA-512) yüklü modüllerle (gcry_sha256, gcry_sha512) eşleşip eşleşmediğini ve PBKDF algoritmasının pbkdf2 olup olmadığını kontrol edin. Hash ve PBKDF algoritmaları mevcut anahtarlar için cryptsetup luksConvertKey --hash sha256 --pbkdf pbkdf2 /dev/nvme0n1p2 komutuyla değiştirilebilir. Normal koşullarda, şifrenin işlenmesi birkaç saniye sürecektir.

Özel grub.cfg

Bu bölüm, grub-mkconfige güvenmeden /boot/grub/grub.cfg'de GRUB önyükleme girişlerinin manuel olarak oluşturulmasını açıklar.

Temel bir GRUB yapılandırma dosyası şu seçenekleri kullanır:

  • (hdX,Y) disk Xteki bölüm Yyi belirtir, bölüm numaraları 1'den başlar, disk numaraları 0'dan başlar
  • set default=N zaman aşımından sonra kullanıcı eylemi için seçilen varsayılan önyükleme girişini belirtir
  • set timeout=M varsayılan önyüklemeyi başlatmadan önce kullanıcı seçiminde beklenen M süresini belirtir
  • menuentry "title" {entry options} title başlığına sahip bir önyükleme girişini belirtir
  • set root=(hdX,Y) önyükleme bölümünü ayarlar, çekirdek ve GRUB modüllerinin saklandığı yer (boot ayrı bir bölüm olmak zorunda değildir ve basitçe "kök" bölümünün altında bir dizin olabilir (/))

LoaderDevicePartUUID

GRUB'un systemd-gpt-auto-generator(8) tarafından GPT bölüm otomatik montajı için gerekli olan LoaderDevicePartUUID UEFI değişkenini ayarlaması için, grub.cfg dosyasına bli modülünü yükleyin:

if [ "$grub_platform" = "efi" ]; then
  insmod bli
fi

Önyükleme menüsü girişi örnekleri

İpucu: Bu önyükleme girişlerini grub-mkconfig ile oluşturulmuş bir /boot/grub/grub.cfg kullanırken de kullanabilirsiniz. Bunları /etc/grub.d/40_custom dosyasına ekleyin ve ana yapılandırma dosyasını yeniden oluşturun veya /boot/grub/custom.cfg dosyasına ekleyin.

Birden fazla GRUB girişini yönetme ipuçları için, örneğin hem linux hem de linux-lts çekirdeklerini kullanırken, GRUB/Tips and tricks#Multiple entries'e bakın.

Archiso ve Archboot önyükleme menüsü girişleri için Multiboot USB drive#Boot entries'e bakın.

GRUB komutları
"Kapat" menü girişi
menuentry "Sistem kapalı" {
	echo "Sistem kapanıyor..."
	halt
}
"Yeniden Başlat" menü girişi
menuentry "Sistem yeniden başlat" {
	echo "Sistem yeniden başlatılıyor..."
	reboot
}
"UEFI Firmware Settings" menü girişi
if [ ${grub_platform} == "efi" ]; then
	menuentry 'UEFI Firmware Settings' --id 'uefi-firmware' {
		fwsetup
	}
fi
EFI ikili dosyaları

UEFI modunda başlatıldığında, GRUB diğer EFI ikili dosyalarını zincirleyebilir.

İpucu: Bu menü girişlerini yalnızca GRUB UEFI modunda başlatıldığında göstermek için, şu if ifadesine yerleştirin:
if [ ${grub_platform} == "efi" ]; then
	UEFI'ye özel menü girişlerini buraya ekleyin
fi
UEFI Kabuk

UEFI Kabuk'u EFI sistem bölümünün köküne yerleştirerek ve bu menü girişini ekleyerek başlatabilirsiniz:

menuentry "UEFI Shell" {
	insmod fat
	insmod chain
	search --no-floppy --set=root --file /shellx64.efi
	chainloader /shellx64.efi
}
gdisk

gdisk EFI uygulamasını indirin ve gdisk_x64.efi dosyasını esp/EFI/tools/ dizinine kopyalayın.

menuentry "gdisk" {
	insmod fat
	insmod chain
	search --no-floppy --set=root --file /EFI/tools/gdisk_x64.efi
	chainloader /EFI/tools/gdisk_x64.efi
}
Birleştirilmiş çekirdek görüntüsünü zincirleme

Eğer unified kernel image oluşturduysanız ve bunu Secure Boot veya diğer yöntemlerle sağladıysanız, önyükleme menüsüne ekleyebilirsiniz. Örneğin:

menuentry "Arch Linux" {
	insmod fat
	insmod chain
	search --no-floppy --set=root --fs-uuid FILESYSTEM_UUID
	chainloader /EFI/Linux/arch-linux.efi
}
Çift önyükleme
GNU/Linux

Diğer dağıtımın sda2 bölümünde olduğunu varsayalım:

menuentry "Diğer Linux" {
	set root=(hd0,2)
	linux /boot/vmlinuz (gerektiği gibi diğer seçenekleri ekleyin)
	initrd /boot/initrd.img (diğer çekirdek bir tane kullanıyorsa/gerekiyorsa)
}

Alternatif olarak GRUB'un doğru bölümü UUID veya dosya sistemi etiketi ile aramasına izin verebilirsiniz:

menuentry "Diğer Linux" {
        # UUID'nin 763A-9CB6 olduğunu varsayarak
	search --no-floppy --set=root --fs-uuid 763A-9CB6

        # OTHER_LINUX etiketi ile arama (bölüm etiketinin belirsiz olmadığından emin olun)
        #search --no-floppy --set=root --label OTHER_LINUX

	linux /boot/vmlinuz (gerektiği gibi diğer seçenekleri ekleyin, örneğin: root=UUID=763A-9CB6)
	initrd /boot/initrd.img (diğer çekirdek bir tane kullanıyorsa/gerekiyorsa)
}

Diğer dağıtımda geçerli bir /boot klasörü, yüklenmiş GRUB, grub.cfg, çekirdek ve initramfs varsa, GRUB'u bu diğer grub.cfg dosyalarını önyükleme sırasında dinamik olarak yüklemesi için talimat verebilirsiniz. Örneğin, hd0 ve dördüncü GPT bölümü için:

menuentry "configfile hd0,gpt4"  {
        insmod part_gpt
        insmod btrfs
        insmod ext2
        set root='hd0,gpt4'
        configfile /boot/grub/grub.cfg
}

Bu girişi seçtiğinizde, GRUB diğer bölümden grub.cfg dosyasını yükler ve o menüyü görüntüler. Dosyadaki komutlarla yapılan ortam değişiklikleri configfile döndüğünde korunmaz. İlk GRUB menüsüne dönmek için Esc tuşuna basın.

UEFI/GPT modunda kurulu Windows

Bu mod, Windows önyükleyicisinin bulunduğu yeri belirler ve menü girişi seçildiğinde GRUB'dan sonra zincirler. Buradaki ana görev EFI sistem bölümünü bulmak ve önyükleyiciyi buradan çalıştırmaktır.

Not: Bu menü girişi yalnızca UEFI önyükleme modunda ve Windows bitliği UEFI bitliğiyle eşleştiğinde çalışacaktır. BIOS kurulu GRUB'da çalışmaz. Daha fazla bilgi için Dual boot with Windows#Windows UEFI vs BIOS limitations ve Dual boot with Windows#Bootloader UEFI vs BIOS limitations sayfalarına bakınız.
if [ "${grub_platform}" == "efi" ]; then
	menuentry "Microsoft Windows Vista/7/8/8.1 UEFI/GPT" {
		insmod part_gpt
		insmod fat
		insmod chain
		search --no-floppy --fs-uuid --set=root $hints_string $fs_uuid
		chainloader /EFI/Microsoft/Boot/bootmgfw.efi
	}
fi

Burada $hints_string ve $fs_uuid aşağıdaki iki komutla elde edilir.

$fs_uuid komutu EFI sistem bölümünün UUID'sini belirler:

# grub-probe --target=fs_uuid esp/EFI/Microsoft/Boot/bootmgfw.efi
1ce5-7f28

Alternatif olarak lsblk --fs komutunu çalıştırarak EFI sistem bölümünün UUID'sini buradan okuyabilirsiniz.

$hints_string komutu EFI sistem bölümünün yerini belirler, bu durumda sabit disk 0:

# grub-probe --target=hints_string esp/EFI/Microsoft/Boot/bootmgfw.efi
--hint-bios=hd0,gpt1 --hint-efi=hd0,gpt1 --hint-baremetal=ahci0,gpt1

Bu iki komut, Windows'un kullandığı ESP'nin esp dizininde montelenmiş olduğunu varsayar. Windows'un EFI dosyası yolunda büyük/küçük harf farklılıkları olabilir.

BIOS/MBR modunda kurulu Windows
Not: GRUB bootmgr'yi doğrudan önyüklemeyi destekler ve zincirleme işlemi BIOS/MBR kurulumunda Windows'u önyüklemek için artık gerekli değildir.
Uyarı: /bootmgr'nin bulunduğu sistem bölümüdür, "gerçek" Windows bölümü (genellikle C:) değil. Sistem bölümünün dosya sistemi etiketi System Reserved veya SYSTEM olup, bölümü yaklaşık 100 ila 549 MiB boyutundadır. Daha fazla bilgi için Wikipedia:System partition and boot partition sayfasına bakınız.

Bu bölümde, Windows bölümünüzün /dev/sda1 olduğunu varsayarız. Farklı bir bölüm varsa, her hd0,msdos1 örneğini değiştirin.

Not: Bu menü girişleri yalnızca BIOS önyükleme modunda çalışır. UEFI kurulu GRUB'da çalışmaz. Daha fazla bilgi için Dual boot with Windows#Windows UEFI vs BIOS limitations ve Dual boot with Windows#Bootloader UEFI vs BIOS limitations sayfalarına bakınız.

Her iki örnekte de XXXX-XXXX dosya sistemi UUID'sidir, lsblk --fs komutu ile bulunabilir.

Windows Vista/7/8/8.1/10 için:

if [ "${grub_platform}" == "pc" ]; then
	menuentry "Microsoft Windows Vista/7/8/8.1/10 BIOS/MBR" {
		insmod part_msdos
		insmod ntfs
		insmod ntldr
		search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 XXXX-XXXX
		ntldr /bootmgr
	}
fi

Windows XP için:

if [ "${grub_platform}" == "pc" ]; then
	menuentry "Microsoft Windows XP" {
		insmod part_msdos
		insmod ntfs
		insmod ntldr
		search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 XXXX-XXXX
		ntldr /ntldr
	}
fi
Not: Bazı durumlarda, GRUB Windows 8 temiz bir şekilde kurulmadan yüklenmiş olabilir, bu durumda Windows'u \boot\bcd ile hata almadan önyükleyemezsiniz (hata kodu 0xc000000f). Bunu düzeltmek için Windows Kurtarma Konsolu'na gidin (kurulum diskinden cmd.exe) ve şu komutları çalıştırın:
X:\> bootrec.exe /fixboot
X:\> bootrec.exe /RebuildBcd
GRUB'ı silmeden Windows'u onaracak olan bootrec.exe /Fixmbr komutunu kullanmayın.

Ya da, GRUB'ı silmeden çoğu hatayı düzelten Boot Repair işlevini kullanabilirsiniz. Ayrıca, hem hedef sabit diskinizi hem de önyüklenebilir cihazınızı YALNIZCA takılı tutmanız daha iyidir. Windows genellikle diğer cihazlar bağlıysa önyükleme bilgilerini onaramaz.

Etiketleri Kullanma

Dosya sistemi etiketlerini, dosya sistemlerine eklenen insan tarafından okunabilir dizgiler, search komutuna --label seçeneği kullanarak kullanmak mümkündür. Öncelikle, dosya sisteminizin bir etikete sahip olduğundan emin olun.

Ardından, etiketler kullanarak bir giriş ekleyin. Bir örnek:

menuentry "Arch Linux, session texte" {
  search --label --set=root archroot
  linux /boot/vmlinuz-linux root=/dev/disk/by-label/archroot ro
  initrd /boot/initramfs-linux.img
}

Komut Shell'ini Kullanma

MBR, tüm GRUB modüllerini saklamak için çok küçük olduğundan, yalnızca menü ve birkaç temel komut burada bulunur. GRUB'un çoğu işlevi, ihtiyaç duyuldukça eklenen /boot/grub/ içindeki modüllerde bulunur. Hata koşullarında (örneğin, bölümlendirme düzeni değişirse) GRUB önyükleme yapamayabilir. Bu durumda, bir komut shell'i görünebilir.

GRUB, birden fazla shell/komut istemcisi sunar. Menü okunamadığında ancak önyükleyici diski bulabiliyorsa, muhtemelen "normal" shell'ine düşersiniz:

grub>

Daha ciddi bir sorun varsa (örneğin, GRUB gerekli dosyaları bulamazsa), "rescue" shell'ine düşebilirsiniz:

grub rescue>

Rescue shell'i, normal shell'in kısıtlı bir alt kümesidir ve çok daha az işlevsellik sunar. Rescue shell'ine düştüğünüzde, önce "normal" modülünü eklemeyi, ardından "normal" shell'ini başlatmayı deneyin:

grub rescue> set prefix=(hdX,Y)/boot/grub
grub rescue> insmod (hdX,Y)/boot/grub/i386-pc/normal.mod
rescue:grub> normal

Pager Desteği

GRUB, uzun çıktı veren komutları okumak için pager'ı destekler (örneğin help komutu). Bu sadece normal shell modunda çalışır ve rescue modunda çalışmaz. Pager'ı etkinleştirmek için GRUB komut shell'inde şunu yazın:

sh:grub> set pager=1

Komut Shell Ortamını Kullanarak İşletim Sistemlerini Önyükleme

grub>

GRUB'un komut shell ortamı, işletim sistemlerini önyüklemek için kullanılabilir. Yaygın bir senaryo, Windows / Linux'u bir sürücü/bölüm üzerinden chainloading ile önyüklemektir.

Chainloading, mevcut önyükleyiciden başka bir önyükleyiciyi yüklemek anlamına gelir, yani zincirleme önyükleme.

Diğer önyükleyici, bölümlendirilmiş bir diskin (MBR) başlangıcında, bir bölümün başlangıcında veya bölümsüz bir diskin (VBR) başlangıcında veya UEFI durumunda bir EFI ikili dosyası olarak yer alabilir.

Bir Bölümün VBR'sini Chainloading

set root=(hdX,Y)
chainloader +1
boot

X=0,1,2... Y=1,2,3...

Örneğin, birinci sabit diskin birinci bölümünde depolanan Windows'u chainload etmek için:

set root=(hd0,1)
chainloader +1
boot

Benzer şekilde, bir bölüme yüklenmiş GRUB chainloaded olabilir.

Bir Diskin MBR'sini veya Bölümsüz Bir Diskin VBR'sini Chainloading

set root=hdX
chainloader +1
boot

UEFI Modunda Kurulu Windows/Linux'u Chainloading

insmod fat
set root=(hd0,gpt4)
chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
boot

insmod fat FAT dosya sistemi modülünü yüklemek için kullanılır, Windows önyükleyicisini EFI sistem bölümünde erişmek için. (hd0,gpt4) veya /dev/sda4 bu örnekte EFI sistem bölümüdür. chainloader satırındaki giriş, chainloaded olacak .efi dosyasının yolunu belirtir.

Normal Yükleme

#Rescue Konsolunu Kullanma bölümündeki örneklere bakın.

Rescue Konsolunu Kullanma

Önce #Komut Shell'ini Kullanma kısmına bakın. Standart shell'i etkinleştiremiyorsanız, bir çözüm olarak bir canlı CD veya başka bir kurtarma diski kullanarak yapılandırma hatalarını düzeltip GRUB'ı yeniden yüklemeyi deneyebilirsiniz. Ancak, böyle bir önyükleme diski her zaman mevcut olmayabilir (veya gerekli olmayabilir); rescue konsolu oldukça sağlamdır.

GRUB rescue'de mevcut komutlar insmod, ls, set ve unset'tir. Bu örnek set ve insmod kullanır. set değişkenleri değiştirir ve insmod yeni modüller ekler.

Başlamadan önce, kullanıcının /boot bölümünün yerini bilmesi gerekir (bu ayrı bir bölüm olabilir veya kök altında bir alt dizin olabilir):

grub rescue> set prefix=(hdX,Y)/boot/grub

burada X fiziksel sürücü numarasını ve Y bölüm numarasını belirtir.

Not: Ayrı bir önyükleme bölümünüz varsa, yoldan /boot'yi atlayın (yani set prefix=(hdX,Y)/grub yazın).

Konsol yeteneklerini genişletmek için linux modülünü ekleyin:

grub rescue> insmod i386-pc/linux.mod

veya basitçe

grub rescue> insmod linux

Bu, tanıdık olabilecek linux ve initrd komutlarını tanıtır.

Bir örnek, Arch Linux'u önyükleme:

set root=(hd0,5)
linux /boot/vmlinuz-linux root=/dev/sda5
initrd /boot/initramfs-linux.img
boot

Ayrı bir önyükleme bölümü (örneğin, UEFI kullanırken) ile, satırları uygun şekilde değiştirin:

Not: Önyükleme ayrı bir bölüm olduğundan ve kök bölümünüzün bir parçası olmadığından, önyükleme bölümünü aynı prefix değişkeni gibi manuel olarak belirtmeniz gerekir.
set root=(hd0,5)
linux (hdX,Y)/vmlinuz-linux root=/dev/sda6
initrd (hdX,Y)/initramfs-linux.img
boot
Not: linux komutunu çalıştırırken error: premature end of file /YOUR_KERNEL_NAME hatası alırsanız, linux16 komutunu deneyebilirsiniz.

Arch Linux kurulumu başarıyla önyüklendikten sonra, kullanıcılar grub.cfg'yi gerektiği şekilde düzeltebilir ve ardından GRUB'ı yeniden yükleyebilirler.

GRUB'ı yeniden yükleyip sorunu tamamen çözmek için, gerekirse /dev/sda'yı değiştirin. Ayrıntılar için #Kurulum kısmına bakın.

GRUB'ı Kaldırma

UEFI Sistemleri

grubı kaldırmadan önce, başka bir önyükleyicinin kurulu ve devralacak şekilde yapılandırıldığından emin olun.

$ efibootmgr
BootOrder: 0003,0001,0000,0002
Boot0000* Windows Boot Manager  HD(2,GPT,4dabbedf-191b-4432-bc09-8bcbd1d7dabf,0x109000,0x32000)/File(\EFI\Microsoft\Boot\bootmgfw.efi)
Boot0001* GRUB  HD(2,GPT,4dabbedf-191b-4432-bc09-8bcbd1d7dabf,0x109000,0x32000)/File(\EFI\GRUB\grubx64.efi)
Boot0002* Linux-Firmware-Updater        HD(2,GPT,5dabbedf-191b-4432-bc09-8bcbd1d7dabf,0x109000,0x32000)/File(\EFI\arch\fwupdx64.efi)
Boot0003* Linux Boot Manager    HD(2,GPT,4dabbedf-191b-4432-bc09-8bcbd1d7dabf,0x109000,0x32000)/File(\EFI\systemd\systemd-bootx64.efi)

Eğer BootOrder'da grub ilk giriş olarak yer alıyorsa, onu ön plana almak için başka bir önyükleyici kurun, örneğin yukarıda systemd-boot gibi. grub ardından bootnum kullanılarak kaldırılabilir.

# efibootmgr --delete-bootnum -b 1

Ayrıca esp/EFI/grub ve /boot/grub dizinlerini de silin.

BIOS Sistemleri

grubı herhangi bir başka BIOS önyükleyicisiyle değiştirmek için, sadece onları yükleyin; bu, MBR boot code'u üzerine yazar.

grub-install, /boot/grub dizinini oluşturur ve bu dizinin manuel olarak kaldırılması gerekir. Ancak bazı kullanıcılar bu dizini saklamak isteyebilirler, eğer grubı yeniden yüklemek isterlerse.

UEFI/GPT'ye geçiş yaptıktan sonra, MBR boot code'u dd kullanarak kaldırmak isteyebilirsiniz.

Sorun Giderme

Desteklenmeyen dosya sistemleri

GRUB, kök dosya sistemini desteklemiyorsa, desteklenen bir dosya sistemi ile alternatif bir /boot bölümü oluşturulmalıdır. Bazı durumlarda, GRUB'un geliştirme sürümü grub-gitAUR dosya sistemini yerel olarak destekleyebilir.

GRUB, desteklenmeyen bir dosya sistemi ile kullanıldığında, diskinizin UUID'sini çıkaramadığı için klasik olmayan kalıcı /dev/sdXx adlarını kullanır. Bu durumda, /boot/grub/grub.cfg dosyasını manuel olarak düzenlemeniz ve root=/dev/sdXx'i root=UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX ile değiştirmeniz gerekebilir. Cihazınızın UUID'sini almak için blkid komutunu kullanabilirsiniz, detaylar için Persistent block device naming kısmına bakın.

GRUB, F2FS'i 2.0.4 sürümünden itibaren desteklese de, extra_attr bayrağı etkinleştirilmiş bir F2FS bölümünden önyükleme dosyalarını doğru şekilde okuyamaz.

Hata Ayıklama Mesajlarını Etkinleştirme

Not: Bu değişiklik #Ana yapılandırma dosyasını oluştur kısmında üzerine yazılacaktır.

Şunları ekleyin:

set pager=1
set debug=all

grub.cfg'ye.

msdos-tarzı Hata Mesajı

grub-setup: warn: This msdos-style partition label has no post-MBR gap; embedding will not be possible!
grub-setup: warn: Embedding is not possible. GRUB can only be installed in this setup by using blocklists.
            However, blocklists are UNRELIABLE and its use is discouraged.
grub-setup: error: If you really want blocklists, use --force.

Bu hata, GRUB'ı bir VMware konteynerine kurmayı denerken ortaya çıkabilir. Hakkında daha fazla bilgi için buradan okuyabilirsiniz. Bu hata, ilk bölüm MBR'den hemen (blok 63) başladığında, ilk bölümden önce 1 MiB (2048 blok) boşluk bırakılmadığında meydana gelir. #Master Boot Record (MBR) özgü talimatlar kısmına bakın.

UEFI

Yaygın Kurulum Hataları

  • Bazı UEFI cihazlarında karşılaşılabilecek bir hata Could not prepare Boot variable: Read-only file system olabilir. /sys/firmware/efi/efivars'ı okuma-yazma izniyle yeniden bağlamanız gerekir.
    # mount -o remount,rw,nosuid,nodev,noexec --types efivarfs efivarfs /sys/firmware/efi/efivars
    Gentoo Wiki'de boot loader'ın nasıl kurulacağı hakkında bilgi edinin.
  • Eğer grub-install çalıştırırken sysfs veya procfs ile bir sorun yaşarsanız ve modprobe efivarfs çalıştırmanız gerekiyorsa, yukarıdaki komut ile efivarfs'ı bağlamayı deneyin.
  • --target veya --directory seçeneği olmadan, grub-install hangi firmware için kurulacağını belirleyemez. Bu durumda, grub-install source_dir does not exist. Please specify --target or --directory mesajını verecektir.
  • Eğer grub-install çalıştırdıktan sonra error: esp doesn't look like an EFI partition hatasını alırsanız, bölüm muhtemelen FAT32 formatında değildir.

Firmware Boot Manager'da GRUB Girişi Oluşturma

grub-install otomatik olarak önyükleyici yöneticisinde bir menü girişi oluşturmaya çalışır. Eğer bunu yapmazsa, bir menü girişi oluşturmak için efibootmgr kullanma talimatları için UEFI#efibootmgr kısmına bakın. Ancak, sorun büyük ihtimalle CD/USB'nizi UEFI modunda önyüklemediğinizden kaynaklanıyordur, Installation guide (Türkçe)#Önyükleme modunu doğrulama kısmında açıklandığı gibi.

Firmware boot manager'da bir GRUB girişi oluşturma örneği olarak efibootmgr -c komutunu ele alın. Bu, /dev/sda1'in EFI Sistem Bölümü olduğunu ve /boot/efi'ye bağlı olduğunu varsayar. Bu, efibootmgr'in varsayılan davranışıdır. Bu, "Linux" adında yeni bir önyükleme seçeneği oluşturur ve önyükleme sırası listesinde üstteki sıraya koyar. Varsayılan OS Yükleyicisi \EFI\arch\grub.efi'dir.

Kurtarma kabuğuna geçiş

GRUB yükleniyor ancak kurtarma kabuğuna geçiş yapıyorsa ve herhangi bir hata mesajı göstermiyorsa, bu iki nedenden biri olabilir:

  • Eksik veya yanlış yerleştirilmiş bir grub.cfg olabilir. Bu, GRUB UEFI --boot-directory ile kurulduysa ve grub.cfg dosyası eksikse meydana gelir,
  • Ayrıca, grubx64.efi dosyasına sert kodlanmış olan önyükleme bölümü değiştiyse de bu durum yaşanabilir.

GRUB UEFI Yüklenmedi

Çalışan bir UEFI örneği:

# efibootmgr -u
BootCurrent: 0000
Timeout: 3 seconds
BootOrder: 0000,0001,0002
Boot0000* GRUB HD(1,800,32000,23532fbb-1bfa-4e46-851a-b494bfe9478c)File(\EFI\GRUB\grubx64.efi)
Boot0001* Shell HD(1,800,32000,23532fbb-1bfa-4e46-851a-b494bfe9478c)File(\shellx64.efi)
Boot0002* Festplatte BIOS(2,0,00)P0: SAMSUNG HD204UI

Ekran sadece bir saniye kararıyorsa ve ardından bir sonraki önyükleme seçeneği deneniyorsa, bu gönderiye göre GRUB'ı bölüm köküne taşımanın yardımcı olabileceği belirtilmiştir. Önyükleme seçeneği silinmeli ve ardından yeniden oluşturulmalıdır. GRUB için giriş şu şekilde görünmelidir:

Boot0000* GRUB HD(1,800,32000,23532fbb-1bfa-4e46-851a-b494bfe9478c)File(\grubx64.efi)

Varsayılan/geri dönüş önyükleme yolu

Bazı UEFI firmaları, UEFI NVRAM önyükleme girişlerini gösterebilmek için bilinen bir konumda önyüklenebilir bir dosya gerektirir. Bu durumda, grub-install efibootmgr'nin GRUB'u önyükleme girişine eklediğini belirtecek, ancak giriş VisualBIOS önyükleme sırası seçicisinde görünmeyecektir. Çözüm, GRUB'u varsayılan/geri dönüş önyükleme yoluna yüklemektir:

# grub-install --target=x86_64-efi --efi-directory=esp --removable

Alternatif olarak, önceden yüklenmiş bir GRUB EFI çalıştırılabilir dosyasını varsayılan/geri dönüş yoluna taşıyabilirsiniz:

# mv esp/EFI/grub esp/EFI/BOOT
# mv esp/EFI/BOOT/grubx64.efi esp/EFI/BOOT/BOOTX64.EFI

Geçersiz imza

Windows'u önyüklemeye çalışırken "geçersiz imza" hatası alıyorsanız, örneğin bölümleri yeniden yapılandırdıktan veya ek hard diskler ekledikten sonra, (re)GRUB'un cihaz yapılandırmasını kaldırıp yeniden yapılandırmasını sağlayın:

# mv /boot/grub/device.map /boot/grub/device.map-old
# grub-mkconfig -o /boot/grub/grub.cfg

grub-mkconfig artık bulunan tüm önyükleme seçeneklerini, Windows dahil, listelemelidir. Eğer çalışırsa, /boot/grub/device.map-old'yi kaldırın.

Önyükleme Donmaları

GRUB, çekirdek ve başlangıç ramdisk'ini yükledikten sonra herhangi bir hata mesajı olmadan donarsa, add_efi_memmap çekirdek parametresini kaldırmayı deneyin.

Diğer İşletim Sistemlerinden Arch Bulunamıyor

Bazı kullanıcılar, diğer dağıtımların Arch Linux'u otomatik olarak os-prober ile bulmakta sorun yaşadığını bildirmiştir. Bu sorun ortaya çıkarsa, /etc/lsb-release dosyasının varlığı ile algılamanın iyileştirilebileceği bildirilmiştir. Bu dosya ve güncelleme aracı, lsb-release paketi ile kullanılabilir.

chroot İçinde Kurulumda Uyarı

Bir LVM sisteminde chroot ortamında (örneğin sistem kurulumu sırasında) GRUB'ı kurarken, şu tür uyarılar alabilirsiniz:

/run/lvm/lvmetad.socket: connect failed: No such file or directory

veya

WARNING: failed to connect to lvmetad: No such file or directory. Falling back to internal scanning.

Bu, /run'ın chroot içinde mevcut olmamasından kaynaklanır. Bu uyarılar, sistemin önyüklenmesini engellemeyecektir, her şey doğru yapıldığında kuruluma devam edebilirsiniz.

GRUB Yavaş Yükleniyor

Disk alanı düşük olduğunda GRUB uzun süre yüklenebilir. Sorun yaşadığınızda /boot veya / bölümünde yeterli boş disk alanı olup olmadığını kontrol edin.

error: unknown filesystem

GRUB, error: unknown filesystem hatası verebilir ve birkaç nedenden ötürü önyükleme yapmayı reddedebilir. Eğer tüm UUID'lerin doğru olduğundan ve tüm dosya sistemlerinin geçerli ve desteklendiğinden eminseniz, bu, BIOS Boot Partition'ın diskin ilk 2 TiB'i dışında bir yerde bulunmasından kaynaklanabilir [4]. Bu bölümü tamamen ilk 2 TiB içinde olacak şekilde bir bölümlendirme aracı kullanarak yerleştirin, ardından GRUB'u yeniden yükleyin ve yeniden yapılandırın.

Bu hata, desteklenmeyen özelliklere sahip bir ext4 dosya sisteminden de kaynaklanabilir:

  • large_dir - desteklenmiyor.
  • metadata_csum_seed - GRUB 2.11'de desteklenecek (commit).
Warning: Yeni file system özelliklerini etkinleştirmeden önce GRUB'un desteğini kontrol ettiğinizden emin olun.

grub-reboot Sıfırlanmıyor

GRUB'un kök Btrfs bölümlerine yazamadığı görülüyor [5]. Eğer grub-reboot kullanarak başka bir girişe önyükleme yaparsanız, bu yüzden diskteki ortamını güncelleyemez. Ya diğer girişten grub-reboot'u çalıştırın (örneğin çeşitli dağıtımlar arasında geçiş yaparken) ya da farklı bir dosya sistemi kullanmayı düşünün. "Sticky" bir girişi sıfırlamak için grub-editenv create komutunu çalıştırın ve GRUB_DEFAULT=0/etc/default/grub dosyanıza ekleyin (grub-mkconfig -o /boot/grub/grub.cfg'yi unutmayın).

Eski Btrfs Kurulumu Engelliyor

Bir sürücü, bir bölüm tablosu oluşturulmadan (örneğin /dev/sdx) Btrfs ile biçimlendirilmişse ve sonra bölüm tablosu yazılırsa, BTRFS formatının bazı bölümleri kalır. Çoğu yardımcı program ve işletim sistemi bunu görmez, ancak GRUB --force ile bile kurulum yapmayı reddeder.

# grub-install: warning: Attempting to install GRUB to a disk with multiple partition labels. This is not supported yet..
# grub-install: error: filesystem `btrfs' does not support blocklists.

Sürücüyü sıfırlayabilirsiniz, ancak verilerinizi bozmadan kolay bir çözüm Btrfs süperblokunu wipefs -o 0x10040 /dev/sdx ile silmektir.

Windows 8/10 Bulunamıyor

Windows 8/10'da bulunan bir "Hiberboot", "Hybrid Boot" veya "Fast Boot" ayarı, Windows bölümünün bağlanmasını engelleyebilir, bu nedenle grub-mkconfig Windows kurulumunu bulamayabilir. Hiberboot'u Windows'ta devre dışı bırakmak, Windows'un GRUB menüsüne eklenmesini sağlayacaktır.

GRUB Kurtarma ve Şifreli /boot

Bir şifreli /boot kullanıyorsanız ve doğru bir şifre girmekte başarısız olduysanız, grub-rescue istemcisine düşersiniz.

Bu grub-rescue istemcisinin sınırlı yetenekleri vardır. Önyüklemeyi tamamlamak için şu komutları kullanın:

grub rescue> cryptomount <partition>
grub rescue> insmod normal
grub rescue> normal

Daha iyi bir açıklama için bu blog gönderisini[dead link 2023-04-23 ⓘ] inceleyebilirsiniz.

GRUB Yükleniyor Ancak Menü Görünmüyor

/etc/default/grub dosyasını kontrol edin, GRUB_TIMEOUT değeri 0 olarak ayarlandıysa, bunu pozitif bir sayıya ayarlayın: bu, varsayılan GRUB girişinin yüklenmeden önce geçen süreyi belirler. Ayrıca, GRUB_TIMEOUT_STYLE'in hidden olarak ayarlanıp ayarlanmadığını kontrol edin ve bunu menu olarak değiştirin, böylece menü varsayılan olarak gösterilir. Ardından ana yapılandırma dosyasını yeniden oluşturun ve yeniden başlatın.

Eğer bu işe yaramazsa, grafiksel terminal ile uyumsuzluk sorunları olabilir. GRUB_TERMINAL_OUTPUT'u console olarak /etc/default/grub dosyasında ayarlayarak GRUB grafiksel terminalini devre dışı bırakabilirsiniz.

Ayrıca Bakınız