www.tinhgiac.com HDH LINUX tài liệu, giáo án, bài giảng , luận văn, luận án, đồ án, bài tập lớn về tất cả các lĩnh vực k...
Trang 1HDH LINUX
I Giới thiệu hệ điều hành Linux:
1.Linux là gì?
Linux là hệ điều hành Về mặt nguyên tắc hệ điều hành cũng là một software;
nhưng đây là một software đặc biệt – được dùng để quản lý, điều phối các tài
nguyên (resource) của hệ thống (bao gồm cả hardware và các software khác)
Linux còn được gọi là Open Source Unix (OSU), Unix-like Kernel, clone of the
UNIX operating system
Linux do Linus Torvalds, một sinh viên tại trường Đại Học ở Helsinki (Phần Lan)
phát triển dựa trên hệ điều hành Minix, một hệ điều hành có cấu trúc tương tự
Unix với các chức năng tối thiểu được dùng trong dạy học
Hiện nay, 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 “ ”)
Hiện tại có nhiều hãng, nhiều tổ chức, nhiều nhóm khác nhau cùng phát triển
Linux Tất cả các phiên bản (release) Linux đều có chung phần kernel (phần nhân
của hệ điều hành) và hầu hết các tính năng đặc trưng, tuy nhiên các tool (công
cụ) và utility (tiện ích) có đôi chút dị biệt
Có rất nhiều các ứng dụng cho Linux, tuy nhiên hầu hết các ứng dụng cho Linux
hiện có đều là các ứng dụng mang tính chuyên dụng Để đưa Linux vào từng gia
đình, các tổ chức, các hãng đang cố gắng phát triển các ứng dụng mang tính phổ
Trang 2cập trên Linux chẳng hạn hãng SUN đưa ra phiên bản Star Office tương tự như MS
Office – và cũng tương thích với MS Office - cho những người sử dụng Linux ở gia
đình, văn phòng
Hãng Borland (nay là hãng Inprise) đang phát triển một dự án có tên là KyLix,
nhằm đưa ra một môi trường lập trình cấp cao trên Linux, đồng thời các ứng dụng
trên Windows được viết bằng Delphi/C++Builder sẽ dễ dàng compile (biên dịch) lại
dưới Linux bằng KyLix Hiện tại Kylix đã có phiên bản thử nghiệm (beta)
Dự án này hứa hẹn một loạt các ứng dụng thông thường đã có trên MS Windows sẽ
mau chóng được chuyển sang Linux, và điều này sẽ giúp cho hệ điều hành Linux dễ
dàng thâm nhập vào thị trường PC nhanh chóng hơn
Các ứng dụng được viết trên Linux đều có thể hoạt động trên các
hệ thống UNIX
(có thể cần phải compile lại)
Các release hiện nay gồm có:
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
Slackware 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
Trang 3Corel 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
X Linux:
Hỗ trợ đa ngôn ngữ Tương thích với RedHat Bộ công cụ không lấy gì làm đặc sắc
Tuy nhiên kèm theo nó có khá nhiều ứng dụng Hiện có version 1.0
Và còn rất nhiều release khác như Turbo Linux, Linux PPC,
Debian Linux,
Infomagic Linux, Softlanding Linux System Release (SLS) v.v Các thông tin và tài nguyên (resource) của Linux có thể tìm thấy
ở khắp nơi trên
Internet và hầu hết đều free Thêm vào đó có khá nhiều các trình ứng dụng cũng
như tiện ích dành cho Linux dễ dàng được tìm thấy trên Internet
2 Các tính năng & service 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
Trang 4hai 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
TCP/IP là hệ thống dịch vụ mạng chính của Linux
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 Chúng ta sẽ xem xét chi tiết từng service trên ở trong các phần sau
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ập một hệ thống Unix/Linux
a 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 )
* init 0: Shutdown hệ thống (halt)
* init 1: Admin single user mode: chỉ có root account có thể login
ở mode này
* init 2: Multi user mode, không có hỗ trợ NFS
* init 3: Multi user, có hỗ trợ NFS: cho phép chia sẻ hệ thống file với các hệ
thống khác trong mạng
* int 4: Không dùng
* int 5: Multi user, hỗ trợ graphic mode (X11)
* init 6: reboot (tái khởi động) hệ thống
Trang 5Lưu ý: không được thiết lập mặc định (default) ở chế độ này.
* s (hoặc S): Single user, sử dụng hệ thống như hệ thống cá nhân riêng biệt
(Tại một thời điểm chỉ có một và chỉ một user có quyền đăng nhập hệ thống)
b 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
c 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
d Network:
Dịch vụ này cho phép user có thể login vào hệ thống từ xa
e 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
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),
đáng tin cậy và ổn định
II File System (Hệ thống tập tin) của Linux:
Hệ thống tập tin Linux được tổ chức theo dạng tree (cây) Có một vị trí khởi
điểm, gọi là root (gốc)
Bất kỳ một hệ thống Unix/Linux nào cũng có một thư mục đặc biệt gọi là thư mục
gốc (root directory) ký hiệu là dấu slash (“/”) Đây là điểm bắt đầu để gắn
(mount point) tất cả các phần tử còn lại như hệ thống disks, partions, CDROM
v.v vào hệ thống Linux/Unix Tất cả các thư mục và tập tin khác, kể cả system
files (các tập tin hệ thống) và system directories (các thư mục
hệ thống) cũng
Trang 6chỉ là cấp con của root.
Khi hệ thống Linux/Unix khởi động (startup), thông qua tiến trình init - nó sẽ
tự động mount (gắn) các system files và system directories vào root (/)
Hệ thống files của Linux hiện đang sử dụng là Ext2 FS (Second Extended
Filesystem) Nó cung một hệ thống tập tin UNIX chuẩn cùng với các tính năng mở
rộng
Ext2fs được phát triển cho các hệ thống nhân Linux (Linux kernel) với các khả
năng uyển chuyển
Ext2fs có khả năng quản trị các hệ thống tập tin trên các phân vùng rất lớn (big
partion)
Ext2fs cung cấp tên tập tin dài (long file name) Đây là khả năng của Linux mà
trên các hệ thống UNIX chuẩn (standard UNIX) không hề cung cấp Tối đa một tên
tập tin là 255 ký tự và có thể có khoảng trắng (space)
Ext2fs cho phép truy xuất đến các hệ thống khác như FAT, VFAT (FAT32), MSDOS
trên windows 9.x và DOS một cách dễ dàng
Ngược lại, chúng ta có thể cũng có thể từ các hệ thống FAT, NTFS, BeOS, OS/2,
MacOS truy xuất đến Ext2fs thông qua các trình tiện ích như LTOOLS
Và còn nhiều khả năng khác như có thể dễ dàng thêm vào các khả năng cho Ext2fs
1 System directories:
Thông thường, sau khi thiết lập hệ thống Linux với các default parameters
(option mặc định), ta sẽ có được hình ảnh các thư mục hệ thống như sau:
· Root filesystem được xác định trên mỗi máy Đó chính là hệ thống cây thư mục
cục bộ (Local filesystem) bao gồm local disks, CDROM, floppy disks v.v
Root directory không hề chứa bất kỳ file nào, ngoại trừ có thể có ảnh để khởi
động hệ thống; thông thường là /vmlinuz
Cho đến khi hệ thống được boot; init proccess sẽ mount
filesystem vào root
directory
Tất cả các thư mục còn lại là thư mục con (subdirectory) của root directory
Ký hiệu root directory là /
· /bin: Thư mục này chứa tất cả các lệnh cần thiết được dùng bởi
Trang 7· /sbin: Tương tự như bin; tuy nhiên các lệnh ở đây thường không được dùng bởi
các users thông thường (normal users); mặc dù họ có thể sử dụng chúng nếu cần
thiết và nếu được phép (có quyền sử dụng)
· /etc: Lưu giữ các file cấu hình (configuration files) của máy cục
bộ (local
host)
· /root: home directory cho root user
· /lib: Cất giữ các thư viện cần thiết cho các chương trình trên root
filesystem
· /lib/modules: Lưu giữ các kernel modules, cần thiết cho việc khởi động hệ
thống (boot system)
· /dev: Các file thiết bị (device files)
Lưu ý: Linux/Unix luôn coi tất cả các thiết bị là file Điều này sẽ được trình
bày chi tiết trong phần dành cho các nhà quản trị hệ thống
· /tmp: Nơi lưu chứa các file tạm thời của các chương trình đang thực thi
Lưu ý: Các chương trình chạy sau khi bootup (khởi động hệ thống) sẽ sử dụng
/var/tmp làm nơi lưu chứa tạm
· /boot: Các file được sử dụng để khởi động
Ví dụ: LILO (LInux LOader) và các ảnh nhân (kernel images) được lưu trữ tại đây
· /mnt: Nơi dùng để mount (gắn) các thiết bị lưu trữ tháo ráp được Chẳng hạn
như CDROM, floopy disks, v.v
Chỉ có người quản trị hệ thống (Administrator) thông thường là root user mới có
quyền mount/umout các thiết bị trên
· /usr: Thư mục này khá lớn Hầu hết các chương trình dành cho user được lưu trữ
tại đây
· /var: Chứa các dữ liệu thay đổi khi hệ thống hoạt động
· /proc: Hệ thống filesystem ảo Nó không hề tồn tại trên disk Sự thật, kernel
tạo ra nó trong bộ nhớ Nó được sử dụng để cung cấp các thông tin về hệ thống
chẳng hạn như thông tin về các proccess
· /home: Nơi dành cho các user Bao gồm cả các tập tin cần thiết
để user login
vào hệ thống; cũng như cho phép user lưu trữ data (dữ liệu) lên disk Trong thư
mục /home, mỗi user sẽ có một thư mục mang đúng tên của user_name (default) Các
user chỉ có quyền lưu trữ, xóa, thay đổi các file/subdirectory
Trang 8trong thư mục này
(trừ root user) Riêng root user thì thư mục này là /root
2 Các loại file trong Unix/Linux:
Trong Unix/Linux có bốn dạng file cơ bản: file thông thường (ordinary file), thư
mục (directory), file liên kết (link file) và các file đặc biệt (special file)
· File thông thường: Là các file dùng để lưu trữ các dữ liệu dạng text (văn bản)
hay binary (thường là các file thi hành được – excuted file hay các file thư
viện – lib file)
Thí dụ: file lưu trữ mã nguồn của một chương trình được lưu trữ ở dạng text:
hello.c
· Thư mục: Đây là một file khá đặc biệt, nó được hiểu như là pointer (con trỏ)
để trỏ đến các file hay các thư mục con (sub directory) của nó
· File Liên kết: còn gọi là ordinary link Link file không phải một file thật
sự Đơn giản nó chỉ là một pointer trỏ đến một file/directory nào
đó Và như
vậy, user có thể truy xuất đến file/directory này thông qua các link file như
đang truy xuất trực tiếp đến file/directory đó Và như thế,
Linux/Unix đã tạo ra
thêm một khái niệm – đó là một file có thể có nhiều thư mục cha khác nhau Đây
là khái niệm không có trên các hệ thống khác như Windows NT hay Windows 9.x Tuy
nhiên, Linux xem các ordinary link file và original file là như nhau, nghĩa là
hệ thống xem các link file như là các original file
Có một loại liên kết khác, được gọi là simbolic link Simbolic link
có thể link
đến các file/directory trong cùng filesystem, cùng disk, hoặc một file ở trên
một máy khác, các simbolic link và original file không ngang hàng với nhau
Có sự khác biệt giữa ordinary link và simbolic link:
-Nếu ta xóa link file của ordinary link thì dữ liệu thật sự (actual data) và các
link file khác vẫn còn nguyên (nếu không bị xóa) cho đến khi link file cuối cùng
bị xóa
-Còn nếu ta chỉ cần xóa original file của simbolic link thì lập tức file được
link cùng với các link file khác cũng bị xóa theo
· File đặc biệt: Mọi thiết bị vật lý, bao gồm disk, printers, CDROM, v.v đều
Trang 9được Unix/Linux xem như các file Và các file này được gọi là special files
Hầu hết – không phải tất cả – các thiết bị được lưu giữ ở trong thư mục /dev
Thí dụ: /dev/cdrom là file quản lý CDROM Users sẽ config và dùng CDROM thông
qua file này
Có hai loại thiết bị trong Linux/Unix: character-special devices (thí dụ:
printer) và block-special devices (thí dụ: disk)
Tuy nhiên, về phía user chúng ta có thể không cần quan tâm đến việc thiết bị nào
thuộc loại nào Hệ thống sẽ tự lo điều này
3 File structure:
· File name (tên file): Tên file thường dùng các chữ cái, chữ số và dấu gạch
dưới (underscore)
Có thể dùng dấu phẩy (comma) hay dấu chấm (period) Tuy nhiên, tên file không
thể bắt đầu với dấu chấm “.” hay dấu phẩy “,”; ngoại trừ một số trường hợp đặc
biệt
Tên file có thể dài đến 256 ký tự, bao gồm cả phần mở rộng (extension of file
name) Tuy nhiên Linux/Unix chỉ quản lý thật sự là 32 (hoặc 64)
ký tự đầu tiên
mà thôi Nghĩa là nếu hai file chỉ khác nhau kể từ ký tự thứ 33 (hay 65) thì
Linux/Unix xem như chúng bị trùng tên Các ký tự mở rộng này chỉ dành cho user
Có một số các file khởi tạo (initialization) mà nó sẽ nắm giữ các lệnh cấu hình
shell, được gọi là các dot file được bắt đầu tên file với dấu chấm Thí dụ:
Các tên file sau là hợp lệ:
myfile.txt
yourfile.cpp
yourfile.cpp.old
Các tên file dưới đây là bất hợp lệ:
;hang
*nhuan
?Linh
· Path name: là tên đầy đủ của một file, còn gọi là fullname Fullname chỉ ra
một lộ trình (path) đầy đủ để có thể truy xuất đến tập tin đó
Trang 10Thí dụ: để chỉ ra file tho.txt trong thư mục hang, thư mục hang là thư mục con
của home và home là thư mục con của root Ta có tên đầy đủ của tho.txt như sau:
/home/hang/tho.txt
Để phân cách giữa các thư mục với nhau Linux/Unix sử dụng dấu slash “/” (trùng
với ký hiệu của root)
Có hai dạng path name: đường dẫn tuyệt đối (absolute path name) và đường dẫn
tương đối (relative path name)
Absolute path name chính là full name Nghĩa là tên một
file/subdirectory bắt
đầu từ /
Relative path name: tên một file/subdirectory bắt đầu từ thư mục hiện hành
(current working directory)
Thí dụ: thư mục hiện hành là /home Relative path name của tho.txt là
hang/tho.txt
· File permission: quyền truy cập của file/directory trong
Linux/Unix
Có tất cả ba loại quyền truy xuất: read (đọc), write (ghi/xóa) và excute (thực
thi) cho ba nhóm khác nhau: owner (chủ sở hữu của
file/directory), group (những
user cùng nhóm với chủ sở hữu file/dir) và other (các user còn lại)
Ngoài owner, thì việc thiết lập các quyền này chỉ có thể thay đổi bởi root user
Những user khác, nếu không được phép của ower sẽ không thể thay đổi các quyền
trên
Ký hiệu của quyền read là “r”, write là “w” và excute là “x”, nếu không được set
permission là ký hiệu là “-”
4 Một vài khái niệm khác của file/directory:
· Thư mục hiện hành (current working directory): Còn gọi là thư mục đang làm
việc Là thư mục mà user đang làm việc trên đó Mặc định, khi user đăng nhập vào
hệ thống, working directory sẽ là /home/username
Thí dụ: Nếu bạn login vào hệ thống với username là hang Thì