4.26.2009

Biên dịch kernel Linux

Tải về bài: Bien dich Kernel.pdf


Linus Torvalds

Giới thiệu:
Linus Benedict Torvalds (sinh ngày 28 tháng 12, 1969) là một nhà khoa học máy tính người Phần Lan, được biết đến trong việc phát triển Linux. Anh hiện đang là người điều phối chính của dự án. Linus Torvalds từng là sinh viên đại học Helsinki.

Nhân Linux là hạt nhân của Linux, được lập trình bằng ngôn ngữ C và được Linus Torvalds phát triển, mô phỏng lại hạt nhân Unix. Linux là một trong những ví dụ điển hình của phần mềm mở và miễn phí. Nó được viết bởi Linus Torvalds vào năm 1991. Rất sớm từ trước đó, MINIX đã góp phần vào code và ý tưởng cho Linux. Cùng thời gian đó, các dự án GNU đã tạo ra được rất nhiều các thành phần cần thiết cho một hệ điều hành phần mềm mở.

Mục đích của việc biên dịch kernel:
1. Tái biên dịch kernel để chữa lỗi của kernel. Nếu các lỗi này thuộc về lõi của kernel thì phải vá nguồn của kernel và tái biên dịch nó để sửa chữa các lỗi được công bố.

2. Tái biên dịch kernel để nâng cao hiệu năng của kernel. Theo mặc định, các Linux distribution thường kèm một phiên bản kernel biên dịch với hầu hết những thành phần có sẵn để có thể đáp ứng rộng rãi cấu hình hardware (có thể hiện diện trên các máy). Đây là điểm lợi tổng quát lúc khởi điểm. Tuy nhiên, sau khi đã cài thành công và nắm chắc máy có những thiết bị gì (sound card, graphic card, network cards, SCSI card..... ) và biết rõ cần những thành phần nào cho cấu hình của máy thì không có lý do gì phải bao gồm trọn bộ các thứ không cần thiết và không dùng. Đối với kernel 2.4.x, mức độ nâng cao hiệu năng không rõ rệt (ngoại trừ dùng phương pháp test load để đo). Tuy nhiên, từ kernel 2.6.x trở đi, tính hiệu năng qua việc tái biên dịch và điều chỉnh "driver" modules cho kernel tạo hiệu xuất rõ rệt, nhất là trong việc điều chỉnh "thời biểu" (scheduling) của các công tác mà system phải đảm nhiệm.

3. Tái biên dịch để loại bỏ những "drivers" không được dùng và có thể gây "hiểu lầm" cho kernel, tạo ra trường hợp máy có những triệu chứng hoạt động thiếu ổn định và hay gây lỗi.

4. Tái biên dịch kernel để thử nghiệm một chức năng hoặc một module mình vừa tạo ra. Trường hợp này không nhiều như các trường hợp trên nhưng cũng nằm trong các lý do phổ biến.

...



THỰC HÀNH:

1. Chuẩn bị

- Download source từ http://www.kernel.org (file: linux-2.6.29.1.tar.bz2), dung lượng khoảng 54 MB.

2. Biên dịch

- giải nén bằng lệnh:

#tar -jxvf linux-2.6.29.1.tar.bz2

- chuyển vào source:

#cd linux-2.6.29.1


3. Cài đặt gói hỗ trợ để biên dịch kernel

- tạo thư mục sau:

#mkdir /media/CentOS

- mount ổ đĩa vào thư mục:

#mount /dev/cdrom /media/CentOS

-import key PGP:

#rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

- Cài 02 thư viện sau:

#yum --disablerepo=\* --enablerepo=c5-media groupinstall "Development Tools"



#yum --disablerepo=\* --enablerepo=c5-media groupinstall "Development Libraries"

- Sau đó lần lượt chạy các lệnh sau:

#make menuconfig

#make dep

#make clean

#make bzImage

#make modules

#make modules_install

#make install

Giải thích:
1. điều chỉnh các chọn lựa cho một cấu hình biên dịch nhân Linux
#make menuconfig hoặc #make xconfig (chế độ graphic) hoặc #make config (dạng text)

2. Tạo dependency, dọn dẹp và tạo kernel image
- Chạy theo thứ tự
#make dep
#make clean
#make bzImage

- hoặc gom chung lại thành một lệnh
#make dep clean bzImage


3. Tạo modules và cài modules
#make modules
#make modules_install
#make install


4. Chỉnh sử file cấu hình khởi động
/boot/grub/grub.conf

5. Xem Version của Kernel
#uname -r