İkinci sabit diskte çift önyükleme penceresi, UEFI / GPT sistemi


15

Linux'u kurmak istiyorum, ancak birçok korku hikayesi duyduğum için mevcut windows kurulumuma zarar verme riskini almak istemiyorum. Neyse ki, fazladan bir sabit diskim var. Linux sürücüsünü ve ardından çift önyükleme pencerelerini Windows sürücüsünü değiştirmek zorunda kalmadan yükleyebilir miyim?

Ayrıca, bir UEFI "BIOS" var ve windows sürücüsü GPT biçimindedir.

Yanıtlar:


18

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:

  1. Linux'u ilk diske yükledim ve şimdi pencereleri önyükleyemiyorum veya

  2. 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, suuygun şekilde girmediniz . Eğer alırsanız chown: invalid user: ‘yourusername’, son komutu tam anlamıyla aldınız.

Artık /etc/grub.ddosya 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 ( ntfsgereksiz 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-cgibi 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-probeveya adlı bir araç yüklü olmalıdır (örn., Fedora) grub2-probe. Yazın grubve 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 insmodkomutlardan 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-mkconfigveya 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-mkconfigdoğ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-mkconfigDoğrudan kullanmak için önce şunları bulmamız gerekir grub.cfg:

> find /boot -name grub.cfg

Bu muhtemelen /boot/grub/grub.cfgveya olacaktır /boot/grub2/grub.cfg.

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

update-grubotomatik olarak yapılandırmayı hatalar için tarar. grub-mkconfigolmayacak, 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.cfgterminalde 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-grubveya çalıştırın grub-mkconfig.

İşiniz bittiğinde metin düzenleyiciyi kapatabilir ve exitsü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.ddizinin ve içeriğinin sahipliğini orijinal durumlarına döndürün:

sudo chmod 755 /etc/grub.d/40_custom

Referanslar


2
Aradığın teknik olarak doğru terim, aynı zamanda tıknaz da değil, kendisini BIOS veya UEFI olarak sunabilen bellenimdir .
Milind R

Ne yazık ki bellenimin, donanıma gömülü herhangi bir yazılımı ifade etmesi bakımından çok daha genel bir anlamı vardır.
Kylotan

masaüstümde, "zincir" önyükleme sırasında bir komut olarak asılsız, ancak yazmam gereken 40_custom dosyasındaki chainloader. normal olup olmadığını bana bildirin
FlogFR

Çok hoş! Ancak bunu denediğimde, Windows 8 yüklemem grub2'de bir giriş olarak görünmeyecek. Tüm sözdizimi hatalarını düzelttim ve grub.cfg dosyası hatasız oluşturuldu. Ayrıca zincirleme ilk bahsedildiğinde sözdizimi hatası olduğunu lütfen unutmayın: chainload $({root})olması gereken chainload (${root})(bir değişiklik çok küçük olduğu için düzenleyemiyorum).
sobek

@sobek Bunun için teşekkürler - düzeltildi. İçindeki bir dosyaya bir şey /etc/grub.deklediyseniz ve yapılandırmayı oluştururken dosya eklenmiyorsa, garip bir şey oluyor. grub-mkconfigOnsuz çalıştırılırsa -o, standart tükenmeye başlarsa , bu, eklemelerinizin işlendiğini onaylamaya veya reddetmeye yardımcı olabilir.
goldilocks
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.