– 3 –
1 Tổng quan về nhân Linux trên phương diện biên dịch
lại
1.1 Nhân Linux và việc biên dịch lại nhân
Nhân Linux là một "nhân hiện đại" có tính module rất cao. Từ kernel phiên bản 2.6.x trở
đi, có rất nhiều chức năng và mở rộng. Với tinh thần "biên dịch nhân", một yếu tố chính
yếu và quan trọng nhất cần ghi nhận đó là tính phân bộ (modularity) của nhân Linux.
Đối với người dùng bình thường, modularity cho phép chọn lựa cách biên dịch các drivers
của nhân theo dạng modules hay theo dạng biên dịch trực tiếp vào nhân. Thông thường,
khi xác lập cấu hình cho nhân có ba chọn lựa: Y, M và N.
Có những "driver" không thể biên dịch như một module vì nó phải được load and link
trực tiếp ngay khi nhân khởi động. Cũng có những "driver" cho phép chọn như một
module và được tải trong khi và sau khi nhân được khởi động. Điểm chính yếu cần nắm
bắt trong giới hạn chủ đề "Biên dịch nhân Linux" là hiểu rõ tại sao phải chọn M (cho
module), Y (cho biên dịch trực tiếp) và N (không dùng) các drivers này.
•
Biên dịch trực tiếp vào kernel có nghĩa là các "drivers" này dù có được dùng hay
không vẫn được tải lên khi nhân khởi động và tất nhiên nó sẽ chiếm một phần bộ
nhớ. Lợi điểm chính của chọn lựa này là một khi "drivers" đã được biên dịch vào
nhân thì không còn phải quan ngại đến tính trung thực của nhân và các driver nữa.
Các hệ thống làm việc đòi hỏi tính bảo mật cao không dùng modules mà biên dịch
thẳng vào nhânkernel để tránh trường hợp các modules không tin cậy "bị" cài vào
nhân lúc nào đó trong quá trình hoạt động của máy. Lợi điểm kế tiếp của chọn lựa
này là tính hiệu xuấtxuất (rất nhỏ), khi cần driver thì đã có sẵn và không cần ứng tải
nữa.
•
Biên dịch như các modules cho nhân có nghĩa là chỉ khi nào cần dùng các "drivers"
này mới được ứng tải. Lợi điểm của chọn lựa này nổi bật ở khía cạnh xử dụng bộ nhớ
và tài nguyên trên máy. Với lựa chọn này, bạn có thể tạo nên một nhân rất nhỏ và dễ
dàng di chuyển cho nhiều mục đích khác nhau. Lợi điểm kế tiếp là khả năng biên
dịch lại chỉ một hoặc một số modules nào đó (cần cập nhật chẳng hạn). Tất nhiên để
thực hiện chuyện này thì phải thoả mãn tất cả những đòi hỏi về tính phụ thuộc cho hệ
thống.
1.2 Tóm tắt các bước biên dịch (dành cho những ai thiếu kiên
nhẫn)
Biên dịch nhân Linux rất đơn giản nếu như đã hiểu rõ các quy trình và các bước thực
hiện. Sau đây là các lệnh cần thiết, giả định bạn đã có trọn bộ các công cụ cần thiết để
biên dịch: