Hem daha yeni UEFI sistemleri hem de geleneksel BIOS sistemleri için aynı kavramlara atıfta bulunurken aşağıdaki BIOS terimini kullanacağım , çünkü bu UEFI odaklı bir soru olsa da, "BIOS" jibleri hakkında daha iyi konuşurken, örneğin GRUB belgeleri ve "BIOS / UEFI" çok tıknaz. GRUB (aslında, GRUB 2 - bu genellikle belirsiz bir şekilde kullanılır) linux tarafından yüklenen ve Windows'u çift önyüklemek için kullanılan önyükleyicidir.
İlk olarak, sürücü sırası ve önyükleme sırası hakkında bir kelime. Sürücü sırası , sürücülerin anakart üzerindeki veri yoluna fiziksel olarak bağlanma sırasını belirtir (ilk sürücü, ikinci sürücü, vb.); bu bilgi BIOS tarafından rapor edilir. Önyükleme sırası"BIOS", önyüklenebilir bir sürücüyü denetleme sırasını belirtir. Bu mutlaka sürücü sırası ile aynı değildir ve genellikle BIOS kurulum ekranından yapılandırılabilir. Sürücü sırası yapılandırılmamalı veya önyükleme sırasından etkilenmemelidir, çünkü bu çok işletim sistemi düşmanca bir şey olacaktır (ancak teorik olarak geniş bir BIOS olabilir). Ayrıca, ilk sürücüyü çıkarırsanız, ikinci sürücü muhtemelen ilk sürücü olur. Bunun gibi sorunları denemek ve önlemek için önyükleme yükleyicisini yapılandırırken UUID'leri kullanacağız (çağdaş linux yükleyicileri de bunu yapıyor).
İstediğinizi elde etmenin ideal yolu, linux'u sürücü sırasına göre ikinci sürücüye yüklemek ve ardından UEFI kurulumunu kullanarak önce önyükleme sırası olarak seçmektir . Bunun ek bir avantajı, daha sonra Windows sürücüsünü seçmek ve isterseniz atlatma grubunu seçmek için BIOS / UEFI önyükleme sırasını kullanabilmenizdir. İkinci sürücüde linux'u tavsiye etmemin nedeni, GRUB'un Windows yerel önyükleyicisini "zincir yüklemesi" gerektiğidir ve Windows önyükleyicisinin her zaman ilk sürücüde olduğunu varsayar. Bununla birlikte, başka bir şekilde tercih ederseniz veya ihtiyacınız varsa, bunu kandırmanın bir yolu vardır.
Umarım, devam edip canlı bir CD ya da her neyse kullanabilirsiniz ve bunu GUI yükleyicisini kullanarak yapabilirsiniz. Bununla birlikte, tüm yükleyiciler eşit olarak yaratılmaz ve eğer bu berbat olursa ve aşağıdaki gibi sorunlarla karşılaşırsanız:
Linux'u ilk diske yükledim ve şimdi pencereleri önyükleyemiyorum veya
Linux'u ikinci diske yükledim, ancak önyükleyici için ilk diski kullanarak şimdi hiçbir şey önyükleyemiyorum!
Sonra okumaya devam edin. İkinci durumda, önce linux'u ikinci diske yeniden yüklemeli ve bu sefer önyükleyicinin nereye gittiğinden emin olmalısınız. Bunu yapmanın en kolay ve en kusursuz yolu, Windows sürücüsünü geçici olarak makineden kaldırmaktır, çünkü sürücü sırasına bakılmaksızın üzerinde fazladan bir şey yüklü olmadığını varsayacağız.
Linux yüklendikten ve önyükleme yapabildiğinden emin olduktan sonra, Windows sürücüsünü tekrar takın (kaldırdıysanız - ve unutmayın, öncelikle sürücü sırası açısından ilk, ikinci sürücü açısından önyükleme sırası) ve bir sonraki adıma geçin.
GRUB yapılandırmasına erişim
Linux'u başlatın, bir terminal açın ve
> su root
Sizden root şifresi istenecektir. Bu noktadan sonra, o terminaldeki süper kullanıcısınız (kontrol etmek, denemek whoami
), bu yüzden aptalca bir şey yapmayın. Bununla birlikte, hala GUI'de normal bir kullanıcısınız ve bir metin dosyasını düzenleyeceğimiz için, bir GUI düzenleyicisini tercih ederseniz, bu dosyanın ve içindeki dizinin sahipliğini geçici olarak değiştirmeniz gerekir:
> chown -R yourusername /etc/grub.d/
"Operasyona izin verilmiyor" ifadesini alırsanız, su
uygun şekilde girmediniz . Eğer alırsanız chown: invalid user: ‘yourusername’
, son komutu tam anlamıyla aldınız.
Artık /etc/grub.d
dosya tarayıcınızda adresine gidebilir ve adlı bir dosyayı arayabilirsiniz 40_custom
. Şöyle görünmelidir:
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
Bulamazsanız, kök terminalde aşağıdaki komutları girin:
> touch /etc/grub.d/40_custom
> chmod 755 /etc/grub.d/40_custom
> chown yourusername /etc/grub.d/40_custom
Metin düzenleyicinizde açın, yukarıdaki bölümü kopyalayın (w / den başlayarak #!/bin/sh
) ve sonraki adıma geçin.
Windows önyükleme seçeneği ekleme
Bunu, dosyanın sonundaki metin düzenleyicisiyle kopyalayıp yapıştırın:
menuentry "MS Windows" {
insmod part_gpt
insmod search_fs_uuid
insmod ntfs
insmod chain
}
Bu GRUB'un işleri halletmesi gereken modüllerin listesidir ( ntfs
gereksiz olabilir, ancak hiçbir şeye zarar vermemelidir). Bunun eksik bir giriş olduğunu unutmayın - bazı önemli komutlar eklememiz gerekir.
Windows İkinci Aşama Önyükleyiciyi Bulma
Linux kurulumunuz muhtemelen Windows bölümünüzü otomatikleştirmiştir ve bir dosya tarayıcısında bulabilmeniz gerekir. Değilse, bunu yapmanın bir yolunu bulun (nasıl yapılacağından emin değilseniz, bu sitede bir soru sorun). Bu yapıldıktan sonra, bağlama noktasını bilmemiz gerekir - bu, dosya tarayıcısında açık olmalıdır, örn /media/ASDF23SF23/
. Bazı yazımları kaydetmek için, bunu bir kabuk değişkenine koyacağız:
win="/whatever/the/path/is"
Eşittir işaretinin her iki tarafında boşluk olmamalıdır. Buraya Windows yolunun herhangi bir öğesini dahil etmeyin . Bu, Windows bölümünde en üst düzey klasöre işaret etmelidir. Şimdi:
cd $win
find . -name bootmgfw.efi
Büyük bir bölümünüz varsa bu birkaç dakika sürebilir, ancak büyük olasılıkla tükürdüğü ilk şey aradığımız şeydir; dosya sisteminde uzun goobledygook dizeleri içeren başka referanslar olabilir - bunlar değil. Veya Ctrl-c
gibi kısa ve basit bir şey gördüğünüzde bulmayı durdurmak için kullanın ../Windows/Boot/EFI/bootmgfw.efi
./EFI/HP/boot/bootmgfw.efi
.
Başlangıçta hariç , bu yolu daha sonra hatırlayın; altta boş bir satırda metin düzenleyicinize kopyalayabilirsiniz, çünkü orada kullanacağız. Şimdi önceki dizininize geri dönmek cd -
istiyorsanız, bundan sonra kabuğun neresinde olduğunuz önemli olmadığı halde kullanın .
Doğru Parametreleri Ayarlama
GRUB'un önyükleme işlemini bulup ikinci aşama Windows önyükleyicisine teslim etmesi gerekir. Windows bölümünde zaten yolumuz var, ancak GRUB'a bu bölümün nerede olduğunu söylemek için bazı parametrelere ihtiyacımız var. Sisteminizde grub-probe
veya adlı bir araç yüklü olmalıdır (örn., Fedora) grub2-probe
. Yazın grub
ve sonra vurmak Tabiki veya üç kez; birini veya diğerini içeren bir liste görmelisiniz.
> grub-probe --target=hints_string $win
Aşağıdaki gibi bir dize görmelisiniz:
--hint-bios=hd1,msdos1 --hint-efi=hd1,msdos1 --hint-baremetal=ahci1,msdos1
İçinde GRUB yapılandırması bulunan metin düzenleyicisine geri dönün ve tüm insmod
komutlardan sonra (ancak kapanış küme ayracı öncesinde) bir satır ekleyin :
insmod chain
search --fs-uuid --set=root [the complete "hint bios" string]
}
Bu satırı kesmeyin veya metin düzenleyicinizin bunu yapmasına izin vermeyin. Ekranda dolaşabilir - farkı anlatmanın kolay bir yolu satır numaralandırmayı ayarlamaktır. Sonraki:
> grub-probe --target=fs_uuid $win
Bu, daha kısa bir harf, rakam ve "123A456B789X6X" veya "b942fb5c-2573-4222-acc8-bbb883f19043" gibi kısa bir dize döndürmelidir. Bunu search --fs-uuid
, boşlukla ayrılmış ipucu bios dizesinden sonraki satırın sonuna ekleyin .
Sonra, Windows sürücü sırası açısından ikinci sürücüdeyse (ve yalnızca) , satırdan sonra bir satır ekleyin :search --fs-uuid
drivemap -s hd0 hd1
Bu, daha önce bahsedilen "hile" dir. Çalışması garanti edilmez, ancak denemeye zarar vermez.
Son olarak, son satır şöyle olmalıdır:
chainloader (${root})[the Windows path to the bootloader]
}
Açık olmak gerekirse, örneğin:
chainloader (${root})/Windows/Boot/EFI/bootmgfw.efi
Bu kadar. Dosyayı kaydedin ve gerçekten kaydedildiğinden ve olması gerektiği gibi göründüğünden emin olmak için bir dosya tarayıcısı kontrol edin.
GRUB'a Yeni Menü Seçeneğini Ekleme
Bu, grub-mkconfig
veya adlı bir araçla yapılır grub2-mkconfig
; Tabdaha önce bulduğunuz listede olacaktır . Ayrıca bir aa komutunuz da olabilir update-grub
. Bunu kontrol etmek için, kök terminaline yazmanız yeterlidir. "Komut bulunamadı" mesajı alırsanız, grub-mkconfig
doğrudan kullanmanız gerekir . Değilse (daha uzun bir hata almak dahil), yapılandırmayı ayarladınız ve biraz gözden düşebilirsiniz.
grub-mkconfig
Doğrudan kullanmak için önce şunları bulmamız gerekir grub.cfg
:
> find /boot -name grub.cfg
Bu muhtemelen /boot/grub/grub.cfg
veya olacaktır /boot/grub2/grub.cfg
.
> grub-mkconfig -o /boot/grub/grub.cfg
update-grub
otomatik olarak yapılandırmayı hatalar için tarar. grub-mkconfig
olmayacak, ancak bunu yapmak önemlidir çünkü onlarla başa çıkmak, makineyi başlatmaya çalıştığınızdan çok daha kolaydır. Bunun için grub-script-check
(veya grub2-script-check
) kullanın :
> grub-script-check /boot/grub/grub.cfg
Bu (veya update-grub
) bir satır numarasını gösteren bir hata üretirse, grub.cfg'deki satır numarasıdır, ancak ilgili bölümü /etc/grub.d/40_custom
(metin düzenleyicinizdeki dosya) düzeltmeniz gerekir . Yine de eski dosyaya bakmak için root olmanız gerekebilir, bu yüzden less /boot/grub/grub.cfg
terminalde deneyin , vurun :ve satır numarasını girin. Menü girişinizi görmelisiniz. Yazım hatasını bulun, metin düzenleyicide düzeltin ve tekrar update-grub
veya çalıştırın grub-mkconfig
.
İşiniz bittiğinde metin düzenleyiciyi kapatabilir ve exit
süper kullanıcı modundan çıkmak için terminali yazabilirsiniz .
Yeniden Başlatma!
Grub menüsüne geldiğinizde, hızlı bir şekilde aşağı kaydırın (zaman aşımı süresi genellikle 5 saniye dolmadan) "Windows" seçeneğine gidin ve test edin. Grub'tan kısa mesaj hatası alırsanız, yapılandırmada bir sorun var. Windows'dan bir hata mesajı alırsanız , bu sorun sizinle Microsoft arasındadır. Endişelenmeyin, ancak Windows sürücünüz değiştirilmedi ve BIOS kurulumu yoluyla önce (önyükleme sırası açısından) doğrudan yerleştirerek önyükleme yapabileceksiniz.
Tekrar linux'a döndüğünüzde, /etc/grub.d
dizinin ve içeriğinin sahipliğini orijinal durumlarına döndürün:
sudo chmod 755 /etc/grub.d/40_custom
Referanslar