DÜZENLEME: Bu yanıtı yazdığımda, EFI_STUB yapılandırılmış bir çekirdeği ile gönderilen çok az sayıda dağıtım, böylece özel bir tane oluşturmak zorunda kaldı. Günümüzde çoğu dağıtım uygun şekilde yapılandırılmış bir çekirdek gönderiyor ve artık özel bir yapıya gerek yok. Bu durumda, “ Bölümlerinizi ayarlayın” ve “Bir şeyleri ayarlayın” bölümleri ilginçtir, “Gereksinimler” ve “Çekirdeğin Derlenmesi” atlanabilir.
Windows'un UEFI'yi nasıl ele aldığını bilmiyorum, ancak Debian tarafından oldukça basit.
Bölümlerinizi ayarlayın
MBR'yi değil, GPT bölümleme şemasını kullanın.
UEFI ile bir GPT bölümünden önyükleme yapmak için EFI SYSTEM PARTITION (ESP) adı verilen özel bir önyükleme bölümü zorunludur . Zorunlu değildir, ancak en uyumlu yol bir FAT32 bölümü kullanmaktır. Çoğu durumda 200 MiB büyüklüğünde olmalıdır.
Bölümü ESP olarak kaydetmek için, boot
bayrakla işaretlenmelidir. MBR şemalarının aksine, önyükleme bayrağı önyüklenebilecek bölümleri değil, yalnızca ESP'yi belirtmek için kullanılır.
UEFI, \EFI\<vendor>\<application>.efi
UEFI uygulamalarını saklamak için bir dizin yapısı kullanır . Linux'ta bile bir dizin ayırıcı ters eğik çizgi ile gösterilir . bir dağıtım adı olabilir, gerçek değer UEFI ile ilgili değildir.
Uygulamalar bellek denetleyicileri veya bir UEFI kabuğu gibi sistem yardımcı programları olabilir. Ayrıca bir OS yükleyici veya işletim sisteminin kendisi olabilir. Önyükleme zamanında başlatılabilmesi için bu uygulamaların UEFI'ye kaydedilmesi gerekir.
Gereksinimler
Linux çekirdek sürümü> = 3.3 doğrudan UEFI tarafından yüklenebilir. Çekirdek kendi yükleyicisi olarak hareket edebilir. Buna EFISTUB denir . Aşağıdaki çekirdek yapılandırmaları gereklidir.
CONFIG_EFI = y
CONFIG_EFI_PARTITION = y
CONFIG_EFI_STUB = y
CONFIG_RELOCATABLE = y
CONFIG_FB_EFI = y
CONFIG_FRAMEBUFFER_CONSOLE = y
CONFIG_EFI_VARS m =
Bu yapılandırmaya sahip bir çekirdek şu anda Debian kararlı değil. Kendi çekirdeğinizi pişirebilir veya deney ağacından olanı kullanabilirsiniz, bu durumda bir sonraki paragrafı atlayabilirsiniz.
Çekirdeğin derlenmesi
(muhtemelen daha fazla gerekli değildir, düzenlemeye bakın)
Çekirdeği derlemeye karar verirseniz, burada nasıl yapılacağına dair kısa talimatlar verilmiştir. Sorunlarla karşılaşırsanız, bir çekirdeği nasıl derleyeceğiniz konusunda birçok bilgi bulabilirsiniz.
Kaynağı almak
git clone git: //git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
Belirli bir sürüme göz atın
git ödeme v3.6
Çekirdeği yapılandırma
menuconfig yap
Sisteminizde gereken ayarları yapın veya özelleştirilecek bir şeyiniz olmadığı gibi bırakın. Bu, çekirdek yapılandırmasını dosyaya yazar .config
.
Önceki paragraftaki ayarların yapıldığından emin olun. Seçmek de mantıklı CONFIG_INPUT_EVBUG=n
. Aksi takdirde, günlükleriniz önemsiz GiB ile doldurulacaktır.
İnşaat çekirdeği
INSTALL_MOD_STRIP = 1 make-kpkg --uc --us ikili kemer
Paketler üst dizinde oluşturulur.
Çekirdek kurulumu
dpkg -i linux-resim-3.5.0_Custom.deb linux-başlıkları-3.5.0_Custom.deb
İnitramfs oluşturma
mkinitramfs -o /boot/initrd.img-3.6.0-amd64 3.6.0
3.6.0 çekirdek sürümüdür. Varsayılan olarak, hala eski çekirdeği çalıştırdığınız için iyi bir seçim olmayan çalışan çekirdeğe ayarlanır.
İşleri kurma
Linux çekirdeğini önyükleyebilmek için, initramfs ile birlikte ESP'ye kopyalanması gerekir. ESP'nin/boot/efi
/boot/efi/EFI/debian/vmlinuz-3.6.0.efi
/boot/efi/EFI/debian/initrd.img-3.6.0
NOT: Çoğu sistemle uyumluluğu sağlamak için, eklentinin efi
çekirdeğe eklenmesi gerekir.
Artık çekirdek UEFI'ye kaydedilebilir. Bunun için aracı kullanıyoruz efibootmgr
.
echo "root = UUID = 3a4287b6-b3a7-4721-da38-acc38a928278 ro rootfstype = ext4 add_efi_memmap initrd = \\ EFI \\ debian \\ initrd.img-3.6.0" |
iconv -f ascii -t ucs2 |
efibootmgr \
--oluşturmak \
--gpt \
--disk / dev / sda \
- bölüm 4 \
--label "Debian Linux çekirdeği 3.6.0" \
--yükleyici "\\ EFI \\ debian \\ vmlinuz-3.6.0" \
--write-signature \
--ekle-ikili-argümanlar -
Argümanı --disk
, çekirdeğin bulunduğu cihazdır, ESP değil.
--part
çekirdeğin bulunduğu bölüm numarasıdır. --label
UEFI önyükleme menüsündeki girdidir.
Mevcut girişlerin bir listesini görmek için efibootmgr
argüman olmadan başlatmanız yeterlidir. Belirli bir girişi silmek için sözdizimi
efibootmgr -b girişi (onaltılık) -B
Örneğin:
efibootmgr -b 001a -B
Bu talimatlar çekirdek güncellemesi için geçerli değildir. Çekirdek ve initramfs otomatik olarak ESP'ye kopyalanmaz. Bu, çekirdeği ve initramfs'ı ESP'ye kopyalayan ve çalıştıran kısa bir komut dosyası kullanılarak yapılabilir efibootmgr
. Bu komut dosyası /etc/kernel/postinst.d
, çekirdek güncelleştirildikten sonra otomatik olarak başlatılacak şekilde yerleştirilebilir .
Not: GRUB gibi bir önyükleme yöneticisine gerek yoktur, UEFI'nin kendisi bir önyükleme yöneticisi olarak görev yapar.
Linux tarafında ihtiyacınız olan her şey bu, Windows'u eklemek için ne gerektiğini bilmiyorum.