Tại sao grub không tương thích với pi mâm xôi?


10

Tôi đã đọc rất nhiều lần rằng pi mâm xôi không hỗ trợ grub. Tôi đã không thể tìm thấy bất kỳ chi tiết cụ thể về sự không tương thích. Tôi chỉ tìm thấy những tuyên bố khá cùn về hình thức "nó không được hỗ trợ".

Tôi muốn hiểu chính xác vấn đề là gì và những gì cần được viết lại để làm cho nó hoạt động.

Những gì tôi đã tìm thấy cho đến nay là bộ tải khởi động giai đoạn 3 đọc start.elf lần lượt đọc hình ảnh hạt nhân. Theo suy nghĩ của tôi, nếu grub hoạt động, nó sẽ thay thế (hoàn toàn) start.elf. Tôi đã xem định dạng của bộ tải khởi động UEFI và phát hiện ra rằng chúng sử dụng định dạng PE có thể thực thi được. Vì vậy, giả thuyết đầu tiên của tôi là sự không tương thích là (chỉ) mà grub được biên dịch dưới dạng PE và giai đoạn 3 chỉ đọc ELF .

Tôi đã bỏ lỡ một số không tương thích lớn khác? Tôi đã bỏ lỡ một số nhiệm vụ quan trọng khác start.elfsẽ bị mất nếu nó được thay thế bởi grub?


Tôi không 100% về vấn đề này, nhưng tôi nghĩ vấn đề là bộ xử lý ARM. AFAIK, grubchỉ hoạt động cho kiến ​​trúc Intel.
Seamus

@Seamus Cảm ơn bạn đã suy nghĩ. Sự tồn tại của gói Debian grub-efi-arm cho thấy grub có thể được sử dụng trên ARM.
Philip Couling


Không biết điều đó - cảm ơn! Bạn đã thử phiên bản ARM của GRUB chưa?
Seamus

4
Tôi muốn nhận được nhận xét từ những người đã bỏ phiếu để đóng câu hỏi này là "không dành riêng cho Raspberry Pi". Làm thế nào là một vấn đề của một cái gì đó không tương thích với Raspberry Pi không cụ thể cho nó?
Dmitry Grigoryev

Câu trả lời:


5

Trên thực tế, nếu bạn muốn cài đặt Ubuntu với một kernel chung trên Raspberry Pi, bạn phải sử dụng grub2, như được mô tả ở đây .

Vấn đề tương thích duy nhất là grub2 có thể đặt cờ EFI trên phân vùng khởi động và bộ tải khởi động RPi sẽ từ chối khởi động một phân vùng với cờ EFI được đặt. Cờ có thể được xóa thủ công bởi bất kỳ trình chỉnh sửa phân vùng nào, làm cho cả bộ tải khởi động RPi và grub2 nhận ra phân vùng chính xác.


Đó là một liên kết sáng bóng mà tôi đã không tìm thấy. Tôi tự hỏi nếu kiểm tra EFI có thể được tắt.
Philip Couling

@PhilipCouling Tôi không nghĩ vậy, theo cách hiểu của tôi, việc kiểm tra được thực hiện trong phần nguồn đóng của chuỗi bộ nạp khởi động.
Dmitry Grigoryev

2

Raspberry Pi đặc biệt là bộ đệm chính (ROM trên chip), thứ cấp (bootcode.bin) và bộ tải khởi động thứ ba (start.elf) được thực thi trên GPU của nó , một chuỗi tải khác. Tập lệnh không được ghi lại đúng cách và start.elf là bí mật hàng đầu.

Những gì có thể được thực hiện (như SuSE và Microsoft đã chứng minh) là thay thế kernel.img theo ý muốn - ngay cả với phiên bản tùy chỉnh của TianoCore (triển khai UEFI mã nguồn mở) hoặc U-Boot. Điều này sau đó có thể được sử dụng để bắt đầu nhị phân GRUB2 hoặc BOOTMGR tương thích UEFI.


Thật. Raspberry Pi 3 thực sự đã có phần mềm UEFI hoàn thiện và công việc đang diễn ra để mang lại điều tương tự cho Pi 4. Với điều này, bạn có thể dễ dàng cài đặt các bản phân phối vanilla Linux và sử dụng GRUB làm bộ tải khởi động. Ví dụ về cài đặt Debian vanilla với GRUB có thể được tìm thấy ở đây .
Akeo
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.