Có thể sử dụng USB-Stick lai cho UEFI & BIOS kế thừa không?


14

ý tưởng của tôi là tạo ra một USB-Boot-Stick với Lubfox có khả năng khởi động trên một máy tính xách tay BIOS cũ hơn và một Hệ thống UEFI mới hơn.

Điều này sẽ khá dễ dàng, khi Stick sẽ được thiết lập như một thiết bị khởi động cũ, nhưng tôi muốn nó là một thiết bị có khả năng UEFI.

  1. Điều đó có ý nghĩa gì không?! Hay tôi đã hiểu khái niệm UEFI sai một cách khủng khiếp?
  2. Nếu cần, có thể có hai bản cài đặt Linux khác nhau (một cho UEFI, một cho di sản nhưng cả hai trên cùng một ổ đĩa)
  3. Khởi động thiết bị GPT trên Bios kế thừa - nó có hoạt động không?

Tôi không thể thấy rõ, nó có thể chỉ là một ý tưởng tốt hơn để có một thanh khởi động Linux riêng biệt, nhưng tôi tò mò khám phá các ràng buộc :)

Vì vậy, ý tưởng của tôi về một chiếc linux-uefi-boot-usb-stick lai có thể hoạt động với bios kế thừa có thể không?


(3) có vẻ là có thể cho linux với grub http://www.rodsbooks.com/gdisk/booting.html

Hơn nữa, tôi có sẵn một Phân vùng EF00 trên thanh đó, ngoài một phân vùng Hoán đổi, Fat32 và hai phân vùng Ext4.


(1) dường như cũng có thể xảy ra http://www.rodsbooks.com/bios2uefi/

Hướng dẫn này tuy nhiên từ năm 2012, một thời gian đã trôi qua kể từ khi - có ai có một ví dụ làm việc dễ dàng hơn không?


Đối với các nhà nghiên cứu khác của chủ đề này:

Khởi động Windows 7 từ đĩa GPT trên bo mạch chủ không phải EFI Có cách nào để khởi động Windows 7/8 bằng BIOS trên GPT không?

http://www.borncity.com/blog/2012/07/25/uefi-emulation-auf-pcs/


CẬP NHẬT:

Tôi đã quản lý để tạo phần UEFI bao gồm thiết lập Khởi động an toàn với rEFInd.

Theo lời khuyên được đưa ra, tôi đã từng ddsao chép gptmbr.binvào ổ đĩa của mình, điều này dường như làm ít nhất một cái gì đó trên Hệ thống BIOS: "Đây không phải là đĩa khởi động được"

Tuy nhiên, tôi đã làm theo lời khuyên và đặt pmbrcờ cho đĩa và legacy bootcờ gpt - vẫn nhận được lỗi này, có ý tưởng nào không?

Phân vùng ESP của tôi là phân vùng thứ hai trên đĩa và được thiết lập với các tệp efi.

Cài đặt:

  • Dung lượng 64GB
  • GPT Partitiontable
  • Đĩa có cờ pmbr được đặt
  • Phân vùng thứ nhất bắt đầu từ 16MiB và có dung lượng khoảng 45 GB, một dữ liệu chính dành cho dữ liệu
  • Phân vùng thứ 2 bắt đầu khoảng 45 GB và là Hệ thống EFI (fat32) với thiết lập rEFInd hoạt động
  • Phân vùng thứ 3 - 5 là nhà (ext4), trao đổi và root (ext4) của LubFi 14.04.1 đang hoạt động của tôi

Sử dụng ddtôi đã sao chép gptmbr.binSyslinux 6.02 đã biên dịch của tôi sang 440byte đầu tiên.

Trong phần 3.2 tôi có thể thấy rằng phân vùng 2 của tôi có một cờ bootlegacy_boot.

Trong quá trình khởi động, tôi nhận được Không tìm thấy đĩa khởi động - nếu tôi đặt phân vùng thứ 5 thay vì phân vùng thứ 2, legacy_boottôi sẽ bị thiếu hệ điều hành

Nó còn sống!

(Như Câu hỏi cũ của tôi đã bị xóa https://askubfox.com/q/516730/319747 )


Tôi đoán là, tôi phải sao chép một số *.c32tệp và các tệp khác vào thư mục syslinux sáng hơn trên EFI của tôi (ở đâu?!) Hoặc trên phân vùng gốc của tôi ( /boot/syslinux?!) Để nó hoạt động - tôi có đúng không? Những tập tin nào là thiết yếu?

Hơn nữa, tôi đoán tôi cũng sẽ cần syslinucx.cfgtập tin đó - phải không?


Mục tiêu của tôi ít nhất là khởi động trực tiếp hệ thống Lubfox trên phân vùng ext4 gốc.

Cập nhật:

Mặc dù tôi không biết tại sao, tôi đã làm cho nó hoạt động - nhưng không phải với cài đặt thủ công.

  • các pmbrlá cờ là xấu và bị cấm hệ thống UEFI của tôi khởi động thanh như UEFI
  • các legacy_bootlá cờ là cần thiết cho phân vùng thứ 5 của tôi (root linux)
  • Tôi đã phải sử dụng extlinux --install /path/to/root/parition
  • Tôi đã phải tạo một syslinux.cfgthư mục syslinux khi khởi động phân vùng gốc của mình

Tôi đã làm tất cả những điều này trên một thanh nhỏ thứ hai, sau đó cố gắng sao chép chỉ thư mục syslinux, nhưng không có may mắn - extlinux --installdường như là bắt buộc.

Bất cứ ai cũng biết chính xác những gì extlinux --installlàm? Nó có thể được thực hiện thủ công hay làm thế nào khác bạn có thể cài đặt phiên bản mới hơn như 6.02 mà không cần cài đặt nó vào hệ thống của bạn?

Có cây gậy của tôi làm việc với các phân vùng được đề cập trên BIOS, UEFI và UEFI SecureBoot, địa ngục, đã học được rất nhiều, gần như giết chết 2TB khi chia tay, hãy cẩn thận và chúc may mắn.


liên kết của bạn bị hỏng .. bạn có câu chuyện của bạn ở nơi nào khác không? tôi cũng muốn làm như vậy cảm ơn.
pvinis

1
@pvinis cảm ơn vì thông tin này, tôi đã hợp nhất câu hỏi / kết quả từ Askubfox ở đây, vì nó đã bị xóa
Jook

Câu trả lời:


11

Điều đó là có thể, và nó được thực hiện rất thường xuyên với cả thanh USB ngoài và ổ đĩa trong.

Về các loại bảng phân vùng:

  • BIOS thường không cần bất kỳ bảng phân vùng. Nó chỉ quan tâm đến phần mã bootstrap là 440 byte đầu tiên của MBR của bạn. (Mặc dù có trường hợp ngoại lệ. Một số triển khai BIOS thực sự bị hỏng nếu họ không thể tìm thấy MBR với một trong các loại phân vùng thông thường. Hy vọng rằng đó là những trường hợp hiếm.)

    Bảng phân vùng GPT không thay thế vật lý MBR - nó luôn bắt đầu ở khu vực 1, trong khi MBR ở khu vực 0 - vì vậy một đĩa có thể có cả hai. Trong thực tế, hầu hết các đĩa GPT làm có một "MBR bảo vệ" chứa chỉ một phân vùng duy nhất mà bao gồm toàn bộ đĩa, để ngăn chặn các công cụ MBR chỉ phân vùng cũ vô tình phá hủy dữ liệu.

    Vì vậy, bạn có thể cài đặt, ví dụ, khu vực khởi động Syslinux vào MBR của bạn và nó sẽ khởi động. (  syslinux-install_updateKịch bản sẽ làm điều này cho bạn, nhưng bạn có thể tìm gptmbr.bintrong gói syslinux của mình để thực hiện thủ công.)

    Giống như cờ "hoạt động" trên các phân vùng MBR, Syslinux sẽ tìm kiếm cờ "khả năng khởi động BIOS kế thừa" trên các phân vùng GPT (bit 2 - UEFI spec 2.4 phần 5.3.3 bảng 20); tập lệnh nói trên cũng tự động đặt cờ đó nếu bạn đã sgdiskcài đặt (từ gptfdisk).

    GRUB cũng có thể được sử dụng, nhưng nó cũng khó chịu hơn một chút. Vì GRUB 2 muốn "nhúng" các phần của chính nó vào các khu vực không được sử dụng theo truyền thống 1-62, nên nó sẽ ghi đè lên một GPT được lưu trữ trong cùng một vị trí. Vì vậy, bạn có thể cần phải tạo một phân vùng chuyên dụng 2-4 MB và đánh dấu nó là khả năng khởi động BIOS, để nó grub-installcó thể tự tìm thấy một vị trí nhúng.

  • Mặt khác, các đặc điểm kỹ thuật UEFI không yêu cầu hỗ trợ với nhiều loại phân vùng MBR (phần 12.3.1) và gán kiểu phân vùng MBR 0xEFđể phân vùng hệ thống EFI (phần 5.2.2).

    Vì vậy, nếu bạn vì một lý do nào đó không thể khiến đĩa của bạn hoạt động với GPT, bạn vẫn có thể tạo phân vùng hệ thống EFI trên MBR và nó sẽ được sử dụng miễn là nó có hệ thống tệp chính xác và tất cả các tệp cần thiết (phần 12.3.1.3):

    Đối với các thiết bị đa phương tiện có thể tháo rời, chỉ có một phân vùng hệ thống tuân thủ UEFI và phân vùng đó phải chứa một thư mục do UEFI xác định trong thư mục gốc. Thư mục sẽ được đặt tên EFI. Tất cả các trình tải và ứng dụng hệ điều hành sẽ được lưu trữ trong thư mục con bên dưới EFIđược gọi BOOT. Chỉ phải có một hình ảnh EFI thực thi cho mỗi kiến ​​trúc bộ xử lý được hỗ trợ trong BOOTthư mục. Để phương tiện di động có thể khởi động được theo EFI, nó phải được xây dựng theo các quy tắc được nêu trong Mục 3.4.1.1.

Về hệ điều hành, Linux thường không quan tâm một chút đến việc liệu nó có khởi động từ BIOS hôm nay và từ UEFI ngày mai hay không. Tôi đã phải khởi động lại máy tính xách tay của mình từ chế độ UEFI sang chế độ "tương thích BIOS" và có thể quay lại hàng trăm lần trong tuần này, trong khi cố gắng tìm lỗi trong hỗ trợ UEFI 3.17 ...


Lưu ý rằng bài viết "Chuyển đổi BIOS sang UEFI" là về một điều hoàn toàn khác. Nó mô tả cách tự cài đặt UEFI - một triển khai UEFI có tên "DUET" - được bắt đầu từ một hệ thống chỉ có BIOS. Nó không có gì để làm với việc khởi động một hệ điều hành trực tiếp từ BIOS.


+1 - syslinux_install Tôi sẽ xem xét điều đó, cảm ơn bạn đã xác nhận, trấn an và nhập liệu mới
Jook

Tôi đã làm theo lời khuyên của bạn, nhưng bị mắc kẹt với thiết lập, tôi mbrcó vẻ ổn nhưng không tìm thấy EFI Systemphân vùng của mình . Có vấn đề gì không, đó là phân vùng thứ hai trên đĩa bắt đầu khoảng 45 GB vào đĩa? Tôi có phải thiết lập một phần phổ trên EFI ngoài cài đặt EFI hoạt động ở đó không?
Jook

Nó đã hoạt động :) vì vậy, cảm ơn! syslinux khá hay và dẫn tôi đến gPxe và plopkexec, tôi sẽ kiểm tra thêm một lần nữa. Đối với bất kỳ nhà nghiên cứu nào khác: askubfox.com/q/516730/319747
Jook

2

Vâng, điều này là có thể.

Ý tưởng cơ bản là phân vùng GPT thanh USB của bạn như thế này:

  1. Phân vùng khởi động BIOS (loại GPT 1686148-6449-6E6F-744E-656564454649) - 1 MiB, không có hệ thống tệp
  2. Phân vùng hệ thống EFI (loại GPT C12A7328-F81F-11D2-BA4B-00A0C93EC93B) - Hệ thống tệp 200 MiB, VFAT
  3. Phân vùng khởi động Linux (loại GPT 0FC63DAF-8483-4772-8E79-3D69D8477DE4) - Hệ thống tệp 1 GiB, ext4
  4. Hệ thống tệp gốc / nhà của Linux (loại GPT 0FC63DAF-8483-4772-8E79-3D69D8477DE4) - không gian còn lại, hệ thống tệp XFS hoặc Btrfs

Phân vùng này cho phép chúng tôi khởi động trên các hệ thống Legacy vì với GPT vẫn còn không gian cho MBR (vì lý do tương thích ngược) và Grub2 có đủ không gian để cài đặt một số giai đoạn giữa vào phân vùng khởi động BIOS. Các BIOS kế thừa không quan tâm đến sơ đồ phân vùng và Hạt nhân Grub2 / Linux không có vấn đề gì khi hiểu GPT trên các hệ thống Legacy.

Trên các hệ thống UEFI , phần sụn UEFI bỏ qua MBR và sử dụng phân vùng hệ thống EFI làm điểm vào.

Ví dụ, với Fedora, về cơ bản bạn phải làm như sau:

Đảm bảo rằng hệ thống tệp Linux Boot được gắn bên dưới /bootvà hệ thống tệp phân vùng hệ thống EFI được gắn bên dưới /boot/efi.

(Re-) Cài đặt cả bộ tải khởi động kế thừa và UEFI:

grub2-pc grub2-efi-x64 shim-x64 efibootmgr

(Re-) Tạo các tệp cấu hình grub cho cả di sản và UEFI boot:

# grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
# grub2-mkconfig -o /boot/grub2/grub.cfg

Tùy thuộc vào việc hệ thống của bạn đã khởi động ở chế độ kế thừa hay UEFI, bạn phải sửa tệp thứ nhất hoặc thứ hai và thay thế (linux|initrd)16bằng (linux|initrd)efihoặc ngược lại.

Cài đặt grub vào MBR:

# grub2-install --target=i386-pc /dev/sd_your_usb_stick_device

Voila.


PS: Tôi đã viết một kịch bản cung cấp thực hiện phương pháp lai này và do đó có thể được sử dụng để tự động tạo ra một thanh USB như vậy.
maxschlepzig
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.