Câu trả lời:
Nó phụ thuộc. Nếu bạn có một lượng bộ nhớ nhỏ, việc sử dụng các mô-đun có thể cải thiện sơ yếu lý lịch vì chúng không được tải lại mỗi lần (tôi thấy nó có ý nghĩa trên 2 GiB RAM nhưng không phải trên 4 GiB trên ổ cứng truyền thống). Điều này đặc biệt đúng khi do một số lỗi trong mô-đun pin (bất kể được biên dịch hoặc là mô-đun), phải mất rất lâu để bắt đầu (vài phút). Ngay cả khi không có lỗi trên gentoo, tôi đã cố gắng rút ngắn thời gian (được báo cáo bởi systemd-analysis
) từ 33 đến 18 chỉ bằng cách thay đổi từ kernel được biên dịch tĩnh sang các mô-đun - 'thật đáng ngạc nhiên' khi bắt đầu kernel thay đổi từ 9 giây thành 1,5 giây.
Ngoài ra, khi bạn không biết bạn sẽ sử dụng phần cứng nào, các mô-đun rõ ràng có lợi.
Tái bút Bạn có thể biên dịch ngay cả các trình điều khiển quan trọng dưới dạng các mô-đun miễn là bạn đưa chúng vào initrd. Ví dụ: các bản phân phối sẽ bao gồm hệ thống tập tin của /, trình điều khiển của ổ cứng, v.v. trong initrd khi cài đặt.
Theo tôi biết, không có sự khác biệt về tốc độ.
Tôi nghĩ rằng bạn sẽ đạt được một vài kB bộ nhớ kernel vì độ chi tiết của phân bổ là một trang, do đó, trên kiến trúc thông thường, mỗi mô-đun lãng phí trung bình khoảng 2kB (½ trang) cho mỗi mô-đun. Ngay cả trên các hệ thống nhúng, điều đó hầu như không đáng kể. Bạn cũng có được một ít dung lượng đĩa vì các mô-đun có thể được nén cùng lúc với kernel; có thể phù hợp hơn trong các hệ thống nhúng với ít bộ nhớ.
Nếu bạn có thể phân phối hoàn toàn với các mô-đun, bạn sẽ tiết kiệm được một ít bộ nhớ kernel (không cần bộ tải mô-đun), dung lượng đĩa (không cần các tiện ích mô-đun) và độ phức tạp của hệ thống (không cần bao gồm tải mô-đun như một tính năng trong bản phân phối của bạn ). Những điểm này khá hấp dẫn trong một số thiết kế nhúng mà phần cứng không thể mở rộng.
Một vài lợi ích tiềm năng. Hiệu suất là một trong những tranh cãi. Bạn sẽ tránh được một số chi phí thời gian chạy liên quan đến trình tải động, nhưng tôi nghi ngờ đó là vấn đề lớn trừ khi bạn phụ thuộc vào lịch trình thời gian thực.
Nếu bạn đang tận dụng các trang lớn trên hệ thống của mình, thì có lẽ việc tạo một hình ảnh hạt nhân tĩnh lớn hơn có nghĩa là bạn sử dụng bộ đệm mô tả trang hiệu quả hơn. Một số hệ thống sẽ 'lồng' kernel để nó đóng gói chặt chẽ vào một địa phương bộ nhớ, điều này có thể làm giảm bớt một số độ trễ do lỗi nhỏ và có thể là lỗi chính của trang.
Về mặt kiến trúc, nó có thể phù hợp với bạn để cung cấp Một hình ảnh lớn, cho rằng ít mô-đun độc lập sẽ dễ bảo trì hơn và việc mất tính linh hoạt là không quan trọng. Rất nhiều loại lý luận mạo hiểm vào các vấn đề về phong cách và thực hành.
Đôi khi nó là cần thiết. Nếu bạn biên dịch một số trình điều khiển quan trọng (ví dụ trình điều khiển SCSI) dưới dạng mô-đun, hệ thống của bạn sẽ không khởi động.
Một ứng cử viên tuyệt vời khác để không biên dịch dưới dạng một mô-đun là loại hệ thống tập tin của phân vùng gốc. Nếu hạt nhân không hiểu ext3
để đọc, /lib/modules/
làm thế nào nó sẽ tải các mô-đun từ nó?
Nghĩ về nó theo cách này: để sử dụng các mô-đun, hạt nhân cần biết đủ về hệ thống của bạn để đọc và tải các mô-đun hạt nhân. Sử dụng và thử nghiệm và lỗi :-)