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,
Trang 1Biên dịch Kernel
Trang 2Khi 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
Trang 3a 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
Trang 4c 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
Trang 5Cá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
Trang 6Lỗ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ý
Trang 7Vấ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