Tôi nên làm gì trước khi khởi động kép Windows 7 và Debian trên EFI?


10

Tôi sắp mua bo mạch chủ Asus với phần sụn EFI và muốn tự chuẩn bị cho việc cài đặt Windows và Debian khi phần cứng đến. Tôi đã hy vọng rằng ai đó đã đi trên con đường này có thể cho tôi một vài gợi ý.

Tôi nên chuẩn bị gì trước khi thử cài đặt Windows 7 và Debian trên hệ thống dựa trên UEFI mới?

Câu trả lời:


8

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”“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 bootcờ. 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 efiphả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ụ efibootmgrcho 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 --disklà thiết bị chứa kernel, không phải là ESP. --partlà số phân vùng nơi kernel cư trú. --labellà 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 efibootmgrmà 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.


2

Đảm bảo rằng UEFI sẽ không khóa Linux khỏi máy của bạn; có lẽ có một thiết lập cho hiệu ứng đó trong BIOS. Kiểm tra và xác minh cho chắc chắn. Tôi sẽ kiểm tra kỹ điểm này với hướng dẫn và với nhà sản xuất nếu bạn phải.

Có một số cuộc thảo luận mở rộng về nó; ZDNet đã có một số bài viết. Đây là một bài viết từ ngày 21 tháng 9 năm 2011 và một từ ngày 23 tháng 9 .

Thứ hai, dựa trên dữ liệu lịch sử, bạn có thể muốn cài đặt Windows trước. Theo truyền thống, Windows chỉ giả định rằng đó là HĐH duy nhất trên máy - do đó, nó xóa sạch mọi dữ liệu khởi động liên quan đến Linux. Điều này có thể khác với UEFI, tôi không biết.


2

Bạn không nhất thiết phải khởi động kép Windows và Linux trên UEFI. Làm theo hướng dẫn để chuyển đổi UEFI của bạn sang MBR-BIOS mà không mất dữ liệu.

Hướng dẫn này đã được thực hiện bởi tôi. Ngoài ra, blog được giới thiệu sẽ không bao giờ được gỡ xuống. Mặc dù tôi đã sử dụng nó như 10 lần mà không mất dữ liệu, tôi sẽ khuyên bạn nên sao lưu dữ liệu trước khi sử dụng quy trình của mình.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.