LỜI CẢM ƠN Để hoàn thành đề tài „„Tìm hiểu về hệ điều hành Linux‟‟, ngoài sự cố gắng của bản thân, em còn nhận được sự giúp đỡ, chỉ bảo rất tận tình của các thầy giáo trong học viện.. Ph
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG TRUNG TÂM CÔNG NGHỆ THÔNG TIN
BÁO CÁO THỰC TẬP TỐT NGHIỆP Nội dung:Tìm hiểu về Linux
Nơi thực tập : Trung tâm CNTT – CDIT
Sinh viên: Nguyễn Minh Hải
MSSV: D2482 Lớp: D07HTTT2 Người hướng dẫn: Thầy Phạm Quốc Hùng
Hà Nội, ngày 25 tháng 6 năm 2011
Trang 2MỤC LỤC
MỤC LỤC 2
ĐÁNH GIÁ KẾT QUẢ THỰC TẬP TỐT NGHIỆP 3
LỜI CẢM ƠN 4
Phần A : GIỚI THIỆU ĐƠN VỊ THỰC TẬP 5
I Chức năng 5
II Tổ chức 5
III Các lĩnh vực hoạt động 6
Phần B : NỘI DUNG THỰC TẬP 6
I Phần giới thiệu chung 6
II Phần trình bày 6
1 Giới thiệu về Linux 6
2 Cài đặt Linux từ đĩa CD/DVD 10
3 Kiến trúc Linux 13
4 Hệ thống file phân tán (Network file system) 24
5 Tính bảo mật trên Linux 30
6 So sánh với Windows 34
7 Kết Luận 38
III Phần sinh viên tự ghi 39
PHẦN C PHỤ LỤC 39
Trang 3ĐÁNH GIÁ KẾT QUẢ THỰC TẬP TỐT NGHIỆP
(Thời gian thực tập: Từ ngày ……/… /20 đến ngày ……/… /20 )
Họ và tên sinh viên: Nguyễn Minh Hải
Lớp: D07 HTTT2
NỘI DUNG ĐÁNH GIÁ
1 Chấp hành kỷ luật: (Tốt, Trung bình, hoặc Yếu)
2 Ý thức học tập: (Tốt, Trung bình, hoặc Yếu)
3 Quan hệ, giao tiếp: (Tốt, Trung bình, hoặc Yếu)
4 Điểm ((Thang điểm 10)
Trang 4LỜI CẢM ƠN
Để hoàn thành đề tài „„Tìm hiểu về hệ điều hành Linux‟‟, ngoài sự cố gắng của bản thân, em còn nhận được sự giúp đỡ, chỉ bảo rất tận tình của các thầy giáo trong học viện
Em xin bày tỏ lời cảm ơn đến các thầy giáo trong khoa Công nghệ thông tin 1, các thầy giáo ở trung tâm công nghệ thông tin – CDIT, đặc biệt là thầy Phạm Quốc Hùng – công tác tại phòng nghiên cứu ứng dụng Viễn Thông, đã tận tình hướng dẫn, chỉ bảo, cung cấp tài liệu chuyên ngành về Linux để em tham khảo và tổng hợp
Em cũng gửi lời cảm ơn đến các bạn cán bộ lớp D07 HTTT đã sắp xếp các buổi họp nhóm để trao đổi kiến thức chuyên môn
Trang 5Phần A : GIỚI THIỆU ĐƠN VỊ THỰC TẬP
I Chức năng
Được thành lập năm 1999 trong xu thế cạnh tranh và hội nhập toàn cầu, Trung tâm Công nghệ Thông tin CDIT, với vai trò là đơn vị nghiên cứu phát triển hàng đầu trong lĩnh vực công nghệ thông tin, xác định: việc lĩnh hội, đúc kết và phát huy tiềm năng, nội lực, làm chủ công nghệ là mục tiêu chiến lược nhằm thực hiện thành công định hướng gắn kết Nghiên cứu - Đào tạo - Sản xuất Kinh doanh
Trung tâm Công nghệ Thông tin CDIT có nhiệm vụ: nghiên cứu, phát triển, triển khai sản phẩm, chuyển giao công nghệ và đào tạo trong lĩnh vực Công nghệ Thông tin phục vụ Ngành Bưu chính Viễn thông và xã hội
II Tổ chức
ĐOÀN THANH NIÊN
Phòng
tổng hợp
Phòng
kế hoạch – tài chính
Phòng nghiên cứu phát triển Mạng – viễn thông
Phòng nghiên cứu ứng dụng bưu chính
Phòng nghiên cứu ứng dụng Viễn thông
Trang 6III Các lĩnh vực hoạt động
Trung tâm Công nghệ Thông tin hoạt động trên năm lĩnh vực chính:
1 Nghiên cứu khoa học công nghệ;
2 Phát triển, triển khai công nghệ và sản phẩm;
3 Sản xuất phần mềm và thiết bị;
4 Tiếp nhận và chuyển giao công nghệ;
5 Đào tạo và bồi dưỡng nhân lực
Phần B : NỘI DUNG THỰC TẬP
I Phần giới thiệu chung
Tên chủ đề thực tập: Tìm hiểu về hệ điều hành Linux
Mục tiêu: Hiểu được kiến trúc và nguyên lí hoạt động của hệ điều hành Linux, từ đó có thể đi sâu về các lĩnh vực như lập trình hoặc bảo mật hệ thống
Nội dung: gồm có các phần: Giới thiệu, Cách cài đặt, Kiến trúc, Hệ thống file phân tán, Tính bảo mật, So sánh với Windows và Tổng kết
Kết quả cần đạt: Trình bày thành quyển với nội dung kiến thức rõ ràng, đầy đủ
và báo cáo trước hội đồng thực tập
Trang 7nay, Linux là một hệ điều hành với mã nguồn mở (Open Source) và miễn phí (free) dưới bản quyền của tổ chức GNU (Gnu‟s Not Unix) Khởi đầu, Linux được thiết kế
để hoạt động trên nền tảng của kiến trúc i386 Intel với khả năng đa tác vụ (multitasking) Tuy nhiên ngày nay, Linux đã có các phiên bản trên các họ chip khác chẳng hạn như chip Alpha Linux có nguyên lý hoạt động tương tự hệ điều hành Unix (Unix-like) Mặc dù Linux không phải là Unix nhưng người ta vẫn xem Linux như là phiên bản Unix trên PC (PC version of Unix OS) Do là Unix-like; Linux có đầy đủ tất cả các đặc tính của Unix (fully functional) Ngoài ra nó còn hỗ trợ thêm một số tính năng mà trên Unix không có, như long file name (tên file có ký tự space
“ ”)
1.2 Các phiên bản của Linux
RedHat Linux:
Hiện đã có version (ấn bản) 7.0; là phiên bản khá phổ biến Cung cấp khá nhiều tool
và utility để hỗ trợ user (người sử dụng) từ các thao tác setup (cài đặt) đến config (cấu hình) hệ thống
Trang 8Corel Linux:
Phát triển bởi hãng Corel, dễ setup, có graphic interface (giao diện đồ họa) khá giống Windows NT kể các tool và utility Tuy nhiên các config tool chưa hoạt động tốt Hiện có đến version 1.0
Open Linux:
Do hãng Caldera phát triển, dễ cài đặt cũng như sử dụng Giao diện KDE Thích hợp cho người sử dụng tại gia đình Hiện đang có version 2.3
1.3 Các tính năng và dịch vụ cơ bản của Linux
Như đã trình bày, Linux là một hệ điều hành với đầy đủ các tính năng của Unix Vì thế nó có khả năng đóng vai trò của một Internet/Intranet Server (Web Server, Ftp Server, Mail Server, DNS Server, v.v ), Database Server, File Server v.v hoặc làm việc như một Unix workstation (máy trạm Unix) Như vậy, Linux là một hệ điều hành mạng với đầy đủ các tính năng của nó Cũng như Unix, Linux cũng tuân theo chuẩn POSIX (Portable Operating System Interface for Computer Enviroment) mặc dù nó vẫn chưa được tổ chức này công nhận
Các service được cung cấp bởi Linux bao gồm hầu hết các service của Unix như:
UUCP (Unix to Unix Copy Protocol): Giao thức hỗ trợ service truyền thông giữa
các host Unix
TCP/IP IP (Transmission Control Protocol/Internet Protocol): Giao thức cung cấp
service truyền thông trên mạng Internet
X Protocol: Giao thức để xử lý GUI (Graphics User Interface) trên X Window PPP: (Point to Point Protocol): Giao thức dùng để truyền thông trực tiếp giữa
hai máy
Samba: Giao thức cung cấp File service tương tự File Service của Windows NT cho
phép các windows client truy xuất hệ thống file trên Linux Server
DNS (Domain Name Service): Dịch vụ quản lý tên host trên mạng Internet/Intranet
v.v
Tuy nhiên các service trên chỉ là các service tùy chọn, nghĩa là hệ thống có thể có hay không có các service trên vẫn hoạt động tốt Các service này chỉ làm cho
Trang 9Còn các service được mô tả sau đây là các service quan trọng của Unix/Linux.Điều
đó có nghĩa là nếu không có các service này, hệ thống có thể không hoạt động được
Do vậy, một số trong chúng sẽ được cài đặt một cách tự động khi chúng ta thiết lập một hệ thống Unix/Linux
Init:
Dịch vụ đơn lẻ quan trọng nhất trong hệ thống Unix/Linux là init Nó được khởi động như là tiến trình đầu tiên trong mọi hệ thống Unix/Linux Đây là tiến trình dùng để khởi động (boot) hệ thống Nó sẽ kiểm tra và mount filesystems vào
hệ thống, khởi động các daemon Nó cung cấp các khái niệm như single user mode (chế độ hoạt động như hệ người dùng đơn lẻ), multiuser mode (chế độ đa người dùng) Một số tài liệu còn gọi là run level (cấp độ hoạt động) Khi hệ thống kết thúc hoạt động (shutdown), init sẽ dọn dẹp (dừng mọi triến trình đang hoạt động, umount filesystems, v.v )
Login:
Dịch vụ này cho phép user login (đăng nhập) vào hệ thống và khai thác các tài nguyên của hệ thống – trong quyền hạn mà user này được cấp
Graphic User Interface (GUI):
Đây chính là X Window service Nó cung cấp khả năng giao tiếp đồ họa với người
sử dụng Nếu không cài đặt X service, một số các chương trình ứng dụng có xử lý
đồ họa sẽ không thể chạy
Network:
Dịch vụ này cho phép user có thể login vào hệ thống từ xa
Network File System (NFS):
Đây là dịch vụ được hãng SUN phát triển Nó cho phép các tác vụ về file trong một hệ thống mạng là trong suốt (transparency) đối với user Nghĩa là, các user thao tác với các tập tin trên máy khác nhau trong cùng hệ thống mạng như đang thao tác trên máy đơn duy nhất
1.4 Tóm lại:
Cũng như Unix, Linux là một hệ điều hành với các khả năng multiproccessing (đa nhiệm), multitasking (đa tác vụ), multiuser (đa người dùng) sau hơn mười năm
Trang 10phát triển và hiệu chỉnh bởi hàng nghìn lập trình viên trên thế giới đã chứng tỏ được là một hệ điều hành uyển chuyển (có thể hoạt động trên nhiều platform), đáng tin cậy và ổn định
2 Cài đặt Linux từ đĩa CD/DVD
Có rất nhiều phiên bản Linux Ở đây, em trình bày cách cài đặt bản Fedora core 4
Do khuôn khổ tài liệu này có hạn, nên em chỉ nêu ra cấu hình yêu cầu cho máy tính
và một số các bước có tính quan trọng trong quá trình cài đặt
2.1 Cấu hình yêu cầu đối với máy tính
Trang 11Nếu bạn nhấn Enter, việc cài đặt sẽ chạy với chế độ mặc định Để thay đổi chế độ
cài đặt, tại lời mời boot, gõ linux theo một hoặc vài tùy chọn:
Để cài đặt từ đĩa cứng hoặc mạng, thêm lời dẫn askmethod
Để sử dụng giao diện text, thêm lời dẫn text
Nếu cài đặt có lỗi tại thời điểm đầu tiên, cố gắng cài đặt, thêm lời dẫn acpi=off
Sau đó màn hình xuất hiện như sau:
Chọn OK để kiểm tra chất lượng đĩa, chọn Skip để bỏ qua việc kiểm tra Sau đó màn hình hiện ra như sau:
Trang 12Chọn OK, sau đó màn hình như sau:
Chọn Test để kiểm tra đĩa tiếp theo trong bộ đĩa hoặc Continue để tiếp tục cài đặt Sau đó chương trình cài đặt bằng đồ họa sẽ được tải vào Ta chỉ cần làm theo hướng dẫn là có thể cài đặt được
Trang 132.3 Một số lưu ý khi cài
Trong Linux bắt buộc phải có tối thiểu 2 partition :
Một là, Partition chính (Linux native filesystem) chứa thư mục gốc (/) và hạt nhân
Độ lớn khỏang 6GB nếu muốn cài đặt tất cả các packages của RedHat Linux 9.0 và 50-100 MB dành cho phần /boot (phần này phải được đạt tại Primary Partition của HDD để khởi động)
Hai là, Partition swap (Linux swap space) được dùng làm không gian trao đổi dữ liệu khi vùng nhớ chính đầy, dung lượng cho phân này khoảng gấp 2 đến gấp 3 lần dung lượng bộ nhớ vật lý của hệ thống Tuy nhiên chỉ nên dùng khoảng 256 MB trở lại cho máy tính cá nhân
Cuối cùng, ta phải chú ý ghi nhớ mật khẩu của root, để sau này có thể cài đặt các ứng dụng
3 Kiến trúc Linux
Linux gồm có 2 thành phần chính là Shell và Kernel
3.1 Shell: Thời kỳ đầu của máy tính, các chỉ dẫn sử dụng ngôn ngữ nhị phân - rất
khó hiểu Vì thế Os có một chương trình đặc biệt được gọi là Shell Shell chấp nhận các chỉ dẫn hoặc các lệnh bằng tiếng Anh (hầu hết như vậy) và nếu như lệnh có giá trị thì nó chuyển đến kernel
Shell là chương trình giao tiếp với người dùng Shell là trình thông dịch ngôn ngữ dòng lệnh -thực lệnh các lệnh đọc từ các thiết bị input (như bàn phím) hoặc từ một file.Shell thì không phải là phần của kernel, nhưng sử dụng kernel để thực thi chương trình, tạo các file,
Shell
Kernel
CPU
Trang 14Shell hoạt động như sau: Khi ta gõ lệnh vào shell và kết thúc bởi <Enter>, đầu tiên shell sẽ biên dịch dòng lệnh như sau: tách dòng lệnh thành các phần gọi là các token
Một token có thể là 1 từ khóa, 1 biến hoặc 1 kí tự mà shell hiểu được Sau đó, nó sẽ xây dựng 1 dãy các token tuần tự, đến khi tạo thành 1 từ hoặc 1 tên hàm (function name) hoặc kí hiệu phép toán mà shell hiểu được Lệnh sau khi đã được dịch thì được gửi đến nhân của hệ điều hành rồi gửi đến CPU thực hiện
Một số loại shell mà Linux chứa:
BASH (Bourne-Again Shell)
tạo ra các prompt khác nhau)
Khi mở một shell, ta cần đến tài khoản kích hoạt vào thư mục chủ (thông thường nằm trong /home/tên_người_dùng) Chú ý rằng mỗi lệnh đều có nhiều tùy chọn riêng của mình Để xem các tùy chọn cho một lệnh cụ thể, đơn giản chỉ cần gõ "man
<command>" (trong đó: man là từ khóa; command là tên lệnh) Một điểm quan trọng cần chú ý là trong các hệ điều hành Linux, câu lệnh có phân biệt chữ hoa, chữ thường “A” sẽ được hệ điều hành hiểu là khác so với “a”
Một số lệnh cơ bản trong shell:
Trang 15pwd: đưa ra ngoài màn hình thư mục đang hoạt động
(ví dụ: /etc/ssh)
cd: thay đổi thư mục
(ví dụ: cd – ra một cấp thư mục hiện tại; cd vidu – vào thư mục /vidu)
ls: đưa ra danh sách nội dung thư mục
mkdir: tạo thư mục mới
mv: di chuyển file hoặc thư mục; cũng được dùng để đặt lại tên file hoặc thư mục
(mv vị_trí_cũ vị_trí_mới hoặc mv tên_cũ tên_mới)
3.2 Kernel: được coi là lõi của hệ điều hành, chịu trách nhiệm đảm bảo cho hệ
thống hoạt động theo kiểu đa nhiệm, đa người dùng, quản lý file, quản lý phần cứng, tránh gây xung đột giữa các thành phần trong hệ điều hành Kernel gồm có 5 thành phần chính như hình vẽ sau:
Trang 163.2.1 Process Scheduler : còn gọi là bộ định thời, là bộ phận có nhiệm vụ phân chia
thời gian sử dụng tài nguyên hệ thống cho các tiến trình Do Linux là hệ điều hành
đa nhiệm, trong 1 khoảng thời gian có thể có nhiều tiến trình được thực hiện mà tài nguyên hệ thống lại là hữu hạn nên phải sắp xếp sao cho mỗi tiến trình đều được sử dụng tài nguyên mà không gây ra tranh chấp
Vòng đời sống của 1 tiến trình được minh họa như sau:
(1): Đang chạy thì tạm ngừng nhường CPU cho tiến trình được ưu tiên hơn
(2): Tiếp tục chờ tiến trình sau thực hiện xong
Trang 17(3): Chuyển sang trạng thái running để thực hiện tiếp
(4): Kết thúc
Kiến trúc bên trong của Process Scheduler :
Chia làm 4 modun :
Module luật định thời (scheduling policy): chịu trách nhiệm phân xử xem process
nào được quyền truy xuất CPU Hệ thống hoạt động có thông suốt hay không nhờ vào bộ luật này, tránh trường hợp 1 process chiếm thời gian hệ thống qúa nhiều làm các process khác bị đóng băng (freeze)
Module phụ thuộc kiến trúc (architeture-specific): module này gồm các code
assembly phụ thuộc vào mỗi loại CPU dùng để tạm dừng và phục hồi lại tiến trình
Module độc lập kiến trúc (architeture-independent): module gọi các hàm từ
module phụ thuộc kiến trúc và module luật để switch giữa các process đồng thời nó còn gọi các hàm ở bộ phận quản lý bộ nhớ để thiết lập virtual memory cho các process được phục hồi
Module hàm gọi hệ thống (system call) Gồm các hàm mà user có thể dùng để
tương tác với Process Scheduler
Các thành phần tương tác với Scheduler process :
Trang 183.2.2 Memory Manager-MM
Đây là bộ phận dùng để quản lý bộ nhớ MM chịu trách nhiệm điểu khiển tiến trình truy xuất tài nguyên bộ nhớ Bản thân CPU cũng có một hệ thống quản lý bộ nhớ vật lý mà cho phép ánh xạ giửa bộ nhớ process với bộ nhớ vật lý MM phải lưu trữ ánh xạ này cho từng process Thêm vào đó MM còn cho phép swap;tức là nó sẽ di chuyển những trang bộ nhớ không dùng xuống ổ cứng cho phép PC dùng bộ nhớ RAM còn trống
MM có 3 module:
Module phụ thuộc kiến trúc: code để gọi các lệnh của hệ thống quản lý bộ nhớ của
CPU
Module độc lập kiến trúc: ánh xạ cho từng process và swap bộ nhớ ảo Nó cũng
quyết định xem phải remove trang nào, load trang nào
Scheduler process
Network
interface
MM
Trang 19System call : cho phép các process tác động lên MM bao gồm xin cấp phát vùng
nhớ Một số các giao diện (System call interface) là :
malloc() / free() – cấp phát hoặc giải phóng một vùng nhớ
mmap() / munmap() / msync() / mremap() – ánh xạ file vào vùng nhớ ảo
mprotect – thay đổi chế độ bảo vệ cho vùng nhớ ảo
swapon() / swapoff() – thêm hoặc bỏ các file swap
Sơ đồ tương tác với các thành phần khác:
3.2.3 Virtual system file (VFS)
Như đã nói ở trên, một trong các nhiệm vụ của Kernel là quản lý việc truy xuất đến các file mà Linux lại hỗ trợ nhiều loại file: ext, ext2, xia, minix, umsdos, vfat, proc, smb, ncp, iso9660, sysv, hpfs, affs, ufs Như vậy, khi có 1 yêu cầu đọc hoặc ghi file chẳng hạn, thì Kernel sẽ phải nhận biết được kiểu file cần đọc/ghi là gì? Và thực hiện các thao tác tương ứng với từng kiểu khác nhau Như vậy sẽ tốn thời gian và hiệu năng xử lí không cao, do vậy 1 giải pháp được đưa ra là dùng 1 lớp ngăn cách giữa hệ thống file và Kernel, để các file khác nhau sẽ được “nhìn” qua lớp đó thành
1 kiểu giống nhau đối với Kernel Như vậy, Kernel chỉ cần dùng những thao tác giống nhau đối với tất cả các loại file Và các thao tác ứng với từng loại file khác nhau là dành cho lớp đó Lớp này được gọi là hệ thống ảo hóa file (Virtual file system)
Ví dụ: Chẳng hạn khi có yêu cầu từ 1 tiến trình là đọc file ABC.smb và file XYZ.ext2 Thì 2 file này được Kernel “nhìn” qua VFS là giống nhau Như vậy chỉ
Memory management
Network
interface
Scheduler process