EDIT: Khi tôi viết câu trả lời này, rất ít bản phân phối được gửi cùng với hạt nhân được cấu hình EFI_STUB để người ta phải xây dựng một bản tùy chỉnh. Ngày nay, hầu hết các bản phân phối đều gửi một kernel được cấu hình phù hợp và bản dựng tùy chỉnh không còn cần thiết nữa. Trong trường hợp này các phần “Thiết lập phân vùng của bạn” và “thiết lập mọi thứ” là những người thú vị, “Yêu cầu” và “Biên dịch hạt nhân” có thể bỏ qua.
Tôi không biết Windows xử lý UEFI như thế nào, nhưng từ phía Debian, điều đó khá đơn giản.
Thiết lập phân vùng của bạn
Sử dụng sơ đồ phân vùng GPT, không phải MBR.
Để khởi động từ phân vùng GPT với UEFI, phân vùng khởi động chuyên dụng được ủy quyền, được gọi là PHẦN MỀM HỆ THỐNG EFI (ESP). Điều này không bắt buộc, nhưng cách tương thích nhất là sử dụng phân vùng FAT32. Một kích thước 200 MiB sẽ tốt cho hầu hết các trường hợp.
Để đăng ký phân vùng dưới dạng ESP, nó phải được gắn cờ với boot
cờ. Ngược lại với các lược đồ MBR, cờ khởi động chỉ được sử dụng để chỉ ra ESP, không phải các phân vùng để có thể khởi động từ đó.
UEFI sử dụng cấu trúc thư mục \EFI\<vendor>\<application>.efi
để lưu trữ các ứng dụng UEFI. Một dấu tách thư mục được biểu thị bằng dấu gạch chéo ngược , ngay cả trên Linux. có thể là tên phân phối, giá trị thực tế không liên quan đến UEFI.
Các ứng dụng có thể là các tiện ích hệ thống như bộ kiểm tra bộ nhớ hoặc vỏ UEFI. Nó cũng có thể là một trình tải hệ điều hành hoặc chính hệ điều hành. Các ứng dụng này cần được đăng ký trong UEFI để có thể được khởi chạy khi khởi động.
Yêu cầu
Phiên bản nhân Linux> = 3.3 có thể được UEFI tải trực tiếp. Nhân có thể hoạt động như bộ nạp riêng của nó. Điều này được gọi là EFISTUB . Các cấu hình kernel sau là cần thiết.
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
Một hạt nhân có cấu hình này hiện chưa ổn định trong Debian. Bạn có thể nướng hạt nhân của riêng bạn hoặc sử dụng hạt nhân từ cây thử nghiệm trong trường hợp đó bạn có thể bỏ qua đoạn tiếp theo.
Biên dịch kernel
(có lẽ không cần thiết nữa, xem chỉnh sửa)
Nếu bạn quyết định biên dịch kernel, đây là những hướng dẫn ngắn để làm điều đó. Nếu bạn gặp vấn đề, có rất nhiều thông tin có sẵn về cách biên dịch kernel.
Lấy nguồn
git clone git: //git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
Kiểm tra một phiên bản cụ thể
kiểm tra git v3.6
Cấu hình kernel
làm menuconfig
Thực hiện các cài đặt cần thiết trên hệ thống của bạn hoặc để nguyên như vậy nếu bạn không có gì để tùy chỉnh. Điều này ghi cấu hình kernel vào tập tin .config
.
Đảm bảo rằng các cài đặt từ đoạn trước được đặt. Nó cũng có ý nghĩa để lựa chọn CONFIG_INPUT_EVBUG=n
. Nếu không, nhật ký của bạn sẽ chứa đầy GiB của rác.
Hạt nhân xây dựng
INSTALL_MOD_STRIP = 1 make-kpkg --uc --us binary-arch
Các gói được tạo trong thư mục cha.
Cài đặt kernel
dpkg -i linux-image-3.5.0_Custom.deb linux-headers-3.5.0_Custom.deb
Xây dựng initramfs
mkinitramfs -o /boot/initrd.img-3.6.0-amd64 3.6.0
3.6.0 là phiên bản kernel. Nó mặc định cho kernel đang chạy, đây không phải là một lựa chọn tốt, vì bạn vẫn đang chạy kernel cũ.
Thiết lập mọi thứ
Để có thể khởi động kernel Linux, nó phải được sao chép vào ESP cùng với initramfs. Cho rằng ESP được gắn tại/boot/efi
/boot/efi/EFI/debian/vmlinuz-3.6.0.efi
/boot/efi/EFI/debian/initrd.img-3.6.0
GHI CHÚ: Để đảm bảo khả năng tương thích với hầu hết các hệ thống, phần mở rộng efi
phải được thêm vào kernel.
Bây giờ kernel có thể được đăng ký trong UEFI. Chúng tôi sử dụng công cụ efibootmgr
cho việc đó.
echo
iconv -f ascii -t ucs2 |
efibootmgr \
--tạo nên \
--gpt \
--disk / dev / sda \
- Phần 4 \
- dán nhãn "Hạt nhân Debian Linux 3.6.0" \
- Trình tải "\\ EFI \\ debian \\ vmlinuz-3.6.0" \
- chữ ký viết \
--append-binary-args -
Đối số của --disk
là thiết bị chứa kernel, không phải là ESP.
--part
là số phân vùng nơi kernel cư trú. --label
là mục trong menu khởi động UEFI.
Để xem danh sách các mục có sẵn, chỉ cần khởi chạy efibootmgr
mà không cần đối số. Cú pháp để xóa một mục cụ thể
mục nhập efibootmgr -b (hex) -B
ví dụ:
efibootmgr -b 001a -B
Các hướng dẫn này không xử lý trường hợp cập nhật kernel. Kernel và initramfs không được tự động sao chép vào ESP. Điều này có thể được thực hiện bằng cách sử dụng một đoạn script ngắn sao chép kernel và initramfs vào ESP và chạy efibootmgr
. Tập lệnh này có thể được đặt /etc/kernel/postinst.d
để được khởi chạy tự động sau khi kernel được cập nhật.
Lưu ý: Không cần trình quản lý khởi động như GRUB, UEFI tự hoạt động như một trình quản lý khởi động.
Đó là tất cả những gì bạn cần từ phía Linux, tôi không biết cần thêm gì để thêm Windows.