You are on page 1of 19

Đề tài : Tìm hiểu nhân linux

I. Tổng quan Linux là gi

1. Lịch sử linux

Vào tháng Tư năm 1991, Linus Torvalds , một tuổi, sinh viên 21 tại Đại
học Helsinki , Phần Lan bắt đầu làm việc trên một số ý tưởng đơn giản đối với một
hệ điều hành. Ông bắt đầu với một bộ chuyển đổi công việc trong hợp ngữ Intel
80386 và một trình điều khiển thiết bị đầu cuối.

Ngày 17/9/1991, Linus Torvalds chính thức thông báo sự ra


đời của nhân Linux đầu tiên phiên bản 0.0.1. Linux chào đời với
đoạn "tuyên cáo" ngắn gọn sau:

“ I'm doing a (free) operating system (just a hobby, won't be


big and professional like gnu) for 386(486) AT clones. This has been
brewing since April, and is starting to get ready. I'd like any
feedback on things people like/dislike in minix, as my OS resembles
it somewhat (same physical layout of the file-system (due to
practical reasons) among other things).

I've currently ported bash(1.08) and gcc(1.40), and things seem to work.
This implies that I'll get something practical within a few months [...] Yes - it's
free of any minix code, and it has a multi-threaded fs. It is NOT portable (uses 386
task switching etc), and it probably never will support anything other than AT-
harddisks, as that's all I have”

Linus Torvalds"

Linux là một phiên bản hệ điều hành miễn phí giống như hệ điều hành
Unix. Linux được thiết kế riêng dành cho hệ máy PC, và có nhiều cải tiến cho
người sử dụng có thể so sánh với hiệu suất cao nhất của trạm làm việc UNIX. Một
vài hãng lớn như IBM,Compaq đã tham gia sử dụng Linux.

[Type text] Page 1


Đề tài : Tìm hiểu nhân linux

Cũng có một vài công ty đã bắt đầu đóng gói Linux như
Redhat,Samba,Corel...Mặc dù vậy họ cũng chỉ có thể thêm vào các gói dịch vụ và
các tài liệu hướng dẫn qua các phần mềm chạy trên linux. Ngày càng nhiều các
công ty thương mại sử dụng Linux trên các mạng của họ nhờ tính hiệu quả, bảo
mật tốt (do linux được xây dựng trên nên mã nguồn mở) và khả năng tiết kiệm về
tài chính của nó. Linux là một hệ điều hành đa nhiệm và hỗ trợ nhiều người dùng
cùng lúc.

Linux cũng có tất cả các đặc tính và thế mạnh của Unix. Unix là một hệ
điều hành mạng phổ biến trên thế giới. Nó được cung cấp miễn phí trên mạng
internet và tích hợp một số lượng lớn các phần mềm mã nguồn mở. Từ 1991 Linux
đã nhanh chóng phát triển và được coi là hệ điều hành thay thế cho Window và
các hệ thống Unix. Khi Redhat phát hành bản Linux thương mại có sự hỗ trợ về kĩ
thuật và các bản hướng dẫn. Linux trở lên cực kì phổ biến,ngày càng nhiều người
sử dụng cài đặt Linux trên các máy tính cá nhân, các công ty sử dụng Linux để
quản lý mạng của họ. Linux trở thành hiện tượng mới nhất để bình luận trên thị
trường hệ điều hành và phần mềm máy tính.

Một cách chính xác, thuật ngữ "Linux" được sử dụng để chỉ Nhân Linux
nhưng tên này được sử dụng một cách rộng rãi để miêu tả tổng thể một hệ điều
hành giống Unix (còn được biết đến dưới tên GNU/Linux) được tạo ra bởi việc
đóng gói nhân Linux cùng với các thư viện và công cụ GNU, cũng như là các bản
phân phối Linux.

Thực tế thì đó là tập hợp một số lượng lớn các phần mềm như máy chủ
Web, các ngôn ngữ lập trình, các hệ quản trị cơ sở dữ liệu, các môi trường làm
việc desktop, như GNOME và KDE, và các ứng thích hợp cho công việc văn
phòng như Open office.

Khởi đầu, Linux được phát triển cho dòng vi xử lý 386, hiện tại hệ điều
hành này hỗ trợ một số lượng lớn các kiến trúc Vi xử lý, và được sử dụng trong
[Type text] Page 2
Đề tài : Tìm hiểu nhân linux

nhiều ứng dụng khác nhau từ máy tính cá nhân cho tới các siêu máy tính và các
thiết bị nhúng như là các máy điện thoại di động.

Linux hiện nay có nhiều bản phân phối khác nhau, một phần là bởi vì tính
chất nguồn mở của nó. Sau đây là một số bản phân phối chủ yếu :

- Ubuntu 9.04 www.ubuntu.com Kubuntu, Xubuntu, Edubuntu,


- Debian GNU/Linux 5.0 www.debian.org
- Ultimate Edition 1.7
- Red Hat Enterprise Linux 5.0 www.redhat.com/rhel/
- Fedora 11.0 www.fedoraproject.org
- SUSE Linux Enterprise Desktop
- 10.1 www.novell.com/linux/ OpenSUSE 10.3,
- Mint 6 www.linuxmint.com
- Knoppix 5.3.1 www.knoppix.com/
- PCLinuxOS 2008 www.pclinuxos.com/
- Mandrake 2007.0 www.madrivalinux.com Mandriva
- CentOS 5 www.centos.org/
- Gentoo www.gentoo.org/
- Slackware 12.1 www.slackware.com/
- Xandros
- SLAX
- Easys
- Sabayon
- Dreamlinux
- OpenSolaris 2008 www.opensolaris.org/
- Hồng kỳ linux
- Puppy linux
- Hacao Linux 4.21 http://www.hacao.com/

[Type text] Page 3


Đề tài : Tìm hiểu nhân linux

- Vubuntu 1.0
- Asianux 2.0 http://www.asianux.com/ Asianux Server
- SliTaz 2.0 http://www.slitaz.org/ GNU/Linux
- Fenix Desktop 2009 http://www.rongvietnam.vn/

2. Điều khoản của cấp giấy phép

Ban đầu, Torvalds phát hành Linux theo một giấy phép là cấm việc sử dụng
thương mại. Điều này đã nhanh chóng thay đổi cho phép Công cộng GNU (GPL),
như các phiên bản 0,12. Giấy phép này cho phép phân phối và bán các phiên bản
sửa đổi và cố định có thể của Linux, nhưng đòi hỏi tất cả những bản sao sẽ được
phát hành theo giấy phép tương tự và phải kèm theo mã nguồn tương ứng hoàn
toàn.

II. Kernel linux

1. Hạt nhân là gì ?

Kernel là lõi của một hệ điều hành. Hệ điều hành nhận được yêu cầu từ
người sử dụng và quá trình đó thay mặt cho người dùng. Những yêu cầu đó được
nhận bởi lệnh Shell hoặc một số loại khác của giao diện người dùng và được xử
lý bằng kernel. Vì vậy, kernel như là một công cụ của hệ điều hành cho phép
người dùng sử dụng hệ thống máy tính. Shell là phần bên ngoài của hệ điều hành
cung cấp một giao diện cho người dùng để giao tiếp với kernel.

[Type text] Page 4


Đề tài : Tìm hiểu nhân linux

Hình : Thiết kế của một hệ điều hành

1.1 Kernel linux

Nhân linux là một hệ điều hành đa người dùng và đa nhiệm vân hành giống
như hệ điều hành của Unix về phương diện và thiết bị ngoại vi. Linux có tất cả
các đặc tính của Unix cộng với những cái cải thiện gần đây đã tăng thêm tính linh
hoạt của hệ Linux. Toàn bộ mã nguồn và tiện ích dành cho linux hoàn toàn miễn
phí.

Ban đầu nhân linux được thiết kế cho chế độ bảo vệ CPU 80386 inetl.
80386 được thiết kế với tính năng đa nhiệm.( mặc dù hầu hết inetl CPU đã được
sử dụng với tính năng DOS đơn nhiệm) và Linux tận dụng những đặc tính năng
cao có sẵn g trong CPU. Cơ chế quản lí bộ nhớ cực kì mạnh với 80368( so với
những CPU trước kia). Thủ tục dấu chấm động cho phép linux hoạt động trên
những máy móc không có bộ đồng xử lí toán học.

Linux cho phép dùng chung các tập tin có thể thi hành để nhỡ có nạp nhiều
bản sao của một chương trình ứng dụng đặc biệt( do một người dùng chạy nhiều
tác vụ) thì tất cả tác vụ có thể dùng chung một bộ nhớ. Tiến trình này gọi là sao
chép trên trang ghi, sử dụng triệt để Ram của bộ nhớ.
[Type text] Page 5
Đề tài : Tìm hiểu nhân linux

Nhân linux còn hỗ trợ tiến trình phân trang theo yêu cầu, có nghĩa là chỉ
những phàn nào cần thiết của chương trình thì mới được đọc và Ram để sử dụng
bộ nhớ tối ưu hơn. Linux dùng một tổ hợp nhớ duy nhất cho phép bộ nhớ rãnh trên
hệ thống được sử dụng như một bộ nhớ cache truy cập nhanh chóng và hiệu quả
các chương trình và các dữ liệu được sử dụng thường xuyên. Do nhu cầu sử dụng
bộ nhớ tăng nên bộ nhớ cache phải tự động điều chỉnh.

Để phục vụ cho những yêu cầu bộ nhớ quá lớn trong khi Ram bộ nhớ quá
nhỏ. Linux hỗ trợ không gian tráo đổi. không gian tráo đổi cho phép các trang nhớ
được ghi vào một vùng đĩa giành sẵn và được sử dụng như một vùng mở rộng của
một bộ nhớ vật lý. Bằng cách di chuyển tới lui các trang giữa không gian tráo đổi
và Ram. Linux có thể vận hành nhưu thể nó có Ram vật lý nhiều hơn thực tế bù lại
tốc độ truy cập vào đĩa cứng sẽ chậm hơn là giảm tốc độ vận hành của máy.

Linux sử dụng rộng rãi thư viện dùng chung động. Thư viện này sử dụng
một vùng thư viện chung cho nhiều ứng dụng khác nhau, cắt giảm đáng kêt
kicshju thước của mỗi trình ứng dụng. linux cho phép tính năng kết nối toàn bộ
thư viện(gọi là thư viện nối kết tinh) tạo điều kiện di dời đến những máy không có
thư viện động.

Để mọi người chấp nhận linux hệ điều hành cung cấp nhiều hệ thoonsg tập
tin khác nhau kể cả những hệ thống tập tin tương thích với DOS và OS/2. Hệt
thống tập tin riêng của linux gọi là ext2fs, được thiết kế để tận dụng tối đa đĩa.

Linux thật sự thích hợp cho công đoạn phát triển trìn ứng dụng bằng những
ngôn ngữ mới. là một bộ phận của phần mềm phân phối, có một số trình biên dịch
như C,C++, Fortran,Pascal,LISP,Ada,Basic và Smalltalk . nhiều trong số những
trình biên dịch, công cụ gỡ rối và trình hiệu chỉnh của linux mới nhất xuất phát từ
dự án GNU của hiệp hội phần mềm miễn phí(FSF- Free Software Foundation).

[Type text] Page 6


Đề tài : Tìm hiểu nhân linux

2. Các thành phần chính của một Kernel

Hình vẽ trên mô phỏng kiến trúc nhân Linux

Bộ phân thời cho tiến trình (Process Scheduler-SCHED

Như bạn biết về cơ bản PC vẫn là một hệ thống xử lý đơn tức là chỉ có 1
lệnh thực thi tại một thời điểm. Tuy nhiên các hệ điều hành đa nhiệm(multi-task)
như Windows, Linux v.v đều cho phép nhiều chương trình chạy cùng một lúc.
Làm sao chúng làm được như vậy? Bằng cách chuyển quyền thực thi qua lại giữa
các chương trình thật nhanh làm cho chúng ta có cảm giác các chương trình chạy
cùng lúc với nhau. Ví dụ bạn vừa đánh Winword vừa chơi Winamp thì thật ra
SCHED sẽ chạy Winword 5,10 lệnh xong chuyển qua Winamp 5,10 lệnh rồi
chuyển lại v.v Việc này cực kì nhanh nên bạn không có cảm giác gì.

Hệ điều hành MSDOS ngày xưa thật sự là hệ điều hành đơn nhiệm, tuy
nhiên bạn vẫn có thể bẩy ngắt 1Ch (hook interrupt) để giả lập đa nhiệm. Interrupt
1Ch thực chất được Timer IRQ (6 hay 8 gì quên mất rồi) gọi. Timer IRQ là một
ngắt cứng tức là tín hiệu do bộ phát xung gởi tới CPU. Mặc định là 1/13 giây 1 lần
bộ phát xung này gởi 1 tín hiệu IRQ đến CPU. Khi đó CPU sẽ ngưng lệnh đang thi
hành chuyển qua xử lý ngắt. Timer IRQ sau đó sẽ gọi ngắt 1Ch. Nếu bạn viết 1
chương trình con hook int 1Ch, thì bạn sẽ có cảm tưởng nó chạy song song với

[Type text] Page 7


Đề tài : Tìm hiểu nhân linux

chương trình chính (thật ra 1/13s nó mới chạy 1 lần). Ứng dụng cái này tôi có viết
một chương trình chạy banner trong màn hình DOS, hay chương trình ping pong
gồm 1 hay nhiều trái tim chạy va đập vào các cạnh của màn hình, trong khi vẫn
chạy DOS.

Các hệ điều hành đa nhiệm sau này đều xử dụng nguyên tắc này để làm
SCHED. Tuy nhiên 1/13s thì không đủ nhanh để switch qua nhiều tiến trình nhưng
xài hàm của BIOS ta có thể tăng tốc cho SCHED 1/100s 1 lần chẳng hạn.

Bộ quản lý bộ nhớ (Memory Manager-MM)

Bộ nhớ qui ước (conventional memory) của PC chỉ có 640K thôi. Do


chương trình BIOS chỉ quản lý được tới FFFFF, mà vùng nhớ cao (High memory
từ A0000 trở lên) dùng để ánh xạ (map) BIOS, Video card memory và các thiết bị
ngoại vi khác, vùng nhớ còn xài được (Low memory) là từ 9FFFF trở xuống.

Dùng calculator đổi 9FFFF ra decimal bạn sẽ có đúng 640K . Chắc bạn
ngạc nhiên hỏi rằng cây RAM 512M mua hết $70 của tôi biến đâu mất rồi???
Hihihi nó bây giờ teo lại còn có 1 page 64K trong vùng nhớ cao. Tuy nhiên bạn có
thể thay đổi ánh xạ để truy xuất hết 512M. RAM card màn hình cũng tương tự như
vậy. Ở chế độ bảo vệ (protect mode) của CPU 32bít đưa ra khái niệm virtual
memory (bộ nhớ ảo). Lúc này mỗi process được cấp cho 4G virtual memory từ
00000000-FFFFFFFF. Nhưng kernel sẽ giữ 1 table mô tả ánh xạ từng page của
virtual memory với physical memory. Physical memory bây giờ bao gồm cả RAM
và swap disk space. Tất nhiên là 4G virtual memory không bao giờ được ánh xạ
đầy đủ (ánh xạ hết lấy gì cho mấy process khác chạy). Phần lớn mặc dù có đánh
địa chỉ , nhưng chỉ khi bạn đọc hoặc ghi lên đó thì kernel mới allocate từ physical
memory.

Hệ thống file ảo (Virtual File System – VFS)


[Type text] Page 8
Đề tài : Tìm hiểu nhân linux

Hệ thống này không chỉ cung cấp truy xuất đến hệ thống file trên harddisk
mà còn cho tất cả các thiết bị ngoại vi. Nếu như Triump tất cả là thời trang thì ta có
thể nói ở Linux tất cả là file. Ý tưởng này bắt nguồn từ Unix và các hệ điều hành
sau này điều thiết lập theo hướng đấy. Đừng quên là trong DOS bạn dùng copy
xxx con để in file xxx ra màn hình. Khi đó “con “ là filehandler cho thiết bị xuất
chuẩn (console).

Giao diện mạng (Network Interface-NET)

Linux dựng sẵn TCP/IP trong kernel. Thành phần này của Linux Kernel
cung cấp truy cập và kiểm soát các thiết bị mạng khác nhau.

Bộ truyền thông nội bộ (Inter-process communication IPC)

Cung cấp các phương tiện truyền thông giữa các tiến trình trong cùng hệ
thống Hệ thống phụ IPC cho phép các tiến trình khác nhau có thể chia sẻ dữ liệu
với nhau

2.1 Thiết kế tích hợp

Như chúng ta biết Kernel được tạo từ những thành phần khác nhau. Mẫu thiết kế
tích hợp cho biết làm thế nào các thành phần khác nhau được tích hợp để tạo ra hình ảnh
của nhị phân Kernel.

Có 2 mẫu thiết kế tích hợp được sử dụng cho Kernel hệ điều hành, nguyên khối và
vi mô. Trong mẫu thiết kế nguyên khối, tất cả các thành phần của Kernel được xây dựng
cùng nhau thành một hình ảnh nhị phân tĩnh. Vào thời gian khởi động, toàn bộ kernel
được nạp và sau đó chạy như một tiến trình duy nhất trong một không gian địa chỉ duy
nhất. Tất cả các thành phần hay dịch vụ của kernel tồn tại trong hình ảnh kernel tĩnh. Tất
cả các dịch vụ của kernel đều hoạt động và có giá trị trong tất cả các thời gian. Ngoài ra,
từ bên trong kernel mọi thứ nằm trong một không gian địa chỉ duy nhất, vì vậy không có
loại IPC nào của cơ chế cần thiết cho việc giao tiếp giữa các dịch vụ kernel. Đối với tất cả

[Type text] Page 9


Đề tài : Tìm hiểu nhân linux

những lý do này kernel nguyên khối có hiệu suất cao. Hầu hết các kernel Unix là những
kernel nguyên khối.

Nhược điểm của thiết kế này là một khi hình ảnh của kernel tĩnh được tải, bạn
không thể thêm hoặc loại bỏ bất kỳ thành phần hoặc dịch vụ từ kernel. Ngoài ra bộ nhớ
của nó cao. Vì vậy, hiệu suất cao hơn trong trường hợp kernel nguyên khối.

Loại thứ 2 của kernel là kernel vi mô. Trong kernel vi mô là một hình ảnh kernel
tĩnh duy nhất không được xây dựng, thay vì đó hình ảnh kernel được chia thành những
dịch vụ nhỏ khác nhau. Vào thời gian khởi động, lõi của các dịch vụ kernel được nạp,
chúng được chạy trong chế độ đặc quyền. Bất cứ một dịch vụ nào được yêu cầu, nó phải
nạp để chạy. Không giống như kernel nguyên khối, tất cả các dịch vụ không được nạp và
chạy trong suốt thời gian. Chúng chạy khi được yêu cầu. Ngoài ra, không giống như
kernel nguyên khối, dịch vụ trong kernel vi mô chạy trong không gian địa chỉ riêng. Vì
vậy, việc giao tiếp giữa các dịch vụ khác nhau đòi hỏi phải có chơ chế IPC. Đối với
những lý do này kernel vi mô không phải là kernel có chức năng cao nhưng chúng lại yêu
cầu tài nguyên ít hơn để chạy .

Linux kernel điều tốt nhất cho 2 thiết kế này. Về cơ bản thì nó sử dụng kernel
nguyên khối, tất cả linux kernel và các dịch vụ của nó đều chạy như một tiến trình duy
nhất, trong một không gian địa chỉ duy nhất, đạt hiệu suất rất cao. Nhưng mà nó cũng có
khả năng tải hoặc không tải các dịch vụ trong thời gian chạy ở các dạng mô hình kernel.

2.2 User - Mode and Kernel – Mode

Trong một hệ thống, Linux kernel chạy theo một chế độ đặc quyền đặc biệt so với
các ứng dụng người dùng. Kernel chạy trong một không gian bộ nhớ được bảo vệ và nó
được truy cập vào toàn bộ phần cứng. Không gian bộ nhớ này và việc đặc quyền chung
này được gọi là không gian kernel hoặc chế độ kernel. Ngược lại, các ứng dụng người
dùng chạy theo không gian người dùng và được giới hạn truy cập đến tài nguyên và phần

[Type text] Page 10


Đề tài : Tìm hiểu nhân linux

cứng. Những ứng dụng không gian người dùng không thể truy cập trực tiếp và bộ nhớ
không gian kernel nhưng kernel được truy cập tới toàn bộ không gian bộ nhớ.

3. Bối cảnh các quy trình của hạt nhân

Toàn bộ mã kernel có thể được chia thành ba loại:

• Quy trình tiến triển


• Quy trình gián đoạn (ngắt)
• Quy trình hạt nhân ( Kernel )
3.1 Quy trình tiến triển:

Người sử dụng các ứng dụng không thể truy cập vào không gian kernel trực tiếp
nhưng có một giao diện sử dụng các ứng dụng người dùng có thể gọi các hàm được định
nghĩa trong không gian kernel. Giao diện này được gọi là cuộc gọi của hệ thống. Một ứng
dụng người dùng có thể yêu cầu cho các dịch vụ kernel bằng cách sử dụng một hệ thống
gọi.

Read(), write() là các ví dụ của việc gọi hệ thống. Một ứng dụng người dùng gọi
read(), write() nghĩa là lần lượt gọi sys_read() / sys_write() trong không gian kernel.
Trong trường hợp này mã kernel thực hiện theo yêu cầu của ứng dụng không gian người
sử dụng. Vì vậy, mã kernel được thực hiện theo yêu cầu hoặc đại diện cho người sử dụng
một ứng dụng được gọi là quá trình mã ngữ cảnh hệ thống. Tất cả các lệnh gọi đều được
xếp vào thể loại này.

3.2 Quy trình gián đoạn (ngắt)

Bất cứ khi nào một thiết bị muốn giao tiếp với kernel, nó sẽ gửi một tín hiệu gián
đoạn cho kernel. Các kernel tại thời điểm nhận được một yêu cầu ngắt từ phần cứng, nó
bắt đầu thực hiện một số thủ tục đáp ứng với yêu cầu ngắt. Việc phản ứng này được gọi
là dịch vụ thường xuyên bị gián đoạn hoặc là xử lý một quy trình ngắt. Chương trình xử
lý thường xuyên được cho là thực hiện trong quy trình gián đoạn.

[Type text] Page 11


Đề tài : Tìm hiểu nhân linux

3.3 Quy trình hạt nhân ( Kernel ) :

Có một số mã trong nhân Linux mà không phải là được gọi bởi một ứng dụng
người dùng cũng không được gọi bằng một quy trình ngắt. Mã này là không thể thiếu cho
hạt nhân và vẫn tiếp tục chạy.

VD: Quản lý bộ nhớ, quản lý tiến trình, danh mục nhập/xuất (I / O) , tất cả các mã trên
đều nằm trong thể loại này. Mã này được thực hiện trong quy trình hạt nhân (Kernel).

4. Phiên bản nhân Linux :

Để biết phiên bản Linux kernel có thể sử dụng lệnh 'uname' với các tùy chọn "-r".
uname là một lệnh tiện ích.

VD:

Trong phần đầu của kết quả trả về, có thể thấy một chuỗi chấm thập phân: 2.6.18.
Đây là phiên bản Linux kernel. Trong chuỗi này chấm thập phân (2.6.18), giá trị 2 biểu
thị số phiên bản chính thức, 6 là các bản vá cập nhập và giá trị thứ ba 18 được gọi là số
serial. Các bản phát hành chính kết hợp với việc phát hành rời rạc sau đó được gọi là
chuỗi hạt nhân.

Số phiên bản phụ lẻ (serial) được coi như một phiên bản phát triển, có khi phiên
bản phụ được xem xét như một bản ổn định. Phiên bản phát triển được đưa ra nhanh và
hay thay đổi và điều đó đồng nghĩa với việc là những người phát hành tung ra những
phiên bản phát triển để thí nghiệm. Họ không dùng những phiên bản này trong môi
trường thương mại. Vì chính môi trường đó sẽ cản trở sự hướng tới một phiên bản ổn
định, lý do là sẽ xuất hiện nhiều sự cản trở bỏi những người dùng mới.

[Type text] Page 12


Đề tài : Tìm hiểu nhân linux

Điều này đúng cho tất cả các hạt nhân Linux từ trước cho đến 2.6 series. Từ 2.6
trở đi tất cả các phiên bản được coi là ổn định. Ở đây chủ yếu dựa trên 2.6 series nhưng
chúng tôi sẽ cố làm nổi bật sự khác biệt quan trọng từ 2.6 và hàng loạt các hạt nhân 2.4.

4.1 Cách quy ước và số hiệu phiên bản nhân Linux

Phiên bản của nhân Linux có quy ước rất đơn giản và dễ nhớ. Vấn đề này cần nắm
rõ trước khi chọn một phiên bản nào đó của nhân Linux để vá và biên dịch.

Phiên bản của nhân Linux bao gồm ba nhóm số tách ra bởi các dấu chấm.

Ví dụ: 2.4.26

- Số thứ nhất: 2 là số hiệu phiên bản chính.

- Số thứ nhì: 4 là chỉ định cho tình trạng phiên bản. Nếu số này là số chẵn, nó
chỉ định cho phiên bản ổn định (stable), có thể dùng cho môi trường
production.

- Nếu số này là số lẻ, nó chỉ định cho phiên bản không ổn định, nó thường
dùng trong môi trường đang phát triển (development).

- Các kernel thuộc dạng này thường có nhiều lỗi và không ổn định. Nếu dùng
các phiên bản này để tìm lỗi và thông báo cho nhóm phát triển nhân Linux thì
đây là điều rất tốt. Không nên dùng phiên bản phát triển cho môi trường
production.

- Số thứ ba: 26 là chỉ định cho số hiệu phát hành của một phiên bản nhân
Linux. Một phiên bản ổn định của một nhân Linux có thể có nhiều số hiệu phát
hành khác nhau.

Đây là các quy ước chung cho dạng nhân Linux "vanilla" có nghĩa là ứng dụng
cho các phiên bản nhân từ http://www.kernel.org, các phiên bản nhân được điều chỉnh
bởi mỗi bản phân phối có những điểm dị biệt.

[Type text] Page 13


Đề tài : Tìm hiểu nhân linux

Có nhiều bản Linux xử dụng số hiệu con2 (extra-version) cho phiên bản nhân họ
đã điều chỉnh. Ví dụ RedHat có những cập nhật phụ cho các kernel như: 2.4.20-8 chẳng
hạn. Điều cần nắm ở đây là chỉ nên xử dụng phiên bản ổn định (stable) của nhân Linux
(số chẵn ở giữa) cho môi trường production và dùng phiên bản thử
nghiệm3(development) của nhân Linux (số lẻ) cho môi trường thử nghiệm và phát triển.

5. Nguồn Linux Kernel

Để xây dựng các Linux kernel, bạn sẽ cần kernel mới nhất hoặc bất kỳ nguồn kernel
nào khác ổn định.

Các nguồn phát hành phiên bản ổn định kernle 2.6.33 hay các phiên bản khác
nhau của Linux nguồn kernel có thể được tìm thấy tại http://www.kernel.org . Bạn có thể
lấy bản mới nhất hoặc bất kỳ bản phát hành ổn định nào khác của nguồn kernel từ đó.

Giả sử bạn đã tải về mã nguồn kernel là bản phát hành ổn định trên hệ thống. Mã
nguồn kernel được nén trong một tarball, có thể là "linux-2.6.33.tar.gz” . Đặt tarball này
vào thư mục /usr/src. Bạn sẽ có một thư mục có tên là 'Linux' ở thư mục /user/src. Sẽ có
một thông báo cảnh cáo, xin đừng can thiệp vào thư mục /user/src/linux. Chỉ cần lưu các
nguồn kernel thuộc tarball của /user/src và tar (giải nén) nó bằng cách sử dụng lệnh:

Vd: #tar –xvzf linux-2.6.33.tar.gz

Lệnh này sẽ tạo một thư mục với tên linux-2.6.33 và nó sẽ tar (giải nén) toàn bộ
mã nguồn kernel vào thư mục này.

Trong trường hợp bạn không thể truy cập internet để tải bản Linux kernel, bạn
cũng có thể có được những mã nguồn Linux kernel từ bất kỳ của bạn bè hoặc các bản
copy khác (CD, DVD …) .

[Type text] Page 14


Đề tài : Tìm hiểu nhân linux

6. Khám phá Kernel

Phần lớn nguồn Kernel được viết bằng ngôn ngữ C. Nó được tổ chức thành nhiều
danh mục và tiểu danh mục khác nhau. Mỗi danh mục được đặt tên theo nội dung của nó

Danh mục cấu trúc kernel có thể xem như biểu đồ dưới đây.

Hình 3. Cây danh mục kernel

Đây là hướng dẫn ngắn gọn về những danh mục mà bạn sẽ thấy trong hệ thống kernel

a. Arch/: Kernel linux có thể được cài đặt bằng công cụ cho các server lớn.

Nó hổ trợ intel, alpha, mips, arm, cấu trúc bộ xử lý sparc. Danh mục ‘arch’
có thể chứa các thư mục nhỏ cho một bộ xử lý cụ thể. Mỗi thư mục nhỏ
chứa 1 mã cấu trúc độc lập. Ví dụ, đối với một PC, mã sẽ là thư mục
arch/i386, đối với bộ xử lý arm, mã sẽ là thư mục arch/arm/arm64.

[Type text] Page 15


Đề tài : Tìm hiểu nhân linux

b. Init/: LITO hay linux đưa kernel vào bộ nhớ và sau đó kiểm soát theo

chuỗi lắp ráp, arch/x86/kernel/head_x.S chuỗi này chịu tránh nhiệm về khởi
tạo phần cứng và do đó có tính cấu trúc cụ thể. Khi phần cứng đã được tạo
xong, phần kiểm soát được chuyển qua start_kernel() được xác định trong
init/main.c. Phần này tương tự với chức năng chính trong chương trình C,
nó là điểm bắt đầu của phần mã kernel. Sau khi thiết lập phần cấu trúc
xong, phần thiết lập kernel bắt đầu và mã của nó được lưu theo danh mục
init. Mã này giúp cho quá trình thiết lập kernel bao gồm thiết lập địa chỉ
trang, lập biểu, bẫy, đường dây yêu cầu ngắt, tín hiệu, báo giờ, thiết bị
cuối ...Mã theo danh mục này cũng giúp quá trình khởi động ...

c. crypto/: Thư mục này chứa mã nguồn những thuật toán và mã hoá, chẳng

hạn như: md5,sha1,blowfish,serpent và nhiều hơn nữa. Những thuật toán


được bổ sung như module kernel. Chúng có thể được nạp vào và không nạp
trong lúc chạy chương trình. Chúng ta sẽ bàn về module kernel trong
những chương tiếp theo.

d. Documentation/: Thư mục này chứa nội dung của kernel

e. drivers/: Nếu chúng ta hiểu mã ổ cứng, nó gồm 2 phần. Một phần liên kết

với người dùng, nhận yêu cầu từ người dùng, thể hiện kết quả cho người
dùng. Phần còn lại làm việc với ổ cứng, ví dụ điều khiển nhận và gởi yêu
cầu đến và từ ổ cứng. Phần giao tiếp với người dùng gọi là phần cứng độc
lập và nằm ở thư mục ‘drivers’. Thư mục này chứa mã nguồn của các ổ
cứng khác nhau. Những ổ cứng được cài đặt như những module kernel. Sự
thật là đa số mã kernel linux cầu thành mã của ổ cứng vì thế những thảo
luận của chúng ta sẽ xoay quanh ổ cứng. Thư mục này được chia nhỏ thành
nhiều thư mục con phụ thuộc vào mã ổ cứng mà nó chứa.

 drivers/block/: Chứa ổ cứng cho công cụ khoá – đĩa cứng


 drivers/cdrom/: Chứa ổ cứng cho ổ CD-ROM
[Type text] Page 16
Đề tài : Tìm hiểu nhân linux

 drivers/char/: Chứa ổ cứng cho các công cụ như điểm cuối,


cổng tín hiệu, chuột ...
 drivers/isdn: Chứa ổ ISDN
 drivers/net/: Chưa ổ cứng cho thẻ mạng
 drivers/pci: Chứa ổ cứng cho kết nối .......... và kiểm soát
 drivers/scsi/: Chứa giao diện scsi cho ổ cứng
 drivers/ide/: Chứa ổ cứng cho công cụ IDE
 drivers/sound: Chứa những ổ cứng cho âm thanh

Phần khác của một ổ cứng làm việc với công cụ là phần cứng độc lập, cụ thể hơn.
Nó phụ thuộc vào loại bus dùng trong tiếp xúc. Loại mã cụ thể của bus này nằm ở thư
mục arch/ directory.

f. fs/ : Linux được hổ trợ từ nhiều hệ thống file như ext2,ext3, fat, vfat,ntfs,

nfs,jffs và nhiều hơn. Tất cả mã nguồn cho những file khác nhau này được
hổ trợ trong thư mục này theo những danh mục con như fs/ext2,fs/ext3 etc.
Và linux cung cấp hệ thống file ảo giống như lớp bọc cho những file khác.
Hệ thống file ảo tương tác có thể giúp người dùng sử dụng hệ thống file
khác với gốc ( ‘/’). Mã này cho vfs cũng nằm ở đây. Cơ cấu dữ liệu liên
quan vfs được xác định trong include/linux/fs.h. Hãy chú ý điều này rất
quan trọng để phát triển file cho kernel.
g. Kernel/: Là một trong các thư mục quan trọng nhất của kernel. Thư mục

này chứa mã cho hệ thống con của kernel như mã hệ thống cuộc gọi, báo
giờ, lập biểu, DMA, gián đoạn nắm bắt tín hiệu. Cấu trúc cụ thể của mã
kernel là arch/*/kernel.
h. Include/ : Cùng với kernel / thư mục này là include / thư mục này rất quan

trọng.
i. Lib /: thư viện của kernel được lưu giữ trong thư mục này

[Type text] Page 17


Đề tài : Tìm hiểu nhân linux

j. mm/ : Thư mục này rất quan trọng là thư mục cho phát triển kernel. Nó
chứa mã chung quản lý bộ nhớ và hệ thống bộ nhớ ảo. Mã kiến trúc cụ thể
là trong kiến trúc thư mục / * / mm /. Điều này một phần của mã kernel có
trách nhiệm yêu cầu / giải phóng bộ nhớ, tin nhắn, xử lý lỗi trang, lập bản
đồ bộ nhớ, lưu trữ khác nhau.
k. security/ : Thư mục chứa chức năng an ninh và mã SELinux dùng trong

module kernel
l. sound/: Thư mục chưa mã hệ thống âm thanh.

Ngoài những danh mục quan trọng như trên, dưới đây là những file theo nguồn
kernel.

1. COPYING - Copyright và giấy phép (GNU GPL v2).


2. CREDITS - partial credits-file người có đóng góp cho dự án linux.
3. MAINTAINERS – danh sách người bảo trì hệ thống kernel và ổ cứng. mô tả
cách lưu những thay đổi.
4. Makefile – makefile chính và gốc của Kernel.
5. README – phần này là ghi chú của kernel. Giải thích cách cài đặt và sửa
kernel và những gì phải làm khi hệ thống sai.

[Type text] Page 18


Đề tài : Tìm hiểu nhân linux

[Type text] Page 19

You might also like