Compile Kernel in A Nutshell P1.

I.Lí do để compile kernel
Khái niệm compile kernel chỉ xuất hiện với các hệ điều hành tự do, mã nguồn mở. Còn với các mã nguồn đóng thì kernel là cái chi chúng ta còn không biết thì làm sao mà compile. Có thể nói (không chính xác hoàn toàn) việc compile kernel với người dùng Linux cũng khá là quen thuộc như là thao tác reinstall khi dùng Window$! Các lí do chính để người dùng đi đến quyết định compile kernel:

1.Tái biên dịch để sửa lỗi kernel.
2.Nâng cao hiệu suất bằng cách bỏ bớt những module không cần thiết.
3.Loại bỏ những driver không cần thiết hoặc thêm vào driver mới.
4.Thêm vào, thử nghiệm một chức năng mới hoặc một module mới mình vừa tạo ra.

Cuối cùng, compile kernel là “độc quyền” của hệ điều hành mã mở thì sao ta lại từ chối quyền lợi này khi đã dùng Linux? Chưa compile được kernel thì chưa phải là dân Linux “sành điệu”😀. Các bước được trình bày sau đây là đơn giản và hiệu quả nhất, đơn giản với cả những người mới bước vào thế giới Linux.

II.Nắm thông tin phần cứng
Đây là những thông tin quan trọng cho phần cấu hình kernel. Ví dụ bạn phải biết các thông tin về loại CPU, loại ổ cứng, các card PCI cắm vào máy …
Ngoài hóa đơn báo giá lúc mua máy, bạn có thể dùng các lệnh sau để biết được thông tin về phần cứng trên máy:

#/sbin/lspci – liệt kê chi tiết các card PCI
#cat /proc/cpuinfo – xem chi tiết về CPU. Xem tài liệu về hệ thống file proc để biết thêm.
#dmesg (đọc hiểu được các kết quả xuất ra cũng không thoải mái lắm!)

III.Chuẩn bị đồ nghề
0.Một hệ điều hành Linux ngon lành
Cái này thì không thể thiếu. Các distro mà tôi đã thử nghiệm cho bài viết này là Red Hat Enterprise Workstation 3 (có license đàng hoàng nha :)) và Fedora Core 3, 4.

1.Thiết bị cứu hộ
Bước này đưa ra cho đúng thủ tục “an toàn lao động” thôi chứ trong mấy chục lần compile tôi chưa hề thấy lần nào phải dùng đến đĩa cứu hộ do lỗi lúc compile (lỡ bị gì là chôn lun, khỏi cứu😀 J/K). Nguyên nhân là do dù bạn có cấu hình bậy bạ đến bao nhiêu khi config kernel thì nó cũng chỉ ảnh hưởng đến cái kernel bạn mới tạo chứ không ảnh hưởng đến kernel nền. Một nguyên tắc an toàn khi compile kernel đó là không nên bỏ kernel cũ đi mà vẫn để nguyên đó cho đến khi kernel mới đã chạy ổn định để có thể boot vào lại được khi bất trắc. Nếu nhớ quy tắc này thì không có gì là quá muộn! Ta chỉ phải dùng đĩa cứu hộ khi bạn táy máy chỉnh sửa file cấu hình của GRUB hay LILO bậy bạ làm cho không boot vào được thôi.
Nói đến đĩa cứu hộ ai cũng nghĩ ngay đến đĩa mềm khởi động và rất nhiều cách để tạo đĩa mềm này (vd: mkbootdisk) nhưng tôi thì đã từ lâu quên cái đĩa mềm vào dĩ vãng nên đĩa cứu hộ lúc này là cái đĩa #1 của bộ đĩa cài đặt (Fedora Core, Red Hat…), khỏi cần phức tạp chi cho mệt.
Đút cái đĩa #1 vào và gõ “linux rescue” khi hiện lên màn hình boot. Sau một vài thao tác Enter là bạn đã vào được cái shell quen thuộc. Bây giờ gõ thêm lệnh “chroot /mnt/sysimage” là bạn đã ở trong hệ thống file cũ của mình rồi đó. Lúc này thì tìm và lôi file config của GRUB hay LILO ra sửa lại là xong.

2.Mã nguồn Kernel
Tải về từ chính hãng www.kernel.org
Bình thường thì nên chọn phiên bản ổn định (stable) với chữ số đằng sau dấu chấm thứ nhất là số chẵn (vd 2.4, 2.6…). Gói source thường ở dạng nén bz2.
Trong bài viết này Abel dùng kernel 2.6.11 làm demo -> file linux2.6.11.tar.bz2

3.Thư mục mã nguồn và thư mục cài đặt
File source kernel mà chúng ta có là một file nén do đó để sử dụng được các bạn phải giải nén gói đó bằng lệnh bzip2 –d sau đó bung gói tar ra bằng lệnh tar xvf. Cụ thể:

#bzip2 –d linux2.6.11.tar.bz2
#tar xvf linux2.6.11.tar

Sau khi hoàn thành hai lệnh trên ta sẽ được một thư mục là linux 2.6.11. Đây chính là thư mục chứa source code kernel. Ta sẽ tạo thêm một thư mục nữa để chứa các file output khi biên dịch. thường thì Abel hay để hai thư mục này ở trong /home/<username>/. Giả sử ta có thư mục chứa source: /home/abel/linux 2.6.11 và thư mục cài đặt: /home/abel/build.
Note: Nếu không dùng một thư mục cài đặt khác thì mặc định các file sau khi cài đặt sẽ nằm chung với thư mục source và ta sẽ rất khó quản lí và khảo sát.

Đông Thao

About dongthao

The best things in life, they are free ... (Cry on my shoulder lyric)
This entry was posted in Linux Tutorial. Bookmark the permalink.

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s