Khi quyết định biên dịch lại nhân hệ điều hành (tức kernel), có nghĩa là hoặc các cấu hình trong nhân hiện thời chưa đủ đáp ứng yêu cầu của bạn, hoặc bạn đang nâng cấp lên kernel mới nhất, chẳng hạn nâng cấp từ 2.4 lên 2.6 để hoạt động được với chức năng Bluetooth.
Ngay cả khi bạn đã khá hài lòng với kernel hiện tại, bạn vẫn có thể biên dịch lại để thử nghiệm một điều gì đó nếu thích.
Mã nguồn kernel
Nếu bạn đang nâng cấp lên mã nguồn kernel mới nhất, bạn có thể tải về từ website: www.kernel.org.
Gói mã nguồn thông thường được đặt dưới dạng file nén bzip. Sau khi tải về, copy nó vào thư mục /usr/src và giải nén.
[root@haxbox src]# tar -jxvf linux-2.6.15.4.tar.bz2
Cấu hình kernel
Chuyển tới thư mục /usr/src/linux-2.x.x.x. Nếu bạn đang biên dịch lại kernel cũ, thư mục này đã tồn tại; nếu không, đây sẽ là thư mục mới được tạo /usr/src/linux-2.6.15.4.
Trong trường hợp này bạn sẽ phải cấu hình nhân kernel. Nếu muốn cho phép hỗ trợ Bluetooth cho kernel mới, bạn nên thực hiện khi cấu hình kernel. Có 3 cách thức cấu hình khác nhau.
a. make config: phương thức này đưa ra các yêu cầu lặp về thành phần bao hàm và loại trừ.
b. make menuconfig: một giao diện theo kiểu menu dạng văn bản được thể hiện, cho phép bạn thực hiện các hoạt động tương tự nhưng dễ dàng hơn nhiều theo phương thức phỏng đoán.
c. make xconfig: giao diện đồ họa trên cơ sở X để cấu hình kernel.
Cá nhân tôi dùng make menuconfig:
[root@haxbox src]# make menuconfig
Các thành phần kernel có thể được biên dịch ở một trong ba trạng thái: dựng sẵn vào trong nhân (hiển thị bằng dấu *), như một modul (hiển thị bằng ký tự 'M') và không biên dịch (N). Trong một số trường hợp, các thành phần này chỉ có thể được biên dịch như một modul.
Sau khi cấu hình xong kernel, ghi lại cấu hình hiện tại.
Bước tiếp theo là tạo ảnh (bzImage).
[root@haxbox linux-2.4.21-4.EL]# make bzImage
Lệnh này tạo ảnh nén kernel mới boot từ đó. File ảnh tạo ra sẽ được tự động ghi lại trong thư mục /usr/src/linux-2.4.21-4.EL/arch/i386/boot.
Tiếp theo là các thành phần đã được biên dịch theo kiểu modul.
[root@haxbox linux-2.4.21-4.EL]# make modules
Sau đó, cài đặt modul, dùng:
[root@haxbox linux-2.4.21-4.EL]# make modules_install
Cuối cùng bạn cần cấu hình các bộ load khởi động (bootloader). Nếu muốn sử dụng thủ tục tự động, chạy:
[root@haxbox linux-2.4.21-4.EL]# make install
Tại thời điểm này, có thể bạn thích xem nội dung của thư mục /boot/grub/grub.conf. Các nội dung này phản ánh những thay đổi có được sau khi thực hiện lệnh make install. Khởi động lại máy và bạn có thể boot kernel mới.
Kernel 2.6
Lỗi liên quan đến QM_MODULES, khởi tạo (init)…
Nếu bạn đang nâng cấp kernel lên 2.6, chú ý một số lỗi sau:
a, init not found - không tìm thấy file khởi tạo.
b, Error related to QM_MODULES: lỗi liên quan đến modul QM_MODULES.
…
Giải pháp cho vấn đề là nâng cấp module-init-tools.
Download phiên bản mới nhất của bộ công cụ này, đọc phần README trước, sau đó chạy:
./configure --prefix=/
make moveold
make
make install
Bây giờ dịch mô hình cũ /etc/modules.conf sang /etc/modprobe.conf với script ./generate-modprobe.conf có trong module-init-tools của bạn tải về:
./generate-modprobe.conf /etc/modprobe.conf
Các lỗi sẽ được xử lý.
Vấn đề RPM
Chắc hẳn các bạn đã từng phải đối mặt với vấn đề có trong chương trình quản lý gói redhat cũ với kernel 2.6. Khi đó, bạn cần nâng cấp bản RPM mới nhất.