You are on page 1of 146

T h c s d ng Linux

Tc gi : Kostromin V. A. D ch v c ng tc: Phan Vnh Th nh Phin b n: 0.9.4 Ngy 13 thng 9 nm 2006

Dnh cho ng i dng m i v r t m i...

M cl c
1 HH Linux: l ch s v cc b n phn ph i 1.1 Th no l HH ni chung v Linux ni ring 1.1.1 Cc h i u hnh d ng UNIX . . . . . . 1.1.2 M t cht v l ch s . . . . . . . . . . . . 1.1.3 c i m chnh c a HH Linux . . . . 1.2 B n phn ph i Linux . . . . . . . . . . . . . . . 1.3 Yu c u i v i my tnh . . . . . . . . . . . . . 1.4 L y Linux u? . . . . . . . . . . . . . . . . . 2 2 2 3 6 8 11 12 14 14 16 18 18 18 20 22 23 23 25 26 27 28 28 30 31 34 34 34 36 36 39 39 40

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

. . . . . . .

2 Ci t HH Linux trn cng my tnh v i Windows 2.1 Chu n b ci t . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Phng xa v nh ng l i khuyn . . . . . . . . . . . . . . . . . 2.3 Phn vng trn a v qu trnh kh i ng . . . . . . . . . 2.3.1 Th no l c u trc hnh h c c a a . . . . . . . . 2.3.2 Phn vng v b ng phn vng c a a . . . . . . . . 2.3.3 Qu trnh kh i ng cc HH c a cng ty Microsoft 2.3.4 V n v i cc a l n . . . . . . . . . . . . . . . . . . 2.4 L a ch n trnh kh i ng . . . . . . . . . . . . . . . . . . . . 2.4.1 Trnh kh i ng GRUB . . . . . . . . . . . . . . . . . 2.4.2 Trnh kh i ng LILO . . . . . . . . . . . . . . . . . 2.4.3 Cc trnh kh i ng khc . . . . . . . . . . . . . . . . 2.4.4 Cc phng n kh i ng . . . . . . . . . . . . . . . 2.5 Chu n b cc phn vng trn a . . . . . . . . . . . . . . . 2.5.1 L i khuyn khi t o phn vng . . . . . . . . . . . . . 2.5.2 Chng trnh phn chia a . . . . . . . . . . . 2.6 Windows NT v Linux: kh i ng qua NT OS Loader . . . 2.7 S d ng trnh kh i ng GRUB . . . . . . . . . . . . . . . . 2.7.1 Ci t GRUB . . . . . . . . . . . . . . . . . . . . . . 2.7.2 C u hnh GRUB . . . . . . . . . . . . . . . . . . . . . 2.8 S d ng trnh kh i ng LILO . . . . . . . . . . . . . . . . 2.8.1 Ci t v c u hnh LILO . . . . . . . . . . . . . . . 2.8.2 Ci t cc h i u hnh khc sau Linux . . . . . . 2.8.3 Chuy n th m c /boot ln phn vng DOS . . . . . 2.9 Kh i ng Linux t MS-DOS b ng loadlin.exe . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

iv 3 Kh 3.1 3.2 3.3 3.4 3.5 3.6 i ng Linux l n u Kh i ng HH Linux . . . . . . . . . ng nh p vo h th ng . . . . . . . . Console, terminal o v shell . . . . . So n th o dng l nh. L ch s l nh . . Ng ng lm vi c v i Linux . . . . . . . Tr gip khi dng Linux . . . . . . . . 3.6.1 Cc ngu n thng tin tr gip . 3.6.2 Cc trang tr gip man . . . . . 3.6.3 Cu l nh info . . . . . . . . . . 3.6.4 Cu l nh help . . . . . . . . . . 3.6.5 Ti li u i km v i b n phn ph 3.6.6 Cu l nh xman . . . . . . . . . . 3.6.7 Cu l nh helptool . . . . . . . 3.6.8 Sch v Internet . . . . . . . . .

M CL C 43 43 44 47 49 51 53 53 54 55 56 56 57 57 57 60 60 63 65 70 70 71 72 72 73 79 80 80 80 81 82 82 83 83 86 87 88 89 91 92 94 95

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . i v chng trnh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ng d . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . ng . . . . . .

4 Lm quen v i h th ng t p tin ext3fs 4.1 T p tin v tn c a chng . . . . . . . . . . . . . . . . 4.2 Th m c . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 Cng d ng c a cc th m c chnh . . . . . . . . . . . 4.4 D ng t p tin . . . . . . . . . . . . . . . . . . . . . . . 4.4.1 Cc t p tin thi t b . . . . . . . . . . . . . . . 4.4.2 Cc ng c tn (pipes) . . . . . . . . . . . . . . 4.4.3 Cc socket . . . . . . . . . . . . . . . . . . . . 4.4.4 Lin k t m m . . . . . . . . . . . . . . . . . . 4.5 Quy n truy c p n t p tin v th m c . . . . . . . . 4.6 Cc cu l nh c b n lm vi c v i t p tin v th m 4.6.1 Cu l nh chown v chgrp . . . . . . . . . . . 4.6.2 Cu l nh mkdir . . . . . . . . . . . . . . . . . 4.6.3 Cu l nh cat . . . . . . . . . . . . . . . . . . 4.6.4 Cu l nh cp . . . . . . . . . . . . . . . . . . . 4.6.5 Cu l nh mv . . . . . . . . . . . . . . . . . . . 4.6.6 Cu l nh rm v rmdir . . . . . . . . . . . . . 4.6.7 Cu l nh more v less . . . . . . . . . . . . 4.6.8 Cu l nh tm ki m find v m u tn t p tin . 4.6.9 Cu l nh split . . . . . . . . . . . . . . . . . 4.6.10 So snh cc t p tin v l nh patch . . . . . . 4.7 Cc cu l nh lu tr v nn t p tin . . . . . . . . . . 4.7.1 Chng trnh tar . . . . . . . . . . . . . . . . 4.7.2 Chng trnh gzip . . . . . . . . . . . . . . . 4.7.3 Chng trnh bzip2 . . . . . . . . . . . . . . 4.7.4 S d ng k t h p tar v i gzip v bzip2 . . . 4.8 T o v g n cc h th ng t p tin . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . .

M CL C

5 Bash 100 5.1 H v l g? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 5.2 Cc k t c bi t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 5.3 Th c thi cc cu l nh . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 5.3.1 Thao tc ; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 5.3.2 Thao tc & . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 5.3.3 Thao tc && v || . . . . . . . . . . . . . . . . . . . . . . . . 103 5.4 u vo/ u ra tiu chu n . . . . . . . . . . . . . . . . . . . . . . . . 103 5.4.1 Dng d li u vo ra . . . . . . . . . . . . . . . . . . . . . . . 103 5.4.2 L nh echo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 5.4.3 L nh cat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 5.5 Chuy n h ng u vo/ u ra, ng ng v b l c . . . . . . . . . . 105 5.5.1 S d ng >, < v . . . . . . . . . . . . . . . . . . . . . . . . . 105 5.5.2 S d ng | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 5.5.3 B l c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 5.6 Tham bi n v cc bi n s . Mi tr ng c a h v . . . . . . . . . . . . 108 5.6.1 Cc d ng tham bi n khc nhau . . . . . . . . . . . . . . . . . 108 5.6.2 D u nh c c a h v . . . . . . . . . . . . . . . . . . . . . . . . 110 5.6.3 Bi n mi tr ng PATH . . . . . . . . . . . . . . . . . . . . . . . 111 5.6.4 Bi n mi tr ng IFS . . . . . . . . . . . . . . . . . . . . . . . 112 5.6.5 Th m c hi n th i v th m c c nhn . . . . . . . . . . . . 112 5.6.6 Cu l nh export . . . . . . . . . . . . . . . . . . . . . . . . . 112 5.7 Khai tri n bi u th c . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 5.7.1 Khai tri n d u ngo c . . . . . . . . . . . . . . . . . . . . . . . 113 5.7.2 Thay th d u ng (Tilde Expansion) . . . . . . . . . . . . . . 114 5.7.3 Php th cc tham bi n v bi n s . . . . . . . . . . . . . . . 114 5.7.4 Php th cc cu l nh . . . . . . . . . . . . . . . . . . . . . . . 114 5.7.5 Php th s h c (Arithmetic Expansion) . . . . . . . . . . . . 115 5.7.6 Phn chia t (word splitting) . . . . . . . . . . . . . . . . . . 115 5.7.7 Khai tri n cc m u tn t p tin v th m c (Pathname Expansion) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 5.7.8 Xa cc k t c bi t . . . . . . . . . . . . . . . . . . . . . . . 116 5.8 Shell - m t ngn ng l p trnh . . . . . . . . . . . . . . . . . . . . . . 116 5.8.1 Ton t if v test (ho c [ ]) . . . . . . . . . . . . . . . . . . 117 5.8.2 Ton t test v i u ki n c a bi u th c . . . . . . . . . . . . 117 5.8.3 Ton t case . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 5.8.4 Ton t select . . . . . . . . . . . . . . . . . . . . . . . . . . 120 5.8.5 Ton t for . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 5.8.6 Ton t while v until . . . . . . . . . . . . . . . . . . . . . 122 5.8.7 Cc hm s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 5.8.8 Tham s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 5.8.9 Bi n n i b (local) . . . . . . . . . . . . . . . . . . . . . . . . . 123 5.9 Script c a h v v l nh source . . . . . . . . . . . . . . . . . . . . . 124 5.10 Cu l nh sh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

vi 6 S d ng Midnight Commander 6.1 Ci t chng trnh Midnight Commander . . 6.2 V ngoi c a mn hnh Midnight Commander 6.3 Tr gip . . . . . . . . . . . . . . . . . . . . . . . 6.4 S d ng chu t . . . . . . . . . . . . . . . . . . . 6.5 i u khi n cc b ng . . . . . . . . . . . . . . . . 6.5.1 D ng danh sch t p tin . . . . . . . . . . 6.5.2 Nh ng ch hi n th khc . . . . . . . 6.5.3 Cc t h p phm i u khi n b ng . . . .

M CL C 126 126 127 129 130 131 131 134 136

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

. . . . . . . .

Danh sch hnh v


3.1 Mn hnh kh i ng c a GRUB . . . . . . . . . . . . . . . . . . . . . 44 6.1 6.2 6.3 6.4 6.5 6.6 6.7 Midnight Commander ti ng Vi t Mn hnh Midnight Commander H p tho i ch n nh d ng hi n th H p tho i s p x p . . . . . . . . . Ch thng tin . . . . . . . . . . Ch cy th m c . . . . . . . . Ch xem nhanh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 128 131 134 135 135 136

Danh sch b ng
1.1 Yu c u i v i ph n c ng . . . . . . . . . . . . . . . . . . . . . . . . 11 2.1 C u trc c a sector kh i ng chnh . . . . . . . . . . . . . . . . . . 21 2.2 Nhu c u s d ng khng gian a c a HH . . . . . . . . . . . . . . 28 3.1 3.2 3.3 3.4 3.5 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 5.1 5.2 5.3 5.4 Nh ng cu l nh n gi n c a Linux Nh ng phm so n th o dng l nh . . T h p phm i u khi n l ch s l nh Cc ph n chnh c a tr gip man . . Phm s d ng xem trang man . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 50 52 54 55 66 71 81 85 89 92 93 98 108 109 111 116

C u trc th m c c a Linux . . . . . . . . . . . Nh ng t p tin thi t b chnh . . . . . . . . . . . Nh ng ty ch n chnh c a l nh cp . . . . . . . Tiu ch tm ki m c a cu l nh find. . . . . . . Nh ng ty ch n chnh c a tar . . . . . . . . . Nh ng ty ch n chnh c a chng trnh gzip Nh ng ty ch n chnh c a chng trnh bzip2 Nh ng ty ch n chnh c a cu l nh mount . . Cc cu l nh b l c . . . . . . Thay th cc tham bi n c bi K t xc nh d ng d u nh c Cc k t t o m u . . . . . . . . t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6.1 Cc t h p phm di chuy n dng chung . . . . . . . . . . . . . . . . . 129 6.2 Di chuy n trong trnh xem t p tin . . . . . . . . . . . . . . . . . . . . 129 6.3 Di chuy n khi xem tr gip . . . . . . . . . . . . . . . . . . . . . . . 130

L im u
y l b n d ch cu n Linux cho ng i dng (sri sch t h c) c a Kostromin Victor Alexeevich c ng thm m t vi kinh nghi m s d ng Linux c a ng i d ch. B n g c c vi t trn ti ng Nga. Theo yu c u c a Kostromin A. V., xin c a ra cc lin k t t i b n g c sau y: http://rus-linux.net/book1.php?name=book1/oglavl http://linux-ve.chat.ru/

C m n
Tr c tin c n c m n Kostromin V. A. ng i dng m i tuy t v i, hai bc Nguy n A Tun gip trong vi c s d ng L TEX. Bc cho phin b n 0.9. Xin hy g i th nh c ng nh ng i d ch c qun ai . vi t m t cu n sch v Linux cho i Qu v Nguy n ng Hong Nguy n i Qu c v s a i d ch t i teppi82@gmail.com n u

B n quy n
Cu n T h c s d ng Linux ny s d ng b n quy n Creative Commons Public License 2.5 (http://creativecommons.org/licenses/by/2.5/). Tc gi Kostromin V. A. cng nh ng i d ch v c ng tc khng ch u trch nhi m v h u qu do vi c s d ng cu n sch ny gy ra. M i ngh s a i, thng bo l i chnh t , l i ki n th c c a b n d ch cng nh ngh gip d ch xin g i cho Phan Vnh Th nh theo a ch teppi82@gmail.com.

Chng 1 HH Linux: l ch s v cc b n phn ph i


Just for fun Linus Torvalds.
Ng i d ch: L ch s lun l i m kh i u khi nghin c u m t ngnh khoa h c no . Khng c ngo i l i v i Ton h c, V t l, mn chuyn ngnh c a ti Ho h c v t t nhin c HH Linux. Trong chng u tin c a cu n sch T h c s d ng Linux ny chng ta s tr l i ng n g n cho cu h i Linux l g?. ng th i ni i dng v nh ng i m c bi t c a Linux, yu c u c a Linux i v i ph n c ng, khi ni m b n phn ph i Linux, v cch c c nh ng b n phn ph i ny. Hn th n a b n c s hi u t nhi u v OpenSource, GNU v FSF.

1.1
1.1.1

Th no l HH ni chung v Linux ni ring


Cc h i u hnh d ng UNIX

H i u hnh (HH) l m t b cc chng trnh h tr vi c i u khi n ph n c ng c a my tnh, t ch c lm vi c v i cc t p tin (trong c ch y v i u khi n vi c th c hi n c a cc chng trnh), v ng th i th c thi s giao ti p v i ng i dng, t c l d ch cc cu l nh c a ng i dng v hi n th k t qu lm vi c c a nh ng l nh ny. Khng c h i u hnh th my tnh khng th c hi n c ch c nng c a mnh. Trong tr ng h p my tnh ch l m t t p h p cc thi t b i n t khng lm vi c, khng hi u l lm g. n th i i m hi n nay th cc h i u hnh n i ti ng nh t cho my tnh l Microsoft Windows (C) v UNIX. Windows b t ngu n t h i u hnh MS-DOS tr c y lm vi c trn cc my tnh c a hng IBM. H i u hnh UNIX do nhm cc nh pht tri n Bell Labs vi t ra vo nm 1969 d i s i u khi n c a Dennis Ritchie, Ken Thompson v Brian Kernighan. Nhng by gi khi ni n h i u hnh UNIX th ng c khng ni c th m t h i u hnh c th no m l m t nhm cc h i u hnh dng UNIX (UNIX-liked OS). Chnh b n thn t UNIX (vi t hoa t t c cc ch ci) tr thnh nhn hi u thng m i c a t ng cng ty AT&T.1
Ng i d ch: Ng i m khng ng i ng n ng k nhn hi u thng m i b t k th g, k c Yoga m b t ngu n t n .
1

1.1 Th no l HH ni chung v Linux ni ring

Vo cu i nh ng nm 70 c a th k tr c (th k XX) cc nh pht tri n c a tr ng i h c California Berkeley thm vo m ngu n c a UNIX r t nhi u s c i ti n trong c h tr giao th c2 TCP/IP (giao th c m ng chnh hi n nay). S n ph m ny n i ti ng d i tn BSD ("Berkeley Systems Distribution"). i u c bi t ch b n quy n c a s n ph m cho php ng i khc pht tri n v c i ti n v chuy n k t qu thu c n ng i th ba (cng v i m ngu n ho c khng) v i i u ki n l ph i ch ra ph n no c a m c pht tri n Berkeley. H i u hnh dng UNIX, trong c BSD, lc u c pht tri n lm vi c v i cc my tnh nhi u ng i dng cc mainframe. Nhng d n d n c u hnh trang thi t b c a my tnh c nhn cng m nh ln v hi n nay c kh nng cao hn so v i nh ng mainframe c a nh ng nm 70 th k tr c. V v u nh ng nm 90 m t sinh vin c a tr ng i h c Helsinki (Ph n Lan), Linus Torvalds, b t u pht tri n m t HH ki u UNIX cho cc my tnh c nhn tng thch v i IBM (IBM-compatible PC).

1.1.2

M t cht v l ch s

HH Linux v a k ni m sinh nh t l n th 15 c a mnh. y l b c th m Linus g i vo nhm tin t c comp.os.minix ngy 25 thng 8 nm 1991 ( c coi l ngy sinh nh t c a HH ny):
From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds) Newsgroups: comp.os.minix Subject: What would you like to see most in minix? Summary: small poll for my new operating system Message-ID: <1991Aug25.205708.9541@klaava.Helsinki.FI> Date: 25 Aug 91 20:57:08 GMT Organization: University of Helsinki Hello everybody out there using minix Im doing a (free) operating system (just a hobby, wont be big and professional like gnu) for 386(486) AT clones. This has been brewing since april, and is starting to get ready. Id like any feedback on things people like/dislike in minix, as my OS resembles it somewhat (same physical layout of the file-system (due to practical reasons) among other things). Ive currently ported bash(1.08) and gcc(1.40), and things seem to work. This implies that Ill get something practical within a few months, and Id like to know what features most people would want. Any suggestions are welcome, but I wont promise Ill implement them :-) Linus (torvalds@kruuna.helsinki.fi) PS. Yes its free of any minix code, and it has a multi-threaded fs. It is NOT portable (uses 386 task switching etc), and it probably never will support anything other than AT-harddisks, as thats all I have :-(.

Trong th ny Linus cho bi t anh ang pht tri n m t h i u hnh t do cho cc my tnh i 386 (486) v yu c u nh ng ai quan tm cho bi t nh ng thnh ph n no c a h th ng cho ng i dng c n ph i c u tin. Nh ng ng i dng trong nhm tin t c ny lm vi c d i h i u hnh Minux do gio s Andy
2

protocol

HH Linux: l ch s v cc b n phn ph i

Tanenbaum vi t ra lm cng c h c t p cho cc sinh vin l p trnh. Minux lm vi c trn cc my tnh v i b x l 286 v c Linus dng lm m hnh cho HH m i. T p tin phin b n u tin c a Linux (phin b n 0.01) c cng b trn Internet ngy 17 thng 09 nm 1991. Linus Torvalds vi t: As I already mentioned, 0.01 didnt actually come with any binaries: it was just source code for people interested in what linux looked like. Note the lack of announcement for 0.01: I wasnt too proud of it, so I think I only sent a note to everybody who had shown interest. (Nh ti ni tr c y, 0.01 khng i km theo binary no: n ch l m ngu n cho nh ng ai mu n bi t linux trng ra sao. Ch r ng khng c thng bo cho b n 0.01: ti khng t ho l m v n, v th ch g i thng bo n t t c nh ng ai mu n th hi n s quan tm.)3 Sau ngy 05 thng 10 nm 1991 phin b n 0.02 ra i. y l phin b n c th lm vi c trn my. N u b n c quan tm n l ch s c a HH ny th hy c trang web sau: http://www.li.org/linuxhistory.php. b n s nh n c thng tin chi ti t v l ch s xu t hi n v pht tri n Linux. Linus Torvalds khng ng k b ng sng ch cng nh khng gi i h n vi c phn ph i HH m i ny. Ngay t u Linux c phn ph i theo i u ki n c a b n quy n General Public License (GPL)4 th ng dng cho cc ph n m m ng d ng Open Source v d n GNU. Theo ti ng lng c a Linux th b n quy n ny i khi c g i l Copyleft. V b n quy n ny, Open Source v d n GNU c n ph i ni n m t cch c bi t. Vo nm 1984 nh bc h c ng i m Richard Stallman sng l p ra T ch c ph n m m t do (FSF, Free Software Foundation) c trang ch n m t i a ch http://www.fsf.org. M c ch c a t ch c ny l lo i tr t t c nh ng i u c m on v h n ch phn ph i, sao chp, s a i, nghin c u chng trnh ng d ng. B i v tnh n th i i m b t u xy d ng t ch c th cc cng ty thng m i gi r t c n th n cc chng trnh ng d ng c a mnh, b o v n b ng cc b ng sng ch , cc d u hi u b o v quy n tc gi , gi b m t nghim ng t m ngu n c a chng trnh vi t trn cc ngn ng b c cao (nh C++). Stallman cho r ng vi c ny r t c h i i v i pht tri n chng trnh ng d ng, d n n vi c gi m ch t l ng chng trnh v s c m t c a r t nhi u l i khng xc nh c trong nh ng chng trnh ny. T i t nh t l lm ch m qu trnh trao i t ng trong ngnh l p trnh, lm ch m qu trnh t o ng d ng m i v m i nh l p trnh s ph i vi t l i t u m t ng d ng thay v dng o n m ngu n c trong ng d ng khc. Trong khun kh T ch c ph n m m t do b t u lm vi c d n GNU (http://www.gnu.org) d n t o chng trnh ng dng mi n ph. GNU l t vi t t t c a GNUs Not Unix, t c l nh ng g thu c v d n GNU khng ph i l m t ph n c a Unix (vo th i gian th m ch t UNIX tr thnh thng
Ng i d ch: R t th v l sau khi Linus Torvalds pht tri n HH c a mnh th gi a anh v gio s Andy Tanenbaum n ra m t cu c tranh ci. N u b n c quan tm th c th tm c nh ng th m hai ng i ny g i cho nhau trong nhm tin t c ni trn, ho c tm c cu n Linux: Just for fun, m t cu n sch ni v i t c a Linus Torvalds n th i i m anh lm cho Transmeta v vi c pht tri n HH Linux. 4 Ng i d ch: Th t ra lc u nhn Linux c phn ph i theo b n quy n m FSF khng khng nh n l t do v nghim c m phn ph i thng m i. B n quy n ny c th tm th y trong nh ng phin b n u tin c a nhn trn ftp.kernel.org, v d ftp://ftp.kernel.org/pub/linux/kernel/Historic/old-versions/RELNOTES0.01. B n quy n c i sang GPL t phin b n 0.12, hy xem RELNOTES-0.12 theo a ch trn.
3

1.1 Th no l HH ni chung v Linux ni ring

hi u, do khng cn t do). Trong Manifesto GNU (http://www.gnu.org/ gnu/manifesto.html) vo nm 1985 Stallman vi t r ng ng l c ng sng l p ra FSF v d n GNU l s kh ch u trong quy n s h u c a m t s ng i i v i chng trnh ng d ng. Nh ng g do d n GNU pht tri n l t do, nhng khng c ngha l chng c phn ph i khng c b n quy n v khng c lu t php b o v . Nh ng chng trnh Open Source (M ngu n m ) c phn ph i theo i u ki n c a b n quy n General Public License (GPL). B n c th c b n quy n ny theo a ch http://www.gnu.org/copyleft/gpl.html. B n d ch ti ng Vi t khng chnh th c n m t i http://vi.openoffice.org/gplv.html. N u nh ni m t cch th t ng n g n th b n ch t c a GPL nh sau. Chng trnh ng d ng phn ph i theo GPL c quy n pht tri n, s a i, chuy n ho c bn cho ng i khc khng h n ch v i m t i u ki n l k t qu thu c cng ph i phn ph i theo b n quy n copyleft. i u ki n cu i l quan tr ng v then ch t c a b n quy n ny. N b o m r ng k t qu lao ng c a cc nh pht tri n ph n m m t do s lun lun m v khng tr thnh m t ph n c a s n ph m no dng b n quy n bnh th ng ( ni s n ph m ng). i u ki n ny cng phn bi t ph n m m t do v i ph n m m phn ph i mi n ph. Ni nh cc nh sng l p ra FSF, th b n quy n GPL lm cho chng trnh ng d ng t do v m b o l chng trnh ny s t do5 . G n nh t t c cc chng trnh ng d ng phn ph i theo i u ki n GPL c th coi l mi n ph i v i ng i dng (trong ph n l n cc tr ng h p nh n c n b n ch ph i tr ti n a CD, DVD ho c k t n i Internet). i u khng c ngha l cc nh l p trnh khng cn nh n c ph n th ng (ti n) cho cng vi c c a mnh. t ng chnh c a Stallman l ch khng ph i bn chng trnh ng d ng, m bn chnh s c lao ng c a nh l p trnh. y c n ph i a ra v d b n c hi u r hn: ngu n thu nh p c th l cc s n ph m i km ho c d ch v ci t v c u hnh cho nh ng my tnh m i ho c pht tri n cho nh ng i u ki n lm vi c m i, d y cch s d ng, v.v. . . M t ph n th ng t t n a l khi chng trnh tr ln n i ti ng th tc gi c a chng trnh s c i u ki n tm m t cng vi c c lng cao. Cc nh pht tri n xvnkb (http://xvnkb.sf.net), unikey (http://unikey.org) v pdfLaTeX (http://www.tug.org), l nh ng ng i hi u r nh t i u ny. Hy vi t th cho h h c h i kinh nghi m! Trong khun kh c a ho t ng Open Source ni chung v d n GNU ni ring, pht tri n m t l ng ng k cc chng trnh ng d ng, n i ti ng nh t trong s chng l trnh so n th o Emacs v trnh bin d ch GCC (GNU C Compliler) trnh bin d ch ngn ng C t t nh t hi n nay. Vi c m m ngu n ng th i nng cao r t nhi u ch t l ng c a chng trnh ng d ng: t t c nh ng g t t nh t, nh ng t ng v cch gi i quy t m i c phn ph i r ng ri ngay l p t c, cn cc l i s c nh n ra v s a nhanh chng. y chng ta g p l i c ch o th i (hay t t hn l ch n l c) t nhin nh trong thuy t sinh h c c a Darwin. C ch ny b km nn trong th gi i chng trnh ng d ng thng m i.
Ng i d ch: B n c cng nn bi t l s p t i s c phin b n th 3 c a GPL (GPLv3). Cng v i s ra i c a phin b n th 3 ny n y ra r t nhi u tranh ci xung quanh tnh t do c a b n quy n. Tham gia vo tranh ci c c ng i vi t ra nhn Linux u tin Linus Torvalds.
5

HH Linux: l ch s v cc b n phn ph i

Tuy nhin by gi xin quay l i v i l ch s c a Linux. C n ni r ng Linus Torvalds ch pht tri n ph n nhn (kernel) c a h i u hnh. Nhn ny u ng vo mi n t lnh, v trong d n GNU pht tri n s l ng l n cc ti n ch khc nhau. Nhng chuy n GNU thnh m t HH hon ch nh th ch cn thi u nhn. D n GNU cng b t u pht tri n nhn cho ring mnh ( c g i l Hurd), nhng v l do no b ch m l i. V th s xu t hi n c a nhn Linux l r t ng lc. N ng ngha v i vi c ra i c a m t h i u hnh m i t do phn ph i cng v i m ngu n m . Stallman t t nhin ng khi i h i h i u hnh Linux ph i c g i l GNU/Linux. Nhng thnh l ng i dng th ng s d ng tn g i c a nhn lm tn g i c a h i u hnh, v chng ta cng lm nh v y trong cu n sch ny.

1.1.3

c i m chnh c a HH Linux

Do m ngu n Linux phn ph i t do v mi n ph, nn ngay t u c r t nhi u nh l p trnh tham gia vo qu trnh pht tri n h th ng. Nh n th i i m hi n nay Linux l h i u hnh hi n i, b n v ng v pht tri n nhanh nh t, h tr cc cng ngh m i g n nh ngay l p t c. Linux c t t c cc kh nng, c trng cho cc h i u hnh y tnh nng dng UNIX. Xin a ra y danh sch ng n g n nh ng kh nng ny. 1. Nhi u ti n trnh th t s T t c cc ti n trnh l c l p, khng m t ti n trnh no c c n tr cng vi c c a ti n trnh khc. lm c i u ny nhn th c hi n ch phn chia th i gian c a b x l trung tm, l n l t chia cho m i ti n trnh m t kho ng th i gian th c hi n. Cch ny hon ton khc v i ch nhi u ti n trnh y nha c th c hi n trong Windows 95, khi m t ti n trnh ph i nh ng b x l cho cc ti n trnh khc (v c th lm ch m tr r t lu vi c th c hi n). 2. Truy c p nhi u ng i dng Linux khng ch l HH nhi u ti n trnh, Linux h tr kh nng nhi u ng i dng lm vi c cng lc. Khi ny Linux c th cung c p t t c cc ti nguyn h th ng cho ng i dng lm vi c qua cc terminal xa khc nhau. 3. Swap b nh ln a Swap b nh cho php lm vi c v i Linux khi dung l ng b nh c h n. N i dung c a m t s ph n (trang) b nh c ghi ln vng a c ng xc nh t tr c. Vng a c ng ny c coi l b nh ph thm vo. Vi c ny c lm gi m t c lm vi c, nhng cho php ch y cc chng trnh c n b nh dung l ng l n m th c t khng c trn my tnh. 4. T ch c b nh theo trang H th ng b nh Linux c t ch c d ng cc trang v i dung l ng 4K. N u b nh y, th HH s tm nh ng trang b nh lu khng c s d ng chuy n chng t b nh ln a c ng. N u c trang no trong s nh ng trang ny l i tr thnh c n thi t, th Linux s ph c h i chng t a c ng (vo b nh ). M t s h th ng Unix c v m t s h th ng hi n i

1.1 Th no l HH ni chung v Linux ni ring (bao g m c Microsoft Windows) chuy n ln a t t c n i dung c a b nh thu c v nh ng ng d ng khng lm vi c t i th i i m hi n th i (t c l T T C cc trang b nh thu c v ng d ng s c lu ln a khi khng b nh ) v nh v y km hi u qu hn.

5. N p mun th c hi n theo yu c u Nhn Linux h tr vi c cung c p cc trang b nh theo yu c u, khi ny ch ph n m c n thi t c a chng trnh m i n m trong b nh , cn nh ng ph n m khng s d ng t i th i i m hi n t i th n m l i trn a. 6. Cng s d ng chng trnh N u c n ch y m t lc nhi u b n sao c a cng m t ng d ng no 6 , th Linux ch n p vo b nh m t b n sao c a m chng trnh v t t c cc ti n trnh gi ng nhau cng s d ng m t m ny. 7. Th vi n chung Th vi n b cc qu trnh (thao tc) c chng trnh dng lm vi c v i d li u. C m t s th vi n tiu chu n c dng cng lc cho vi ti n trnh. Trn cc h th ng c nh ng th vi n n m trong m i t p tin chng trnh, v th c hi n cng lc nh ng chng trnh ny d n n hao h t b nh khng ng c. Trn cc h th ng m i (bao g m Linux) c h tr lm vi c v i cc th vi n ng (dynamic) v tnh (static) c chia ra, v nh v y cho php gi m kch th c b nh b ng d ng chi m. 8. B m ng c a a B m c a a l m t ph n b nh c a h th ng dng lm ni lu nh ng d li u th ng dng c a a, nh nng cao r t nhi u t c truy c p t i nh ng chng trnh v ti n trnh th ng dng. Ng i dng MSDOS s nh n chng trnh SmartDrive, chng trnh ny d tr m t ph n b nh c kch th c xc nh lm b m cho a. Linux s d ng h th ng m linh ng hn: b nh c d tr cho m c tng ln khi b nh khng c s d ng, v s gi m xu ng khi h th ng hay ti n trnh c n nhi u b nh hn. 9. 100% tng ng v i tiu chu n POSIX 1003.1. H tr m t ph n cc kh nng c a System V v BSD POSIX 1003.1 (Portable Operating System Interface giao di n c a h i u hnh lu ng) a ra giao di n tiu chu n cho cc h th ng Unix, l m t b cc th t c ngn ng C. Ngy nay giao di n ny c t t c cc h i u hnh m i h tr . Microsoft Windows NT cng h tr POSIX 1003.1. Linux 100% tng ng v i tiu chu n POSIX 1003.1. Thm vo Linux cn h tr cc kh nng c a System V v BSD tng tnh tng thch. 10. System V IPC Linux s d ng cng ngh IPC (InterProcess Communication) trao i thng tin gi a cc ti n trnh, s d ng tn hi u v b nh chung.
6

ho c m t ng i dng ch y vi ti n trnh gi ng nhau, ho c nhi u ng i dng ch y cng m t chng trnh

HH Linux: l ch s v cc b n phn ph i 11. Kh nng ch y chng trnh c a HH khc Trong l ch s Linux khng ph i l h i u hnh u tin. Ng i ta vi t ra hng lo t cc chng trnh ng d ng, trong c c nh ng chng trnh c ch v khng n n i t i, cho cc HH pht tri n tr c Linux, bao g m DOS, Windows, FreeBSD v OS/2. ch y nh ng chng trnh nh v y d i Linux pht tri n cc trnh gi l p (emulator) cho DOS, Windows 3.1, Windows 95 v Wine. Ngoi ra, cn c m t lo t cc chng trnh t o my o7 m ngu n m cng nh s n ph m thng m i: qemu, bochs, pearpc, vmware,. . . HH Linux cn c kh nng ch y chng trnh dnh cho b x l Intel c a cc h th ng Unix khc, n u h th ng p ng tiu chu n iBCS2 (intel Binary Compatibility). 12. H tr cc nh d ng h th ng t p tin khc nhau Linux h tr m t s l ng l n cc nh d ng h th ng t p tin, bao g m cc h th ng t p tin DOS v OS/2, v c cc h th ng t p tin m i, nh reiserfs, HFS,. . . . Trong khi h th ng t p tin chnh c a Linux, c g i l Second Extended File System (ext2fs) v Third Extended File System (ext3fs) cho php s d ng khng gian a m t cch c hi u qu . 13. Kh nng h tr m ng Linux c th g n vo b t k m ng n i b no. H tr t t c cc d ch v Unix, bao g m Networked File System (NFS), k t n i t xa (telnet, rlogin, ssh), lm vi c trong cc m ng TCP/IP, truy c p dial-up qua cc giao th c SLIP v PPP,v.v. . . ng th i c h tr dng Linux l my ch ho c my khch cho m ng khc, trong c chia s (dng chung, sharing) cc t p tin v in t xa trong cc m ng Macintosh, NetWare v Windows. 14. Lm vi c trn cc ph n c ng khc nhau M c d u tin HH Linux c pht tri n cho my tnh c nhn (PC) trn n n t ng Intel 386/486, by gi n c th lm vi c trn t t c cc b vi x l Intel b t u t 386 v k t thc l cc h th ng nhi u b x l Pentium IV, bao g m c cc b x l 64bit. ng th i Linux cn lm vi c trn r t nhi u b x l tng thch v i Intel c a cc nh s n xu t khc, nh AMD. Trong Internet cn c nh ng thng bo ni r ng trn cc b x l Athlon v Duron c a AMD Linux cn lm vi c t t hn so v i trn Intel. Ngoi ra cn c phin b n Linux cho cc b x l khc bao g m ARM, DEC Alpha, SUN Sparc, M68000 (Atari v Amiga), MIPS, PowerPC v nh ng b x l khc8 . Xin c ni lun l trong cu n sch ny chng ta ch xem xt tr ng h p Linux cho cc my tnh tng thch v i IBM.

1.2

B n phn ph i Linux

Trong b t k h i u hnh no cng c th chia ra 4 ph n chnh: nhn, c u trc (h th ng) t p tin, trnh d ch l nh ng i dng v cc ti n ch. Nhn l
cho php s d ng nhi u h i u hnh trn m t my Ng i d ch: b n phn ph i Linux h tr nhi u b x l nh t c n ph i k n Debian (http://www. debian.org)
8 7

1.2 B n phn ph i Linux

thnh ph n chnh, nng c t c a HH, n i u khi n cc thi t b ph n c ng v i u khi n vi c th c hi n chng trnh. C u trc t p tin (h th ng t p tin) l h th ng lu t p tin trn cc thi t b lu. Trnh d ch l nh hay h v (shell) l chng trnh t ch c giao ti p gi a my tnh v ng i dng. V cu i cng cc ti n ch n gi n l cc chng trnh ring l , ni chung khng khc so v i nh ng chng trnh bnh th ng khc m ng i dng c th ch y, nhng c ch c nng chnh l th c hi n cc cng vi c d ch v (service). Nh ni trn, n u chnh xc th t Linux ch c ngha l nhn. V th khi ni v h i u hnh ni chnh xc hn s l h i u hnh d a trn nhn Linux. Nhn c a HH Linux hi n th i ang c pht tri n d i s lnh o c a Linus Torvalds v phn ph i m t cch t do (v i b n quy n GPL) gi ng nh m t s l ng kh ng l cc chng trnh ng d ng v ti n ch khc. M t trong nh ng k t qu c a vi c phn ph i t do chng trnh ng d ng cho Linux l c nhi u cng ty cng nh nhm cc nh pht tri n c l p pht hnh ra cc b n Linux khc nhau c g i l b n phn ph i Linux. B n phn ph i l m t b cc chng trnh ng d ng bao g m t t c b n ph n chnh c a HH, t c l nhn, h th ng t p tin, h v shell v cc ti n ch, ng th i cn c thm cc chng trnh cho cng vi c hng ngy c a ng i dng. Thng th ng t t c nh ng chng trnh n m trong b n phn ph i Linux u dng b n quy n GPL. R t c th xu t hi n trong b n c ngh r ng b t k ai cng c kh nng cho ra b n phn ph i Linux, hay ni ng hn l b t k ng i no khng l i su t p cc chng trnh t do. V suy ngh c ph n no ng. Tuy nhin cc nh pht tri n c a m t b n phn ph i Linux c n t o ra t nh t m t chng trnh ci t a HH ln my tnh tr ng khng cha c HH no. Ngoi ra, c n tm cch gi i quy t s ph thu c v mu thu n gi a cc gi (v gi a cc phin b n c a gi) chng trnh. V nh chng ta s th y sau khng ph i l bi ton n gi n. Tuy v y, trn th gi i ang c hng trm (hng nghn?) b n phn ph i Linux v m i ngy l i xu t hi n cc b n m i. C th tm th y danh sch tng i y cng v i c i m ng n g n c a m i b n phn ph i trn http://www. linuxhq.com (cn c m t s b n phn ph i khc ti ng Anh). Ngoi ra, trn trang cng nh nhi u trang web khc cn c lin k t n nh ng danh sch b n phn ph i khc, v th n u mu n c th tm th y t t c nh ng g c trn th gi i (h u h t nh ng trang ny dng ti ng Anh v cc b n phn ph i Vi t Nam t c ni n). M t vi tc gi th phn lo i cc b n phn ph i d a trn nh ng tiu ch khc nhau:
c u trc h th ng t p tin chng trnh ci t phng ti n dng ci t cc gi chng trnh thnh ph n c a cc ti n ch v chng trnh ng d ng c trong b n phn ph i.

M c d h u h t cc tc gi cho r ng s khc nhau gi a cc b n phn ph i l khng c b n. Nhng hi n nay c th chia t nh t 3 nhm b n phn ph i, m i di n c a m i nhm l Red Hat, Slackware v Debian.

10

HH Linux: l ch s v cc b n phn ph i

V y th c n l a ch n b n phn ph i theo tiu chu n no? Theo ki n c a tc gi th i v i ng i dng Vi t Nam c hai tiu chu n: th nh t ph i c giao di n ng i dng ti ng Vi t v th hai ph i c m t nhm cc nh pht tri n h tr b n phn ph i ny. V t t nh t n u nhm cc nh pht tri n ny nh n c ngu n l i t s n ph m Linux c a mnh, t c l lm vi c nh m t cng ty thng m i. Th m ch ch trong kho ng th i gian khng lu m ti s d ng Linux (kho ng 5 nm) c nhi u b n phn ph i Vi t Nam cng nh n c ngoi cho t m bi t th gi i Linux v nhm h tr c a chng khng thu c nhi u l i nhu n v sau m t th i gian ng ng h tr tc ph m c a mnh. i v i ng i dng Linux Vi t Nam hi n th i c hai l a ch n: th nh t, s d ng cc s n ph m Linux ti ng Vi t do m t s ng i t nguy n duy tr; th hai, s d ng cc s n ph m Linux l n c h tr ti ng Vi t. Chng ta s ni n hai s l a ch n ny m t cch k cng hn. L a ch n th nh t, theo ki n c a ti khng c u tin y. L do chnh l cha t c tiu chu n th hai nu trn. Hi n th i c m t b n phn ph i nh v y: vnlinux-CD (cng v i m t vi bi n th ) do anh Larry Nguy n, m t Vi t ki u M duy tr. L a ch n th hai l s d ng cc b n phn ph i h tr ti ng Vi t t t nh Debian, Ubuntu v Mandriva, openSuSE cng ang d n d n h tr ti ng Vi t (http://vi.opensuse.org). L a ch n th hai ny c u tin v:
chng c h tr ti ng Vi t v cng ngy cng hon thi n chng c trnh ci t t t, h tr nhi u ph n c ng khc nhau c th ci t thm cc ph n m m khc m t cch d dng ph n l n chng trnh c bin d ch s n cho m i yu c u c a ng i dng nh ng b n phn ph i ny c m t nhm cc nh pht tri n duy tr, c p nh t th ng xuyn thng th ng l theo m t l ch nh s n. Ngoi ra cn m b o l b n s nh n c phin b n m i c a n trong tng lai. Khng s tr ng h p em con b ch .

k t thc cu chuy n v l a ch n b n phn ph i Linux c n ni thm l g n y bc Nguy n i Qu (http://vnoss.org) cho ra i m t b n phn ph i m i h ng v ng i dng Vi t Nam FCxVnOSS. B n phn ph i ny d a trn n n t ng c a FC c ng thm giao di n ti ng Vi t v m t s ng d ng mang tnh Vi t Nam nh chng trnh g ti ng Vi t, t i n ti ng Vi t,. . . C n ni vi l i v nh s phin b n. C n phn bi t s phin b n c a b n phn ph i v s phin b n c a nhn. Khi ni n phin b n c a Linux th ng c l phin b n nhn (v m t h i u hnh l Linux ch khi n s d ng nhn Linux). V Linus Torvalds ti p t c i u hnh vi c pht tri n nhn, nn phin b n c a nhn tng ln theo th t , ch khng phn nhnh v nhn ln gi ng nh tr ng h p b n phn ph i. Phin b n nhn Linux th ng c k hi u b ng ba s 9 , phn cch nhau b i d u ch m. V d , b n phn ph i openSuSE Linux 10.1 c d a trn nhn phin b n 2.6.16.13, t c l Linux phin b n 2.6.16.13. Phin b n nhn v i s th hai
Ng i d ch: i u ny ch ng v i cc phin b n nhn tr c 2.6. T 2.6 tr i Linus v cc nh pht tri n khc th nghi m dng b n s .
9

1.3 Yu c u i v i my tnh

11

l (v d , 2.5.0) th ng khng c s d ng t o cc b n phn ph i, v l phin b n th nghi m (ch dnh cho pht tri n). Chng c dnh cho nh ng ng i tnh nguy n c mong mu n th nghi m tm ra cc l i. T t nhin phin b n nh v y c th lm vi c, nhng khng b n v ng. Phin b n v i s th hai ch n (v d 2.6.16.13) c coi l lm vi c n nh. T t nhin l b n c th ci t b t k phin b n no, nhng i v i ng i dng m i th nn ch n phin b n nhn v i s th hai trong phin b n l ch n. N u ci t m t b n phn ph i y th ng nhin l a ch n nhn c cc nh pht tri n lm gim b n c, nhng c n bi t cch nh s phin b n n u khi no b n mu n c p nh t nhn Linux c a mnh.

1.3

Yu c u i v i my tnh

Ti c u ni r ng c nh ng phin b n Linux c bi t, lm vi c th m ch trn b x l 8086 v i 512Kbyte b nh , cn phin b n c bi t c th ch y t m t ho c hai a m m khng c n a c ng th ti g p. V th n u b n c m t ci my tnh c, trn khng th ch y n i Windows, th c th s d ng n h c Linux v r t c th s ng c nhin v kh nng c a HH ny. Nhng trong cu n sch ny chng ta s khng xem xt nh ng tr ng h p c bi t nh v y. V HH Linux s d ng ch b o v c a b vi x l, nn ci t HH ny c n t nh t l m t my tnh c b x l 386. Theo cc ngu n thng tin khc nhau th t t c cc bi n th u dng t t: SX, DX v.v. . . Xin ng lo l ng, nh ng my tnh s n xu t g n y p ng c ton b nh ng yu c u a ra v s a ra d i y. Yu c u i v i ph n c ng c a h th ng mu n ci t Linux cn c xc nh b i l a ch n ph n m m c a ng i dng (v t c l s ph thu c vo phin b n c a cc ph n m m v t nhi u vo b n phn ph i). B ng 1.1 d i y s a ra m t vi con s ch v i m c ch gip b n c lm quen, nh ng con s ny l khng chnh xc10 nhng khng khc bi t nhi u gi a cc b n Linux khc nhau. B ng 1.1: Yu c u i v i ph n c ng Mong mu n c a ng i dng Yu c u, MB B nh a c ng Yu c u nh nh t: ch lm vi c trong giao di n vn 8 200 b n v i dng l nh c a shell, c m t s ng d ng ng i dng nh vim, emacs,. . . Dng c giao di n ho X Window cng v i m t 32 400 s trnh qu n l c a s nh nh nh icewm, fluxbox, windowmaker. Dng mi tr ng lm vi c ho KDE. 128 1000 Ch y cc ng d ng c n nhi u b nh (nh GIMP, cc 256 1500 ng d ng n m trong KOffice, OpenOffice.org). Nh v y Linux c m t u i m l n l kh nng lm vi c th m ch trn
Ng i d ch: b n g c a ra m t b n qu c, ti xin a ra m t b n m i d a trn c s c a openSuSE 10.1.
10

12

HH Linux: l ch s v cc b n phn ph i

nh ng my r t c, m tr c y ch c th dng MS DOS (t t nhin l trong tr ng h p ny chng ta ch thu c ch dng l nh, nhng i u ny khng ngn c n vi c dng cc my tnh c lm vi c c l i v d lm router11 ). b t u h c Linux th ch c n c m t my tnh v i b x l 486, 16MB b nh v c ng kho ng 300MB. T t nhin i v i dung l ng b nh cng nh c u hnh my ni chung th my cng m nh, cng nhi u b nh , c ng cng r ng th cng t t. Khng c g l th a thi. Ng i d ch: k t thc xin a ra y tr ng h p c u hnh my c a ti: b x l 686, b nh 256Mb (+256Mb swap), 10GB c ng dnh cho ci t Linux, ph n cn l i dnh cho d li u. Ti hi n s d ng openSuSE Linux 10.1 v i mi tr ng lm vi c KDE. C th lm vi c ng th i nhi u ng d ng yu c u: OpenOffice.org, KBabel, Kile (dng vi t nh ng dng ny), StarDict (chng trnh t i n), Konqueror, GIMP. N u my tnh c a b n c th lm vi c v i cc h i u hnh Windows 2000 v Windows XP th vi c ch y Linux trn n s khng c g kh khn.

1.4

L y Linux

u?12

V trong ph n cu i c a chng th nh t chng ta s tr l i ng n g n cho cu h i L y Linux u?. Nh ni trn, Linux cng v i m t s l ng kh ng l cc chng trnh ng d ng c phn ph i g n nh mi n ph. C ngha l ng i dng khng c nh thay i chng trnh ho c mua bn nh ng chng trnh ny, th c ton quy n sao chp ton b b n phn ph i Linux ho c m t ph n b t k c a n ch ng i quen, ho c t i xu ng t Internet ho c mua a CD (DVD) Linux ch nh ng ng i bn hng u trn h ph m khng s b truy c u v vi ph m b n quy n (cc chng trnh c b n quy n thng m i th ng dng t s ng gi a ng i dng v nh phn ph i) c a cc nh (cng ty) pht tri n. Trong s ba phng n k trn th i v i ng i dng Linux Vi t Nam phng n mua CD, DVD l t t nh t. C n ni thm l nh ng a ghi v a h th ng c l i v c th gy m t d li u ho c lm h ng ph n c ng. T t hn h t l nn mua a c a m t cng ty my tnh ho c qua m t c a hng trn m ng. Khi cn c kh nng l a ch n v c b o m l s i c a x u. T t nhin l chnh l nh gi thnh a ph i khng qu cao, gi thnh bn Linux bao nhiu l quy n c a ng i bn (ngoi ra gi thnh cao cn c cc b n phn ph i chuyn nghi p nh Xandros, Novell Desktop,. . . ). Hi n gi trn m ng Vi t Nam xu t hi n m t vi c a hng bn a Linux. a ch c th xin khng a ra y v qu ng co trong th gi i hi n i khng cn l mi n ph. V vi c gi u a ch khng lm nh h ng n nh ng ai c mong mu n mua Linux nghin c u. C n ni ring v h th ng pht a v i b n phn ph i Ubuntu m t cch mi n ph. Ch c n vo a ch http://shipit.ubuntu.com ng k s l ng a b n c n, t t nhin c km theo a ch bu i n, sau m t th i gian kho ng 1 thng
11 12

my gip chuy n h ng cc gi m ng Ph n ny do ng i d ch vi t

1.4 L y Linux

u?

13

1 thng r i b n s nh n c chng. Theo ti ngh y l cch t t nh t n u b n khng c i u ki n mua a.

Chng 2 Ci t HH Linux trn cng my tnh v i Windows


Software is like sex, its good when its free Linus Torvalds.
Thng th ng trn cc a c a b n phn ph i Linux c h ng d n ng n g n cch ci t Linux. Ngoi ra, trn Internet b n c th tm th y r t nhi u cu n sch n v v n ny. V t t c cc b n phn ph i l n (Debian, Slackware, Fedora, Mandrake, ...) u c cu n h ng d n ci t r t chi ti t, cho m i tnh hu ng s d ng. Hy ch i v hy v ng trong tng lai khng xa s c b n d ch Ti ng Vi t c a nh ng cu n sch ny. Chnh v v y trong cu n sch ny, tc gi s khng a ra cc b c c th c a vi c ci t, m xin b n c hy tm cc cu n h ng d n tng ng. Thay vo l nh ng g b n c n bi t v chu n b tr c khi ci t, ng th i, tc gi s i c th v chi ti t vo nh ng g c bi t khi ci t Linux trn my tnh c m t trong cc h i u hnh (HH) Windows cng nh vi c kh i ng nhi u h i u hnh.

V n ch , ph n l n ng i dng Vi t Nam tr c khi b t u h c Linux lm quen v r t c th c kinh nghi m s d ng cc HH dng Windows nh Windows 98, Windows 2000 v Windows XP. V trn th c t th t m th i Linux kh c th l HH u tin m ng i dng lm quen. Nh th , m t cch t nhin, n u ng i dng lm vi c v i HH Windows v quy t nh th nghi m v i Linux, th h khng mu n m t i mi tr ng lm vi c quen thu c c a mnh, cng v i nh ng g t o ra v c u hnh d i d i Windows. R t may l khng nh t thi t ph i nh m t t t c nh ng th . B i v trn m t my tnh c th cng chung s ng ha bnh hai HH v th m ch nhi u hn n a (n u c ch trn a!). Chnh v th , pha d i s ni cch ci t HH Linux trn my tnh ci t m t trong cc h i u hnh c a hng Microsoft.

2.1
T

Chu n b ci t

C th ci t Linux b ng m t trong cc cch sau: a CD-ROM a c ng

T b n sao chp Linux trn

T my ch t p tin c a m ng n i b qua NFS;

2.1 Chu n b ci t
T my tnh khc trong m ng n i b qua SMB; T my tnh

15

xa (v d t Internet) qua giao th c FTP;

T m t my ch WWW qua giao th c HTTP.

Theo ki n c nhn c a tc gi th thu n ti n v c tnh th c t nh t l ci t Linux t CD-ROM, hn n a vi c mua cc a CD by gi khng gy kh khn g. Tr c khi b t u ci t, hy thu th p (hy vi t ln m t t gi y) t t c nh ng thng tin c u hnh c n thi t c a my tnh. N u nh my tnh c a b n t m th i v n cn lm vi c d i HH Windows 95/98/2000/XP, th b n s tm th y r t nhi u thng tin n u nh n chu t ph i vo bi u t ng My Computer, ch n l nh Properties. y b n c th tm th y g n h t t t c thng tin c n thi t. N u nh b n khng th y thng tin no , th c n tm ki m theo cc cch khc, k c vi c m v my v c nh ng dng ch trn thi t b . gip b n c, xin c a ra y danh sch nh ng thng tin c n thu th p. Xin ng l i bi ng v hy c g ng ghi cng nhi u d li u v m t thi t b cng t t (t t c nh ng thng tin c th tm th y), nh ng d li u ny s c n n khi ci t v c u hnh, khi m vi c tm ki m chng s kh khn hn.
BIOS:

nh s n xu t; s hi u phin b n.
Controller a c ng: lo i (IDE hay SCSI) v dung l ng c a a (n u nh b n c dng a IDE, th c n ki m tra xem BIOS c h tr vi c truy c p ch LBA hay khng):

hda (Master trn controller s 1 hay Primary Master); hdb (Slave trn controller s 1 hay Primary Slave); hdc (Master trn controller s 2 hay Secondary Master); hdd (Slave trn controller s 2 hay Secondary Slave). nh s n xu t v s m u m c a adapter SCSI (n u c).
Dung l ng c a b nh (tnh b ng Kilobyte CD-ROM:

Giao di n (IDE, SCSI, hay giao di n khc); i v i cc a CD-ROM khng ph i IDE, cng nh SCSI - nh s n xu t v s m u m.
Chu t:

lo i chu t (serial, PS/2, hay bus mouse); giao th c (Microsoft, Logitech, MouseMan, v.v. . . );

16 s nt;

Ci t HH Linux trn cng my tnh v i Windows

i v i chu t c m vo c ng n i ti p th c n s th t c a c ng .
C c mn hnh

nh s n xu t; s m u m (hay chipset s d ng) dung l ng b nh ;


Mn hnh

nh s n xu t s m u m; cc gi tr gi i h n (min, max) c a t n s lm m i theo chi u d c v theo chi u ngang (nh ng gi tr ny b n c ch c th tm th y trong ti li u i km v i mn hnh, Windows khng hi n th nh ng gi tr ny, v chng r t quan tr ng trong khi c u hnh giao di n h a).
N u nh b n c mu n k t n i m ng (m UNIX ni chung l HH dnh cho m ng), th hy ghi l i nh ng d li u sau:

nh s n xu t v s m u m c c m ng; a ch IP c a mnh; tn c a my tnh trong m ng; m t n m ng con (subnet mask); a ch IP c a gateway; a ch IP c a cc my ch tn mi n (DNS server); a ch IP c a my ch WINS(Windows Internet Name Service); tn mi n c a cng ty b n c.
Lo i v nh s n xu t c c m thanh v game controller (n u nh c)

2.2

Phng xa v nh ng l i khuyn

Tr c khi ci t HH Linux sau Windows, r t nn th c hi n vi thao tc phng xa (phng chy hn ch a chy). V r t c th b n c s ph i phn vng l i a, thay i b n ghi kh i ng (Boot Record) v lm vi c v i cc t p tin kh i ng cng nh cc t p tin c u hnh. Cc thao tc ny khng ph i lc no cng em l i em l i m t k t qu theo mu n, v trong tr ng h p x u c th my tnh c a b n c s khng kh i ng n a. C bi t cch thot ra kh i tnh hu ng ny v ph c h i d li u c n thi t khng cn l m t cu h i. Nhng ri vo tnh hu ng nh v y h t s c d dng nh t l v i ng i dng l n u tin ci t Linux. Chnh v v y, u tin, c n t o m t a m m kh i ng hay m t a m m gip ph c h i h th ng (n u b n c cn cha t o). Th hai, c n ghi l i nh ng d li u c gi tr (backup). V th ba, chu n b cc t p tin (a m m, CD) ci t

2.2 Phng xa v nh ng l i khuyn

17

cho h th ng c. M t l i khuyn quan tr ng khc: n u c g x y ra khng theo mu n th khng nn hoang mang. Xin chia s m t kinh nghi m bu n: khi l n u tin tc gi ci Linux trn my tnh c Windows NT, v k t qu l my tnh khng th kh i ng c. Khng hi u h t v n tc gi ngh l khng cn cch g khc ngoi nh d ng l i a v ci t l i t u. By gi th tc gi hi u l c th ph c h i l i n u nh khng quy t nh qu v i vng. V v y c th ni r ng Werner Almesberger ng, khi trong h ng d n s d ng LILO c a ra nh ng l i khuyn sau cho ng i dng khi ri vo tr ng h p kh khn nh v y:

Khng ho ng h t. N u nh c g khng lm vi c, hy th m i cch tm ra nguyn nhn, ki m tra l i nhi u l n thao tc c a mnh. Ch sau khi m i th c hi n cc b c s a l i.

Hy c ti li u. c bi t trong cc tr ng h p, khi h th ng lm nh ng g b n c khng mong i.

Xin thm m t l i khuyn ph bi n sau: * Hy xem cc t p tin log, t c l cc t p tin ghi l i s ki n c a h th ng (c n tm chng trong th m c /var/log). Nh ni trn, qu trnh ci t HH Linux ni ring khng ph i l ti c a cu n sch. Ng i dng c n tm cc cu n h ng d n tng ng. Tuy nhin, tc gi cng mu n a ra vi l i khuyn gip ng i dng a ra quy t nh trong khi ci t. Th nh t, ng v i vng v hy ch c nh ng thng bo s hi n th trn mn hnh, v hy suy ngh k khi ch n cu tr l i. minh ch ng cho l i khuyn ny xin c k l i tr ng h p khi tc gi ci Red Hat 7.1, v t ng nh n ln nt Next, v cho r ng phng n theo m c nh l . K t qu l tc gi khng th truy c p c n my ny qua cc giao th c m ng (telnet, ftp, NFS, Samba), m c d c u hnh giao di n m ng cho my. Nguyn nhn l trong phng n theo m c nh th t ng l a c ci t, v t ng l a ng h t cc truy c p t m ng. m truy c p ny, th trong qu trnh ci t c n ch r cc d ch v c m . Nhng chng ta qu v i vng! Th hai, tc gi khuyn khng nn ng v i vi c t ng kh i ng vo giao di n h a. V cu i cng ng i dng khng kh khn g khi g cu l nh startx, cn vi c c u hnh giao di n h a (n u c g lm vi c khng ng) v i ng i dng m i r t kh thnh cng. Sau khi lm xong cc cng vi c phng xa, c n quy t nh s t ch c kh i ng nhi u HH nh th no, chu n b cc a (phn vng) ci t, t c l c n chia a thnh s phn vng c n thi t. Nhng tr c khi chuy n sang cc b c c th chu n b a, xin c ni qua m t cht v c u trc c a a v qu trnh kh i ng HH. N u ai khng kin nh n c ph n l thuy t ny, th c th b qua chng v chuy n th ng n v n ch n chng trnh kh i ng.

18

Ci t HH Linux trn cng my tnh v i Windows

2.3
2.3.1

Phn vng trn a v qu trnh kh i ng


Th no l c u trc hnh h c c a a

Nh b n c bi t, a c ng g m vi a c ph l p t tnh, n m trn cng m t tr c v quay v i v n t c l n. c/Ghi d li u c th c hi n b i cc u c n m gi a cc a ny, di chuy n t tm a ra ra ngoi c a a. Vng trn u c v ra trn cc a khi quay quanh chng g i l rnh (track), cn t p h p cc rnh n m ch ng ln nhau g i l cylinder. M i rnh l i chia thnh cc sector, v c th ghi vo m i sector 512 byte thng tin. V th c i m c a m t a th ng l t p h p ba s: s cylinder/s rnh trong cylinder/s sector trn rnh hay cn vi t t t l C/H/S (ba ch ci u tin c a cc thu t ng Ti ng Anh tng ng: Cyliner/Head/Sector). Ba s ny g i l c u trc hnh h c c a a. a v i c u trc hnh h c C/H/S c dung l ng C*H*S*512 byte. a c ng l cc thi t b kh i, t l c v ghi thng tin theo cc kh i, v kch th c nh nh t c a kh i b ng m t sector (512 byte). c th ghi thng tin ln a, c n t u a ng v tr, t c l ch cho controller bi t c n ghi thng tin ny vo sector no. Sector c nh a ch theo s th t cylinder, s th t u c (hay rnh) v s th t sector trn rnh.

2.3.2

Phn vng v b ng phn vng c a a

Trong cc h th ng Intel a th ng c chia thnh cc phn vng. R t c th nguyn nhn c a vi c phn vng l nguyn nhn l ch s : cc phin b n MS-DOS u tin khng th s d ng c cc a l n, m dung l ng a l i pht tri n nhanh hn kh nng c a DOS. Khi ngh ra vi c chia a thnh cc phn vng. lm c i u ny, trong sector s 0 c a a (sector s 0 c a rnh u tin trong cylinder s 0) ghi nh b ng chia a thnh cc phn vng (partition table). M i phn vng c dng nh m t a v t l ring r . M t tr ng h p ni ring l trong cc phn vng khc nhau c th ci t cc h i u hnh khc nhau. B ng phn vng ch a 4 b n ghi 16 byte cho 4 phn vng chnh. M i b n ghi c c u trc nh sau:
struct partition { char active; /* char begin[3]; /* char type; /* char end[3]; /* int start; /* int length; /* }; 0x80: phn vng kch ho t, 0: khng kch ho t */ CHS sector u tin, 24 bit lo i phn vng (v d , 83 -- LINUX_NATIVE) */ CHS sector cu i cng, 24 bit */ s c a sector u tin (32-bit, tnh t 0) */ s sector c trong phn vng (32 bit) */

B ng phn vng a th ng c t o b i chng trnh fdisk. Trn HH Linux ngoi chng trnh fdisk truy n th ng (tuy v y r t khc so v i chng trnh fdisk trong MS-DOS v Windows), cn c hai chng trnh lm vi c v i phn vng a: cfdisk v sfdisk. Chng trnh cfdisk, gi ng nh fdisk ch dnh lm vi c v i b ng phn vng a: n khng quan tm ch n thng tin c trn a. Ch khc bi t v i fdisk giao di n thu n ti n: ch d n s d ng

2.3 Phn vng trn a v qu trnh kh i ng

19

l nh v h th ng trnh n (th c n). Chng trnh sfdisk c vi kh nng cao hn, v d , cho php thao tc trn cc phn vng c c a a. DOS s d ng tr ng begin v end c a b ng phn vng v Interrupt 13 c a BIOS (Int 13h) truy c p t i a, v th khng th s d ng a c dung l ng l n hn 8,4 Gbyte, ngay c v i cc BIOS m i (v v n ny s ni n sau), cn phn vng th khng th l n hn 2,1 Gbyte (nhng y l do h n ch c a h th ng t p tin FAT16). Linux th ch s d ng tr ng start v length c a b ng phn vng a v h tr cc phn vng ch a n 232 sector, t c l dung l ng c th t 2 Tbyte V trong b ng chia a ch c 4 dng cho cc phn vng, s phn vng chnh trn a ngay t u d h n ch : khng th l n hn 4. Khi m 4 phn vng tr thnh t, th ng i ta sng ch ra phn vng lgc. M t trong s cc phn vng chnh tr thnh m r ng (lo i phn vng - 5 hay F hay 85 trong h c s m i su). V trong phn vng m r ng ng i ta t o ra cc phn vng lgc. Phn vng m r ng khng c s d ng tr c ti p m ch dng ghi cc phn vng lgc. Sector u tin c a phn vng m r ng ghi nh b ng phn vng v i b n u vo: m t dng cho phn vng lgc, m t cho phn vng m r ng khc, cn hai ci cn l i khng c s d ng. M i phn vng m r ng c m t b ng chia c a mnh, trong b ng ny, cng gi ng nh trong phn vng m r ng chnh, ch s d ng c hai dng a ra m t phn vng lgc v m t phn vng m r ng. Nh v y, thu c m t chu i cc m t xch t b ng phn vng, m t xch u tin m t ba phn vng chnh, v m i m t xch ti p theo m t phn vng lgc v v tr c a b ng ti p theo. Chng trnh sfdisk trn Linux cho th y ton b chu i ny:
[root]# sfdisk -l -x /dev/hda Disk /dev/hda: 784 cylinders, 255 heads, 63 sectors/track Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0 Device /dev/hda1 /dev/hda2 /dev/hda3 /dev/hda4 /dev/hda5 /dev/hda6 Boot * Start 0+ 190 0 0 190+ 381 190 190 381+ 381 381 381 End 189 783 380 783 189 189 783 380 380 380 #cyls 190594 0 0 191403 0 0 4030 0 0 #blocks 1526143+ 4771305 0 0 1534176 3237097+ 0 0 3237066 0 0 0 Id 6 5 0 0 6 5 0 0 7 0 0 0 System FAT16 Extended Empty Empty FAT16 Extended Empty Empty HPFS/NTFS Empty Empty Empty

S phn vng lgc theo nguyn t c khng h n ch , v m i phn vng lgc c th ch a b ng phn vng v cc phn vng lgc c a mnh. Tuy nhin trn th c th v n c nh ng h n ch . V d , Linux khng th lm vi c v i hn 15 phn vng trn cc a SCSI v hn 63 phn vng trn a IDE. Phn vng m r ng trn m t a v t l, hay trong m t phn vng m r ng ch a n (c th g i l m ) ch c th lm m t: khng m t chng trnh phn

20

Ci t HH Linux trn cng my tnh v i Windows

chia a no trong s c (fdisk v tng t ) c th t o thm m t phn vng m r ng th hai. a trn Linux ni ring ( a v t l) c truy c p qua tn c a thi t b : /dev/hda, /dev/hdb, /dev/sda, v.v. . . Cc phn vng chnh c thm s 14 trong tn thi t b : /dev/hda1, /dev/hda2, /dev/hda3, cn phn vng lgc th c cc tn: /dev/hda5, /dev/hda6, /dev/hda7 . . . (b t u t s 5). T nh ng g c p n trn c th suy ra t i sao l i c th b qua cc tn nh /dev/hda3 hay /dev/hda4 (n gi n l phn vng chnh th ba v th t khng c t o ra) v ngay sau /dev/hda2 b n c th y /dev/hda5 (phn vng lgc trong phn vng m r ng /dev/hda2), v sau th vi c nh s l i theo th t thng th ng. Trong Windows cc phn vng lgc nh n c tn (ch ci), b t u t ch ci cu i dng dnh cho phn vng chnh. V d n u m t a c ng c hai phn vng chnh (C: v D:) v m t phn vng m r ng, trong phn vng m r ng t o ra hai phn vng lgc, th nh ng phn vng lgc ny s c t tn E: v F:. Xin ni thm, trong Windows NT v 2000/XP c th thay i tn c a cc phn vng a.

2.3.3

Qu trnh kh i ng cc HH c a cng ty Microsoft

D h i u hnh c l g, th c th b t u i u khi n my tnh, c n n p HH vo b nh . V th hy xem xt qua qu trnh kh i ng c a cc HH khc nhau. Chng ta ch quan tm n vi c kh i ng t a c ng, nn s khng xem xt n vi c kh i ng t a m m, CD-ROM v qua m ng. Hy b t u t MS-DOS v MS Windows c (xin ng qun r ng, vi c pht tri n v hon thi n my tnh c nhn song song v i s pht tri n c a HH c a Microsoft v nh ng quy t nh s d ng trong cc HH ny c nh h ng m nh n quy t nh c a cc nh pht tri n thi t b ). Nh b n c bi t, khi b t my tnh u tin s ch y chng trnh POST (Power On Self Test). Chng trnh xc nh dung l ng b nh , th nghi m b nh , v xc nh cc thnh ph n khc (bn phm, c ng. . . ), kh i ng cc th adaptor. Trn mn hnh th ng xu t hi n cc thng bo v dung l ng b nh , v vi c th nghi m b nh , danh sch cc thi t b nh n ra ( a c ng v m m, b x l, c ng COM v v.v. . . ). Sau khi hon thnh vi c th nghi m POST g i Int 19h. Cng vi c c a Int 19h l tm thi t b kh i ng. Vi c tm ki m th c hi n theo th t xc nh trong Setup BIOS v theo cch thm d sector s 0 c a cc thi t b tng ng. N u a c th kh i ng, th trong sector s 0 c a a c b n ghi kh i ng chnh Master Boot Record (MBR). Hai byte cu i cng c a MBR s mu nhi m, l d u hi u cho bi t sector c MBR, v theo a c th kh i ng. Ngoi s mu nhi m MBR cn ch a b ng phn vng a ni trn, v m t chng trnh nh trnh kh i ng chnh, kch th c ch c 446 (0x1BE) byte. B ng 2.1 cho th y c u trc c a sector kh i ng chnh sau khi ci t Windows. MS-DOS, Windows95 v NT ghi nh DOS MBR trong khi ci t. Ngoi ra cng c th t o MBR c a MS v i cu l nh DOS sau: fdisk /mbr. Xin tr l i v i qu trnh kh i ng. Int 19h c a BIOS n p trnh kh i ng

2.3 Phn vng trn a v qu trnh kh i ng

21

B ng 2.1: C u trc c a sector kh i ng chnh D ch chuy n N i dung 0x000 M c a trnh kh i ng chnh 0x1BE B ng phn vng a 0x1FE S mu nhi m (0xAA55) chnh vo b nh my tnh v chuy n quy n i u khi n cho chng trnh ny. Nhng chng trnh b nh ny khng kh nng kh i ng HH; t t c nh ng g m n c th lm l n p vo b nh chng trnh m nh hn trnh kh i ng th hai. lm c i u ny, n tm trong b ng phn vng kch ho t v c vo b nh trnh kh i ng th hai, b t u t sector lgc u tin c a phn vng kch ho t. Hy ch n c m t b t u t . V trnh kh i ng th hai trn cc h th ng khc nhau c di khc nhau. Trong phn vng c nh d ng d i h th ng t p tin FAT, trnh kh i ng th hai chi m m t sector (512 byte). Trong phn vng nh d ng d i h th ng t p tin NTFS, trnh kh i ng th hai chi m vi sector. Trnh kh i ng th hai n p l p chng trnh u tin, c n thi t cho vi c kh i ng h i u hnh. Trong tr ng h p MS DOS chng trnh kh i ng ng n p IO.SYS theo a ch 700h, sau MSDOS.SYS v chuy n quy n i u khi n cho SYSINIT c a mun IO.SYS. N u v l do no khng tm th y trn a phn vng kch ho t, th qu trnh kh i ng s ti p t c v i vi c x l Int 18h. Tr ng h p ny trn th c t r t hi m khi s d ng, nhng kh nng ny c th c ch trong tr ng h p no . Trong khi kh i ng t xa, khi h i u hnh kh i ng t my ch , th Int ny c POST chuy n h ng ln ROM c a c c m ng. i v i cc HH khc c a Microsoft th qu trnh kh i ng di n ra tng t .
Windows95 kh i ng gi ng nh DOS nhng thay th IO.SYS v MSDOS.SYS b i cc t p tin c a mnh. Cc t p tin DOS c gi l i d i cc tn tng ng IO.DOS v MSDOS.DOS. Khi b n c ch n kh i ng DOS, Windows95 s i tn cc t p tin c a mnh v i ph n m r ng w40 v ph c h i tn ban u c a cc t p tin h th ng c a DOS. Qu trnh kh i ng ti p t c v i vi c n p IO.SYS. Nh th , sector kh i ng c a DOS v Windows95 l nh nhau. Windows NT4 s d ng MBR DOS, nhng thay th b n ghi kh i ng c a phn vng kch ho t b ng cch thay th NTLDR vo ch IO.SYS. y l m t chng trnh m ng v c th lm c nhi u th . V d , c th tm t p tin boot.ini v n u nh tham s timeout l n hn 0, th a ra trnh n (th c n) kh i ng.

M i dng c a ph n [operating systems] trong t p tin boot.ini xc nh m t phng n (m t HH) kh i ng v c vi t theo m u sau: a_ch _trnh_kh i_ ng_th _hai=tn_g i_c a_phng_n a ch c a trnh kh i ng th hai c th l m t phn vng c th no c a a cng nh t p tin kh i ng. D i y l m t v d t p tin boot.ini:

22

Ci t HH Linux trn cng my tnh v i Windows

[operating systems] multi(0)disk(0)rdisk(0)partition(3)\WINNT="Windows NT Workstation 4" C:\="Microsoft Windows" C:\BOOTSECT.LNX="Linux"

N u ng i dng ch n NT, th s kh i ng theo a ch phn vng c ch trn dng u tin. Trn dng tng ng v i phng n Microsoft Windows, ch a ra C:\, v tn c a t p tin kh i ng c l y theo m c nh: bootsect.dos. T p tin c n p vo b nh v qu trnh kh i ng c ti p t c gi ng nh khi b n ghi kh i ng c n p b i m chng trnh t MBR. i v i vi c kh i ng cc h th ng khc, c th s d ng cch . Ch c n thm vo boot.ini cc dng ch a lin k t n t p tin kh i ng khc. Khi ch n cc dng ny s kh i ng HH tng ng. Trong v d trn Linux cng c kh i ng theo cc ny. Trong t p tin C:\BOOTSECT.LNX c n ghi n i dung c a b n ghi kh i ng, t o b i Linux (ni ng hn LILO, trnh kh i ng tiu chu n c a Linux).

2.3.4

V n v i cc a l n

Trn MS-DOS v cc phin b n u tin c a Windows truy c p t i a (trong c c b c kh i ng u tin c a HH) c t ch c qua Int 13 (Int 13h) c a BIOS. Khi ny s d ng s nh a ch sector trn a trn c s C/H/S (xem trn). Chnh xc hn:
AH ch n thao tc; CH 8 bit nh hn c a s cylinder; CL 7-6 bit tng ng bit l n c a s cylinder, 5-0 tng ng s sector; DH s c a u c; DL s c a a(80h hay 81h).

(C n lu r ng vi c nh s cylinder v t l v rnh th ng b t u t 0, cn sector trn rnh nh s b t u t 1). Tuy nhin trn th c t s u c khng qu 16, cn s sector trn rnh khng qu 63, v d c dng 10 bit ch ra cylinder, BIOS v n khng th lm vi c v i a dung l ng l n hn 1024*63*16*512 = 528 Mbyte. v t qua h n ch ny, ng i ta p d ng nhi u cch lu c khc nhau. V d , Extended CHS (ECHS) hay Large disk support (i khi cn g i l Large) s d ng ba bit cha dng n c a s th t u c tng s cylinder. Cch ny cho pehsp s d ng c u trc hnh h c gi m o c a a v i 1024 cylinder, 128 u c v 63 sector/rnh. Bi n i Extended CHS thnh a ch CHS th c (c th ch a n 8192 cylinder) c BIOS th c hi n. Cch ny cho php lm vi c v i a c dung l ng n 8192*16*63*512 = 4 227 858 432 byte hay 4,2 Gbyte. Nhng cc nh pht tri n cng ngy cng tng m t ghi c a a, s a v s rnh, v cn pht minh ra cc phng php khc tng dung l ng a. V d , s sector trn rnh khng cn c nh m tr thnh khc nhau trn cc rnh

2.4 L a ch n trnh kh i ng

23

khc nhau (trn cc rnh n m g n ra ngoi c a a, di hn, s sector c tng ln). K t qu l b ba s C/H/S khng cn ph n nh ng c u trc hnh h c c a a, v cc phin b n BIOS c khng th h tr truy c p t i ton b khng gian a. Khi ng i ta ngh ra phng php khc lm vi c v i cc a ln qua Int 13h - nh a ch cc kh i theo ng th ng (Linear Block Addressing hay LBA). Khng i su vo chi ti t, c th ni r ng t t c sector trn a c nh s m t cch tu n t , b t u t sector u tin trn rnh s 0 c a cylinder s 0. Thay vo ch a ch CHS m i sector nh n c m t a ch lgc s th t c a sector trong t ng s t t c sector. Vi c nh s sector lgc b t u t 0, trong sector s 0 ch a b n ghi kh i ng chnh (MBR). Trong Setup BIOS h tr bi n i s th t theo ng th ng thnh a ch CHS c d ng H tr LBA. Nh v y, trong cc phin b n BIOS m i th ng c l a ch n v i ba phng n: Large, LBA, v Normal (phng n cu i cng c ngha l khng th c hi n bi n i a ch ). Tuy nhin trong ch LBA vi c s d ng a v t l v n c th c hi n qua Int 13h, m Int 13h v n s d ng b 3D (C,H,S). V nguyn nhn ny xu t hi n h n ch ln dung l ng c a a: BIOS, v theo , MS-DOS v cc phin b n Windows u tin khng th nh a ch cc a c dung l ng l n hn 8,4 Gbyte. C n ch r ng h n ch ni trn ch p d ng v i cc a c giao di n IDE. Trong cc controller c a a SCSI, s c a sector c chuy n vo cc l nh SCSI, v sau t a tm ra v tr c n thi t, v th h n ch ln dung l ng a khng xu t hi n. M t l n n a mu n nh c l i r ng, t t c nh ng h n ch ni trn ch c ngha trong giai o n kh i ng HH. B i v Linux v cc phin b n Windows m i nh t khi lm vi c v i a khng cn s d ng Int 13 c a BIOS, m s d ng driver ring c a mnh. Nhng tr c khi c th s d ng driver c a mnh, h th ng ph i c n p. V th trong giai o n kh i ng u tin b t k h th ng no cng c n s d ng BIOS. i u ny h n ch vi c t nhi u h th ng ra ngoi vng 8 Gbyte a u tin: chng khng th kh i ng t , m c d sau khi kh i ng th c th lm vi c v i cc a c dung l ng l n hn nhi u. c th hi u cch thot kh i nh ng h n ch ny, chng ta c n m t cht ki n th c v qu trnh kh i ng c a HH Linux.

2.4
2.4.1

L a ch n trnh kh i ng
Trnh kh i ng GRUB1

GRUB (GRand Unified Bootloader) trnh kh i ng h t s c m nh c kh nng kh i ng r t nhi u HH mi n ph cng nh HH thng m i. GRUB c Erich Boleyn vi t vo nm 1995 kh i ng h th ng GNU Mach, v khng th s d ng nh ng trnh kh i ng khc. Sau vo nm 1999 Gordon Matzigkeit v Yoshinori K. Okuji chuy n GRUB thnh m t gi chng trnh GNU, a chng trnh ny thnh m t ph n m m m ngu n m . M c d m i ra i v s phin b n
1

Ph n v GRUB ny do ng i d ch vi t.

24

Ci t HH Linux trn cng my tnh v i Windows

cn r t nh 2 nhng y l s l a ch n t t i v i ph n l n ng i dng my tnh c nhn. N u khng c nhu c u c bi t no th b n nn ch n trnh kh i ng ny. Cc b n phn ph i Linux l n (Debian, SuSE, Fedora,. . . ) cng chuy n sang s d ng GRUB lm l a ch n theo m c nh. M t trong nh ng tnh nng quan tr ng c a GRUB l tnh m m d o. GRUB c th hi u cc h th ng t p tin v nh d ng th c thi c a nhn, v th b n c th n p HH theo cch a thch. Ngoi ra, n u khng mu n dng giao di n dng l nh, th b n c th ci t v s d ng giao di n th c n v thay i giao di n th c n theo mong mu n c a mnh. M t i m m nh khc c a GRUB l grub shell c th ch y khi b t u kh i ng ho c sau khi kh i ng xong h th ng. B ng grub shell b n c th gi l p (emulate) trnh kh i ng ny v ci t GRUB. By gi chng ta xem xt ng n g n v tn g i thi t b dng trong GRUB, v c php thi t b trong trnh kh i ng ny c khc m t cht so v i nh ng g m b n th y trn nh ng h th ng c a mnh. B n c n hi u c php ny bi t cch ch ra m t a hay phn vng no . V d m t c php l: (fd0) Tr c tin c n ni GRUB yu c u t t c cc tn thi t b ph i t trong ngo c ( v ). Ph n fd c ngha l a m m. S 0 ch ra s th t c a , m b t u t 0. V d 2: (hd0,1) y hd c ngha l c ng. S nguyn 0 u tin cho bi t s th t c a , t c l c ng th nh t. S nguyn th hai (1) cho bi t s th t c a phn vng (chng ta khng xem xt cc HH khc Linux). Xin nh c l i m t l n n a l cc s m u b t u t s khng 0. Trong tr ng h p ny y l phn vng th hai c a c ng th nh t. GRUB s d ng m t phn vng c a a ch khng ph i ton b a. V d 3: (hd0,4) y l phn vng m r ng (extended partition) th nh t c a a c ng th nh t. Ch r ng cc phn vng m r ng c m b t u t 4 khng ph thu c vo s phn vng chnh (primary partition) th c t c trn a. C n ch thm l GRUB khng phn bi t IDE v SCSI. N m s th t b t u t 0 khng ph thu c vo d ng a. Lm sao ch ra m t t p tin? Hy xem v d sau y: (hd0,0)/vmlinuz Dng ny ch ra t p tin vmlinuz n m trn phn vng u tin c a c ng u tin. H t s c n gi n! Thng tin trong ph n ny s gip b n hi u c c u hnh c a GRUB s ni n s p t i y.
2

hy so snh s phin b n c a GRUB v LILO

2.4 L a ch n trnh kh i ng

25

2.4.2

Trnh kh i ng LILO

Trnh kh i ng LILO c vi t b i Werner Almesberber. LILO c th kh i ng nhn Linux t a m m, a c ng, v cng c th kh i ng cc h i u hnh khc: PC/MS-DOS, DR DOS, OS/2, Windows 95/98, Windows NT/2000/XP, 386BSD, SCO UNIX, Unixware v.v. . . LILO cho php ch n n 16 h i u hnh khc nhau kh i ng. LILO khng ph i l chng trnh n l m l m t b g m nhi u chng trnh: trnh kh i ng, cc chng trnh s d ng ci t v c u hnh trnh kh i ng, v cc t p tin ph c v :
chng trnh /sbin/lilo, ch y d i Linux, ph c v ghi t t c thng tin c n thi t trong giai o n kh i ng vo cc ch tng ng. C n ch y chng trnh ny sau m i l n c thay i trong nhn hay trong t p tin c u hnh LILO; cc t p tin ph c v , c n cho LILO trong th i gian kh i ng. Nh ng t p tin ny th ng n m trong th m c /boot. Quan tr ng nh t trong s chng l b n thn trnh kh i ng (xem pha d i) v t p tin map (/boot/map); trong t p tin ny c ch ra v tr c a nhn. M t t p tin quan tr ng khc t p tin c u hnh LILO; th ng c tn /etc/lilo.conf; trnh kh i ng y l ph n LILO c n p vo b nh u tin qua Int c a BIOS; trnh kh i ng n p nhn Linux hay sector kh i ng c a h i u hnh khc. Trnh kh i ng g m c hai ph n. Ph n th nh t c ghi vo sector kh i ng v ph c v n p ph n th hai, c kch th c l n hn r t nhi u. C hai ph n th ng c ghi trn a trong t p tin /boot/boot.b.

C n nh r ng, nh d ng c a sector kh i ng t o ra b i LILO khc v i nh d ng MBR c a DOS. V th n u ghi sector kh i ng LILO vo MBR, th cc h i u hnh ci c a Microsoft s ng ng kh i ng (n u nh khng c cc bi n php b sung). Sector kh i ng c a LILO c th c thi t k s d ng nh sector kh i ng c a phn vng, trong c ch cho b ng phn vng. Sector kh i ng c a LILO trong khi ci t c th t vo nh ng ch sau:
sector kh i ng c a a m m trong nh d ng Linux (/dev/fd0, . . . ); MBR c a a c ng u tin (/dev/hda, /dev/sda, . . . ); sector kh i ng c a phn vng chnh v i h th ng t p tin Linux trn a c ng u tin (/dev/hda1, /dev/hda2, . . . ); sector kh i ng c a phn vng lgc trong phn vng m r ng a c ng u tin (/dev/hda5, . . . ). S th t l ph n l n chng trnh d ng fdisk khng ra kh nng kh i ng kh i ng t phn vng m r ng v t ch i vi c kch ho t phn vng ny. V v y trong thnh ph n LILO c ch a m t chng trnh c bi t (activate) cho php v t qua h n ch ny. Tuy nhin chng trnh fdisk c a b n phn ph i Linux h tr kh nng kch ho t phn vng m r ng. C n s d ng ty ch n -b ho c bi n BOOT.

26

Ci t HH Linux trn cng my tnh v i Windows Sector kh i ng c a LILO khng th t vo cc ch sau:


sector kh i ng c a a m m hay phn vng chnh, v i nh d ng h th ng t p tin khc Linux; trong phn vng swap c a Linux; trn a c ng th hai.

Ngoi ra, c n nh r ng, LILO trong th i gian kh i ng c n nh ng t p tin sau:


/boot/boot.b; /boot/map (t o ra b i l nh /sbin/lilo); t t c phin b n nhn kh i ng (n u b n c ch n phin b n nhn khi kh i ng); sector kh i ng c a cc h i u hnh khc m b n c mu n kh i ng qua LILO; t p tin ch a cc thng bo a ra khi kh i ng (n u c xc nh).

Nh v y, sector kh i ng LILO cng nh nh ng t p tin li t k (trong s c cc t p tin b n c s ci t sau ny) c n n m trong ph m vi 1024 cylinder u tin c a a c ng, b i v chng c n c truy c p qua BIOS. Xem ph n ni v h n ch c a BIOS trn. B t u t phin b n 21, LILO a ra mn hnh trnh n (th c n) cho php ch n h th ng kh i ng (tr c y c n nh n phm Tab g i trnh n ny).

2.4.3

Cc trnh kh i ng khc

Ngoi GRUB v LILO kh i ng Linux c th kh i ng cc trnh kh i ng khc.


N u nh tr c khi ci t Linux c HH Windows NT/2000/XP, th trnh kh i ng b n c c th s d ng l OS Loader c a NT. So snh v i LILO th trnh kh i ng OS Loader c t nh t hai u th . Th nh t, t t c c u hnh c khng b m t (chng ta c th ch n kh i ng Windows hay Linux theo l a ch n), v th hai, c th ci t Linux ln a m LILO khng th kh i ng, v d , a th hai trn controller th hai (Secondary Slave). N u nh tr c khi ci t Linux b n c ch c HH Windows 95 hay Windows 98 v khng c Windows NT/2000 hay XP, th OS Loader khng c ci t. V n u nh v m t l do no b n c khng mu n ci t LILO, th c th s ng chng trnh kh i ng loadlin.exe (th ng i km v i b n phn ph i Linux);

2.4 L a ch n trnh kh i ng

27

Th i gian g n y trong thnh ph n b n phn ph i Linux th ng c chng trnh kh i ng GRUB. Trong thnh ph n OS/2 c a cng ty IBM c chng trnh kh i ng Boot Manager. Trong r t nhi u h ng d n ng i ta khuyn dng chng trnh ny t i ch c kh i ng nhi u HH. Trong cc ngu n thng tin khc nhau cn nh c n chng trnh System Commander; Thm m t trnh kh i ng khc c trong thnh ph n gi PartitionMagic c a cng ty Power Quest. Chng ta s ni v chng trnh ny trong ph n nh ti p theo.

Ngoi ra tc gi cn th y ni n m t lo t cc trnh kh i ng khc (m t s c th tm th y trong th m c /public/ftp/pub/Linux/system/boot/loaders trn trang ftp://metalab.unc.edu/. Nhng v tc gi khng s d ng nh ng chng trnh ny, nn khng th ni c th cch s d ng chng. V t t c nh ng l i khuyn dng sau c a tc gi s d a trn vi c s d ng LILO, NT Loader v loadlin.exe. N u nh c mu n ci t chng trnh kh i ng khc, th b n c c n c h ng d n ci t v s d ng c a n.

2.4.4

Cc phng n kh i ng

Nh v y, theo ki n c a tc gi c cc phng n kh i ng sau:


N u trn my ch c m t h i u hnh Linux duy nh t, hy dng GRUB. N u ci t Windows NT hay Windows 2000/XP, th hy s d ng GRUB. N u c Windows 95 hay Windows 98 trn FAT16, v b n c khng mu n ci t chng trnh kh i ng no khc, th c th s d ng GRUB ho c LILO, ho c u tin ch y DOS v sau kh i ng Linux nh chng trnh loadlin.exe (hay m t chng trnh tng t , c vi chng trnh nh v y, nhng chng ta s khng xt n). N u ci t Windows 95 OSR2 hay Windows 98 trn FAT32, v b n c khng mu n ci t thm chng trnh kh i ng, th c n s d ng loadlin.exe. R t nhi u HOWTO kh ng nh r ng khng c n s ng LILO, n u nh phn vng kch ho t c nh d ng FAT32, m c d tc gi khng r nguyn nhn. Tuy nhin th nghi m kh i ng Linux qua NT Loader, ci t trn phn vng FAT32, c a tc gi k t thc khng thnh cng. V th , trong tr ng h p ny tc gi ph i s d ng chng trnh loadlin.exe. Chng trnh ny hon thnh t t nhi m v , v t o cho tc gi m t n t ng t t, v th tc gi khuyn b n c s d ng loadlin.exe kh i ng Linux.

Trong nh ng ph n ti p theo tc gi s cho bi t cch ci t Linux, s d ng t t c b n phng n kh i ng: qua trnh kh i ng NT Loader, trnh kh i ng GRUB, trnh kh i ng LILO v trnh kh i ng loadlin.exe. Tuy nhin tr c khi ci t trnh kh i ng c n chu n b cc phn vng trn a, hay t nh t l ngh cch t ch c chng.

28

Ci t HH Linux trn cng my tnh v i Windows

2.5
2.5.1

Chu n b cc phn vng trn a


L i khuyn khi t o phn vng

a ra l i khuyn y khng ph i l vi c d dng, v phn vng a ph c thu c r t nhi u vo thch v nhu c u c a ch nhn a. Nhng cng xin th a ra vi ngh sau. Tc gi s t tn a v phn vng theo tiu chu n c a Linux, t c l /dev/hda, /dev/hdb, v.v. . . i v i a v /dev/hda1, /dev/hda2, v.v. . . i v i cc phn vng. Vi c phn chia a thnh cc phn vng l c n thi t, b i v Windows v Linux s d ng cc cch lu tr thng tin trn a v sau c chng t a khc nhau. Chnh v th t t hn h t l dnh cho m i h i u hnh m t (ho c th m ch m t vi nh chng ta s th y d i) phn vng ring. u tin chng ta hy xem xt m t tr ng h p n gi n dung l ng a c a b n c khng v t qu 8,4 Gbyte (ni chnh xc hn s cylinder khng v t qu 1024). Trong tr ng h p ny m i th u n gi n: b n c ch vi c chia a lm sao ch cho h i u hnh s ci t. C th s d ng d li u cho bi t kch th c a nh nh t c n thi t ci t h i u hnh v i c u hnh c b n trong b ng 2.2. B ng 2.2: Nhu c u s d ng khng gian a c a HH Yu c u 100 Mbyte 200 Mbyte 200 Mbyte 700 Mbyte 6.2 (Worksta- 700 Mbyte

H i u hnh Windows 95 Windows 98 Windows NT Windows 2000 Linux Red Hat tion v i KDE)

Tuy nhin xin hy nh r ng, khng nh ng ph i tnh kch th c cc t p tin c a b n thn h i u hnh, m cn ph i tnh c kch th c c a cc chng trnh b n c d tnh ch y. V cn ph i dnh m t ph n d tr khng nh cho cc chng trnh s ci t sau ny (khng th trnh kh i!). Hy tnh r ng, 700 Mbyte dnh cho Linux trong b ng ni trn ch dnh cho cc chng trnh ci t cng v i Linux theo m c nh, trong s c, v d , chng trnh so n th o r t m nh Lyx. i v i Windows cng tng t nh v y. Theo kinh nghi m c a tc gi th lm vi c v i Windows 95/98, Windows NT v Linux cc phn vng v i kch th c 800-1000 Mbyte l (t t nhin, n u b n c khng ci t cc gi chng trnh l n, nh OpenOffice.Org), cn i v i Windows 200 th c n phn vng l n hn. By gi chng ta s xem xt v n chia cc phn vng cho Linux. y khng th ch chia m t phn vng. Th nh t, c n chia m t phn vng swap ring bi t cho Linux. Khi xc nh dung l ng c a phn vng swap Linux c n tnh n nh ng y u t sau:
Trong Linux, RAM v khng gian swap h p l i t o thnh b nh o chung. V d , n u b n c c 256 MByte RAM v 128 Mbyte khng gian swap, th s c 384 Mbyte b nh o.

2.5 Chu n b cc phn vng trn a

29

lm vi c v i Linux c n t nh t 16 Mbyte b nh o, v th n u b n c ch c 4 Mbyte RAM, th c n phn vng swap khng nh hn 12 Mbyte. Kch th c c a phn vng swap c th l n bao nhiu ty thch, tuy nhin khng c n c u hnh qu nhi u n u khng c n thi t. Thng th ng ch c n dng swap khi my t b nh RAM ho c ch y my ch v i nhi u ng d ng n ng. Trong t t c m i tr ng h p t t nh t trnh dng swap v n ch m hn RAM nhi u.3 Khi tnh kch th c c a khng gian swapping, c n nh r ng kch th c qu l n c th l v ch. Trn my tnh v i 16 Mbyte RAM khi ci t Linux v i c u hnh chu n v cc chng trnh ng d ng chu n th 48 Mbyte khng gian swapping l . Cn n u ci t Linux v i c u hnh nh nh t, th khng c n n khng gian swap. T t nhin, kch th c chnh xc c a khng gian swap ph thu c l n vo chng trnh s c ci t.

Ni chung, ch nn suy ngh v v n dung l ng c a phn vng swap khi c m t a nh v t b nh RAM. Trong tr ng h p ng c l i hy phn chia t ng s dung l ng c a b nh o (g m RAM v phn vng swap) khng nh hn 128 Mbyte. Cn n u nh b n c c 128 Mbyte RAM hay nhi u hn, th phn vng ny c th khng c n thi t. T t c cc ph n cn l i c a Linux v cc chng trnh h tr theo nguyn t c c th t vo m t phn vng. Tuy nhin, vi c t h th ng t p tin Linux ln vi phn vng ring r l c ngha. V d , c nh chuyn gia khuyn nn dnh cho h th ng t p tin Linux ba phn vng (n u tnh c swap th thnh 4). Phn vng th nh t (theo ki n c nhn tc gi , 1 Gbyte l ) s ch a h th ng t p tin g c (/). Phn vng th hai dnh cho th m c /home. Cn phn vng th ba c g n vo th m c /usr. Vi c phn chia nh v y d a trn nh ng l l sau. D HH Linux c n nh v ng tin c y n u, th th nh tho ng cng c n ci t l i. V d , b n c mu n c p nh t phin b n m i c a b n phn ph i, ho c v t kinh nghi m s d ng nn lm h ng t p tin h th ng quan tr ng, ho c n gi n l mu n ci t m t b n phn ph i khc. N u nh t t c c ci t vo m t phn vng, th khi ci t l i nh ng d li u lm ra v ghi nh trong th m c c nhn s b m t (n u khng c b n sao chp). Ngoi ra, s b m t c nh ng chng trnh ci t m ngu n, hay ci b ng phng php khc. Ph n l n nh ng gi chng trnh ny c ci vo th m c /usr. N u dnh cho th m c ny m t phn vng ring v khi ci t khng nh d ng l i chng, th nh ng chng trnh ni trn s c gi l i v c th s lm vi c (r t c th c n vi c u hnh nh ) sau khi ci t l i h th ng. Trong tiu chu n v h th ng t p tin c a Linux FHS (c th xin xem chng ??) cng c l i khuyn v vi c t th m c /usr ln m t phn vng ring. Theo tc gi th y, nh ng ki n ni trn b n c t tm ra phng n phn chia a c a mnh, trong tr ng h p ch c m t a nh . By gi chng ta xem xt tr ng h p a v i s cylinder l n hn 1024. T nh ng g ni n ph n tr c (h n ch dung l ng a c ng), c n t chng trnh kh i ng trong ph m vi 1024 cylinder u tin. Nhn ti n, NT Loader khng nh t thi t ph i t vo phn vng NTFS, cng nh khng nh t
3

Xin cm n bc Tony L v m c ny

30

Ci t HH Linux trn cng my tnh v i Windows

thi t ph i t vo phn vng ch a cc t p tin khc c a HH. Nh ni trn, i v i Linux c th t th m c g c cng v i th m c con /boot vo cc cylinder th p (trong vng 1024 u tin), cn cc th m c khc ch no ty thch. Nh v y trong tr ng h p ny, nh ng ngh c a tc gi cho ra b ng t ng k t sau:
ph n kh i ng c a t t c cc h th ng Microsoft t vo phn vng chnh u tin c a a, v i nh d ng FAT16 (DOS); phn vng chnh ti p theo dnh cho th m c g c (/), kch th c kho ng 1 Gbyte; phn vng chnh th ba dnh cho swap c a Linux (l i khuyn v kch th c c a phn vng ny xem trn); ph n cn l i c a a t thnh phn vng m r ng; trong phn vng m r ng t o cc phn vng lgc cho m i HH s ci t: Windows 98, Windows NT/2000/XP, v ng th i cho cc h th ng t p tin /home v /usr c a HH Linux (trong /home s t cc t p tin ring c a ng i dng, cn trong /usr chng trnh s ci t).

T t nhin, n u nh b n c ch c Windows 95 v i FAT16, th c th Windows trn phn vng u tin. N u nh trn my ci t Windows NT hay c FAT32, th m t phn vng FAT16 cng khng th a. Th nh t, k c trong tr ng h p h th ng c v n , b n c c th kh i ng t a m m DOS (t m th i khi cha lm quen v i Linux m t cch t ng t n) v th y c r ng a c ng lm vi c bnh th ng. Th hai, h th ng t p tin FAT16 c h tr trn m i HH, trong c Linux, v th phn vng ny c th ph c v cho vi c trao i t p tin gi a cc h th ng. Nhng khng nn phn vng ny l n, v FAT16 s d ng khng gian a r t khng h p l. Chnh v v y hy dnh cho phn vng ny kho ng 256 ho c 512 Mbyte. Nh ng l i khuyn ny a ra v i gi thi t r ng, b n c ch c m t a c ng. N u nh b n c c 2, th v n s d ng c nh ng l i khuyn ny, ch c i u phn vng swap t t hn t trn a khc v i a dnh cho Linux. Ng i ta ni r ng nh v y tng t c lm vi c trong Linux (cng d hi u v u c t ph i ch y hn).

2.5.2

Chng trnh phn chia a

Sau khi hon thnh k t ho ch chia a, c n l a ch n cng c a k ho ch ny thnh hi n th c. Chng trnh phn chia a c bi t n nhi u nh t l fdisk; trn m i h i u hnh u c phin b n ring c a chng trnh ny. V khng c n g hn ngoi chng trnh ny, n u nh phn chia a tr ng, khng ch a b t k d li u no. Nhng chng ta ang xem xt tr ng h p c HH no trn a v c n phn chia a m khng lm m t thng tin. fdisk khng thch h p cho nh ng m c ch nh v y. Trong thnh ph n cc b n phn ph i Red Hat v BlackCat (r t c th trong cc b n phn ph i khc) c chng trnh fips, ph c v cho phn chia a.

2.6 Windows NT v Linux: kh i ng qua NT OS Loader

31

Tuy nhin, theo ki n c a ng i dng th khng nn s d ng chng trnh ny. V th l i khuyn c a tc gi v i b n c, nh ng ng i dng Linux m i n u nh mu n phn chia l i a m khng lm m t thng tin, th hy tm chng trnh Partition Magic c a cng ty Power Quest (http://www.powerquest.com) v s d ng chng trnh ny. Th nh t, chng trnh ny cho php phn chia l i a m khng lm m t thng tin (t c l, t t c nh ng ci t v c u hnh tr c s c ghi l i). Khi ny, khng ch t o c phn vng m i t ch tr ng trn a, m cn c th di chuy n cc phn vng c theo mu n. Th hai, chng trnh ny (th m ch trong phin b n dnh cho DOS) cung c p m t giao di n h a d s d ng c h tr chu t, v m i thao tc cng nh thay i u th y r rng. i u ny r t quan tr ng v i ng i dng m i. Khi t o phn vng c n khng cho ranh gi i gi a cc phn vng c t l n nhau. Tc gi cho r ng, nh ng thng tin a b n c l p k ho ch v th c hi n vi c phn chia a thnh cc phn vng. V th ti p theo chng ta s xem xt cc phng n ci t hai HH trn m t my tnh.

2.6

Windows NT v Linux: kh i ng qua NT OS Loader

Trong ph n ny, khi ni v Windows NT xin ng m hi u c Windows 2000 v NT, v quan h c a chng i v i vi c ci t Linux hon ton gi ng nhau. Chng ta gi thi t l Windows NT c ci vo phn vng /dev/hda2 (n u nh b n c nh , /dev/hda1 s dnh cho phn vng FAT16). N u HH Windows NT c ci t, ngha l trnh kh i ng OS Loader cng c ci t. V nh th c th s d ng chng trnh ny kh i ng Linux. Tc gi hy v ng r ng b n c sao lu nh ng thng tin c gi tr c a mnh. Cc b c ci t c th m t nh sau: 1. N u nh b n c cha ci t Linux bao gi , th tr c khi b t u c n chu n b a m m kh i ng v ph c h i Windows NT. t o a m m kh i ng ch c n nh d ng l i a m m, r i sao chp ln cc t p tin ntldr, ntdetect.com v boot.ini t th m c g c c a a kh i ng NT. Chng trnh t o a ph c h i Windows 2000/XP c th ch y t trnh n h th ng (l nh Backup trong Start/Program/Accessories). 2. Dng chng trnh Partition Magic l y m t ph n a tr ng v t t o ra phn vng v i d ng ext2(3) (h th ng t p tin Linux) v phn vng swap. Cch tnh kch th c c a chng ni trn. 3. Ci t Linux theo ch d n c a b n phn ph i. Trong khi ci t c n ch n nh ng i m sau:
th nh t, trong qu trnh ci t nh t nh ph i t o ra cc a m m kh i ng Linux. T c l c n tr l i Yes, make a BOOT DISK (hay tng t th , ty thu c vo b n phn ph i) khi c h i c t o a m m kh i ng hay khng. a m m ny s c dng n sau. Ngoi ra, c th s d ng a m m ny kh i ng Linux. y cng

32

Ci t HH Linux trn cng my tnh v i Windows l m t phng n kh i ng, v hn n a khc v i a m m kh i ng DOS, sau khi kh i ng h th ng khng cn yu c u a m m n a, c th b n ra kh i , s d ng c cc a m m khc. Tuy nhin cch kh i ng ny cng c i u ti n, v th khng nn s d ng th ng xuyn. Ch s d ng trong tr ng h p b t c d. a m m ny cn c n thi t cho c u hnh kh i ng nhi u HH.
th hai, khi ci t Linux c n ci LILO vo sector u tin c a phn vng dnh cho th m c g c (/) c a Linux, ch khng ph i vo sector kh i ng chnh c a a (MBR). Chng ta gi thi t Linux c ci vo phn vng /dev/hda3. Nh v y LILO s c ci vo sector u tin c a /dev/hda3

Theo nguyn t c, n u nh b n c ci LILO vo MBR, th khng ph i m i th h ng h t. K t qu cu i cng (kh i ng qua NT Loader) v n c th t c nhng c n b ra m t cht cng s c. V n ch , nh d ng MBR t o b i LILO v Windows (DOS) khc nhau. V th n u b n c ci LILO vo MBR, th c u ph c h i l i MBR c a Windows. Tc gi cng s ni cch ph c h i, nhng t t hn h t l b n c ci LILO ngay l p t c vo sector u tin c a phn vng ci Linux. 4. Sau khi ci t xong, kh i ng Linux b ng a m m (n u nh b n c ci LILO vo phn vng c a Linux v khng ng g n MBR, th y l kh nng duy nh t). 5. Sao chp sector kh i ng c a Linux vo m t t p tin; t p tin ny s c n trnh kh i ng Windows NT/2000 c th kh i ng Linux. Vi c sao chp th c hi n nh sau: u tin g n m t a m m tr ng (m i mua th cng t t), [root]# mount -t vfat /dev/fd0 /mnt/floppy chuy n vo th m c /mnt/floppy [root]# cd /mnt/floppy v th c hi n cu l nh
[root]# dd if=/dev/hda3 of=/mnt/floppy/bootsect.lnx bs=512 count=1

ghi n i dung sector kh i ng c a a /dev/hda3 vo t p tin /mnt/floppy/bootsect.lnx4 6. Ti p theo c n kh i ng l i vo Windows NT, b ng cu l nh: [root]# shutdown -h now
Ghi ch: n u a C: (/dev/hda1) c nh d ng FAT, th c th t o t p tin bootsect.lnx trong th m c g c c a a C:. Tc gi khng bi t (cha th ) c th kh i ng khng c n a m m khng, n u phn vng chnh u tin c nh d ng NTFS. Tuy nhin y cng khng c v n g, ch c n sao chp sector kh i ng qua a m m nh ang trnh by. T m th i nhn Linux cn cha h tr t t vi c ghi ln phn vng NTFS.
4

2.6 Windows NT v Linux: kh i ng qua NT OS Loader

33

V MBR cha c g thay i, nn Windows NT s kh i ng. Trong NT c n sao chp t p tin bootsect.lnx vo th m c g c c a a C:, hay chnh xc hn l vo th m c g c c a phn vng m t kh i ng Windows NT. y c th l phn vng FAT16 hay phn vng NTFS. c i m nh n ra phn vng ny l hai t p tin ntldr v boot.init ch a trong (nh ng t p tin ny c th n!). T p tin bootsect.lnx c th t thu c tnh ch c (read-only). 7. Sau tm t p tin boot.ini v thm vo dng sau: C:\bootsect.lnx="LINUX" (t t nhin, trong d u ngo c kp b n c c th t tn b t k.) 8. Vi c cn l i l kh i ng l i my tnh m t l n n a, v trong trnh n ch n h i u hnh s c LINUX. N u ch n LINUX, th LILO s c ch y v sau n (LILO) s n p Linux. Cn by gi chng ta s xem xt tr ng h p b n c (do v tnh hay c ) ci t LILO vo b n ghi kh i ng chnh c a a (Master Boot Record, MBR). Trong tr ng h p ny b n ghi kh i ng Windows NT (hay 2000) s b xa, v vi c kh i ng Windows NT (b c th 6 trn) l khng th . N u nh b n c v n cn mu n s d ng trnh kh i ng OS Loader c a NT, ch khng mu n dng LILO, th nh ng b c trn c thay i m t cht: thay cho b c th 6 c n lm cc thao tc sau. 1. Kh i ng Windows NT t a m m kh i ng ( t o tr c khi ci t Linux, n u khng c th b n c c n tm m t my khc ang ch y Windows NT r i t o). Trong trnh n (th c n) c a trnh kh i ng c n ch n l nh Recover, r i ch n ch Command mode. Sau ng nh p vo ti kho n nh qu n tr (administrator). 2. Ph c h i l i b n ghi kh i ng chnh c a a. S d ng cu l nh fdisk /mbr. Tc gi dng l nh ny thnh cng, m c d trong m t s bi bo ni cch ph c h i MBR nh v y khng ph i lc no cng lm vi c. Trong Windows 2000 c cc l nh chuyn dng fixboot v fixmbr (ch y t console ph c h i h th ng). Ch y hai l nh ny theo th t ch ra. Sau Windows 2000 s kh i ng bnh th ng. 3. Kh i ng l i my tnh t a m m kh i ng Linux v ng nh p vo h th ng v i quy n ng i dng root. 4. Nh p l nh cd /etc v m t p tin lilo.conf. u t p tin ny c lin k t n phn vng kh i ng theo m c nh, v d , /dev/hda. 5. Dng b t k trnh so n th o no, v d , CoolEdit c a Midnight Commander, thay th gi tr ny thnh phn vng ci Linux ln (chnh xc hn l thnh phn vng c g n nh g c (/) c a Linux). N u Linux c ci vo phn vng /dev/hda3, th c n ghi ci , t c l thay th /dev/hda thnh /dev/hda3. N u nh b n c khng nh ci Linux vo u, th hy ch y cu l nh mount v tm k t qu tng t nh sau5 :
5

c ngha l tm phn vng g n vo th m c g c /, trong v d ny l /dev/hda3

34

Ci t HH Linux trn cng my tnh v i Windows /dev/hda3 on / type reiserfs (rw) 6. Ch y l nh /sbin/lilo ghi trnh kh i ng vo phn vng /dev/hda3 (c n ch y l nh lilo khng c tham s ). S c c nh bo v vi c phn vng khng ph i l u tin trn a. y chnh l i u chng ta c n, b n ghi kh i ng c a Windows c gi nguyn v n. 7. Th c hi n cc b c 6-8 nh trn.

D dng on ra r ng, quy trnh ph c t p v i hai l n kh i ng l i ch chuy n sector kh i ng Linux t MBR vo sector u tin c a phn vng dnh cho Linux, v ph c h i MBR c a Windows. Qu trnh ci t Linux k t thc y. B n c c th ch n HH s kh i ng v i u khi n my tnh c a mnh.

2.7

S d ng trnh kh i ng GRUB6

Nh ni trong ph n l a ch n chng trnh kh i ng, n u trn my ci Windows 98 v i h th ng t p tin FAT16, th l a ch n t t hn cho trnh kh i ng l chng trnh c trong thnh ph n c a m i b n phn ph i HH Linux GRUB (GRand Unified Bootloader).

2.7.1

Ci t GRUB

Cch d nh t c th ci t trnh kh i ng GRUB l ch n dng trnh kh i ng ny trong qu trnh ci t h th ng Linux c a b n. Trong nh ng phin b n m i c a cc b n phn ph i Linux m i khi ny c th ch n c u hnh cho nh ng h i u hnh c trn my. M t s b n phn ph i, v d Xandros cn t ng tm th y nh ng h i u hnh c ny v thm chng vo t p tin c u hnh c a GRUB. Nh sau khi ci t b n c th ch n kh i ng Linux ho c h i u hnh (th ng l Windows) c. M c d vi c t ng c u hnh ny h t s c thu n ti n, nhng s c ch n u b n bi t c cch c u hnh Linux x l nh ng l i c th x y ra v hn th n a bi t cch c u hnh kh i ng h i u hnh mong mu n khi khng c t ng c u hnh. Chng ta s xem xt c u hnh GRUB trong ph n ti p theo.

2.7.2

C u hnh GRUB

GRUB c m t giao di n trnh n t ng i dng c th ch n m t m c (m t h i u hnh) b ng cc phm mi tn r i nh n <Enter> kh i ng. dng c trnh n , b n c n m t t p tin c u hnh menu.lst n m trong th m c kh i ng /boot. Thng th ng t p tin ny c t o ra khi ci t. Hy xem v d m t t p tin nh v y d i y:
# GRUB example configuration file on the teppis openSUSE system. # Modified by YaST2. Last modification on Sun Apr 2 22:22:11 MSD 2006
6

Ph n v GRUB ny do ng i d ch vi t

2.7 S d ng trnh kh i ng GRUB

35

color white/blue black/light-gray default 0 timeout 8 ###Dont change this comment - YaST2 identifier: Original name:linux### title SUSE LINUX 9.3 kernel (hd0,0)/vmlinuz root=/dev/hda5 vga=0x31a selinux=0 splash=silent resume=/dev/hda7 showopts initrd (hd0,0)/initrd ###Dont change this comment - YaST2 identifier: Original name: windows### title Windows map (hd0) (hd1) map (hd1) (hd0) rootnoverify (hd1,0) makeactive chainloader +1 ###Dont change this comment - YaST2 identifier: Original name: xen### title XEN kernel (hd0,0)/xen.gz dom0_mem=196608 module (hd0,0)/vmlinuz-xen root=/dev/hda5 vga=0x31a selinux=0 splash=silent resume=/dev/hda7 showopts module (hd0,0)/initrd-xen ###Dont change this comment - YaST2 identifier: Original name: floppy### title Floppy root (fd0) chainloader +1

Tc gi ngh r ng c n gi i thch c th hn m t cht v t p tin ny. C th b n on ra nh ng dng b t u b ng k t # l nh ng dng ch thch. B n c th ghi b t k cu g mong mu n vo dng ny v khng nh h ng g n cng vi c c a chng trnh. Ngoi dng ch thch GRUB cng b qua nh ng dng tr ng. u t p tin l nh ng thi t l p chung (global options), nh ng ty ch n c lin quan n giao di n c a trnh n. Chng c t tr c cc m c b t u b ng title. Ty ch n default ch ra h i u hnh kh i ng theo m c nh (n u khng ng vo bn phm khi kh i ng). S 0 ch ra l h i u hnh th nh t trong danh sch (t c l SuSE Linux 9.3). Hy nh l i, trong GRUB vi c nh s c b t u t 0 ch khng ph i 1. Ty ch n timeout cho bi t GRUB s kh i ng m t cch t ng sau kho ng th i gian ch ra (tnh theo giy) n u khng nh n phm no. Trong tr ng h p ny l sau 8 giy. Ty ch n color dng ch n mu cho trnh n (hy th n!). Sau nh ng thi t l p chung l ph n thi t l p cho t ng h i u hnh c th . M i ph n u b t u b ng l nh title theo sau l tn s hi n th trong trnh n. V v l nh ny hi n th tham s m t cch nguyn v n, nn b n c th nh p b t k th g vo pha sau. Nh b n th y trong t p tin c u hnh trn, ph n u tin l kh i ng SUSE LINUX 9.3, ph n th hai Windows, v.v. . . Khc v i tr ng h p LILO, sau khi thay i c u GRUB khng c n ph i ch y b t k l nh no nh ng thay i ny c hi u l c. Chng s c c p nh t m t

36

Ci t HH Linux trn cng my tnh v i Windows

cch t ng trong l n kh i ng sau. y l m t i m m nh c a GRUB so v i LILO. T t nhin y khng ph i l t t c nh ng kh nng s d ng c a GRUB, nhng i v i ng i dng m i th nh v y l . Sau m t th i gian lm vi c v i Linux v c kinh nghi m b n s bi t cch tm thm thng tin v trnh kh i ng tuy t v i ny.

2.8
2.8.1

S d ng trnh kh i ng LILO
Ci t v c u hnh LILO

Gi ng nh tr ng h p Windows NT, chng ta s a ra cc b c c n th c hi n c th kh i ng nhi u HH. 1. Tr c khi ci t Linux hy chu n b a m m kh i ng Windows. 2. Dng chng trnh Partition Magic l y ph n khng gian a cn tr ng v trn t o ra m t phn vng ext2(3) (h th ng t p tin Linux) v m t phn vng swap. Cch chia a ni trn. N u dung l ng a c ng v t qu 8,4 Gbyte th hy c k cc ph n 2.3 v 2.5. 3. Ci t Linux theo ch d n i km v i b n phn ph i. C n nh r ng, n u b n mu n s d ng trnh kh i ng LILO, th trong qu trnh ci d t Linux c n ch n phng n ci LILO vo b n ghi kh i ng chnh (Master Boot Record). T o cc a m m kh i ng theo nguyn t c l khng b t bu c, nhng tc gi khuyn b n c nn lm.7 4. B c ti p theo c n c u hnh LILO c th kh i ng cc HH theo l a ch n. LILO c c u hnh b ng t p tin /etc/lilo.conf v cu l nh /sbin/lilo. Cu l nh ny dng ci t (hay ci t l i) LILO. Chng ta xem xt m t v d nh c a t p tin c u hnh LILO. Trong v d ny chng ta s coi nh thi t b /dev/hda1 l phn vng v i DOS/Windows, cn phn vng /dev/hda2 ch a Linux. Trong tr ng h p /etc/lilo.conf c d ng g n nh sau: boot = /dev/hda2 compact delay = 50 # message = /boot/bootmesg.txt root = current image = /boot/vmlinuz-2.4.22 label = linux
Ghi ch. Trnh kh i ng LILO khng b t bu c ph i ci t vo b n ghi kh i ng chnh c a a, LILO c th n m b n ghi kh i ng c a phn vng chnh c kch ho t v ch a th m c g c c a Linux ho c th m ch trn phn vng lgc trong phn vng m r ng. Trong tr ng h p MBR c n ph i c kh nng n p LILO, v d khi MBR l trnh kh i ng c a MS-DOS hay Windows. Tuy nhin tc gi cha nhn th y s c n thi t c a ng d ng ny (n u ch n LILO lm trnh kh i ng chnh th hy s d ng cho tr n b ), v th chng ta s khng xem xt n.
7

2.8 S d ng trnh kh i ng LILO read-only other = /dev/hda1 table = /dev/hda label = dos Vi l i gi i thch cho v d : Dng boot cho bi t thi t b kh i ng.

37

Dng compact b t ch nn t p tin map t p tin ch a c tnh c a nhn c kh i ng; tnh nng (nn) ny tng t c c a kh i ng u. Cu l nh message dng a ra thng bo theo mu n khi kh i ng. B t u t dng image l cc ph n nh c a t p tin c u hnh, m i ph n tng ng v i m t h i u hnh s kh i ng theo l a ch n c a ng i dng. Trong m i ph n nh v y c m t dng label. Trn dng ny ghi tn c n nh p vo d u nh c LILO hay tn s hi n th trong trnh n c a LILO c th ch n HH mu n kh i ng. N u nh tn khng c nh p sau kho ng th i gian ch trn dng delay (tnh theo ph n m i giy c n nhn v i 0,1 giy), th s kh i ng HH theo m c nh. Trong v d ny, s kh i ng Linux theo m c nh, v ph n c u hnh tng ng v i Linux n m u tin trong t p tin. C th ch ra h i u hnh c kh i ng theo m c nh khi thm m t dng c d ng default=dos, t c l s d ng tn t trn dng label. Dng table=<device> cho bi t tn thi t b ch a b ng phn chia a. LILO s khng a thng tin v phn chia a cho h i u hnh c kh i ng n u bi n ny khng c a ra. (M t s h i u hnh c cng c khc xc nh l c kh i ng t phn vng no.) ng qun r ng, c n th c hi n cu l nh /sbin/lilo, sau khi thay i ch d n n b ng phn chia a, t c l thay i bi n table. N u t dng (g i l ph n nh th t t hn) other = /dev/hda1 trong t p tin /etc/lilo.conf, th trong th m c g c c a a /dev/hda1 (a C: trong h th ng thu t ng Microsoft) c n c trnh kh i ng ph (khng ph i l chnh). Trn m t my c a tc gi n m trnh kh i ng NT Loader (v Windows NT c ci t tr c Linux), v LILO kh i ng thnh cng Windows NT. Ch c n t th i gian ch kh i ng trong t p tin boot.ini b ng khng, khng th y trnh n kh i ng c a NT Loader. Tuy nhin, n u v m t l do no b n mu n th y trnh n ny th gi tr timeout trong t p tin boot.ini c n t khc khng (th i gian ch c tnh theo giy). i u ny c th c n thi t khi mu n kh i ng c Windows 98 t trnh n c a NT Loader (trong tr ng h p ny s c 3 HH: Linux, Windows NT v Windows 98, trong trnh n c a LILO n u ch n dos th s hi n ra trnh n c a NT Loader r i t ch n m t trong hai HH Windows kh i ng). N u b n c mu n kh i ng Windows tr c ti p t ph n nh sau vo /etc/lilo.conf: other = /boot/bootsect.dos label = win trong bootsect.dos l y t th m c g c c a a ch a NT Loader. LILO, th hy thm

38

Ci t HH Linux trn cng my tnh v i Windows 5. Sau khi s a xong t p tin /etc/lilo.conf theo mu n, c n ch y cu l nh /sbin/lilo nh ng thay i c hi u l c. Cu l nh ny (trong ti li u h ng d n g i l map-installer) ci t trnh kh i ng ph , m s c kch ho t trong l n kh i ng ti p theo. Tr c khi ch y /sbin/lilo thay i b c kh i ng, hy th c hi n cu l nh ny v i tham s -t. Khi c tham s ny s th c hi n t t c cc th t c ci t trnh kh i ng, tr vi c thay i t p tin map, b n ghi sector kh i ng, v b ng phn chia a, t c l ch ch y th c u hnh m i. N u cho thm ty ch n -v, th b n c s c bi t thm thng tin chi ti t v nh ng g l nh /sbin/lilo s th c hi n. Khi /sbin/lilo ghi n i dung m i ln sector kh i d ng, th n i dung c c a sector ny s t ng c ghi nh vo m t t p tin. Theo m c nh l t p tin /boot/boot.NNNN, trong NNNN tng ng v i s c a thi t b , v d , 0300 tng ng /dev/hda, 0800 /dev/sda, v.v. . . N u t p tin ny c trn a, th n khng b ghi ln. Tuy nhin c th t m t tn khc ghi sector kh i ng, khng nh t thi t ph i dng /boot/boot.NNNN. T p tin /boot/boot.NNNN c th s d ng ph c h i n i dung c c a sector kh i ng, n u khng cn cch ph c h i no khc n gi n hn. Cu l nh th c hi n c d ng: [root:~#] dd if=/boot/boot.0300 of=/dev/hda bs=446 count=1 hay [root:~#] dd if=/boot/boot.0800 of=/dev/hda bs=446 count=1 (bs=446 v ch ph c h i chng trnh kh i ng, v khng ng g n b ng phn chia a). Cng c th ph c h i MBR c khi c n thi t b ng cu l nh /sbin/lilo v i ty ch n -u. Nhng c n bi t r ng, cu l nh ny ch lm vi c ng v i i u ki n l th m c LILO (t c l /boot) khng thay i k t khi ci t. MBR c a MS-DOS c th c ph c h i b ng cch kh i ng vo DOS t a m m (CD) r i ch y cu l nh fdisk /mbr (xem trn). L nh ny ch thay i m chng trnh kh i ng n m trong MBR, m khng thay i b ng phn chia a. 6. Sau khi ci t l i trnh kh i ng c n kh i ng l i my tnh v th cc phng n kh i ng khc nhau ki m tra.

k t thc ph n ni v LILO ny chng ta s xem xt vi kh khn c th xu t hi n khi s d ng LILO, v cch kh c ph c (n u c th ). Khi LILO c n p, n a ra mn hnh t LILO. Khi ny m i ch ci bi u th s k t thc m t hnh ng no hay k t thc m t b c n p LILO. N u kh i ng b b ngng gi a ch ng, th qua s ch ci a ra c th nh n nh v nguyn nhn xu t hi n v n .
Khng ch ci no hi n ra khng c ph n no c a LILO c n p. Ho c LILO khng c ci t, ho c phn vng ch a LILO cha c kch ho t.

2.8 S d ng trnh kh i ng LILO

39

L [m l i] trnh kh i ng chnh c n p v ch y (t c l nh n c quy n i u khi n), nhng n khng th n p trnh kh i ng ph . M l i hai k t cho bi t nguyn nhn c th c a v n (cch gi i m c n tm trong ti li u k thu t c a LILO). Thng th ng th v n n y sinh do a x u (c khuy t t t) hay khng t ng c u trc hnh h c c a a. N u LILO khng d ng l i y, m ti p t c a ra m t chu i v t n cc m l i, th v n th ng d gi i quy t. LI trnh kh i ng chnh n p c trnh kh i ng ph , nhng khng ch y c n. C th l l i a c u trc hnh h c c a a, ho c t p tin boot/boot.b b di chuy n m ng i dng qun khng ch y /sbin/lilo. LIL trnh kh i ng ph c ch y, nhng n khng th n p b ng m t t t p tin map. Nguyn nhn th ng do khuy t t t c a a ho c khng a ng c u trc hnh h c c a a. LIL? trnh kh i ng ph c n p vo a ch khng ng. Thng th ng do l i a ra c u trc hnh h c c a a ho c t p tin /boot/boot.b b di chuy n m ng i dng qun khng ch y /sbin/lilo. LIL- b ng m t trong t p tin map b ph h y. Thng th ng do l i a ra c u trc hnh h c c a a ho c t p tin /boot/boot.b b di chuy n m ng i dng qun khng ch y /sbin/lilo. LILO t t c cc ph n c a LILO c n p thnh cng.

2.8.2

Ci t cc h i u hnh khc sau Linux

Khi ci t MS-DOS v Windows 95/98, trnh kh i ng c a chng (khng ph thu c vo mu n c a b n c) c ghi vo Master Boot Record (MBR), v d u kch ho t trong b ng phn vng s c chuy n sang phn vng MS-DOS (Windows 95/98). M trnh kh i ng MS-DOS v Windows 95/98 ch bi t chuy n quy n i u khi n cho sector u tin c a phn vng kch ho t. Nh th , n u nh b n c u tin ci t Linux, v sau m i ci t Windows 95/98 hay MS-DOS, th Linux s khng th kh i ng. C th ph c h i l i LILO b ng cch ch y l nh /sbin/lilo (n u LILO c ci vo MBR), ho c kch ho t phn vng ch a LILO (n u LILO c ci vo phn vng chnh). Khi c v n sau khi ci t m t h i u hnh khc sau Linux, th ng c th gi i quy t b ng cch kh i ng vo Linux b ng a m m kh i ng, s a l i t p tin c u hnh LILO (thm ph n nh cho HH m i), r i ch y /sbin/lilo.

2.8.3

Chuy n th m c /boot ln phn vng DOS

Nh ng phin b n nhn Linux m i nh t h tr kh nng t cc t p tin c n thi t trn giai o n kh i ng vo h th ng t p tin MS-DOS (hay UMSDOS). V trong ph n l n cc tr ng h p phn vng DOS chi m cc vng a u (khng c h n ch c a BIOS), nn cho php gi i quy t nhi u v n c a a l n, khi m th m c /boot khng th n m trn phn vng dnh cho Linux.

40

Ci t HH Linux trn cng my tnh v i Windows

th c hi n phng n kh i ng ny, c n phn vng DOS ch c/ghi, t o trong m t th m c (v d , /dos/linux), v chuy n t t c cc t p tin t th m c /boot vo ; th m c /boot c chuy n thnh lin k t t ng trng n th m c /dos/linux; v tr m i c a th m c /boot c n ch ra trong t p tin /etc/lilo.conf, v cu i cng ch y l nh /sbin/lilo.

2.9

Kh i ng Linux t MS-DOS b ng loadlin.exe

Khng ch cc t p tin kh i ng v nhn c th n m trong phn vng DOS, m c ti n trnh kh i ng Linux ni chung c th c t ch c t DOS. Kh nng ny th c hi n nh chng trnh c bi t loadlin.exe, do Hans Lermen (lermen@elserv.ffm.fgan.de) vi t. Chng trnh ny th ng c trn cc a c a b n phn ph i.8 Loadlin.exe cung c p cch kh i ng Linux t c ng an ton nh t, khi c phn vng kch ho t l DOS hay Windows. Phng n kh i ng ny c khuyn s d ng cho ng i dng Linux m i. Ph n l n ng i dng m i (v khng ch h ) khng kin nh n c ti li u r t hay nhng r t di (v l i vi t trn ti ng Anh n a) c a LILO. V th h th ng s d ng LILO khng ng cch, v k t qu l khng th kh i ng c b t k h i u hnh no (tc gi cng ri vo tr ng h p nh v y). i v i nh ng ng i dng m i th s thu n ti n hn khi s d ng loadlin.exe kh i ng v b t u tm hi u Linux. Tuy nhin, khng vo hang c p sao b t c c p. Chng trnh loadlin.exe khng yu c u ph i ci t, ch c n t chng trnh t p tin loadlin.exe v nhn ( nh c a nhn) ln m t trong cc a m DOS nh n ra. C th dng chng trnh ny kh i ng Linux t CD ho c t a trong m ng m khng c n s d ng a m m kh i ng. Kh nng ny bi n loadlin.exe thnh m t cng c tuy t v i kh i ng Linux khi c v n v i LILO. Phin b n 1.6 c a loadlin.exe lm vi c v i m i c u hnh DOS v c r t t h n ch . Phin b n ny c th s d ng b nh m r ng; c th n p cc nhn l n (cc bzImage) v cc nh a o (initrd) tr c ti p vo vng b nh n m trn. Vi c s d ng loadlin.exe khng c ngha l Linux lm vi c d i DOS, v chng trnh ny h tr kh i ng lgc c a my tnh, v sau DOS c thay th hon ton b ng Linux. N u nh b n c mu n quay tr l i DOS, th ph i kh i ng l i my tnh, v d , b ng cu l nh reboot. Nh v y, c n lm g c th s d ng chng trnh loadlin.exe.
Trn my tnh c a b n (t t nhin v i b x l 386 ho c cao hn) c n ci t DOS hay WINDOWS 95. C n c nh nn c a nhn Linux (zImage, bzImage)9 . Chng trnh loadlin.exe. C th tm th y trn a phn ph i d ng khng nn hay trong gi LOADLIN16.TGZ. Gi nn ny cn ch a h ng d n
m t s b n phn ph i cn c gi ci t cho chng trnh ny, thng th ng ghi t p tin loadlin.exe vo th m c c a ng i dng root 9 Ghi ch. zImage l nh d ng nh phn c c a nhn, bzImage l nh d ng m i hn (s phin b n nhn l n hn 1.3.73) c kch th c ln t i 1 Mbyte, do , nhn khi gi i nn c kch th c ln t i 2 Mbyte. Ti p theo chng ta s ch ni v cc t p tin zImage, m c d b n c c th thay th zImage thnh bzImage
8

2.9 Kh i ng Linux t MS-DOS b ng loadlin.exe

41

s d ng DOC\MANUAL.TXT, t p tin tham s v d DOC\TEST.PAR, v h ng d n cch a cc tham s DOC\PARAMS.DOC ( ng qun r ng chng l nh ng t p tin DOS). N u b n ch y loadlin.exe khng c tham s C:\LOADLIN> loadlin th s nh n c h ng d n s d ng ng n g n. Thu n ti n hn c h ng d n ny khi ch y chng trnh v i tham s more (gi ng trong Linux): C:\LOADLIN> loadlin | more By gi chng ta c th xem xt cc b c ci t Linux khi s d ng loadlin.exe kh i ng. 1. Chia cc phn vng cho Linux (cch lm xem ph n 2.5) 2. Ci t Linux vo phn vng chia. LILO c n ci t vo sector u tin c a phn vng Linux khng ghi ln MBR v khng b m t kh nng kh i ng vo Windows. 3. Sau khi k t thc ph n ci t hy kh i ng Linux (n u khng c cch no khc, hy s d ng a m m kh i ng). G n phn vng DOS (gi thi t l /dev/hda1, cn phn vng Linux l /dev/hda3): [root]# mount -t vfat /dev/hda1 /mnt/C T o th m c /mnt/C/loadlin v gi i nn t p tin LOADLIN16.TGZ vo . Ngoi ra sao chp t th m c /boot vo th m c c t p tin ch a nh c a nhn Linux. C th tm t p tin ch a nh c a nhn c n thi t nh t p tin /etc/lilo.conf: tm trong t p tin c u hnh dng image=... v b n c s th y tn c n thi t pha bn ph i d u b ng. V d tn c a t p tin ny l vmlinuz-2.4.22. Sao chp t p tin vmlinuz-2.4.22 t /boot vo /mnt/C/loadlin v i tn thnh vmlinuz (vi c i tn l khng nh t thi t, v ch c ngha thu n ti n cho s d ng): [root]# cp /boot/vmlinuz-2.4.22 /mnt/C/loadlin/vmlinuz 4. By gi i kh i ng l i my tnh vo DOS tr c ti p (n u b n c c Windows 95/98 th c n nh n phm <F8> khi kh i ng hi n th trnh n cho php ch n DOS), ho c qua h p tho i l a ch n khi nh n l nh t t my (shutdown) Windows 95/98. Sau khi vo DOS hy chuy n sang th m c C:\LOADLIN: CD \LOADLIN r i th c hi n l nh: C:\LOADLIN> LOADLIN vmlinuz /dev/hda3 ro vga=ask

42

Ci t HH Linux trn cng my tnh v i Windows ho c, n u b n c mu n n p nhn cng v i a RAM:

C:\LOADLIN> LOADLIN vmlinuz /dev/ram rw initrd=diskimage Cn c th ghi t t c cc tham s c a l nh loadlin.exe vo t p tin (v d v i tn params) v g i cu l nh d ng sau: C:\LOADLIN> LOADLIN @params Kh nng ny c bi t c ch khi a nhi u tham s dng l nh v khi di c a dng l nh l n hn 127 k t . M t y t t c cc tham s c a cu l nh loadlin.exe c th tm th y trong t p tin PARAMS.DOC ho c Internet trn trang http://sunsite.unc.edu/mdw/HOWTO/BootPrompt-HOWTO. html v http://rsphy1.anu.edu/~gpg109/BootPrompt-HOWTO.html. By gi b n c c th s d ng cch ny kh i ng Linux. Cng vi c duy nh t cn l i l lm sao khng ph i g l nh loadlin v i t t c cc tham s sau m i l n kh i ng l i. C th vi t thm l nh g i loadlin vo t p tin autoexec.bat ho c t o m t t p tin l nh (v d , linux.bat), v khi ch y t p tin ny, my tnh s chuy n vo ch DOS tr c, sau th ch y Linux. Tc gi cho r ng nh ng thng tin a ra trn t o t p tin bat c n thi t. C n ni thm r ng, khng c kh i ng Linux t giao di n h a DOS/Windows v c n t t m t vi ty ch n trong t p tin n C:\MSDOS.SYS (y l t p tin vn b n thng th ng), b ng cch thm vo hai dng sau (n u cha c): BootGUI=0 Logo=0 Dng u tin t t giao di n h a, v DOS s c kh i ng thay cho Windows 95/98. ( ch y giao di n h a, c n nh p cu l nh C:\> win). Dng Logo=0 t t vi c hi n th bi u t ng Windows (c a s ). V n ch , i v i m t s c c mn hnh Linux s a ra m t mn hnh tr ng r ng sau khi kh i ng, n u nh c hi n th bi u t ng Windows.

Chng 3 Kh i ng Linux l n u
V n s kh i u nan Trung Qu c
Ng i d ch: Sau khi ci t r t c th b n c s khng bi t b c ti p theo ph i lm g. B t my tnh ln, i h th ng kh i ng xong v ... ng i nhn. Ph i lm g c th ti p t c lm vi c v i h th ng Linux? Sau khi lm vi c xong th t t my th no? C nh ng chng trnh no nn bi t? Trong khi lm vi c c v n n y sinh th tm cu tr l i u? Trong chng ny chng ta s tm th y cu tr l i cho nh ng cu h i trn.

3.1

Kh i ng HH Linux

Nh v y l vi c ci t Linux hon thnh1 . N u ng i dng ci t GRUB lm trnh kh i ng, th sau nh ng dng ch BIOS th ng a ra s xu t hi n mn hnh d ng nh trong hnh 3.1. N u khng ch m vo bn phm, th trn mn hnh s xu t hi n r t nhi u thng bo m t m th i chng ta s khng xem xt ngha c a chng2 . Cu i cng xu t hi n mn hnh cho php ng i dng ng nh p vo h th ng. N u b n ch n t ng ch y ch ho th hy nh n <Ctrl>+<Alt>+<F1> th y mn hnh ng nh p nh sau: ThinhQuyen login: Mn hnh ng nh p ny xu t hi n trn my c a tc gi khi kh i ng Debian Linux. T t nhin mn hnh ng nh p c a b n c s khc. N u c kin nh n c h t cu n sch ny, th b n s bi t cch thay i mn hnh ny, v d a ra nh ng cu cho d ng Xin cho! Hm nay l 02 thng 09 nm 2006. Hy nh p vo tn ng i dng v m t kh u. Tuy nhin by gi v n cn s m ni v v n ny. N u kh i ng b ng a m m th qu trnh cng tng t nhng ch m hn m t cht. N u Linux khng ph i l h i u hnh (HH) duy nh t trn my tnh, th trn mn hnh kh i ng GRUB s xu t hi n danh sch cc h i u hnh tm
Ng i d ch: Thng tin trong ph n ny c a b n g c ti ng Nga hi c v trnh kh i ng b n g c s d ng l LILO. B n d ch c p nh t l i v s d ng trnh kh i ng GRUB 2 Trong nh ng b n phn ph i Linux m i, v d SuSE Linux, c s d ng mn hnh flash. Do c th b n c s khng th y nh ng thng bo ny. Trong tr ng h p , hy nh n phm tng ng chuy n v mn hnh kh i ng bnh th ng. Phm ny th ng l <Esc>.
1

44

Kh i ng Linux l n u

Hnh 3.1: Mn hnh kh i ng c a GRUB th y. C th ch n HH mu n kh i ng b ng cc phm <> v <> r i nh n phm <Enter>. N u ch n kh i ng Linux th cu i cng ng i dng ph i th y dng login:, t c l dng m i nh p vo tn ng nh p.

3.2

ng nh p vo h th ng

Nh b n bi t, khi hi n ra dng m i ny th u tin c n nh p vo tn ng i dng, sau nh p vo m t kh u khi c yu c u vo h th ng. N u y l l n ng nh p u tin vo h th ng ngay sau khi ci t, v trong khi ci t b n qun t o thm ng i dng, th hy nh p vo tn ng i dng root (ng i dng cao c p). y l ng i dng duy nh t lun lun c ti kho n c t o ra trong qu trnh ci t. Ng i dng ny l ch s h u c ton quy n i v i h th ng by gi cng nh sau ny, t c l c quy n truy c p khng gi i h n n cc ti nguyn, c th thm, xa nh ng ng i dng khc, d ng h th ng v.v. . . Nh ng thao tc khng c n th n c a ng i dng ny c th d dng d n n nh ng h u qu kh l ng, th m ch lm h ng h th ng. V th th ng ch ng nh p d i tn ng i dng ny khi th c hi n cc cng vi c qu n tr h th ng. Tuy nhin chng ta ang trong tr ng h p ny, v th hy nh p root vo dng login: r i nh n phm <Enter> (<Return>). H th ng s a ra cu h i m t kh u: Password: T t nhin l b n c n nh p vo m t kh u tng ng v i ng i dng a ra, y l m t kh u c a root. M t kh u ny l m t kh u a ra cho ng i dng root trong qu trnh ci t. Sau khi nh p m t kh u cng nh n <Enter>. N u sau khi nh p vo tn ng i dng r i r t lu sau khng vo m t kh u, th h th ng s t ng quay tr l i dng h i tn ng i dng login:. Sau khi nh p

3.2 ng nh p vo h th ng ng m t kh u, b n s th y dng nh sau: [root@ThinhQuyen /root]#

45

Dng ny c g i l d u nh c. Xu t hi n d u nh c c ngha l h th ng s n sng ti p nh n v th c hi n cu l nh c a ng i dng. th i i m ny n c ngha l b n ng nh p vo h th ng m t cch thnh cng. Trong MS-DOS v Windows(TM) mn hnh en v d u nh c h th ng th ng c g i l ch dng l nh. Chng ta s g i ch ny l vn b n phn bi t v i ch ho c a h th ng X Window. Trong v d a ra d u nh c g m tn ng i dng (root), tn h th ng (ThinhQuyen) v th m c hi n th i (/root). Sau ny b n c th thay i d ng c a d u nh c ny. Trong t t c cc v d ti p theo chng ta s s d ng d u nh c ch g m c tn ng i dng. Tr c khi ngh b n c nh p vo cu l nh u tin, c n ni r ng trn b t k h th ng UNIX no ki u ch cng u ng vai tr quan tr ng, t c l c phn bi t ch hoa v ch th ng. V th c n nh p vo t t c cc cu l nh cng nh tham s c a chng nh ch ra trong v d , k c ki u ch . Cu l nh u tin chng ta s nh p vo l useradd. Sau tn c a cu l nh c n kho ng tr ng v sau l tn ng i dng, v d , nhimlui: [root]# useradd nhimlui Ngay sau khi nh n phm <Enter> ch y l nh ny, trn h th ng s bi t r ng ng i dng nhimlui t n t i (chng ta ni, m ti kho n cho ng i dng nhimlui). Tuy nhin v n cha th vo h th ng (th ng ni, ng nh p) d i tn ng i dng ny. h th ng cho php ng i dng m i nhimlui lm vi c, c n ph i t o thm cho ng i dng ny m t kh u b ng cu l nh: [root]# passwd nhimlui S xu t hi n dng: Changing password for nhimlui. New Password: Hy nh p vo m t kh u. Sau khi nh p xong, cng nh n phm <Enter>, h th ng s h i nh p m t kh u m t l n n a ki m tra. Reenter New Password: ng ng c nhin, b n s khng nhn th y m t kh u vo v h th ng s khng hi n th g ra, k c d u sao * nh th ng th y. N u b n nh p ng t t c , th s xu t hi n thng bo thnh cng d ng: Password changed.

46

Kh i ng Linux l n u

v s l i xu t hi n d u nh c c a h th ng. N u nh p vo m t kh u khng t t (m t kh u qu ng n ho c qu n gi n), th s xu t hi n dng c nh bo (d ng Bad password: too short), nhng h th ng v n ti p nh n m t kh u v cho php ng i dng m i ng nh p vo h th ng. Nh v y l b n c lm quen v i hai cu l nh u tin c a h th ng Linux: useradd v passwd. Cu l nh ti p theo m b t k ng i dng Linux no cng c n ph i bi t l cu l nh man. man l h th ng tr gip lun lun i km v i h th ng Linux. C n ph i nh p vo cu l nh ny v i m t tham s tn c a cu l nh khc ho c t kha. V d : [root]# man passwd K t qu l b n s nh n c m t vn b n m t cu l nh tng ng ho c thng tin v ti m t kho a ra. V thng tin th ng khng th n m g n trn m t mn hnh nn khi xem c n s d ng cc phm <PageUp>, <PageDown>, v phm tr ng. Hy nh n phm <Q> b t k th i i m no thot ra kh i mn hnh xem man v quay l i dng nh p l nh. By gi xin b n c hy th xem thng tin v hai cu l nh c p n trn login v passwd. Ch l c th xem thng tin v chnh b n thn cu l nh man. Hy ch y l nh: [root]# man man R t ti c theo nh tc gi bi t th hi n th i cc trang thng tin man cn cha c d ch sang ti ng Vi t. Do b n s nh n c nh ng trang ny b ng ti ng Anh. N u nh b n khng c kh nng c ti ng Anh, th hay kin nh n c cu n sch ny ho c m t cu n sch khc cng ti. B n c cn c th th ch y thm m t vi cu l nh n a v theo di xem h th ng lm g. V d , hy th nh ng cu l nh li t k trong b ng 3.1 (hy nh p chng cng v i nh ng tham s c trong b ng). B ng 3.1: Nh ng cu l nh n gi n c a Linux Cu l nh M t ng n g n whoami Thng bo tn ng nh p c a b n w ho c who Cho bi t nh ng ng i dng no hi n ang lm vi c trn h th ng pwd Cho bi t tn c a th m c hi n th i ls -l Hi n th danh sch t p tin v th m c con c a th m c hi n th i cd tn_th_m c Chuy n th m c hi n th i n tn_th_m c ps ax Hi n th danh sch cc ti n trnh ang ch y Hy xem m t v nh ng cu l nh ny b ng man. Chng ta s khng xem xt chi ti t danh sch t t c nh ng cu l nh c th g p. V th nh t, ng i dng s d n d n lm quen v i chng trong qu trnh c cu n sch ny v th c hnh trn HH Linux c a mnh. Th hai, c th c v nh ng cu l nh chnh trong b t k cu n sch no ni v UNIX.

3.3 Console, terminal o v shell

47

3.3

Console, terminal o v shell

Nh v y l b n c c kinh nghi m lm vi c u tin ch vn b n (hay cn g i l knh giao tc console) c a h th ng Linux. Chng ta s cn g p th ng xuyn nh ng khi ni m trnh l nh terminal v console, do tc gi gi i thch k hn nh ng khi ni m ny. Khi h th ng UNIX u tin m i c t o ra, my tnh cn r t to (mainframe) v ng i dng lm vi c trn nh ng my tnh ny qua m t h th ng nh ng giao di n k ti p nhau dng k t n i cc terminal xa. Terminal thi t b dng giao ti p gi a ng i dng v my tnh, th ng g m mn hnh v bn phm. My tnh c nhn c a b n c l my tnh th h m i, do ch c s khng c terminal xa no k t n i t i, nhng v n c bn phm v mn hnh th c hi n vai tr terminal i v i ng i dng. Ngoi ra thm vo thnh ph n c a terminal by gi cn c chu t. Mainframe c m t terminal c bi t dnh cho nh qu n tr (system administrator) h th ng, c g i l console. Console th ng k t n i t i my tnh khng qua giao di n k ti p nhau m qua m t c m ring (i khi thi t b a ra khng ph i l mn hnh m l m t thi t b in). V trn cc h th ng UNIX ng i ta th ng tun theo cc truy n th ng, do bn phm v mn hnh my tnh c nhn ngy nay lm vi c gi ng nh console ngy xa. i m m nh c a gi i php ny ch t t c nh ng chng trnh c dng qu n tr h th ng UNIX c th lm vi c khng c v n g trn d ng console m i ny. Tuy nhin, ngoi console Linux cn cho php k t n i cc terminal xa t i my tnh. V hn th n a cn cung c p kh nng lm vi c v i m t vi terminal o t m t console duy nh t. Hy nh n t h p phm <Ctrl>+<Alt>+<F2>. B n c s l i th y dng m i ng nh p login:. Nhng y khng ph i l lm vi c l i t u v i h th ng m b n c ch chuy n sang m t terminal o khc. y b n c c th ng nh p d i tn ng i dng khc. Hy th vo h th ng b ng tn ng i dng v a m i t o ra (nhimlui). Sau hy nh n t h p phm <Ctrl >+< Alt>+<F1>. B n s quay l i mn hnh ban u. Theo m c nh, h u h t cc b n phn ph i Linux l n (Red Hat, SuSE, Debian,. . . ) m ra 6 phin lm vi c song song (terminal o) nh v y khi kh i ng. Nh v y r t thu n ti n cho s d ng. chuy n gi a cc terminal o chng ta s d ng cc t h p phm <Ctrl>+<Alt>+<F1> <Ctrl>+<Alt>+<F6>. C n ni thm l khi lm vi c ch vn b n (khng ph i ho ) th cng c th s d ng cc t h p phm <Alt>+<F1> <Alt>+<F6> v thu c k t qu tng t . Tuy nhin n u lm vi c ch ho th khng th khng dng phm <Ctrl>. Do , t t hn h t l lm quen ngay t u v i t h p 3 phm. Nhn ti n cng c n ni lun, n u trong qu trnh lm vi c b n c khng nh ang n m trong terminal o no th hy s d ng cu l nh tty. L nh ny s a ra tn c a terminal d ng: /dev/tty2. Xin ni ngay l p t c n u b n mu n thot kh i m t trong cc terminal th c th th c hi n b ng t h p phm <Ctrl>+<D>. Thao tc ny khng t t my v cng khng kh i ng l i h th ng. ng qun r ng Linux l HH nhi u ti n trnh (multiproccess) v nhi u ng i dng (multiuser). M t ng i dng no d ng cng vi c khng c ngha l c n ph i t t my, cn c nh ng ng i dng khc v n ti p t c lm vi c. T h p phm ni trn ch n gi n l d ng phin lm vi c hi n th i c a m t ng i dng, v h th ng s hi n th l i trn terminal ny

48

Kh i ng Linux l n u

d u m i ng nh p (login:) m b n c th y. Cng c th d ng phin lm vi c b ng m t trong hai cu l nh logout ho c exit. By gi khi bi t cch b ng u v k t thc phin lm vi c trn h th ng, xin b n hy th c hi n nh ng l i khuyn trn, t c l vo h th ng d i tn ng i dng bnh th ng (khng c quy n cao c p c a ng i dng root). Hy ng t t c nh ng phin lm vi c m root m ra, r i vo h th ng d i tn ng i dng m i t o ra. Cn by gi c n ni vi dng v h v . H v hay shell (t ny th ng khng d ch m nguyn ti ng Anh) l chng trnh th c hi n vi c giao ti p c a h th ng v i ng i dng. Chnh shell nh n t t c nh ng cu l nh m ng i dng nh p vo t bn phm v t ch c vi c th c hi n nh ng cu l nh ny. v th shell cn c th g i l b x l l nh (thu t ng quen thu c i v i ng i dng DOS). Ni m t cch ch t ch th cu h th ng hi n th d u nh c l khng ng, v d u nh c ny l do shell a ra i ng i dng nh p vo cu l nh ti p theo. M i l n ng i dng no vo h th ng, cu l nh login s ch y cho ng i dng ny m t b x l l nh shell. N u b n c ng nh p vo h th ng t terminal th hai d i tn ng i dng nhimlui (ho c d i tn ng i dng b n ch n), th hy ch n s khc nhau trong d u nh c c a hai ng i dng root v nhimlui. D u nh c c a ng i dng root c k t # cu i, d u nh c c a t t c nh ng ng i dng cn l i k t $. Khng ch duy nh t l nh login c kh nng ch y shell. B n ch c n nh p vo l nh bash (y cng l tn c a chng trnh h v trn ph n l n cc h th ng Linux) v nh v y l ch y m t shell m i. Khi thot kh i h v m i ny (b ng cu l nh exit ho c t h p phm <Ctrl>+<D>), b n s quay l i h v ban u (h v m t b n ch y l nh bash). H v bash khng ch l b x l l nh m cn l m t ngn ng l p trnh m nh. Trong bash c y cc cu l nh tch h p (n i b ) v cc ton t , v ngoi ra cn c th s d ng cc chng trnh khc n m trn a lm cu l nh. C th xem danh sch cc cu l nh tch h p trong bash b ng l nh help. Hy th l nh ny! Xem thng tin chi ti t v m t l nh no cng b ng l nh help ny v i tham s l tn c a l nh, v d : help cd. V h v bash ng m t vai tr h t s c quan tr ng trong Linux, nn tc gi s dnh ring m t chng c a cu n sch ny ni v n. T t nhin l b n c th tm th y nh ng thng tin tng t trong b t k cu n sch no v UNIX. Cng c n lu l i v i cc h th ng UNIX cc nh pht tri n vi t ra nhi u h v khc thay th cho bash. Cng c th s d ng nh ng h v ny trn Linux, nhng theo m c nh s ch y bash. By gi chng ta s xem xt thm m t cu l nh n a m b n c c n bi t. My tnh c a ng i dng thng th ng l my c nhn (personal computer hay ni g n l PC) d nh hay c quan. C ngha b n c cng l ng i dng root c a h th ng. Nhng nh ni trn, ng nh p d i tn ng i dng cao c p ny l khng nn, v m i thao tc khng c n th n c a ng i dng ny c th d n n nh ng h u qu khng mong mu n. Khi ng nh p d i tn ng i dng thng th ng, t nh t b n c cng khng th xa ho c lm h ng cc t p tin h th ng (system files) do s khng c n th n c a mnh. Trong khi , c m t lo t cc thao tc, v d g n h th ng t p tin, ch c ng i dng cao c p m i c th th c hi n. ng kh i ng l i my tnh m i l n nh v y! Cu l nh su gip gi i quy t nh ng tr ng h p nh v y. Ch c n nh p cu l nh su v shell hi n

3.4 So n th o dng l nh. L ch s l nh

49

th i (hay ni khng ng l h th ng) s ch y m t shell m i m khi vo trong b n s ch y t t c cc l nh v i quy n c a root. T t nhin l c quy n ny b n c n nh p m t kh u c a root vo dng yu c u hi n ra (Password:). Sau khi th c hi n xong cc cng vi c qu n tr h th ng, hy thot kh i h v v b n s tr thnh ng i dng bnh th ng v i nh ng quy n c a mnh. B ng cch tng t nh vo h th ng d i tn root trn, cn c th vo h th ng d i tn m t ng i dng b t k m b n bi t m t kh u3 (ni cch khc l ch y m t h v shell m i d i tn ng i dng khc). Nhng c n ch ra tn c a ng i dng ny trn dng l nh, v d : [user]$ su nhimlui Cu l nh su tr c khng km theo tn no, theo m c nh s t tn ng i dng cao c p root vo. Nhng trong HH Linux cn c thm m t kh nng chuy n t m th i vo ti kho n c a ng i dng root th c hi n cc ch c nng qu n tr . Hy nh r ng Linux l h th ng nhi u ng i dng, trn h th ng c th lm vi c cng lc nhi u ng i dng. V th c th lm vi c d i tn ng i dng root trn terminal o th nh t, cn trn terminal o th hai d i tn ng i dng bnh th ng. Nh ng cng vi c th ng ngy (so n th o vn b n, c th,. . . ) b n c th th c hi n b ng ti kho n bnh th ng, cn khi c n th c hi n cc cng vi c qu n tr , b n s dng ti kho n ng i dng cao c p (root). th c hi n l a ch n ny b n ch c n nh n <Ctrl>+<Alt>+<F1> v s c ngay quy n c a nh qu n tr . Sau khi lm xong nh ng thao tc m ch c ng i dng cao c p m i c th lm, hy quay l i ti kho n c a ng i dng bnh th ng ngay l p t c b ng t h p phm <Ctrl>+<Alt>+<F2>. Nh v y b n c s khng c nguy c lm h ng h th ng khi cn cha c nhi u kinh nghi m s d ng Linux.

3.4

So n th o dng l nh. L ch s l nh

Trong nh ng ph n tr c tc gi ngh b n c th c hi n m t vi l nh c a HH Linux. Tc gi cho r ng n u trong qu trnh nh p l nh c x y ra l i th b n c th on c cch s a chng. Nhng d sao cng c ch n u a ra danh sch ng n g n nh ng cu l nh (hay ni ng hn l phm v t h p phm) dng so n th o dng l nh, cng nh gy nh h ng n cch lm vi c c a shell b ng bn phm (b ng 3.2, chng ta s ni v chu t m t ph n ring).
Ghi ch: N u b n lm vi c trong chng trnh Midnight Commander, th c th s khng th s d ng nh ng phm nh <>, <>, <Home>, <End>, <Del> lm cc cng vi c nh b ng trn, v chng c Midnight Commander dng di chuy n dng chi u sng trong b ng4 hi n th i. Nhng m t s t h p phm dng v i <Ctrl> v <Esc> th v n dng c bnh th ng.

Danh sch nh ng cu l nh (t h p phm) c th dng khng ch gi i h n trong ph m vi b ng 3.2, nhng chng ta ch xem xt nh ng cu l nh n gi n v c n thi t trong l n lm quen u tin v i Linux ny. c thm thng tin hy s d ng cu l nh man bash ho c info bash.
3 4

Ng i dng root khng c n ph i bi t m t kh u lm vi c ny. panel

50

Kh i ng Linux l n u

Phm <>, <Ctrl>+<F> <>, <Ctrl>+<B> <Esc>+<F> <Esc>+<B> <Home>, <Ctrl>+<A> <End>, <Ctrl>+<E> <Del>, <Ctrl>+<D> <Backspase> <Enter>, <Ctrl>+<M> <Ctrl>+<L> <Ctrl>+<T> <Esc>+<T> <Ctrl>+<K>

B ng 3.2: Nh ng phm so n th o dng l nh Ph n ng c a h th ng Di chuy n sang ph i m t k t (trong khun kh nh ng k t nh p c ng thm m t k t s nh p) Di chuy n sang tri m t k t Di chuy n sang ph i m t t Di chuy n sang tri m t t Di chuy n v u dng l nh Di chuy n v cu i dng l nh Xa k t n m t i v tr con tr Xa k t n m bn tri con tr B t u th c hi n cu l nh D n mn hnh v a dng l nh hi n th i ln dng u tin i ch hai k t : k t n m t i v tr con tr v k t n m bn tri con tr , sau di chuy n con tr sang ph i m t k t i ch hai t : t n m t i v tr con tr v t n m bn tri con tr C t ph n dng l nh b t u t k t n m t i v tr con tr n cu i dng (ph n dng l nh c t ra c lu trong b m v c th t vo v tr khc) C t ph n dng l nh b t u t k t n m bn tri con tr n u dng (ph n dng l nh c t ra c lu tron b m v c th t vo v tr khc) C t ph n dng l nh b t u t v tr con tr n cu i t (n u t i v tr con tr l d u cch th c t ton b t n m bn ph i n) C t ph n dng l nh b t u t v tr con tr n u t (n u t i v tr con tr l d u cch th c t ton b t n m bn tri n) C t ph n dng l nh b t u t v tr con tr n d u cch bn tri t (dn) o n dng l nh c t cu i cng vo v tr con tr Chuy n k t t i v tr con tr thnh vi t hoa r i di chuy n con tr t i d u cch u tin bn ph i so v i t hi n th i Chuy n t t c cc k t b t u t v tr con tr thnh vi t HOA r i di chuy n con tr t i d u cch u tin bn ph i Chuy n t t c cc k t b t u t v tr con tr t i cu i t thnh vi t th ng r i di chuy n con tr t i d u cch u tin bn ph i Nh ng t h p phm ny cho php xem cc trang mn hnh hi n th . S l ng nh ng trang ny ph thu c vo b nh c a c c mn hnh. C ch khi c cu l nh no a ra mn hnh r t nhi u thng tin ch y nhanh qua mn hnh, ng i dng khng k p th y chng D ng th c hi n cu l nh v a ch y (m v n ang ch y) Thot ra kh i h v bash

<Ctrl>+<U>

<Esc>+<D> <Esc>+<Del> <Ctrl>+<W> <Ctrl>+<Y> <Esc>+<C> <Esc>+<U> <Esc>+<L> <Shift>+ <PgUp>, <Shift>+ <PgDown> <Ctrl>+<C> <Ctrl>+<D>

3.5 Ng ng lm vi c v i Linux

51

Xin lu b n c trong h v bash c chng trnh tch h p gip d dnh nh p cu l nh trn dng l nh. G i chng trnh con ny b ng m t ho c hai l n nh n phm <Tab> sau khi nh p m t vi k t . N u nh ng k t ny l ph n u c a t nh t m t trong nh ng cu l nh m bash bi t, th c hai kh nng x y ra. N u chng l ph n u c a duy nh t m t cu l nh, t c l bash ch tm th y c m t cu l nh ny, th h v s thm ph n cn l i c a cu l nh ny vo dng l nh. N u bash tm th y nhi u cu l nh c ph n u ny, th s hi n th danh sch t t c nh ng phng n c th ch n. Nh ng i dng c kh nng nh p thm m t vi k t n a lm gi m s phng n ch n xu ng cn 1 r i l dng phm <Tab> m t l n n a. N u s phng n ch n l r t nhi u (v d nh n phm <Tab> hai l n khi dng l nh tr ng r ng) th b n c s nghe th y ti ng bp sau l n nh n <Tab> u tin, v sau l n nh n <Tab> th hai s xu t hi n m t dng d ng Display all 2627 possibilities? (y or n) (Hi n th t t c 2627 kh nng? c n ch n y c ho c n khng). N u nh n hai l n phm <Tab> sau tn c a m t cu l nh v m t kho ng tr ng, th h v bash s coi nh b n ang tm tn t p tin dng lm tham s cho l nh ny, v bash s a ra danh sch t p tin c a th m c hi n th i. y l tnh nng tr gip c a bash trong tr ng h p ng i dng qun tn t p tin trong khi lm vi c cng th ng. Cng gi ng nh tr ng h p cu l nh, n u nh p vo m t ph n tn t p tin th ph n cn l i s c t ng thm vo. Tng t nh v y c th on ph n cn l i c a cc bi n mi tr ng5 , ch c n s d ng t h p phm <Esc>+<$> thay cho <Tab>. Trong khi lm vi c v i h v s c ch n u bi t r ng, bash ghi nh m t s cu l nh (theo m c nh l 1000 l nh, gi tr ny c t trong bi n HISTSIZE, xem chng 5) v cho php g i l i chng b ng cch ch n t danh sch. y c g i l l ch s l nh. C th xem l ch s l nh b ng cu l nh history. y b n c n s d ng cc t h p phm <Shift>+<PgUp> v <Shift>+<PgDown> xem danh sch (c th ) r t di ny. L ch s l nh c lu trong t p tin xc nh b i bi n HISTFILE (th ng l $HOME/.bash_history). lm vi c v i l ch s cu l nh trong h v bash ng i ta s d ng nh ng t h p phm trong b ng 3.3.

3.5

Ng ng lm vi c v i Linux

M c d my tnh lm vi c d i s i u khi n c a HH Linux c th ch y su t ngy m, nhng ph n l n ng i dng my tnh c nhn quen v i vi c t t my sau khi lm vi c xong. Khi lm vi c v i HH Linux khng th t t my b ng cch ng t ngu n i n nh i v i MS-DOS. V trong b t k th i i m no trn h th ng cng c r t nhi u qu trnh ang lm vi c. B n c th th y i u ny b ng cch th c hi n l nh: [nhimlui]$ ps ax Th c hi n l i l nh ny m t l n n a xem l i. Nhng nguyn nhn quan tr ng hn l ch m t s ti n trnh ny c th ang lm vi c v i cc t p tin, v h th ng cn cha ghi nh t t c cc thay i v i nh ng t p tin ln a m ch lu
5

environment variable

52

Kh i ng Linux l n u

B ng 3.3: T h p phm i u khi n l ch s l nh Phm Ph n ng c a h th ng <> ho c <Ctrl>+<P> Chuy n t i (g i vo dng l nh) cu l nh tr c trong danh sch (di chuy n ng c l i danh sch) <> ho c <Ctrl>+<N> Chuy n t i cu l nh ti p theo trong danh sch (di chuy n theo danh sch) <PgUp> Chuy n t i cu l nh u tin trong danh sch l ch s l nh <!>, <N> Th c hi n (khng c n nh n <Enter> cu l nh th n trong danh sch <!>, <->, <N> Th c hi n cu l nh th n tnh t cu i danh sch <!>, dng_k_t Th c hi n dng l nh, c ph n u trng v i dng_k_t . Vi c tm dng l nh c n thi t s c th c hi n t cu i t p tin l ch s v dng l nh u tin tm th y s c th c hi n <Ctrl>+<O> Cng gi ng nh nh n phm <Enter>, sau hi n th cu l nh ti p theo trong l ch s l nh t m chng trong b nh (cache). N u ng t ngu n i n th nh ng thay i ny s khng c lu v s b m t, i khi c th d n n khng kh i ng c my trong l n sau. Do c n bi t d ng h th ng m t cch ng n tr c khi t t my. Cng vi c ny do cu l nh (chng trnh) shutdown m nhi m. Ch c ng i dng root m i c th th c hi n cu l nh shutdown ny6 , do b n c n ng nh p vo h th ng d i tn ng i dng ny, ho c dng cu l nh su c quy n tng ng. Cu l nh shutdown c c php nh sau: [root]# shutdown <ty_ch n> <th i_gian> <dng_thng_bo>
Ghi ch: R t c th khi ch y l nh, b n s nh n c cu tr l i bash: shutdown: command not found. i u c ngha l bash khng bi t tm chng trnh y. Trong tr ng h p b n c n nh p vo ng d n y n chng trnh, y l /sbin/shutdown, v t p tin chng trnh c a shutdown n m t i /sbin.

Th ng s d ng hai trong s cc ty ch n c a chng trnh shutdown:


-h d ng hon ton h th ng (halt, s t t my) -r kh i ng l i h th ng (reboot).

Tham s th i_gian dng h n gi th c hi n cu l nh (khng nh t thi t ph i th c hi n cu l nh ngay l p t c). Th i gian h n gi c tnh t lc nh n phm <Enter>. V d , n u b n mu n kh i ng l i sau 5 pht th hy nh p vo cu l nh: [root]# shutdown -r +5 Cu l nh ny c ngha l d ng h th ng sau 5 pht v kh i ng l i sau khi hon thnh cng vi c. i v i chng ta th t m th i cu l nh sau s thch h p hn:
6

Cng c th c u hnh nh ng ng i dng khc th c hi n c shutdown, v d qua sudo.

3.6 Tr gip khi dng Linux [root]# shutdown -h now

53

Cu l nh ny s t t my ngay l p t c. Tng ng v i cu l nh ny l l nh halt. Sau khi nh n t h p phm n i ti ng <Ctrl>+<Alt>+<Del> trn Linux s th c hi n cc hnh ng tng t v i l nh [root]# shutdown -r now B ng cch ny cng c th t t my, nhng c n ng t ngu n i n trong khi h th ng b t u kh i ng l i.

3.6

Tr gip khi dng Linux

Nh v y l b n c k t thc phin lm vi c u tin v i HH Linux v ti mong r ng b n cha c n tr gip trong m t tnh hu ng no . Tc gi cng mong cu n sch ny s th c hi n vai tr tr gip trong th i gian u tin ny, nhng c th n khng gi i quy t c t t c nh ng v n c a b n. V th tc gi s a ra ngay l p t c nh ng ngu n thng tin khc. Nhng ti s ph i i tr c k v cch nh n thng tin tr gip trong giao di n ho (X Window). Tc gi coi cch gi i quy t ny l ng v ng i dng c n bi t tr c cch thot kh i nh ng tr ng h p kh khn.

3.6.1

Cc ngu n thng tin tr gip

N u ri vo tnh hu ng m b n khng bi t ph i lm g c c k t qu mong mu n, th t t nh t hy tm tr gip ngay trong h th ng. Cc phin b n Linux c hng nghn trang ti li u d ng t p tin, do cu tr l i cho cu h i c a b n n m trong lng bn tay. C m t vi ngu n c l p ch a thng tin v h u h t cc m t c a h th ng Linux:
cc trang tr gip man tr gip siu vn b n info ti li u i km v i ph n m m HOWTO v FAQ c a d n The Linux Document Project (http://www. tldp.org) cu l nh locate

C n ni ngay l p t c l ph n l n thng tin t nh ng ngu n ny b ng ti ng Anh. Cc d n d ch chng sang ti ng Vi t cn cha c t ch c ho c cn cha c hon ch nh. Do chng ta s xem xt t ng ngu n thng tin ny m t cch c th hn.

54

Kh i ng Linux l n u

3.6.2

Cc trang tr gip man

Nh ni ng n g n trn v cu l nh man, b ng cu l nh ny ng i dng trong hnh hu ng kh khn lun lun c th tm tr gip v b t k cu l nh no c a h th ng, v nh d ng t p tin, v v cc g i h th ng (system call). y l cch nh n tr gip chnh trong t t c cc h th ng UNIX. Cc trang tr gip man chia thnh cc ph n sau: B ng 3.4: Cc ph n chnh c a tr gip man Ph n N i dung 0 Cc t p tin header (th ng n m trong /usr/include) 1 Chng trnh ho c cu l nh c a ng i dng 8 Cu l nh dng qu n tr h th ng 2 G i h th ng (system call, hm do nhn cung c p) 3 G i th vi n (library call, chng trnh con, hm trong th vi n c a ng d ng) 4 Thi t b (t p tin c bi t, th ng n m trong /dev) 5 nh d ng t p tin v quy c, v d /etc/passwd 6 Tr chi 7 Khc (bao g m cc gi macro v quy c, v d man(7), groff(7) 9 Nhn (kernel routines) n cc l nh Tcl/Tk Th t li t k y khng ph i l s nh m l n. V n ch cc t p tin ch a thng tin c a tr gip man n m trong cc th m c con c a th m c /usr/share/man v khi cu l nh man tm ki m thng tin c n thi t, th n s xem cc th m c con ny theo th t ch ra trong b ng 3.4. N u b n ch y l nh [user]$ man swapon th s nh n c tr gip v cu l nh swapon n m trong ph n 8. V th n u mu n xem tr gip v g i h th ng swapon c n ch y l nh [user]$ man 2 swapon ch ra s th t c a ph n tr gip c n tm ki m thng tin. Cc trang man c xem b ng chng trnh less (ho c chng trnh xc nh b i bi n PAGER), do c kh nng xem thng tin theo t ng mn hnh v di chuy n mn hnh ny xu ng d i v ln trn v di chuy n c th s d ng cc phm nh trong chng trnh less. Nh ng phm th ng dng nh t l: N u b n khng thch c t mn hnh m c m tay c, th c th in ra trang man tng ng b ng l nh [user]$ man tn_cu_l nh | lpr ho c n u my in l postscript th dng: [user]$ man -t tn_cu_l nh | lpr

3.6 Tr gip khi dng Linux

55

B Phm <Q> <Enter> <Space> <B> </>, dng k t , <Enter> <N>

ng 3.5: Phm s d ng xem trang man Ch c nng Thot kh i chng trnh Xem t ng dng Hi n th mn hnh thng tin ti p theo Quay l i mn hnh tr c Tm ki m dng k t ch ra L p l i tm ki m v a th c hi n.

Tuy nhin c th nh n c thng tin mong mu n th cn c n ph i bi t ch tm thng tin . Trong tr ng h p ny c th dng hai cu l nh whatis v apropos. Cu l nh whatis tm ki m t kha a ra trong c s d li u bao g m danh sch cc cu l nh v m t ng n g n c a chng. L nh ny ch a ra nh ng trng l p chnh xc v i t kha tm ki m. Cu l nh apropos th c hi n tm ki m theo cc ph n c a t kha. Tng t nh l nh apropos l cu l nh man v i tham s -k. Hy th ch y l nh sau: [user]$ man -k net C n ph i ni lun l cho cc cu l nh man -k, whatis v apropos lm vi c, th u tin c n t o ra c s d li u v cc cu l nh c trn my b ng cch ch y l nh makewhatis. Trong tr ng h p ng c l i khi tm ki m b n s nh n c thng bo nothing appropriate. Ch c ng i dng root m i c quy n ch y cu l nh makewhatis. N u b n c my ch y c m th t t nh t ch y cu l nh ny d ng cng vi c cho ti n trnh cron7 . Cu i cng tc gi mu n ni r ng, cc trang tr gip man khng dnh cho th i gian lm quen u tin v i Linux. Chng dnh cho nh ng ng i dng c kinh nghi m c n c s tay tra c u v nh d ng, tu ch n v c php c a l nh trong qu trnh lm vi c khng ph i nh m t s l ng l n nh ng thng tin ny trong u.

3.6.3

Cu l nh info

Cu l nh info l d ng tr gip thay th v tng ng v i man. nh n thng tin v m t cu l nh no , th cng gi ng nh man, c n nh p vo info cng v i m t tham s l tn c a cu l nh quan tm. V d : [user]$ info man Thng tin mn b n s th y trn mn hnh trong ph n l n tr ng h p s khc v i nh ng g m cu l nh man a ra. V theo ki n c a nhi u ng i dng l v chi u h ng t t hn. Nhng s khc nhau c b n nh t ch info a ra thng tin d ng siu vn b n (hypertext) gi ng nh cc trang web. Nh b n c kh nng xem cc ph n khc nhau c a tr gip m khng c n ph i thot ra kh i chng trnh xem ny. Trong khi lm vi c ch vn b n, b n c th
7

cron l chng trnh ch y t ng cc cng vi c theo th i gian nh.

56

Kh i ng Linux l n u

ch y cu l nh info trn m t trong cc terminal o (hy nh n cc t h p phm <Ctrl>+<Alt>+<F2>, <Ctrl>+<Alt>+<F3> v.v. . . ) c th chuy n sang terminal o tm tr gip khi c n thi t. Trong tr ng h p b n khng bi t tm thng tin c n thi t u th c th chuy n sang cc ph n khc nhau b ng cc siu lin k t (hyperlink) m info t o ra. Nh ng lin k t ny c nh d u b ng k t sao (*), khc v i cch nh d u lin k t trn cc trang Web nhng v n gi nguyn c s thu n l i. C th di chuy n qua cc lin k t b ng phm <Tab>. Sau khi di chuy n n lin k t mong mu n, hy nh n phm <Enter>. Phm <P> a ng i dng tr l i trang v a xem, phm <N> a n trang ti p theo, cn <U> chuy n ln trn m t b c trong c u trc phn b c c a cc trang ti li u ny. Ngoi ra, cn c th chuy n theo lin k t b ng cch khc tng t nh h th ng trnh n. u tin c n nh n phm <M>, sau nh p vo dng Menu item: cu i mn hnh m t vi k t u tin c a tn c a ph n tr gip c n thi t. Tn c a nh ng ph n tr gip ny c hi n th trn mn hnh. S k t ph i sao cho ch tng ng v i m t ph n tr gip, n u khng th chng trnh s yu c u nh p thm vo. Thot ra kh i info b ng phm <Q>.

3.6.4

Cu l nh help

Nh nh c n trn, h th ng tr gip v cc l nh tch h p c a h v bash l cu l nh help. N u ch y l nh help khng c tham s th s nh n c danh sch c a t t c cc l nh tch h p c a bash. N u ch y help tn, trong tn l tn c a m t trong nh ng cu l nh ni trn, th b n s nh n c gi i thi u ng n g n v cch s d ng cu l nh ny.

3.6.5

Ti li u i km v i b n phn ph i v chng trnh ng d ng

N u trong qu trnh ci t khng b i nh ng gi ti li u, th sau khi k t thc b n s tm th y trong th m c /usr/share/doc (ho c /usr/doc) cc th m c con HOWTO, FAQ,. . . Nh ng th m c ny ch a ti li u y v h th ng Linux ni chung cng nh nh ng ph n ring r c a n. Nh ng ti li u ny c d ng vn b n ASCII v c th xem chng b ng cc cu l nh more tn ho c less tn ho c b ng chng trnh xem c trong Midnight Commander. Ph n l n cc chng trnh ng d ng c km theo ti li u h ng d n ci t v s d ng. N u ci t chng trnh t gi (package) d ng rpm (Fedora Core, SuSE, Mandriva,. . . ) th ti li u s n m trong th m c con tng ng c a th m c /usr/share/doc. Tn c a nh ng th m c con ny tng ng v i tn c a chng trnh v phin b n c a n. V d , chng trnh nh p ti ng Vi t m ti ang dng g nh ng dng ny xvnkb phin b n 0.2.9 c th m c con tng ng xvnkb-0.2.9 n m trong /usr/share/doc sau khi ci t. i khi tm t p tin tr gip mong mu n b n s c n n cu l nh locate. Cu l nh ny trong m t ch ng m c no tng t v i cc l nh whatis v apropos. Khi ch y locate n s tm t t c nh ng t p tin c tn ch a t kha a ra. V d locate net s tm t t c nh ng tn t p tin c tn ch a net. Nh ng t p tin ny c r t nhi u trn my. Trong t kha (m u) c th s d ng cc k t thay th *, ?, []. Tuy nhin cu l nh locate khng tm ki m theo cc

3.6 Tr gip khi dng Linux

57

th m c c a h th ng t p tin, m theo c s d li u c bi t ch a tn cc t p tin c t o ra (v i khi c n c p nh t) b ng l nh updatedb. Trong m t s b n phn ph i locate c thay th b i slocate (secure locate). slocate t t o cho mnh c s d li u ni trn sau khi ch y v i tham s tng ng.

3.6.6

Cu l nh xman

y l chng trnh cho php xem cc trang tr gip man khi lm vi c giao di n ho (GUI). Vi c tm ki m v hi n th cc trang tr gip c th c hi n b ng cch nh n cc nt v trnh n. Cn l i (theo thng tin hi n th ) xman cng gi ng nh man.

3.6.7

Cu l nh helptool

Sau khi ch y l nh helptool s hi n ra m t c a s ho , c m t nh p vo ng i dng a ra thu t ng ang quan tm. Chng trnh s xem t t c cc t p tin ti li u (b n c th c u hnh ch n nh ng ti li u no c n xem khi tm ki m). Sau khi hon thnh tm ki m chng trnh s hi n ra danh sch nh ng t p tin c ch a thu t ng ny. N u nh n chu t vo m t t p tin trong danh sch th s hi n ra m t c a s khc n i dung c a t p tin ch n. Khi ny t p tin s c hi n th d ng lu trn a: trang info, trang man, v.v. . .

3.6.8

Sch v Internet

T t nhin, h c Linux d dng v n gi n nh t khi c m t cu n sch t t. Tr c tin b n c n c ti li u h ng d n i km v i b n phn ph i c a mnh. Cc b n phn ph i l n nh Debian, SuSE, Fedora,. . . u c nh ng ti li u ny (r t c th c d ch sang ti ng Vi t). R t ti c ng i d ch cha c cu n sch ti ng Vi t no v Linux do khng th gi i thi u v i b n c. T t nhin n u b n c k t n i Internet (by gi khng cn qu xa x ) v m t cht ti ng Anh th c th tm c cu tr l i cho m i cu h i c a mnh. Ti xin a ra m t s a ch sau lm b c kh i u cho b n c trong bi n thng tin v b b n ny.

Cc trang ti ng Vi t
1. http://vnoss.org trang web dnh cho ng i dng m ngu n m (MNM) Vi t Nam. C nhi u thng tin v Linux, ti li u v Linux, di n n cho php b n t cu h i c a mnh. Trang web do bc Nguy n i Qu ang s ng v lm vi c t i B qu n l. 2. http://vnoss.net tin t c v Linux v MNM. 3. http://vnlinux.org y l trang web dnh cho nhm ng i dng Linux Vi t Nam (vietlug). B n s tm th y nhi u thng tin c ch y v c th ng k tham gia nhm th vietlug t cu h i. Trang ny do anh Larry Nguy n, m t Vi t Ki u M , qu n l.

58

Kh i ng Linux l n u 4. http://vnoss.net/dokuwiki/doku.php?id=linux:tailieutiengviet trn trang ny t ng h p t t c nh ng ti li u ti ng Vi t v Linux, r t c th b n s tm th y ti li u v ti mnh c n tm hi u trn trang ny. 5. http://kde-vi.org trang web c a nhm d ch giao di n KDE sang ti ng Vi t.

Cc trang ti ng Anh
1. http://www.linux.com 2. http://www.linux.org 3. http://www.linux.org.uk Trang web Linux c a Chu u. Do Allan Cox m t trong cc nh pht tri n Linux h tr . 4. http://www.tldp.org Trang web chnh ch a ti li u v Linux. R t nhi u ti li u bao g m HOWTO, FAQ, sch. . . 5. http://freshmeat.net/ Thng bo hng ngy v nh ng chng trnh ng d ng m i ra dnh cho Linux. Kho ph n m m kh ng l cho Linux. 6. http://www.li.org T ch c Linux International. 7. http://www.linuxstart.com 8. http://oreilly.linux.co 9. http://www.linuxplanet.com 10. http://www.kde.org Trang ch c a mi tr ng lm vi c KDE. 11. http://www.gnu.org Cc ng d ng dnh cho Linux, trong n i ti ng nh t l trnh so n th o Emacs (GNUs Not UNIX). 12. http://slashdot.org Nh ng tin t c m i nh t v cng ngh my tnh trong c Linux. C cc bi bo v l i bnh c a ng i c (khng qua ki m duy t). 13. http://www.linuxtoday.com Danh sch di nh ng tin t c, thng bo qu ng co v cc thng tin khc. Xem trang ny b n s bi t ph n l n nh ng s ki n trong th gi i Linux. 14. http://www.lwn.net Tin t c hng tu n v Linux. Thng tin chia thnh t ng h ng m c: thng tin chung, thng m i, thng tin v nhn Linux, cng c pht tri n chng trnh m i, chng trnh cho Linux, v.v. . . N u b n mu n tin t ng r ng Linux pht tri n r t nhanh v mu n nh n tr gip c a cc cng ty thng m i l n th nh t nh ph i thm trang ny. Tin t c trn tu n bo ny c ban bin t p ch thch r t t t. 15. http://www.linuxnewbie.org Trang web t t cho nh ng ng i dng m i. y b n s tm th y r t nhi u ti li u.

3.6 Tr gip khi dng Linux

59

16. http://www.linuxjournal.com t p ch Linux. Th ng ng nh ng bi bo v nhi u ti. 17. http://www.linuxgazette.com t bo Linux ny s th v i v i c ng i dng m i v ng i dng c kinh nghi m. 18. http://www.linuxfocus.org T p ch phi thng m i ton c u. 19. http://www.linuxworld.com M t trang web t t c r t nhi u bi bo hay. 20. http://www.linux-mag.com Linux Magazin, m t t t p ch r t th v . 21. http://www.penguinmagazine.com. T t nhin y khng ph i l danh sch y nh ng trang web ni v Linux. Nh ng trang ni trn ch l i m kh i u t b n s tm c nh ng trang web khc trong bi n thng tin Internet. i n u l ph thu c vo mu n c a b n. N u c v n trong lc ci t, th hy h i d ch v khch hng c a phn ph i a. N u b n mua a c a m t cng ty chuyn mn th s c a ch lin l c c a d ch v ny. N u b n mua a ghi l i ho c t ghi a t t p tin ISO nh n c qua Internet th r t c th l i ci t l do khi ghi a gy ra. Hy s d ng h p th i n t . B n nn ng k v i m t vi nhm th chung (mailing list) no , v d mailto:vietlug-users@userforge.net. Cch ng k cn ph thu c vo t ng nhm th (ni chnh xc hn l ph thu c vo my ch i u khi n nhm th ny). Nhng hi n nay th ng c hai cch ng k: g i th n m t a ch xc nh yu c u, ng k qua giao di n web. Thng tin ny b n c th tm th y trn trang web gi i thi u v nhm th chung. Tuy nhin b n c n bi t l c c t t c th chung th c n r t nhi u th i gian, v cn ph i c r t nhi u th c a nh ng ng i dng m i khc (v d Console l g?), ho c th m ch c c nh ng l th ng ng n (v d Hm nay dng Debian th t vui) v t t nhin l ph i c c nh ng th tr l i cho nh ng cu h i ny c a nh ng ai bi t m t cht g . Do n u mu n b n c th xem kho lu tr nh ng l th ny b ng trnh duy t, r t c th c cu tr l i cho cu h i c a b n . V nh v y b n khng c n ph i ng k cng nh vi t th vo nhm th chung n a. T t nhin n u khng tm th y th ng ng i ng n t cu h i. Ng i dng Linux h t s c vui lng tr l i th c a b n. B o m l b n s nh n c cu tr l i, n u khng hi u th cn c th yu c u gi i thch thm. Khi t cu h i c lin quan n h th ng Linux c a b n, c n lun lun thm vo th c a mnh cng nhi u chi ti t cng t t (nhng ng thm thng tin th a) bao g m: tn c a b n phn ph i (Debian, SuSE, Fedora, hay m t ci no khc), phin b n nhn, c v n v i ph n c ng no (phin b n, dng ch ghi trn m ch i n t ), thng bo no hi n ra khi c v n . ng i h i ng i dng khc g i cu tr l i th ng n a ch c a b n, vi t th vo nhm th chung l t th hi n, vi t th i n t cng l s h tr k thu t. Vi t th th mi n ph, nhng s h tr k thu t th khng. Xin hy lun nh i u !

Chng 4 Lm quen v i h th ng t p tin ext3fs1


By gi b n bi t cch kh i ng v d ng h th ng Linux, n lc lm quen v i m t trong nh ng thnh ph n chnh v quan tr ng c a Linux l h th ng t p tin. H th ng t p tin l c u trc nh nhn c a h i u hnh c th cung c p cho ng i dng v cc ti n trnh ti nguyn c a h th ng d ng b nh lu di trn cc a lu2 thng tin: a c ng, a t , CD, DVD, v.v. . . M i h th ng t p tin, gi ng nh m t ci a n, c hai m t. M t m t c a n lun quay v pha ng i dng (hay ni chnh xc hn l quay v pha ng d ng), chng ta t m g i n l m t tr c. T pha m t tr c ny ng i dng th y h th ng t p tin l m t c u trc lgc c a cc th m c v t p tin. M t cn l i, m ng i dng khng th y, quay v pha chnh b n thn a lu t o thnh m t vng bn trong c a h th ng t p tin i v i ng i dng, chng ta t m g i l m t sau. M t ny c a h th ng t p tin c c u trc khng n gi n cht no. V y th c hi n cc c ch ghi t p tin ln cc a lu khc nhau, th c hi n vi c truy c p (ch n thng tin c n thi t) v nhi u thao tc khc. Trong chng hi n t i chng ta s xem xt m t quay v pha ng i dng c a h th ng t p tin. M t cn l i s dnh cho m t chng sch sau. C n ni thm l chng ta s xem xt m t h th ng t p tin c th ext3fs, h th ng t p tin c b n c a Linux n th i i m hi n nay. Cn c nh ng h th ng t p tin khc nhng chng ta s c p n chng mu n hn.

4.1

T p tin v tn c a chng

My tnh ch l cng c lm vi c v i thng tin khng hn khng km. M thng tin trn m i HH c lu d ng t p tin trn cc a lu. T pha c a HH th t p tin l m t chu i lin t c cc byte v i chi u di xc nh. H i u hnh khng quan tm n nh d ng bn trong c a t p tin. Nhng n c n t cho t p tin m t ci tn no ng i dng (hay ni ng hn l chng trnh ng d ng) c th lm vi c v i t p tin. Lm sao ng i dng c th lm vi c v i t p tin l cng vi c c a h th ng t p tin, ng i dng th ng khng c n quan tm n. V th , i v i ng i dng th h th ng t p tin l m t c u trc lgc c a cc th m c v t p tin. Tn t p tin trong Linux c th di 255 k t bao g m b t k k t no tr k t c m b ng 0 v k t d u g ch cho (/). Tuy nhin cn c nhi u k t n a c
1 2

Chng ny do ng i d ch vi t M t s tc gi thch dng thu t ng v t ch a

y.

4.1 T p tin v tn c a chng

61

ngha c bi t trong h v shell v do khng nn dng t tn t p tin. l nh ng k t sau: ! @ # $ & ~ % * ( ) [ ] { } " \ : ; > < d u cch N u tn t p tin ch a m t trong nh ng k t ny (khng khuyn dng nhng v n c th ) th tr c n ph i t m t d u g ch cho ng c (\) (i u ny v n ng trong tr ng h p c chnh b n thn d u g ch cho ng c, t c l ph i l p l i d u ny hai l n). V d : [user]$ mkdir \\mot\&hai s t o th m c \mot&hai. Cn c th t tn t p tin ho c th m c v i nh ng k t ni trn vo d u ng c kp. V d , t o th m c c tn mot hai ba chng ta c n dng cu l nh sau: [user]$ mkdir "mot hai ba" v cu l nh [user]$ mkdir mot hai ba s t o ba th m c: mot, hai v ba. Lm tng t nh v y i v i nh ng k t khc, t c l c th thm chng vo tn t p tin (th m c) n u a tn vo trong d u ngo c kp ho c dng d u g ch cho ng c b i ngha c bi t c a chng. Tuy nhin t t nh t l khng s d ng nh ng k t ny k c d u cch trong tn t p tin v th m c, b i v c th gy ra v n cho m t s ng d ng khi c n s d ng nh ng t p tin nh v y v c khi di chuy n nh ng t p tin ln h th ng t p tin khc. i v i d u ch m th khng ph i nh v y. Trong Linux ng i dng th ng t nhi u d u ch m trong tn c a t p tin, v d xvnkb-0.2.9.tar.gz. Khi ny khi ni m ph n m r ng t p tin (th ng dng trong DOS) khng cn c ngha g, m c d v n dng ph n cu i cng c a tn t p tin sau d u ch m lm k hi u v cc d ng t p tin c bi t (.tar.gz dng k hi u cc t p tin nn3 ). Trn Linux cc t p tin chng trnh v t p tin bnh th ng khng phn bi t theo ph n m r ng c a tn (trong DOS t p tin chng trnh c ph n m r ng exe) m theo cc d u hi u khc, chng ta s c p n sau. D u ch m c ngha c bi t trong tn t p tin. N u n l d u ch m u tin trong tn, th t p tin ny s l n (thu c tnh hidden) i v i m t s cu l nh, v d , l nh ls khng hi n th nh ng t p tin nh v y.4 Nh ni chng tr c trong Linux c phn bi t cc k t vi t hoa v vi t th ng. i u ny cng ng i v i tn t p tin. V th l4u-0.9.2.tar.gz v L4U-0.9.2.tar.gz c th n m trong cng m t th m c v l tn c a cc t p tin khc nhau. i u ny lc u c th gy kh khn cho ng i dng Windows nhng sau khi quen th b n s th y n th t s c ch. Chng ta quen v i vi c t p tin c xc nh hon ton theo tn c a n. Tuy nhin n u nhn t pha h i u hnh v h th ng t p tin th khng ph i
3 4

th ng g i theo ti ng lng l tarball, qu bng tar Nhng l nh ls -a s hi n th . c thm ls(1) bi t chi ti t.

62

Lm quen v i h th ng t p tin ext3fs

nh v y. Chng ta s ni k v m t sau c a h th ng t p tin trong m t s chng sch s p t i, nhng by gi cng c n c p n m t cht v ch s inode. V n ch m i t p tin trong Linux c m t ch s k hi u (index descriptor) tng ng, hay cn g i l inode (t m th i cha c thu t ng ti ng Vi t chnh xc nn xin nguyn t ti ng Anh). Chnh inode lu t t c nh ng thng tin c n thi t cho h th ng t p tin v t p tin, bao g m thng tin v v tr c a cc ph n c a t p tin trn a lu, thng tin v d ng t p tin v nhi u thng tin khc. Cc ch s inode n m trong m t b ng c bi t g i l inode table. B ng ny c t o ra trn a lu cng lc v i h th ng t p tin. M i a lu d l th t s hay lgc th u c m t b ng cc ch s inode c a ring mnh. Cc inode trong b ng c nh s theo th t , v chnh ch s ny m i l tn th c s c a t p tin trn h th ng. Chng ta s g i ch s ny l ch s c a t p tin. Tuy nhin i v i ng i dng th nh ng tn nh v y th t s khng thu n ti n. Khng ph i ai cng c kh nng nh ghi g trong t p tin v i s 12081982 (ni chnh xc hn l ch c m t s r t t ng i c kh nng ny). V th cc t p tin cn c t thm m t tn thn thi n v i ng i dng v hn th n a cn c nhm vo cc th m c. Tc gi a ra nh ng thng tin trn ch ni r ng tn c a b t k t p tin no trong Linux khng ph i g khc m chnh l lin k t n ch s inode c a t p tin. V th m i t p tin c th c bao nhiu tn ty thch. Nh ng tn ny cn c g i l lin k t c ng (hard link) (chng ta s lm quen k hn v i khi ni m lin k t v cch t o nh ng lin k t ny trong chng sau). Khi b n c xa m t t p tin c nhi u tn (lin k t c ng) th trn th c t ch xa i m t lin k t (m b n ch ra trn dng l nh xa). Th m ch c khi b n c xa i lin k t cu i cng th cng khng c ngha l xa n i dung c a t p tin: n u t p tin ang c h th ng hay m t ng d ng no s d ng, th n c lu n lc h th ng ( ng d ng) gi i phng n. c th thm tn khc cho t p tin ho c th m c (t o lin k t c ng), chng ta s d ng cu l nh ln d ng sau: ln tn__c tn_m i V d : [user]$ ln projects/l4u/l4u-0.9.2.pdf ~/l4u.pdf K t c ngha c bi t, n ch th m c c nhn (home directory) c a ng i dng, chng ta s ni k hn v k t ny ngay sau y. By gi c th dng ~/l4u.pdf thay cho ng d n di hn projects/l4u/l4u-0.9.2.pdf. Chi ti t v cu l nh ln b n c th c trong trang man c a n. C th tm ra s l ng lin k t c ng n t p tin (t c l s l ng tn c a t p tin) b ng l nh ls v i tham s -l5 . Ngay pha sau quy n truy c p n t p tin l m t s cho bi t s l ng nh ng lin k t c ng ny:
[user]$ ls t ng 1280 -rw-r--r-drwxr-xr-x -rw-r--r--rw-r--r-5

-l 1 2 2 1 teppi82 teppi82 teppi82 teppi82 users 81409 2006-09-06 03:43 bash.tex users 4096 2006-09-06 02:16 images users 82686 2006-09-06 14:32 l4u-0.9.2.pdf users 3069 2006-09-06 13:52 l4u.tex

N u b n dng SuSE Linux th c th nh p vo l nh ll.

4.2 Th m c (Danh sch b c t b t v khng c n thi t).

63

4.2

Th m c

N u nh c u trc t p tin khng cho php s d ng g khc ngoi tn t p tin (t c l t t c cc t p tin n m trn m t danh sch chung gi ng nh cc h t ct trn bi bi n) th th m ch c khi khng c gi i h n v di c a tn, r t kh c th tm n t p tin c n thi t. Hy t ng t ng b n c m t danh sch kho ng vi nghn t p tin! Xin ng nghi ng , m t h th ng Linux hon ch nh s c s l ng t p tin cn l n hn th . V th m cc t p tin c t ch c vo cc th m c, cc th m c c th n m trong cc th m c khc, v.v. . . K t qu l chng ta thu c m t c u trc th m c c phn b c b t u t m t th m c g c. M i th m c (con) c th ch a cc t p tin ring l v cc th m c con c a n. C u trc phn b c c a th m c th ng c minh ho b ng cy th m c, trn m i th m c l m t nt c a cy, cn t p tin l cc l. Trn MS Windows ho c DOS c u trc th m c nh v y c trn m i a (t c l chng ta c khng ph i m t cy m m t r ng th m c) v th m c g c c a m i c u trc t p tin c nh d u b ng m t ch ci Latinh (v do c m t s h n ch ). Trn Linux v UNIX ni chung ch c m t c u trc th m c duy nh t cho t t c cc a lu, v th m c g c duy nh t c a c u trc ny c k hi u b ng d u g ch cho /. C th a vo th m c g c ny m t s l ng khng h n ch cc th m c n m trn cc a lu khc nhau (th ng ni l g n h th ng t p tin ho c g n a lu). Tn c a th m c cng c t theo nh ng quy nh nh i v i tn t p tin. V ni chung ngoi c u trc bn trong c a mnh th th m c khng khc g so v i nh ng t p tin thng th ng, v d t p tin vn b n (text file). Tn y c a t p tin (ho c cn g i l ng d n6 n t p tin) l danh sch tn c a cc th m c bao g m th m c ch a t p tin v cc th m c m , b t u t th m c g c / v k t thc l b n thn tn c a t p tin. Trong ng d n ny tn c a cc th m c con cch nhau b i d u g ch cho / dng k hi u th m c g c nh ni trn. V d /home/teppi82/projects/l4u/ext3fs.tex l tn y c a t p tin ti ang nh p vo trn my c a mnh. H v shell lu gi tr c a th m c hi n th i, t c l th m c m ng i dng ang lm vi c trong . C m t cu l nh cho bi t tn c a th m c hi n th i, l l nh pwd. Ghi ch: n u ni m t cch chnh xc, th th m c hi n th i lun i li n v i m i ti n trnh ch y (trong c h v shell), v th i khi ch y m t chng trnh no trong shell c th d n n vi c thay i th m c hi n th i sau khi chng trnh hon thnh cng vi c. Ngoi th m c hi n th i m i ng i dng cn c m t th m c nh (home directory, phng n d ch th m c c nhn c u tin hn, v chng ta s dng thu t ng ny trong cu n sch l4u). l th m c trong ng i dng c ton quy n7 : c th t o v xa cc t p tin, thay i quy n truy c p n chng, v.v. . . Trong c u trc th m c c a Linux nh ng th m c c nhn c a ng i dng th ng n m trong th m c /home v th ng c tn trng v i tn ng nh p c a
6 7

y l ng d n tuy t i Ni chnh xc hn l: c ton quy n n khi no root cha thay i chng :).

64

Lm quen v i h th ng t p tin ext3fs

ng i dng . V d : /home/nhimlui. M i ng i dng c th lm vi c v i th m c c a mnh b ng k hi u ~, t c l ng i dng nhimlui c th lm vi c v i th m c /home/nhimlui/hinhanh b ng ~/hinhanh. Khi ng i dng vo h th ng, th m c c nhn s tr thnh th m c hi n th i c a ng i dng ny. Cu l nh cd dng thay i th m c hi n th i. Tham s c a l nh ny l ng d n y ho c ng d n tng i n th m c m b n mu n dng lm hi n th i. Khi ni m ng d n y (tuy t i) gi i thch trn, by gi chng ta s ni r hn v khi ni m ng d n tng i. ng d n tng i l danh sch cc th m c c n ph i i qua trong cy th m c c th chuy n t th m c hi n th i n th m c khc (chng ta g i n l th m c ch). N u th m c ch n m pha d i trong c u trc th m c, t c l n m trong m t th m c con, ho c chu, ch t no c a th m c hi n th i, th n gi n: ch c n ch ra th m c con c a th m c hi n th i, sau th m c con c a th m c con (th m c chu),. . . cho n khi no t i c th m c ch. N u nh th m c ch n m cao hn trong c u trc th m c, ho c n m hon ton trn m t cnh khc c a cy th m c, th ph c t p hn m t cht. T t nhin trong b t k tr ng h p no cng c th s d ng ng d n tuy t i, nhng khi c n ph i nh p vo m t ng d n r t di. V n ny c gi i quy t nh sau: m i th m c (tr th m c g c) c duy nh t m t th m c m trong cy th m c. Trong m i th m c c hai b n ghi c bi t. M t trong s chng c k hi u l d u ch m (.) v ch n chnh b n thn th m c ny, cn b n ghi th hai c k hi u l hai d u ch m n (..), n ch n th m c m . Chnh nh ng d u hai ch m ny c dng ghi ng d n tng i. V d , dng th m c m lm th m c hi n th i, th ch c n ch y l nh: [user]$ cd .. Cn chuy n leo ln hai b c c a cy th m c, r i t h xu ng th m c vnoss/doc th c n ch y l nh: [user]$ cd ../../vnoss/doc Cu l nh ls dng a ra mn hnh danh sch cc t p tin v th m c con c a th m c hi n th i. C n lu l trn th c t n cu l nh ls ch a ra n i dung c a t p tin m t th m c ny, v khng x y ra b t k no thao tc lm vi c v i t p tin c a th m c. Nh ni trn, m i th m c ch l m t t p tin bnh th ng, trong c li t k t t c nh ng t p tin v th m c con c a th m c ny. T c l khng c cc h p c bi t ch a cc t p tin, ch c cc danh sch t p tin thng th ng xc nh t p tin hi n th i thu c v m t th m c no . N u ch y cu l nh ls khng c tham s th chng ta ch th y tn c a cc t p tin c a th m c hi n th i. N u mu n xem n i dung c a m t th m c khc, th c n ph i a cho cu l nh ls ng d n tuy t i ho c tng i n th m c . V d : [user]$ ls projects BanTin drupal-vn bashscripts fluxbox chem-tex gnomevi debian HocTap KDE-vi l4u manvi mc mrtg others SuSE syslinux Xfce vim vnlinux vnoss

4.3 Cng d ng c a cc th m c chnh

65

B n ghi v t p tin trong th m c tng ng ngoi tn cn c r t nhi u thng tin v t p tin ny. th y c nh ng thng tin chi ti t , th c n dng cc tham s m r ng khc c a cu l nh ls. N u ch y cu l nh ls v i tham s -l th khng ch c tn t p tin m s hi n th c d li u v quy n truy c p n t p tin (chng ta s ni n sau); s l ng lin k t c ng hay s l ng tn (n u l th m c th ngay t u c hai lin k t nh v y l . v .., do s ny b ng s th m c con cng thm 2); tn ch s h u t p tin, tn nhm s h u t p tin (xin c g i t t l nhm t p tin m c d t i ngha); kch th c t p tin v th i gian s a i cu i cng. M t v d minh h a khc:
[user]$ ls t ng 1316 -rw-r--r--rw-rw-r--rw-r--r--rw-r--r--rw-r--r-drwxr-xr-x -rw-r--r--l 1 1 1 1 1 2 1 teppi82 teppi82 teppi82 teppi82 teppi82 teppi82 teppi82 users users users users users users users 81629 98135 783 20778 2013 4096 3267 2006-09-08 2006-09-08 2006-09-08 2006-09-09 2006-09-08 2006-09-08 2006-09-08 22:11 13:54 21:58 02:48 21:34 14:25 23:13 bash.tex caidat.tex ChangeLog ext3fs.tex gioithieu.tex images l4u.tex

N u a thm tham s -i th trong c t u tin s hi n th ch s inode c a t p tin. Khi dng tham s -t vi c s p x p c th c hi n khng theo tn m theo th i gian s a i t p tin. Tham s -u dng hi n th th i gian truy c p cu i cng thay vo ch th i gian s a i. Tham s -r o ng c l i tr t t c a s p x p (c n ph i s d ng cng v i cc tham s -l ho c -t). C n ch r ng c th li t k cc tham s m t cch ring r nh th ny: [user]$ ls -l -i - r ho c g p l i nh th ny: [user]$ ls -lir Chng ta d ng m t ng n g n v cu l nh ls y (chi ti t v l nh ny c th xem trn cc trang man ho c info tng ng) v chuy n sang xem xt cc th m c chnh c a c u trc t p tin trong Linux.

4.3

Cng d ng c a cc th m c chnh

N u nh b n c t ng dng Windows (v d 2000 hay XP), th bi t r ng m c d ng i dng c ton quy n t ch c c u trc th m c, nhng m t s truy n th ng v n c tun theo. V d cc t p tin h th ng th ng n m trong th m c C:\Windows, cc chng trnh th ng c ci t vo C:\Program Files, v.v. . . Trong Linux cng c m t c u trc th m c ki u nh v y v th m ch cn nghim ng t hn. Hn n a c m t tiu chu n xc nh c u trc th m c cho cc HH dng UNIX. Tiu chu n ny c g i l Filesystem Hierarchy Standart (FHS). N u c mong mu n b n c th c ton b tiu chu n ny t i a ch

66

Lm quen v i h th ng t p tin ext3fs

http://www.pathname.com/fhs/. Cc b n phn ph i Linux l n u tun theo tiu chu n ny. B ng 4.1 d i y a ra danh sch ng n g n nh ng th m c chnh c t o ra trong c u trc t p tin theo tiu chu n ni trn. c t bn tri li t k cc th m c con c a th m c g c, cn c t th hai li t k m t vi (khng ph i t t c ) th m c con, cn c t th ba cu i cng a ra m t ng n g n v cng d ng c a nh ng th m c ny. M t trong b ng ny l h t s c ng n g n, chi ti t hn b n c th c trong tiu chu n FHS c trn http://www.pathname.com/fhs/. B ng 4.1: C u trc th m c c a Linux Cng d ng Th m c ny g m ch y u cc chng trnh, ph n l n trong s chng c n cho h th ng trong th i gian kh i ng (ho c trong ch m t ng i dng khi b o tr h th ng). y c lu r t nhi u nh ng cu l nh th ng dng c a Linux. /boot G m cc t p tin c nh c n cho kh i ng h th ng, trong c nhn (kernel). T p tin trong th m c ny ch c n trong th i gian kh i ng8 . /dev Th m c cc t p tin c bi t ho c cc t p tin thi t b ph n c ng. Chng ta s ni n nh ng t p tin ny ngay sau trong m t ph n ring. B n c c th xem qua man mknod (mknode(1)). /etc Th m c ny v cc th m c con c a n lu ph n l n nh ng d li u c n cho qu trnh kh i ng ban u c a h th ng v lu nh ng t p tin c u hnh chnh. V d , trong /etc c t p tin inittab xc nh c u hnh kh i ng, v t p tin ng i dng passwd. M t ph n cc t p tin c u hnh c th n m trong cc th m c con c a /usr. Th m c /etc khng c lu cc t p tin chng trnh (c n t chng trong /bin ho c /sbin. D i y chng ta s xem xt cng d ng c a m t vi(!) th m c con c a th m c /etc. /etc/rc.d Th m c ny lu nh ng t p tin s d ng trong qu trnh kh i ng h th ng. Chng ta s c p chi ti t v nh ng t p tin ny v qu trnh kh i ng ni ring trong m t vi chng s p t i. /etc/skel Khi t o ng i dng m i, th nh ng t p tin trong th m c ny s c sao chp vo th m c c nhn c a ng i dng . /etc/sysconfig Th m c lu m t vi (khng ph i t t c ) t p tin c u hnh h th ng. /etc/X11 Th m c dnh cho cc t p tin c u hnh c a h th ng X11 (v d , xorg.conf). /home Thng th ng trong th m c ny l cc th m c c nhn c a ng i dng (tr root). Th m c /bin

do m t s nh qu n tr khng t ng g n phn vng /boot vo trong qu trnh kh i ng.

4.3 Cng d ng c a cc th m c chnh Th m c /lib Cng d ng Th m c ny lu cc th vi n chia s c a cc hm m trnh bin d ch C v cc mun (cc driver thi t b ) c n. Th m ch n u trn h th ng khng c trnh bin d ch C no, th cc th vi n chia s v n c n thi t, v chng c nhi u chng trnh s d ng. Nh ng th vi n ny ch n p vo b nh khi c nhu c u th c hi n hm no , nh v y cho php gi m kch th c m chng trnh n m trong b nh . Trong tr ng h p ng c l i th cng m t m l p l i nhi u l n trong cc chng trnh khc nhau. Th m c ny s d ng ph c h i h th ng t p tin b ng l nh fsck. N u fsck tm ra t p tin m khng xc nh c th m c m th n s a t p tin vo th m c /lost+found. V th m c m b m t, nn t p tin s nh n c tn trng v i ch s inode c a n. y l i m g n (mount) nh ng h th ng t p tin g n t m th i. N u trn my tnh c ng th i Linux v Windows (DOS) th th m c ny th ng dng g n cc h th ng t p tin FAT. N u b n th ng g n m t vi a lu ng nh a m m, CD, DVD, a c ng ngoi, flash,v.v. . . th c th t o trong th m c ny cc th m c con cho t ng a lu. Th m c dnh cho cc t p tin t m th i. b t k th i i m ny ng i dng root cng c th xa t p tin kh i th m c ny m khng lm nh h ng l n n ng i dng khc. Tuy nhin khng nn xa nh ng t p tin trong th m c ny, tr khi khi b n bi t r ng t p tin ho c nhm t p tin no ang gy nh h ng n cng vi c c a h th ng. H th ng s t ng d n d p th m c ny theo nh k, v th khng nn lu y nh ng t p tin m b n c th s c n n. y l th m c c nhn c a ng i dng cao c p root. Hy ch l th m c ny khng n m cng ch v i th m c c nhn c a nh ng ng i dng khc (trong /home). V th m c /bin ch y u lu cc t p tin th c thi (chng trnh v ti n ch c a HH) s d ng trong qu trnh kh i ng v do nh qu n tr ch y. Trong tiu chu n FHS c ni r ng c n c trong th m c ny nh ng t p tin th c thi s s d ng sau khi g n thnh cng h th ng t p tin /usr. t nh t trong th m c ny ph i c init, mkswap, swapon, swapoff, halt, reboot, shutdown, fdisk, fsck.*, mkfs.*, arp, ifconfig, route. y l i m g n h th ng t p tin proc cung c p thng tin v cc ti n trnh ang ch y, v nhn, v cc thi t b tnh, v.v. . . y l h th ng t p tin o. Chi ti t b n c th c trong man 5 proc. Cc t p tin c bi t c a th m c ny s d ng nh n v g i d li u n nhn.

67

/lost+found

/mnt

/tmp

/root

/sbin

/proc

68 Th m c /usr

Lm quen v i h th ng t p tin ext3fs Cng d ng Th m c ny r t l n v c u trc c a n nhn chung l p l i c u trc c a th m c g c. Trong cc th m c con c a /usr l t t c cc ng d ng chnh. Theo tiu chu n FHS th nn dnh cho th m c ny m t phn vng ring ho c t hon ton trn a s d ng chung trong m ng. Phn vng ho c a th ng g n ch c v trn a (phn vng) l cc t p tin c u hnh cng nh t p tin th c thi dng chung, cc t p tin ti li u, cc ti n ch h th ng v c cc t p tin thm vo (t p tin d ng include). Cc chng trnh (ti n ch v ng d ng) th ng c ng i dng bnh th ng s d ng. /usr/bin/X11 l ni th ng dng lu cc chng trnh ch y trn X Window. V y cng th ng l lin k t n /usr/X11R6/bin. Th m c con ny lu m ngu n c a cc th vi n tiu chu n c a ngn ng C. Ng i dng c n c t nh t l quy n c i v i th m c ny. D trong tr ng h p no cng ng s a nh ng t p tin trong th m c ny, v chng c cc nh pht tri n h th ng ki m duy t k cng (khng l b n bi t v h th ng t t hn cc nh pht tri n). Trong th m c ny l cc th vi n object c a cc chng trnh con, cc th vi n ng (dynamic library), m t s chng trnh khng th g i tr c ti p. Cc h th ng ph c t p (v d Debian Linux) c th c cc th m c con c a mnh trong th m c ny. /usr/lib/X11 ni th ng dng t cc t p tin c lin quan n X Window v cc t p tin c u hnh c a h th ng X Window. Trn Linux th ng l lin k t m m n th m c /usr/X11R6/lib/X11. y th ng t cc chng trnh v cc th m c con (n i b ) ch dnh cho my tnh ny, bao g m:
/usr/local/bin. ng d ng.

/usr/bin

/usr/include

/usr/lib

/usr/local

y th ng lu nh ng chng trnh

/usr/local/doc cc ti li u i km v i chng trnh ng d ng. /usr/local/lib th vi n v t p tin c a cc chng trnh v h th ng n i b . /usr/local/man cc trang tr gip man. /usr/local/sbin cc chng trnh dnh cho nh qu n tr . /usr/local/src m ngu n c a cc chng trnh.

/usr/sbin

Th m c ny g m cc chng trnh th c thi dnh cho nh qu n tr v khng s d ng trong th i gian kh i ng.

4.3 Cng d ng c a cc th m c chnh Th m c /usr/share Cng d ng Th m c ny dng cho t t c cc t p tin d li u dng chung v c quy n truy c p l ch c. Th ng dng chia s gi a cc ki n trc khc nhau c a HH, v d i386, Alpha, v PPC c th dng chung m t th m c /usr/share n m trn m t phn vng ho c a chia s trn m ng. C n ch l th m c ny khng dng chia s gi a cc HH khc nhau ho c gi a cc phin b n khc nhau c a cng m t HH. Tiu chu n FHS khuyn dng th m c con cho m i chng trnh. Nh ng th m c sau ho c lin k t m m sau ph i c trong /usr/share: man (cc trang tr gip man), misc (nh ng gi li u ty theo ki n trc khc nhau). Chng ta xem xt m t vi th m c con c a th m c ny:
/usr/share/dict cc danh sch t (word list) c a ti ng Anh dng cho cc chng trnh ki m tra chnh t nh ispell. /usr/share/man cc trang tr gip man. M i ph n c a man n m trong m t th m c con ring trong th m c ny. /usr/share/misc ( ni

69

trn).

/usr/src /usr/tmp /usr/X11R6

M ngu n c a cc thnh ph n khc nhau c a Linux: nhn, ng d ng. . . M t ni n a lu cc t p tin t m th i. Thng th ng y l lin k t m m n /var/tmp. Cc t p tin thu c v h th ng X Window.
/usr/X11R6/bin cc chng trnh th ng ny.

ng d ng c a h

/usr/X11R6/lib cc t p tin v th vi n c lin quan n X-Window.

/var

/var/adm /var/lock /var/log

Trong th m c ny l cc t p tin lu cc d li u bi n i (variable). Nh ng d li u ny xc nh c u hnh c a m t s chng trnh trong l n ch y sau ho c l nh ng thng tin lu t m th i s s d ng sau. Dung l ng thng tin trong th m c ny c th thay i trong m t kho ng l n, v th m c gi cc t p tin nh b n ghi (log), spool, kha locking, cc t p tin t m th i, v.v. . . Lu cc thng tin v ti kho n v thng tin chu n on dnh cho nh qu n tr . Cc t p tin i u khi n h th ng dng d tr ti nguyn. Cc t p tin b n ghi (log).

70 Th m c /var/run

Lm quen v i h th ng t p tin ext3fs Cng d ng Cc t p tin bi n i trong th i gian th c hi n cc chng trnh khc nhau. Chng lu thng tin v s ti n trnh (PID) v ghi thng tin hi n gh i (utmp). T p tin trong th m c ny th ng c d n s ch trong th i gian kh i ng Linux. T p tin c t vo hng t c a cc chng trnh khc nhau, v d :
/var/spool/at cc cng vi c m at ch y. /var/spool/cron t p tin c a h th ng Verb+cron+. /var/spool/lpd t p tin trong hng i in. /var/spool/mail t p tin thng th c a ng i dng. /var/spool/uucp t p tin c a h th ng uucp.

/var/spool

/var/tmp

Cc t p tin t m th i.

4.4

D ng t p tin

Trong cc ph n tr c chng ta xem xt hai d ng t p tin l t p tin thng th ng v cc th m c. Nh ng trn Linux cn c m t vi d ng t p tin n a. Chng ta s lm quen v i chng trong ph n ny. Nh ni, i v i h i u hnh th t p tin ch l m t chu i cc byte lin t c. Nh v y c th dng khi ni m t p tin cho cc thi t b v cc i t ng khc. i u ny n gi n ho s t ch c v trao i cc d li u, v c th th c hi n ghi d li u vo t p tin, chuy n d li u ln cc thi t b v trao i d li u gi a cc ti n trnh b ng cch tng t nh nhau. Trong t t c cc tr ng h p ny s d ng cng m t phng php d a trn t ng chu i cc byte. Do ngoi cc t p tin thng th ng v th m c, nh ng thnh ph n sau cng c Linux coi l t p tin:
cc t p tin thi t b cc ng (knh) c tn (named pipe) cc socket (t v i ngha nh t chim) cc lin k t m m (symlinks).

4.4.1

Cc t p tin thi t b

Nh ni, i v i Linux th t t c cc thi t b k t n i vo my tnh ( c ng, tho r i, terminal, my in, my scan, mem, bn phm, chu t, v.v. . . ) u l cc t p tin. V d , n u c n a ra mn hnh terminal th nh t thng tin no , th h th ng th c hi n thao tc ghi vo t p tin /dev/tty1. C hai d ng thi t b : k t (hay cn g i l cc thi t b trao i theo byte) v kh i (trao i theo kh i). S khc nhau gi a hai d ng ny n m cch c v ghi

4.4 D ng t p tin

71

thng tin vo cc thi t b . Cc thi t b k t trao i thng tin theo t ng k t (theo t ng byte) trong ch chu i cc byte. V d thi t b d ng ny l terminal. Cn thng tin c c v ghi vo cc thi t b kh i theo cc kh i. V d cc c ng. Khng th c t a c ng v ghi ln t ng byte, trao i thng tin v i a ch c th theo t ng kh i. Trao i d li u v i cc thi t b trn Linux do cc driver thi t b m nhi m. Nh ng driver ny ho c n m trong nhn ho c n m ring d ng mun v c th g n vo nhn sau. trao i v i cc ph n khc c a h i u hnh m i driver t o ra m t giao di n lin l c c v ngoi gi ng nh t p tin. Ph n l n nh ng t p tin nh v y c t o s n t tr c v n m trong th m c dev. N u nhn vo th m c /dev (t c l chuy n vo th m c b ng l nh cd r i ch y ls), th b n s th y m t l ng kh ng l nh ng t p tin thi t b . B ng 4.2 cho bi t nh ng t p tin th ng dng nh t. B ng 4.2: Nh ng t p tin thi t b chnh T p tin ngha /dev/console Console h th ng t c l mn hnh v bn phm k t n i t i my tnh. /dev/hd Cc c ng v i giao di n IDE. Thi t b /dev/hda1 tng ng v i phn vng u tin c a a c ng u tin, a /dev/hda, t c l a Primary Master. /dev/sd c ng v i giao di n SCSI. /dev/fd Cc t p tin a m m. u tin l /dev/fd0, th hai l /dev/fd1. /dev/tty Cc t p tin h tr terminal c a ng i dng. Tn g i v n c lu k t khi k t n i teletype vo cc h th ng UNIX lm terminal. Trn Linux nh ng t p tin ny h tr cc terminal o (hy nh l i chng tr c). /dev/pty Cc t p tin h tr terminal gi . S d ng cho cc k t n i t xa qua telnet. /dev/ttS T p tin h tr lm vi c v i cc c ng k t ti p nhau (cc c ng COM). /dev/ttS0 tng ng v i COM1 trong DOS, /dev/ttS1 tng ng v i COM2. /dev/cua Cc t p tin cho mem. /dev/null Thi t b ny c th g i l l en. T t c nh ng g ghi vo /dev/null s m t vnh vi n. Nh ng ng i vi t script th ng chuy n nh ng thng bo khng c n thi t vo thi t b ny. N u s d ng /dev/null lm thi t b nh p vo, th s thu c m t chu i cc s 0, t c l trong tr ng h p ny t p tin c c b ng 0. M i d ng thi t b c th c m t vi t p tin thi t b . V th cc t p tin thi th ng c hai s : l n (major) v nh (minor). S l n c a thi t b cho nhn bi t p tin ny thu c v driver no, cn s nh cho bi t c n ph i lm vi c v i thi c th no c a d ng ny. i v i cc t p tin thi t b , cu l nh ls -l cho bi l n v s nh ni thay v kch th c c a t p tin. tb t l tb ts

4.4.2

Cc ng c tn (pipes)

Cn c m t d ng t p tin thi t b n a l cc ng c tn, hay b m FIFO (First In First Out). T p tin d ng ny ch y u dng t ch c trao i d li u gi a

72

Lm quen v i h th ng t p tin ext3fs

cc chng trnh khc nhau (pipe d ch t ti ng Anh sang l ng, ng ng). ng l phng ti n h t s c thu n ti n v s d ng r ng ri trao i thng tin gi a cc ti n trnh. M t ti n trnh c th c t t c nh ng g m m t ti n trnh khc t vo ng. N u c hai ti n trnh c sinh ra t cng m t ti n trnh m trao i thng tin (th ng x y ra), th ng c th khng c tn. Trong tr ng h p ng c l i c n t o ra m t ng c tn, v d b ng chng trnh mkfifo. Khi ny b n thn t p tin ng ch tham gia vo s kh i u trao i d li u.

4.4.3

Cc socket

Socket l k t n i gi a cc ti n trnh, cho php chng giao ti p m khng ch u nh h ng c a cc ti n trnh khc. Ni chung socket v s trao i qua socket ng vai tr h t s c quan tr ng trn t t c cc h th ng UNIX, trong c Linux: socket l khi ni m then ch t c a TCP/IP v nh v y l d a trn socket xy d ng ton b Internet. Tuy nhin t pha h th ng t p tin socket th c t khng khc cc ng c tn: ch l cc i m cho php n i cc chng trnh v i nhau. Sau khi t o ra k t n i, th trao i c th c hi n m khng c n n socket: d li u do nhn chuy n tr c ti p t chng trnh ny n chng trnh khc. M c d nh ng ti n trnh khc c th th y cc t p tin socket, nhng nh ng ti n trnh khng tham gia vo k t n i hi n th i khng th th c hi n b t k thao tc c hay ghi no ln t p tin socket. Trong s nh ng h th ng s d ng socket c n k n X Window, h th ng in v h th ng syslog.

4.4.4

Lin k t m m

Trong ph n v tn t p tin chng tr c chng ta ni r ng t p tin trong Linux c th c vi tn hay lin k t c ng. Lin k t c ng ch l m t tn khc cho t p tin ban u. N c ghi trong m t inode c a t p tin . Sau khi t o lin k t c ng khng th phn bi t u l tn t p tin cn u l lin k t. N u b n c xa m t trong s nh ng t p tin ny (ni ng hn l m t trong s nh ng tn ny), th t p tin v n cn c lu trn a cho n khi v n cn t nh t m t tn. R t kh phn bi t tn u tin c a t p tin v nh ng lin k t c ng c t o ra sau . V v y ch dng lin k t c ng nh ng ni khng c n bi t s khc nhau. M t trong nh ng ng d ng c a lin k t c ng l ngn ch n kh nng xa t p tin m t cch v tnh. i m c bi t c a lin k t c ng l n ch th ng n ch s inode, v do lin k t c ng ch c th dng cho t p tin c a cng m t h th ng t p tin, t c l trn cng m t phn vng (a lu). Nhng trn Linux cn c m t d ng lin k t khc g i l (lin k t t ng trng9 ). Nh ng lin k t ny cng c th coi l tn ph cho t p tin, nhng chng l nh ng t p tin khc nh ng t p tin lin k t m m. Khc v i lin k t c ng, lin k t m m c th ch n nh ng t p tin n m trong h th ng t p tin khc, v d trn nh ng a lu ng, ho c th m ch trn m t my tnh khc. N u t p tin ban u b xa, th lin k t m m tuy khng b xa nhng tr thnh v gi tr . Hy s d ng lin k t m m trong nh ng tr ng h p b n mu n trnh s l m l n m lin k t c ng c th gy ra, ho c khi t p tin n m trn m t h th ng t p tin khc.
9

thu t ng ny v n cha c th ng nh t, do a ra c hai tr ng h p c th g p.

4.5 Quy n truy c p n t p tin v th m c

73

Vi c t o b t k m t lin k t no cng gi ng nh sao chp t p tin, nhng khc ch l tn ban u c a t p tin cng nh lin k t cng ch n m t t p tin th c s trn a. V th n u b n c thay i t p tin qua m t tn no c a n, th s th y nh ng thay i ny khi xem t p tin qua tn khc. t o lin k t m m c n s d ng cu l nh ln ni n v thm vo ty ch n -s: [user]$ ln -s tn_t p_tin tn_lin_k t V d : [user]$ ln -s projects/l4u/l4u-0.9.2.pdf ~/l4u.pdf Sau khi th c hi n cu l nh ny trong th m c c nhn c a ti xu t hi n t p tin l4u.pdf. V by gi n u xem danh sch t p tin trong th m c b ng cu l nh ls -l, th trong danh sch s c m t dng nh sau:
lrwxrwxrwx 1 teppi82 users 20 2006-09-10 06:39 l4u.pdf -> projects/l4u/l4u-0.9.2.pdf

Hy ch n k t u tin c a dng ny, n cho chng ta bi t t p tin l m t lin k t m m. T t nhin i u ny c th th y r trong ph n cu i (ph n tn t p tin), sau tn t p tin c a lin k t l m t mi tn ch n t p tin ban u. N u b n t o trong th m c mot m t lin k t m m ch n m t th m c khc, th c th di chuy n th m c mot i u ty thch, lin k t m m khi v n lm vi c ng. Cng nh v y i v i chnh b n thn lin k t m m. Nhng khi t o lin k t m m, hy h n ch s d ng .. (lin k t n th m c m ) trong tn t p tin ch n, b i v v tr c a lin k t m m c th thay i, m .. lun lun l th m c m c a th m c hi n th i.

4.5

Quy n truy c p n t p tin v th m c

B i v Linux l h i u hnh nhi u ng i dng, nn yu c u quy nh truy c p n cc t p tin v th m c l m t trong nh ng yu c u thi t y u nh t m h i u hnh ph i gi i quy t. C ch quy nh truy c p c pht tri n cho h th ng UNIX vo nh ng nm 70 c a th k tr c r t n gi n nhng c hi u qu n n i c s d ng hn 30 nm, v hi n th i v n cn c s d ng gi i quy t bi ton ny. C s c a c ch quy nh quy n truy c p l tn ng i dng v tn nhm c a ng i dng. Nh b n bi t trong Linux m i ng i dng c m t tn ring khng l p l i dng ng nh p vo h th ng. Ngoi ra, trn h th ng cn c cc nhm ng i dng, v Linux cho php m t ng i dng c th n m trong m t ho c nhi u nhm. T o v xa cc nhm l cng vi c c a ng i dng cao c p root, v root c th thay i thnh ph n c a m t nhm no . Thnh vin c a cc nhm khc nhau c th c quy n truy c p khc nhau n t p tin, v d nhm cc nh qu n tr c quy n nhi u hn so v i nhm cc nh l p trnh. Trong m t inode c a m i t p tin c ghi tn c a ch v nhm s h u t p tin. Ngy t u khi t o t p tin ch c a n l ng i dng t o ra n. Ni chnh xc hn l ng i dng m ti n trnh t o t p tin ch y d i tn h . Cng lc v i

74

Lm quen v i h th ng t p tin ext3fs

ch s h u, tn c a nhm s h u cng c ghi vo theo thng tin tn nhm c a ti n trnh t o t p tin. C th thay i ch v nhm s h u trong qu trnh lm vi c sau ny b ng hai cu l nh chown v chgrp (chng ta s c p k hn v hai l nh ny ngay sau y). By gi hy th c hi n m t l n n a cu l nh ls -l, nhng c thm m t tham s n a l tn c a m t t p tin c th no . V d t p tin chng trnh c a h v bash /bin/bash. Nhn ti n, hy ch kh nng ny c a cu l nh ls -l hi n th thng tin v m t t p tin c th no ch khng ph i t t c cc t p tin trong th m c m t lc. [user]$ ls -l /bin/bash -rwxr-xr-x 1 root root 501804 2006-04-23 05:46 /bin/bash Nh b n c th y, trong tr ng h p ny ch s h u l ng i dng root, nhm s h u root. Nhng by gi trn dng ny chng ta s quan tm hn n vng u tin, vng xc nh d ng t p tin v quy n truy c p n n. Vng ny trong v d trn l chu i cc k t t m th i cha ni ln i u g -rwxr-xr-x. Nh ng k t ny c th t m chia thnh b n nhm. Nhm th nh t ch g m m t k t xc nh d ng t p tin (m t trong b n d ng nu ph n trn). N c th l m t trong s nh ng k t sau:
(g ch ngang) t p tin thng th ng d th m c b t p tin thi t b kh i c t p tin thi t b k t s socket p ng c tn (pipe) l lin k t m m (symbolic link).

Sau k t xc nh d ng t p tin l ba nhm, m i nhm g m ba k t xc nh quy n truy c p tng ng cho ch s h u, nhm s h u t p tin v cho nh ng ng i dng khc. Trong v d c a chng ta quy n truy c p c a ch s h u l rwx, c ngha l ch s h u root c quy n c (r), ghi vo t p tin (w) v ch y t p tin ny (x). Thay b t k k t no trong s nh ng k t ny b ng d u g ch ngang c ngha l ng i dng b t c m t quy n tng ng. Cng trong v d trn chng ta th y, t t c nh ng ng i dng khc (k c nh ng ng i dng c a nhm root) b t c m t quy n ghi vo t p tin ny, c ngha l h khng th s a t p tin v ni chung l khng th thay i t p tin b ng cch no . Quy n truy c p v thng tin v d ng t p tin trn cc h th ng UNIX c lu trong m t inode d ng c u trc 2 byte (16 bit). i u ny l t t nhin v my tnh ch lm vi c d a trn cc bit ch khng ph i d a trn cc k t r, w, x. B n bit trong s 16 bit ny c dng cho b n ghi v d ng t p tin. Ba bit ti p theo xc nh cc tnh ch t c bi t c a t p tin th c thi (chng ta s ni n m t cht sau). V cu i cng 9 bit cu i cng xc nh quy n truy c p n t p tin. 9

4.5 Quy n truy c p n t p tin v th m c

75

bit ny chia thnh ba nhm, m i nhm 3 bit. Ba bit u tin xc nh quy n c a ch s h u, ba bit ti p theo quy n c a nhm s h u, ba bit cu i cng quy n c a nh ng ng i dng cn l i (t c l t t c nh ng ng i dng, tr ch s h u v nhm s h u t p tin). Khi ny n u bit tng ng c gi tr b ng 1, th c quy n , cn n u b ng 0 th quy n b t c m t. d ng ch ci th 1 c thay th b ng cc ch ci tng ng (r, w ho c x), cn 0 th hi n d ng d u g ch ngang. Quy n c r t p tin c ngha l ng i dng c th xem n i dung t p tin b ng cc chng trnh xem khc nhau, v d more, ho c b ng cc trnh so n th o vn b n. Nhng khi so n th o b n s khng th lu nh ng thay i trong t p tin ln a, n u khng c quy n ghi w vo t p tin ny. Quy n th c thi (ti thch dng thu t ng quy n g i) c ngha l b n c c th n p t p tin vo b nh v th ch y m ny gi ng nh tr ng h p chng trnh. T t nhin n u trn th c t t p tin khng ph i l chng trnh (ho c cc script shell, perl, . . . ) th khng th g i t p tin, nhng ng c l i n u t p tin l chng trnh m khng c quy n g i th cng khng th ch y chng trnh . Nh v y l chng ta bi t c trn Linux nh ng t p tin no l c th th c thi. B n th y khng, ph n m r ng c a t p tin y khng c lin quan g, t t c u do tnh ch t th c thi t ra, v khc v i cc HH c a Microsoft khng ph i ai cng c quy n g i t p tin. N u v n th c hi n cu l nh ls -l nhng tham s khng ph i l tn t p tin m l tn th m c th chng ta s th y th m c cng c quy n truy c p v cng v n nh ng ch ci r, w, x ni trn c dng xc nh quy n truy c p n th m c. V d , n u th c hi n cu l nh: [user]$ ls -l /usr th s th y dng tng ng v i th m c share nh sau: drwxr-xr-x 128 root root 4096 2006-09-07 02:20 share

T t nhin l i v i th m c th ngha c a cc khi ni m quy n c, quy n ghi v quy n g i c thay i m t cht. Quy n c i v i th m c th h t s c d hi u, n u chng ta nh r ng th m c cng ch l t p tin lu danh sch cc t p tin khc trong th m c . Cho nn n u ng i dng c quy n c th m c, th t c l c th xem n i dung c a th m c (c th ni khc l xem danh sch t p tin trong th m c). Quy n ghi cng d hi u. Khi c quy n ny, ng i dng c th t o v xa cc t p tin trong th m c, t c l thm vo ho c xa kh i th m c dng lu thng tin v m t t p tin no v cc lin k t tng ng. Quy n g i i v i th m c c hi kh hi u m t cht. Trong tr ng h p ny quy n g i ch quy n chuy n vo th m c ny. N u b n c l ch s h u th m c v mu n cho nh ng ng i dng khc quy n xem m t t p tin no trong th m c c a mnh th c n ph i cho h quy n truy c p (chuy n) vo th m c ny, t c l cho nh ng ng i dng khc quy n g i (th c thi) th m c. Hn n a cn c n ph i cho ng i dng quy n g i i v i t t c cc th m c n m tr c th m c ny trong cy th m c. Chnh v v y m theo m c nh t t c cc th m c c t quy n g i cho ch s h u cng nh nhm v nh ng ng i dng khc. V t t nhin n u mu n ngn ch n truy c p vo th m c th ch c n b i quy n chuy n vo th m c (r) c a

76

Lm quen v i h th ng t p tin ext3fs

t t c ng i dng (k c nhm s h u). ng t c b quy n ny c a chnh b n thn mnh, n u khng s ph i ph c h i l i n tr c khi c th c cc t p tin. Sau khi c o n trn c th th y quy n c th m c l th a thi v khng cho ra tnh nng g m i so v i quy n g i. Tuy nhin v n c s khc nhau gi a hai quy n ny. N u ch a ra quy n g i, th ng i dng c th vo th m c, nhng s khng th y b t k m t t p tin no khi ch y l nh ls (c th th y r hn n u b n s d ng chng trnh Midnight Commander). N u c quy n truy c p t i m t th m c con no c a th m c ny, th b n c th chuy n sang th m c con b ng l nh cd, nhng c n ph i nh tn c a th m c con ny, v s khng th y b t k danh sch v t p tin th m c no (tr ng h p ny gi ng nh khi chng ta i trong mn m khng th y ng, ch nh h ng i). C ch ki m tra quy n ng i dng khi s d ng t p tin nh sau. u tin h th ng ki m tra xem tn ng i dng c trng v i tn ch s h u t p tin hay khng. N u hai tn ny trng nhau (t c l ch s h u ang dng t p tin c a mnh), th ki m tra xem ch s h u c cc quy n truy c p tng ng ( c, ghi v g i) khng. ng ng c nhin khi ch s h u l i khng c t t c m i quy n, ng i dng root c th t c b m t s quy n c a ch s h u t p tin. N u c quy n truy c p , th s c cho php th c hi n thao tc tng ng. N u ch s h u khng c quy n no , th th m ch h th ng khng ki m tra quy n c th c nhm s h u v nh ng ng i dng khc m a ra lun thng bo l i khng th th chieejn c hnh ng yu c u (d ng Permission denied). N u tn ng i dng khng trng v i tn ch s h u th h th ng ki m tra xem ng i dng ny c n m trong nhm s h u hay khng. N u c th kh nng truy c p n t p tin c xc nh b ng quy n truy c p c a nhm, v khng ch n cc quy n c a ch s h u v nh ng ng i dng cn l i. N u ng i dng khng ph i l ch s h u v cng khng n m trong nhm s h u, th quy n c a h c xc nh b ng nhm tnh ch t th ba (nhm dnh cho nh ng ng i dng cn l i). Nh v y nhm tnh ch t th ba trong quy n truy c p l dnh cho t t m i ng i dng, tr ch s h u v nh ng ng i dng n m trong nhm s h u. thay i quy n truy c p t i t p tin ng i ta s d ng l nh chmod (change mode). C hai cch s d ng l nh ny. Khi dng cch th nh t b n ph i ch ra r rng thm quy n no cho ai ho c t c quy n no v c a ai nh sau: [user]$ chmod wXp tn_t p_tin Trong , ch k t w ph i t m t trong cc k t sau:

u ch s h u g nhm s h u g o nh ng ng i dng cn l i a t t c bao g m ch s h u, nhm v nh ng ng i dng cn l i.

ch X l m t trong cc k t sau:
+ thm quy n t c b quy n

4.5 Quy n truy c p n t p tin v th m c


= dng quy n ch ra thay cho quy n c.

77

ch p l m t trong nh ng k t sau:
r quy n c w quy n ghi x quy n g i (quy n th c hi n.

Sau y l m t s v d s d ng cu l nh chmod: [user]$ chmod a+x tn_t p_tin thm quy n g i t p tin tn_t p_tin cho m i ng i dng c a h th ng. [user]$ chmod go-rw tn_t p_tin t c b quy n c v ghi c a m i ng i dng tr ch s h u t p tin. [user]$ chmod ugo+rwx tn_t p_tin [user]$ chmod a+rwx tn_t p_tin cho m i ng i dng quy n c, ghi v g i (th c hi n). [user]$ chmod u=rwx,go=x tn_t p_tin cho ch s h u c t t c m i quy n ( c, ghi, g i), nh ng ng i dng cn l i ch c quy n g i (th c hi n). N u khng ch ra ai c thm quy n truy c p, th s p d ng cho t t c m i ng i dng, t c l c th dng l nh: [user]$ chmod +x tn_t p_tin thay cho [user]$ chmod a+x tn_t p_tin Phng n s d ng th hai c a cu l nh chmod c kh hi u hn m t cht trong th i gian u s d ng Linux, nhng l i th ng xuyn c cc nh qu n tr cng nh ng i dng c kinh nghi m dng. N d a trn m ha quy n truy c p d ng s . K t r c m ha b ng s 4, w s 2, x s 1. xc nh quy n c a ng i dng c n c ng cc s tng ng l i v i nhau. Sau khi thu c ba gi tr s (cho ch s h u, nhm s h u v nh ng ng i dng cn l i), chng ta a ba s ny vo dng lm tham s cho l nh chmod. Chng ta c n t ba s ny pha sau tn l nh v pha tr c tham s th hai (tn t p tin). V d , n u c n cho ch s h u m i quy n (4+2+1=7), cho nhm s h u quy n c v ghi (4+2=6) v nh ng ng i dng cn l i quy n g i (1=1), th dng l nh sau: [user]$ chmod 761 tn_t p_tin

78

Lm quen v i h th ng t p tin ext3fs

N u b n bi t v m i c a h c s tm, th hi u r ng nh ng s ng sau tn l nh khng ph i g khc m chnh l b n ghi h c s tm c a 9 bit xc nh quy n truy c p cho ch s h u, nhm s h u v nh ng ng i dng cn l i. Ch c ch s h u t p tin ho c ng i dng cao c p m i c kh nng thay i quy n truy c p b ng cu l nh chmod. c th thay i quy n c a nhm s h u, th ch s h u (khng ph i root) ph i l thnh vin c a nhm . k t thc bi h c v quy n truy c p n t p tin c n ni thm v nh ng tnh ch t khc c th g p c a t p tin m cng xc nh b ng l nh chmod. l nh ng tnh ch t cho cc t p tin th c thi. Trong m t inode, ph n c u trc 2 byte xc nh tnh ch t t p tin, chng chi m cc v tr 5 7 ngay sau m cho bi t d ng t p tin. Tnh ch t u tin l bit thay i ID10 ng i dng. ngha c a bit ny nh sau. Thng th ng, khi ng i dng g i th c hi n m t chng trnh no , th chng trnh ny nh n c nh ng quy n truy c p n t p tin v th m c c a ng i dng ch y n. N u nh c t bit thay i ID ng i dng, th chng trnh nh n c quy n truy c p n t p tin v th m c c a ch s h u t p tin chng trnh. Nh v y bit ny cn c th g i l bit thay i ID ch s h u ti n trnh. i u ny cho php gi i quy t m t s v n kh th c hi n. V d i n hnh nh t l cu l nh thay i m t kh u passwd. T t c m t kh u c lu trong t p tin /etc/passwd (ho c m t t p tin m ha no khc, trong a s tr ng h p l /etc/shadow) m ch s h u l ng i dng cao c p root. V th chng trnh n u do ng i dng ch y s khng th th c hi n l nh ghi vo t p tin ny. C ngha l ng i dng khng th thay i m t kh u c a mnh. Nhng t p tin /usr/bin/passwd c bit thay i ID ng i dng, v root l ch s h u t p tin chng trnh ny. Do chng trnh thay i m t kh u passwd c ch y v i quy n root v nh n c quy n ghi vo t p tin /etc/passwd. T t nhin l trong chng trnh passwd c m ng i dng ch c php thay i m t dng trong t p tin ny dng ti kho n c a ng i dng . Ng i dng cao c p root c th t bit thay i ID ng i dng b ng l nh: [root]# chmod +s tn_t p_tin Tng t nh v y chng ta c bit thay i ID nhm. ngha c a bit ny cng gi ng nh trn nhng ch thay th ng i dng b ng nhm. M t tnh ch t n a c a t p tin th c thi l bit dnh (chnh xc hn l bit lu chng trnh) hay thu t ng ti ng Anh l sticky bit. Chng ta s dng thu t ng bit lu chng trnh v ng v i ng c nh ny hn. Bit ny ch h th ng bi t sau khi d ng chng trnh c n lu l i n trong b nh . R t thu n ti n khi t bit ny cho nh ng chng trnh th ng g i, v trong tr ng h p ny s ti t ki m c th i gian n p chng trnh vo b nh m i l n ch y. Bit ny ch c n thi t trn nh ng my c. Trn nh ng my top model (high end) hi n i th r t hi m khi s d ng. N u s d ng phng n xc nh tnh ch t d ng s c a l nh chmod, th gi tr c a ba tnh ch t v a ni ph i n m tr c nh ng s xc nh quy n truy c p (t c l s u tin trong dy 4 s xc nh t t c cc tnh ch t c a t p tin). V d :
Identificator, m i ng i dng c m t ID d ng s nh v y. ID c a ng i dng l duy nh t, khng trng l p. V d ID c a ng i dng cao c p root l 0.
10

4.6 Cc cu l nh c b n lm vi c v i t p tin v th m c [root]# chmod 4775 tn_t p_tin

79

Khi ny cng v n s d ng php c ng nh i v i tr ng h p quy n truy c p v cc tnh ch t c gi tr nh sau:


4 bit thay i ID ng i dng 2 bit thay i ID nhm 1 bit lu chng trnh (sticky bit).

N u c (nh ng) bit no trong s ba bit ny c t (nh n gi tr 1), th s c thay i c a k t qu c a l nh ls -l trong ph n quy n truy c p (ph n u tin). N u bit thay i ID ng i dng b ng 1, th k t x trong ph n xc nh quy n truy c p c a ch s h u s c thay th b ng k t s. Lc ny n u ch s h u c quy n g i t p tin th k t x c thay th b ng ch ci s nh , cn ng c l i (v d t p tin khng ph i l chng trnh), th thay th x b ng ch ci S l n. S thay th nh v y cng x y ra n u c t bit thay i ID nhm, t t nhin l s thay th k t x trong ph n xc nh quy n truy c p c a nhm s h u. N u bit lu chng trnh (sticky bit) b ng 1, th thay th k t x trong ph n xc nh quy n truy c p c a nh ng ng i dng cn l i b ng k t t, n u nh ng ng i dng cn l i c quy n th c hi n t p tin, b ng k t T, n u ng c l i. Nh v y, m c d trong k t qu c a l nh ls -l khng c nh ng v tr ring hi n th k t qu c a ba bit (bit thay i ID ng i dng, bit thay i ID nhm v bit lu chng trnh), chng ta v n c th th y c nh ng thng tin ny. M t vi v d : [user]$ ls -l /usr/bin/passwd /usr/bin/write -rwsr-xr-x 1 root shadow 72836 2006-05-02 12:50 /usr/bin/passwd -rwxr-sr-x 1 root tty 8936 2006-05-02 10:50 /usr/bin/write ( y chng ta th y c th li t k nhi u t p tin trn dng l nh ls -l, t c l dng nhi u t p tin lm tham s cho l nh ls.) [user]$ touch vidu [user]$ chmod 7766 vidu [user]$ ls -l vidu -rwsrwSrwT 1 teppi82 users 0 2006-09-11 12:46 vidu

4.6

Cc cu l nh c b n lm vi c v i t p tin v th m c

Trong nh ng ph n tr c chng ta c p n m t vi cu l nh lm vi c v i t p tin v th m c, l pwd, cd, ls, ln, chmod. Trong ph n ny chng ta s xem xt m t cch ng n g n m t vi cu l nh th ng dng n a.

80

Lm quen v i h th ng t p tin ext3fs

4.6.1

Cu l nh chown v chgrp

Nh ng cu l nh ny dng thay i ch s h u v nhm s h u t p tin. Ch c ng i dng cao c p root m i c quy n thay i ch s h u, cn thay i nhm s h u t p tin c th l root ho c ng i dng ch s h u. c quy n thay i nhm, th ch s h u cn ph i l thnh vin c a nhm s s h u t p tin ny. C php c a hai cu l nh ny tng t nhau: [root]# chown tn_ng i_dng tn_t p_tin [root]# chgrp tn_nhm tn_t p_tin

4.6.2

Cu l nh mkdir

Cu l nh mkdir cho php t o th m c con trong th m c hi n th i. Tham s c a cu l nh ny l tn c a th m c mu n t o ra. Trong th m c v a t o s t ng t o ra hai m c: . (lin k t n chnh b n thn th m c ny) v .. (lin k t n th m c m ). t o ra th m c con, b n c c n ph i c quy n ghi vo th m c hi n th i. C th t o ra th m c con trong m t th m c khc th m c hi n th i, nhng khi ny c n ph i ch ra ng d n t i . V d : [user]$ mkdir ~/projects/l4u/images (hy nh l i k hi u dng ch c a ng i dng). C th dng cc ty ch n sau c a cu l nh mkdir:
-m mode xc nh quy n (ch ) truy c p cho th m c m i (v d : -m 700) -p t o ra cc th m c trung gian ch ra trong ng d n (n u cha c chng). V d :
teppi82@ThinhQuyen:~> mkdir mot/hai mkdir: cannot create directory mot/hai: No such file or directory teppi82@ThinhQuyen:~> mkdir -p mot/hai teppi82@ThinhQuyen:~> ls -l mot t ng 4 drwxr-xr-x 2 teppi82 users 4096 2006-09-11 13:36 hai

4.6.3

Cu l nh cat

Cu l nh cat th ng dng t o cc t p tin, m c d c th s d ng l nh touch. L nh cat cng a ra mn hnh ( u ra) n i dung c a (cc) t p tin dng lm tham s c a n. N u chuy n k t qu lm vi c c a l nh cat vo m t t p tin no th c th t o ra b n sao c a t p tin nh sau: [user]$ cat t p_tin1 > t p_tin2 Chnh b n thn cu l nh cat lc u c pht tri n dng cho vi c chuy n h ng k t qu lm vi c. V n c t o ra cho s mc n i (concatenate, n u dng thu t ng c a Ho h c l s c ng cc t p tin), t c l s k t h p cc t p tin khc nhau vo m t:

4.6 Cc cu l nh c b n lm vi c v i t p tin v th m c [user]$ cat t p_tin1 t p_tin2 ... t p_tinN > t p_tin_m i

81

V cng chnh kh nng chuy n h ng k t qu c a cu l nh ny c dng t o cc t p tin m i. Khi ny u vo c a l nh cat l dng d li u nh p t bn phm ( u vo tiu chu n), cn u ra s l t p tin m i: [user]$ cat > t p_tin_m i Sau khi nh p vo nh ng g mu n nh p, hy nh n t h p phm <Ctrl>+<D> ho c <Ctrl>+<C>, v t t c nh ng g b n g s c lu l i trong t p tin t p_tin_m i. T t nhin l nh v y ch y u dng cat t o cc t p tin vn b n ng n.

4.6.4

Cu l nh cp

M c d i khi c th dng cu l nh cat sao chp cc t p tin, nhng trong Linux c m t cu l nh chuyn dng cho vi c ny l nh cp. C th p d ng m t trong hai d ng c a l nh ny: [user]$ cp [ty_ch n] ngu n ch [user]$ cp [ty_ch n] th_m c_ngu n th_m c_m i Trong tr ng h p th nh t sao chp t p tin (ho c th m c) ngu n vo t p tin (ho c th m c) ch. Cn trong tr ng h p th hai th t p tin c trong th_m c_ngu n s c sao chp vo th m c th_m c_m i. sao chp th c n c quy n c t p tin mu n sao chp v quy n ghi vo th m c s sao chp n (th m c ch). N u s d ng m t t p tin c vo ch c a t p tin ch th n i dung c a n s b xa m t, do v y khi sao chp c n ph i c n th n. V l i c th s d ng cu l nh cp v i ty ch n -i. Khi tr c khi ghi chn ln t p tin c h th ng s h i l i ng i dng. R t nn dng ty ch n ny. Cu l nh cp cn c m t vi ty ch n c ch khc li t k trong b ng 4.3. B ng 4.3: Nh ng ty ch n chnh c a l nh cp ngha Gi l i th i gian s a i t p tin v c gi l i nh ng quy n truy c p c th gi l i. N u khng a ra ty ch n ny th quy n truy c p c a t p tin s c thi t l p theo quy n c a ng i dng ch y l nh. R ho c r N u ngu n l th m c th sao chp th m c cng v i t t c nh ng g (t p tin, th m c con) n m trong n, t c l gi l i c c u trc c a th m c b n u (recursive). d N u a ra ty ch n ny th cc lin k t m m s v n l cc lin k t, n u khng th s sao chp t p tin (n i dung) m lin k t ny ch n. f Ghi chn t p tin khi sao chp m khng h i l i hay c nh bo. Ty ch n p

82

Lm quen v i h th ng t p tin ext3fs

4.6.5
N m t m gi

Cu l nh mv

u b n khng c n sao chp, m c n di chuy n t p tin t m t th m c ny vo t th m c khc, th c th s d ng cu l nh mv. C php c a l nh ny tng nh c php c a cp. Hn n a, l nh ny u tin sao chp t p tin (hay th c), v sau m i xa t p tin (th m c) ban u. Cc ty ch n c a n cng ng nh c a cp. Cu l nh mv khng ch dng di chuy n, m cn dng thay i tn t p tin v th m c, t c l di chuy n chng trong ph m vi c a m t th m c. Ch c n t vo ch hai tham s tn c v tn m i c a t p tin nh th ny: [user]$ mv tn_c tn_m i

Nhng hy ch l cu l nh mv khng cho php i tn m t vi t p tin cng lc b ng cch s d ng cc m u tn. Do cu l nh: [user]$ mv *.doc *.odt s khng lm vi c. Khi s d ng l nh mv cng gi ng nh khi s d ng cp, ng quy n thm vo ty ch n -i hi n ra c nh bo khi c t p tin s b ghi chn.

4.6.6

Cu l nh rm v rmdir

xa nh ng t p tin v th m c khng c n thi t trn Linux c cc cu l nh rm (xa t p tin) v rmdir (xa th m c r ng). s d ng nh ng cu l nh ny, b n c c n c quy n ghi vo th m c lu nh ng t p tin ho c th m c mu n xa. Khi ny quy n thay i chnh b n thn cc t p tin v th m c l khng c n thi t. N u mu n cu h i xc nh n s cho php c a ng i dng xu t hi n tr c khi xa t p tin, th hy dng ty ch n -i (r t d nh , ty ch n ny c nh ng cu l nh cp, mv k trn). N u dng cu l nh rm (khng c ty ch n) xa th m c th s xu t hi n thng bo d ng cannot remove l4u: Is a directory (khng th xa b , y l th m c). xa th m c th c n xa t t c nh ng t p tin c trong n, sau xa b n th n th m c b ng l nh rmdir. Tuy nhin c th xa th m c khng r ng cng v i t t c nh ng t p tin v th m c c trong n, n u s d ng cu l nh rm v i ty ch n -r. N u ch y l nh rm *, th s xa t t c nh ng t p tin c trong th m c hi n th i. Cc th m c con khng b ng t i. xa c t p tin v th m c con c a th m c hi n th i c n dng ty ch n -r k trn. Tuy nhin c n lun lun nh r ng, trn Linux khng c cu l nh ph c h i t p tin sau khi xa, th m ch c khi v a xa xong11 . Theo ti ngh b t k ng i dng Linux no cng c th chia s v i b n c m gic b m t t p tin ngay tr c m t. V th hy khi hai l n tr c khi xa g v ng qun ty ch n -i.
C m t s cch ph h i t p tin xa trn h th ng t p tin c ext3fs, nhng chng ta l nh ng ng i dng m i, do khng xem xt chng. T t nhin b n c th tham kh o ti li u HOWTO c trn http: //www.tldp.org ny trong tr ng h p kh n c p.
11

4.6 Cc cu l nh c b n lm vi c v i t p tin v th m c

83

4.6.7

Cu l nh more v less

Cu l nh cat cho php a ra mn hnh ( u ra tiu chu n) n i dung c a b t k t p tin ny, tuy nhin r t t khi l nh cat c s d ng cho m c ch ny, v ch dng hi n th nh ng t p tin c dung l ng r t nh . Nguyn nhn l n i dung c a t p tin l n s ngay l p t c ch y qua mn hnh v ng i dng ch th y nh ng dng cu i cng c a t p tin. V th cat dng ch y u theo ch c nng chnh c a n, t c l dng c ng cc t p tin, cn xem n i dung c a cc t p tin vn b n chng ta dng cc l nh more v less ho c cc trnh so n th o khc. Cu l nh (b l c) more a n i dung c a t p tin ra mn hnh theo t ng trang c kch th c b ng kch th c mn hnh (ni chnh xc th l g n b ng, v c m t dng cu i cng dnh cho hi n th tr ng thi (status)). xem trang ti p theo c n nh n vo phm tr ng <Space> (phm di nh t trn bn phm hi n nay). Nh n phm <Enter> c m t dng ti p theo. Ngoi <Space> v <Enter> cn c m t vi phm i u khi n khc, v d phm <B> quay l i mn hnh tr c, nhng chng ta s khng li t k y nh ng phm ny y, v cng khng a ra danh sch cc ty ch n c a l nh more. By gi b n c ch c n nh phm <Q> dng thot ra kh i ch xem c a more, n u khng th b n s ph i nh n phm <Space> cho n khi h t t p tin (ch ng may n u n qu di th b n s m t r t nhi u th i gian). T t c cc tu ch n c a l nh more b n c th c trong trang h ng d n man (more(1)) ho c info c a n. Ti n ch less l m t trong nh ng chng trnh c d n GNU pht tri n. less c t t c cc ch c nng v l nh i u khi n c a more, v c thm m t vi s m r ng khc. V d , cho php s d ng cc phm i u khi n con tr (<>, <>, <>, <>, <Home>, <End>, <PgUp>, <PgDown>) di chuy n trong vn b n. Hy nh l i, chng ta ni v i u ny khi ni v h th ng tr gip man. Cc l nh more v less cho php tm ki m t kha c trong t p tin ang xem, trong l nh less cho php tm ki m theo hai h ng: t trn xu ng d i v ng c l i. tm ki m t kha string (m t c m k t no ) th u tin c n nh n / chuy n vo ch tm ki m, sau nh p vo string vo dng / cu i mn hnh. N u tm th y t kha trong t p tin, th s hi n th o n vn b n tng ng sao cho dng tm th y n m trn cng. N u mu n ti p t c tm ki m hy nh n phm <N>, trong less c th dng t h p phm <Shift>+<N> tm ki m theo h ng ng c l i.

4.6.8

Cu l nh tm ki m find v m u tn t p tin

Cn c m t cu l nh th ng dng lm vi c v i t p tin trong Linux l cu l nh tm ki m t p tin find. Cu l nh find c th tm ki m t p tin theo tn, theo kch th c, th i gian t o ho c th i gian s a i t p tin v theo cc tiu ch khc. C php chung c a cu l nh find c d ng sau: find [danh_sch_th_m c] tiu_ch_tm_ki m Trong tham s danh sch th m c xc nh ni tm ki m t p tin mong mu n. n gi n nh t l dng th m c g c / lm ni kh i u tm ki m. Tuy nhin trong tr ng h p tm ki m c th ko di r t lu, v s l c sot t t cc th m c k c nh ng h th ng t p tin g n vo, trong c th c cc th m c m ng

84

Lm quen v i h th ng t p tin ext3fs

(v chuy n g x y ra n u t c ng truy n th p). C th lm s kh i l ng cng vi c, n u dng m t danh sch nh ng th m c, m t p tin c th n m trong, thay th cho th m c g c. V d : [user]$ find /usr/bin /sbin /bin /usr/local/bin -name cp Ph n u c a tiu_ch_tm_ki m xc nh xem chng trnh find ph i tm ci g. Ph n u ny l tham s b t u b ng , (, ), , ho c !. T t c cc tham s ng tr c tiu_ch_tm_ki m c coi l tn th m c c n l c sot. N u khng ch ra m t th m c no, th tm ki m s b t u t th m c hi n th i v i su vo trong cc th m c con. Ng i dng th ng th c hi n tm ki m theo tn t p tin nh v d trn, y tiu_ch_tm_ki m c d ng name tn_t p_tin. ch ty ch n -name c th s d ng ty ch n -path, khi cu l nh s tm ki m s tng ng c a tn t p tin y bao g m c ng d n ch ra. V d , cu l nh: [user]$ find . -path ./l*es s tm th y trong th m c hi n th i th m c con l4u/images. Trong v d ny, ch tn c a t p tin ho c th m c chng ta s d ng m t m u tn. V b i v m u tn t p tin khng ch s d ng cho cu l nh find m cn s d ng cng v i nhi u cu l nh khc (bao g m c nh ng cu l nh ni n: chmod, chown, chgrp, cp, rm, cat, mv), nn chng ta c n ch v dnh th i gian nghin c u cc quy nh s d ng v vi t m u tn. Trong a s tr ng h p m u tn t p tin c t o ra nh cc k t c bi t * v ?. K t * s d ng thay th cho b t k dng k t no. Trong Linux:
* tng ng v i t t c cc t p tin tr nh ng t p tin n. .* tng ng v i t t c nh ng t p tin n (trong c th m c hi n th i . v th m c m ..). *.* ch tng ng v i nh ng t p tin v th m c c d u ch m (.) ho c cu i cng. a*p tng ng v i anhchup v anhchep. *a* tng ng v i May v march.

gi a tn

K t ? ch thay th m t k t b t k, v th taptin?.txt s tng ng v i cc tn sau (taptin1.txt, taptin2.txt, taptin9.txt. Ngoi * v ? trong Linux cn s d ng cc d u ngo c vung ([]) t o m u tn. Trong hai d u ngo c ny t danh sch cc k t (c th d ng kho ng12 ) c th g p. V d [xyz]* tng ng v i t t c nh ng tn t p tin b t u b ng a, b, c. Cn *[G-K4-7] tng ng v i nh ng t p tin c tn k t thc b ng G, H, I, J, K, 4, 5, 6, 7. Hy ch l khng c kho ng tr ng trong c hai v d k trn. T t nhin y ch a ra nh ng thng tin th t ng n g n v m u tn t p tin v cc k t thay th . B n c c th tm th y thng tin chi ti t hn v m u
12

interval

4.6 Cc cu l nh c b n lm vi c v i t p tin v th m c

85

B ng 4.4: Tiu ch tm ki m c a cu l nh find. Gi tr Tm t p tin c tn tng ng v i m u_tn. Tm t p tin thu c v nhm ch ra. Tm t p tin c c b ng s kh i 512 byte 13 . N u sau s c k t c th c ngha l kch th c c tnh theo byte (k t , charater), ch khng ph i theo kh i. mtime s _ngy Tm t p tin c thay i l n cu i cng tr c s _ngy ch ra. newer m u Tm t p tin c thay i sau khi thay i t p tin c trong m u. type d ng_t p_tin Tm t p tin d ng ch ra. D ng t p tin c xc nh b ng m t trong cc k t sau: b (thi t b kh i), c (thi t b k t ), d (th m c), f (t p tin th ng), p ( ng c tn pipe), ho c l (lin k t m m). Ty ch n name m u_tn group tn size s [c] tn t p tin trong ti li u IBM LPI tutorial b n d ch ti ng Vi t do nhm c ng tc c a vnoss.org (trong c ti) th c hi n c trn http://sourceforge.net/ projects/vnoss. Cn by gi sau khi lm quen v i m u tn t p tin, chng ta quay tr l i v i cu l nh find v ni chi ti t hn v nh ng kh nng c th c a tiu ch tm ki m. M t vi v d n gi n c a tiu ch tm ki m c trong b ng 4.4. Nh ng tiu ch tm ki m n gi n khc b n c th tm th y trong trang man c a cu l nh find ho c trong ti li u LPI tutorial ni trn. C n ni r ng t nh ng tiu ch n gi n c th t o ra nh ng tiu ch ph c t p hn nh cc php lgc and, or ho c php ph nh (k hi u l d u ch m than !). V d , n u b n mu n tm t t c nh ng t p tin c ph n m r ng14 l .odt v .tex, th c th dng tiu ch tm ki m nh sau: (-name *.tex -or -name *.odt). C th s d ng k t h p nh v y m t s l ng b t k cc tiu ch k c tiu ch ph c t p. N u khng ch ra php lgc c th , th coi nh dng and, t c l c th dng m t trong hai cch ghi: (-name *.tex -and -name *.odt) ho c (-name *.tex -name *.odt). N u ch dng m t php lgc and ho c !, th c th b i d u ngo c, cn php lgc or v cc tiu ch ph c t p hn th c n d u ngo c. Tr c d u ngo c c n t m t d u g ch cho ng c (\), cn sau d u ngo c c n t m t kho ng tr ng. V d , n u b n c mu n tm th m c theo tn c a n th c th dng l nh: [user]$ find /usr/share -name man1 -type d ho c dng tiu ch ph c t p: [user]$ find /usr/share \( -name man1 -and -type d \) Trong v d sau chng ta tm t p tin theo tiu ch nh sau: ho c tn t p tin c ph n m r ng *.tex, ho c kch th c t p tin nh hn 200KB.
[user]$ find ~/projects \( \( -name *.tex \) -or \( -size -200 \) \)
14

trong d u ngo c v chng ta bi t r ng trong Linux khng c khi ni m ph n m r ng t p tin.

86

Lm quen v i h th ng t p tin ext3fs

Trong v d cu i cng ny hy ch r ng tr c gi tr kch th c t p tin c d u . D u ny c th s d ng v i b t k tham s c gi tr s no trong tiu ch tm ki m c a cu l nh find. C ngha r ng c n tm t p tin c gi tr c a tham s nh hn s a ra. Tng t d u + c ngha l c n tm t p tin c gi tr c a tham s l n hn s a ra. N u khng c d u + v d u th tm t p tin c gi tr c a tham s b ng s a ra. k t thc ph n v cu l nh find ny, c n ni thm r ng sau tiu ch tm ki m c th a ra ngay thao tc x l t t c nh ng t p tin tm th y. V d n gi n nh t l thao tc print. [user]$ find ~/projects -name *.tex -print dng a ra mn hnh danh sch tn c a t t c nh ng t p tin tm th y cng v i ng d n y n t p tin. Thao tc ny c dng theo m c nh, t c l lun lun c dng khi khng ch ra thao tc no nh trong cc v d tr c y. M t v d khc l thao tc -exec cmd {}. Trong cmd l m t cu l nh b t k no c a h v shell. Trong tr ng h p ny s th c hi n cu l nh cmd i v i t t c nh ng t p tin tm th y. Sau cmd {} l d u ch m ph y (;) c d u g ch cho ng c \ tr c (chng ta s hi u r hn tc d ng c a d u g ch cho ng c trong chng ngay sau). V d , n u b n mu n xa t t c nh ng t p tin trong th m c hi n th i m ng i dng khng ng n trong vng 365 ngy ho c lu hn, th hy dng cu l nh sau: [user]$ find . -type f -atime +365 -exec rm {} \; ch -exec c th dng -ok, khi tr c khi th c hi n cu l nh cmd cho m i t p tin tm th y h th ng s h i l i xem b n c mu n th c hi n th t khng. Ni chung cu l nh cmd l m t cu l nh r t m nh, c ch v l m t cng c tm ki m t t trong h th ng t p tin. ng nhin l cha ph i t t c nh ng kh nng c a l nh ny c li t k ra y. Hy tm hi u trong trang tr gip man ho c m t cu n sch dy c p no v Linux. V hy c n th n khi s d ng nh ng kh nng c a cu l nh ny nh g i nh ng cu l nh khc th c hi n trn t t c nh ng t p tin tm th y. Hy nh r ng s thay i th ng l m t chi u.

4.6.9

Cu l nh split

i khi chng ta c n chia m t t p tin l n thnh t ng ph n nh . L y v d b n c m t t p tin phim d ng mpg l n, kho ng 1,2GB. V b n mu n sao chp t p tin ny qua m t my khc nhng l i khng c m t k t n i m ng. V cng khng c ghi DVD m ch c ghi CD. Nhng t p tin ny khng th n m g n trn m t CD (dung l ng kho ng 700MB). Do c th chia t p tin ny thnh hai ph n m i ph n nh hn 700MB sau s g p chng l i. lm c vi c ny chng ta c th s d ng l nh split. Cu l nh split cho php sao chp t p tin b ng cch chia chng ra thnh t ng ph n nh theo kch th c nh. Tham s c a l nh ny l tn c a t p tin ban u v ph n u (prefix) tn c a cc t p tin s t o ra. Cc t p tin thu c s c tn g m ph n u (prefix) ny v hai ch thm vo chng khng trng

4.6 Cc cu l nh c b n lm vi c v i t p tin v th m c

87

nhau: aa, ab, ac, ad, v.v. . . (khng c kho ng tr ng v cc d u ch m gi a ph n u v nh ng ch ci ny). N u khng a ra ph n u, th theo m c nh s d ng x, t c l s thu c cc t p tin xaa, xab, xac, xad v.v. . . Ngoi cc tham s c th thm vo ty ch n -b xc nh kch th c c a cc t p tin t o ra (tnh theo byte). Sau -b l m t s v sau l m t ch ci: k (kch th c tnh theo KB) ho c m (tnh theo MB). N u khng a ra ty ch n ny th theo m c nh kch th c c a t p tin thu c b ng 1MB. gi i quy t bi ton a lc u th c n ch y l nh: [user]$ split -b 650m phim.mpg phim Sau dng chng trnh ghi a sao chp hai t p tin thu c (phimaa, phimab) ln hai a CD-R(W), r i a chng (c ngha l dng l nh cp) ln my th hai vo m t th m c no . Cu i cng ph c h i t p tin ban u b ng l nh: [user]$ cat phim* > phim.mpg Sau c th xa i cc t p tin phimaa, phimab.

4.6.10

So snh cc t p tin v l nh patch

C th b n khng nhng khi lm vi c v i my tnh cng vi c so snh n i dung c a hai t p tin khc nhau g p m t cch th ng xuyn. L v c th sao chp t p tin m t cch d dng, r i sau qun lun l t p tin no m i hn ho c t t hn. V th nh ng cng c dng so snh t p tin l c n thi t v t t nhin l c trong Linux. Cng c n gi n nh t trong s ny l l nh cmp (compare). L nh ny ch so snh n i dung c a hai t p tin theo t ng byte: [user]$ cmp t p_tin1 t p_tin2 N u hai t p tin hon ton trng nhau, th l nh hon thnh cng vi c m khng a ra thng bo g, cn n u chng khc nhau th a ra s th t c a dng v byte ch c s khc nhau. T t nhin thng tin m l nh cmp a ra hi t c th quy t nh ch n t p tin no trong s hai t p tin ny, t p tin no quan tr ng hn. V th cn c th s d ng cu l nh diff bi t c s khc nhau gi a hai t p tin y l g. Ch c n cho cu l nh ny bi t tn hai t p tin m b n mu n so snh. V d : teppi82@ThinhQuyen:~> diff ChangeLog ChangeLog2 1c1 < 11 thng 09 nm 2006, phin b n 0.9.3 --> 18 thng 09 nm 2006, phin b n 0.9.3 Thng bo v s khc nhau s hi n th trn mn hnh ( u ra tiu chu n). Chng ta c th chuy n h ng bo co ny vo m t t p tin:

88

Lm quen v i h th ng t p tin ext3fs

teppi@ThinhQuyen:~> diff ChangeLog ChangeLog2 > ChangeLog.diff teppi@ThinhQuyen:~> more ChangeLog.diff 1c1 < 11 thng 09 nm 2006, phin b n 0.9.3 --> 18 thng 09 nm 2006, phin b n 0.9.3 nh gi phin b n c a m t t p tin th thu n ti n hn n u s d ng cu l nh sdiff. K t qu so snh khi ny s hi n th d ng hai c t, phn cch nhau b i cc kho ng tr ng. N u hai c t c cng s th t khc nhau, th chng s cch nhau b i m t d u g ch th ng ng |. N u m t dng no ch c trong t p tin th nh t th n c nh d u b ng m t k t <, n u khng c trong t p tin th hai m t k t >. Cn c cu l nh diff3 cho php so snh 3 t p tin m t lc. Nhng th ng s d ng nh t trn cc h th ng UNIX v Linux v n l cu l nh diff. C th d dng hi u i u ny n u bi t r ng k t qu bo co c a diff v s khc nhau gi a hai t p tin c th s d ng cho cu l nh patch. Thng th ng kh nng ny c dng khi phn ph i b n c p nh t c a chng trnh ng d ng. L y v d n gi n (m t cch ngu ng c), m t chng trnh ng d ng no c a cho ng i dng d ng t p tin xvnkb-0.2.8.c, c ch a m ngu n c a chng trnh ny trn ngn ng C. Sau nh pht tri n s a cc l i v c p nh t chng trnh r i lu m ngu n trong m t t p tin khc xvnkb-0.2.9.c. By gi c n a nh ng thay i lm n cho ng i dng. T t nhin l ch c n g i cho ng i dng nh ng thay i, t c l k t qu bo co t o ra b ng l nh: [chuoi]$ diff xvnkb-0.2.8.c xvnkb-0.2.9.c > xvnkb.c.diff Nh v y t t nhin l kch th c c a t p tin xvnkb.diff s nh hn nhi u so v i xvnkb-0.2.9.c, s ti t ki m c dung l ng truy n t i qua m ng Internet n u ch g i xvnkb.c.diff. Trong tr ng h p chng trnh ng d ng l n th s ti t ki m ny l nh k . Tuy nhin ti t ki m cho ng i dng khng ph i l ng d ng chnh. M s pht tri n c a ng d ng m m m i l i m chnh. Chng ta nh r ng m t ng d ng m m c pht tri n b i c m t nhm cc nh pht tri n v c ng ng. M i nh pht tri n s ng gp o n m c a mnh b ng chnh cch ny. Tuy nhin sau khi nh n c t p tin *.diff th c n ph i a nh ng s a i lm vo phin b n hi n th i. Bi ton ny l do patch gi i quy t. c xvnkb-0.2.8.c v xvnkb.c.diff, ch c n ch y l nh: [user]$ patch xvnkb-0.2.8.c xvnkb.c.diff > xvnkb-0.2.9.c s thu c t p tin xvnkb-0.2.9.c.

4.7

Cc cu l nh lu tr v nn t p tin

Khi s d ng Linux r t c th b n s t lm vi c v i ph n l n cc l nh h v shell, v c nh ng chng trnh ti n ch nh Midnight Commander v cc

4.7 Cc cu l nh lu tr v nn t p tin

89

mi tr ng giao di n ho nh KDE, GNOME. V cc ti n ch v mi tr ng gip b n lm vi c d dng v i cc t p tin nn s ni t i. Nhng l ng i dng Linux th c s b n cng nn bi t nh ng cu l nh nn v gi i nn lm vi c trong h v shell. Chng s gip b n lm vi c nhanh hn v i nh ng t p tin nn th ng g p trong Internet. Phng ti n chnh lm vi c v i cc t p tin nn trong UNIX v Linux l hai chng trnh tar v gzip. M c d khng ai c m b n s d ng cc chng trnh arj, pkzip, lha, rar v.v. . . Nhng truy n th ng c a Unix l tar v gzip v ph n l n m ngu n (v khng ch m ngu n) c a cc chng trnh ng d ng c phn ph i d ng ny. V th bi t cch lm vi c v i tar v gzip l danh d c a b t k ng i dng Linux no, cng gi ng nh samurai ph i bi t s d ng ki m v y.

4.7.1

Chng trnh tar

Nh ng ng i dng quen v i nh ng chng trnh nn d ng winzip (a t t c t p tin vo m t kho r i sau nn chng) th c th s h i T i sao l i c n hai chng trnh?. Chng ta s tm th y cu tr l i cho cu h i ny sau khi c xong hai ph n t i y, v s th y y khng ph i l m t y u i m c a Linux m cn l i m m nh n u bi t cch k t h p nh p nhng hai chng trnh ny. Tn chng trnh tar c ngha l tape archiver, t c l chng trnh ny khng nn cc d li u m ch k t h p chng vo m t t p tin chung sau ghi t p tin ny ln cch bng nh (tape) th ng dng lu tr thng tin. N u mu n t o t p tin ny trn a c ng, th c n s d ng l nh tar v i ty ch n f, sau ch ra tn t p tin. Chng trnh tar c 8 ty ch n khc v i nh ng ty ch n cn l i ch khi ch y l nh tar th c n ph i a ra m t trong s 8 ty ch n ny. Tm ty ch n ny xc nh cc ch c nng chnh c a chng trnh (xem b ng 4.5). B ng 4.5: Nh ng ty ch n chnh c a tar Ty ch n ngha -A, --catenate, --concatenate Thm t p tin vo kho c. -c, --create T o kho m i. -d, --diff, --compare Tm s khc nhau gi a cc t p tin trong kho v trn h th ng t p tin (so snh). --delete Xa t p tin kh i kho (khng dng cho bng ghi). -r, --append Thm t p tin vo cu i kho. -t, --list a ra danh sch cc t p tin trong kho. -u, --update Ch thm nh ng t p tin m i hn b n sao trong kho (c p nh t kho). -x, --extract, --get L y t p tin ra kh i kho (gi i phng). N u b n lm vi c v i cc t p tin kho trn a ch khng ph i v i bng ghi (y l a s tr ng h p s d ng my tnh c nhn), th nh t nh ph i dng ty ch n f. Nh ng ty ch n khc (tr 8 ty ch n b t bu c k trn) l khng c n thi t, chng ch dng thm vo cc ch c nng ph c th no . V d , ty ch n v b t bu c chng trnh ph i a ra danh sch cc t p tin a vo kho.

90

Lm quen v i h th ng t p tin ext3fs

C th li t k cc tu ch n m t ch ci (c, f, . . . ) li n nhau v d u g ch ngang () pha tr c c th dng nhng khng nh t thi t ph i c. Chng ta s th y v d t i y. Ti s khng a ra m t t t c cc ty ch n c a l nh tar, m ch cho bi t m t s dng l nh c n thi t nh t lm vi c v i cc kho t p tin. Nh v y s c ch hn trong th i gian ny. t o m t kho t p tin tar t vi t p tin c n s d ng m t trong hai l nh sau: [user]$ tar -cf tn_kho t p_tin1 t p_tin2 [user]$ tar cf tn_kho t p_tin1 t p_tin2 trong ty ch n c (t by gi ti s b i d u g ch ngang pha tr c tu ch n) cho bi t chng trnh c n t o ra (create) kho t p tin, cn tu ch n f cho bi t l kho ny ph i c t o d ng t p tin c tn tn_kho pha sau ty ch n. Trong ph n tn t p tin mu n lu vo kho c th s d ng cc m u tn, bao g m c cc k t thay th n gi n nh * v ?. Nh vo tnh nng ny c th lu vo kho ngay l p t c nhi u t p tin b ng m t cu l nh r t ng n. V d , t o ra kho ch a t t c cc t p tin c a m t th m c con c a th m c hi n th i, gi s projects, th ch c n g i l nh: [user]$ tar cf projects.tar projects/* ho c th m ch cn n gi n hn: [user]$ tar cf projects.tar projects Cu l nh ny s t o ra kho projects.tar trong th m c hi n th i. Kho ny khng ch lu t t c nh ng t p tin c trong th m c projects m cn lu t t c nh ng th m c con c a n cng v i t t c nh ng t p tin n m trong chng (chng ta dng thu t ng lu quy, ho c lu ton b c u trc th m c). Trong t p tin kho c u trc th m c c a projects v n c gi nguyn. C n ch l trong v d trn n u ch * t *.* th s ch lu nh ng t p tin n m tr c ti p trong th m c projects v nh ng th m c con c d u ch m trong tn (t g p), nh ng th m c con cn l i c a projects s khng c lu. Cng trong v d ny n u khng ch ra tn th m c th s lu t t c cc t p tin v th m c con c a th m c hi n th i. N u ch y l nh sau: [user]$ tar cvf tn_kho ./.* th khng ch lu t t c cc t p tin v th m c con c a th m c hi n th i, m cn lu nh ng t p tin c a th m c m . By gi b n c bi t cch t o kho t p tin. l y (gi i phng) t t c t p tin ra kh i kho, c n dng l nh: [user]$ tar xvf tn_kho Hi n th danh sch cc t p tin trong kho b ng l nh: [user]$ tar tvf tn_kho | less Gi i phng m t t p tin no b ng:

4.7 Cc cu l nh lu tr v nn t p tin [user]$ tar xvf tn_kho tn_t p_tin

91

Chng trnh tar l phng ti n thu n l i t o cc b n sao lu tr (sao lu) c a t p tin. T t nhin cn c nh ng ti n ch sao lu chuyn dng khc, nhng c khi b n c khng bi t nh ng ti n ch ny, th v n c th sao lu d li u qu bu c a mnh ln a m m b ng: [user]$ tar Mcvf /dev/fd0 th_m c r i ph c h i th m c b ng l nh: [user]$ tar Mxpvf /dev/fd0 Ho c n gi n hn, t o m t t p tin kho ch a: [user]$ tar cvf tn_kho th_m c

r i sao chp t p tin tn_kho ln m t thi t b lu tho r i ho c th m c trn m ng no (CD, DVD, flash, ftp,. . . ). Ph c h i l i b ng l nh: [user]$ tar xpvf tn_kho N u c kh khn khi s d ng l nh tar, hy c tr gip man c a n ho c c nh ng thng tin hi n ra khi ch y tar v i ty ch n --help

4.7.2

Chng trnh gzip

M c d chng trnh tar t o ra kho t p tin, nhng nh ni trn, n khng nn kho ny l i m ch k t h p cc t p tin ring r vo m t t p tin chung. nn t p tin ny l i th ng s d ng cu l nh gzip. Tr ng h p n gi n nh t c a l nh ny trng nh sau: [user]$ gzip tn_t p_tin Trn dng l nh c th a ra cng lc vi tn ho c m u tn t p tin. Nhng khi ny m i t p tin s c nn ring r , ch khng t o m t t p tin chung. gi i nn t p tin hy dng m t trong hai cu l nh sau: [user]$ gzip -d tn_t p_tin ho c [user]$ gunzip tn_t p_tin T p tin ban u sau khi nn s b xa, ch cn l i t p tin nn. Cn khi gi i nn th t p tin nn s b xa, ch cn l i t p tin bnh th ng. Chng ta c c m gic nh t p tin c a ra, a vo m t kho. Nhng l nh ng t p tin hon ton khc nhau! Hy s d ng l nh ls -i ki m tra ch s inode c a chng. By gi chng ta s li t k m t vi ty ch n c ch c a chng trnh gzip vo b ng 4.6. B i v chng trnh gzip khng c kh nng lu nhi u t p tin vo trong m t t p tin, nn th ng dng gzip nn nh ng kho t p tin do tar t o ra. Hn n a cn c th s d ng k t h p hai chng trnh ny. Chng ta s xem xt v n ny ngay sau.

92

Lm quen v i h th ng t p tin ext3fs

B ng 4.6: Nh ng ty ch n chnh c a chng trnh gzip Ty ch n ngha -h, --help Hi n th tr gip ng n g n v cch s d ng chng trnh. -l, --list a ra tn t p tin n m trong t p tin nn, kch th c c a n v m c nn (tnh theo %). -L, --license Hi n th s phin b n v b n quy n c a chng trnh. -N, --name Lu ho c ph c h i tn ban u v th i gian t o t p tin. -n, --no-name Khng lu ho c khng ph c h i tn ban u v th i gian t o t p tin. -q, --quiet B i nh ng c nh bo. -r, --recursive Nn ton b ( quy) th m c. S d ng trong tr ng h p c a ra m u tn t p tin. S .suf, -suffix Thm ph n sau (suffix) vo tn t p tin nn. Theo m c nh .suf s d ng ph n sau l gz. Ch : n u s d ng ph n sau khc gz th khi gi i nn chng trnh s a ra thng bo l i d ng unknown suffix ignored (ph n sau khng bi t l i). -t, --test Th (ki m tra) tnh nguyn v n c a t p tin nn. -v, --verbose a ra cc thng bo ph trong khi lm vi c. -V, --version Hi n th phin b n c a chng trnh. -1, --fast Nn nhanh (m c nn th p). -9, --best M c nn m nh hn. Kch th c t p tin thu c nh hn nhng t t nhin l s lu hn.

4.7.3

Chng trnh bzip2

Trong th i gian g n y ng i dng Linux th ng s d ng thm m t chng trnh nn n a thay th cho gzip chng trnh bzip2. Chng trnh ny nn m nh hn (c m c nn cao hn, t o ra cc t p tin nh hn) v lm vi c nhanh hn. Cc b n phn ph i Linux m i c ci t s n chng trnh ny. Chng trnh bzip2 lm vi c tng t nh gzip, t c l thay th m i t p tin a vo dng l nh b ng phin b n nn c a t p tin , nhng thm vo ph n cu i l .bz2. T p tin nn c th i gian s a i, quy n truy c p v c th c ch s h u nh t p tin ban u. Do c kh nng ph c h i nh ng tnh ch t ny c a t p tin khi gi i nn. Trong m t s tr ng h p t p tin nn c th cn l n hn theo kch th c so v i t p tin ban u. i u ny c th x y ra i v i nh ng t p tin c kch th c nh hn 100 byte, v c ch nn s d ng ph n u (head) c kch th c 50 byte. Nh ng t p tin g m m t chu i ng u nhin (random) c a cc k t , trong c cc t p tin nn, th kch th c c a t p tin tng ln kho ng 0,5%. Cu l nh bunzip2 ho c bzip2 d gi i nn t p tin ch ra. N u t p tin ny khng ph i do bzip2 t o ra th chng trnh s khng gi i nn m a ra l i c nh bo. Khi gi i nn bzip2 s on tn c a t p tin s t o ra theo quy lu t sau:
tn_t p_tin.bz2 thay th b ng tn_t p_tin tn_t p_tin.bz thay th b ng tn_t p_tin

4.7 Cc cu l nh lu tr v nn t p tin
tn_t p_tin.tbz2 thay th b ng tn_t p_tin.tar tn_t p_tin.tbz thay th b ng tn_t p_tin.tar tn_t p_tin khc thay th b ng tn_t p_tin.out.

93

V d : teppi82@ThinhQuyen:~> bzip2 2 teppi82@ThinhQuyen:~> mv 2.bz2 2.sj teppi82@ThinhQuyen:~> bunzip2 2.sj bunzip2: Cant guess original name for 2.sj -- using 2.sj.out Cc tu ch n c a bzip2 r t gi ng v i ty ch n c a gzip nhng khng ph i t t c . Ti s a ra m t danh sch ng n nh ng ty ch n c n thi t nh t trong b ng 4.7. B ng 4.7: Nh ng ty ch n chnh c a chng trnh bzip2 Ty ch n ngha -d, --decompress B t bu c gi i nn t p tin. Ty ch n ny c n thi t v trn th c t bzip2, bunzip2 v bzcat ch l m t chng trnh. M i chng trnh tu theo ph n m r ng t p tin m quy t nh xem s lm g v i t p tin . Ty ch n -d b i c ch ny v b t bu c chng trnh ph i gi i nn t p tin ch ra. -z, --compress B t bu c nn t p tin (xem trn). -t, --test Th (ki m tra) tnh nguyn v n c a t p tin nn. -f, --force Ghi chn ln t p tin c. Theo m c nh bzip2 khng ghi chn ln t p tin c trn a. N u mu n ghi chn th hy dng ty ch n ny. -k, --keep Gi gn (khng xa) t p tin ban u khi nn ho c gi i nn. -s, --small Gi m yu c u i v i dung l ng b nh c n s d ng b ng cch gi m t c nn. Ch nn dng ty ch n ny trn nh ng my tnh c c t b nh (8MB ho c t hn). C l chng ta khng bao gi c n n ty ch n ny ho c t nh t l hy v ng nh v y. -q, --quiet B i nh ng c nh bo t ngha. -v, --verbose a ra cc thng bo ph trong khi lm vi c (ch c ngha chu n on). L, -license, V, Hi n th s phin b n v b n quy n c a chng trnh. -version Tham s ng sau hai d u g ch ngang (--) v m t kho ng tr ng c coi l tn t p tin, d tham s c m t d u g ch ngang u. V d : [user]$ bzip2 -- -tn_t p_tin By gi n lc chng ta h c cch k t h p tar v i hai cu l nh gzip v bzip2 lm vi c nhanh v c hi u qu hn.

94

Lm quen v i h th ng t p tin ext3fs

4.7.4

S d ng k t h p tar v i gzip v bzip2

T t nhin khng ai ngn c n b n s d ng ring r cc cu l nh tar v i gzip v bzip2, nhng s nhanh hn n u chng ta ch c n s d ng m t cu l nh c th t o ra m t t p tin nn, hay gi i nn m t t p tin. Hy t ng t ng b n nh n c m t t p tin, v d xvnkb-0.2.9.tar.gz. gi i nn t p tin ny thng th ng b n c n dng hai cu l nh sau ti p n i nhau: [user]$ gzip -d xvnkb-0.2.9.tar.gz [user]$ tar xvf xvnkb-0.2.9.tar Nhng trong s nh ng ty ch n c a chng trnh tar cn c m t tu ch n c bi t z cho php gi i nn t p tin b ng chng trnh gzip (th c hi n vai tr c a l nh th nh t trong hai l nh k trn). gi i nn t p tin k trn ch c n dng m t cu l nh nh sau: [user]$ tar xzvf xvnkb-0.2.9.tar.gz K t qu thu c l hon ton nh trn tr m t i m: trong tr ng h p dng 2 cu l nh th trn a s gi l i t p tin trung gian (xvnkb-0.2.9.tar). Nh v y cch th hai cn c m t u i m n a l khng gi l i cc t p tin trung gian, ng i dng khng c n ph i g thm m t l nh xo t p tin. Vi c t o t p tin b ng cch s d ng k t h p tar v gz cng c th c hi n b ng ty ch n z: [user]$ tar czvf tn_t p_tin.tar.gz th_m c C n ch r ng trong tr ng h p ny chng trnh s khng t ng thm ph n ui .gz vo tn c a t p tin thu c. Do c n t tn r rng cho n cng v i ph n ui .tar.gz. S d ng k t h p tar v bzip2 l hon ton tng t , nhng c n dng ty ch n j c a tar thay cho tu ch n z. T c l, gi i nn t p tin b ng l nh: [user]$ tar xjvf tn_t p_tin.tar.bz2 v t o t p tin nn b ng: [user]$ tar cjvf tn_t p_tin.tar.bz2 th_m c Ti ngh r ng nh ng thng tin k trn lm vi c m t cch c hi u qu v i cc chng trnh nn tar, gzip v bzip2. c thm thng tin hy tm hi u trang tr gip man ho c cc ti li u HOWTO tng ng. k t thc ph n v nh ng chng trnh lm vi c v i t p tin nn ny, ti mu n ni thm r ng, n u khng may b n nh n c m t t p tin d ng *.zip hay *.rar th cng ng v i ch y sang nh m t my s d ng Windows gi i nn. B n c th th cc chng trnh unzip v unrar c trn h th ng Linux c a mnh. Cch s d ng nh ng l nh ny h t s c n gi n, ch c n a vo dng l nh tn c a t p tin. N u c g kh khn hy th unzip help ho c unrar help. Ti ch c ch n l b n s t gi i quy t c v n . V ng qun ch t o ra cc t p tin nn b ng tar, gzip ho c bzip2 v b n l ng i dng Linux!

4.8 T o v g n cc h th ng t p tin

95

4.8

T o v g n cc h th ng t p tin

Trong nh ng ph n tr c chng ta c p ng n g n m t s cu l nh chnh lm vi c v i nh ng h th ng t p tin nh d ng s n. By gi chng ta s d ng l i v n lm sao t o ra h th ng t p tin v cch thay i n. Cy th m c c a Linux c t o ra t nh ng cnh ring r tng ng v i cc a khc nhau. Th ng ni l cy th m c c t o thnh t cc h th ng t p tin ring. Ni nh v y v trong UNIX (v Linux) khng c khi ni m nh d ng a m s d ng khi ni m t o h th ng t p tin. Khi chng ta c m t a lu m i, v d a c ng, chng ta c n t o trn a ny h th ng t p tin. T c l m i a c t tng ng v i h th ng t p tin ring. c th s d ng h th ng t p tin ny ghi cc t p tin, th u tin c n k t n i n v cy th m c chung (chng ta s d ng thu t ng g n, mount). Nh v y l c th ni g n h th ng t p tin ho c g n a lu cng v i cc h th ng t p tin c trn n. Cn c n ph i ni thm r ng thng th ng a c ng c chia thnh cc phn vng, nh t l i v i nh ng a m i s n xu t g n y c dung l ng l n t vi ch c n vi trm GB. Vi c t o nh ng phn vng nh v y gip th c hi n d dng cc thao tc nh: sao lu, xc nh quy n truy c p, ng th i tng hi u su t lm vi c v lm gi m kh nng m t thng tin do chng trnh gy ra. V th ti p theo chng ta s ni v t o h th ng t p tin trn m t phn vng, nh ng a khng b chia c th coi l m t phn vng. Cn m t i m n a cng c n ni n l Linux c th lm vi c v i nhi u d ng h th ng t p tin khc nhau. Nhng h th ng t p tin g c c a n l h th ng t p tin m r ng (extfs) phin b n 2 v 3. Ngoi hai h th ng t p tin ny Linux cn c th lm vi c v i cc phin b n khc nhau c a h th ng t p tin FAT (FAT16 v FAT32), h th ng t p tin ISO9660 s d ng ghi thng tin trn CD-ROM v cc h th ng t p tin khc (k c NTFS15 ). T c l khi t o v g n cc h th ng t p tin c n lun lun nh r ng d ng h th ng t p tin trn cc a lu khc nhau c th khng gi ng nhau. u tin chng ta s xem xt tr ng h p c n t o h th ng t p tin trn m t phn vng no ( c) c a a. V d h th ng t p tin c d ng ext3fs. T o h th ng t p tin d ng ext3fs c ngha l t o trn phn vng ny c a a m t siu kh i (superblock), m t b ng cc m t inode, v cc kh i d li u. Th c hi n t t c nh ng vi c ny b ng l nh mkfs16 . Trong tr ng h p n gi n nh t ch c n ch y l nh sau: [root]# mkfs -t ext3 /dev/hda2 T t nhin l c n thay th /dev/hda2 b ng tn c a phn vng trn my c a b n. Hy c n th n khi vi t tn phn vng, n u ghi nh m b n s b m t d li u. N u b n mu n t o h th ng t p tin trn a m m th c n ch y: [root]# mkfs -t ext3 /dev/fd0
S h tr c t t, tuy nhin s h tr ghi ln NTFS cha th t hon h o. Trn cc b n phn ph i Linux m i cn c th s d ng cc cu l nh mkfs.ext2, mkfs.ext3 v cc cu l nh tng t . N u dng chng th ch c n b i ph n -t ext3 ho c -t ext2.
16 15

96

Lm quen v i h th ng t p tin ext3fs

C th ni r ng chng ta nh d ng a m m, nhng c n bi t l v i h th ng t p tin ext3fs th b n khng c c a m m ny trn DOS ho c Windows (n u khng dng chng trnh ho c driver c bi t). t o ra nh ng a m m c th c trn DOS v Windows c n dng ty ch n -t v i gi tr vfat ho c nh ng ti n ch c bi t khc. N u khng a ra ty ch n -t th s dng d ng h th ng t p tin m c nh (hi n nay l phin b n c c a ext ext2fs). Sau khi th c hi n cu l nh mkfs, s t o ra h th ng t p tin d ng ext3fs trong phn vng ch ra. Trong h th ng t p tin m i s t ng t o ra m t th m c v i tn lostfound+. Th m c ny c chng trnh fsck dng trong nh ng tr ng h p kh n c p, v v y ng xa n. b t u lm vi c v i h th ng t p tin m i, u tin c n k t n i (g n) n vo cy th m c chung b ng l nh mount. Ph i c t nh t hai tham s cho cu l nh mount: thi t b (device, tn phn vng) v i m g n (mount point). i m g n l m t th m c c trong cy th m c, v dng lm th m c g c i v i h th ng t p tin g n vo (gi ng nh nt n i gi a thn cy v cnh cy). V d , cu l nh: [root]# mount /dev/hda10 /mnt/diaC s g n h th ng t p tin c a phn vng /dev/hda10 vo th m c /mnt/diaC. C n ph i c th m c /mnt/diaC trong cy th m c. N u cha c hy t o ra b ng l nh mkdir. C n ch l sau khi g n h th ng t p tin vo th m c /mnt/diaC, th ng i dng khng cn truy c p c t i n i dung (bao g m c thng tin v ch s h u c v quy n truy c p t i chnh b n thn th m c) c a th m c ny n a. N i dung ny s ch quay tr l i khi ng i dng b g n (unmount) h th ng t p tin ra kh i th m c. N i dung c c a th m c khng b hu , b xa, m ch t m th i b gi u i. V th t t nh t l dng cc th m c r ng chu n b s n t tr c lm i m g n (v th m trong tiu chu n FHS c c p n th m c /mnt, hy xem b ng 4.1). D ng n gi n nh t trong v d trn c a l nh mount ch lm vi c v i i u ki n t t c nh ng tham s cn thi u c th tm th y trong t p tin /etc/fstab. N u khng c t p tin (ch khi no b n c tnh ho c v tnh xa) ho c trong t p tin khng c nh ng d li u c n thi t, th c n s d ng d ng y c a l nh mount, nh sau: [root]# mount -t d ng_httt thi t_b ng_d n

trong d ng_httt xc nh d ng h th ng t p tin trn thi t_b (phn vng), cn ng_d n xc nh i m g n. T p tin c u hnh /etc/fstab ch y u dng g n t ng cc h th ng t p tin trong qu trnh kh i ng Linux. M i dng c a t p tin ny ch a thng tin v m t h th ng t p tin v g m 6 vng phn cch nhau b i cc kho ng tr ng17 :
Tn thi t b (phn vng). C th s d ng tn thi t b c trn my (v d /dev/hda10), cng nh tn c a h th ng t p tin m ng NFS (v d ThinhQuyen:/home/nhimlui th m c /home/nhimlui trn my c tn ThinhQuyen).
17

ti n c cc vng th ng s p cho th ng hng, nhng i u l khng nh t thi t.

4.8 T o v g n cc h th ng t p tin

97

i m g n. Tn y bao g m c ng d n c a th m c s g n t p tin vo. D ng h th ng t p tin. Cc tu ch n g n. Theo m c nh l rw ( c v ghi). M c dump. Vng ny c chng trnh sao lu dump s d ng. N u h th ng t p tin c n c sao lu th y ph i c s 1, n u khng s 0. C th c cc gi tr khc, hy xem trang man c a dump. Th t u tin ki m tra h th ng t p tin b ng cu l nh fsck. H th ng t p tin v i gi tr nh hn s c ki m tra tr c. N u b ng nhau th s ki m tra song song (t t nhin n u c th ).

Hi n nay Linux h tr cc h th ng t p tin sau: minix, ext, ext2, ext3, xia, msdos, umsdos, vfat, proc, nfs, iso9660, hpfs, sysv, smb, ncpfs18 . ch d ng h th ng t p tin trong vng d ng h th ng t p tin v sau ty ch n -t c a l nh mount c th t gi tr auto. Trong tr ng h p cu l nh mount th t xc nh d ng c a h th ng t p tin ang g n. Tuy nhin trong m t s tr ng h p c th d n n l i, nn t t hn h t l ch ra d ng m t cch chnh xc. Cn c th li t k m t s d ng phn cch nhau b i d u ph y (,). Trong cu l nh mount cn c th a ra danh sch cc d ng h th ng t p tin khng c n g n b ng c (flag) no. Kh nng ny c ch trong tr ng h p s d ng cu l nh mount v i tham s -a (cu l nh mount v i tham s -a s g n t t c cc h th ng t p tin li t k trong t p tin /etc/fstab). V d , cu l nh: [root]# mount -a -t nosmb,ext g n t t c cc h th ng t p tin tr cc d ng smb (Samba19 ) v ext Khi g n h th ng t p tin c trong /etc/fstab, th ch c n a ra m t tham s : ho c tn c a thi t b (phn vng) ho c i m g n. T t c cc tham s khc cu l nh mount s l y t t p tin /etc/fstab. Thng th ng ch c ng i dng cao c p root m i c kh nng g n cc h th ng t p tin, nhng n u trong vng cc ty ch n g n c ch ra ty ch n user, th t t c m i ng i dng s c kh nng g n (b g n) h th ng t p tin . V d , n u trong t p tin /etc/fstab c dng: /dev/hdd /media/dvd auto noauto,user,sync 0 0

th b t k ng i dng no cng c quy n g n h th ng t p tin trn a DVD c a mnh b ng cu l nh: [user]$ mount /dev/hdd ho c: [user]$ mount /media/dvd

98

Lm quen v i h th ng t p tin ext3fs

B ng 4.8: Nh ng ty ch n chnh c a cu l nh mount Ty ch n ngha async Vo/ra (ghi/ c) c a h th ng t p tin th c hi n khng ng b (khng t c th i). auto C th g n h th ng b ng cu l nh mount v i ty ch n -a. defaults S d ng cc tu ch n theo m c nh: rw, suid, dev, exec, auto, nouser, async. dev Cc thi t b kh i v thi t b k t (byte) trong h th ng t p tin l nh ng t p tin c bi t. noauto Ch c th t g n h th ng t p tin. Ty ch n -a khng t ng g n h th ng t p tin ny. exec Cho php th c hi n cc t p tin chng trnh n m trn h th ng t p tin ny. remount Cho php g n l i h th ng t p tin g n. Th ng s d ng thay i cc ty ch n g n, c bi t trong tr ng h p m r ng quy n truy c p (v d thm quy n ghi cho h th ng t p tin g n ch c). ro G n h th ng t p tin ch c. rw G n h th ng t p tin c v ghi. suid Cho php dng bit thay i ID ng i dng v bit thay i ID nhm. sync Vo/ra (ghi/ c) c a h th ng t p tin th c hi n ng b (t c th i). user Cho php ng i dng bnh th ng g n h th ng t p tin. i v i nh ng ng i dng ny lun lun g n v i cc ty ch n noexec, nosuid, nodev. nodev Khng coi cc thi t b kh i v thi t b k t (byte) trong h th ng t p tin l nh ng t p tin c bi t. nosuid Khng cho php dng bit thay i ID ng i dng v bit thay i ID nhm. nouser C m ng i dng bnh th ng g n h th ng t p tin. Trong b ng 4.8 c a ra thm m t vi ty ch n c th s d ng trong cu l nh mount v trong t p tin/etc/fstab (vng cc ty ch n g n). N u mu n g n m t h th ng t p tin no v ch cho php c th c n ch ra ty ch n r (read only) trn dng tng ng c a t p tin /etc/fstab (theo m c nh s d ng rw, t c l c v ghi), ho c s d ng cu l nh mount v i tham s -r Cu l nh mount v umount h tr b ng cc h th ng t p tin g n. B ng ny n m trn a d ng t p tin /etc/mtab. C th xem tr c ti p t p tin ny b ng cc chng trnh xem t p tin (less, more ho c b ng cu l nh mount (khng c tham s ). Tr c khi b cc a tho r i (a m m, flash) ra kh i my th c n tho (b g n) cc h th ng t p tin c trn cc a tho r i ny. Thao tc ny c th c hi n b ng cu l nh umount (khng ph i unmount!). Tham s c a cu l nh umount l tn thi t b (phn vng) ho c i m g n. Ch c ng i dng g n h th ng t p tin v t t nhin c ng i dng cao
18 19

Hy xem trang man fs c m t ng n g n v nh ng h th ng t p tin ny. cc chia s trong m ng c a Windows

4.8 T o v g n cc h th ng t p tin

99

c p root m i c quy n b g n n. b t k ng i dng no cng c th b g n h th ng t p tin th trong t p tin /etc/fstab c n thay th ty ch n user b ng ty ch n users (trong vng cc ty ch n g n). Ch c th b g n h th ng t p tin khi khng c t p tin no c a n m ra, khng ti n trnh no ang ch y t t p tin chng trnh n m trn h th ng t p tin ny v trong h th ng khng c ti n trnh no s d ng h th ng t p tin ny. T c l h th ng t p tin khng c b n. C n ni r ng n u so v i Windows th lm vi c v i cc a r i (a m m, CD, DVD, Zip, v.v. . . ) trn Linux c m t cht ph c t p hn. V u tin b n c n g n cc a ny (ni chnh xc l h th ng t p tin c trn a) vo cy th m c chung. thay m t a r i khc th u tin c n b g n (tho) a c ra r i m i g n ti p a th hai. Tuy trn cc b n phn ph i m i c cc d ch v cho php t ng g n v t ng tho cc a r i, nhng b n cng c n bi t cch lm vi c v i cc a r i n u c v n x y ra v i cc d ch v . T t nh t hy chu n b s n cho m i a r i m t i m g n ring. V d , n u b n c m t a m m, m t dvd v m t flash th hy t o ba th m c floppy, dvd v flash trong /mnt lm i m g n cho ba thi t b c a mnh. M t s b n phn ph i (Debian, openSUSE) s t o s n cho b n nh ng i m g n ny. y l t t c nh ng g m ng i dng Linux m i (v r t m i) c n bi t v h th ng t p tin ext3fs. Xin nh c l i l nh ng g ni y ch dnh cho h th ng t p tin ext3fs (m t s thng tin v n cn ng cho phin b n ext2fs), v m i ch c p n m t tr c, m t quay v pha ng i dng c a h th ng ny (ch y u l c u trc t p tin). M t cn l i, m t sau (c u trc bn trong), ch c ni n trong chng ny khi c n thi t. Chng ta s xem xt k hn m t sau ny trong m t vi chng s p t i. Cn by gi b n c s chuy n sang nghin c u thnh ph n quan tr ng th 2 trong 4 thnh ph n chnh c a Linux h v bash.

Chng 5 Bash
T t g hn t t n c sn ca dao t c ng Vi t Nam
Trong ph n ny chng ta s c p n v n lm vi c v i Linux ch text, hay cn c g i l console ho c terminal. Nh ng ng i dng Linux m i (newbie) th ng ngh s ch ng bao gi lm vi c ch ny, v c giao di n h a. Tuy nhin y l m t ki n sai l m, b i v r t nhi u cng vi c c th th c hi n nhanh v thu n ti n trong ch ny hn l s d ng giao di n h a. V d sao th ch text c a HH Linux khng ph i l ch text m t ti n trnh c a MS-DOS. V Linux l HH a ti n trnh, nn ngay trong ch text c kh nng lm vi c trong vi c a s . V so n th o m t t p tin vn b n khng nh t thi t ph i ch y cc trnh so n th o l n v ch m ch p ( c bi t trn cc my c c u hnh ph n c ng th p) c a mi tr ng h a.

5.1

H v l g?

Chng ta th ng ni ng i dng lm vi c v i h i u hnh. i u ny khng hon ton ng, v trn th c t lin h v i ng i dng c th c hi n b i m t chng trnh c bi t. C hai d ng c a chng trnh c p - h v , hay shell, lm vi c trong ch text (giao di n dng l nh) v giao di n h a GUI (Graphical User Interface), th c hi n lin h v i ng i dng trong mi tr ng h a. C n ni ngay r ng, b t k chng trnh no trong Linux c th kh i ng t dng l nh c a h v (n u my ch X ch y), cng nh qua giao di n h a. Ch y chng trnh t dng l nh c a h v tng ng v i vi c nhy (p) chu t ln bi u t ng c a chng trnh trong GUI. a cc tham s cho chng trnh trn dng l nh tng ng v i vi c chng ta ko v th ci g ln bi u t ng chng trnh trong mi tr ng h a. Nhng m t khc, m t s chng trnh khng th ch y GUI v ch c th th c hi n t dng l nh. Ni ngoi l m t cht, tn g i h v b ph n i r t nhi u. Theo ki n c a m t s chuyn gia ngn ng cng nh chuyn gia Linux th nn g i chng trnh ny m t cch ng hn l trnh x l l nh hay trnh bin d ch l nh. Tuy nhin, tn g i h v (shell) c dng cho cc chng trnh dng bin d ch l nh trong ch text trn m i h th ng UNIX. Trn cc h th ng UNIX u tin c m t chng trnh, g i l sh, vi t t t c a shell. Sau , vi bi n th c a sh c pht tri n v lm t t hn, trong c Bourne shell - phin b n m r ng c a sh, vi t b i Steve

5.2 Cc k t c bi t

101

Bourne. D n GNU (d n pht tri n chng trnh ng d ng c a Stallman, xem http://www.gnu.org/) sau cho ra i h v bash, tn g i c a n c gi i m ra l Bourne-again shell, t c l l i l h v c a Bourne. Trn ti ng Anh y l m t cch chi ch , v t Bourne c gi ng v i t borne (sinh ra, ra), v nh th bash cn c th gi i m l shell c sinh ra l n hai. Ti p theo chng ta s ch xem xt bash, v th d i khi ni n h v , xin ng m hi u l bash T m t mnh bash khng th c hi n m t cng vi c ng d ng no. Nhng n h tr vi c th c thi m i chng trnh khc, t vi c tm ki m chng trnh c g i, ch y chng n vi c t ch c d li u u vo/ u ra. Ngoi ra, h v ch u trch nhi m v cng vi c v i cc bi n mi tr ng v th c hi n m t vi bi n i (th , hon i v tr) cc tham s l nh. Nhng tnh ch t chnh c a h v , nh a h v tr thnh m t cng c m nh c a ng i dng, l n bao g m m t ngn ng l p trnh n gi n. Trong ton h c t lu c ch ng minh r ng, b t k m t thu t ton no cng c th c xy d ng t hai (ba) thao tc c b n v m t ton t i u ki n. H v cung c p cc ton t i u ki n v ton t vng l p. N s d ng cc ti n ch v chng trnh khc (c trong thnh ph n h i u hnh, hay c ci t ring) lm cc thao tc c b n cho ngn ng l p trnh m n h tr . ng th i cho php a cc tham s cng nh k t qu lm vi c c a m t chng trnh t i cc chng trnh khc hay t i ng i dng. K t qu thu c l m t ngn ng l p trnh m nh. y cng l s c m nh v l m t trong cc ch c nng chnh c a h v . Tr c khi b t u ph n ny, b n c nn bi t cc t h p phm chnh, s d ng i u khi n vi c nh p d li u trn dng l nh. Nn nh t nh t cch s d ng c a cc (t h p) phm <Ctrl>+<C>, <Ctrl>+<D>, <Tab> v cc phm c mi tn.

5.2

Cc k t c bi t

H v bash s d ng m t vi k t t b 256 k t ASCII cho cc m c nh ring, ho c bi u th cc thao tc no , ho c bi n i bi u th c. Cc k t ny bao g m: ~ ! @ # $ % ^ & * ( ) _ -- [ ] { } : ; " / \ > < v k t v i m 0, k t hng m i (t o ra khi nh n phm <Enter>) v k t kho ng tr ng. Ph thu c vo tnh hu ng cc k t c bi t ny c th s d ng v i ngha c bi t c a n hay s d ng nh m t k t thng th ng. Nhng trong a s cc tr ng h p khng khuyn dng cc k t v i gi tr th hai. Tr c h t l vi c s d ng chng trong tn t p tin v th m c. Tuy nhin cc k t _, - v . (d u g ch d i, g ch ngang v d u ch m) th ng c s d ng trong tn t p tin, v y l m t v d cho th y khng ph i lc no chng cng c gi tr c bi t. Trong tn t p tin ch d u ch m (.) v g ch cho (/) c gi tr c bi t. K hi u g ch cho dng phn chia tn cc th m c trong ng d n, cn d u ch m c gi tr c bi t khi n l k t u tin trong tn t p tin (cho bi t t p tin l n). Vi c a ngay t t c ngha c bi t c a nh ng k t ny v cc tnh hu ng s d ng chng t m th i khng c ch. Chng ta s xem xt chng d n d n trong cc ph n sau, khi c n s d ng n. Tuy nhin, 3 k hi u c ngha l n v c n c p n u tin. K hi u \ (g ch cho ng c) c th g i

102

Bash

l k hi u xa b ngha c bi t cho b t k k t c bi t no, ng ngay sau \. V d , n u mu n s d ng kho ng tr ng trong tn t p tin, th chng ta c n t tr c k t kho ng tr ng m t d u V d , cu l nh sau: teppi82@teppi:~$ cp lennon_imagine lennon\ imagine Cc k t v " (ngo c n v ngo c kp) c th g i l cc k t trch d n. M i k t ny lun lun c s d ng trong m t c p v i b n sao c a chnh n ng khung m t bi u th c no , gi ng nh trong cc vn b n, sch bo, . . . thng th ng. N u nh m t o n vn b n no t trong ngo c n, th t t c cc k t n m trong ngo c n ny c gi tr nh cc k t thng th ng, khn m t k t no c ngha c bi t. Tr l i v i v d s d ng kho ng tr ng trong tn t p tin trn, c th ni, n u mu n t t p tin ci tn lennon imagine c n a tn vo d u ngo c: teppi82@teppi:~$ cp lennon_imagine lennon imagine S khc nhau trong cch s d ng k t v " l, trong ngo c n m t ngha c bi t t t c cc k t , cn trong ngo c kp t t c chng ngo i tr $, v \ (d u la, ngo c n v d u g ch ng c).

5.3

Th c thi cc cu l nh

Nh ni trn, m t trong cc ch c nng chnh c a h v l t ch c vi c th c hi n cc cu l nh m ng i dng a vo trn dng l nh. H v , ni ring, cung c p cho ng i dng hai thao tc c bi t t ch c vi c a cc cu l nh trn dng l nh: ; v &.

5.3.1

Thao tc ;

M c d ng i dng th ng ch nh p trn dng l nh t ng cu l nh m t, nhng cn c th a vo dng l nh ngay l p t c vi cu l nh, v chng s th c hi n l n l t t cu l nh ny n cu l nh khc. lm c i u ny c n s d ng k t c bi t - ;. N u dng k t ny phn chia cc cu l nh, th cu l nh ti p theo s c coi nh tham s c a l nh pha tr c. Nh v y, n u nh p vo dng l nh ci g gi ng nh sau: teppi82@teppi:~$ command1 ; command2 th h v u tin s th c hi n cu l nh command1, ch cho l nh hon thnh, sau ch y command2, ch l nh hon thnh, sau l i a ra dng nh p l nh v ch cc hnh ng ti p theo c a ng i dng.

5.4 u vo/ u ra tiu chu n

103

5.3.2

Thao tc &

Thao tc & c dng t ch c vi c th c hi n cc cu l nh trong ch n n sau. N u t d u & ngay sau cu l nh, th h v s tr l i quy n i u khi n cho ng i dng ngay sau khi ch y cu l nh, m khng i cho cu l nh hon thnh. V d , n u nh p vo dng l nh command1 & command2 &, th h v ch y cu l nh command1, ngay l p t c ch y l nh command2, v sau khng ch m tr tr l i dng nh p l nh cho ng i dng.

5.3.3

Thao tc && v ||

Cc thao tc && v || l nh ng thao tc i u khi n. N u trn dng l nh l command1 && command2, th command2 s th c hi n v ch th c hi n trong tr ng h p tr ng thi thot ra c a l nh command1 b ng khng (0), t c l l nh th c hi n thnh cng. M t cch tng t , n u dng l nh c d ng command1 || command2, th command2 s th c hi n v ch th c hi n khi tr ng thi thot c a l nh command1 khc khng. Chng ta s khng xem xt m t k thu t c a vi c th c hi n m t cu l nh no . Ch c th ni ng n g n r ng, h v ph i tm m (code) chng trnh, n p m vo b nh , chuy n cc tham s nh p trn dng l nh vo cho cu l nh, v sau khi th c hi n xong th theo m t cch no tr l i k t qu th c hi n l nh ny cho ng i dng hay ti n trnh khc. Chng ta s xem xt qua cc b c ny. B c u tin - tm ki m cu l nh. Cc cu l nh chia thnh hai lo i: n i tr (m c a chng c trong m c a chnh h v ) v ngo i tr (m c a chng n m trong m t t p tin ring l trn a). H v lun lun tm th y l nh n i tr, cn tm cc l nh ngo i tr ng i dng, theo nguyn t c, ph i ch cho h v ng d n y t i t p tin tng ng. Tuy nhin g gnh n ng cho ng i dng h v bi t cch tm l nh ngo i tr trong cc th m c, m c li t k trong ng d n tm ki m. Ch khi (h v ) khng th tm th y t p tin c n thi t trong cc th m c , n m i quy t nh r ng ng i dng nh m khi nh p tn l nh. V cch thm th m c vo ng d n tm ki m chng ta s ni n d i, cn by gi chng ta s xem xt cch h v t ch c vi c a d li u vo cho cu l nh ang th c hi n v vi c a k t qu t i cho ng i dng.

5.4
5.4.1

u vo/ u ra tiu chu n


Dng d li u vo ra

Khi m t chng trnh c th c hi n, n c cung c p ba dng d li u (hay cn g i l knh):


u vo tiu chu n (standard input hay stdin). Qua knh ny d li u c a vo cho chng trnh; u ra tiu chu n (standard output hay stdout). Qua knh ny chng trnh a ra k t qu lm vi c c a mnh;

104

Bash
knh thng bo l i tiu chu n (standard error hay stderr). Qua knh ny chng trnh a ra thng tin v l i.

T u vo tiu chu n chng trnh ch c th c, cn hai u ra v knh thng bo l i c chng trnh s d ng ch ghi. Theo m c nh u vo c lin k t1 v i bn phm, cn u ra v knh bo l i h ng n terminal c a ng i dng. Ni cch khc, ton b thng tin c a l nh hay chng trnh m ng i dng ch y, v t t c nh ng thng bo l i, c a ra c a s terminal. Tuy nhin, chng ta s th y d i, c th chuy n h ng thng bo u ra (v d , vo t p tin). cho th y knh thng bo l i tiu chu n lm vi c nh th no, hy th c hi n cu l nh ls v i m t tham s khng ng, v d dng tham s l m t tn t p tin khng t n t i. Trong tr ng h p ny, ls a m t tin nh n bo l i ra knh thng bo l i tiu chu n. Tuy nhin, i v i ng i dng th trong tr ng h p ny knh thng bo l i tiu chu n khng khc g v i u ra tiu chu n, b i v chng ta cng th y thng bo l i trn c a s terminal. Lm vi c v i u vo v u ra tiu chu n c minh h a t t nh t qua v d cc l nh echo v cat.

5.4.2

L nh echo

Cu l nh echo dng chuy n t i u ra tiu chu n dng k t , m c a vo lm tham s cho n. Sau l nh ny a ra tn hi u chuy n dng v hon t t cng vi c. Hy th th c hi n cu l nh sau: [user]$ echo xin chao cac ban! Ti ngh r ng l i gi i thch s l th a thi (ch xin hy s d ng d u ngo c n, n u khng k t qu c th s khc. N u b n c ch th c th gi i thch t i sao l i khc).

5.4.3

L nh cat

Chng ta s xem xt l nh cat y v l nh ny th ng lm vi c v i u vo v u ra tiu chu n. Theo m c nh k t qu lm vi c c a l nh cat h ng t i u ra tiu chu n. ch ng minh l l nh ny theo m c nh ti p nh n dng d li u nh p vo, hy ch y l nh cat khng c tham s . K t qu l con tr chuy n t i m t dng m i, v hn n a c v nh khng c g x y ra. Lc ny cu l nh ch cc k t n t u vo tiu chu n. Hy nh p b t k k t no, v n s xu t hi n ngay l p t c trn mn hnh, t c l chng trnh ngay l p t c a chng t i u ra tiu chu n. C th ti p t c nh p cc k t , v chng cng s xu t hi n trn mn hnh. Thng th ng bn phm c c u hnh nh p vo theo t ng dng, v th n u b n nh n phm <Enter>, dng k t b n v a nh p s c a t i l nh cat, v l nh ny s l i a d li u ra mn hnh thng qua u ra tiu chu n. Nh v y, m i dng k t nh p vo s c hi n ra hay l n: m t l n khi g v l n th hai b i cu l nh cat. N u nh n t h p phm <Ctrl>+<D>, m dng ng ng vi c nh p d li u, chng ta s qua l i dng nh p l nh. Cng c th s d ng t h p phm <Ctrl>+<C>, m l cu l nh trong h v d ng chng trnh
1

gi ng lin k t ha h c

5.5 Chuy n h ng u vo/ u ra, ng ng v b l c

105

ang ch y. N u a tn m t t p tin vo lm tham s cho l nh cat, th n i dung c a l nh ny s c a t i u vo tiu chu n, t l nh cat s c n i dung ny v a t i u ra tiu chu n (xem s ). N i dung t p tin --> u vo tiu chu n (stdin) --cat--> u ra tiu chu n (stdout) y ch l m t tr ng h p ring c a vi c chuy n h ng d li u u vo, m t c ch r t c ch c a h v . V t t nhin chng ta c n xem xt k hn c ch ny.

5.5

Chuy n h ng u vo/ u ra, ng ng v b l c

M c d, nh ni trn, thng th ng u vo/ u ra c a m t chng trnh lin k t v i cc u vo/ u ra tiu chu n, trong h v cn c cc mi tr ng c bi t cho php chuy n h ng u vo/ u ra.

5.5.1

S d ng >, < v

chuy n h ng u vo/ra, s d ng cc k hi u >, < v . Th ng s d ng vi c chuy n h ng li u ra c a cu l nh vo t p tin. D i y l m t v d tng ng: maikhai@fpt:/some/where$ ls -l > /home/maikhai/ls.txt Theo l nh ny danh sch t p tin v th m c con c a th m c, m t ng i dng th c hi n l nh ls2 s c ghi vo t p tin /home/maikhai/ls.txt; khi ny n u t p tin ls.txt khng t n t i, th n s c t o ra; n u t p tin c, th n i dung c a n s b xa v ghi b i danh sch ni trn. N u b n khng mu n xa n i dung c m ghi thm d li u u ra vo cu i t p tin, th c n s d ng k hi u >> thay cho >. Khi ny kho ng tr ng tr c v sau cc k hi u > hay >> khng c ngha v ch dng v i m c ch thu n ti n, d nhn. B n c th chuy n h ng khng ch vo t p tin, m cn t i u vo c a m t cu l nh khc hay t i m t thi t b no (v d , my in). V d , a n i dung t p tin /home/maikhai/ls.txt v a t o trn t i c a s terminal th hai3 c th s d ng l nh sau: maikhai@fpt:/sw$ cat /home/maikhai/ls.txt > /dev/tty2 Nh b n th y, > dng chuy n h ng d li u c a u ra. Ch c nng tng t i v i u vo c th c hi n b i <. V d , c th m s t trong t p tin ls.txt nh sau (ch , y ch l m t v d minh h a, trn th c t th ng s d ng cu l nh n gi n hn): maikhai@fpt:/sw$ wc -w < /home/maikhai/ls.txt
2 3

th m c hi n th i b n c n dng t h p phm <Ctrl>+<Alt>+<F2> chuy n t i c a s terminal ny v ng nh p tr c

106

Bash

Cch chuy n h ng ny th ng c s d ng trong cc script, cho cc cu l nh m th ng ti p nh n (hay ch ) d li u vo t bn phm. Trong script dng t ng ha m t thao tc no , c th a cc thng tin c n thi t cho cu l nh t t p tin: trong t p tin ny ghi s n nh ng g c n th c hi n l nh . B i v cc k hi u <, > v >> lm vi c v i cc knh tiu chu n ( u vo ho c u ra), chng khng ch c dng theo cc cch quen thu c, th ng dng, m cn c th theo cch khc, l m t hn. V d , cc cu l nh sau l tng ng: [user]$ [user]$ [user]$ [user]$ cat > file cat>file >file cat > file cat

Tuy nhin, t chng (khng c m t l nh no, t c l khng c knh tiu chu n no cho l nh) cc k t chuy n h ng ny khng th c s d ng, nh th khng th , v d , nh p vo dng l nh sau: [user]$ file1 > file2 m thu c b n sao c a m t t p tin no . Nhng i u ny khng lm gi m gi tr c a c ch ny, b i v cc knh tiu chu n c cho m i cu l nh. Khi ny, c th chuy n h ng khng ch u vo v u ra tiu chu n, m cn cc knh khc. lm c i u ny, c n t tr c k hi u chuy n h ng s c a knh mu n chuy n. u vo tiu chu n stdin c s 0, u ra tiu chu n stdout - s 1, knh thng bo l i stderr - s 2. T c l l nh chuy n h ng c d ng y nh sau (xin c nh c l i, kho ng tr ng c nh > l khng nh t thi t): command N > M Trong , N v M - s c a knh tiu chu n (0, 1, v 2) ho c tn t p tin. Trong m t vi tr ng h p c s d ng cc k hi u <, > v >> m khng ch ra s knh hay tn t p tin, v vo ch cn thi u s t, theo m c nh, 1 n u dng >, t c l u ra tiu chu n, ho c 0 n u dng <, t c l u vo tiu chu n. Nh th , khi khng c s no ch ra, > s c bin d ch l 1 >, cn < s c bin d ch l 0 <. Ngoi vi c chuy n h ng cc knh tiu chu n n gi n nh v y, cn c kh nng khng nh ng chuy n h ng d li u vo knh ny hay knh khc, m cn sao chp n i dung c a cc knh tiu chu n . K hi u & dng th c hi n i u ny, khi t n (&) tr c s c a knh s chuy n d li u n: command N > &M L nh ny c ngha l, u ra c a knh v i s N c g i n c u ra tiu chu n, v sao chp t i knh c s M. V d , sao chp thng bo l i vo u ra tiu chu n, c n dng l nh 2>&1, cn 1>&2 sao chp stdout vo stderr. Kh nng ny c bi t c ch khi mu n ghi u ra vo t p tin, v khi chng ta v a c th nhn th y thng bo trn mn hnh, v a ghi chng vo t p tin. V d , tr ng h p sau th ng c ng d ng trong cc script ch y khi kh i ng Linux: teppi82@teppi:~$ cat hiho > /dev/null cat: hiho: No such file or directory teppi82@teppi:~$ cat hiho > /dev/null 2>&1

5.5 Chuy n h ng u vo/ u ra, ng ng v b l c

107

5.5.2

S d ng |

M t tr ng h p c bi t c a chuy n h ng u ra l s t ch c cc ng ng (ha y cn c th g i l knh gi a cc chng trnh, ho c bng chuy n). Hai hay vi cu l nh, m u ra c a l nh tr c dng lm u vo cho l nh sau, lin k t v i nhau (c th ni phn cch nhau, n u mu n) b i k hi u g ch th ng ng |. Khi ny u ra tiu chu n c a l nh ng bn tri so v i | d c chuy n n u vo tiu chu n c a chng trnh, d ng bn ph i so v i |. V d : maikhai@fpt:/sw$ cat ls.txt | grep knoppix | wc -l Dng ny c ngha l k t qu c a l nh cat, t c l n i dung t p tin ls.txt, s c chuy n n u vo c a l nh grep, l nh ny s phn chia n i dung ni trn v ch l y ra nh ng dng no c ch a t knoppix. n l t mnh, k t q a c a l nh grep c chuy n t i u vo c a l nh wc -l, m tnh s nh ng dng thu c. ng ng s d ng k t h p vi chng trnh nh l i v i nhau (m i chng trnh th c hi n m t bi n i xc nh no trn u vo) t o thnh m t l nh t ng qut, m k t qu c a n s l m t bi n i ph c t p. C n ch r ng, h v g i v th c hi n t t c cc cu l nh c trong ng ng cng m t lc, ch y m i l nh trong m t b n sao h v ring. V th ngay khi chng trnh th nh t b t u a k t qu u ra, chng trnh ti p theo b t u x l k t qu ny. Cng y nh v y, cc l nh ti p theo th c hi n cc cng vi c c a mnh: ch d li u t l nh tr c v a k t qu cho l nh ti p theo, gi ng nh m t dy chuy n s n xu t. N u nh mu n m t l nh no k t thc hon ton, tr c khi th c hi n l nh ti p theo, b n c th s d ng trn m t dng c k hi u dy chuy n |, cng nh d u ch p ph y ;. Tr c m i d u ch m ph y, h v s d ng l i v ch cho n khi th c hi n xong t t c cc cu l nh tr c c a ng ng. Tr ng thi thot ra (gi tr lgc, m c tr l i sau khi th c hi n xong chng trnh) c a m t ng ng s trng v i tr ng thi thot ra c a cu l nh sau cng trong ng ng. tr c cu l nh u tin c a ng ng c th t k hi u !, khi tr ng thi thot ra c a ng ng s l ph nh lgc c a tr ng tht thot ra c a l nh cu i cng trong ng ng. T c l n u tr ng thi thot ra c a l nh cu i cng b ng 0 th tr ng thi thot ra c a ng ng s b ng 1 v ng c l i. H v ch cho t t c cc cu l nh k t thc r i m i xc nh v a ra gi tr ny.

5.5.3

B l c

V d cu i cng trn (v d v i cu l nh grep) c th dng minh h a cho m t khi ni m qua tr ng khc, l, b l c chng trnh. B l c l l nh (hay chng trnh), m ti p nh n d li u vo, th c hi n m t vi bi n i trn d li u ny v a ra k t qu u ra tiu chu n (t y cn c th chuy n n ni no theo mu n c a ng i dng). Cc cu l nh - b l c bao g m cc l nh ni n trn cat, more, less, wc, cmp, diff, v c nh ng cu l nh c trong b ng 5.1. M t b l c c bi t, cu l nh tee, nhn i d li u u vo, m t m t g i d li u ny n u ra tiu chu n, m t khc ghi n (d li u) vo t p tin (ng i dng c n t tn). D th y r ng theo ch c nng c a mnh l nh tee tng t nh nhm k t chuy n h ng 1>&file. Kh nng c a b l c c th m r ng v i vi c s d ng

108

Bash

B ng 5.1: Cc cu l nh b l c L nh M t ng n g n grep, fgrep, egrep Tm trong t p tin hay d li u u vo cc dng c ch a m u vn b n c ch ra v a cc dng ny t i u ra tiu chu n tr Trong d li u u vo thay th cc k t th nh t b i cc k t tng ng th hai. Hy th g l nh tr abc ABC r i g vi dng ch a cc k t abc! comm So snh hai t p tin theo t ng dng m t v a vo u ra tiu chu n 3 c t : m t - nh ng dng ch g p t p tin th nh t, hai - nh ng dng ch g p t p tin th hai, v ba - nh ng dng c trong c hai t p tin. pr nh d ng t p tin hay n i dung c a u tiu chu n in n. sed Trnh so n th o t p tin theo dng, s d ng th c hi n m t vi bi n i trn d li u u vo (l y t t p tin hay u vo tiu chu n) cc bi u th c chnh quy (i u khi n), cho php, v d , t ch c tm ki m theo cc m u tm ki m t n gi n n ph c t p v r t ph c t p. N u mu n, chng ta c th ni r t nhi u v chuy n h ng v b l c. Nhng n i dung ny c trong ph n l n cc cu n sch v UNIX v Linux (xem ph n l i k t). V v y, chng ta s d ng y v chuy n sang m t ph n khc, c g i l mi tr ng v cc bi n mi tr ng t o b i h v .

5.6

Tham bi n v cc bi n s . Mi tr ng c a h v

Khi ni m tham bi n trong h v bash tng ng v i khi ni m bi n s trong cc ngn ng l p trnh thng th ng. Tn g i (hay ID) c a tham bi n c th l m t t bao g m cc k t b ng ch ci, ch s , d u g ch d i (ch k t u tin c a t ny khng c l ch s ), v c nh ng k t sau: , , #, , - (g ch ngang), $, , 0, _ (g ch d i). Chng ta ni r ng, tham bi n c xc nh hay c t ra, n u ng i dng g n cho n m t gi tr . Gi tr c th l m t dng tr ng r ng. nhn th y gi tr c a tham bi n, ng i ta s d ng k t $ tr c tn c a n. Nh v y, l nh: maikhai@fpt:/sm$ echo parameter hi n th t parameter, cn l nh maikhai@fpt:/sm$ echo $parameter hi n th gi tr c a tham bi n parameter (t t nhin n u nh tham bi n d c xc nh).

5.6.1

Cc d ng tham bi n khc nhau

Tham bi n chia thnh ba d ng: tham bi n v tr, tham bi n c bi t (cc k t c bi t ni trn chnh l tn c a nh ng tham bi n ny) v cc bi n s c a h v . Tn (ID) c a tham bi n v tr g m m t hay vi ch s (nhng khng c

5.6 Tham bi n v cc bi n s . Mi tr ng c a h v

109

tham bi n v tr 0). Gi tr c a tham bi n v tr l cc tham s cho l nh, c a ra khi ch y h v (tham s u tin l gi tr c a tham bi n 1, tham s th hai tham bi n 2, v.v. . . ). C th dng cu l nh set thay i gi tr c a tham bi n v tr. Gi tr c a cc tham bi n ny cng thay i trong khi h v th c hi n m t trong cc hm s (chng ta s xem xt v n ny d i). Cc tham bi n c bi t khng g khc hn l cc m u, m s thay th (php th , php hon i) chng c th c hi n nh trong b ng 5.2: B ng 5.2: Thay th cc tham bi n c bi t Tham bi n Quy lu t thay th * Thay th b i cc tham bi n v tr, b t u t tham bi n th nh t. N u s thay th th c hi n trong d u ngo c kp, th tham bi n ny s c thay b i m t t duy nh t, m t o ra t t t c cc tham bi n v tr, phn cch nhau b i k t u tin c a bi n s IFS (s ni n sau). T c l $ tng ng v i $1c$2c. . . , trong c - k t u tin trong gi tr c a bi n s IFS. N u gi tr c a IFS tr ng, ho c khng c xc nh gi tr , th tham bi n phn cch nhau b i cc kho ng tr ng. @ Thay th b i tham bi n v tr, b t u t tham bi n th nh t. N u thay th th c hi n trong ngo c kp, th m i tham bi n s c thay th b i m t t ring bi t. T c l, $@ tng ng v i $1 $2 . . . N u khng c tham bi n v tr, th gi tr s khng c thi t l p (tham bi n s b x # Thay th b i gi tr th p phn c a cc tham bi n v tr. ? Thay th b i tr ng thi thot ra c a cu l nh cu i cng trong ng ng, m c th c hi n trong ch n n tr c. - (g ch ngang) Thay th b i gi tr cc c , flag, c t b i l nh n i tr set hay trong khi ch y h v . $ Thay th b i s c a ti n trnh (PID - process identificator) Thay th b i s c a ti n trnh (PID) cu i cng trong s cc cu l nh th c hi n trong n n sau. 0 Thay th b i tn h v hay tn c a script ang ch y. N u bash ch y m t t p tin l nh no , th $0 c gi tr b ng tn c a t p tin ny. Trong tr ng h p ng c l i gi tr ny b ng ng d n u n h v (v d , /bin/bash _ (g ch d i) Thay th b i tham s cu i cng c a cu l nh tr c trong s cc cu l nh c th c hi n (n u l i l m t tham bi n hay bi n s , th s s d ng gi tr c a n Cc tham bi n c bi t, c li t k b ng trn, c m t i m khc bi t l ch c th nh c n chng, khng th gn cc gi tr cho cc tham bi n ny. Bi n mi tr ng, nhn t pha h v , l cc tham bi n c t tn. Gi tr c a bi n mi tr ng c gn nh thao tc c d ng sau: [user]$ name=value Trong , name - tn c a bi n, cn value - gi tr mu n gn cho bi n (c th l m t dng tr ng). Tn c a bi n mi tr ng ch c th bao g m cc ch s , ch ci v khng c b t u b i m t ch s . (Tin r ng sau khi c o n vi t v

110

Bash

tham bi n v tr th cc b n hi u t i sao m t bi n mi tr ng khng th b t u b i m t ch s .) Gi tr c th l b t k m t dng vn b n no. N u gi tr c ch a nh ng k t c bi t, th c n t n (gi tr ) vo d u ngo c. Gi tr t t nhin s khng ch a cc d u ngo c ny. N u m t bi n mi trng c xc nh, th cng c th b xa b b ng l nh n i tr unset. T p h p t t c cc bi n ny cng v i cc gi tr gn cho chng g i l mi tr ng (enviroment) c a h v . C th xem n (mi tr ng) nh l nh set khi khng c tham s (c th c n dng ng ng set | less, n u mi tr ng l n, c nhi u bi n). xem gi tr c a m t bi n mi tr ng c th , thay v dng l nh set (khi ny c n tm trong k t qu c a n bi n mu n xem), c th s d ng l nh echo: [user]$ echo $name Trong , c n thay name b i tn bi n (nh v y, trong tr ng h p ny, b n l i c n ph i bi t tn c a bi n mu n xem). Trong s cc bi n, m b n s th y trong k t qu c a l nh set, c nh ng bi n r t th v . Xin hy ch n, v d , bi n RANDOM. N u th ch y vi l n lin ti p cu l nh sau: maikhai@fpt:/sw$ echo $RANDOM th m i l n b n s nh n c m t gi tr m i. Nguyn nhn l v bi n ny tr l i m t gi tr ng u nhin4 trong kho ng 0 - 32 768.

5.6.2

D u nh c c a h v

M t trong cc bi n r t quan tr ng c tn PS1. Bi n ny cho bi t d ng c a d u nh c, m bash a ra trong khi ch ng i dng nh p cu l nh ti p theo. Theo m c nh th bi n ny c gn gi tr \s-\v\$ , tuy nhin trn cc b n phn ph i khc nhau th ng c cc script kh i ng (hay script ng nh p) xc nh l i bi n ny. Ni chung th trong bash c t t c b n d u nh c, c s d ng trong cc tr ng h p khc nhau. Bi n PS1 a ra d ng c a d u nh c khi h v ch nh p l nh. D u nh c th hai, xc nh b i bi n PS2, xu t hi n khi h v ch ng i dng nh p thm m t vi d li u c n thi t no c th ti p t c ch y cu l nh (chng trnh) g i. Theo m c nh bi n PS2 c gi tr >. R t c th b n nhn th y d u nh c ny, khi ch y l nh cat a d li u vo t bn phm vo t p tin. M t v d khc - l nh ftp, sau khi ch y l nh ny d u nh c s c d ng nh ni. D u nh c, xc nh b i bi n PS3, s d ng trong l nh select. D u nh c, xc nh b i bi n PS4, c a ra tr c m i cu l nh, trong lc bash theo di qu trnh th c hi n. Gi tr theo m c nh - +. N u c mong mu n, b n c th thay i cc bi n PS1 v PS2. Khi ny c th s d ng b t k k t no nh p t bn phm, cng nh m t vi k t chuyn dng xc nh d ng d u nh c nh trong b ng 5.3 (ch a ra m t vi trong s chng lm v d , danh sch y xem trong trang man c a bash - g l nh man bash). S c a l nh (s th t c a l nh ang th c hi n trong bu i lm vi c hi n th i) c th khc v i s c a chnh n trong danh sch l ch s cc cu l nh, b i v danh sch cn ch a c nh ng cu l nh c ghi l i trong t p tin l ch s . Sau
4

random l t ti ng Anh c ngha ng u nhin

5.6 Tham bi n v cc bi n s . Mi tr ng c a h v

111

C m k t \a \d \h \H \t \T \@ \u \w \W \$ \nnn \n \s \# \\ \[ \] \!

B ng 5.3: K t xc nh d ng d u nh c Gi tr (k t qu thu c) Tn hi u m thanh (m ASCII 07) Th i gian d ng Th , thng, ngy, v d , Sun, Dec, 26. Tn my (hostname) n d u ch m u tin. Tn my y , v d teppi.phanthinh.com Th i gian hi n th i d ng 24 gi : HH:MM:SS (gi :pht:giy) Th i gian hi n th i d ng 12 gi : HH:MM:SS Th i gian hi n th i d ng 12 gi am/pm (sng/chi u) Tn ng i dng ch y h v , v d teppi Tn y c a th m c lm vi c hi n th i (b t u t g c), v d /home/teppi82/project/l4u Th m c hi n th i (khng c ng d n) K t #, n u h v c ch y b i ng i dng root, v k t $, n u h v c ch y b i ng i dng th ng. K t c m h tm nnn Dng m i (chuy n dng) Tn h v S hi n th i c a cu l nh D u g ch ng c (backslash) Sau k t ny t t c cc k t s khng c in ra. K t thc chu i cc k t khng c in ra. S th t c a l nh hi n th i trong l ch s cc cu l nh dng.

khi gi tr c a bi n c h v c xong, s x y ra s thay th theo cc quy lu t m r ng trong b ng trn, ng th i cn x y ra s thay th trong tn cc cu l nh, trong cc bi u th c s h c, v s chia t (word splitting). Chng ta s ni n nh ng s thay th ny d i.V d , sau khi th c hi n l nh (v trong dng vn b n c kho ng tr ng, nn nh t thi t ph i c d u ngo c): [user/root]$ PS1="[\u@\h \W]\$" th trong d u nh c s c d u m ngo c vung, tn ng i dng, k hi u , tn my, kho ng tr ng, tn c a th m c hi n th i (khng c ng d n), d u ng ngo c vung, v k hi u $ (n u trn h v ang lm vi c ng i dng bnh th ng) hay #(n u h v ch y d i ng i dng root).

5.6.3

Bi n mi tr ng PATH

Cn m t bi n cng quan tr ng n a c tn PATH. Bi n ny a ra danh sch ng d n n cc th m c, m bash s tm ki m t p tin (tr ng h p ring l cc t p tin l nh) trong tr ng h p, ng d n y n t p tin khng c a ra. Cc th m c trong danh sch ny phn cch nhau b i d u hai ch m (:). Theo m c nh bi n mi tr ng PATH bao g m cc th m c bin sau: /usr/local/bin, /bin, /usr/bin, /usr/X11R6/bin, t c l bi n PATH trng nh th ny: /usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin. thm th m c vo danh sch ny, c n th c hi n cu l nh sau:

112 [user]$ PATH=$PATH:new_path

Bash

Khi tm ki m, h v l c l i cc th m c theo ng th t li t k trong bi n PATH. M t ch nh , c th a vo danh sch ny th m c hi n th i, khi thm vo bi n PATH m t d u ch m (.). Tuy nhin, y l i u khng khuyn lm v i l do b o m t: ng i c c c th t vo th m c dng chung m t chng trnh no , c cng tn v i m t trong s nh ng cu l nh th ng dng b i root, nhng th c hi n nh ng ch c nng khc hon ton ( c bi t nguy hi m n u th m c hi n th i ng u danh sch tm ki m).

5.6.4

Bi n mi tr ng IFS

Bi n ny xc nh k t (c m k t ) phn cch (Internal Field Separator), s d ng trong thao tc phn chia t ng khi bi n i dng l nh, m h v th c hi n tr c khi ch y m t cu l nh no (xem d i). Gi tr theo m c nh c a bi n ny <Kho ng_tr ng><Tab><K_t _hng_m i>. N u th g l nh echo $IFS, b n s nh n c m t ng c nhin nh .

5.6.5

Th m c hi n th i v th m c c nhn

Tn c a th m c hi n th i ghi trong bi n mi tr ng v i tn PWD, v gi tr c a bi n ny thay i sau m i l n ch y chng trnh cd (cng nh m i l n thay i th m c hi n th i theo b t k cch no, v d , qua Midnight Commander). Tng t nh v y tn y (g m c ng d n) c a th m c c nhn c a ng i dng, ch y ti n trnh cho, ghi trong bi n HOME.

5.6.6

Cu l nh export

Khi h v ch y m t chng trnh hay cu l nh no , n (h v ) cung c p cho chng m t ph n bi n mi tr ng. c th cung c p bi n mi tr ng cho ti n trnh ch y t h v , c n gn gi tr cho bi n ny v i l nh export, t c l thay v [user]$ name=value c n g: [user]$ export name=value Trong tr ng h p ny, t t c cc chng trnh ch y t h v (k c b n sao th hai c a chnh h v ) s c quy n truy c p t i cc bi n c gn nh v y, t c l s d ng gi tr c a chng qua tn.

5.7

Khai tri n bi u th c

Hay h v c cc cu l nh nh th no?. Khi h v nh n c m t dng l nh ny c n th c hi n, n (h v ) tr c khi ch y cu l nh th c hi n vi c phn tch ng php dng l nh ny (gi ng trong

5.7 Khai tri n bi u th c

113

ngn ng , phn tch ch ng , v ng ). M t trong nh ng b c c a s phn tch ny l php m hay khai tri n bi u th c (expansion). Trong bash c b y lo i khai tri n bi u th c:
Khai tri n d u ngo c (brace expansion); Thay th d u ng (tilde expansion); Php th cc tham bi n v bi n s ; Php th cc cu l nh; Php th s h c (th c hi n t tri sang ph i); Php chia t (word splitting); Khai tri n cc m u tn t p tin v th m c (pathname expansion).

Cc thao tc ny c th c hi n theo ng th t li t k trn. Chng ta s xem xt chng theo t t ny.

5.7.1

Khai tri n d u ngo c

Khai tri n d u ngo c t t nh t minh h a trn v d . Gi thi t, chng ta c n t o th m c con trong m t th m c no , ho c thay i ng i dng s h u c a vi t p tin cng m t lc. C th th c hi n i u ny nh cc cu l nh sau: [user]$ mkdir /usr/src/unikey/{old,new,dist,bugs} [root]# chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex} Trong tr ng h p u, trong th m c /usr/src/unikey/ s t o ra cc th m c con old,new,dist, v bugs. Trong tr ng h p th hai, ng i dng s h u c a cc t p tin sau s thay i (thnh root):
/usr/ucb/ex /usr/lib/ex?.? /usr/ucb/edit /usr/lib/ex?.? /usr/ucb/ex /usr/lib/how_ex /usr/ucb/edit /usr/lib/how_ex

114

Bash

T c l v i m i c p d u ngo c s t o ra vi dng ring r (s nh ng dng ny b ng s t n ng trong d u ngo c) b ng cch ghi thm vo tr c m i t trong ngo c nh ng g ng tr c d u ngo c, v ghi thm vo sau m i t ny nh ng g ng sau d u ngo c. M t v d khc: dng a{d,c,b}e khi khai tri n s thu c ba t ade ace abe. Khai tri n d u ngo c c th c hi n tr c cc d ng khai tri n khc trong dng l nh, hn n a t t c cc k t c bi t c trong dng l nh, k c nh ng k t n m trong d u ngo c, s c gi khng thay i (chng s c bin d ch cc b c pha sau).

5.7.2

Thay th d u ng (Tilde Expansion)

N u nh t b t u v i k t d u ng (), t t c cc k t ng tr c d u g ch cho u tin (hay t t c cc k t n u nh khng c d u g ch cho) s c hi u l tn ng i dng (login name). N u nh tn ny l m t dng r ng (t c l d u g ch cho ng ngay pha sau d u ng), th d u ng s c thay th b i gi tr c a bi n HOME. V n u gi tr c a bi n HOME khng c gn th d u ng s c thay th b i ng d n u n th m c c nhn c a ng i dng, m ch y h v . N u nh ngay sau d u ng (v tr c d u g ch cho) l m t t trng v i tn c a m t ng i dng h p php, th d u ng c ng v i tn ng i dng c thay th b i ng d n y n th m c c nhn c a ng i dng ny. N u nh t ng sau d u ng khng ph i l tn c a m t ng i dng (v khng r ng), th t khng b thay i. N u nh sau d u ng l +, hay k hi u ny s c thay th b i tn u c a th m c hi n th i (t c l gi tr c a bi n PWD). N u d ng sau d u ng l -, th thay th gi tr c a bi n OLDPWD (th m c c).

5.7.3

Php th cc tham bi n v bi n s

K t $ c s d ng cho cc thao tc th tham bi n, th cc cu l nh v th cc bi u th c s h c. Bi u th c hay tn ng sau $ c th c a vo ngo c, khng nh t thi t, nhng r t ti n, v d u ngo c phn cch bi u th c v i cc t hay k t ng sau. Nh v y, g i gi tr c a tham bi n ni chung cng nh bi n mi tr ng ni ring trong dng l nh, c n t bi u th c d ng $parameter. D u ngo c ch c n thi t, n u tn c a tham bi n c ch a vi ch s , ho c khi theo sau tn cn c cc k t khc, m chng ta khng mu n h v hi u l m chng l m t ph n c a tn tham bi n. Trong t t c cc gi tr c a bi n s x y ra php th d u ng (), s khai tri n tham bi n v bi n s , php th cc cu l nh, php th cc bi u th c s h c, cng nh xa cc k t trch d n (xem d i). S phn chia t khng x y ra, tr tr ng h p $ (l i gi i thch xem b ng s 3). S khai tri n cc m u tn t p tin v th m c cng khng c th c hi n.

5.7.4

Php th cc cu l nh

Php th cc cu l nh l m t cng c r t m ng c a bash. ngha c a n n m ch thay th tn cc cu l nh b i k t qu th c hi n c a chng. C hai d ng php th l nh: $(command) v command N u ng d ng d ng th hai (ch y s d ng d u ngo c n ng c, phm cho n th ng n m trn phm Tab), th d u g ch ng c (\) trong d u ngo c s c ch c nng nh m t k t thng

5.7 Khai tri n bi u th c

115

th ng, tr tr ng h p, khi ng sau n (d u g ch ng c) l m t $, , hay m t \. N u nh s d ng d ng $(command), th t t c cc k t ng trong ngo c t o thnh m t cu l nh, khng c k t no c ngha c bi t. N u php th cu l nh x y ra pha trong ngo c kp, th trong k t qu c a php th s khng th c hi n php phn chia t v s khai tri n m u tn t p tin v th m c.

5.7.5

Php th s h c (Arithmetic Expansion)

Php th s h c cho php tnh gi tr c a m t bi u th c s h c v thay th n (bi u th c) b i k t qu thu c. C hai d ng php th s h c: $[expression] ((expression)) Trong expression c hi u ( c bash c) nh khi ng trong ngo c kp, nhng nh ng d u ngo c kp trong expression l i c c nh m t k t th ng. Pha trong expression c th c hi n cc php th tham bi n v th cu l nh. C php c a bi u th c expression tng t nh c php c a bi u th c s h c c a ngn ng C, c th hn v v n ny c th c trong ph n ARITHMETIC EVALUATION c a trang man c a bash. V d , cu l nh [user]$ echo $((2 + 3 * 5)) cho k t qu b ng 17. N u bi u th c khng chnh xc, bash s a ra thng bo l i.

5.7.6

Phn chia t (word splitting)

Sau khi th c hi n xong cc php th tham bi n, th l nh, v th cc bi u th c s h c, h v l i phn tch dng l nh m t l n n a (nhng d ng thu c sau cc php th ni trn) v th c hi n vi c phn chia t (word splitting). Thao tc ny n m ch , h v tm trong dng l nh t t c cc k t phn chia, xc nh b i bi n IFS (xem trn), v nh chia nh dng l nh thnh cc t ring r trong cc ch tng ng. N u gi tr c a IFS b ng m t dng tr ng, th vi c phn chia t s khng x y ra. N u trong dng l nh khng th c hi n php th no trong cc php th k trn, th phn chia t cng khng x y ra.

5.7.7

Khai tri n cc m u tn t p tin v th m c (Pathname Expansion)

Php th tn ng d n v t p tin (Pathname expansion) s d ng ch nh m t m u nh g n m c th ch ra vi t p tin (hay th m c), tng ng v i m u ny. Sau khi phn chia t , v n u nh khng a ra ty ch n -f, th bash s tm ki m trong t ng t c a dng l nh cc k t *, ?, v [. N u tm th y t v i m t hay vi k t nh v y, th t ny s c xem nh m t m u, v c n thay th b i cc t trong danh sch ng d n, tng ng v i m u ny. N u nh khng tm th y tn tng ng v i m u, v bi n nullglob khng c a ra, th t s khng thay i, t c l cc k t c bi t b m t gi tr v hi u nh cc k t th ng. N u nh bi n ny c xc nh, m ng d n tng ng v i m u khng tm th y, th t s b xa kh i dng l nh. Cc k t dng t o m u c cc gi tr trong b ng 5.4.

116

Bash

K t *

[...]

B ng 5.4: Cc k t t o m u Quy lu t thay th Tng ng v i b t k dng k t no, k c dng r ng. V d , v*.txt s c thay th b i vnoss.txt, vnlinux.txt v vntex.txt (n u cc t p tin ny t n t i), v *.png s tng ng t t c cc t p tin c ph n m r ng png (t p tin h a hai chi u). Tng ng b t k m t k t n no. V d , m u file?.txt s c thayth b i cc tn t p sau file1.txt, file2.txt, file3.txt, v filea.txt (n u chng t n t i), nhng file23.txt th khng. Tng ng b t k k t no trong s cc k t n m trong d u ngo c vung ny. C p k t , phn cch nhau b i d u tr (-), v d c-f, bi u th m t dy; b t k k t no, theo t i n, n m gi a hai k t ny, k c hai k t t o ra dy (c v f trong v d ) cng tng ng v i m u. N u k t u tin trong ngo c vung l hay th m u ( v tr ny) s tng , ng t t c cc k t , khng c ch ra trong ngo

M u tn t p tin r t th ng xuyn s d ng trong dng l nh c ch a ls. Hy t ng t ng l b n mu n xem thng tin c a m t th m c, trong c ch a m t s l ng l n cc t p tin cc d ng, v d , t p tin hnh nh, phim v i d ng gif, jpeg, avi, v.v. . . . thu c thng tin ch c a t p tin d ng jpeg, c th dng cu l nh [user]$ ls *.jpg N u trong th m c c nhi u t p tin, m tn c a chng l cc s g m b n ch s (th m c /proc l m t v d +), th l nh sau ch a ra danh sch cc t p tin c s t 0500 n 0999: [user]$ ls -l 0[5-9]??

5.7.8

Xa cc k t c bi t

Sau khi lm xong t t c cc php th , cc k t \, v " cn l i trong dng l nh (chng c s d ng hu b gi tr c bi t c a cc k t khc) s b xa h t.

5.8

Shell - m t ngn ng l p trnh

Nh ni trn, c th xy d ng b t k gi i thu t no, cng c n c cc ton t ki m tra i u ki n. H v bash h tr cc ton t l a ch n if...then...else v case, cng nh cc ton t vng l p for, while, until, nh n (bash) tr thnh m t ngn ng l p trnh m nh.

5.8 Shell - m t ngn ng l p trnh

117

5.8.1

Ton t if v test (ho c [ ])

C u trc c a ton t i u ki n c d ng thu g n nh sau: if list1 then list2 else list3 fi trong , list1, list2, v list3 l cc chu i cu l nh, phn cch nhau b i d u ph y v k t thc b i m t d u ch m ph y hay k t dng m i. Ngoi ra, cc chu i ny c th c a vo d u ngo c nh n: list. Ton t if ki m tra gi tr c tr l i b i cc cu l nh t list1. N u trong danh sch c vi cu l nh, th ki m tra gi tr c tr l i b i cu l nh cu i cng c a danh sch. N u gi tr ny b ng 0, th s th c hi n cc l nh t list2; cn n u gi tr ny khc khng, th s th c hi n nh ng l nh t list3. Gi tr c tr l i b i ton t if nh v y, trng v i gi tr m chu i l nh th c hi n (list2 ho c list3) a ra. D ng y c a l nh if nh sau: if list then list [ elif list then list ] ... [ else list ] fi ( y d u ngo c vung ch c ngha l, nh ng g n m trong n, ngo c vung, khng nh t thi t ph i c). Bi u th c ng sau if hay elif th ng l cu l nh test, m c th c bi u th b i d u ngo c vung [ ]. L nh test th c hi n php tnh m t bi u th c no , v tr l i gi tr 0, n u bi u th c l ng, v 1 trong tr ng h p ng c l i. Bi u th c c a t i chng trnh test nh m t tham s c a chng trnh. Thay v g test expression c th a bi u th c expression vo ngo c vung: [ expression ] C n ch r ng, test v [ l hai tn c a c a cng m t chng trnh, ch khng ph i l m t php bi n ha th n thng no c a h v bash (ch l c php c a [ i h i ph i c d u ng ngo c). V cng c n ch r ng ch c a test trong c u trc if c th s d ng b t k chng trnh no. k t thc m c ny, chng ta a ra v d s d ng if: if [ -x /usr/bin/unicode_start ] ; then unicode_start else echo "hello world" fi V ton t test (hay [...]) c n i su hn.

5.8.2

Ton t test v i u ki n c a bi u th c

Bi u th c i u ki n, s d ng trong ton t test, c xy d ng trn c s ki m tra thu c tnh t p tin, so snh cc dng v cc so snh s h c thng th ng. Bi u th c ph c t p hn c t o ra t cc thao tc n v kp sau (nh ng vin g ch c s ):
-a file ng n u t p tin c tn file t n t i.

118

Bash
-b file ng n u file t n t i, v l m t t p tin thi t b kh i (block device) c bi t. -c file ng n u file t n t i, v l m t t p tin thi t b k t (charater device) c bi t. -d file ng n u file t n t i v l m t th m c. -e file ng n u t p tin c tn file t n t i. -f file ng n u t p tin c tn file t n t i v l m t t p tin thng th ng. -g file ng n u t p tin c tn file t n t i v c t bit thay i nhm. -h file hay -L file ng n u t p tin c tn file t n t i v l lin k t m m (lin k t t ng trng). -k file ng n u t p tin c tn file t n t i v c t bit sticky. -p file ng n u t p tin c tn file t n t i v l tn c a m t ng (knh FIFO). -p file ng n u t p tin c tn file t n t i v l tn c a m t ng (knh FIFO). -r file ng n u t p tin c tn file t n t i v c quy n c. -s file ng n u t p tin c tn file t n t i v kch th c l n hn khng. -t fd ng n u b m t c a t p tin (fd) m v ch ln terminal. -u file ng n u t p tin c tn file t n t i v c t bit thay i ng i dng. -w file ng n u t p tin c tn file t n t i v c quy n ghi. -x file ng n u t p tin c tn file t n t i v c quy n th c thi.

5.8 Shell - m t ngn ng l p trnh

119

-0 file ng, n u t p tin c tn file v ch s h u c a n l ng i dng m ID c hi u l c ch n. -G file ng, n u t p tin c tn file t n t i v thu c v nhm, xc nh b i ID nhm c hi u l c. -S file ng, n u t p tin c tn file t n t i v l socket. -N file ng, n u t p tin c tn file t n t i v thay i t l n c c cu i cng. file1 -nt file2 ng, n u t p tin file1 c th i gian s a i mu n hn file2. file1 -ot file2 ng, n u t p tin file1 gi hn file1 (tr ng h p ng c l i c a tr ng h p trn). file1 -ef file2 ng, n u t p tin file1 v file2 c cng m t s thi t b v ch s m t inode. -o optname ng, n u ty ch n optname c a h v c kch ho t. Chi ti t xin xem trn trang man bash. -z string ng, n u di c a chu i string b ng khng. -n string ng, n u di c a chu i khc khng. string1 == string2 ng, n u hai chu i trng nhau. C th thay hai == b ng m t =. string1 !== string2 ng, n u hai chu i khng trng nhau. string1 < string2 ng, n u chu i string1, theo t i n, ng tr c chu i string2 ( i v i ngn ng hi n th i). string1 > string2 ng, n u chu i string1, theo t i n, ng sau chu i string2 ( i v i ngn ng hi n th i). arg1 OP arg2 y OP l m t trong cc php so snh s h c: -eq (b ng), -ne (khc, khng b ng), -lt (nh hn), -le (nh hn ho c b ng), -gt (l n hn), -ge

120

Bash (l n hn ho c b ng). ch cc tham s arg1 v arg2 c th s d ng cc s nguyn (m ho c dng).

T cc bi u th c i u ki n c b n ny c th xy d ng cc bi u th c ph c t p theo mu n nh cc php lgc thng th ng PH NH, V (c ng) v HO C:


!(expression) Php ph nh. ng, n u bi u th c sai. expression1 -a expression2 Php c ng lgic AND. ng n u c hai bi u th c u ng. expression1 -o expression2 Php lgc ho c OR. ng n u m t trong hai bi u th c ng.

5.8.3

Ton t case

D ng c a ton t case nh sau: case word in [ [(] pattern [ | pattern ] ... ) list ;; ] ... esac Cu l nh case u tin khai tri n t word, v so snh n (word) v i m i t trong m u pattern theo th t . Sau khi tm th y s trng nhau u tin th d ng vi c so snh l i, v th c hi n danh sch list cc cu l nh ng sau m u tm th y. Gi tr tr l i b i ton t ny, b ng 0, n u khng tm th y s trng nhau no. Trong tr ng h p ng c l i, tr l i gi tr m cu l nh cu i cng trong danh sch list a ra. V d s d ng ton t case sau l y t script /etc/rc.d/rc.sysinit (FreeBSD-style): case "$UTC" in yes|true) CLOCKFLAGS="$CLOCKFLAGS -u"; CLOCKDEF="$CLOCKDEF (utc)"; ;; no|false) CLOCKFLAGS="$CLOCKFLAGS --localtime"; CLOCKDEF="$CLOCKDEF (localtime)"; ;; esac N u bi n s (UTC) nh n gi tr yes ho c true, th s th c hi n c p l nh th nh t, nh n gi tr no ho c false - c p th hai.

5.8.4

Ton t select

Ton t select cho php t ch c h i tho i v i ng i dng. N c d ng sau: select name [ in word; ] do list; done

5.8 Shell - m t ngn ng l p trnh

121

Lc u t m u word hnh thnh m t danh sch nh ng t tng ng v i m u ny. T p h p nh ng t ny c a vo knh thng bo l i tiu chu n, hn n a m i t c i km v i m t s th t . N u m u word b b qua (khng c trong ton t select), th s a vo cc tham bi n v tr (xem trn) theo m t cch tng t . Sau , d u nh c PS3 c a ra, v h v ch chu i nh p vo trn u vo tiu chu n. N u chu i nh p vo c ch a s , tng ng v i m t trong cc s hi n ra, th bi n name s c gn gi tr b ng t i km v i s ny. N u nh p vo m t dng r ng, th s v t s c hi n ra them m t l n n a. N u nh p vo b t k m t gi tr no khc, th bi n name s nh n gi tr b ng khng. Chu i m ng i dng nh p vo, c ghi l i trong bi n REPLY. Danh sch l nh list c th c hi n v i gi tr bi n name ch n. Sau y l m t script nh (xin hy g khng d u n u console c a b n cha h tr vi c hi n th Ti ng Vi t):
#!/bin/sh echo "B n thch dng OS no?" select var in "Linux" "Gnu Hurd" "Free BSD" "MacOSX" "Solaris" "QNX" "Other"; do break done echo "B n ch n $var"

Ghi o n trn vo m t t p tin (v d , select.sh), thay i t p tin thnh kh thi (v d , chmod 755 select.sh), v ch y (./select.sh). Trn mn hnh s hi n ra cu h i sau: B n thch dng OS no? 1) Linux 3) Free BSD 2) Gnu Hurd 4) MacOSX #?

5) Solaris 6) QNX

7) Other

Hy nh n m t trong 7 s a ra (t <Enter>), th s th y thng bo sau: B n ch n MacOSX

1 n 7). N u b n nh p 4 (nh n c

5.8.5

Ton t for

Ton t for lm vi c c khc m t cht so v i for trong cc ngn ng l p trnh thng th ng. Thay v tng ho c gi m gi tr c a m t bi n s no (ln ho c xu ng) m t n v sau m i vng l p, th n gn gi tr ti p theo trong danh sch t a s n cho bi n trong m i vng l p. Ni chung c u trc c d ng sau: for name in words do list done Quy lu t xy d ng danh sch l nh (list) gi ng trong ton t if. V d . Script sau t o cc t p tin fu1, fu2, v fu3:

122 for a in 1 2 3 ; do touch fu$a done C th g ba dng ny trn m t dng l nh, k t qu thu c tng t script. D ng t ng qut c a ton t for nh sau: for name [ in word; ] do list ; done

Bash

v i

u tin cng x y ra s khai tri n t word theo quy lu t khai tri n bi u th c (xem trn). Sau bi n name l n l t c gn cc gi tr thu c t s khai tri n ny, v th c hi n danh sch l nh list trong m i l n nh v y. N u khng c in word, th danh sch l nh list c th c hi n m t l n cho m i tham bi n v tr a ra. Trn Linux c chng trnh seq, ti p nh n hai s nguyn lm tham s , v a ra chu i t t c cc s n m gi a hai s ny (c ng thm c chng). Nh cu l nh ny c th s d ng for c a bash lm vi c nh ton t for trong cc ngn ng l p trnh thng th ng. lm c i u ny ch c n vi t vng l p for nh sau: for a in $( seq 1 6 ) ; do cat fu$a done Cu l nh (script) ny a ra mn hnh n i dung c a 10 t p tin (n u c): fu1, ..., fu10.

5.8.6

Ton t while v until

Ton t while lm vi c tng t nh if, nhng vng l p cc cu l nh trong list2 ch th c hi n khi i u ki n cn ng, v s ng ng khi i u ki n khng th a mn. C u trc c d ng nh sau: while list1 do list2 done V d : while [ -d directory ] ; do ls -l directory >> logfile echo -- SEPARATOR -- >> logfile sleep 60 done Chng trnh (script) trn s theo di v ghi l i n i dung c a th m c directory theo t ng pht n u th m c cn t n t i. Ton t until tng t nh ton t while: until list1 do list2 done

5.8 Shell - m t ngn ng l p trnh

123

i m khc bi t n m ch , s d ng gi tr ph nh c a i u ki n list1, t c l list2 th c hi n, n u cu l nh cu i cng trong danh sch list1 tr l i tr ng thi thot ra khc khng.

5.8.7

Cc hm s

C php H v bash cho php ng i dng t o cc hm s cho mnh. Hm s


lm vi c v c s d ng gi ng nh cc cu l nh thng th ng c a h v , t c l chng ta c th t t o cc cu l nh m i. Hm s c c u trc nh sau: function name () { list } Hn n a t function khng nh t thi t ph i c, name xc nh tn c a hm (dng g i hm), cn ph n thm c a hm s t o b i danh sch cc cu l nh list, n m gi a { v }. Cc cu l nh ny s c th c hi n m i khi tn name c g i (gi ng nh m t l nh thng th ng). C n ch r ng hm c th l qui, t c l g i hm s ngay trong ph n thn c a n. Hm s th c hi n trong ph m vi h v hi n th i: khng c ti n trnh m i no c ch y khi bin d ch hm s (khc v i vi c ch y script).

5.8.8

Tham s

Khi hm s c g i th c hi n, cc tham s c a hm s tr thnh cc tham bi n v tr (positional parameters, xem trn) trong th i gian th c hi n hm ny. Chng c t cc tn nh $n, trong n l s c a tham s m chng ta mu n s d ng. Vi c nh s b t u t 1, nh v y $1 l tham s u tin. Cng c th s d ng t t c cc tham s m t lc nh $*, v a ra s th t c a tham s nh $# Tham s v tr s 0 khng thay i. Trong khi th c hi n n u g p cu l nh n i tr return (trong ph n thn c a hm), th hm s s b d ng l i v quy n i u khi n c trao cho cu l nh ng sau hm. Khi th c hi n xong hm s , cc tham bi n v tr v tham bi n c bi t # s c tr l i cc gi tr m chng c tr c khi ch y hm.

5.8.9

Bi n n i b (local)

N u mu n t o m t tham bi n a phng, c th s d ng t kha local. C php a ra bi n a phng gi ng h t cc tham bi n khc, ch c i u c n ng sau t kha local: local name=value. D i y l m t v d hm s , th c hi n cng vi c c a l nh seq nh c n trn: seq() { local I=$1; while [ $2 != $I ]; do { echo -n "$I "; I=$(( $I + 1 ))

124 }; done; echo $2 }

Bash

C n ch n ty ch n -n c a echo, n (ty ch n) h y b vi c t o dng m i. M c d ty ch n ny khng c nhi u ngha v i m c ch chng ta mu n y, nhng s r t c ch trong cc hm s v i m c ch khc. Hm s tnh giai th a fact M t v d khc: fact() { if [ $1 = 0 ]; then echo 1; else { echo $(( $1 * $( fact $(( $1 -- 1 )) ) )) }; fi } y l hm s giai th a, m t v d c a hm qui. Hy ch n s khai tri n s h c, v php th cc cu l nh.

5.9

Script c a h v v l nh source

Script c a h v ch l cc t p tin c ch a chu i l nh. Tng t hm s script c th c th c hi n nh m t cu l nh. C php truy c p n cc tham s cng nh hm s . Trong cc tr ng h p thng th ng khi ch y script s c m t ti n trnh m i c ch y. c th th c hi n script trong b n bash hi n th i, c n s d ng cu l nh source, hay m t d u ch m . ( ng ngha c a source). Trong tr ng h p ny script ch n gi n l m t tham s c a l nh ni trn. Cu l nh s c d ng: source filename [arguments] Cu l nh ny c v th c hi n cc cu l nh c trong t p tin filename trong mi tr ng hi n th i, v tr l i gi tr , xc nh b i cu l nh cu i cng c a filename. N u filename khng ch a d u g ch cho, th ng d n, li t k trong bi n s PATH, s c s d ng tm t p tin c tn filename. T p tin ny khng nh t thi t ph i kh thi (khng nh t thi t ph i c bit x). N u trong th m c, li t k trong PATH, khng tm th y t p tin c n, th s tm n (t p tin) trong th m c hi n th i. N u c cc tham s (a ra arguments, xem nh d ng cu l nh trn), th trong th i gian th c hi n script chng s thnh cc tham bi n v tr. N u khng c tham s , th tham bi n v tr khng thay i. Gi tr (tr ng thi), m l nh source tr l i, trng v i gi tr , tr l i b i cu l nh cu i cng trong script. N u khng cu l nh no c th c hi n, ho c khng tm th y t p tin filename, th tr ng thi thot b ng 0.

5.10 Cu l nh sh

125

5.10

Cu l nh sh

B n lun lun c th ch y m t b n sao c a h v bash nh cu l nh bash hay sh. Khi ny c th b t b n sao ny ch y m t script no , n u a tn c a script nh m t tham s cho l nh bash. Nh v y, th c hi n script myscript c n a cu l nh sh myscript. N u xem n i dung c a m t t p tin script no (nh ng t p tin nh v y c r t nhi u trn h th ng), b n s th y dng u tin c d ng sau: #!/bin/sh. i u ny c ngha l, khi chng ta g i script th c hi n nh m t l nh thng th ng, th /bin/sh s gip chng ta thu x p m i th . C th thay th dng ny b i lin k t n b t k m t chng trnh no, m s c t p tin v th c hi n cc cu l nh tng ng. V d , script trn ngn ng Perl b t u b i dng c d ng !/bin/perl. M t ch khc l k t # dng vi t l i ch thch trong script. T t c nh ng g ng sau k t ny n cu i dng s c coi l ch thch v b bash b qua (t c l h v s khng xem dng ny l cu l nh). N u b n mu n ki m ch ng l i tc d ng c a k t ny, th hy nh p vo dng l nh m t cu l nh b t k, v t tr c n (cu l nh) k t #, v d # ls, b n s th y r ng h v b qua cu l nh ny. Chng ta s d ng bi h c ng n g n v bash t i y. T t nhin, cn r t nhi u v n quan tr ng c n xem xt nhng n m ngoi ph m vi c a bi h c, v d , qu n l ti n trnh, l ch s cu l nh, m t v th vi n readline, tn hi u, v.v. . . Cc b n s tm th y thng tin c n thi t trong cc cu n h ng d n khc ho c trn trang man bash.

Chng 6 S d ng Midnight Commander


M i th u c vi t ra cc nh l p trnh Nga.
Trong chng ny chng ta s h c cch s d ng chng trnh Midnight Commander, m t trnh qu n l t p tin m nh. Sau khi c xong chng ny b n c s c th s d ng cc t h p phm cng nh giao di n c a Midnight Commander th c hi n r t nhi u cng vi c c lin quan n h th ng t p tin t nh b n n ng nh c. u tin chng ta hy xem xt cch ci t chng trnh ny. . .

6.1

Ci t chng trnh Midnight Commander

M c d i u khi n h th ng t p tin ni chung v lm vi c v i cc t p tin ni ring c th s d ng cc cu l nh c a h i u hnh, nh pwd, ls, cd, mv, mkdir, rmdir, cp, rm, cat, more v.v. . . nhng s thu n ti n hn khi s d ng chng trnh Midnight Commander. Midnight Commander (hay th ng rt g n thnh mc) l chng trnh cho php xem c u trc cy th m c v th c hi n nh ng thao tc i u khi n h th ng t p tin. Ni cch khc, y l trnh qu n l t p tin (File Manager). N u nh b n c c kinh nghi m lm vi c v i Norton Commander (nc) trong MS-DOS hay v i FAR trong Windows, th s lm vi c v i mc m t cch d dng. B i v th m ch nh ng t h p phm nng chnh c a chng cng trng nhau. Trong tr ng h p ny, c th lm vi c v i Midnight Commander b n c ch c n xem nhanh nh ng n i dung pha d i. Tc gi xin c l i khuyn i v i nh ng ai cn xa l v i NC hay FAR (n u nh c?): hy ch c v th c hnh chm ch , v Midnight Commander s gip r t nhi u trong khi lm vi c v i h i u hnh.
Ghi ch: 1. Ki n th c trong chng ny c vi t s d ng cho phin b n 4.6.1-pre31 , m c dng c th p d ng cho nh ng phin b n khc. 2. Ki n th c a ra ch p d ng c hon ton trong tr ng h p chng trnh ch y t knh giao tc (console), hay cn g i l giao di n text. Khi lm vi c v i chng trnh qua trnh gi l p (emulator) c a terminal trong giao di n h a, v d xterm, rxvt, v.v. . . th m t s m t ho t ng c a chng trnh s khng cn
trong b n g c tc gi Kostromin dng phin b n 4.5.30, theo ki n ng i d ch l kh c v khng cn g p trong nh ng b n phn ph i Linux m i.
1

6.2 V ngoi c a mn hnh Midnight Commander

127

Hnh 6.1: Giao di n ti ng Vi t c a Midnight Commander


chnh xc n a, v vi c nh n phm b v h a chi m l y. S khng tng ng nh v y th ng g p nh ng ch ni v phm nng.

Trong ph n l n cc b n phn ph i chng trnh Midnight Commander khng c t ng ci t cng v i h th ng. Nhng cc gi (rpm, deb, tgz . . . ) c a Midnight Commander s c trn a, v vi c ci t t cc gi ny l khng kh khn g. V b i v chng trnh ny s lm cho b n c d th hn, tc gi r t mu n r ng chng trnh s c ci t ngay sau khi ci xong h i u hnh.2

6.2

V ngoi c a mn hnh Midnight Commander

kh i ng Midnight Commander, c n g vo dng l nh shell cu l nh mc v nh n <Enter>. N u ng d ng khng ch y, th c n tm xem t p tin chng trnh mc n m u (c th dng cu l nh find / -name mc -type f), sau g vo dng l nh ng d n y t i t p tin , v d , trn my tc gi l /usr/bin/mc. Sau khi ch y chng trnh, b n c s th y mn hnh mu da tr i lm chng ta nh n mn hnh chng trnh Norton Commander cho MS-DOS hay chng trnh FAR cho Windows nh trong hnh 6.2. G n nh ton b khng gian mn hnh khi lm vi c v i Midnight Commander b chi m b i hai b ng3 hi n th danh sch t p tin c a hai th m c. pha trn hai b ng ny l trnh n (th c n). C th chuy n n trnh n ch n cc l nh c trong b ng phm <F9> ho c nh phm chu t (n u nh sau khi kh i
Ngoi ra ng i d ch cu n sch ny cng d ch giao di n c a Midnight Commander ra ti ng Vi t. V th n u mu n b n c th s d ng giao di n ti ng m c a Midnight Commander. 3 panel
2

128

S d ng Midnight Commander

Hnh 6.2: V ngoi c a mn hnh Midnight Commander ng mc b n c khng nhn th y dng trnh n u, th cng ng bu n, v c hi n th trnh n hay khng c xc nh b i c u hnh chng trnh). Dng d i cng l dy cc nt, m i nt tng ng v i m t phm ch c nng <F1> <F10>. C th coi dng ny l l i mch n c v cch s d ng nh ng phm ch c nng ni, v cn c th ch y tr c ti p cc cu l nh tng ng b ng cch nh n chu t vo cc nt ny. Vi c hi n th cc nt c th t t i, n u nh b n c mu n ti t ki m khng gian mn hnh (cch lm s c sau ny khi chng ta ni v c u hnh chng trnh). S ti t ki m c hai l do. Th nh t, b n c s nhanh chng nh c cng d ng c a 10 phm ny, v l i mch n c s tr thnh khng c n thi t (v vi c nh n chu t ln cc nt khng ph i lc no cng thu n ti n). Th hai, th m ch n u b n c khng nh ph i dng phm no th c hi n cng vi c mong mu n, th v n c th s d ng trnh n File (T p tin) trong trnh n chnh c a chng trnh (ch c n nh r ng, phm chuy n vo trnh n chnh l <F9>). Qua trnh n File (T p tin) c th th c hi n b t k thao tc no m thng th ng ph i nh cc phm ch c nng, ngo i tr <F1> v <F9>. Dng th hai t d i ln l dng l nh c a chng trnh Midnight Commander (hay chnh xc hn l dng l nh c a shell hi n th i). y c th nh p v th c hi n b t k cu l nh no c a h th ng. pha trn dng ny (nhng pha d i cc b ng) c th hi n th nh ng l i khuyn c ch (hint4s). Cng c th b i dng l i khuyn ny khi i u ch nh c u hnh c a chng trnh. M i b ng g m ph n u, danh sch t p tin c a m t th m c no v dng tr ng thi nh (mini-status, c th khng hi n th n u t trong c u hnh chng trnh). Trong ph n u c a m i b ng l ng d n y n th m c c n i dung c hi n th , v ng th i cn c ba nt <, v v > s d ng i u khi n chng trnh b ng chu t (nh ng nt ny khng lm vi c n u nh b n c ch y mc trong trnh gi t o (emulator) terminal). Trn dng tr ng thi nh c hi n th m t vi d li u v t p tin hay th m c ang c thanh chi u sng ch n (v d , kch th c t p tin v quy n truy c p).

6.3 Tr gip

129

Ch m t trong hai b ng l hi n th i (ho t ng). B ng hi n th i c thanh chi u sng tn th m c ph n u v thanh chi u sng m t trong nh ng dng c a b ng . Tng t , trong shell ch y chng trnh Midnight Commander, th m c hi n th i l th m c c hi n th trong b ng ho t ng. H u h t cc thao tc c th c hi n trong th m c ny. Cc thao tc nh sao chp (<F5>) hay di chuy n (<F6>) t p tin s d ng th m c c hi n th trong b ng th hai lm th m c ch n (s sao chp hay di chuy n n th m c ny). Trong b ng ho t ng m t dng c chi u sng. Thanh chi u sng c th di chuy n nh cc phm i u khi n vi c di chuy n. Chng trnh xem t p tin n i tr, chng trnh xem l i mch n c v chng trnh xem th m c s d ng cng m t m chng trnh i u khi n vi c di chuy n. V th vi c di chuy n s d ng m t b cc t h p phm (nhng trong m i chng trnh con c cc t h p phm ch p d ng trong n i b m thi). Xin a ra m t b ng ng n g n li t k cc t h p phm dng chung i u khi n vi c di chuy n. B ng 6.1: Cc t h p phm di chuy n dng chung Phm Di chuy n th c hi n <> ho c <Ctrl>+<P> Di chuy n tr l i (ln trn) m t dng <> ho c <Ctrl>+<N> Di chuy n v pha tr c (xu ng d i) m t dng <Page Up> ho c <Alt>+<V> Quay l i m t trang <Page Down> ho c <Ctrl>+<V> Ti n v tr c m t trang <Home> Quay v dng u <End> Chuy n n dng cu i cng

6.3

Tr gip

Khi lm vi c v i chng trnh Midnight Commander, c th xem tr gip vo b t k lc no nh phm <F1>. Tr gip c t ch c d i d ng siu vn b n, t c l trong vn b n c c nh ng lin k t n nh ng ph n khc. Nh ng lin k t c nh d u b i n n mu xanh nh t . Lin k t c ch n hi n th i s c n n mu xanh m . di chuy n trong c a s xem tr gip c th s d ng nh ng phm mi tn ho c chu t. Ngoi nh ng t h p phm di chuy n ni chung trong b ng 6.1, chng trnh xem tr gip cn ch p nh n nh ng t h p phm s d ng trong chng trnh con dng xem t p tin: B ng 6.2: Di chuy n trong trnh xem t p tin Phm Di chuy n th c hi n <B> ho c <Ctrl>+<B> ho c <Ctrl>+<H> ho c Li l i m t trang <Backspace> ho c <Delete> <D u cch> Ti n t i m t trang <U> ( <D> ) Li l i (ti n t i) n a trang <G> (<Shift>+<G>) i t i u (cu i) danh sch

130

S d ng Midnight Commander

Ngoi nh ng t h p phm ch ra cn c th s d ng nh ng t h p ch lm vi c khi xem tr gip (chng c li t k trong b ng 6.3). B ng 6.3: Di chuy n khi xem tr gip Phm Di chuy n th c hi n <Tab> i t i lin k t ti p theo <Alt>+<Tab> Quay l i lin k t tr c <> i t i lin k t ti p theo ho c ko ln m t dng <> Quay l i lin k t tr c ho c ko xu ng m t dng <> ho c <Enter> M trang m lin k t hi n th i ch t i <> ho c <L> M trang tr gip v a xem tr c trang hi n th i <F1> Tr gip s d ng c a b n thn tr gip <N> Chuy n t i ph n ti p theo c a tr gip <P> Chuy n t i ph n n m tr c c a tr gip <C> Chuy n t i m c l c c a tr gip <F10>, <Esc> Thot kh i tr gip B n c th s d ng phm tr ng (space) chuy n t i trang tr gip ti p theo v phm <B> quay l i m t trang. Chng trnh ghi nh th t di chuy n theo lin k t v cho php tr l i ph n xem tr c b ng phm <L>. N u nh c h tr chu t (xem ph n 6.4), th c th s d ng chu t di chuy n. Nh n chu t tri ln lin k t chuy n t i vn b n m lin k t ny ch t i. Chu t ph i s d ng quay l i ph n xem tr c .

6.4

S d ng chu t

Chng trnh Midnight Commander c h tr chu t. Tnh nng ny c th c hi n n u c ch y driver gpm khng ph thu c vo ni ng i dng lm vi c l trn knh giao tc Linux hay ch y Midnight Commander trn xterm (ho c th m ch s d ng k t n i t xa qua telnet, rlogin hay ssh). B ng cch nh n nt chu t tri s c th di chuy n dng chi u sng ln b t k t p tin no trong cc b ng. nh d u (ch n) t p tin no , ch c n nh n nt chu t ph i ln tn c a t p tin , khi ny tn t p tin s c mu khc (theo m c nh l mu vng ). b nh d u th cng ch c n s d ng nt chu t ph i . Nh n kp chu t tri ln tn t p tin th c hi n t p tin (n u y l m t chng trnh), ho c ch y chng trnh c kh nng v c gn c t p tin ny. V d chng trnh xv c gn m cc t p tin hnh n *.jpg, th khi nh n kp chu t tri ln t p tin screenshot.jpg, chng trnh xv s cho chng ta th y t p tin screenshot.jpg trng ra sao. Nh n chu t (b t k nt no) ln cc nt ch c nng (cc nt F1-F10 d i cng) cng ng th i ch y chng trnh tng ng v i nt . Nh n chu t (b t k nt no) ln trnh n trn cng s m ra (ni ng hn l m xu ng d i) trnh n con c a n. N u nh n chu t ln khung trn cng c a b ng c m t danh sch cc t p tin r t di, th s th c hi n di chuy n di 1 c t t p tin v pha u danh sch. Nh n

6.5 i u khi n cc b ng

131

chu t ln khung n m d i c a b ng, th tng ng s th c hi n di chuy n di 1 c t t p tin v pha cu i danh sch. Phng php di chuy n ny cng lm vi c khi xem tr gip v xem danh sch Cy th m c N u ch y mc v i h tr chu t th ng i dng c th th c hi n cc thao tc sao chp v dn vn b n khi gi phm <Shift>. lm c i u ny, b n c n nh n v gi phm <Shift>, ch n o n vn b n c n thi t b ng cch ko chu t, sau th phm <Shift> ra, a con tr n ni c n dn, r i l i nh n v gi phm <Shift> trong khi nh n chu t ph i. C n ch r ng tnh nng ny khng lm vi c trong cc trnh gi l p terminal nh xterm.

6.5

i u khi n cc b ng

Cc b ng c a Midnight Commander thng th ng hi n th nh ng g c trong th m c c a h th ng t p tin (v th th ng c g i l b ng th m c). Tuy nhin c th hi n th nh ng thng tin khc trn b ng. Trong ph n ny s ni n cch thay i d ng c a b ng hay cch hi n th thng tin trn b ng.

6.5.1

D ng danh sch t p tin

D ng b ng trn hi n th danh sch t p tin v th m c con c th thay i qua cc cu l nh c a th c n m ra khi ch n B ng tri (Left) v B ng ph i (Right). N u b n c mu n thay i d ng hi n th danh sch t p tin, th c th s d ng cu l nh D ng danh sch... (Listing mode...) c a b ng (tri ho c ph i) tng ng. C 4 kh nng ch n: y (Full), Thu g n (Brief), M r ng (Long) v Ng i dng t xc nh (User).

Hnh 6.3: H p tho i ch n nh d ng hi n th


nh d ng y (Full) hi n th tn t p tin, kch th c c a n v th i gian s a i g n nh t. nh d ng Thu g n (Brief) ch hi n th tn t p tin, do trn m i b ng c hai c t v hi n th c s t p tin nhi u g p i.

132

S d ng Midnight Commander
nh d ng M r ng (Long) hi n th t p tin nh khi th c hi n cu l nh ls -l. V i nh d ng ny m t b ng chi m h t mn hnh. N u ch n nh d ng Ng i dng t xc nh (User), th ng i dng c n a ra d ng hi n th t ch n c a mnh.

Khi t a ra nh d ng, th u tin c n ch ra kch th c c a b ng: half (m t n a mn hnh) ho c full (ton mn hnh). Sau kch th c b ng c th ch ra l trn b ng ph i c hai c t b ng cch thm s 2 vo dng nh d ng. Ti p theo c n li t k tn nh ng vng hi n th cng v i chi u r ng c a vng. C th s d ng nh ng tn vng sau:
name tn t p tin. size kch th c t p tin. bsize kch th c d ng khc, khi ch a ra kch th c t p tin, cn i v i th m c con th ch a ra dng ch SUB-DIR ho c UPDIR. type hi n th d ng t p tin (m t k t ). K t nh ng gi tr m cu l nh ls -F a ra:

ny c th l m t trong

* (asterisk) cho t p tin chng trnh. / (slash) cho th m c. @ (at-sign) cho lin k t (links). = (gi u b ng) cho cc sockets. - (g ch ngang) cho cc thi t b trao i theo byte. + (d u c ng) cho cc thi t b trao i theo block. | (pipe, ng) cho cc t p tin d ng FIFO. (d u sng) cho cc lin k t t ng trng n th m c. ! (d u ch m than) cho cc lin k t t ng trng h ng (stalled) (lin k t ch n t p tin khng cn n a).
mtime th i gian s a i t p tin cu i cng. atime th i gian truy c p n t p tin l n cu i. ctime th i gian t o t p tin. perm dng ch ra quy n truy c p n t p tin. mode quy n truy c p

d ng s 8bit.

nlink s lin k t n t p tin. ngid ch s xc nh c a nhm (GID). nuid ch s xc nh c a ng i dng (UID). owner ch s h u t p tin.

6.5 i u khi n cc b ng
group nhm s h u t p tin. inode ch m c inode c a t p tin.

133

ng th i cn c th s d ng nh ng tn vng sau t ch c vi c hi n th thng tin ra mn hnh:


space chn kho ng tr ng. mark chn d u sao * (asterisk) n u t p tin c ch n, ho c kho ng tr ng n u ng c l i. | chn ng th ng ng.

c th xc nh chnh xc chi u r ng c a m t vng, c n thm d u hai ch m :, sau ch ra s v tr (k t ) c n gi cho vng ny. N u sau s v tr c t d u +, th s s c hi u l chi u r ng nh nh t c a vng, v n u mn hnh cho php th vng s c m r ng. V d , nh d ng y (Full) th c ch t c xc nh b i dng:
half type,name,|,size,|,mtime

cn nh d ng M r ng (Long) th xc nh b i:
full perm, space, nlink, space, owner, space, group, space, size, space, mtime, space, name

D i y l v d d ng hi n th do ng i dng a ra:
half name,|,size:7,|,type,mode:3

Hi n th danh sch t p tin trn m i b ng cn c th s p x p theo m t trong 8 cch:


Theo tn Theo ph n m r ng Theo kch th c t p tin Theo th i gian s a i Theo th i gian truy c p l n cu i Theo ch m c inode Khng s p x p.

C th ch n cch s p x p b ng cch ch n cu l nh Th t s p x p (Sort order...) trong trnh n tng ng c a m i b ng. Khi s hi n ra m t h p tho i (hnh 6.4) ngoi vi c cho php ch n cch s p x p cn cho php ch n s p x p theo th t ng c l i (nh d u tu ch n Ng c l i (Reverse)), hay s p x p c tnh n ki u ch th ng ch hoa hay khng (ty ch n Tnh n ki u ch (case sensitive)). Theo m c nh cc th m c con c hi n th u danh sch, nhng cng c th thay i n u nh d u ty ch n Tr n l n t t c t p tin (Mix all files) c a cu l nh C u hnh... (Configuration...) th c n C u hnh (Option). Ng i dng cng c th ch n ch hi n th trn b ng nh ng t p tin tng ng v i m t

134

S d ng Midnight Commander

Hnh 6.4: H p tho i s p x p m u no . Cu l nh L c t p tin... (Filter...) trong th c n c a m i b ng cho php a ra nh ng m u m tn t p tin s hi n th tng ng v i n (v d dng m u *.tar.gz ch hi n th nh ng t p tin nn tar.gz). Tn c a th m c con v ng d n n th m c con lun lun c hi n th khng ph thu c vo m u a ra. Trong th c n c a m i b ng cn c cu l nh Qut l i (Rescan) (tng ng v i cu l nh C p nh t (Refresh) trong cc chng trnh khc). Cu l nh Qut l i (phm nng <Ctrl>+<R>) c p nh t l i danh sch t p tin hi n th trn b ng. i u ny c ch khi nh ng ti n trnh khc t o hay xa cc t p tin.

6.5.2

Nh ng ch hi n th khc

Ngoi vi c a ra nh d ng hi n th danh sch t p tin trn b ng, cn c th a b t k b ng no vo m t trong nh ng ch sau:


Ch Thng tin (Info). Trong ch ny (hnh 6.5) trn b ng a ra thng tin v t p tin c chi u sng ( c ch n) trn b ng bn c nh, v h th ng t p tin hi n th i (d ng, kch th c ch tr ng v t ng s ch m c inode cn tr ng). Ch Cy th m c (Tree). Trong ch ny trn m t b ng hi n th cy th m c d ng ho (hnh 6.6). Ch ny tng t nh khi ng i dng ch n cu l nh Cy th m c (Directory Tree) t th c n Cu l nh (Command), nh cu l nh sau hi n th cy th m c m t c a s ring. Ch Xem nhanh (Quick View). Trong ch ny b ng s hi n th n i dung c a t p tin c chi u sng ( c ch n) trn b ng bn c nh. V d trn hnh 6.7 l khi dng ch ny xem nhanh n i dung t p tin HISTORY c a gi chng trnh mediawiki.

ra b ng xem nhanh n i dung t p tin s d ng chng trnh xem t p tin c s n trong mc, v th n u dng phm <Tab> chuy n sang b ng xem nhanh, th ng i dng c th s d ng m i cu l nh i u khi n vi c xem, v d , nh ng phm li t k trong b ng 6.1 v b ng 6.2.

6.5 i u khi n cc b ng

135

Hnh 6.5: Ch thng tin

Hnh 6.6: Ch cy th m c

136

S d ng Midnight Commander

Hnh 6.7: Ch xem nhanh


Ch K t n i FTP... (FTP link...) v K t n i Shell... (Shell link...). Hai ch ny ch khc ch s d ng hi n th danh sch th m c n m trn my xa. Cn l i m i th k c nh d ng hi n th thng tin u tng t nh nh ng g s d ng cho cc th m c n i b . N u ng i dng mu n bi t thm v cch s d ng nh ng ch ny, xin hy xem tr gip c a mc.

6.5.3

Cc t h p phm i u khi n b ng

i u khi n ch lm vi c c a b ng c th s d ng cc cu l nh c a trnh n ni t i trn, nhng s thu n ti n hn n u s d ng cc t h p phm i u khi n.


<Tab> ho c <Ctrl>+<i>. Thay i b ng hi n th i (ho t ng). Dng chi u sng s chuy n t b ng ang l hi n th i sang b ng khc v nh v y b ng sau s tr thnh hin th i. <Alt>+<G> ho c <Alt>+<R> ho c <Alt>+<J>. S d ng di chuy n dng chi u sng tng ng ln t p tin trn u, n m gi a ho c d i cng trong s nh ng t p tin ang hi n th (ang th y) trn b ng. <Alt>+<T>. Chuy n i vng quanh gi a cc nh d ng hi n th danh sch t p tin c a th m c hi n th i. Nh t h p phm ny c th chuy n i nhanh chng t ch hi n th M r ng (long) sang Thu g n hay ch do ng i dng xc nh. <Ctrl>+<\>. Hi n th danh sch th m c th ng dng v chuy n t i th m c l a ch n.

6.5 i u khi n cc b ng

137

<Home> ho c <Alt>+<<>. Chuy n dng chi u sng t i v tr u tin c a danh sch t p tin. <End> ho c <Alt>+<>>. Chuy n dng chi u sng t i v tr cu i cng c a danh sch t p tin. <Alt>+<O>. N u trong b ng hi n th i tn th m c c chi u sng, cn trn b ng cn l i hi n th danh sch t p tin, th b ng th hai s chuy n vo ch hi n th cc t p tin c a th m c c chi u sng. N u trong b ng hi n th i dng chi u sng l tn t p tin, th trn b ng th hai s hi n th n i dung c a th m c m c a t p tin . <Ctrl>+<PageUp>, <Ctrl>+<PageDown>. Ch khi mc c ch y d i knh giao tc (console) c a Linux: th c hi n tng ng vi c chuy n (chdir) t i th m c m (..) ho c t i th m c ang c chi u sng. <Alt>+<Y>. Chuy n t i th m c ngay tr c trong s nh ng th m c xem. Tng ng v i vi c nh n chu t ln k t < gc trn c a b ng. <Alt>+<U>. Chuy n t i th m c ngay sau trong s nh ng th m c xem. Tng ng v i vi c nh n chu t ln k t >.

You might also like