GRUB (Türkçe)
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.
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.
/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
- 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 EFIgrubx64.efi
'yigrub-mkstandalone
aracı ile yeniden oluşturmanız veya ek GRUB modülleri için dahiligrub-install
aracını kullanarak GRUB'u yeniden yüklemeniz gerekir.
Kurulum
- 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
yerinei386-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:
-
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. - Bir önyükleyici tanımlayıcı seçin, burada
GRUB
olarak adlandırılmıştır. Bu isimde bir dizinesp/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. - 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 nedenlegrub-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.
- Paketleri kurduğunuzdan ve
# 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.
--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.-
--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.
- 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
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.
- 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.
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.
/etc/default/grub
ve/veya /etc/grub.d/
dosyalarındaki değişikliklerden sonra tekrar oluşturmayı unutmayın.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.
- Varsayılan dosya yolu
/boot/grub/grub.cfg
'dir,/boot/grub/i386-pc/grub.cfg
değil. - Eğer grub-mkconfig i bir chroot veya systemd-nspawn konteynerinde çalıştırıyorsanız,
grub-probe: error: failed to get canonical path of /dev/sdaX
hatası alabilirsiniz. Bu durumda, BBS gönderisinde açıklandığı gibi chroot (Türkçe)#arch-chroot'un kullanımı kullanmayı deneyin.
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.
- 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.
/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.
- 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.
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.
- 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.
- Ş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
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.
Ş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.
/boot
ayrı bir bölümde tutulmak zorunda değildir; aynı zamanda sistemin kök /
dizin ağacının altında da kalabilir.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.
- 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.
- 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ğinigrub-install
komutunuza eklemeyi deneyin.
/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]
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
/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.
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.
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
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./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.
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
\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.
/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:
set root=(hd0,5) linux (hdX,Y)/vmlinuz-linux root=/dev/sda6 initrd (hdX,Y)/initramfs-linux.img boot
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
Ş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 ileefivarfs
'ı 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 vegrub.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).
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.