Bài viết được dịch từ cuốn Linux Kernel Development
Trong chương này, chúng ta sẽ giới thiệu một số thứ cơ bản về Linux Kernel (nhân Linux): cách lấy source, cách biên dịch và cài đặt một kernel mới. Sau đó ta sẽ lướt qua về sự khác nhau giữa kernel và chương trình user-space và một số chương trình trong kernel. Mặc dù chỉ có duy nhất 1 kernel chính thống, vẫn có những sự khác biệt nhỏ giữa các kernel trong những project khác nhau.
Lấy Kernel Source
Phiên bản Linux source code hiện tại thì luôn để ở 2 dạng là: dạng nén (.tar) và dạng patch đặt ở trang chủ của Linux kernel: http://www.kernel.org. Có 3 cách để lấy source code là:
- Sử dụng git.
- Tải về phải nén vài giải nén.
- Sử cụng các patch.
Dễ dàng nhất vẫn là:
Sử dụng git
Sử dụng lệnh git để clone một phiên bản của Linux kernel (cụ thể mình sẽ clone version 2.6):
$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
Và sau đó update:
$ git pull
Với hai lệnh này thì về cơ bản bạn đã có được bản cập nhật mới của linux 2.6
Kernel Source Tree
Kernel Source Tree được chia thành các thư mục, đa số chúng chứa nhiều các thư mục con khác. Các thư mục gốc trong source tree được mô tả bằng bảng dưới đây:
Thư mục | Mô tả |
---|---|
arch | Kiến trúc chi tiết |
block | Các tầng vào ra |
crypto | Mã hóa API |
Documentation | Tài liệu của Kernel Source |
drivers | Device drivers |
firmware | Device firmware cần thiết cho driver nào đó |
fs | VFS và các file hệ thống đơn lẻ |
include | Kernel headers |
init | Khởi tạo Kernel |
ipc | Mã giao tiếp liên tiến trình |
kernel | Các hệ thống con lõi, vd như bộ lập lịch |
lib | Helper routines |
mm | Quản lí bộ nhớ và máy ảo |
net | Hệ thống network |
samples | Các sample code |
scripts | Scripts để build kernel |
security | Linux Security Module |
usr | Không gian người dùng |
tools | Các công cụ để phát triển Linux |
virt | Virtualization infrastructure |
How about a yummy crepe?
Here’s a code chunk:
var foo = function(x) {
return(x + 5);
}
foo(3)
And here is the same code with syntax highlighting:
var foo = function(x) {
return(x + 5);
}
foo(3)
And here is the same code yet again but with line numbers:
1
2
3
4
var foo = function(x) {
return(x + 5);
}
foo(3)
Boxes
You can add notification, warning and error boxes like this:
Notification
Note: This is a notification box.
Warning
Warning: This is a warning box.
Error
Error: This is an error box.