Apa yang harus saya lakukan sebelum dual-boot Windows 7 dan Debian di EFI?

10

Saya akan membeli motherboard Asus dengan firmware EFI dan ingin mempersiapkan diri untuk menginstal Windows dan Debian begitu perangkat kerasnya tiba. Saya berharap bahwa seseorang yang telah menuruni jalan ini dapat memberi saya beberapa petunjuk.

Persiapan apa yang harus saya buat sebelum mencoba menginstal Windows 7 dan Debian pada sistem berbasis UEFI baru?

Tuan Shickadance
sumber

Jawaban:

8

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 bootflag. 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>.efiuntuk 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 efiharus ditambahkan ke kernel.

Sekarang kernel dapat didaftarkan di UEFI. Kami menggunakan alat efibootmgruntuk 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 --diskadalah perangkat tempat kernel berada, bukan ESP. --partadalah nomor partisi tempat kernel berada. --labeladalah entri dalam menu boot UEFI.

Untuk melihat daftar entri yang tersedia, luncurkan saja efibootmgrtanpa 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.duntuk 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.

Marco
sumber
2

Pastikan UEFI tidak akan mengunci Linux dari mesin Anda; mungkin ada pengaturan untuk efek itu di BIOS. Periksa dan verifikasi pasti. Saya akan memeriksa titik ini dengan manual dan dengan pabrikan jika Anda harus.

Ada beberapa diskusi panjang tentang hal itu; ZDNet memiliki beberapa artikel. Ini adalah artikel dari 21 September 2011 dan satu dari 23 September .

Kedua, berdasarkan data historis, Anda mungkin ingin menginstal Windows terlebih dahulu. Secara tradisional, Windows hanya berasumsi bahwa itu adalah satu-satunya OS pada mesin - dengan demikian, menghapus semua data boot yang terkait dengan Linux. Ini mungkin berbeda untuk UEFI, saya tidak tahu.

Mei
sumber
2

Anda tidak perlu mem-boot Windows dan Linux pada UEFI. Ikuti panduan ini untuk mengonversi UEFI Anda ke MBR-BIOS tanpa kehilangan data.

Panduan ini dibuat oleh saya. Juga, blog yang dirujuk tidak akan pernah dihapus. Meskipun saya telah menggunakannya 10 kali tanpa kehilangan data, saya sarankan Anda untuk membuat cadangan data sebelum menggunakan prosedur saya.

Nehal J Wani
sumber
2

Saya sungguh-sungguh dapat merekomendasikan seri artikel UEFI oleh Rod Smith . Secara khusus, ia menyebutkan bahwa "hybrid" GPT-MBR adalah "hack berbahaya" karena bahaya desinkronisasi.

Michael Shigorin
sumber