- Sản phẩm phần mềm mã hõa và giải mã dữ liệu trên đường truyền được tích hợp vào nhân Linux và trong suốt đối với người đùng.- Sản phẩm hỗ trợ quản lý, lựa chọn các module và tổ chức đó
Trang 2Đ Ạ I H Ọ C QU ỐC GIA HÀ N Ộ I
N H Ữ N G VẨN ĐỀ V Ề
XÂY DựNG HỆ THÓNG LINUX,
T ỏ CHỨC QUẢN TRỊ VÀ BẢO MẬT
(B áo cáo tổng hợp Đề tài nghiên cứu
cấp Đại học Q uốc gia H à N ội
do K hoa C ông nghệ Q uản lý)
M ã số: Q C-01.07 Chủ nhiệm đề tài
ThS N G U Y ẾN N A M HẢI
ĐAI HỌC QUỐC G ia r
rRUNG TÂM THÕNG TIN Thu V.LIX
i / / £ c - ( \
Hà nội 2005
Trang 3MỤC LỤC
I PHẢN MỞ Đ Ầ U 3
1.1 Danh sách những người tham gia thực hiện 3
1.2 Tóm tắt những kết quả chính 3
1 Tên đề tài 3
2 Mã số 3
3 Những kết quả chính 3
II NỘI DUNG C H ÍN H 5
II 1 Đặt vấn đ ề 5
11.2 Tổng quan các vấn đề nghiên cứu 5
11.3 Địa điểm, thời gian và phương pháp nghiên cứu 5
11.4 Nội dung và các kết quả nghiên cứ u 6
11.5 Thảo luận và kiến nghị 6
Trang 4I PHÀN MỞ ĐÀU
1.1 Danh sách những người tham gia thực hiện
6 Nguyễn Thị Nhật Thanh Thực tập sinh, Khoa Công nghệ
a Kết quả về khoa học, công nghệ
- Xây dựng giải pháp mã hõa và giải mã dữ liệu ở tầng Liên kết dữ liệu trong mô hình OSI Sản phẩm phần mềm được tích họp vào nhân Linux và trong suốt đối với người dùng Kèt quả để tài được báo cáo tại hội nghị khoa học sinh viên Khoa Công nghệ, năm 2003, đạt giải 3
- Xây dựng giải pháp hỗ trợ lựa chọn các gói module và đóng gói Linux theo yêu cầu xác định Sản phẩm phần mềm của đề tài nhắm đến việc tạo ra hệ điều hành nhúng với nhân Linux cũng như hô trợ thiêt lập các server chuyên dụng Kết quả đê tài được báo cáo tại hội nghị khoa học sinh viên Khoa Công nghệ, đạt giải 3
b Kết quả phục vụ thực tế
- Tài liệu hơn 200 trang, tổng quan và hướng dẫn chi tiết về việc biên dịch nhân Linux, tích hợp và cấu hình các gói sản phâm hỗ trợ quản trị mạng và đảm bảo an ninh mạng
Trang 5- Sản phẩm phần mềm mã hõa và giải mã dữ liệu trên đường truyền được tích hợp vào nhân Linux và trong suốt đối với người đùng.
- Sản phẩm hỗ trợ quản lý, lựa chọn các module và tổ chức đóng gói
bộ cài đặt Linux cho những mục tiêu chuyên dụng do người dùng lựa chọn
c Kết quả đào tạo
- Đoàn Minh Phương đã lấy được các chứng chì cấp 1 và cấp 2 của Linux: Chứng chỉ LPI (Linux Professional Institute) và chứng chi
RHCE (Red Hat Certificate Engeneering)
- Hai sinh viên Vũ Hồng Khiêm và Nguyễn Hoàng Hà đã có kết quả nghiên cứu khoa học sinh viên đoạt giải ba
- Hai sinh viên Bùi Duy Hiền và Nguyễn Thái Hùng đã có kết quá nghiên cứu khoa học sinh viên đoạt giải ba
- Tài liệu hơn 200 trang, tổng quan và hướng dẫn chi tiết về việc biên dịch nhân Linux, tích hợp và cấu hình các gói sản phẩm hỗ trợ quản trị mạng và đảm bảo an ninh mạng là tài liệu phục vụ tốt cho cán bộ và sinh viên có nhu cầu tìm hiểu về mạng, hệ thống quản trị và bào mật với Linux
d Kết quả nâng cao tiềm lực khoa học
Nâng cao kiến thức hệ thống về mạng và truyền thông máy tính, tổ chức quản trị và bảo mật mạng
e Tình hình sử dụng kinh phí
Kinh phí của đề tài (40 triệu) được sử dụng để mua 07 máy tính cho cán bộ và thực tập sinh của bộ môn mạng sử dụng, chi trá cho văn phòng phẩm, sao chụp tài liệu phục vụ seminar hàng tuần
Đã thanh quyết toán đầy đủ và đúng theo quy định của Phòng Kế toán - Tài vụ, Khoa Công nghệ, Đại học Quốc gia Hà Nội
ThS Nguyên Nam Hải
Trang 6II NỘI DUNG CHÍNH
11.1. Đặt vấn đề
Hệ điều hành Linux là một sản phẩm phần mềm mã nguồn mở được xây dụng theo một mô hình mở để có thể tích hợp nhiều gói phần mềm khác nhau, tùy theo nhu cầu phát triển và sử dụng Linux được thừa nhận là một hệ điều hành có tính ổn định cao, an toàn và bảo mật, sử dụng tài nguyên của máy tính với hiệu suất cao Việc nghiên cứu mã nguồn mở của Linux giúp hiểu rõ nhiều vấn đề thực tiễn về hệ điều hành, kể cả hệ điều hành nhúng, mạng máy tính và những vấn đề khác về tổ chức quản trị và bảo mật
Bộ môn Mạng và Truyền thông Máy tính có đội ngũ cán bộ còn rất mỏng, không chuyên về mạng trước khi được điều động về bộ môn, thiết bị nghiên cứu tối thiểu là máy tính cũng không có đủ Để phát triển đội ngũ cán bộ, đáp ứng các nhu cẩu nghiên cứu và đào tạo, nghiên cứu mã nguồn mở Linux là một hướng tiếp cận phù hợp và càn thiết Việc nghiên cứu mã nguồn mở Linux với các định hướng xây dựng hệ thống, quản trị và bảo mật không những góp phần nâng cao trình độ khoa học công nghệ mà còn mở ra khả năng tạo dựng được những sản phẩm ứng dụng có ý nghĩa trong thực tiễn ứng dụng
11.2 Tổng quan các vấn đề nghiên cứu
Linux với các sản phẩm ứng dụng mạng đa dạng trên trên nó khiến cho một máy tính có thể trở thành một máy tính đa dụng như một máy tính cài đặt
MS Windows Nhưng trong khi MS Windows hoàn toàn đóng kín đối với người dùng thì Linux lại hoàn toàn mở và có thể chỉ cài đặt các thành phần vừa
đủ để biến một máy tính có cấu hình không cao thành một thiết bị chuyên dụng như router, firewall, proxy, LDAP, Webserver, Database Server,
Vì vậy đề tài nhằm vào các nội dung nghiên cứu sau đây:
Hệ điều hành nhúng: Các module trong hạt nhân của Linux vả khả năng biên dịch, cho một mục đích chuyên dụng, một hệ điều hành có kích thước nhỏ cỏ thể nhúng vào một thiết bị chuyên dụng, cấu hình không cao về phần cứng
Các thành phần ứng dụng mạng trên Linux, giúp các hệ thống Linux
có thể chia sẻ và bảo mật các tài nguyên của mình với các hệ thống
MS Windows như Samba, SSH
Các thành phần đảm bảo an toàn và an ninh mạng trên Linux như Routing, Firewall, Proxy, VPN
Giải pháp quản trị người dùng một cửa LDAP
Xây dựng thử nghiệm các thiết bị mạng chuyên dụng và đánh giá tính
an toàn, ổn định, hiệu quả
II.3 Địa điểm, thời gian và phương pháp nghiên cứu
Các nghiên cứu được tiến hành tại Bộ môn Mạng và Phòng thí nghiệm Công nghệ Thông tin
Trang 7Thời gian nghiên cửu bắt đầu từ tháng 12/2003 và kết thúc tháng 12/2004.
11.4 Nội dung và các kết quả nghiên cứu
Nội dung các nghiên cứu cụ thể được được chia thành 12 chuyên đề như trình bày dưới đây, các kết quả được trình bày chi tiết trong tập phụ lục của báo cáo này, gồm hom 200 trang hổ A4
ỉ Biên dịch Linux Kernel
11 Mã hóa dữ liệu trong truyền tin trên mạng
12 Đóng gói Linux theo yêu cầu
Các kết quá nghiên cứu đã được ứng dụng rộng rãi trong hệ thống mạng của Khoa/Trường Đại học Công nghệ Tất cả các server của Trường đều sử dụng Linux và các giải pháp quản trị mạng, đàm bảo an toàn, an ninh trên nền Linux Tiết kiệm nguồn kinh phí lớn và lâu đài cho Nhà trường về phàn mềm
hệ thống trong triển khai mạng của trường
11.5 Thảo luận và kiến nghị
Đề tài được triển khai trong giai đoạn xây dựng nguồn lực cho bộ môn Mạng và Truyền thông Máy tính, khi mà Bộ môn còn rất thiểu phương tiện vật chất nghiên cứu cơ bản là máy tính và đang cố gàng để bố sung đội ngũ cán
bộ Vì vậy phàn lớn kinh phí của đề tài được sử dụng để mua máy tính (7 chiếc) và trang trải cho những chi phí cần thiết cho seminar hàng tuần cua bộ môn Những kết quả đã đạt được của đề tài có tác động tốt không chi đối với việc xây dựng nguồn lực của bộ môn mà còn được sử dụng ngay trong thực
Trang 8T R Ư Ờ N G Đ Ạ I H Ọ C C Ô N G N G H Ệ• I •
LINUX
XÂY DựNG HỆ THỐNG QUẢN TRỊ VÀ BẢO MẬT
SẢN PHẨM ĐỀ TÀI QC 0107
H À N Ộ I, 2005
Trang 10Biên dịch Linux Kernel■
ỉ Giới thiệu về Linux Kernel
T ừ khi L inus Tovarlds, m ột sinh viên đại học H elsinki Phần Lan giới thiệu hệ điều hành mới có tên là L inux vào tháng 6 năm 1991, hệ điều hành dựa trên cơ sở của m ột hệ điều hành nhỏ gọn M inix chủ yếu phục vụ cho công tác học tập của m ình, có thể anh ta sẽ không ngờ đến một sự phát triển vượt bậc của nhân hệ điều hành do chính anh sáng tạo ra
Phần này sẽ điểm qua m ột số giới thiệu chung nhất về m ã nguồn tự do của L inux K ernel trong khuôn khổ của GNƯ
1.1 Tổng quan về Linux Kernel
C ho đến nay với gần 10 năm phát triển, bộ nhân của Linux đã công nhận sự đóng góp của hàng trăm lập trình viên trên thế giới, bổ sung rất nhiều tính năng, nhất là phần hỗ trợ m ạng
Số hiệu phiên bản của Linux K ernel được ký hiệu bàng 3 con số: phiên bản chính, phiên bản phụ và phiên bản cải tiến Phiên bản phụ cho biết loại nhân nào đang được sử dụng: nếu số hiệu phiên bản phụ là lẻ thì Kernel đang được phát triển bởi các lập trình viên dùng cho th ử nghiệm (developm ent), nếu số hiệu phiên bản phụ là chẵn thì K ernel là bản production, có nghĩa là có thể đem ra sử dụng rộng rãi và người dùng cuối
có thể “yên tâm ” về nó V í dụ nhân 2.1.x, 2 3 X , là các bản thử nghiệm , có thể sẽ chứa nhiều lỗi và người đùng được khuyến cáo khi sử dụng các bản nhân này N hân 2.0.X, 2.2,X, là các bản đã được sửa lỗi và đáng tin cậy nhất
1.2 Linux Kernel version 2.2.14
P hiên bản m ới nhất là L inux K ernel version 2.2.14, có sẵn trên đĩa cài đặt R edH at 6.2 Theo thống kê, bộ nhân này cỡ 53M B , bao gồm 41M B source code (1712 file đuôi c và s cho bộ vi xử lý Ì386, 1586, Ĩ68ò), 9MB file tiêu đề (1270 file đuôi H), và quãng 3MB file tài liệu đi kèm và các loại
Trang 11file khác phục vụ cho quá trình biên dịch nhân (chúng ta sẽ bàn về M akefile
ở phần sau)
T hường là sau khi cài đặt, bộ nhân của Linux sẽ được đặt trong thư
m ục /u sr/src/ỉinux, thực ra là liên kết tượng trưng đến thư mục /usr/src/linux-2.2.14 Bộ đĩa R edH at 6.2 còn có một đĩa source code chứa
rất nhiều m ã nguồn của các trình tiện ích trong Linux console và X W indow ,
có thể kể đến là m ã nguồn M idnight C om m ander, m ã nguồn XFree86 version 11 release 6 bản 3.3.6, v.v T ất cả các free source code này đều nằm trong khuôn khổ GNƯ G eneral Public License
1.3 GNU General Public License
Đ ược đề ra bởi hiệp hội Free Softw are Foundation (FSF) GNU
G eneral Public L icense quy định m ột số điểm chính sau:
• Source C ode của các phần m ềm trong khuôn khổ của FSF đều được công khai hoá, nghĩa là người dùng có toàn quyền sao ch ép , sử a đổi và p h â n
p h á t th ậ m ch í b á n (tất nhiên là trong trường hợp có người tự nguyện bỏ tiền ra để m ua) m ã nguồn m ột cách hợp pháp
• N hữ ng người viết phần m ềm hoàn toàn không chịu trách nhiệm về tất
cả m ã nguồn đã được phân phát, không chịu trách nhiệm khi phần mềm biên dịch lại gặp sự cố
• T rong trường hợp có nhữ ng sửa đổi m ã nguồn được công nhận là đóng góp cho sự phát triển của phần m ềm , phần sửa đổi đó sẽ được đưa vào
n h ư m ột tính năng và tên tuổi của người sửa đôi phiên bản đó sẽ được đưa vào nh ư m ột trong những M aintainer ở các phiên bản sau
• T rong trường hợp người dùng sửa đổi m ã nguồn, không được phép thay đổi L icense A greem ent ở trong file m ã nguồn, m à chỉ có thể được phép ghi tên, ngày tháng sửa đổi vào như m ột trong nhừng developer của
Trang 12File C O PY IN G chứa toàn bộ thông tin về những quy định này N gười dùng được khuyến cáo đọc kỹ file này trước khi có bất kỳ m ột sự thay đổi nào với L inux K ernel source code.
N hững quy định này thực sự đã góp phần lớn trong sự phát triển như
vũ bão của L inux Kernel D ang sách những người phát triển có thể được tìm thấy trong file M A IN T A IN E R S và CREDITS
II Các bước cập nhật, biên dịch và cài đặt nhân
B iên dịch nhân thực sự là m ột công việc m ất nhiều thời gian, và có thế gặp trục trặc trong quá trình biên dịch nếu phần cứng của m áy tính không phù hợp với cấu hình biên dịch của nhân Theo thống kê, trên một
m áy A M D K 6-2/300 với đĩa cứng tốc độ nhanh có thể dịch bộ nhân 2.2.X trong vòng 5 phút cho đến 15 phút phụ thuộc vào tuỳ chọn biên dịch (xem phần II 1) C òn đối với m áy 486 hoặc 386 có thể mất tới hàng tiếng đồng hồ, thậm chí hàng ngày để dịch xong
Phần này sẽ giới thiệu các bước chi tiểt để biên dịch nhân m ột cách an toàn và tối ưu nhất:
• M ột vài điểm chú ý về nhân.
• Tạo một đĩa m ềm khỏi động trong trường hợp có sự cố.
• Đ ảm bảo an toàn cho nhân.
• T hiết lập cấu hình nhân.
• Cài đặt bộ nhân mới.
• Xoá và sửa đổi các chưon g trình, file liên quan đến các module.
• Tạo m ột đĩa mềm rescue mói.
Trang 13bước của quá trình biên dịch M ake thực sự là m ột công cụ rất m ạnh, nó
không hẳn là m ột Shell, nhưng thực sự hỗ trợ tất cả các lệnh Shell và nhiều khía cạnh nữ a liên quan đến M akefile sẽ bàn ở phần sau
11.1 Trước khi biên dịch nhân mới
K ernel thực sự là m ột bộ phận quan trọng nhất trong hệ thống máy tính, L inux kernel là lõi của hệ điều hành Vì vậy cần phải rất thận trọng để cấu hình nhân cho phù hợp với hệ thống chúng ta đang dùng và chỉ biên dịch lại những tính năng thực sự cần thiết T rong mọi trường hợp, các bạn cần phải tham khảo file R EA D M E trong thư m ục “/usr/src/linux” B a lý do chính m à chúng ta hy vọng bộ nhân m ới sẽ:
• C hạy nhanh h ơ n (ít code hom)
• N hỏ gọn hơn, do đó cung cấp thêm nhiều bộ nhớ rỗi (phần nhân không bao giờ bị hoán đổi vào trong bộ n hớ ảo)
• T in cậy hơn
T rong ví dụ sau đây m à chúng tôi đưa ra, chúng ta sẽ cùng thử biên dịch m ột bộ nhân không có các m odule, có nghĩa là chúng ta sẽ chỉ trả lời
các câu hỏi yes hoặc no và bỏ qua bước m ake m odules và m ake
m odules_instalI C húng ta cũng sẽ sửa đổi bộ nhân hiện có, nó không cho phép thực thi m ã trong đoạn stack, ngăn chặn việc tràn bộ đệm N hớ là trong
ví dụ này, chỉ trả lời các câu hỏi yes/no N èu bạn lại m uốn sử dụng chức
năng mô p hỏng firew all hoặc kết nối dial-up p p p , thì không thể làm được vì những chức năng này cần phải biên dịch m ột sỏ m odule
Bộ nhân m ới hoàn toàn phụ thuộc vào kiến trúc phần cứng; trong phần cấu hình nhân, chúng ta giả sử đang dùng m ột hệ thống sau (tất nhiên bạn có thể thay đổi để phù hợp với hệ thống đang dùng):
^ M ột bộ vi x ử lý Pentium II 400 M H z (Ì686)
> M ột m o th erb o ard SCSI
Trang 14y M ột bộ điều khiển SCSI A daptec AIC 7xxx
s M ọi bước được tiến hành với người dùng root
s Phiên bản kernel mới nhất 2.2.14
•S B ản patch m ới nhất cùa Linux kernel 2_2_14-ow 2 (thêm tính năng an
toàn cho nhân)
Đẻ tham khảo và dow nload bộ nhân mới nhất có thể tìm tại địa chỉ hoặc địa chỉ để load về file lỉnux-2_2_14_tar.gz Bản patch có thể tìm thấy
tại địa chỉ hoặc để load về file linux-2_2_14-ow2_tar.gz.
11.2 Tạo đĩa mềm khởi động an toàn
B ước đầu tiên là cần phải tạo m ột đĩa m ềm khởi động an toàn trong trường hợp nhân m ới có sự cố Tiện ích “m kbootdisk” của L inux sẽ làm điều này Đ ế biết được số hiệu phiên bản của bản nhân hiện đang dùng, chúng ta cần xem file “/ e t c /lilo c o n f D ự a theo các entry của file này, chúng
ta sẽ thấy số hiệu phiên bản nhân Trong ví dụ này, file “lilo c o n f’ có nội dung như sau:
Trang 15im age=/boot/vm linuz-2.2.12-20 the kernel version
“/b o o t/v m lin u z-2 2 12-20” Đẻ tạo đĩa m ềm khởi động, đưa đĩa m ềm vào ổ
m ềm rồi gõ lệnh sau:
[root@deep /]# m kbootdisk -d e v ic e /dev/fd0 2.2.12-20
Insert a disk in /dev/fdO Any information on the disk will be lost.
Press <Enter> to continue or AC to abort:
Theo có hư ớng dan của lệnh, chúng ta sẽ được m ột đĩa m ềm khơi động Đ ể kiểm tra đĩa m ềm đó có khởi động được không, cách tốt nhất là nên khởi động lại và thử điều đó
II.3 Uninstall nhân cũ và giải nén
Trang 16[root@deep /]# cd /usr/src/
11.3.1 Nếu đã từng cài đặt nhân Linux trước đó
B ước này chỉ cần thiết nếu bạn đã có sẵn m ột bân nhân L inux trong
hệ thống Các bước cần tiến hành là tạo m ột bộ nhân “sạch” , uninstall các
package kernel-headers-version.i386.rpm, kerneI-version.i368.rpm có
• X oá thư m ục chứa L inux kernel m odules bằng lệnh:
[root@deep src]# rm -rf/lib /m o d u les /2.2 xx
Chú ý: V iệc xoá các m odules của bộ nhân cũ chỉ cần thiết nếu bạn đã cài đặt nhân có sử dụng m odule trước đó
11.3.2 Nếu đã cài đặt package của bộ nhân hiện thời
B ước này chỉ cần thiết nếu bạn đã có m ột package nhân cài đặt hoặc
đã từng nâng cấp bằng m ột bộ RPM Tiến hành các bước sau để uninstall bộ nhân này:
• K iểm tra xem kernel R P M đang dùng bằng lệnh:
[root@deep src]# rpm -qa I grep kernel
kernel-headers-2.2.xx.i386 rpm
kernel-2.2.XX Ì386 rpm
• U ninstall kernel R PM bàng lệnh:
[root@deep src]# rpm -e -n o d e p s kernel-headers kernel
cannot remove /usr/src/linux-2.2.xx - directory not empty
cannot remove /lib/modules/2.2 XX - directory not empty
Trang 17[root@deep src]# rm - r f /usr/src/linux-2.2.xx/
[root@deep src]# rm -rf/lib /m o d u le s /2 2.XX/
T rong bước thứ 2, chúng ta đã x oá các thư mục “/usr/src/linux-2.2.xx”
và “/lib/m odules/2.2.xx” (việc uninstall các kernel R PM không xoá các thư
m ục này)
Bước 2: Giải nén file chứa Linux kernel source
D ùng tiện ích giải nén tar sau đó xoá các file nén tar này
[root@deep src]# tar xzpf linux-version_tar.gz
[root@deep src]# rm -f linux-version_tar.gz
Bước 3: Tăng số lượng task được hồ trợ trong mã nguồn
Để tăng số lượng task cho chép (số lượng lớn nhất các tiến trình chạy đồng thời với mỗi user), chúng ta cẩn phải sửa file
Trang 18Đ ể tối ưu hoá nhân phù họp với kiến trúc phần cứng, chúng ta cần sửa file “/usr/src/linux/M akefile” để sửa các tham số sau:
• M ở M akefile (dòng 14 file /usr/src/Iinux/M akefile) rồi sửa dòng:
HOSTCC=gcc
thành:
H O S TC C =egcs
• Sửa dòng 25 của M akefile:
c c =$(CR O SS_C O M PILE)gcc - D KERNEL -l$(HPATH)
thành:
c c =${C R O S S_C O M P ILE)egcs - D K ERNEL -l$(HPATH)
• Sửa dòng 90 của M akefile:
CFLAGS = -Wall -Wstrict-prototypes -0 2 -fomit-frame-pointer
thành:
C FLA G S = -W all -W strict-prototypes -0 9 -funroll-loops -ffast-m ath -m align- double -m cpu=
pen tiu m p ro -m arch =p en tiu m p ro -fom it-fram e-pointer -fno-exceptions
• Sửa dòng 19 của M akefile:
H O STCFLA G S =-Wall -Wstrict-prototypes -0 2 -fomit-frame-pointer
thành:
H O S TC FLA G S =-W all -W strict-prototypes -0 9 -funroll-loops -ffast-m ath -
m alig n -d o u b le -m cpu=
p en tiu m p ro -m arch =p en tiu m p ro -fom it-fram e-pointer -fno-exceptions
11.4 Cập nhật tính năng an toàn cho nhân
Gói patch được lấy từ dự án O penw all là cách tốt nhất để bảo vệ nhân khỏi các lỗi nh ư lỗi tràn stack (Stack B uffer O verflow s), o p e n w all patch bao gồm m ột loạt các tính năng an toàn cho nhân và được cấu hình qua m ột
m ục m ới là “ Security options” thêm vào trong nhân (xem m ak e config ở phần sau)
M ột số tính năng m ới trong bản patch linux-2_2 14-ow2 ta r.g z gồm:
Trang 19• C âm thực thi mã lệnh trong vùng stack
• H ạn chế liên kết trong thư m ục /tm p
• H ạn chế FIF O trong thư m ục /tm p
• H ạn chế /proc
• T hêm xử lý đặc biệt cho các thiết bị fd 0, 1 và 2
• B ắt buộc R LIM IT_N PR O C khi thực thi
• H uỷ các vùng nhớ chia xẻ không còn được dùng nữa
C hú ý: Khi cập nhật bản patch linux-2_2_14-ow 2, m ột phần m ới “Security
O ptions” sẽ được thêm vào cuối phần cẩu hình nhân Đẽ có thêm thông tin
và m ô tả nhữ ng tính năng của bản patch, có thể tham khảo file R E A D M E đi kèm với m ã nguồn của bộ patch này
[root@deep src]# rm -f lin u x-2.2.14-o w 2.d iff
[root@deep src]# rm -f lin u x-2_2_14-o w 2_tar.g z
Giải thích:
Đ ầu tiên chúng ta copy bản patch vào thư mục “ 'u s r'src ” , rồi chuyển đến th ư m ục này, và giải nén file linux-2.2.14-ow 2_tar.gz Sau đo chuyển đến th ư m ục m ới được tạo ra sau khi giãn nén, chuyển file Iinux-2.2.14-
Trang 20o w 2 d iff chử a toàn bộ nội dung patch đến th ư m ục /usr/src/ và cập nhật nhân với file này C uối cùng chúng ta xoá m ọi file liên quan đến patch.
Chú ý: M ọi th ô n g bao khi cập nhật bản patch sẽ được ghi lại vào trong file
“/var/log/m essages”
Đen đây bước cập nhật bản nhân m ới coi nh ư hoàn thành xong Phẩn cuối cùng là biên dịch nhân và khởi động lại hệ thống
11.5 Biên dịch nhân
11.5.1 Tạo các soft-link đến thư mục chứa file tiêu đề
Tạo các soft link từ các thư m ục con “/usr/include/asm ” ,
“/u sr/in clu d e/lin u x ” , và “/usr/include/scsi” tới các thư mục chứa file tiêu đề thực sự
• Gõ lệnh sau tại dấu nhắc term inal:
[root@deep src]# cd /usr/include/
[root@deep include]# rm -rf asm linux SCSI
[root@deep include]# In -s /usr/src/linux/include/asm -i386 asm
[root@deep include]# In -s /usr/src/Iinux/include/linux linux
[root@deep include]# In -s /usr/src/linux/include/scsi SCSI
B ước này rất quan trọng để cho các th ư m ục trên trỏ tới th ư m ục chửa
bộ nhân m ới, th ư m ục “include” chứa các file tiêu đề quan trọng để nhân và các chương trình có thể dịch được trên hệ thống của bạn
11.5.2 Xoá các file o và depenency
Thực hiện lệnh sau tại dấu nhắc:
[root@deep include]# cd /usr/src/linux/
[root@deep linux]# m ake m rproper
C hú ý: Hai lệnh này sẽ đơn giản xoá đi m ọi file “rác” chăng m ay còn tồn tại trong cây th ư m ục củ a nhóm phát triên nhân
II
Trang 2111.5.3 Cấu hình nhân
B ước này thiết lập các cấu hình cần thiết để biên dịch nhân, sẽ được dịch thành các hướng dẫn biên dịch trong bước dịch nhân Để thực hiện bước này, ta có thể lựa chọn m ột trong 3 cách sau tại dấu nhắc của Console:
make config
make m enucon/ỉg
make xconfig
make config sẽ cho ra một giao diện kiểu dòng lệnh, make menuconflg
có giao diện text và make xconfig là m ột giao diện đồ hoạ m ake config tỏ ra
khá bất tiện và thường là người dùng hay chọn m ake m enuconfig hoặc make xconfig m ake m enuconfig sẽ cho ra m ột giao diện hộp đối thoại thuận tiện, các cấu hình được gói gọn và phân loại theo cấu trúc hình cây giúp cho người sử dụng lựa chọn các options một cách nhanh chóng
T rong phần này, chúng ta sẽ dùng lệnh make config, gõ lệnh sau tại
dấu nhắc:
[root@ deep /]# cd /usr/src/linux/ (if you are not already in this directory)
[root@deep linux]# m ake config
rm -f include/asm
( cd include ; In -sf asm-i386 asm)
/bin/sh scripts/Configure arch/i386/config.m
#
# Using defaults found in arch/i386/defconfig
#
Sau đây là trình tự thực hiện cấu hình:
Code maturity level options
Trang 22Prompt for developm ent and/or incomplete code/drivers (CONFIG_EXPERIMENTAL) [N/y/?]
Processor type and features
Processor fam ily (386, 486/Cx486, 586/K5/5x86/6x86, Pentium/K6/TSC, PPro/6x86MX) [PPro/6x86MX] Maximum Physical Memory (1GB, 2GB) {1GB]
Math emulation (CONFIG_MATH_EMULATION) [N/y/?]
MTRR (Memory Type Range Register) support (CONFIG_MTRR) [N/y/?]
Symmetric multi-processing support (CONFIG_SMP) [Y/n/?] N
Loadable module support
Enable loadable module support (CONFIG_MODULES) [Y/n/?] N
General setup
Networking support (CONFIG_NET) [Y/n/?]
PCI support (CONFIG_PCI) [Y/n/?]
PCI access mode (BIOS, Direct, Any) [Any]
PCI quirks (CONFIG_PCI_Q UIRKS) [Y/n/?] N
Backward-compatible /proc/pci (CONFIG_PCI_OLD_PROC) [Y/n/?] N
MCA support (C ONFIG_M CA) [N/y/?]
SGI Visual W orkstation support (CONFIG_VISWS) [N/y/?]
System V IPC (CONFIG_SYSVIPC) [Y/n/?]
BSD Process Accounting (CONFIG_BSD_PROCESS_ACCT) [N/y/?]
Sysctl support (C O N FIG^SYSCTL) [Y/n/?]
Kernel support for a.out binaries (CONFIG_BINFMT_AOUT) [Y/n/?]
Kernel support for ELF binaries (CONFIG_BINFMT_ELF) [Y/n/?]
Kernel support for MISC binaries (CONFIG_BINFMT_MISC) [Y/n/?]
Parallel port support (CONFIG_PARPORT) [N/y/?]
Advanced Power M anagem ent BIOS support (CONFIG_APM) [N/y/?]
Plug and Play support
Plug and Play support (CONFIG_PNP) [N/y/?]
Block devices
Normal PC floppy disk support (C ONFIG_BLK_DEV_FD) [Y/n/?]
Enhanced IDE/M FM /RLL disk,'cdrom/tape/floppy support (CONFIG_BLK_OEV_IDE) [Y r ?]
Use old disk-only driver on primary interface (CONFIG_B!_K_DEV_HD_IDE) [N/y/?]
13
Trang 23Include IDE/ATA-2 DISK support (CONFIG_BLK_DEV_IDEDISK) [Y/n/?]
Include IDE/ATAPI CDROM support (CONFIG_BLK_DEV_IDECD) [Y/n/?]
Include IOE/ATAPI TAPE support (CONFIG_BLK_DEV_IDETAPE) [N/y/?]
Include IDE/ATAPI FLOPPY support (CONFIG_BLK_DEV_IDEFLOPPY) [N/y/7]
SCSI emulation support {CONFIG_BLK_DEV_IDESCSI) [N/y/?]
CMD640 chipset bugfix/support (CONFIG_BLK_DEV_CMD640) [Y/n/?] N
RZ1000 chipset bugfix/support (CONFIG_BLK_DEV_RZ1000) [Y/n/?] N
G eneric PCI IDE chipset support (CONFIG_BLK_DEV_IDEPCI) [Y/n/?]
G eneric PCI bus-m aster DMA support (CONFIG_BLK_DEV_IDEDMA) [Y/n/?]
Boot off-board chipsets first support (CONFIG_BLK_DEV_OFFBOARD) [N/y/?]
Use DMA by default when available (CONFIG_IDEDMA_AUTO) [Y/n/?]
Other IDE chipset support {CONFIG_IDE_CHIPSETS) [N/y/?]
Loopback device support (CONFIG_BLK_DEV_LOOP) [N/y/?]
Network block device support (CONFIG_BLK_DEV_NBD) [N/y/?]
Multiple devices driver support (CONFIG_BLK_DEV_MD) [N/y/?]
RAM disk support (CONFIG_BLK_DEV_RAM) [N/y/?]
XT hard disk support (CONFIG_BLK_DEV_XD) [N/y/?]
Mylex D AC 960/D AC 1100 PCI RAID Controller support (CONFIG_BLK_DEV_DAC960) [N/y/?] (NEW) Parallel port IDE device support (CONFIG_PARIDE) [N/y/?]
Compaq SMART2 support (CONFIG_BLK_CPQ_DA) [N/y/?] (NEW)
Networking options
Packet socket (CONFIG_PACKET) [Y/n/?]
Kernel/U ser netlink socket (CONFIG_NETLINK) [N/y/?]
Network firewalls (CONFIG_FIREW ALL) [N/y/?] Y
Socket Filtering (CONFIG_FILTER) [N/y/?]
Unix domain sockets (CONFIG_UNIX) [Y/n/?]
TCP/IP networking (C ONFIG_INET) [Y/n/?]
IP- m ulticasting (CONFIG_IP_M ULTICAST) [N/y/?]
IP: advanced router (C O NFIG_IP_ADVANCED_RO UTER) ỊN/y/?]
Trang 24IP: transparent proxy support (CONFIG_IP_TRANSPARENT_PROXY) [N/y/?] (NEW)
IP: m asquerading (C O N F IG IP M A S O U E R A D E ) [N/y/?] (NEW)
IP; optim ize as router not host (CONFIG_IP_ROUTER) [N/y/?]
IP: tunneling (CONFIG_NET_IPIP) [N/y/?]
IP: GRE tunnels over IP (CONFIG_NET_IPGRE) [N/y/?]
IP: aliasing support (CONFIG_IP_ALIAS) [N/y/?]
IP: TCP syncookie support (not enabled per default) (CONFIG_SYN_COOKIES) [N/y/?] Y
IP: Reverse ARP (CONFIG_INET_RARP) [N/y/?]
IP: Allow large windows (not recommended if <16Mb of memory) (CONFIG_SKB_LARGE) |Y/n/?] The IPX protocol (C O N F IG JP X ) [N/y/?]
Appletalk DDP (CONFIG_ATALK) [N/y/?]
Telephony support
Linux telephony support (CONFIG_PHONE) [N/y/?] (NEW)
SCSI support
SCSI support (CONFIG_SCSI) [Y/n/?]
SCSI disk support (CONFIG_BLK_DEV_SD) [Y/n/?]
SCSI tape support (CONFIG_CHR_DEV_ST) [N/y/?]
SCSI CD-ROM support (CONFIG_BLK_DEV_SR) [N/y/?]
SCSI generic support (C ONFIG_CHR_DEV_SG) [N/y/?]
Probe all LUNs on each SCSI device (CONFIG_SCSI_M ULTI_LUN) [Y/n/?] N
V erbose SCSI error reporting (kernel size +=12K) (CONFIG_SCSI_CONSTANTS) [Y/n/?] N
SCSI logging facility (CONFIG_SCSI_LOG GING ) [N/y/?]
SCSI low-level drivers
7000FASST SCSI support (CONFIG_SCSI_7000FASST) [N/y/?]
ACARD SCSI support (C ONFIG_SCSI_ACARD) [N/y/?]
A daptec A H A152X/2825 support (CONFIG_SCSI_AHA152X) [N/y/?]
A daptec A H A 1542 support (C O N FIG _SC SI_AHA1542) [N/y/?]
Adaptec A H A 1 740 support (C O N FIG _SC SI_AHA1740) [N/y/?]
A daptec AIC7XXX support {C ONFIG _SCSI_AIC7XXX) [N/y/?] Y
E nable Tagged Command Queueing (TCQ) by default [N/y/?] (NEW) Y
M axim um num ber o f TCQ comm ands per device (C O N F'G _AiC 7XXX_C r.'DS_PER DEVICE) [8] (NEW)
Trang 25Collect statistics to report in /proc (CONFIG_AIC7XXX_PROC_STATS) [N/y/?] (NEW)
Delay in seconds after SCSI bus reset (CONFIG_AIC7XXX_RESET_DEUW ) [5] (NEW)
IBM Serve RAID support (CONFIG_SCSI_IPS) [N/y/?] (NEW)
AdvanSys SCSI support (CONFIG_SCSI_ADVANSYS) [N/y/?]
Always IN2000 SCSI support (CONFIG_SCSI J N 2 0 0 0 ) [N/y/?]
AM 53/79C974 PCI SCSI support (CONFIG_SCSI_AM53C974) [N/y/?]
AMI MegaRAID support (CONFIG_SCSI_MEGARAID) [N/y/?]
BusLogic SCSI support (CONFIG_SCSI_BUSLOGIC) [N/y/7]
DTC3180/3280 SCSI support (CONFIG_SCSI_DTC328Ũ) [N/y/?]
EATA ISA/EISA/PCI (DPT and generic EATA/DMA) support (CONFIG_SCSI_EATA) [N/y/?]
o
EATA-DMA [Obsolete] (DPT, NEC, AT&T, SNl, AST, Olivetti, Alphatronix) support
<CONFIG_SCSI_EATA_DMA) [N/y/?]
EATA-PIO (old DPT PM2001, PM2012A) support (CONFIG_SCSI_EATA_PIO) [N/y/?]
Future Domain 16xx SCSI/AHA-2920A support (CONFIG_SCSI_FUTURE_DOMAIN) [N/y/?] GDT SCSI Disk Array C ontroller support (CONFIG_SCSI_GDTH) [N/y/?]
Generic N CR5380/53c400 SCSI support (CONFIG_SCSI_GENERIC_NCR5380) [N/y/?]
Initio 9100U(W ) support (CONFIG_SCSI_INITIO) [N/y/?]
Initio INI-A100U2W support (C 0 N F IG _ S C S M N IA 1 00) [N/y/?]
NCR53c406a SCSI support (CONFIG_SCSI_NCR53C4Q6A) [N/y/?]
symbios 53c416 SCSI support (CONFIG_SCSI_SYM 53C416) [N/y/?]
Simple 53c710 SCSI support (Compaq, NCR machines) (CONFIG_SCSI_S1M710) [N/y/?] (NEW) NCR53c7,8xx SCSI support (CONFIG_SCSI_NCR53C7xx) [N/y/?]
NCR53C8XX SCSI support (CONFIG_SCSI_NCR53C8XX) [N/y/7]
SYM53C8XX SCSI support (CONFIG_SCSI_SYM 53C8XX) [Y/n/?] N
PAS 16 SCSI support (CONFIG_SCSI_PAS16) [N/y/?]
PCI2000 support (CONFIG_SCSI_PCI2ŨŨO) [N/y/?]
PCI2220Í support (C O N FIG _SC Sl_PC I2220l) [N/y/?]
PSI240Í support (CONFIG_SCS1_PSI240I) [N/y/?]
Qlogic FAS SCSI support (C ONFIG_SCSI_QLO GIC_FAS) [N/y/?]
Qlogic ISP SCSI support (C O N FIG _S C SI_Q LO G IC JS P ) [N/y/?]
Qlogic ISP FC SCSI support (CONFIG_SCSI_QLO GIC_FC) [N/y/?]
Trang 26Seagate ST-02 and Future Domain TMC-8XX SCSI support (CONFIG_SCSI_SEAGATE) [N/y/?]
Tekram DC390(T) and Am 53/79C974 SCSI support (CONFIG_SCSI_DC39ŨT) [N/y/?]
Trantor T128/T128F/T228 SCSI support (CONFIG_SCSI_T128) [N/y/?]
UltraStor 14F/34F support (CONFIG_SCSI_U14_34F) [N/y/?]
U ltraSlor SCSI support (CONFIG_SCSl_ULTRASTOR) [N/y/?]
Network device support
Network device support (CONFlG_NETDEVICES) [Y/n/?]
ARCnet devices
A RCnet support (CONFIG_ARCNET) [N/y/?]
Dummy net driver support (CONFIG_DUMMY) [Y/n/?]
EQL (serial line load balancing) support (CONFIG_EQUALIZER) [N/y/?]
General Instruments Surfboard 1000 (CONFIG_NET_SB1000) [N/y/?] (NEW)
Ethernet (10 or 100Mbit)
Ethernet (10 or 100Mbit) (CONFIG_NET_ETHERNET) [Y/n/?]
3COM cards (CONFIG_NET_VENDOR_3COM) [N/y/?]
AMD LANCE and PCnet (AT1500 and NE2100) support (C O N F IG L A N C E ) [N/y/?]
Western Digital/SMC cards (CONFIG_NET_VENDOR_SMC) [N/y/?]
Racal-lnterlan (Micom) Nl cards (CONFIG_NET_VENDOR_RACAL) [N/y/?]
Other ISA cards (CONFIG_NET_ISA) [N/y/?]
EISA, VLB, PCI and on board controllers (CONFIG_NET_EISA) [Y/n/?]
AMD PCnet32 (VLB and PCI) support (CONFIG_PCNET32) [N/y/?]
Apricot X en-ll on board Ethernet (CONFIG_APRICOT) [N/y/?]
CS89xO support (CONFIG_CS89xO) [N/y/7]
DM9102 PCI Fast Ethernet A dapter support (EXPERIMENTAL) (C O N F IG D M 9 1 0 2 ) [N/y/?] (NEW) Generic DECchip & DIGITAL EtherAA/ORKS PCI/EISA (CONFIG_DE4X5) [N/y/?]
DECchip Tulip (dc21x4x) PCI support (CONFIG_DEC_ELCP) [N/y/?]
Old DECchip Tulip (dc21x4x) PCI support (CONFIG_DEC_ELCP O LD) [N/y/?] (NEW)
Digi Intl RightSwitch SE-X support (CONFIG_DGRS) [N/y/?]
EtherExpressPro/100 support (CONF1G_EEXPRESS_PR0100) fY/n/?l
PCI NE2000 support (C ONFIG_NE2K_PCI) [N/y/?]
Tl ThunderLAN support (CONFIG_TLAN) [N/y/?]
ĐA! HOC QUOC G ia HÀ NQI TRUNG TÂM G -IN THU VIÉN
r-N " T
17
Trang 27VIA Rhine support (CONFIG_VIA_RHINE) [N/y/?]
SiS 900/7016 PCI Fast Ethernet Adapter support (CONFIG_SIS900) [N/y/?] (NEW) Pocket and portable adaptors (CONFIG_NET_POCKET) [N/y/?]
Ethernet (1000 Mbit)
SysKonnect S K -98X X support (CONFIG_SK98LIN) |N/y/?] (NEW)
FDDI driver support (CONFIG_FDDI) [N/y/?]
p p p (point-to-point) support (CONFIG_PPP) [N/y/?]
SLIP (serial line) support (CONFIG_SLIP) [N/y/?]
W ireless LAN (non-ham radio) (CONFIG_NET R ADIO ) [N/y/?]
Token ring devices
Token Ring driver support (CONFIG_TR) [N/y/7]
Fibre Channel driver support (CONFIG_NET_FC) [N/y/?] (NEW)
Wan interfaces
MultiGate (COMX) synchronous serial boards support (CONFIG_COMX) [N/y/?] (NEW) Frame relay DLCI support (CONFIG_DLCI) [N/y/?]
WAN drivers (CONFIG_W AN_DRIVERS) [N/y/?]
SBNI12-XX support (CONFIG_SBNI) [N/y/?] (NEW)
Amateur Radio support
Am ateur Radio support (CONFIGJHAM RADIO ) [N/y/?]
IrDA subsystem support
IrDA subsystem support (C O N F IG JR D A ) [N/y/?]
ISDN subsystem
ISDN support (C O N F IG JS D N ) |N/y/?]
Old CD-ROM drivers (not SCSI, not IDE)
Support non-SCSI/IDE/ATAPI CDROM drives (CONFIG_CD_NO_IDESCSI) [N/y/?]
Character devices
Virtual terminal (CONFIG_VT) [Y/n/?]
Support for console on virtual terminal (CONFIG_VT_CONSOLE) [Y/iV?]
Standard/generic (dum b) serial support (CONFIG_SERIAL) [V/n/?]
Support for console on serial port (CONFIG_SERIAL_CO NSOLE) [N.'y/?]
Extended dumb serial driver options (CONFIG_SERIAL_EXTENiDED) [N/y/?]
Trang 28Non-standard serial port support (CONFIG_SERIAL_NONSTANDARD) [N/y/?]
Unix98 PTY support (CONFIG_UNIX98_PTYS) [Y/n/?]
Maximum number of Unix98 PTYs in use (0-2048) (CONFIG_UNIX98_PTY_COUNT) [256] 128 Mouse Support (not serial mice) (CONFIG_MOUSE) [Y/n/?]
Mice
ATIXL busmouse support (CONFIG_ATIXL_BUSMOUSE) [N/y/?]
Logitech busmouse support (CONFIG_BUSMOUSE) [N/y/?]
Microsoft busmouse support (CONFIG_MS_BUSMOUSE) [N/y/?]
PS/2 mouse (aka "auxiliary device") support (CONFIG_PSMOUSE) [Y/n/?]
C&T 82C710 mouse port support (as on TI Travelmate) (CONFIG_82C710_MOUSE) [Y/n/?] N
P C 110 digitizer pad support (CONFIG_PC110_PAD) [N/y/?]
Joystick support
Joystick support (CONFIG_JOYSTICK) [N/y/?]
QIC-02 tape support (CONFIG_QICŨ2_TAPE) [N/y/?]
Watchdog Tim er Support (C O N F IG W A T C H D O G ) [N/y/?]
/dev/nvram support (CONFIG_NVRAM) [N/y/?]
Enhanced Real Time Clock Support (CONFIG_RTC) [N/y/?]
Video for Linux
Video For Linux (CONFIG_VIDEO_DEV) [N/y/?]
Double Talk PC internal speech card support {CONFIG_DTLK) [N/y/7]
Ftape, the floppy tape device driver
Ftape (QIC-80/Travan) support (CO hFIG _FTAPE) [N/y/?]
Filesystems
Quota support (CONFIG_QUOTA) [N/y/?] Y
Kernel autom ounter support (CONFIG_AUTOFS_FS) [Y/n/?] N
Amiga FFS filesyslem support (CONFIG_AFFS_FS) [N/y/?]
A pple Macintosh filesystem support (experimental) (CONFIG_HFS_FS) [N/y/?]
DOS FAT fs support (C ONFIG_FAT_FS) [N/y/?]
ISO 9660 CDROM filesystem support (C 0N FIG _IS 0966Ũ _FS ) [Y/n/?]
Microsoft Joliet CDROM extensions (CONFIG_JOLIET) [N/y/?]
M inix fs support (CON FIG _M IN IX_FS) [N/y/?]
19
Trang 29NTFS filesystem support (read only) (CONFIG_NTFS_FS) [N/y/?]
OS/2 HPFS filesystem support (read only) (CONFIG_HPFS_FS) [N/y/?]
/proc filesystem support (CONFIG_PROC_FS) [Y/n/?]
/dev/pts filesystem for Unix98 PTYs (CONFIG_DEVPTS_FS) [Y/n/?]
ROM filesystem support (CONFIG_ROMFS_FS) [N/y/?]
Second extended fs support (CONFIG_EXT2_FS) [Y/n/?]
System V and Coherent filesystem support (CONFIG_SYSV_FS) [N/y/?]
UFS filesystem support (CONFIG_UFS_FS) [N/y/?]
Network File Systems
Coda filesystem support (advanced network fs) (CONFIG_CODA_FS) [N/y/?]
NFS filesystem support (CONFIG_NFS_FS) [Y/n/?] N
SMB filesystem support (to mount W fW shares etc.) (CONFIG_SMB_FS) [N/y/?] NCP filesystem support (to mount NetWare volumes) (CONFIG_NCP_FS) [N/y/?]
VGA text console (CONFIG_VGA_CONSOLE) [Y/n/?]
Video mode selection support (CONFIG_VIDEO_SELECT) [N/y/?]
Sound card support (CONFIG_SOUND) [N/y/?]
(Security options will appear only if you are patched your kernel with the Openvsdll Project patch)
Security options
Non-executable user stack area (CONFIG_SECURE_STACK) [Y]
A utodetect and emulate GCC trampolines (CONFIG_SECURE_STACK_SM ART) [Y] Restricted links in /tmp (C O N FIG_SECURE_LINK) [Y]
Restricted FIFOs in /tmp (CONFIG_SECURE_FIFO ) [Y]
Restricted /proc (C O NFIG_SECURE_PROC) [N] Y
Special handling o f fd 0 1 and 2 (C ONFIG_SECURE_FD_0_1_2) [Y]
Enforce RLIM IT_NPRO C on execwe(2) (CONFIG_SECURE_RLIM IT NPRGC) [Y]
Trang 30Destroy shared memory segments not in use (CONFIG_SECURE_SHM) [N] Y
Kernel hacking
Magic SysRq key (CONFIG_MAGIC_SYSRQ) [N/y/?]
11.5.4 Biên dịch nhân
T rở lại th ư m ục “/usr/src/linux/” , gõ lệnh sau để biên dịch lại nhân:
[root@deep linux]# m ake dep; m ake clean; m ake bzlm age
D òng lệnh này chứa 3 lệnh Lệnh thứ nhất, m ak e dep , sẽ dựa theo cấu hình bạn đã chọn để tạo các dependency Q uá trình này sẽ quyết định file nào cần phải biên dịch và file nào không cần biên dịch, m ak e clean sẽ xoá
m ọi file đối tư ợng liên quan đến lần dịch trước đó để tránh mọi lỗi xung đột
do nâng cấp version Cuối cùng, m ak e b z lm a g e , thực hiện quá trình biên dịch toàn bộ nhân, có thể m ất từ 5 phút đến 30 phút tuỳ theo cấu hình máy
và các lựa chọn biên dịch
C hú ỷ: Lệnh m ak e b z lm a g e thực ra còn có m ột dạng khác là m ak e z lm ag e , nếu chúng ta chắc chắn nhân m ới sẽ không quá lớn (trong trường hợp ngược lại bạn sẽ nhận được thông báo lỗi “kernel is too big” ) Còn có thể thay lệnh
m ake bzlm age bởi m ột trong các lệnh sau:
• m ake bzlilo, make zlilo nếu m áy cài đặt LILO Boot, m ake bzlilo giống
với m ake bzlm age và m ake zlilo giống m ake zlm age
• m ak e b zd isk , m ak e zdisk: cài đặt nhân với vào đĩa mêm.
T iền tổ ‘b ’ chỉ ra nhân mới là ‘b ig ’
11.5.5 Biên dịch và cài đặt các module
Sau quá trình biên dịch hoàn tất, nhân mới được nén và sẵn sàng cài đặt vào hệ thống Trước khi cài đặt nhân mới, chúng ta phái biết liệu có phai
21
Trang 31biên dịch m odule hay không Đ iều này chỉ cần thiết nếu bạn trả lời Yes với
“E nable loadable m odule support (C O N FIG _M O D U LE S)” trong phần cấu hình nhân và bạn cũng thiết đặt m ột số lựa chọn m odule trong phần cấu hình nhân T rong trường hợp này, gõ lệnh sau:
[root@deep linux]# m ake m odules
[root@deep linux]# m ake m odules_install
T ương tự như vậy, lệnh này có thể m ất từ 5 đến 30 phút tuỳ theo cấu hình cài đặt các m odule
11.5.6 Cài đặt nhân mới
1 C opy file “/usr/src/linux/arch/i386/boot/bzIm age” và đối tên vào thư
Trang 32[root@deep linux]# cd / boot
[root@deep /boot]# In -fs vm linuz-kernel.version.num ber vm linuz
[root@deep /boot]# In -fs S ystem m ap-kernel.version.num ber S ystem m ap
N eu không thiết lập liên kết mới này thì chương trình LILO sẽ coi bộ nhân cũ là m ặc định
4 X oá các file không cần thiết trong thư m ục “/boot” :
[root@deep /boot]# rm -f m odule-info
[root@deep /boot]# rm -f initrd-2.2.xx.im g
“m odule-info” trỏ đến thư m ục chứa các m odule cũ của bộ nhân hiện tại Bởi vì chúng ta m uốn cài đặt m ột bộ nhân hoàn toàn mới, vì vậy không cần phải giữ các liên kết này File “initrd-2.2.xx.im g” chứa im age của m ột ổ đĩa R A M ảo được khởi tạo trước khi khởi động từ đĩa, file này chỉ tồn tại và được cài đặt trong quá trình cài đặt Linux N èu chúng ta sử dụng một hệ thống SCSI, bộ cài đã được hợp nhất vào trong nhân vì chúng ta không dịch theo m odule, vì vậy file initrd-2.2.xx có thể được xoá m ột cách an toàn
5 Tạo m ột th ư m ục L inux kernel mới chứa tất cả các file header (.H)dùng cho việc biên dịch các chương trình khác trong hệ thông
N h ư đã nói ở phàn trước, chúng ta đã thiết lập 3 sym link trong thư
m ục “/u sr/in clu d e” , nó trỏ đến các thư m ục chứa file header Đó là các thư mục asm , linux, v à scsi Bây giờ chúng ta sẽ thật sự copy các file này vào hệ thống như sau:
[root@deep /]# m k d ir -p /u sr/src/lin u x-2.2.14/in clu d e
[root@deep /]# cp -r /u sr/src/lin u x/in clu d e/asm -g en eric /usr/src/1inux-2.2.14/include [root@deep /]# cp -r /u s r/src/lin u x/in clu d e/asm -i386 /u sr/src/lin u x-2.2.14/in clu d e
23
Trang 33[root@deep /]# cp -r /usr/src/linux/include/linux /u sr/src/lin u x-2.2 14/include
[root@deep /]# cp -r /usr/src/lin u x/in clu d e/n et /u sr/src/lin u x-2.2 14/include
[root@deep /]# cp -r /usr/src/linux/include/video /u sr/src/lin u x-2.2 14/include
[root@deep /]# cp -r /usr/src/linux/include/scsi /u sr/src/lin u x-2.2 14/include
[root@deep /]# rm -rf/u s r/s rc /lin u x
[root@deep /]# cd /usr/src
[root@deep src]# In -s /usr/src/linux-2.2.14 linux
Chú ý: B ước này xoá bớt các file để tăng dung lượng đĩa trống Thư mục chứa mã nguồn L inux kernel có thể lên đến 75M B Với bước này, thư mục Linux kernel chỉ còn lại khoảng 3M B , tức là tiết kiệm được khoảng 72MB
6 Sửa file ‘7 e tc /lilo c o n f’ để thêm nhân mới được khởi động từ hệ thống:
M ở file “/e tc/lilo c o n f ’ và thay đổi các thông số càn thiết:
Trang 34[root@deep /]# /sb in /lilo -V
LILO version 21, [Copyright 1992-1998 Werner Almesberger
Reading boot sector from /dev/sda
Merging with /booưboot.b
Boot image: /booưvmlinuz-2.2.14
Added linux *
/boot/boot.0800 exits - no backup copy made.
Writing boot sector.
Chú ý: N ếu bạn trả lời NO cho “U nix98 PTY support(C O N FIG _U N IX 98_PT Y S) trong phần cấu hình nhân, bạn phai cập nhật file “/etc/fstab” và xoá dòng sau:
none /d ev/p ts devpts gid=5,m ode=620 0 0
II.5.7 Xoá các chương trình và file module
M ặc định khi chúng ta cài bản R edH at Linux lần đầu tiên, kernel được địch để hỗ trợ việc load các m odule động Đ iều đó có nghĩa mỗi thiết
bị hoặc chức năng tồn tại dưới dạng m odule và được điều khiển bởi chương
trình kernel daem on kmod, nó sẽ tự động load m ột vài m odule và hàm vào
bộ nhớ nếu cần thiết, và unload chúng khi không còn được sử dụng nữa
Trang 35# Đ e xoá file “ conf.m odules” , dùng lệnh:
[root@deep /]# rm -f/etc /co n f.m o d u le s
# Đ e uninstall package m odutils, dùng lệnh:
[root@deep /]# rpm -e nodeps m odutils
Bước 2:
Sửa file “rc.sysinit” , chú thích các dòng có chứa “depm od -a” bằng cách thêm ký tự vào đầu dòng, “rc.sysinit” là m ột shell script được đọc lúc khởi động hẹ thống, m ột trong các chức năng của nó là tìm các module dependency trong nhân
Đ ối với RedHat 6.1:
C hú thích dòng 260 trong file rc sy sin it (/etc/rc.d/rc.sysinit):
if [ -X /sbin/depmod -a -n "SUSEMODULES" ]; then
thành:
#if [ -X /sbin/depmod -a -n "ĨUSEMODULES" ]; then
Chú thích dòng 272 đến 277 trong file rc.sysinit (/etc/rc.d/rc.sysinit):
Trang 36it fi
#fi
Chú ý: File này có trong package “ in itscrip t-4 _ 7 0 -l” trong đĩa cài RedHat
6.1
Đổi với RedHat 6.2:.
Chú thích dòng 243 trong file rc.sysinit (/etc/rc.d/rc.sysinit):
if [ -X /sbin/depmod -a -n "SUSEMODULES" ]; then
Trang 37C hú ý: M ộ t lần nữa, bước này chỉ cần thiết khi bạn trả lời No cho câu hỏi
“E nable loadable m odule support (C O N FIG _M O D U LES) trong phần cấu hỉnh nhân m ô tả ở trên)
II.5.8 K hởi động lại hệ thống
G õ “reb o o t” để khởi động lại hệ thống và kiểm tra kết quả Sau khi đăng nhập vào hệ thống, dùng lệnh sau để kiểm tra version của nhân mới cài đặt:
[root@deep /]# unam e -a
Linux deep.openna.com 2.2.14 #1 Mon Jan 10 10:40:35 EDT 2000 Ì686 unknown
[root@deep]#
II.6 Tạo dĩa mềm rescue
Sau khi cài đặt xong bộ nhân mới, chúng ta cũng cần tạo đĩa mềm khởi động từ nhân m ới này trong trường hợp có sự cố
[root@deep /]# m kb o o td isk device /dev/fdO 2.2.14
Insert a disk in /dev/fdO Any information on the disk will be lost.
Press <Enter> to continue or AC to abort:
Đ é tạo đĩa m ềm dự phòng, tại dấu nhắc console gõ các lệnh sau:
1 C ho đĩa vào ổ và format:
[root@deep /]# fd fo rm at /dev/fd0H 1440
Double-sided, 80 tracks, 18 sec/track Total capacity 14^0 kB.
Formatting done
Verifying done
Trang 382 C opy file “vm linuz” từ “/b o o t” vào đĩa mềm:
[root@deep /]# cp /b oot/vm linuz /dev/fdO
[root@deep /]# rdev /dev/fdO /dev/sda12
5 Đ ặt th iết bị khởi động ở chế độ read-only:
[root@deep /]# rdev -R /dev/fdO 1
6 C ho đĩa m ểm vào ỏ A: và khởi động lại hệ thống
II.7 Cập nhật thư mục “/dev”
N ếu bạn thêm thiết bị mới vào hệ thống, hoặc nâng cấp triệt để lên bản nhân m ới (ví dụ nâng cấp từ bản 2.2.9 lên 2.2.15), cỏ thê bạn sẽ cần phải cập nhật cả thư m ục “/d ev ” để tránh trường hợp nhân báo thiết thiết bị
T rình tiện ích M A K E D E V sẽ rà soát lại toàn bộ thư mục “ dev” (thư mục này chứ a m ột danh m ục các thiêt bị và các trình điêu khiên thiêt bị có liên quan) M ột lựa chọn đặc biệt “update” cho phép M AKEDHV tạo các thiết bị
2°
Trang 39mới m à bạn đã lựa chọn trong phần cấu hình nhân và xóa tất cả các thiết bị không liên quan.
[root@deep /]# cd /d ev
[root@deep /dev]# /M A K E D E V update
❖ M a k e f ile
Để có thông tin đầy đủ về M akefile, có thể tham khảo trong cuốn
Linux toàn tập, VN-Guide, NXB Thống kê, quỷ 3/2000 các chương 56, 11,
Trang 40Tài liệu tham khảo
[1] G erhard M ourani, Securing and o p tim izin g Linux: R edH at Edition, version 1.3, June 07/2000
[2] D avid A R usling, The Linux K ernel version 0.8-3, (c) 1996-1999
[3] K em el-H O W T O
[4] Linux K ernel M odules Program m ing Guide
[5] R edH at L inux U nleashed
[6] V N -G uide, L inux toàn tập, NXB Thống kê 2000 (dịch từ cuồn RedHat Linux Unleashed).