Tìm hiểu về hệ điều hành linux
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
Tìm hiểu về hệ điều hành Linux
Nơi thực tập : Trung tâm CNTT – CDIT
Người hướng dẫn : Thầy Phạm Quốc Hùng
Hà Nội
Trang 2MỤC LỤC
PHIẾU NHẬN XÉT ĐÁNH GIÁ _3 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 4
I Chức năng _4
II Tổ chức _5 III Các lĩnh vực hoạt động _5
Phần B : NỘI DUNG THỰC TẬP 5
I Phần giới thiệu chung 5 -Tên chủ đề thực tập _5 -Nội dung _5 -Kết quả cần đạt: _6
II Phần trình bày của SV 6 III Phần SV tự ghi _36
Phần C: PHỤ LỤC 36
Trang 3TRUNG TÂM CÔNG NGHỆ THÔNG TIN
PHÒNG …….
CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập Tự do Hanh phúc
ĐÁ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:
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)
Các ý kiến khác (nếu có:
Ngày tháng năm 20…
Giáo viên hướng dẫn thực tập
(Ký và ghi rõ họ tên)
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ảnthâ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ọcviệ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ácthầy giáo ở trung tâm công nghệ thông tin – CDIT, đặc biệt là thầy Phạm QuốcHù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ọpnhóm để trao đổi kiến thức chuyên môn
Phầ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âmCông nghệ Thông tin CDIT, với vai trò là đơn vị nghiên cứu phát triển hàng đầutrong 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ềmnă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ểnkhai sản phẩm, chuyển giao công nghệ và đào tạo trong lĩnh vực Công nghệ Thôngtin phục vụ Ngành Bưu chính Viễn thông và xã hội
Trang 5II Tổ chức
III 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ànhLinux, 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 filephân tán, Tính bảo mật, So sánh với Windows và Tổng kết
BAN GIÁM ĐỐC ĐOÀN, CÔNG ĐOÀN,
Đ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 6 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
để 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ácchẳng hạn như chip Alpha Linux có nguyên lý hoạt động tương tự hệ điều hànhUnix (Unix-like) Mặc dù Linux không phải là Unix nhưng người ta vẫn xem Linuxnhư 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êmmộ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
Mandrake Linux:
Một dòng khác thoát thai từ RedHat Linux, tương thích hoàn toàn với RedHat Hiện
có tới version 7.1
Trang 7Slackware Linux:
Đây là một trong phiên bản Linux lâu đời Hỗ trợ các dịch vụ mạng rất mạnh, tuy nhiên việc setup và config đòi hỏi user có kiến thức tốt về hệ điều hành này Hiện cóversion 7.0
S.u.S.E Linux:
Do hãng S.u.S.E (Đức) phát hành, khá phổ biến tại Âu châu, nhưng không được phổ
biến tại các nước khác Có các công cụ riêng để hỗ trợ setup và config tương đối dễ
sử dụng Hiện đang có đến version 6.3
Free BSD Linux:
Được phát triển bởi Đại Học Berkeley, đây không phải là phiên bản thương mại, do vậy ít được phổ biến Có rất nhiều tiện ích dành cho việc phát triển hệ thống và lập trình Hỗ trợ đầy đủ các shell trên Unix Hiện có version 2.2
Corel 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, FtpServer, Mail Server, DNS Server, v.v ), Database Server, File Server v.v hoặclà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ântheo 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
Trang 8Cá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 Unix/Linux tăng thêm khả năng và sức mạnh của mình mà thôi
Cò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ậpmộ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ườidù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úchoạt động (shutdown), init sẽ dọn dẹp (dừng mọi triến trình đang hoạt động, umountfilesystems, v.v )
Trang 9Dị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 thaotá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áctrê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 phá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), đángtin 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 RedHat 9.0 Dokhuô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 10- Chọn chế độ cài đặt(Text hoặc Graphic)
- Thông qua từng bước wizard để thiết lập các thông số về hệ thống như: Bàn phím,chuột, ngôn ngữ hiển thị trong quá trình cài đặt, giờ hệ thống…
- Chọn kiểu cài đặt
- Thiết lập phân vùng cài Linux RedHat
- Cài đặt boot loader
- Cấu hình Account
- Các lưu ý lựa chọn gói phần mềm cài đặt
- Cấu hình X-Windown
2.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ủaHDD để 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ầndung 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
Trang 113.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ậncá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ộtfile.Shell thì không phải là phần của kernel, nhưng sử dụng kernel để thực thichương trình, tạo các file,
Shell hoạt động như sau: Khi ta gõ lệnh vào shell và kết thúc bởi <Enter>, đầu tiênshell 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áctoken
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 (functionname) 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)
Trang 12tạ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ườngnằm trong /home/tên_người_dùng) Chú ý rằng mỗi lệnh đều có nhiều tùy chọnriê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 quantrọ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:
pwd: đư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
Trang 13mv: 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ànhphần chính như hình vẽ sau:
3.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
Trang 14nguyê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.
(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ờ
Trang 15và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àmcá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ácprocess đượ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 :
3.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ìnhtruy 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ẽ dichuyể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:
Scheduler process
Network
Trang 16Module 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
System 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 đếncác file mà Linux lại hỗ trợ nhiều loại file: ext, ext2, xia, minix, umsdos, vfat, proc,
Memory management
Network
interface
Scheduler process
Trang 17smb, ncp, iso9660, sysv, hpfs, affs, ufs Như vậy, khi có 1 yêu cầu đọc hoặc ghi filechẳng hạn, thì Kernel sẽ phải nhận biết được kiểu file cần đọc/ghi là gì? Và thựchiệ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áchgiữ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ácgiố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ácnhau là dành cho lớp đó Lớp này được gọi là hệ thống ảo hóa file (Virtual filesystem)
Ví dụ: Chẳng hạn khi có yêu cầu từ 1 tiến trình là đọc file ABC.smb và fileXYZ.ext2 Thì 2 file này được Kernel “nhìn” qua VFS là giống nhau Như vậy chỉdùng thao tác giống nhau, còn những thao tác riêng với từng loại file đó là do VFSthực hiện
VFS được chia thành 5 modun:
Các module thiết bị điều khiển(device driver), mỗi một phần cứng sẽ có 1 module
thiết bị điều kiển riêng, cái này thường gọi là driver Linux cũng như các hệ điềuhành khác cho phép thêm vào 1 driver mới
Trang 18Module giao diện độc lập thiết bị(device independent interface) Modun này là
abstract cho tất cả các driver Các module hệ thống file logic: Trên thực tế có nhiều
hệ thống file khác nhau, mỗi hệ thống file có một module điều khiển riêng
Module độc lập hệ thống file (system independent interface): Modun này là
abstract không những cho các loại file system mà còn cho tất cả các driver
System call: các hàm gọi hệ thống cho VFS Một số lời gọi hàm:
create(): tạo file
lookup(): tìm file
link() / symlink() / unlink() / readlink() / follow_link(): quản lý hệ thống file links mkdir() / rmdir(): tạo hoặc xóa thư mục
readpage() / writepage(): đọc hoặc ghi một trang của bộ nhớ
rename(): đổi tên một thư mục
Sơ đồ tương tác với các thành phần khác:
3.2.4 Network interface (NET)
NET cho phép Linux connect với các hệ thống khác bằng mạng Mặc dù có rấtnhiều loại thiết bị và giao thức mạng, NET đã abstract tất cả cho phép những phần
VFS
Network interface
Scheduler process
Memory management
IPC