EDIT: Ketika saya menulis jawaban ini sangat sedikit distribusi yang dikirimkan dengan kernel yang dikonfigurasi EFI_STUB sehingga orang harus membuat yang kustom. Saat ini sebagian besar distribusi mengirimkan kernel yang dikonfigurasi dengan tepat dan custom build tidak diperlukan lagi. Dalam hal ini, bagian "Atur partisi Anda" dan "Pengaturan segalanya" adalah yang menarik, "Persyaratan" dan "Kompilasi kernel" dapat dilewati.
Saya tidak tahu bagaimana Windows menangani UEFI, tetapi dari sisi Debian cukup mudah.
Siapkan partisi Anda
Gunakan skema partisi GPT, bukan MBR.
Untuk mem-boot dari partisi GPT dengan UEFI, partisi boot khusus diamanatkan, disebut EFI SYSTEM PARTITION (ESP). Ini tidak wajib, tetapi cara yang paling kompatibel adalah dengan menggunakan partisi FAT32. Ukuran 200 MiB harus baik untuk sebagian besar kasus.
Untuk mendaftarkan partisi sebagai ESP, partisi tersebut harus ditandai dengan boot
flag. Berbeda dengan skema MBR, flag boot hanya digunakan untuk mengindikasikan ESP, bukan partisi yang dapat digunakan untuk boot.
UEFI menggunakan struktur direktori \EFI\<vendor>\<application>.efi
untuk menyimpan aplikasi UEFI. Pemisah direktori dilambangkan dengan backslash , bahkan di Linux. bisa berupa nama distribusi, nilai sebenarnya tidak relevan dengan UEFI.
Aplikasi dapat berupa utilitas sistem seperti checker memori atau shell UEFI. Ini juga bisa menjadi pemuat OS atau sistem operasi itu sendiri. Aplikasi ini harus terdaftar di UEFI untuk dapat diluncurkan pada saat boot.
Persyaratan
Versi kernel Linux> = 3.3 dapat dimuat secara langsung oleh UEFI. Kernel dapat bertindak sebagai pemuatnya sendiri. Ini disebut EFISTUB . Konfigurasi kernel berikut diperlukan.
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
Kernel dengan konfigurasi ini saat ini belum ada di Debian stable. Anda dapat memanggang kernel Anda sendiri atau menggunakannya dari pohon eksperimental dalam hal ini Anda dapat melewatkan paragraf berikutnya.
Kompilasi kernel
(mungkin tidak perlu lagi, lihat edit)
Jika Anda memutuskan untuk mengkompilasi kernel di sini adalah petunjuk singkat bagaimana melakukannya. Jika Anda mengalami masalah, ada banyak informasi yang tersedia tentang cara mengkompilasi kernel.
Mendapatkan sumbernya
git clone git: //git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
Lihat satu versi tertentu
git checkout v3.6
Konfigurasi kernel
buat menuconfig
Buat pengaturan yang diperlukan pada sistem Anda atau biarkan seperti itu jika Anda tidak memiliki apa pun untuk dikustomisasi. Ini menulis konfigurasi kernel ke file .config
.
Pastikan pengaturan dari paragraf sebelumnya diatur. Masuk akal juga untuk memilih CONFIG_INPUT_EVBUG=n
. Kalau tidak, log Anda akan diisi dengan GiB sampah.
Membangun kernel
INSTALL_MOD_STRIP = 1 make-kpkg --uc --us binary-arch
Paket dibuat di direktori induk.
Menginstal kernel
dpkg -i linux-image-3.5.0_Custom.deb linux-headers-3.5.0_Custom.deb
Membangun initramfs
mkinitramfs -o /boot/initrd.img-3.6.0-amd64 3.6.0
3.6.0 adalah versi kernel. Ini default ke kernel yang berjalan, yang bukan pilihan yang baik, karena Anda masih menjalankan kernel lama.
Menyiapkan segalanya
Agar dapat mem-boot kernel Linux, ia harus disalin ke ESP bersama dengan initramfs. Mengingat bahwa ESP dipasang di/boot/efi
/boot/efi/EFI/debian/vmlinuz-3.6.0.efi
/boot/efi/EFI/debian/initrd.img-3.6.0
CATATAN: Untuk memastikan kompatibilitas dengan sebagian besar sistem, ekstensi efi
harus ditambahkan ke kernel.
Sekarang kernel dapat didaftarkan di UEFI. Kami menggunakan alat efibootmgr
untuk itu.
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 \
--ciptakan \
--gpt \
--disk / dev / sda \
- bagian 4 \
--label "Kernel Linux Debian 3.6.0" \
--loader "\\ EFI \\ debian \\ vmlinuz-3.6.0" \
--write-signature \
--append-binary-args -
Argumennya --disk
adalah perangkat tempat kernel berada, bukan ESP.
--part
adalah nomor partisi tempat kernel berada. --label
adalah entri dalam menu boot UEFI.
Untuk melihat daftar entri yang tersedia, luncurkan saja efibootmgr
tanpa argumen. Sintaks untuk menghapus entri tertentu
entri efibootmgr -b (hex) -B
sebagai contoh:
efibootmgr -b 001a -B
Instruksi ini tidak menangani kasus pembaruan kernel. Kernel dan initramfs tidak secara otomatis disalin ke ESP. Ini dapat dilakukan dengan menggunakan skrip pendek yang menyalin kernel dan initramfs ke ESP dan berjalan efibootmgr
. Skrip ini dapat ditempatkan /etc/kernel/postinst.d
untuk diluncurkan secara otomatis setelah kernel diperbarui.
Catatan: Boot manager seperti GRUB tidak diperlukan, UEFI sendiri bertindak sebagai boot manager.
Itu saja yang Anda butuhkan dari sisi Linux, saya tidak tahu apa yang diperlukan untuk menambahkan Windows.