Giáo trình Hệ điều hành mã nguồn mở - Trường Đại học Hàng Hải

BGIAO THÔNG VN TI  
TRƢỜNG ĐẠI HC HÀNG HI  
BMÔN: KTHUT MÁY TÍNH  
KHOA: CÔNG NGHTHÔNG TIN  
BÀI GING  
HỆ ĐIỀU HÀNH MÃ NGUN MỞ  
TÊN HC PHN  
MÃ HC PHN  
: HỆ ĐIỀU HÀNH MÃ NGUN MỞ  
: 17308  
TRÌNH ĐỘ ĐÀO TO : ĐẠI HC CHÍNH QUY  
DÙNG CHO SV NGÀNH : CÔNG NGHTHÔNG TIN  
HI PHÒNG - 2010  
MỤC LỤC  
- 1 -  
- 2 -  
- 3 -  
YÊU CẦU VÀ NỘI DUNG CHI TIẾT  
Tên hc phn: Hệ điều hành mã ngun mở  
Loi hc phn: 2  
Khoa phtrách: CNTT  
Tng sTC: 3  
Bmôn phtrách ging dy: Kthut máy tính  
Mã hc phn: 17303  
TS tiết Lý thuyết Thực hành/Xemina Tự học  
Bài tập lớn  
Đồ án môn học  
60  
30  
30  
0
0
0
Điều kiện tiên quyết:  
Sinh viên phải học xong các học phần sau mới đƣợc đăng ký học phần này:  
Kiến trúc máy tính, Nguyên lý hệ điều hành  
Mục tiêu của học phần:  
- Nắm bắt đƣợc về hệ điều hành mã nguồn mở.  
Nội dung chủ yếu  
- Các kiến thức cơ bản về hệ điều hành Linux.  
-
Nội dung chi tiết của học phần:  
PHÂN PHỐI SỐ TIẾT  
TÊN CHƢƠNG MỤC  
TS  
2
LT  
2
BT  
TH  
KT  
Chƣơng 1: Giới thiệu Unix – Linux  
1.1. Giới thiệu chung  
0,5  
0,5  
1
1.2. Các thành phần cơ bản của Linux  
1.3. Sử dụng lệnh trong Linux  
Chƣơng 2. Thao tác với hệ thống  
2.1. Tiến trình khởi động Linux  
10  
8
3
6
4
4
1
0.5  
1
2.2. Thủ tục đăng nhập và các lệnh thoát khỏi hệ thống  
2.3. Một số liên quan đến hệ thống  
1
1
Chƣơng 3. Quản trị hệ thống và ngƣời dùng  
3.1 Quản lý ngƣời dùng  
4
1
3.2 Quản lý nhóm các vấn đề liên quan  
3.3 Quản trị hệ thống  
1
2
Chƣơng 4. Hệ thống file  
12  
7
1
4.1. Tổng quan về hệ thống file  
0,5  
0,5  
1
4.2. Quyền truy nhập thƣ mục và file  
4.3. Thao tác với thƣ mục  
4.4. Các lệnh làm việc với file  
4.5 Nén và sao lƣu các file  
1
1
Chƣơng 5. Truyền thông và mạng  
8
4
4
- 4 -  
5.1. Lệnh truyền thông  
1
1
1
1
7
2
5.2 Cấu hình Card giao tiếp mạng  
5.3. Các dịch vụ mạng  
5.4 Hệ thống file trên mạng  
Chƣơng 6: Lập trình shell và lập trình C trên Linux  
6.1. Cách thức pipes và các yếu tố cơ bản lập trình trên  
shell  
20  
12  
1
6.2. Một số lệnh lập trình trên shell  
2
1
1
6.3. Lập trình C trên Linux  
Nhiệm vụ của sinh viên :  
Tham dự các buổi thuyết trình của giáo viên, tự học, tự làm bài tập do giáo viên giao,  
tham dự các buổi thực hành, các bài kiểm tra định kỳ và cuối kỳ, hoàn thành bài tập lớn theo  
yêu cầu.  
Tài liệu học tập :  
- Richard Petersen - Linux: The Complete Reference, Sixth Edition – Nhà xuất bản  
McGraw-Hill Osborne Media ,2007.  
- Michael Rash - Linux Firewalls: Attack Detection and Response with iptables, psad,  
and fwsnort – Nhà xuất bản No Starch Press ,2007  
- Christopher Negus - Linux Bible – Nhà xuất bản Wiley, 2007  
- Andrew Hudson và Paul Hudson Fedora 7 UNLEASHED, 2007  
Hình thức và tiêu chuẩn đánh giá sinh viên:  
- Đánh giá dựa trên tình hình tham dự buổi học trên lớp, các buổi thực hành, điểm  
kiểm tra thƣờng xuyên và điểm kết thúc học phần.  
- Hình thức thi cuối kỳ : thi viểt.  
Thang điểm: Thang điểm chữ A, B, C, D, F  
Điểm đánh giá học phần Z = 0.3X + 0.7Y.  
Bài giảng này là tài liệu chính thức và thống nhất của Bộ môn Kỹ thuật máy tính, Khoa  
Công nghệ Thông tin và đƣợc dùng để giảng dạy cho sinh viên.  
Ngày phê duyệt: 15 / 6 / 2010  
Trƣởng Bộ môn: ThS. Ngô Quốc Vinh  
- 5 -  
Chƣơng 1. GIỚI THIỆU CHUNG VỀ LINUX  
1.1. Giới thiệu chung  
1.1.1. Tổng quan về Linux  
Linus Tovalds (một sinh viên Phần lan) đƣa ra nhân (phiên bản đầu tiên) cho hệ điều  
hành Linux vào tháng 8 năm 1991 trên cơ sở cải tiến một phiên bản UNIX có tên Minix do  
Giáo sƣ Andrew S. Tanenbaum xây dựng và phổ biến. Nhân Linux tuy nhỏ song là tự đóng  
gói. Kết hợp với các thành phần trong hệ thống GNU, hệ điều hành Linux đã đƣợc hình thành.  
Và cũng từ thời điểm đó, theo tƣ tƣởng GNU, hàng nghìn, hàng vạn chuyên gia trên toàn thế  
giới (những ngƣời này hình thành nên cộng đồng Linux) đã tham gia vào tiến trình phát triển  
Linux và vì vậy Linux ngày càng đáp ứng nhu cầu của ngƣời dùng.  
Năm 1991, Linus Torvald viêt thêm phiên bản nhân v0.01 (kernel) đầu tiên của Linux  
đƣa lên các BBS, nhóm ngƣời dùng để mọi ngƣời cùng sử dụng và phát triển.  
Năm 1994, hệ điều hành Linux phiên bản 1.0 đƣợc chính thức phát hành và ngày càng  
nhận đƣợc sự quan tâm của ngƣời dùng.  
Năm 1995, nhân 1.2 đƣợc phổ biến. Phiên bản này đã hỗ trợ một phạm vi rộng và  
phong phú phần cứng, bao gồm cả kiến trúc tuyến phần cứng PCI mới  
m 1996, nhân Linux 2.0 đƣợc phổ biến. Phân bản này đã hỗ trợ kiến trúc phức hợp,  
bao gồm cả cổng Alpha 64-bit đầy đủ, và hỗ trợ kiến trúc đa bộ xử lý. Phân phối nhân Linux  
2.0 cũng thi hành đƣợc trên bộ xử lý Motorola 68000 và kiến trúc SPARC của SUN. Các thi  
hành của Linux dựa trên vi nhân GNU Mach cũng chạy trên PC và PowerMac.  
Năm 1999, phiên bản nhân v2.2 mang nhiều đặc tính ƣu việt và giúp cho Linux bắt đầu  
trở thành đối thủ cạnh tranh đáng kể của MS Windows trên môi trƣờng server.  
Năm 2000 phiên bản nhân v2.4 hỗ trợ nhiều thiết bị mới (đa xử lý tới 32 chip, USB,  
RAM trên 2GB...) bắt đầu đặt chân vào thị trƣờng máy chủ cao cấp.  
Các phiên bản của Linux đƣợc xác định bởi hệ thống chỉ số theo một số mức (hai hoặc  
ba mức). Trong đó đã quy ƣớc rằng với các chỉ số từ mức thứ hai trở đi, nếu là số chẵn thì  
dòng nhân đó đã khá ổn định và tƣơng đối hoàn thiện, còn nếu là số lẻ thì dòng nhân đó vẫn  
đang đƣợc phát triển tiếp.  
1.1.2. Vấn đề bản quyền  
Về lý thuyết, mọi ngƣời có thể khởi tạo một hệ thống Linux bằng cách tiếp nhận bản  
mới nhất các thành phần cần thiết từ các site ftp và biên dịch chúng. Trong thời kỳ đầu tiên,  
ngƣời dùng Linux phải tiến hành toàn bộ các thao tác này và vì vậy công việc là khá vất vả.  
Tuy nhiên, do có sự tham gia đông đảo của các cá nhân và nhóm phát triển Linux, đã tiến  
hành thực hiện nhiều giải pháp nhằm làm cho công việc khởi tạo hệ thống đỡ vất vả. Một  
trong những giải pháp điển hình nhất là cung cấp tập các gói chƣơng trình đã tiền dịch, chuẩn  
hóa.  
Những tập hợp nhƣ vậy hay những bản phân phối là lớn hơn nhiều so với hệ thống  
Linux cơ sở. Chúng thƣờng bao gồm các tiện ích bổ sung cho khởi tạo hệ thống, các thƣ viện  
quản lý, cũng nhƣ nhiều gói đã đƣợc tiền dịch, sẵn sàng khởi tạo của nhiều bộ công cụ UNIX  
dùng chung, chẳng hạn nhƣ phục vụ tin, trình duyệt web, công cụ xử lý, soạn thảo văn bản và  
thậm chí các trò chơi.  
Cách thức phân phối ban đầu rất đơn giản song ngày càng đƣợc nâng cấp và hoàn thiện  
bằng phƣơng tiện quản lý gói tiên tiến. Các bản phân phối ngày nay bao gồm các cơ sở dữ  
liệu tiến hóa gói, cho phép các gói dễ dàng đƣợc khởi tạo, nâng cấp và loại bỏ.  
Nhà phân phối đầu tiên thực hiện theo phƣơng châm này là Slakware, và chính họ là  
những chuyển biến mạnh mẽ trong cộng đồng Linux đối với công việc quản lý gói khởi tạo  
- 6 -  
       
Linux. Tiện ích quản lý gói RPM (RedHat Package Manager) của công ty RedHat là một  
trong những phƣơng tiện điển hình.  
Nhân Linux là phần mềm tự do đƣợc phân phối theo Giấy phép sở hữu công cộng phần  
mềm GNU GPL.  
1.1.3. Các thành phần tích hợp Hệ điều hành Linux  
Linux sử dụng rất nhiều thành phần từ Dự án phần mềm tự do GNU, từ hệ điều hành  
BSDcủa Đại học Berkeley và từ hệ thống X-Window của MIT.  
Thƣ viện hệ thống chính của Linux đƣợc bắt nguồn từ Dự án GNU, sau đó đƣợc rất  
nhiều ngƣời trong cộng đồng Linux phát triển tiếp, những phát triển tiếp theo nhƣ vậy chủ yếu  
liên quan tới việc giải quyết các vấn đề nhƣ thiếu vắng địa chỉ (lỗi trang), thiếu hiệu quả và gỡ  
rối. Một số thành phần khác của Dự án GNU, chẳng hạn nhƣ trình biên dịch GNU C (gcc),  
vốn là chất lƣợng cao nên đƣợc sử dụng nguyên xy trong Linux.  
Các tool quản mạng đƣợc bắt nguồn từ mã 4.3BSD song sau đó đã đƣợc cộng đồng  
Linux phát triển, chẳng hạn nhƣ thƣ viện toán học đồng xử lý dấu chấm động Intel và các  
trình điều khiển thiết bị phần cứng âm thanh PC. Các tool quản mạng này sau đó lại đƣợc  
bổ sung vào hệ thống BSD.  
Hệ thống Linux đƣợc duy trì gần nhƣ bởi một mạng lƣới không chặt chẽ các nhà phát  
triển phần mềm cộng tác với nhau qua Internet, mạng lƣới này gồm các nhóm nhỏ và cá nhân  
chịu trách nhiệm duy trì tính toàn vẹn của từng thành phần. Một lƣợng nhỏ các site phân cấp  
ftp Internat công cộng đã đóng vai trò nhà kho theo chuẩn de facto để chứa các thành phần  
này. Tài liệu Chuẩn phân cấp hệ thống file (File System Hierarchy Standard) đƣợc cộng đồng  
Linux duy trì nhằm giữ tính tƣơng thích khắc phục đƣợc sự khác biệt rất lớn giữa các thành  
phần hệ thống.  
1.1.4. Một số đặc điểm chính của Linux  
Dƣới đây trình bày một số đặc điểm chính của của hệ điều hành Linux hiện tại:  
Linux tƣơng thích với nhiều hệ điều hành nhƣ DOS, MicroSoft Windows...:  
Cho phép cài đặt Linux cùng với các hệ điều hành khác trên cùng một ổ cứng.  
Linux có thể truy nhập đến các file của các hệ điều hành cùng một ổ đĩa. Linux  
cho phép chạy mô phỏng các chƣơng trình thuộc các hệ điều hành khác.  
Do giữ đƣợc chuẩn của UNIX nên sự chuyển đổi giữa Linux và các hệ UNIX  
khác là dễ dàng.  
Linux là một hệ điều hành UNIX tiêu biểu với các đặc trƣng là đa ngƣời dùng, đa  
chƣơng trình và đa xử lý.  
Linux có giao diện đồ hoạ (GUI) thừa hƣởng từ hệ thống X-Window. Linux hỗ trợ  
nhiều giao thức mạng, bắt nguồn và phát triển từ dòng BSD. Thêm vào đó, Linux  
còn hỗ trợ tính toán thời gian thực.  
Linux khá mạnh và chạy rất nhanh ngay cả khi nhiều tiến trình hoặc nhiều cửa sổ.  
Linux đƣợc cài đặt trên nhiều chủng loại máy tính khác nhau nhƣ PC, Mini và  
việc cài đặt khá thuận lợi. Tuy nhiên, hiện nay chƣa xuất hiện Linux trên máy tính  
lớn (mainframe).  
Linux ngày càng đƣợc hỗ trợ bởi các phần mềm ứng dụng bổ sung nhƣ soạn thảo,  
quản lý mạng, quản trị cơ sở dữ liệu, bảng tính...  
Linux hỗ trợ tốt cho tính toán song song và máy tính cụm (PC-cluster) là một  
hƣớng nghiên cứu triển khai ứng dụng nhiều triển vọng hiện nay.  
Là một hệ điều hành với mã nguồn mở, đƣợc phát triển qua cộng đồng nguồn mở  
(bao gồm cả Free Software Foundation) nên Linux phát triển nhanh. Linux là một  
trong một số ít các hệ điều hành đƣợc quan tâm nhiều nhất trên thế giới hiện nay.  
- 7 -  
   
Linux là một hệ điều hành hỗ trợ đa ngôn ngữ một cách toàn diện nhất. Do Linux  
cho phép hỗ trợ các bộ mã chuẩn từ 16 bit trở lên (trong đó có các bộ mã  
ISO10646, Unicode) cho nên việc bản địa hóa trên Linux là triệt để nhất trong các  
hệ điều hành.  
Tuy nhiên cũng tồn tại một số khó khăn làm cho Linux chƣa thực sự trở thành một hệ  
điều hành phổ dụng, dƣới đây là một số khó khăn điển hình:  
Tuy đã có công cụ hỗ trợ cài đặt, tuy nhiên, việc cài đặt Linux còn tƣơng đối phức  
tạp và khó khăn. Khả năng tƣơng thích của Linux với một số loại thiết bị phần  
cứng còn thấp do chƣa có các trình điều khiển cho nhiều thiết bị,  
Phần mềm ứng dụng chạy trên nền Linux tuy đã phong phú song so với một số hệ  
điều hành khác, đặc biệt là khi so sánh với MS Windows, thì vẫn còn có khoảng  
cách.  
Với sự hỗ trợ của nhiều công ty tin học hàng đầu thế giới (IBM, SUN, HP...) và sự tham  
gia phát triển của hàng vạn chuyên gia trên toàn thế giới thuộc cộng đồng Linux, các khó  
khăn của Linux chắc chắn sẽ nhanh chóng đƣợc khắc phục.  
1.2. Các thành phần cơ bản của Linux  
Hệ thống Linux, đƣợc thi hành nhƣ một hệ điều hành UNIX truyền thống, gồm shell và  
ba thành phần (đã dạng mã chƣơng trình) sau đây:  
Nhân hệ điều hành chịu trách nhiệm duy trì các đối tƣợng trừu tƣợng quan trọng  
của hệ điều hành, bao gồm bộ nhớ ảo và tiến trình. Các mô đun chƣơng trình  
trong nhân đƣợc đặc quyền trong hệ thống, bao gồm đặc quyền thƣờng trực ở bộ  
nhớ trong.  
Thƣ viện hệ thống xác định một tập chuẩn các hàm để các ứng dụng tƣơng tác với  
nhân, và thi hành nhiều chức năng của hệ thống nhƣng không cần có các đặc  
quyền của mô đun thuộc nhân. Một hệ thống con điển hình đƣợc thi hành dựa trên  
thƣ viên hệ thống là hệ thống file Linux.  
Tiện ích hệ thống là các chƣơng trình thi hành các nhiệm vụ quản lý riêng rẽ,  
chuyên biệt. Một số tiện ích hệ thống đƣợc gọi ra chỉ một lần để khởi động và cấu  
hình phƣơng tiện hệ thống, một số tiện ích khác, theo thuật ngữ UNIX đƣợc gọi là  
trình chạy ngầm (daemon), có thể chạy một cách thƣờng xuyên (thƣờng theo chu  
kỳ), điều khiển các bài toán nhƣ hƣởng ứng các kết nối mạng mới đến, tiếp nhận  
yêu cầu logon, hoặc cập nhật các file log.  
Tiện ích (hay lệnh) có sẵn trong hệ điều hành (dƣới đây tiện ích đƣợc coi là lệnh thƣờng  
trực). Nội dung chính yếu của tài liệu này giới thiệu chi tiết về một số lệnh thông dụng nhất  
của Linux. Hệ thống file sẽ đƣợc giới thiệu trong chƣơng 3. Trong các chƣơng sau có đề cập  
tới nhiều nội dung liên quan đến nhân và shell, song dƣới đây là một số nét sơ bộ về chúng.  
1.2.1. Nhân hệ thống (kernel)  
Nhân (còn đƣợc gọi là hệ lõi) của Linux, là một bộ các môdun chƣơng trình có vai trò  
điều khiển các thành phần của máy tính, phân phối các tài nguyên cho ngƣời dùng (các tiến  
trình ngƣời dùng). Nhân chính là cầu nối giữa chƣơng trình ứng dụng với phần cứng. Ngƣời  
dùng sử dụng bàn phím gõ nội dung yêu cầu của mình và yêu cầu đó đƣợc nhân gửi tới shell:  
Shell phân tích lệnh và gọi các chƣơng trình tƣơng ứng với lệnh để thực hiện.  
Một trong những chức năng quan trọng nhất của nhân là giải quyết bài toán lập lịch, tức  
là hệ thống cần phân chia CPU cho nhiều tiến trình hiện thời cùng tồn tại. Đối với Linux, số  
lƣợng tiến trình có thể lên tới con số hàng nghìn. Với số lƣợng tiến trình đồng thời nhiều nhƣ  
vậy, các thuật toán lập lịch cần phải đủ hiệu quả: Linux thƣờng lập lịch theo chế độ Round  
Robin (RR) thực hiện việc luân chuyển CPU theo lƣợng tử thời gian.  
- 8 -  
   
Thành phần quan trọng thứ hai trong nhân là hệ thống các môđun chƣơng trình (đƣợc  
gọi là lời gọi hệ thống) làm việc với hệ thống file. Linux có hai cách thức làm việc với các  
file: làm việc theo byte (tự) và làm việc theo khối. Một đặc điểm đáng chú ý là file trong  
Linux có thể đƣợc nhiều ngƣời cùng truy nhập tới nên các lời gọi hệ thống làm việc với file  
cần đảm bảo việc file đƣợc truy nhập theo quyền và đƣợc chia xẻ cho ngƣời dùng.  
1.2.2. Hệ vỏ (shell)  
Ngƣời dùng mong muốn máy tính thực hiện một công việc nào đó thì cần gõ lệnh thể  
hiện yêu cầu của mình để hệ thống đáp ứng yêu cầu đó. Shell là bộ dịch lệnh và hoạt động  
nhƣ một kết nối trung gian giữa nhân với ngƣời dùng: Shell nhận dòng lệnh do ngƣời dùng  
đƣa vào; và từ dòng lệnh nói trên, nhân tách ra các bộ phận để nhận đƣợc một hay một số lệnh  
tƣơng ứng với các đoạn văn bản có trong dòng lệnh. Một lệnh bao gồm tên lệnh và tham số:  
từ đầu tiên là tên lệnh, các từ tiếp theo (nếu có) là các tham số. Tiếp theo, shell sử dụng nhân  
để khởi sinh một tiến trình mới (khởi tạo tiến trình) và sau đó, shell chờ đợi tiến trình con này  
tiến hành, hoàn thiện và kết thúc. Khi shell sẵn sàng tiếp nhận dòng lệnh của ngƣời dùng, một  
dấu nhắc shell (còn gọi là dấu nhắc nhập lệnh) xuất hiện trên màn hình.  
Linux có hai loại shell phổ biến là: C-shell (dấu nhắc %), Bourne-shell (dấu nhắc $)  
và một số shell phát triển từ các shell nói trên (chẳng hạn, TCshell - tcsh với dấu nhắc ngầm  
định > phát triển từ C-shell và GNU Bourne - bash với dấu nhắc bash # phát triển từ Bourne-  
shell). Dấu mời phân biệt shell nói trên không phải hoàn toàn rõ ràng do Linux cho phép  
ngƣời dùng thay đổi lại dấu nhắc shell nhờ việc thay giá trị các biến môi trƣờng PS1 PS2.  
Trong tài liệu này, chúng ta sử dụng hiệu "hàng rào #" để biểu thị dấu nhắc shell.  
C-shell có tên gọi nhƣ vậy là do cách viết lệnh chƣơng trình lệnh Linux tựa nhƣ ngôn  
ngữ C. Bourne-shell mang tên tác giả của nó là Steven Bourne. Một số lệnh trong C- shell  
(chẳng hạn lệnh alias) không còn có trong Bourne-shell và vì vậy để nhận biết hệ thống đang  
m việc với shell nào, chúng ta gõ lệnh:  
# alias  
Nếu một danh sách xuất hiện thì shell đang sử dụng là C-shell; ngƣợc lại, nếu xuất hiện  
thông báo "Command not found" thì shell đó là Bourne-shell.  
Lệnh đƣợc chia thành 3 loại lệnh:  
Lệnh thƣờng trực (có sẵn của Linux). Tuyệt đại đa số lệnh đƣợc giới thiệu trong  
tài liệu này là lệnh thƣờng trực. Chúng bao gồm các lệnh đƣợc chứa sẵn trong  
shell và các lệnh thƣờng trực khác.  
File chƣơng trình ngôn ngữ máy: chẳng hạn, ngƣời dùng viết trình trên ngôn ngữ  
C qua bộ dịch gcc (bao gồm cả trình kết nối link) để tạo ra một chƣơng trình trên  
ngôn ngữ máy.  
File chƣơng trình shell (Shell Scrip).  
Khi kết thúc một dòng lệnh cần gõ phím ENTER để shell phân tích và thực hiện lệnh.  
1.3. Sử dụng lệnh trong Linux  
Nhƣ đã giới thiệu ở phần trên, Linux là một hệ điều hành đa ngƣời dùng, đa nhiệm,  
đƣợc phát triển bởi hàng nghìn chuyên gia tin học trên toàn thế giới nên hệ thống lệnh cũng  
ngày càng phong phú; đến thời điểm hiện nay Linux có khoảng hơn một nghìn lệnh. Tuy  
nhiên chỉ có khoảng vài chục lệnh là thông dụng nhất đối với ngƣời dùng.  
Cũng nhƣ đã nói ở trên, ngƣời dùng làm việc với máy tính thông qua việc sử dụng trạm  
cuối: ngƣời dùng đƣa yêu cầu của mình bằng cách gõ "lệnh" từ bàn phím và giao cho hệ điều  
hành xử lý.  
Khi cài đặt Linux lên máy tính cá nhân thì máy tính cá nhân vừa đóng vai trò trạm cuối,  
vừa đóng vai trò máy tính xử lý.  
- 9 -  
   
1.3.1. Dạng tổng quát của lệnh Linux  
Cú pháp lệnh: # <Tên lệnh> [<các tham số>]  
Trong đó:  
Tên lệnh là một dãy ký tự, không có dấu cách, biểu thị cho một lệnh của Linux  
hay một chƣơng trình. Ngƣời dùng cần hệ điều hành đáp ứng yêu cầu gì của mình  
thì phải chọn đúng tên lệnh. Tên lệnh là bắt buộc phải có khi gõ lệnh.  
Các tham số có thể có hoặc không có, đƣợc viết theo quy định của lệnh mà chúng  
ta sử dụng, nhằm cung cấp thông tin về các đối tƣợng mà lệnh tác động tới. Ý  
nghĩa của các dấu [, <, >, ] đƣợc giải thích ở phần quy tắc viết lệnh.  
Các tham số đƣợc phân ra thành hai loại: tham số khóa (sau đây gọi là "tùy chọn") và  
tham số vị trí.  
Tham số vị trí thƣờng là tên file, thƣ mục và thƣờng là các đối tƣợng chịu sự tác  
động của lệnh. Khi gõ lệnh, tham số vị trí đƣợc thay bằng những đối tƣợng mà  
ngƣời dùng cần hƣớng tác động tới.  
Tham số khóa chính là những tham số điều khiển hoạt động của lệnh theo các  
trƣờng hợp riêng. Trong Linux, tham số khóa thƣờng bắt đầu bởi dấu trừ "-" hoặc  
hai dấu trừ liên tiếp "--". Một lệnh có thể có một số hoặc rất nhiều tham số khóa.  
Ví dụ, khi ngƣời dùng gõ lệnh xem thông tin về các file:  
# ls -l  
Trong lệnh này:  
ls : là tên lệnh thực hiện việc đƣa danh sách các tên file/ thƣ mục con trong một  
thƣ mục,  
-l : là tham số khóa, cho biết yêu cầu xem đầy đủ thông tin về các đối tƣợng hiện  
ra. Chú ý, trong tham số khóa chữ cái (chữ "l") phải đi ngay sau dấu trừ "-".  
Chú ý:  
Linux (và UNIX nói chung) đƣợc xây dựng trên ngôn ngữ lập trình C, vì vậy khi  
gõ lệnh phải phân biệt chữ thƣờng với chữ hoa. Ngoại trừ một số ngoại lệ, trong  
Linux chúng ta thấy phổ biến là:  
o Các tên lệnh là chữ thƣờng,  
o Một số tham số khi biểu diễn bởi chữ thƣờng hoặc chữ hoa sẽ có ý nghĩa  
hoàn toàn khác nhau).  
o Tên các biến môi trƣờng cũng thƣờng dùng chữ hoa.  
Linux phân biệt siêu ngƣời dùng (superuser hoặc root) với ngƣời dùng thông  
thƣờng. Trong tập hợp lệnh của Linux, có một số lệnh cũng nhƣ một số tham số  
khóa mà chỉ siêu ngƣời dùng mới đƣợc phép sử dụng.  
Một dòng lệnh có thể có nhiều hơn một lệnh, trong đó lệnh sau đƣợc ngăn cách  
bởi với lệnh đi ngay trƣớc bằng dấu ";" hoặc dấu "|".  
Khi gõ lệnh, nếu dòng lệnh quá dài, Linux cho phép ngắt dòng lệnh xuống dòng  
dƣới bằng cách thêm tự báo hiệu chuyển dòng "\" tại cuối dòng.  
Sau khi ngƣời dùng gõ xong dòng lệnh, shell tiếp nhận dòng lệnh này và phân tích  
nội dung văn bản của lệnh. Nếu lệnh đƣợc gõ đúng thì nó đƣợc thực hiện; ngƣợc  
lại, trong trƣờng hợp có sai sót khi gõ lệnh thì shell thông báo về sai sót vàdấu  
nhắc shell lại hiện ra để chờ lệnh tiếp theo của ngƣời dùng. Về phổ biến, nếu nhƣ  
sau khi ngƣời dùng gõ lệnh, không thấy thông báo sai sót hiện ra thì có nghĩa lệnh  
đã đƣợc thực hiện một cách bình thƣờng.  
- 10 -  
 
1.3.2. Các ký hiệu đại diện  
Khi chúng ta sử dụng các câu lệnh về file và thƣ mục, chúng ta có thể sử dụng các ký tự  
đặc biệt đƣợc gọi là các ký tự đại diện để xác định tên file, tên thƣ mục.:  
Ký tự  
Ý nghĩa  
*
?
Tƣơng ứng với thứ tự bất kỳ của một hay nhiều ký tự  
Tƣơng ứng với một ký tự bất kỳ  
[]  
Tƣơng ứng với một trong những ký tự trong ngoặc hoặc giới hạn  
Ví dụ:  
Jo*  
: Các file bắt đầu với Jo  
Jo*y  
: Các file bắt đầu với Jo và kết thúc với y  
Ut*l*s.c  
?.h  
: Các file bắt đầu với Ut, chứa một ký tự l và kết thúc với s.c  
: Các file bắt đầu với một ký tự đơn, theo sau bởi .h  
Doc[0-9].txt : Các file có tên Doc0.txt, Doc1.txt ….Doc9.txt  
Doc0[A-Z].txt : Các file có tên Doc0A.txt, Doc0B.txt …Doc0Z.txt  
Các ký hiệu liên quan đến cú pháp câu lệnh đƣợc sử dụng bởi phần lớn các câu lệnh.  
Chúng cung cấp một cách thuận tiện và đồng nhất để xác định các mẫu phù hợp. Chúng tƣơng  
tự với các ký tự đại diện, nhƣng chúng mạnh hơn rất nhiều. Chúng cung cấp một phạm vi  
rộng các mẫu lựa chọn.  
Ký tự  
Ý nghĩa  
Tƣơng ứng với một ký tự đơn bất kỳ ngoại trừ dòng mới  
Tƣơng ứng với không hoặc nhiều hơn các ký tự đứng trƣớc  
Tƣơng ứng với bắt đầu của một dòng  
Tƣơng ứng với kết thúc một dòng  
.
*
^
$
\<  
\>  
[]  
Tƣơng ứng với bắt đầu một từ  
Tƣơng ứng với kết thúc một từ  
Tƣơng ứng với một trong các ký tự bên trong hoặc một dãy các  
ký tự  
[^]  
\
Tƣơng ứng với các ký tự bất kỳ không nằm trong ngoặc  
Lấy ký hiệu theo sau dấu gạch ngƣợc  
1.3.3. Trợ giúp lệnh  
Do Linux là một hệ điều hành rất phức tạp với hàng nghìn lệnh và mỗi lệnh lại có thể có  
tới vài hoặc vài chục tình huống sử dụng do chúng cho phép có nhiều tùy chọn lệnh. Để trợ  
giúp cách sử dụng các câu lệnh, Linux cho phép ngƣời dùng sử dụng cách thức gọi trang Man  
để có đƣợc các thông tin đầy đủ giới thiệu nội dung các lệnh.  
Cú pháp lệnh: # man <tên-lnh>  
CÂU HỎI VÀ BÀI TẬP  
1. Tìm hiểu về các phiên bản phát triển của Linux.  
2. Trình bày nguyên tắc thực hiện lệnh trên Linux  
3. Thực hiện cài đặt hệ điều hành Linux cụ thể trên máy tính  
4. Nghiên cứu các thao tác giao tiếp với Linux; so sánh các thao tác với hệ điều hành  
Windows.  
- 11 -  
   
Chƣơng 2. THAO TÁC VỚI HỆ THỐNG  
2.1. Tiến trình khởi động Linux  
Một trong những cách thức khởi động Linux phổ biến nhất là cách thức do chƣơng trình  
LILO (LInux LOader) thực hiện. Chƣơng trình LILO đƣợc nạp lên đĩa của máy tính khi cài  
đặt hệ điều hành Linux. LILO đƣợc nạp vào Master Boot Record của đĩa cứng hoặc vào Boot  
Sector tại phân vùng khởi động (trên đĩa cứng hoặc đĩa mềm). Giả sử máy tính của chúng ta  
đã cài đặt Linux và sử dụng LILO để khởi động hệ điều hành. LILO thích hợp với việc trên  
máy tính đƣợc cài đặt một số hệ điều hành khác nhau và theo đó, LILO còn cho phép ngƣời  
dùng chọn lựa hệ điều hành để khởi động.  
Giai đoạn khởi động Linux tùy thuộc vào cấu hình LILO đã đƣợc lựa chọn trong tiến  
trình cài đặt Linux. Trong tình huống đơn giản nhất, Linux đƣợc khởi động từ đĩa cứng hay  
đĩa mềm khởi động.  
Tiến trình khởi động Linux có thể đƣợc mô tả theo sơ đồ sau:  
LILO  
Kernel  
init  
Theo sơ đồ này, LILO đƣợc tải vào máy để thực hiện mà việc đầu tiên là đƣa nhân vào  
bộ nhớ trong và sau đó tải chƣơng trình init để thực hiện việc khởi động Linux.  
Nếu cài đặt nhiều phiên bản Linux hay cài Linux cùng các hệ điều hành khác (trong các  
trƣờng hợp nhƣ thế, mỗi phiên bản Linux hoặc hệ điều hành khác đƣợc gán nhãn - label để  
phân biệt). Khi đó ta nhập nhãn của một trong những hệ điều hành hiện có trên máy trên dòng  
thông báo LILO boot:  
Ví dụ:  
LILO boot: linux  
Sau khi Linux đã đƣợc chọn để khởi động, trình init thực hiện, chúng ta sẽ thấy một  
khoảng vài chục dòng thông báo cho biết hệ thống phần cứng đƣợc Linux nhận diện và thiết  
lập cấu hình cùng với tất cả trình điều khiển phần mềm đƣợc nạp khi khởi động. Tại thời điểm  
khởi động hệ thống init thực hiện vai trò đầu tiên của mình là chạy chƣơng trình shell trong  
file /etc/inittab và các dòng thông báo trên đây chính là kết quả của việc chạy chƣơng trình  
shell đó. Sau khi chƣơng trình shell trên đƣợc thực hiện xong, bắt đầu quá trình ngƣời dùng  
đăng nhập (login) vào hệ thống.  
2.2. Thủ tục đăng nhập và các lệnh thoát khỏi hệ thống  
2.2.1. Đăng nhập  
Sau khi hệ thống Linux khởi động xong, trên màn hình xuất hiện dấu nhắc đăng nhập.  
Tại dấu nhắc đăng nhập, ta nhập tên đăng nhập, kèm theo một mật khẩu đăng nhập.  
May1 login: root  
Password:  
Sau khi đăng nhập thành công, dấu nhắc shell xuất hiện (#) mời ngƣời dùng thực hiện  
các thao tác tiếp theo.  
Last login: Fri Oct 27 14:16:09 on tty2  
Root[may1 /root]#  
2.2.2. Ra khỏi hệ thống  
Có rt nhiu cách cho phép thoát khi hthng, ở đây chúng ta xem xét một scách  
thông dng nht.  
- 12 -  
         
Dùng tổ hợp phím Ctrl + Alt + Del:  
Đây là cách đơn giản nhất để đảm bảo thoát khỏi hệ điều hành Linux. Nếu đang làm  
việc trong môi trƣờng X Window, cần nhấn tổ hợp phím Ctrl+Alt+BackSpace trƣớc.  
Dùng lệnh shutdown:  
shutdown [tùy-chọn] <time> [cảnh-báo]  
Lệnh này cho phép dừng tất cả các dịch vụ đang chạy trên hệ thống.  
Các tùy chọn:  
-k : Không thc sshutdown mà chcnh báo.  
-r : Khởi động li ngay sau khi shutdown.  
-h : Tt máy thc ssau khi shutdown.  
-f : Khởi động li nhanh và bqua vic kiểm tra đĩa.  
-F : Khởi động li và thc hin vic kiểm tra đĩa.  
-c : Bqua không chy lnh shutdown.  
-t s -giây : Chkhong thi gian s-giây  
Hai tham số vị trí còn lại:  
time : Đặt thời điểm shutdown.  
cnh-báo : Cnh báo đến tt cả ngƣời dùng trên hthng.  
Dùng lệnh halt:  
halt [tùy-chọn]  
Lệnh này tắt hẳn máy.  
Các tuỳ chọn:  
-w : không thc stắt máy nhƣng vẫn ghi các thông tin lên file /var/log/wtmp  
-d : không ghi thông tin lên file /var/log/wtmp.  
-n: có ý nghĩa tƣơng tự nd song không tiến hành việc đồng bhóa.  
-f : thc hin tt máy ngay mà không thc hin lần lƣợt vic dng các dch vụ  
có trên hthng.  
-i : chthc hin dng tt ccác dch vmạng trƣớc khi tt máy.  
Chú ý:  
Trƣớc khi thc hin tt máy, cn phải lƣu lại dliệu trƣớc để tránh bmt  
Có thsdng lnh exit để trvdu nhắc đăng nhập hoc kết thúc phiên  
làm vic bng lnh logout.  
2.2.3. Khởi động lại hệ thống  
Ngoài việc thoát khỏi hệ thống nhờ các cách thức trên đây, khi cần thiết có thể khởi  
động lại hệ thống nhờ lệnh reboot.  
Cú pháp lệnh: reboot [tùy-chọn]  
Lệnh này cho phép khởi động lại hệ thống. Nói chung thì chỉ siêu ngƣời dùng mới đƣợc  
phép sử dụng lệnh reboot, tuy nhiên, nếu hệ thống chỉ có duy nhất một ngƣời dùng đang làm  
việc thì lệnh reboot vẫn đƣợc thực hiện song hệ thống đòi hỏi việc xác nhận mật khẩu.  
Các tùy chọn của lệnh reboot (-w, -d, -n, -f, -i) có ý nghĩa tƣơng tự nhƣ trong lệnh  
halt.  
2.2.4. Khởi động vào chế độ đồ hoạ  
Linux cho phép nhiều chế độ khởi động, những chế độ này đƣợc liệt kê trong file  
/etc/inittab. Dƣới đây là nội dung của file này:  
# inittab This file describes how the INIT process should set up  
# the system in a certain run-level.  
#
- 13 -  
   
# Author: Miquel van Smoorenburg, <miquelsừdrinkel.nl.mugnet.org>  
# Modified for RHS Linux by Marc Ewing and Donnie Barnes  
#
# Default runlevel. The runlevels used by RHS are:  
# 0 - halt (Do NOT set initdefault to this)  
# 1 - Single user mode  
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)  
# 3 - Full multiuser mode  
# 4 unused  
# 5 - X11  
# 6 - reboot (Do NOT set initdefault to this)  
#
id:3:initdefault:  
# System initialization.  
si::sysinit:/etc/rc.d/rc.sysinit  
l0:0:wait:/etc/rc.d/rc 0  
l0:0:wait:/etc/rc.d/rc 0  
l1:1:wait:/etc/rc.d/rc 1  
l2:2:wait:/etc/rc.d/rc 2  
l3:3:wait:/etc/rc.d/rc 3  
l4:4:wait:/etc/rc.d/rc 4  
l5:5:wait:/etc/rc.d/rc 5  
l6:6:wait:/etc/rc.d/rc 6  
# Things to run in every runlevel.  
ud::once:/sbin/update  
# Trap CTRL-ALT-DELETE  
ca::ctrlaltdel:/sbin/shutdown -t3 -r now  
#ca::ctrlaltdel:/bin/echo "You can't do that"  
# When our UPS tells us power has failed, assume we have a few minutes  
# of power left. Schedule a shutdown for 2 minutes from now.  
# This does, of course, assume you have powerd installed and your  
# UPS connected and working correctly.  
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"  
# If power was restored before the shutdown kicked in, cancel it.  
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"  
# Run gettys in standard runlevels  
1:2345:respawn:/sbin/mingetty tty1  
2:2345:respawn:/sbin/mingetty tty2  
#3:2345:respawn:/sbin/mingetty tty3  
#4:2345:respawn:/sbin/mingetty tty4  
#5:2345:respawn:/sbin/mingetty tty5  
#6:2345:respawn:/sbin/mingetty tty6  
# Run xdm in runlevel 5  
# xdm is now a separate service  
x:5:respawn:/etc/X11/prefdm nodaemon  
Trong đó chế độ khởi động số 3 là chế độ khởi động vào chế độ Text, và chế độ 5 là  
khởi động vào chế độ đồ hoạ. Nhƣ vậy để cho máy tính khởi động vào chế độ đồ hoạ ta sửa  
lại dòng cấu hình  
id:3:initdefault:  
thành  
id:5:initdefault:  
- 14 -  
2.3. Một số liên quan đến hệ thống  
2.3.1. Lệnh thay đổi mật khẩu  
Cú pháp lệnh: passwd [tùy-chọn] [tên-người-dùng]  
Các tùy chọn:  
-k : Đòi hi phi gõ li mt khu cũ trƣớc khi thay đổi mt khu mi.  
-f : Không cn kim tra mt khu . (Chsupervisor mi có quyn)  
-l : Khóa mt tài khoản ngƣời dùng. (Chsupervisor mi có quyn)  
-stdin : vic nhp mt khẩu ngƣời dùng chỉ đƣợc tiến hành tthiết bvào  
chun không thtiến hành từ đƣờng dn (pipe). Nếu không có tham snày  
cho phép nhp mt khu ctthiết bvào chun hoc từ đƣờng dn.  
-u : Mkhóa mt tài khon. (Chsupervisor mi có quyn)  
-d : Xóa bmt khu của ngƣời dùng. (Chsupervisor mi có quyn)  
-S : hin ththông tin ngn gn vtrng thái mt khu của ngƣời dùng đƣợc  
đƣa ra. (Chsupervisor mi có quyn)  
Nếu tên-ngƣời-dùng không có trong lệnh thì ngầm định là chính ngƣời dùng đã gõ lệnh  
này.  
2.3.2. Lệnh xem, thiết lập ngày, giờ  
Lệnh xem, thiết lập ngày  
Cú pháp lệnh: date [-tùy_chọn] [ngày giờ]  
Lệnh xem, thiết lập giờ  
Cú pháp lệnh: time [-tùy_chọn] [+định-dng]  
Lệnh xem lịch  
Cú pháp lệnh: cal [tùy-chọn] [<tháng> [<năm>]]  
2.3.3. Lệnh kiểm tra những ai đang sử sụng hệ thống  
Cú pháp lnh: who  
Để kiểm tra định danh của ngƣời đang sử dng hin thi, dùng lnh: who am i  
2.3.4. Thay đổi nội dung dấu nhắc shell  
Trong Linux có hai loại dấu nhắc: dấu nhắc cấp một (dấu nhắc shell) xuất hiện khi nhập  
lệnh và dấu nhắc cấp hai (dấu nhắc nhập liệu) xuất hiện khi lệnh cần có dữ liệu đƣợc nhập từ  
bàn phím và tƣơng ứng với hai biến nhắc tên là PS1 PS2. PS1 là biến hệ thống tƣơng ứng  
với dấu nhắc cấp 1: Giá trị của PS1 chính là nội dung hiển thị của dấu nhắc shell. Để nhận  
biết thông tin hệ thống hiện tại, một nhu cầu đặt ra là cần thay đổi giá trị của các biến hệ  
thống PS1 PS2.  
Linux cho phép thay đổi giá trị của biến hệ thống PS1 bằng lệnh gán trị mới cho nó.  
Lệnh này có dạng:  
# PS1='<dãy ký t>'  
Năm (5) tự đầu tiên của lệnh gán phải đƣợc viết liên tiếp nhau. Dãy tự nằm giữa  
cặp hai dấu nháy đơn (có thể sử dụng cặp hai dấu kép) và không đƣợc phép chứa dấu nháy.  
Dãy ký tự này bao gồm các cặp tự điều khiển và các tự khác, cho phép có thể có dấu  
cách. Cặp tự điều khiển gồm hai tự, tự đầu tiên là dấu sổ xuôi "\" còn ký tự thứ hai  
nhận một trong các trƣờng hợp liệt kê trong bảng dƣới đây.  
Cp ký tự điu khin  
Ý nghĩa  
\!  
\#  
\$  
Hiển thị thứ tự của lệnh trong lịch sử  
Hiển thị thứ tự của lệnh  
Hiển thị dấu $. Đối với superuser thì hiển thị dấu #  
- 15 -  
         
Cp ký tự điu khin  
Ý nghĩa  
\\  
\d  
\h  
\n  
\s  
Hiển thị dấu sổ (\)  
Hiển thị ngày hiện tại  
Hiển thị tên máy (hostname)  
Ký hiệu xuống dòng  
Hiển thị tên hệ shell  
\t  
Hiển thị giờ hiện tại  
\u  
\W  
\w  
Hiển thị tên ngƣời dùng  
Hiển thị tên thực sự của thƣ mục hiện thời  
Hiển thị tên đầy đủ của thƣ mục hiện thời  
2.3.5. Lệnh gọi ngôn ngữ tính toán số học  
Linux cung cấp một ngôn ngữ tính toán với độ chính xác tùy ý thông qua lệnh bc. Khi  
yêu cầu lệnh này, ngƣời dùng đƣợc cung cấp một ngôn ngữ tính toán (và cho phép lập trình  
tính toán có dạng ngôn ngữ lập trình C) hoạt động theo thông dịch. Trong ngôn ngữ lập trình  
đƣợc cung cấp (tạm thời gọi là ngôn ngữ bc), tồn tại rất nhiều công cụ hỗ trợ tính toán và lập  
trình tính toán: kiểu phép toán số học phong phú, phép toán so sánh, một số hàm chuẩn, biến  
chuẩn, cấu trúc điều khiển, cách thức định nghĩa hàm, cách thức thay đổi độ chính xác, đặt lời  
chú thích... Chỉ cần sử dụng một phần nhỏ tác động của lệnh bc, chúng ta đã có một "máy tính  
số bấm tay" hiệu quả.  
Cú pháp lệnh: bc [tùy-chọn] [file...]  
Các tuỳ chọn:  
-l, --mathlib : phép tính theo chuẩn thƣ viện toán học  
-w, --warn : thực hiện phép tính không tuân theo chuẩn POSIX  
-s, --standard : phép tính chính xác theo chuẩn của ngôn ngữ POSIX  
-q, --quiet : không hiện ra lời giới thiệu về phần mm GNU  
CÂU HỎI VÀ BÀI TẬP  
1. Thực hiện các thao tác đăng nhập, thoát khỏi hệ thống trên hệ điều hành Linux  
2. Thực hiện các thao tác liên quan đến hệ thống Linux  
3. Thực hiện các thao tác sử dụng lệnh bc để tính toán một bài toán số học đơn giản.  
- 16 -  
 
Chƣơng 3. HỆ THỐNG FILE  
3.1 Tổng quan về hệ thống file  
3.1.1. Một số khái niệm  
File là một tập hợp dữ liệu có tổ chức đƣợc hệ điều hành quản lý theo yêu cầu của ngƣời  
dùng. Cách tổ chức dữ liệu trong file thuộc về chủ của nó là ngƣời đã tạo ra file. Hệ điều hành  
đảm bảo các chức năng liên quan đến file nên ngƣời dùng không cần biết file của mình lƣu ở  
vùng nào trên đĩa từ, bằng cách nào đọc/ghi lên các vùng của đĩa từ mà vẫn thực hiện đƣợc  
yêu cầu tìm kiếm, xử lý lên các file.  
Hệ điều hành quản lý các file theo tên gọi của file (tên file) và một số thuộc tính liên  
quan đến file.  
Để làm việc đƣợc với các file, hệ điều hành không chỉ quản lý nội dung file mà còn phải  
quản lý các thông tin liên quan đến các file. Thƣ mục (directory) là đối tƣợng đƣợc dùng để  
chứa thông tin về các file (thƣ mục chứa các file). Các thƣ mục cũng đƣợc hệ điều hành quản  
lý trên thiết bị lƣu trữ ngoài và vì vậy, theo nghĩa này, thƣ mục cũng đƣợc coi là file song  
trong một số trƣờng hợp để phân biệt với "file" thƣ mục, chúng ta dùng thuật ngữ file thông  
thường. Khác với file thông thƣờng, hệ điều hành lại quan tâm đến nội dung của thƣ mục.  
Một số nội dung sau đây liên quan đến tên file (bao gồm cả tên thƣ mục):  
Tên file trong Linux có thể dài tới 256 ký tự, bao gồm các chữ cái, chữ số, dấu  
gạch nối, gạch chân, dấu chấm. Nếu trong tên file có nhiều dấu chấm "." thì xâu  
con của tên file từ dấu chấm cuối cùng đƣợc gọi là phần mở rộng của tên file  
phân biệt chữ hoa và chữ thƣờng đối với tên thƣ mục/file  
Nếu trong tên thƣ mục/file có chứa khoảng trống, sẽ phải đặt tên thƣ mục/file vào  
trong cặp dấu nháy kép để sử dụng thƣ mục/file đó.  
Một số ký tự sau không đƣợc sử dụng trong tên thƣ mục/file: !, *, $, &, #...  
Khi sử dụng chƣơng trình mc (Midnight Commander), việc hiển thị tên file sẽ bổ  
sung một tự theo nghĩa: dấu "*" cho file khả thi trong Linux, dấu "~" cho file  
sao lƣu, dấu "." cho file ẩn, dấu "@" cho file liên kết...  
Tập hợp tất cả các file có trong hệ điều hành đƣợc gọi là hthng file là một hệ thống  
thống nhất. Hệ thống file có cấu trúc hình cây, đƣợc xuất phát từ một thƣ mục gốc (hiệu là  
"/") và cho phép tạo ra thƣ mục con trong một thƣ mục bất kỳ. Thông thƣờng, khi khởi tạo  
Linux đã có ngay hệ thống file của nó.  
/(root)  
sbin  
usr  
dev  
var  
etc  
home  
sbin  
bin  
lib  
man  
User01  
User02  
Để chỉ một file hay một thƣ mục, chúng ta cần đƣa ra một đƣờng dẫn. Ví dụ để xác định  
file user01, chúng ta viết nhƣ sau: /home/user01  
Đƣờng dẫn file xác định từ thƣ mục gốc đƣợc biết với tên gọi là đƣờng dn tuyt đối  
sẽ rất khó khăn cho ngƣời dùng khi thực hiện gõ lệnh. Vì vậy, Linux (cũng nhƣ nhiều hệ điều  
hành khác) sử dụng khái niệm thƣ mc hin thi (là một thƣ mục trong hệ thống file mà hiện  
thời "ngƣời dùng đang ở đó") của mỗi ngƣời dùng làm việc trong hệ thống. Qua thƣ mục hiện  
thời, Linux cho phép ngƣời dùng chỉ một file trong lệnh ngắn gọn hơn nhiều.  
Đƣờng dẫn đƣợc xác định qua thƣ mục hiện thời đƣợc gọi là đƣờng dn tƣơng đối.  
- 17 -  
     
Khi một ngƣời dùng đăng nhập vào hệ thống, Linux luôn chuyển ngƣời dùng vào thƣ  
mục riêng, và tại thời điểm đó thƣ mục riêng là thƣ mục hiện thời của ngƣời dùng. Thƣ mục  
riêng của siêu ngƣời dùng là /root, thƣ mục riêng của ngƣời dùng có tên là user01 là  
/home/user1... Linux cho phép dùng lệnh cd để chuyển sang thƣ mục khác (lấy thƣ mục khác  
làm thƣ mục hiện thời). Hai dấu chấm ".." đƣợc dùng để chỉ thƣ mục ngay trên thƣ mục hiện  
thời (cha của thƣ mục hiện thời).  
Linux còn cho phép ghép một hệ thống file trên một thiết bị nhớ (đĩa mềm, vùng đĩa  
cứng chƣa đƣợc đƣa vào hệ thống file) thành một thƣ mục con trong hệ thống file của hệ  
thống bằng lệnh mount. Các hệ thống file đƣợc ghép thuộc vào các kiểu khác nhau.  
3.1.2. Sơ bộ kiến trúc nội tại của hệ thống file  
Trên đĩa từ, hệ thống file đƣợc coi là dãy tuần tự các khối lôgic mỗi khối chứa hoặc  
512B hoặc 1024B hoặc bội của 512B là cố định trong một hệ thống file. Trong hệ thống file,  
các khối dữ liệu đƣợc địa chỉ hóa bằng cách đánh chỉ số liên tiếp, mỗi địa chỉ đƣợc chứa trong  
4 byte (32 bit).  
Cấu trúc nội tại của hệ thống file bao gồm 4 thành phần kế tiếp nhau: Boot block (dùng  
để khởi động hệ thống), Siêu khối (Super block), Danh sách inode và Vùng dữ liệu.  
Siêu khối  
Siêu khối chứa nhiều thông tin liên quan đến trạng thái của hệ thống file. Trong siêu  
khối có các trƣờng sau đây:  
Kích thƣớc của danh sách inode (định kích cỡ vùng không gian trên Hệ thống file  
quản lý các inode).  
Kích thƣớc của hệ thống file.  
Hai kích thước trên đây tính theo đơn vị dung lượng bộ nhớ ngoài,  
Một danh sách chỉ số các khối rỗi (thƣờng trực trên siêu khối) trong hệ thống file.  
Chỉ số các khối rỗi thƣờng trực trên siêu khối đƣợc dùng để đáp ứng nhu cầu phân  
phối mới.  
Chỉ số của khối rỗi tiếp theo trong danh sách các khối rỗi. Chỉ số khối rỗi tiếp  
theo dùng để hỗ trợ việc tìm kiếm tiếp các khối rỗi: bắt đầu tìm từ khối có chỉ số  
này trở đi.  
Một danh sách các inode rỗi (thƣờng trực trên siêu khối) trong hệ thống file. Danh  
sách này chứa chỉ số các inode rỗi đƣợc dùng để phân phối ngay đƣợc cho một  
file mới đƣợc khởi tạo.  
Chỉ số inode rỗi tiếp theo trong danh sách các inode rỗi. Chỉ số inode rỗi tiếp theo  
định vị việc tìm kiếm tiếp thêm inode rỗi: bắt đầu tìm từ inode có chỉ số này trở  
đi.  
Hai tham số trên đây tạo thành cặp xác định được danh sách các inode rỗi trên hệ  
thống file các thao tác tạo file mới, xoá file cập nhật thông tin này.  
Các trƣờng khóa (lock) danh sách các khối rỗi và danh sách inode rỗi: Trong một  
số trƣờng hợp, chẳng hạn khi hệ thống đang làm việc thực sự với đĩa từ để cập  
nhật các danh sách này, hệ thống không cho phép cập nhật tới hai danh sách nói  
trên.  
Cờ chỉ dẫn về việc siêu khối đã đƣợc biến đổi: Định kỳ thời gian siêu khối ở bộ  
nhớ trong đƣợc cập nhật lại vào siêu khối ở đĩa từ và vì vậy cần có thông tin về  
việc siêu khối ở bộ nhớ trong khác với nội dung ở bộ nhớ ngoài: nếu hai bản  
không giống nhau thì cần phải biến đổi để chúng đƣợc đồng nhất.  
Cờ chỉ dẫn rằng hệ thống file chỉ có thể đọc (cấm ghi): Trong một số trƣờng hợp,  
hệ thống đang cập nhật thông tin từ bộ nhớ ngoài thì chỉ cho phép đọc đối với hệ  
thống file,  
Số lƣợng tổng cộng các khối rỗi trong hệ thống file,  
Số lƣợng tổng cộng các inode rỗi trong hệ thống file,  
- 18 -  
 
Thông tin về thiết bị,  
Kích thƣớc khối (đơn vị phân phối dữ liệu) của hệ thống file. Hiện tại kích thƣớc  
phổ biến của khối là 1KB.  
Trong thời gian máy hoạt động, theo từng giai đoạn, nhân sẽ đƣa siêu khối lên đĩa nếu  
nó đã đƣợc biến đổi để phù hợp với dữ liệu trên hệ thống file.  
Inode  
Mỗi khi một tiến trình khởi tạo một file mới, nhân hệ thống sẽ gán cho nó một inode  
chƣa sử dụng. Để hiểu rõ hơn về inode, chúng ta xem xét sơ lƣợc mối quan hệ liên quan giữa  
file dữ liệu và việc lƣu trữ trên vật dẫn ngoài đối với Linux.  
Nội dung của file đƣợc chứa trong vùng dữ liệu của hệ thống file và đƣợc phân chia các  
khối dữ liệu (chứa nội dung file) và hình ảnh phân bố nội dung file có trong một inode tƣơng  
ứng. Liên kết đến tập hợp các khối dữ liệu này là một inode, chỉ thông qua inode mới có thể  
làm việc với dữ liệu tại các khối dữ liệu: Inode chứa dựng thông tin về tập hợp các khối dữ  
liệu nội dung file. Có thể quan niệm rằng, tổ hợp gồm inode và tập các khối dữ liệu nhƣ vậy là  
một file vật lý: inode có thông tin về file vật lý, trong đó có địa chỉ của các khối nhớ chứa nội  
dung của file vật lý. Thuật ngữ inode là sự kết hợp của hai từ index với node và đƣợc sử dụng  
phổ dụng trong Linux.  
Các inode đƣợc phân biệt nhau theo chỉ số của inode: đó chính là số thứ tự của inode  
trong danh sách inode trên hệ thống file. Thông thƣờng, hệ thống dùng 2 bytes để lƣu trữ chỉ  
số của inode. Với cách lƣu trữ chỉ số nhƣ thế, không có nhiều hơn 65535 inode trong một hệ  
thống file.  
Nhƣ vậy, một file chỉ có một inode song một file lại có một hoặc một số tên file. Ngƣời  
dùng tác động thông qua tên file và tên file lại tham chiếu đến inode (tên file và chỉ số inode  
là hai trƣờng của một phần tử của một thƣ mục). Một inode có thể tƣơng ứng với một hoặc  
nhiều tên file, mỗi tƣơng ứng nhƣ vậy đƣợc gọi là một liên kết. Inode đƣợc lƣu trữ tại vùng  
danh sách các inode.  
Trong tiến trình làm việc, Linux dùng một vùng bộ nhớ, đƣợc gọi là bảng inode (trong  
một số trƣờng hợp, nó còn đƣợc gọi tƣờng minh là bảng sao in-core inode) với chức năng  
tƣơng ứng với vùng danh sách các inode có trong hệ thống file, hỗ trợ cho tiến trình truy nhập  
dữ liệu trong hệ thống file. Nội dung của một in-core inode không chỉ chứa các thông tin  
trong inode tƣơng ứng mà còn đƣợc bổ sung các thông tin mới giúp cho tiến trình xử lý inode.  
Inode bao gồm các trƣờng thông tin sau đây:  
Kiểu file. Trong Linux phân loại các kiểu file: file thông thƣờng (regular), thƣ  
mục, đặc tả tự, đặc tả khối và ống dẫn FIFO (pipes). Linux quy định trƣờng  
kiểu file có giá trị 0 tƣơng ứng đó là inode chƣa đƣợc sử dụng.  
Quyền truy nhập file. Trong Linux, file là một tài nguyên chung của hệ thống vì  
vậy quyền truy nhập file đƣợc đặc biệt quan tâm để tránh những trƣờng hợp truy  
nhập không hợp lệ. Đối với một inode, có 3 mức quyền truy nhập liên quan đến  
các đối tƣợng:  
o Mức chủ của file (ký hiệu là u),  
o Mức nhóm ngƣời dùng của chủ nhân của file (ký hiệu g),  
o Mức ngƣời dùng khác (ký hiệu là a).  
Số lƣợng liên kết đối với inode: Đây chính là số lƣợng các tên file trên các thƣ  
mục đƣợc liên kết với inode này,  
Định danh chủ nhân của inode,  
Định danh nhóm chủ nhân: xác định tên nhóm ngƣời dùng mà chủ file là một  
thành viên của nhóm này,  
Độ dài của file tính theo byte,  
Thời gian truy nhập file:  
o Thời gian file đƣợc sửa đổi muộn nhất,  
- 19 -  
Tải về để xem bản đầy đủ
pdf 93 trang Thùy Anh 04/05/2022 6300
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Hệ điều hành mã nguồn mở - Trường Đại học Hàng Hải", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfgiao_trinh_he_dieu_hanh_ma_nguon_mo_truong_dai_hoc_hang_hai.pdf