GRUB có phải là giải pháp tải khởi động tốt nhất? Có một sự thay thế dễ dàng hơn?


26

Tôi đã có một số kinh nghiệm khá xấu với GRUB2. Tôi có thể nói (và đã nói) một số điều khó chịu về quá trình thiết kế và phát triển của nó. Tôi đặc biệt không thích phương tiện cập nhật của nó: vì bất kỳ lý do gì, nó phải tự động cập nhật một số tập lệnh - một tập tin gián tiếp qua tập lệnh khác - cho mỗi bản cập nhật kernel - hoặc nhiều thay đổi cấu hình nhỏ (và dường như không liên quan) .

Điều này trái ngược hoàn toàn với những trải nghiệm trước đây tôi có LILO- mà tôi đang cân nhắc nghiêm túc về việc hoàn nguyên - vì tôi chưa bao giờ có bất kỳ vấn đề nào với nó, và cấu hình của nó khá đơn giản. Đối với một điều, như tôi nhớ, tôi chỉ phải cập nhật (hoặc, đúng hơn, nó chỉ cập nhật) một tệp văn bản cấu hình được quản lý đơn giản, đơn giản cho mỗi lần cập nhật kernel.

Vậy làm thế nào để LILO hoạt động trên phần cứng hiện đại với các hạt nhân ngày nay? GRUB thế nào? Làm thế nào để bộ tải khởi động khác? Tôi có phải thực hiện bất kỳ điều kiện tiên quyết nào không, hay chỉ là về việc viết tệp cấu hình và chạy lilolệnh khi tôi thích nhớ nó ngày xưa? Bản cập nhật gói kernel (Debian / Ubuntu) có cập nhật LILO như với GRUB2 không?


Tùy thuộc vào việc bạn có loại phần sụn EFI hay không mà bạn có thể làm mà không cần nếu bạn thích và tải kernel linux từ phần sụn. Nhưng bạn vẫn có thể sử dụng LILO với EFI (eLILO anyway) hoặc BIOS. Nó nằm trong cây nguồn kernel và được duy trì. Nếu bạn muốn biết cách thực hiện điều EFI tôi có thể trả lời, nhưng tôi không có kinh nghiệm cá nhân với LILO, chỉ cần biết rằng nó được giữ và hoạt động.
mikeerv

Tôi nhớ sử dụng LILO vào khoảng năm 2010 hoặc 2011 trên Core 2 Duo hiện tại. Tôi đoán nó vẫn hoạt động (xem xét UEFI, v.v.), kiến ​​trúc PC không thay đổi nhiều.
Renan

@mikeerv, vui lòng viết tất cả những gì bạn biết về bản song ca LILO-EFI. Bất kỳ thông tin liên quan đến chủ đề này đều được chào đón.

Tôi thực sự đã viết một cái gì đó bạn có thể thấy hữu ích sớm hơn ở đây , đề cập đến sự khác biệt giữa uefi / bios. Vấn đề là uefi bao gồm một bộ tải khởi động nên grub / lilo / bất cứ thứ gì đều dư thừa. Những gì nó thường không bao gồm là một trình quản lý khởi động - cho các menu và công cụ - vì vậy tôi khuyên bạn nên truy cập Rodbooks.com/refind
mikeerv

3
Vẫn là những gì tàu với Slackware. Đó không phải là một cộng đồng nhỏ.
Bandrami

Câu trả lời:


28

ELILO

Quản lý bộ tải khởi động EFI cho Linux: Sử dụng ELILO

Thật khó cho tôi khi quyết định phần nào trong đó sao chép + dán bởi vì tất cả đều thực sự tốt, vì vậy tôi sẽ chỉ yêu cầu bạn đọc nó.

Rod Smith

Tác giả và duy trì cả hai gdiskrEFInd.

Nhưng trước khi bạn muốn bình luận một chút về nó. Liên kết ELILO ở trên là một trong nhiều trang về việc khởi động UEFI mà bạn sẽ tìm thấy trên Rodbooks.com được viết bởi Rod Smith. Anh ấy là một nhà văn kỹ thuật tài giỏi, và nếu bạn đã từng tìm hiểu về chủ đề khởi động UEFI và cố gắng không đọc thứ gì đó của anh ấy, thì có khả năng là do bạn đã bỏ qua một số kết quả hàng đầu.

Khởi động Linux UEFI

Về cơ bản, nhân Linux có thể được thực thi trực tiếp bởi phần sụn.

Trong liên kết ở trên, ông đề cập đến trình tải sơ khai EFI của nhân Linux - đây là những gì bạn nên sử dụng, theo ý kiến ​​của tôi, vì nó cho phép nhân linux được gọi trực tiếp bởi phần sụn. Bất kể những gì bạn đang làm một cái gì đó đang được thực thi bởi phần sụn - và có vẻ như đó là một cái gì đó grub. Nếu phần sụn có thể tải trực tiếp kernel os của bạn, bootloader có gì tốt? UEFI firmware gắn kết một FAT định dạng GPT partition gắn cờ đặc biệt bởi bảng phân vùng và thực hiện một con đường đó nó đã lưu lại dưới dạng một biến khởi động UEFI trong một mô-đun bộ nhớ flash trên bo mạch. Vì vậy, một điều bạn có thể làm là đặt kernel linux vào phân vùng FAT đó và lưu đường dẫn của nó vào biến khởi động đó. Đột nhiên hạt nhân là của riêng nó bộ nạp khởi động.

Bộ tải khởi động

Trên các hệ thống UEFI, bộ tải khởi động là dự phòng - bao gồm ELILO.

Bộ tải khởi động vấn đề được thiết kế để giải quyết là các hệ thống BIOS chỉ đọc trong khu vực đầu tiên của phân vùng được gắn cờ khởi động và thực thi nó. Thật khó để làm bất cứ điều gì có ý nghĩa với hạt nhân 512 byte, vì vậy, điều phổ biến cần làm là viết một tiện ích nhỏ có thể gắn kết một hệ thống tập tin nơi bạn giữ hạt nhân thực tế và tải chuỗi hạt nhân.

Trong thực tế, 512 byte thường không đủ ngay cả đối với bộ tải khởi động. grub, chẳng hạn, thực sự tự tải chuỗi trước khi tải chuỗi hạt nhân của bạn, bởi vì nó kết hợp giai đoạn thứ hai của nó trong khoảng trống giữa khu vực khởi động và khu vực đầu tiên của hệ thống tệp của bạn. Đó là một loại hack bẩn - nhưng nó đã hoạt động.

Bootmanager

Vì lợi ích của cấu hình dễ dàng, một số đi giữa có thể hữu ích.

Những gì rEFInd của Rod Smith làm là khởi chạy dưới dạng một ứng dụng EFI - đây là một khái niệm tương đối mới. Đây là một chương trình được thực thi từ đĩa bằng cách - và trả về - phần sụn. Những gì rEFInd làm là cho phép bạn quản lý các menu khởi động và sau đó trả lại lựa chọn khởi động của bạn cho phần sụn để thực thi. Nó đi kèm với trình điều khiển hệ thống tập tin UEFI - vì vậy, ví dụ, bạn có thể sử dụng trình tải EFI-stub của kernel trên phân vùng không phải là FAT (như hiện tại của bạn /boot). Thật đơn giản để quản lý - nếu một điều như vậy là cần thiết - và nó bổ sung tính đơn giản của hạt nhân hệ thống thực thi để thuận tiện cho trình khởi động cấu hình.

Nguyên tử

Hạt nhân không cần symlink - nó có thể mount --bind.

Nếu có bất kỳ đường dẫn trên của bạn /, nơi bạn nên không cho phép liên kết tượng trưng, đó là /boot. Một liên kết tượng trưng mồ côi tại /bootkhông loại vấn đề mà bạn cần phải khắc phục sự cố. Tuy nhiên, đó là một thực tế đủ phổ biến để thiết lập các chỉ định phức tạp trong /bootmột số bản phân phối - ngay cả khi đó là một ý tưởng khủng khiếp - để xử lý các cập nhật kernel tại chỗ và / hoặc nhiều cấu hình kernel.

Đây là một vấn đề đối với các hệ thống EFI không được cấu hình để tải trình điều khiển hệ thống tệp (chẳng hạn như được cung cấp với gói rEFInd) vì tổng thể FAT là một hệ thống tệp khá ngu ngốc và nó không hiểu chúng.

Cá nhân tôi không sử dụng trình điều khiển hệ thống tệp UEFI được cung cấp với rEFInd, mặc dù hầu hết các bản phân phối bao gồm gói rEFInd có thể được cài đặt thông qua trình quản lý gói và quên về việc chỉ sử dụng /bootcấu hình symlinked khủng khiếp của riêng họ và trình điều khiển hệ thống tệp UEFI đóng gói của rEFInd.

Cấu hình của tôi

Tôi đã từng viết một bộ hướng dẫn về nó và đăng nó ở đây , nhưng có vẻ như:

% grep esp /etc/fstab && 
> ls /esp/EFI

LABEL=ESP          /esp  vfat defaults      0 1
/esp/EFI/arch_root /boot none bind,defaults 0 0 

arch_root/  arch_sqsh/  arch_xbmc/  BOOT/  ipxe/

Vì vậy, tôi chỉ cần đặt hai dòng đó vào /etc/fstabmột thư mục mà tôi dự định chứa bản cài đặt linux mới /bootvà tôi gần như đã lo lắng về toàn bộ. Tôi cũng phải làm:

cat /boot/refind_linux.conf 

"Arch" "root=LABEL=data rootflags=subvol=arch_root,rw,ssd,compress-force=lzo,space_cache,relatime"

Ngoài việc cài đặt refind-efigói thông qua pacmancho gói đầu tiên, đó là tất cả những gì cần thiết để thiết lập nhiều cài đặt / cấu hình riêng biệt như tôi mong muốn. Lưu ý rằng phần lớn chuỗi đó ở trên bao gồm các tùy chọn gắn kết cụ thể btrfs được chỉ định làm tham số kernel. Một điển hình hơn /boot/refind_linux.confcó thể sẽ trông giống như:

"Menu Entry" "root=/dev/sda2"

Và đó là tất cả những gì nó cần.

Rodbooks.com

Nếu bạn vẫn muốn ELILO thì bạn có thể tìm thấy hướng dẫn cài đặt tại liên kết ở trên. Nếu bạn muốn rEFI và bạn sẽ tìm thấy các liên kết đến nó trong đoạn đầu tiên ở đó. Về cơ bản nếu bạn muốn thực hiện bất kỳ cấu hình khởi động UEFI nào, trước tiên hãy đọc Rodbooks.com .


3

Tôi sử dụng LILO thay vì GRUB2. Thành thật mà nói, đó không phải là lựa chọn của tôi - Cài đặt GRUB2 không thành công trong trình cài đặt Debian Live CD, nhưng sau đó là tùy chọn cài đặt LILO thành công. Tôi có máy tính xách tay 2 tuổi chạy Debian Stable. LILO hoạt động hoàn hảo cho tôi.


1

LILO vẫn thể sử dụng được, ngay cả với BIOS UEFI. UEFI có thể tải hạt nhân Linux trực tiếp, thường. Điều này phụ thuộc vào chính UEFI.

Tuy nhiên, nếu bạn cần một màn hình lựa chọn khởi động, ví dụ nếu bạn khởi động vào một số HĐH trên một máy, thì một bộ tải khởi động nhỏ có thể sẽ tiện dụng.

Tuy nhiên, tôi sẽ xem xét sử dụng EXTLINEUX . Đây là một biến thể của SYSLINUX, nhưng nó nằm trong các extphân vùng -type.

Cái hay của EXTLINEUX là, mặc dù nó có thể mở rộng hơn và có nhiều tùy chọn hơn LILO, nhưng nó có thể đơn giản và được duy trì tích cực.


-1 Gói kernel (deb / ubfox) sẽ không cập nhật EFI. (EFI sẽ không đọc fs hỗ trợ liên kết tượng trưng, ​​vì vậy bạn không thể sử dụng câu trả lời của tôi). +1 cho EXTLINEUX như một sự thay thế mới hơn cho LILO. Liên kết của bạn cho thấy nó hỗ trợ một số hệ thống tập tin khác là một dấu hiệu tốt. Hỗ trợ EFI có vẻ hơi mới, khi cần thiết.
nguồn

@sourcejedi - bạn sai rồi. Một hệ thống EFI mà trình điều khiển hệ thống tập tin EFI thích hợp được tải có thể xử lý các liên kết tượng trưng một cách dễ dàng.
mikeerv

Vì một số lý do, liên kết trực tiếp đến syslinux.com dường như bị cấm.
Polemon

@mikeerv Tôi biết, nhưng việc tải trình điều khiển hệ thống tập tin khiến tôi thấy hơi khó hiểu đối với hầu hết các trường hợp. Bạn thậm chí cần phải cài đặt một số loại tập lệnh EFI (thuật ngữ?) Để tải trình điều khiển và sau đó là kernel. Ồ, và tôi cá là không ai có chữ ký khởi động an toàn MS cho các trình điều khiển này vì vậy đó là một wormcan khác: p.
nguồn

@sourcejedi - bạn sẽ vui lòng đọc câu trả lời tôi đã viết ở đây chứ? Và có - bạn sẽ cần một số phương tiện tải trình điều khiển.
mikeerv

1

Tôi không nhớ bất kỳ tương đương update-grub. Tuy nhiên, có một hệ thống cũ hơn vẫn được hỗ trợ trong Debian. (Nó được sử dụng để uboot trên máy chủ ARM của tôi).

Hạt nhân gần đây nhất được liên kết đến /boot/vmlinuzvà bắt đầu /boot/initrd.img. Nó được cập nhật bởi gói kernel. Trình tải khởi động được chỉ vào những điều đó & hủy kết nối symlink trên mỗi lần khởi động.

Vì vậy, bạn cũng có thể không có được một tùy chọn phục hồi. Trong mọi trường hợp, đây không phải là tùy chọn được thử nghiệm rộng rãi nhất, vì vậy, tốt hơn hết là bạn nên giữ một đĩa khởi động hoạt động xung quanh :-).


Cập nhật: Nếu mục tiêu của bạn là bất cứ điều gì khác ngoài việc chạy LILO trên máy tính hiện đại, có lẽ có những lựa chọn thay thế tốt hơn, như được mô tả bởi (các) câu trả lời khác ở đây :).

Những điều trên chỉ có ý nghĩa đối với phiên bản LILO dựa trên BIOS ban đầu. Phần cứng hiện đại cung cấp khả năng tương thích BIOS trên EFI, nếu bạn không muốn khởi động an toàn hoặc khởi động Windows 8 từ cùng một menu. Về mặt lý thuyết bạn có thể khiến ELILO hoạt động nhưng nó không hỗ trợ khởi động an toàn hoặc tải Windows 8. Nói chung, ELILO không còn có ý nghĩa gì nữa nên tôi đoán là không có nhiều cộng đồng đằng sau nó.


ừm symlink trong / from /bootlà một giải pháp bẩn thỉu cho bất kỳ vấn đề nào.
mikeerv

welp lilo đã chết (và uboot không dùng nữa) nên vâng. Vấn đề bạn gặp phải là gì? Mọi người chưa sử dụng FAT cho / boot chưa ... BootLoaderSpec là một dự án tốt nhưng chưa thực sự ở đó ... và có lý do chính đáng cho điều đó (bằng sáng chế độc ác, giấy phép tương thích FLOSS chỉ được cấp cho EFI interop).
nguồn

Đó là một chỉnh sửa tốt.
mikeerv
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.