linux cho ngu’o`’i dùng - trang chủ sÁch ba’ ng 1 lo`’i nói d¯aˆ`u ¯dây là ba’n...

55
Linux cho ngu o ` i dùng Tác gia : Kostromin V. A. Di ˙ ch bo ’i: Phan Vı ˜nh Thi ˙ nh

Upload: vanxuyen

Post on 03-May-2018

213 views

Category:

Documents


1 download

TRANSCRIPT

Linux cho ngu’o’i dùngTác gia’ : Kostromin V. A.

Di˙ch bo’’i: Phan Vınh Thi

˙nh

Mu˙c lu

˙c

1 HDH Linux: li˙ch su’’ và các ba’ n phân phoi 2

2 Cài da˙t HDH Linux trên cùng máy tính vo’i Windows 3

2.1 Chua’n bi˙cài da

˙t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2.2 Phòng xa và nhu’ng lo’i khuyên . . . . . . . . . . . . . . . . . . . . . . . . 52.3 Phân vùng trên dıa và quá trình kho’’i do

˙ng . . . . . . . . . . . . . . . . . . 6

2.3.1 The´ nào là caˆu trúc "hình ho˙c cu’ a dıa" . . . . . . . . . . . . . . . . 6

2.3.2 Phân vùng và ba’ ng phân vùng cu’ a dıa . . . . . . . . . . . . . . . . 72.3.3 Quá trình kho’’i do

˙ng HDH công ty Microsoft . . . . . . . . . . . . 8

2.3.4 Van de vo’i các dıa lo’n . . . . . . . . . . . . . . . . . . . . . . . . 102.4 Lu

˙’a cho

˙n trình kho’’i do

˙ng . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.4.1 Trình kho’’i do˙ng LILO cu’ a HDH Linux . . . . . . . . . . . . . . . 11

2.4.2 Các trình kho’’i do˙ng khác. . . . . . . . . . . . . . . . . . . . . . . 13

2.4.3 Các phu’o’ng án kho’’i do˙ng . . . . . . . . . . . . . . . . . . . . . . 14

2.5 Chua’n bi˙các phân vùng trên dıa . . . . . . . . . . . . . . . . . . . . . . . 14

2.5.1 Lo’i khuyên khi ta˙o phân vùng . . . . . . . . . . . . . . . . . . . . 14

2.5.2 Chu’o’ng trình de’ phân chia o’ dıa . . . . . . . . . . . . . . . . . . . 172.6 Windows NT và Linux: kho’’i do

˙ng qua OS Loader cu’ a NT . . . . . . . . . 17

2.7 Su’’ du˙ng trình kho’’i do

˙ng LILO . . . . . . . . . . . . . . . . . . . . . . . . 20

2.7.1 Cài da˙t và cau hình LILO . . . . . . . . . . . . . . . . . . . . . . . 20

2.7.2 Cài da˙t các he

˙dieu hành khác sau Linux. . . . . . . . . . . . . . . 23

2.7.3 Chuye’n thu’ mu˙c /boot lên phân vùng DOS. . . . . . . . . . . . . 23

2.8 Kho’’i do˙ng Linux tu’ MS-DOS bang loadlin.exe . . . . . . . . . . . . . . . 24

3 Bash 273.1 He

˙vo’ là gì? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

3.2 Các ký tu˙’ da

˙c bie

˙t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3.3 Thu˙’c thi các câu leˆ

˙nh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

3.3.1 Thao tác ;. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293.3.2 Thao tác & . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293.3.3 Thao tác && và ||. . . . . . . . . . . . . . . . . . . . . . . . . . . 29

3.4 Dau vào/dau ra tiêu chua’n . . . . . . . . . . . . . . . . . . . . . . . . . . 303.4.1 Dòng du’ lie

˙u vào-ra . . . . . . . . . . . . . . . . . . . . . . . . . 30

3.4.2 Le˙nh echo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

3.4.3 Le˙nh cat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

3.5 Chuye’n hu’o’ng dau vào/dau ra, du’o’ng ong và dau lo˙c . . . . . . . . . . . . 31

3.5.1 Su’’ du˙ng >, < và >> . . . . . . . . . . . . . . . . . . . . . . . . . . 31

MU˙C LU

˙C iii

3.5.2 Su’’ du˙ng | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3.5.3 Dau lo˙c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

3.6 Tham bieˆn và các bieˆn so. Môi tru’o’ng cu’ a he˙

vo’ . . . . . . . . . . . . . . . 343.6.1 Các da

˙ng tham bieˆn khác nhau. . . . . . . . . . . . . . . . . . . . 35

3.6.2 Dau nhac cu’ a he˙

vo’ . . . . . . . . . . . . . . . . . . . . . . . . . . 363.6.3 Bien môi tru’o’ng PATH . . . . . . . . . . . . . . . . . . . . . . . . 383.6.4 Bien môi tru’o’ng IFS . . . . . . . . . . . . . . . . . . . . . . . . . 383.6.5 Thu’ mu

˙c hie

˙n tho’i và thu’ mu

˙c cá nhân. . . . . . . . . . . . . . . . 38

3.6.6 Câu leˆ˙nh export. . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

3.7 Khai trie’n bie’u thu’c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393.7.1 Khai trie’n dau ngoa

˙c . . . . . . . . . . . . . . . . . . . . . . . . . 39

3.7.2 Thay theˆ dau ngã (Tilde Expansion). . . . . . . . . . . . . . . . . 403.7.3 Phép theˆ các tham bieˆn và bien so . . . . . . . . . . . . . . . . . . 403.7.4 Phép theˆ các câu leˆ

˙nh . . . . . . . . . . . . . . . . . . . . . . . . . 41

3.7.5 Phép theˆ soho˙c (Arithmetic Expansion). . . . . . . . . . . . . . . 41

3.7.6 Phân chia tu’ (word splitting) . . . . . . . . . . . . . . . . . . . . . 413.7.7 Khai trie’n các maˆu tên ta

˙p tin và thu’ mu

˙c (Pathname Expansion). . 41

3.7.8 Xóa các ký tu˙’ da

˙c bie

˙t . . . . . . . . . . . . . . . . . . . . . . . . 42

3.8 Shell - moˆ˙t ngôn ngu’ la

˙p trình . . . . . . . . . . . . . . . . . . . . . . . . 42

3.8.1 Toàn tu’’ if và test (hoa˘˙c [ ]) . . . . . . . . . . . . . . . . . . . . . . 42

3.8.2 Toán tu’’ test và dieu kie˙n cu’ a bie’u thu’c . . . . . . . . . . . . . . . . 43

3.8.3 Toán tu’’ case. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463.8.4 Toán tu’’ select . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463.8.5 Toán tu’’ for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473.8.6 Toán tu’’ while và until . . . . . . . . . . . . . . . . . . . . . . . . . 483.8.7 Các hàm soˆ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483.8.8 Tham soˆ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

3.9 Script cu’ a he˙

vo’ và le˙nh source. . . . . . . . . . . . . . . . . . . . . . . . 49

3.10 Câu leˆ˙nh sh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

Danh sách ba’ ng

2.1 Cau trúc cu’ a sector kho’’i do˙ng chính . . . . . . . . . . . . . . . . . . . . . 9

2.2 Nhu caˆu su’’ du˙ng không gian dıa cu’ a HDH . . . . . . . . . . . . . . . . . . 15

3.1 Các câu leˆ˙nh dau lo

˙c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

3.2 Thay theˆ các tham bieˆn da˙c bie

˙t . . . . . . . . . . . . . . . . . . . . . . . 36

3.3 Ký tu˙’ xác di

˙nh da

˙ng dau nhac . . . . . . . . . . . . . . . . . . . . . . . . . 37

3.4 Các ký tu˙’ ta

˙o mau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

DANH SÁCH BA’ NG 1

Lo’i nói dauDây là ba’ n di

˙ch cuon "Linux cho ngu’o’i dùng" (sêri sách tu

˙’ ho

˙c) cu’ a Kostromin Victor

Alexeevich coˆ˙ng thêm moˆ

˙t vài (rat ít ) kinh nghie

˙m su’’ du

˙ng Linux cu’ a teppi. Ba’ n goc du’o

˙’c

viet trên tieng Nga. Theo yêu caˆu cu’ a Kostromin A. V., xin du’o˙’c du’a ra các liên keˆt to’i ba’ n

goc dây:http://rus-linux.net/book1.php?name=book1/oglavlhttp://linux-ve.chat.ru/

Lo’i ca’ m o’nXin ca’ m o’n các bác sau dã giúp do’: Kostromin V. A. dã viet mo

˙t cuon sách veˆ Linux cho

ngu’o’i dùng mo’i tuye˙t vo’i; Tru’o’ng Ma

˙nh Cu’o’ng dã dành cho teppi moˆ

˙t khoa’ ng không trên

http://phoc.minidns.netde’ da˙t cuon sách này; hai bácNguyen Da

˙i Quý và Nguyen Da

˙ng

Hoàng Tuân dã giúp trong vieˆ˙c su’’ du

˙ng LATEX. Bác Nguyen Da

˙i Quý dã do

˙c và su’’a cho

phiên ba’ n 0.9. Xin hãy gu’’i thu’ nhac teppi ta˙i [email protected] nhu’ teppi có quên ai dó.

Ba’ n quyenCuon "Bash cho ngu’o’i dùng" này su’’ du

˙ng ba’ n quyen GPL. Nói mo

˙t cách nga˘n go

˙n, ba

˙n có

the’ làm bat ký thu’ gì: in, ta˙ng, bán, dot,... nhu’ng xin hãy thêm hai du’o’ng dan sau vào các ba’ n

sao cu’ a mình:http://rus-linux.net/book1.php?name=book1/oglavlhttp://teppi.org/l4u/Tác gia’ Kostromin V. A. cung nhu’ ngu’o’i di

˙ch không chi

˙u trách nhieˆ

˙m veha

˙u qua’ do vie

˙c su’’

du˙ng cuon sách này gây ra.

Phiên ba’ n và ca˙p nha

˙t

Phiên ba’ n 0.9Ca

˙p nha

˙t cuoi cùng Ngày 9 tháng 2 na˘m 2005

Mo˙i denghi

˙su’’a do’i, thông báo loˆ i chính ta’ , loi kien thu’c cu’ a ba’ n di

˙ch cung nhu’ denghi

˙giúp

do’ di˙ch xin gu’’i cho Phan Vı˜nh Thi

˙nh theo di

˙a chı’ [email protected].

Chu’o’ng 1

HDH Linux: li˙ch su’’ và các ba’ n phân phoi

Chu’o’ng 2

Cài da˙t HDH Linux trên cùng máy tính

vo’i Windows

Va˙n su

˙’ kho’’i dau nan – Trung Quoˆc

Thông thu’o’ng trên các dıa cu’ a ba’ n phân phoˆi Linux dã có hu’o’ng dan ngan go˙n cách cài da

˙t

Linux. Ngoài ra, trên Internet ba˙n có the’ tìm thay rat nhieu cuon sách nó veˆ van denày. Và ta´ t

ca’ các ba’ n phân phoˆi lo’n (Debian, Slackware, Fedora, Mandrake, ...) deu dã có cuoˆn hu’o’ngdan cài da

˙t rat chi tiet, cho mo

˙i tình huong su’’ du

˙ng. Hãy cho’ do

˙’i và hy vo

˙ng trong tu’o’ng lai

không xa se˜ có ba’ n di˙ch Tieng Vie

˙t cu’ a nhu’ng cuon sách này. Chính vì vaˆ

˙y trong cuo´ n sách

này, tác gia’ sekhông du’a ra các bu’o’c cu˙

the’ cu’ a vie˙c cài da

˙t, mà xin ba

˙n do

˙c hãy tìm các

cuon hu’o’ng dan tu’o’ng u’ng. Thay vào dó là nhu’ng gì ba˙n can biet và chua’n bi

˙tru’o’c khi cài

da˙t, dong tho’i, tác gia’ sedi cu

˙the’ và chi tiet vào nhu’ng gì da

˙c bie

˙t khi cài da

˙t Linux trên máy

tính dã có mo˙t trong các heˆ

˙dieu hành Windows cu˜ng nhu’ vie

˙c kho’’i do

˙ng nhieu he

˙dieu hành.

Van deo’’ cho, phan lo’n ngu’o’i dùng Vie˙t Nam tru’o’c khi bat dau ho

˙c Linux dã làm quen và

rat có the’ dã có kinh nghieˆ˙m su’’ du

˙ng các HDH dòng Windows nhu’ Windows 98, Windows

2000 và Windows XP. Và trên thu˙’c tethì ta

˙m tho’i Linux khó có the’ là HDH dau tiên mà ngu’o’i

dùng làm quen. Nhu’ the, mo˙t cách tu

˙’ nhiên, neˆu ngu’o’i dùng dã làm vie

˙c vo’i HDH Windows

và quyet di˙nh thu’’ nghie

˙m vo’i Linux, thì ho

˙không muoˆn mat di môi tru’o’ng làm vie

˙c quen

thuo˙c cu’ a mình, cùng vo’i nhu’ng gì dã ta

˙o ra và dã cau hình du’o’i du’o’i Windows. Ra´ t may là

không nhaˆt thiet pha’ i dánh ma´ t tat ca’ nhu’ng thu’ dó. Bo’’i vì trên mo˙t máy tính có the’ cùng

"chung soˆng hòa bình hai HD¯ H và tha˙m chí nhieu ho’n nu’a (neu có du’ cho trên dıa!). Chính

vì the, o’’ phía du’o’i senói cách cài da˙t HDH Linux trên máy tính dã cài da

˙t mo

˙t trong các heˆ

˙dieu hành cu’ a hãng Microsoft.

2.1 Chua’n bi˙cài da

˙t

Có the’ cài da˙t Linux bang mo

˙t trong các cách sau:

• Tu’ o’ dıa CD-ROM

• Tu’ ba’ n sao chép Linux trên o’ dıa cu’ng

• Tu’ máy chu’ ta˙p tin cu’ a ma

˙ng no

˙i bo

˙qua NFS;

• Tu’ máy tính khác trong ma˙ng no

˙i bo

˙qua SMB;

4 Cài da˙t HDH Linux trên cùng máy tính vo’i Windows

• Tu’ máy tính o’’ xa (ví du˙

tu’ Internet) qua giao thu’c FTP;

• Tu’ mo˙t máy chu’ WWW qua giao thu’c HTTP.

Theo ý kien cá nhân cu’ a tác gia’ thì thua˙n tie

˙n và có tính thu

˙’c tenhat là cài da

˙t Linux tu’

CD-ROM, ho’n nu’a vie˙c mua các dıa CD bây gio’ không gây khó kha˘n gì.

Tru’o’c khi bat dau cài da˙t, hãy thu thaˆ

˙p (hãy viet lên mo

˙t to’ giay) tat ca’ nhu’ng thông tin

cau hình can thiet cu’ a máy tính. Neˆu nhu’ máy tính cu’ a ba˙n ta

˙m tho’i van còn làm vie

˙c du’o’i

HDH Windows 95/98/2000/XP, thì ba˙n setìm thay rat nhieu thông tin neˆu nhan chuo

˙t pha’ i

vào bie’u tu’o˙’ng My Computer, cho

˙n le

˙nh Properties. O’’ dây ba

˙n có the’ tìm thay gan het tat ca’

thông tin can thiet. Neu nhu’ ba˙n không thaˆy thông tin nào dó, thì can tìm kiem theo các cách

khác, ke’ ca’ vie˙c mo’’ vo’ máy và do

˙c nhu’ng dòng chu’ trên thiet bi

˙.

De’ giúp ba˙n do

˙c, xin du’o

˙’c du’a ra dây danh sách nhu’ng thông tin caˆn thu tha

˙p. Xin du’ng

lu’o’i bieng và hãy coˆ gang ghi càng nhieˆu du’ lie˙u vemo

˙t thiet bi

˙càng to´ t (tat ca’ nhu’ng thông

tin có the’ tìm thay), nhu’ng du’ lie˙u này se˜ can den khi cài da

˙t và cau hình, khi mà vieˆ

˙c tìm

kiem chúng se˜ khó khan ho’n.

• BIOS:

– nhà sa’ n xuat;

– sohie˙u phiên ba’ n.

• Controller o’ dıa cu’ng: loa˙i (IDE hay SCSI) và dung lu’o

˙’ng cu’ a o’ dıa (neu nhu’ ba

˙n do

˙c

dùng dıa IDE, thì can kie’m tra xem BIOS có hoˆ tro˙’ vie

˙c truy ca

˙p o’’ chedo

˙LBA hay

không):

– hda (Master trên controller soˆ 1 hay Primary Master);

– hdb (Slave trên controller soˆ 1 hay Primary Slave);

– hdc (Master trên controller soˆ 2 hay Secondary Master);

– hdd (Slave trên controller soˆ 2 hay Secondary Slave).

– nhà sa’ n xuat và somau mã cu’ a adapter SCSI (neˆu có).

• Dung lu’o˙’ng cu’ a bo

˙nho’ (tính bang Kilobyte

• CD-ROM:

– Giao die˙n (IDE, SCSI, hay giao dieˆ

˙n khác);

– doi vo’i các o’ dıa CD-ROM không pha’ i IDE, cung nhu’ SCSI - nhà sa’ n xuat và somau mã.

• Chuo˙t:

– loa˙i chuo

˙t (serial, PS/2, hay bus mouse);

– giao thu’c (Microsoft, Logitech, MouseMan, v.v. . . );

– sonút;

– doi vo’i chuo˙t cam vào co’ng noi tiep thì can sothu’ tu

˙’ cu’ a co’ng dó.

• Ca˙c màn hình

2.2 Phòng xa và nhu’ng lo’i khuyên 5

– nhà sa’ n xuat;

– somau mã (hay chipset su’’ du˙ng)

– dung lu’o˙’ng bo

˙nho’;

• Màn hình

– nhà sa’ n xuat

– somau mã;

– các giá tri˙

gio’i ha˙n (min, max) cu’ a tan solàm mo’i theo chieu do

˙c và theo chieˆu

ngang (nhu’ng giá tri˙này ba

˙n do

˙c chı’ có the’ tìm thay trong tài lie

˙u di kèm vo’i màn

hình, Windows không hie’n thi˙

nhu’ng giá tri˙

này, và chúng raˆt quan tro˙ng trong

khi cau hình giao dieˆ˙n do ho

˙a).

• Neu nhu’ ba˙n do

˙c muon ket noi ma

˙ng (mà UNIX nói chung là HD¯ H dành cho ma

˙ng),

thì hãy ghi la˙i nhu’ng du’ lie

˙u sau:

– nhà sa’ n xuat và somau mã ca˙c ma

˙ng;

– di˙a chı’ IP cu’ a mình;

– tên cu’ a máy tính trong ma˙ng;

– ma˙t na

˙ma

˙ng con (subnet mask);

– di˙a chı’ IP cu’ a gateway;

– di˙a chı’ IP cu’ a các máy chu’ tên mien (DNS server);

– di˙a chı’ IP cu’ a máy chu’ WINS(Windows Internet Name Service);

– tên mien cu’ a công ty ba˙n do

˙c.

• Loa˙i và nhà sa’ n xuat ca

˙c âm thanh và game controller (neˆu nhu’ có)

2.2 Phòng xa và nhu’ng lo’i khuyên

Tru’o’c khi cài da˙t HDH Linux sau Windows, raˆt nên thu

˙’c hie

˙n vài thao tác "phòng xa" ("phòng

cháy ho’n chu’a cháy"). Vì rat có the’ ba˙n do

˙c sepha’ i phân vùng la

˙i o’ dıa, thay do’i ba’ n ghi

kho’’i do˙ng (Boot Record) và làm vieˆ

˙c vo’i các ta

˙p tin kho’’i do

˙ng cung nhu’ các ta

˙p tin cau hình.

Các thao tác này không pha’ i lúc nào cung dem la˙i dem la

˙i mo

˙t ket qua’ theo ý muoˆn, và trong

tru’o’ng ho˙’p xau có the’ máy tính cu’ a ba

˙n do

˙c sekhông kho’’i do

˙ng nu’a. Có bie´ t cách thoát ra

kho’ i tình huong này và phu˙c hoi du’ lie

˙u can thiet không dó còn là moˆ

˙t câu ho’ i. Nhu’ng ro’i vào

tình huong nhu’ va˙y het su’c dedàng nhaˆt là vo’i ngu’o’i dùng lan dau tiên cài da

˙t Linux. Chính

vì va˙y, dau tiên, can ta

˙o mo

˙t dıa mem kho’’i do

˙ng hay moˆ

˙t dıa mem giúp phu

˙c hoi he

˙thong

(neu ba˙n do

˙c còn chu’a ta

˙o). Thu’ hai, can ghi la

˙i nhu’ng du’ lie

˙u có giá tri

˙(backup). Và thu’

ba, chua’n bi˙

các ta˙p tin (dıa mem, CD) cài da

˙t cho he

˙thong cu. Mo

˙t lo’i khuyên quan tro

˙ng

khác: ne´u có gì dó xa’ y ra không theo ý muoˆn thì không nên hoang mang. Xin chia se’ mo˙t

kinh nghie˙m buon: khi lan dau tiên tác gia’ cài Linux trên máy tính dã có Windows NT, và

ket qua’ là máy tính không the’ kho’’i do˙ng du’o

˙’c. Không hie’u het van de tác gia’ nghı là không

còn cách gì khác ngoài di˙nh da

˙ng la

˙i o’ dıa và cài da

˙t la

˙i tu’ dau. Bây gio’ thì tác gia’ dã hie’u là

có the’ phu˙c hoi la

˙i neu nhu’ không quyeˆt di

˙nh quá voˆ

˙i vàng. Vì va

˙y có the’ nói rang Werner

Almesberger dúng, khi trong hu’o’ng dan su’’ du˙ng LILO có du’a ra nhu’ng lo’i khuyên sau cho

ngu’o’i dùng khi ro’i vào tru’o’ng ho˙’p khó khan nhu’ va

˙y:

6 Cài da˙t HDH Linux trên cùng máy tính vo’i Windows

• Không hoa’ ng hot. Neu nhu’ có gì dó không làm vieˆ˙c, hãy thu’’ mo

˙i cách de’ tìm ra nguyên

nhân, kie’m tra la˙i nhieu lan thao tác cu’ a mình. Chı’ sau khi dó mo’i thu

˙’c hie

˙n các bu’o’c

su’’a loi.

• Hãy do˙c tài lie

˙u. Da

˙c bie

˙t trong các tru’o’ng ho

˙’p, khi he

˙thong làm nhu’ng gì ba

˙n do

˙c

không mong do˙’i.

Xin thêm mo˙t lo’i khuyên pho’ bien sau: * Hãy xem các taˆ

˙p tin log, tu’c là các taˆ

˙p tin ghi

la˙i su

˙’ kie

˙n cu’ a he

˙thong (can tìm chúng trong thu’ mu

˙c /var/log ).

Nhu’ dã nói o’’ trên, quá trình cài da˙t HDH Linux nói riêng không pha’ i là de tài cu’ a cuon

sách. Ngu’o’i dùng can tìm các cuoˆn hu’o’ng dan tu’o’ng u’ng. Tuy nhiên, tác gia’ cung muon du’ara vài lo’i khuyên de’ giúp ngu’o’i dùng du’a ra quyeˆt di

˙nh trong khi cài da

˙t.

Thu’ nhat, du’ng vo˙i vàng và hãy chú ý do

˙c nhu’ng thông báo se˜ hie’n thi

˙trên màn hình,

và hãy suy nghı˜ ky khi cho˙n câu tra’ lo’i. De’ minh chu’ng cho lo’i khuyên này xin du’o

˙’c ke’ la

˙i

tru’o’ng ho˙’p khi tác gia’ cài Red Hat 7.1, và tu

˙’ do

˙ng nhan lên nút Next, vì cho ra˘ng phu’o’ng án

theo ma˙c di

˙nh là du’ . Ket qua’ là tác gia’ không the’ truy ca

˙p du’o

˙’c den máy này qua các giao

thu’c ma˙ng (telnet, ftp, NFS, Samba), ma˘

˙c dù dã cau hình giao dieˆ

˙n ma

˙ng cho máy. Nguyên

nhân là trong phu’o’ng án theo ma˘˙c di

˙nh thì tu’o’ng lu’’a du’o

˙’c cài da

˙t, và tu’o’ng lu’’a dóng het các

truy ca˙p tu’ ma

˙ng. De’ mo’’ truy ca

˙p này, thì trong quá trình cài da

˙t can chı’ rõ các di

˙ch vu

˙du’o

˙’c

mo’’. Nhu’ng chúng ta quá voˆ˙i vàng! Thu’ hai, tác gia’ khuyên không nên dong ý vo’i vie

˙c tu

˙’

do˙ng kho’’i do

˙ng vào giao dieˆ

˙n do ho

˙a. Vì cuoi cùng ngu’o’i dùng không khó kha˘n gì khi gõ

câu le˙nh startx , còn vie

˙c cau hình giao dieˆ

˙n do ho

˙a (neu có gì dó làm vie

˙c không dúng)

vo’i ngu’o’i dùng mo’i rat khó thành công.Sau khi làm xong các công vieˆ

˙c phòng xa, caˆn quyet di

˙nh seto’ chu’c kho’’i do

˙ng nhieu

HDH nhu’ thenào, chua’n bi˙

các o’ dıa (phân vùng) de’ cài da˙t, tu’c là can chia o’ dıa thành soˆ

phân vùng caˆn thiet. Nhu’ng tru’o’c khi chuye’n sang các bu’o’c cu˙

the’ de’ chua’n bi˙

o’ dıa, xindu’o

˙’c nói qua moˆ

˙t chút vecau trúc cu’ a dıa và quá trình kho’’i do

˙ng HDH. Neu ai dó không du’

kiên nhan de’ do˙c phan lý thuyet này, thì có the’ bo’ qua chúng và chuye’n tha’ ng den van de

cho˙n chu’o’ng trình kho’’i do

˙ng.

2.3 Phân vùng trên dıa và quá trình kho’’i do˙ng

2.3.1 Thenào là cau trúc "hình ho˙c cu’ a dıa"

Nhu’ ba˙n do

˙c biet, dıa cu’ng gom vài dıa có phu’ lo’p tu’ tính, nam trên cùng moˆ

˙t tru

˙c và quay

vo’i va˙n toc lo’n. Do

˙c/Ghi du’ lie

˙u du’o

˙’c thu

˙’c hie

˙n bo’’i các dau do

˙c nam giu’a các dıa này, di

chuye’n tu’ tâm dıa ra rìa ngoài cu’ a dıa. Vòng tròn dau do˙c vera trên các dıa khi quay quanh

chúng go˙i là rãnh (track), còn taˆ

˙p ho

˙’p các rãnh na˘m chong lên nhau go

˙i là cylinder. Moi

rãnh la˙i chia thành các sector, và có the’ ghi vào moi sector 512 byte thông tin. Vì theˆ da

˙c

die’m cu’ a mo˙t o’ dıa thu’o’ng là ta

˙p ho

˙’p ba sô: soˆ cylinder/so´ rãnh trong cylinder/soˆ sector trên

rãnh hay còn vieˆt tat là C/H/S(ba chu’ cái dau tiên cu’ a các thuaˆ˙t ngu’ Tieng Anh tu’o’ng u’ng:

Cyliner/Head/Sector). Ba soˆ này go˙i là cau trúc"hình ho

˙c cu’ a dıa". Dıa vo’i cau trúc hình ho

˙c

C/H/S có dung lu’o˙’ng C*H*S*512 byte.

Dıa cu’ng là các thieˆt bi˙

khoi, tu’ là do˙c và ghi thông tin theo các khoˆi, và kích thu’o’c nho’

nhat cu’ a khoi bang mo˙t sector (512 byte). D¯ e’ có the’ ghi thông tin lên dıa, can da

˙t dau dıa

dúng vi˙

trí, tu’c là chı’ cho controller bieˆt can ghi thông tin này vào sector nào. Sector du’o˙’c

dánh di˙a chı’ theo soˆ thu’ tu

˙’ cylinder, so´ thu’ tu

˙’ dau do

˙c (hay rãnh) và soˆ thu’ tu

˙’ sector trên rãnh.

2.3 Phân vùng trên dıa và quá trình kho’’i do˙ng 7

2.3.2 Phân vùng và ba’ ng phân vùng cu’ a dıa

Trong các heˆ˙

thong Intel o’ dıa thu’o’ng du’o˙’c chia thành các phân vùng. Raˆt có the’ nguyên

nhân cu’ a vie˙c phân vùng là nguyên nhân li

˙ch su’’: các phiên ba’ n MS-DOS dau tiên không the’

su’’ du˙ng du’o

˙’c các dıa lo’n, mà dung lu’o

˙’ng dıa la

˙i phát trie’n nhanh ho’n kha’ nang cu’ a DOS.

Khi dó dã nghı˜ ra vie˙c chia o’ dıa thành các phân vùng. D¯ e’ làm du’o

˙’c dieu này, trong sector

so0 cu’ a dıa (sector soˆ 0 cu’ a rãnh dau tiên trong cylinder soˆ 0) ghi nho’ ba’ ng chia o’ dıa thànhcác phân vùng(partition table). Moˆi phân vùng du’o

˙’c dùng nhu’ mo

˙t dıa va

˙t lý riêng re. Mo

˙t

tru’o’ng ho˙’p nói riêng dó là trong các phân vùng khác nhau có the’ cài da

˙t các he

˙dieu hành

khác nhau.Ba’ ng phân vùng chu’a 4 ba’ n ghi 16 byte cho 4 phân vùng chính. Moˆi ba’ n ghi có ca´u trúc

nhu’ sau:

kênh giao tácstruct partition {

char active; /* 0x80: phân vùng kích hoa˙

t, 0: không kích hoa˙

t */char begin[3]; /* CHS sector d au tiên, 24 bitchar type; /* loa

˙i phân vùng (ví du

˙, 83 — LINUX_NATIVE, 82 — LINUX_SWAP) */

char end[3]; /* CHS sector cuo ˆ i cùng, 24 bit */int start; /* so ˆ cu’ a sector d au tiên (32-bit, tính tu ’ 0) */int length; /* so ˆ sector có trong phân vùng (32 bit) */

};

Ba’ ng phân vùng dıa thu’o’ng du’o˙’c ta

˙o bo’’i chu’o’ng trình fdisk . Trên HDH Linux ngoài

chu’o’ng trìnhfdisk "truyen thong" (tuy va˙y rat khác so vo’i chu’o’ng trình fdisk trong MS-DOS

và Windows), còn có hai chu’o’ng trình de’ làm vie˙c vo’i phân vùng dıa: cfdisk và sfdisk .

Chu’o’ng trìnhcfdisk , giong nhu’ fdisk chı’ dành de’ làm vie˙c vo’i ba’ ng phân vùng dıa: nó

không quan tâm chú ý den thông tin có trên dıa. Chı’ khác bie˙t vo’i fdisk o’’ giao die

˙n thua

˙n

tie˙n: chı’ dan su’’ du

˙ng le

˙nh và he

˙thong trình do’n (thu

˙’c do’n). Chu’o’ng trìnhsfdisk có vài kha’

nang cao ho’n, ví du˙, cho phép thao tác trên các phân vùng dã có cu’ a dıa.

DOS su’’ du˙ng tru’o’ngbeginvàendcu’ a ba’ ng phân vùng và Interrupt 13 cu’ a BIOS (Int 13h)

de’ truy ca˙p to’i dıa, vì thekhông the’ su’’ du

˙ng dıa có dung lu’o

˙’ng lo’n ho’n 8,4 Gbyte, ngay ca’

vo’i các BIOS mo’i (ve van de này senói den o’’ sau), còn phân vùng thì không the’ lo’n ho’n 2,1Gbyte (nhu’ng dây là do ha

˙n checu’ a he

˙thong ta

˙p tin FAT16).

Linux thì chı’ su’’ du˙ng tru’o’ng start và lengthcu’ a ba’ ng phân vùng dıa và hotro

˙’ các phân

vùng chu’a den 232 sector, tu’c là dung lu’o˙’ng có the’ da

˙t 2 Tbyte

Vì trong ba’ ng chia o’ dıa chı’ có 4 dòng cho các phân vùng, soˆ phân vùng chính trên dıangay tu’ dau dã ha

˙n che: không the’ lo’n ho’n 4. Khi mà 4 phân vùng tro’’ thành ít, thì ngu’o’i ta

sáng cheˆ ra phân vùng lôgíc. Moˆ˙t trong so´ các phân vùng chính tro’’ thànhmo’’ ro

˙ng (loa

˙i phân

vùng - 5 hay F hay 85 trong heˆ˙

co’ somu’o’i sáu). Và trong phân vùng mo’’ ro˙ng ngu’o’i ta ta

˙o ra

cácphân vùng lôgíc. Phân vùng mo’’ ro˙ng không du’o

˙’c su’’ du

˙ng tru

˙’c tiep mà chı’ dùng de’ ghi

các phân vùng lôgíc. Sector dau tiên cu’ a phân vùng mo’’ ro˙ng ghi nho’ ba’ ng phân vùng vo’i

bon dau vào: mo˙t dùng cho phân vùng lôgíc, moˆ

˙t cho phân vùng mo’’ ro

˙ng khác, còn hai cái

còn la˙i không du’o

˙’c su’’ du

˙ng. Moi phân vùng mo’’ ro

˙ng có mo

˙t ba’ ng chia cu’ a mình, trong ba’ ng

này, cung giong nhu’ trong phân vùng mo’’ ro˙ng chính, chı’ su’’ du

˙ng có hai dòng de’ du’a ra mo

˙t

phân vùng lôgíc và moˆ˙t phân vùng mo’’ ro

˙ng. Nhu’ va

˙y, thu du’o

˙’c mo

˙t chuoi các mat xích tu’

ba’ ng phân vùng, ma˘t xích dau tiên mô ta’ ba phân vùng chính, và moˆi mat xích tiep theo –mo

˙t phân vùng lôgíc và vi

˙trí cu’ a ba’ ng tiep theo.

Chu’o’ng trìnhsfdisk trên Linux cho thaˆy toàn bo˙

chuoi này:

8 Cài da˙t HDH Linux trên cùng máy tính vo’i Windows

kênh giao tác[root]# sfdisk -l -x /dev/hda

Disk /dev/hda: 784 cylinders, 255 heads, 63 sectors/trackUnits = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0

Device Boot Start End #cyls #blocks Id System/dev/hda1 * 0+ 189 190- 1526143+ 6 FAT16/dev/hda2 190 783 594 4771305 5 Extended/dev/hda3 0 — 0 0 0 Empty/dev/hda4 0 — 0 0 0 Empty

/dev/hda5 190+ 380 191- 1534176 6 FAT16— 381 783 403 3237097+ 5 Extended— 190 189 0 0 0 Empty— 190 189 0 0 0 Empty

/dev/hda6 381+ 783 403- 3237066 7 HPFS/NTFS— 381 380 0 0 0 Empty— 381 380 0 0 0 Empty— 381 380 0 0 0 Empty

Sophân vùng lôgíc theo nguyên ta˘c không ha˙n che, vì moi phân vùng lôgíc có the’ chu’a

ba’ ng phân vùng và các phân vùng lôgíc cu’ a mình. Tuy nhiên trên thu˙’c thevan có nhu’ng ha

˙n

che. Ví du˙, Linux không the’ làm vie

˙c vo’i ho’n 15 phân vùng trên các dıa SCSI và ho’n 63 phân

vùng trên dıa IDE.Phân vùng mo’’ ro

˙ng trên moˆ

˙t dıa va

˙t lý, hay trong moˆ

˙t phân vùng mo’’ ro

˙ng chu’a nó (có

the’ go˙i là "me

˙") chı’ có the’ làm mo

˙t: không mo

˙t chu’o’ng trình phân chia o’ dıa nào trong soˆ dã

có (fdisk và tu’o’ng tu˙’) có the’ ta

˙o thêm moˆ

˙t phân vùng mo’’ ro

˙ng thu’ hai.

O’ dıa trên Linux nói riêng (o’ dıa va˙t lý) du’o

˙’c truy ca

˙p qua tên cu’ a thiet bi

˙: /dev/hda ,

/dev/hdb , /dev/sda , v.v. . . Các phân vùng chính có thêm soˆ 1-4 trong tên thieˆt bi˙:

/dev/hda1 , /dev/hda2 , /dev/hda3 , còn phân vùng lôgíc thì có các tên:/dev/hda5, /dev/hda6, /dev/hda7

. . . (bat dau tu’ so5). Tu’ nhu’ng gì de ca˙p den o’’ trên có the’ suy ra ta

˙i sao la

˙i có the’ bo’ qua các

tên nhu’ /dev/hda3 hay /dev/hda4 (do’n gia’ n là phân vùng chính thu’ ba và thu’ tu’ khôngdu’o

˙’c ta

˙o ra) và ngay sau/dev/hda2 ba

˙n do

˙c thay /dev/hda5 (phân vùng lôgíc trong phân

vùng mo’’ ro˙ng /dev/hda2 ), và sau dó thì vie

˙c dánh soˆ la

˙i theo thu’ tu

˙’ thông thu’o’ng.

Trong Windows các phân vùng lôgíc nhaˆ˙n du’o

˙’c tên (chu’ cái), bat dau tu’ chu’ cái cuoi

dùng dành cho phân vùng chính. Ví du˙

neu mo˙t dıa cu’ng có hai phân vùng chính (C: và D:)

và mo˙t phân vùng mo’’ ro

˙ng, trong phân vùng mo’’ ro

˙ng ta

˙o ra hai phân vùng lôgíc, thì nhu’ng

phân vùng lôgíc này se˜ du’o˙’c da

˙t tên E: và F:. Xin nói thêm, trong Windows NT và 2000/XP

có the’ thay do’i tên cu’ a các phân vùng dıa.

2.3.3 Quá trình kho’’i do˙ng HDH công ty Microsoft

Dù he˙

dieu hành có là gì, thì de’ có the’ bat dau dieu khie’n máy tính, caˆn na˙p HDH vào bo

˙nho’. Vì thehãy xem xét qua quá trình kho’’i do˙ng cu’ a các HDH khác nhau. Chúng ta chı’ quan

tâm den vie˙c kho’’i do

˙ng tu’ o’ dıa cu’ng, nên se˜ không xem xét den vie

˙c kho’’i do

˙ng tu’ dıa mem,

CD-ROM và qua ma˙ng. Hãy ba˘t dau tu’ MS-DOS và MS Windows cu˜ (xin du’ng quên ra˘ng,

vie˙c phát trie’n và hoàn thieˆ

˙n máy tính cá nhân song song vo’i su

˙’ phát trie’n cu’ a HDH cu’ a

Microsoft và nhu’ng quyet di˙nh su’’ du

˙ng trong các HD¯ H này có a’ nh hu’o’’ng ma

˙nh den quyet

di˙nh cu’ a các nhà phát trie’n thiet bi

˙).

2.3 Phân vùng trên dıa và quá trình kho’’i do˙ng 9

Nhu’ ba˙n do

˙c biet, khi ba

˙t máy tính dau tiên secha

˙y chu’o’ng trình POST (Power On Self

Test). Chu’o’ng trình xác di˙nh dung lu’o

˙’ng bo

˙nho’, thu’’ nghie

˙m bo

˙nho’, và xác di

˙nh các thành

phan khác (bàn phím, o’ cu’ng. . . ), kho’’i do˙ng các the’ adaptor. Trên màn hình thu’o’ng xuat hie

˙n

các thông báo veˆ dung lu’o˙’ng bo

˙nho’, vevie

˙c thu’’ nghie

˙m bo

˙nho’, danh sách các thieˆt bi

˙nha

˙n

ra (o’ dıa cu’ng và mem, bo˙

xu’’ lý, co’ng COM và v.v. . . ).Sau khi hoàn thành vieˆ

˙c thu’’ nghie

˙m POST go

˙i Int 19h. Công vieˆ

˙c cu’ a Int 19h là tìm thieˆt

bi˙

kho’’i do˙ng. Vie

˙c tìm kiem thu

˙’c hie

˙n theo thu’ tu

˙’ xác di

˙nh trong Setup BIOS và theo cách

tham dò sector soˆ 0 cu’ a các thieˆt bi˙

tu’o’ng u’ng. Neu dıa có the’ kho’’i do˙ng, thì trong sector soˆ

0 cu’ a dıa cóba’ n ghi kho’’i do˙

ng chính– Master Boot Record (MBR). Hai byte cuoˆi cùng cu’ aMBR – "somàu nhie

˙m", là dau hie

˙u cho biet sector có MBR, và theo dó dıa có the’ kho’’i do

˙ng.

Ngoài "somàu nhie˙m" MBR còn chu’a ba’ ng phân vùng dıa dã nói o’’ trên, và moˆ

˙t chu’o’ng trình

nho’ – trìnhkho’’i do˙

ng chính, kích thu’o’c chı’ có 446 (0x1BE) byte.Ba’ ng2.1cho thay cau trúc cu’ a sector kho’’i do

˙ng chính sau khi cài da

˙t Windows.

Ba’ ng 2.1: Caˆu trúc cu’ a sector kho’’i do˙ng chính

Di˙ch chuye’n No

˙i dung

0x000 Mã cu’ a trình kho’’i do˙ng chính

0x1BE Ba’ ng phân vùng o’ dıa0x1FE "Somàu nhie

˙m" (0xAA55)

MS-DOS, Windows95 và NT ghi nho’ DOS MBR trong khi cài da˙t. Ngoài ra cu˜ng có the’

ta˙o MBR cu’ a MS vo’i câu le

˙nh DOSsau:fdisk /mbr .

Xin tro’’ la˙i vo’i quá trình kho’’i do

˙ng. Int 19h cu’ a BIOS na

˙p trình kho’’i do

˙ng chính vào boˆ

˙nho’ máy tính và chuye’n quyen dieu khie’n cho chu’o’ng trình này. Nhu’ng chu’o’ng trình "bénho’ " này không du’ kha’ nang kho’’i do

˙ng HDH; tat ca’ nhu’ng gì mà nó có the’ làm – dó là na

˙p

vào bo˙

nho’ chu’o’ng trình ma˙nh ho’n – trình kho’’i do

˙ng thu’ hai.

De’ làm du’o˙’c dieu này, nó tìm trong ba’ ng phân vùng kích hoa

˙t và do

˙c vào bo

˙nho’ trình

kho’’i do˙ng thu’ hai, bat dau tu’ sector lôgíc dau tiên cu’ a phân vùng kích hoa

˙t. Hãy chú ý den

cu˙m tu’ "bat dau tu’". Vì trình kho’’i do

˙ng thu’ hai trên các heˆ

˙thong khác nhau có do

˙dài khác

nhau.Trong phân vùng du’o

˙’c di

˙nh da

˙ng du’o’i he

˙thong ta

˙p tin FAT, trình kho’’i do

˙ng thu’ hai chiem

mo˙t sector (512 byte). Trong phân vùng di

˙nh da

˙ng du’o’i he

˙thong ta

˙p tin NTFS, trình kho’’i

do˙ng thu’ hai chiem vài sector.Trình kho’’i do

˙ng thu’ hai na

˙p lo’p chu’o’ng trình dau tiên, can thiet cho vie

˙c kho’’i do

˙ng he

˙dieu hành. Trong tru’o’ng ho˙’p MS DOS chu’o’ng trình kho’’i do

˙ng do

˙ng na

˙p IO.SYS theo di

˙a chı’

700h, sau dó MSDOS.SYS và chuye’n quyen dieu khie’n cho SYSINIT cu’ a môdun IO.SYS.Neu vì lý do nào dó không tìm thaˆy trên dıa phân vùng kích hoa

˙t, thì quá trình kho’’ do

˙ng

setiep tu˙c vo’i vie

˙c xu’’ lý Int 18h. Tru’o’ng ho

˙’p này trên thu

˙’c te rat hiem khi su’’ du

˙ng, nhu’ng

kha’ nang này có the’ có ích trong tru’o’ng ho˙’p nào dó. Trong khi kho’’i do

˙ng tu’ xa, khi he

˙dieu

hành kho’’i do˙ng tu’ máy chu’ , thì Int này du’o

˙’c POST chuye’n hu’o’ng lên ROM cu’ a ca

˙c ma

˙ng.

Doi vo’i các HDH khác cu’ a Microsoft thì quá trình kho’’i do˙ng dien ra tu’o’ng tu

˙’.

• Windows95 kho’’i do˙ng giong nhu’ DOS nhu’ng thay theˆ IO.SYS và MSDOS.SYS bo’’i

các ta˙p tin cu’ a mình. Các taˆ

˙p tin DOS du’o

˙’c giu’ la

˙i du’o’i các tên tu’o’ng u’ng IO.DOS và

MSDOS.DOS. Khi ba˙n do

˙c cho

˙n kho’’i do

˙ng DOS, Windows95 se˜ do’i tên các taˆ

˙p tin

cu’ a mình vo’i phan mo’’ ro˙ng w40 và phu

˙c hoi tên ban dau cu’ a các taˆ

˙p tin he

˙thong cu’ a

DOS. Quá trình kho’’i do˙ng tiep tu

˙c vo’i vie

˙c na

˙p IO.SYS. Nhu’ the, sector kho’’i do

˙ng cu’ a

DOS và Windows95 là nhu’ nhau.

10 Cài da˙t HDH Linux trên cùng máy tính vo’i Windows

• Windows NT4 su’’ du˙ng MBR DOS, nhu’ng thay theˆ ba’ n ghi kho’’i do

˙ng cu’ a phân vùng

kích hoa˙t bang cách thay theˆ NTLDR vào choIO.SYS. Dây là mo

˙t chu’o’ng trình ma

˙ng

và có the’ làm du’o˙’c nhieu thu’. Ví du

˙, có the’ tìm ta

˙p tin boot.ini và neˆu nhu’ tham soˆ

timeout lo’n ho’n 0, thì du’a ra trình do’n (thu˙’c do’n) kho’’i do

˙ng.

Moi dòng cu’ a phan [operating systems] trong ta˙p tin boot.ini xác di

˙nh mo

˙t

phu’o’ng án (moˆ˙t HDH) kho’’i do

˙ng và du’o

˙’c viet theo mau sau:

di˙

a_chı’ _trình_kho ’’ i_d o˙

ng_thu ’_hai="tên_go˙

i_cu’ a_phu’o’ng_án"Di

˙a chı’ cu’ a trình kho’’i do

˙ng thu’ hai có the’ là mo

˙t phân vùng cu

˙the’ nào dó cu’ a dıa cung

nhu’ ta˙p tin kho’’i do

˙ng. Du’o’i dây là mo

˙t ví du

˙ta˙p tin boot.ini:

[operating systems]multi(0)disk(0)rdisk(0)partition(3)\WINNT="Windows NT Workstation 4.00 VIETNAM"multi(0)disk(0)rdisk(0)partition(3)\WINNT="Windows NT Workstation 4.00 VIETNAM [VGA mode]" /basevideo /sosC:\="Microsoft Windows"C:\BOOTSECT.LNX="Linux"

Neu ngu’o’i dùng cho˙n NT, thì sekho’’i do

˙ng theo di

˙a chı’ phân vùng du’o

˙’c chı’ trên dòng dau

tiên. Trên dòng tu’o’ng u’ng vo’i phu’o’ng án Microsoft Windows, chı’ du’a ra "C:\", vì tên cu’ ata˙p tin kho’’i do

˙ng du’o

˙’c lay theo ma

˙c di

˙nh: bootsect.dos. Taˆ

˙p tin du’o

˙’c na

˙p vào bo

˙nho’ và quá

trình kho’’i do˙ng du’o

˙’c tiep tu

˙c giong nhu’ khi ba’ n ghi kho’’i do

˙ng du’o

˙’c na

˙p bo’’i mã chu’o’ng trình

tu’ MBR.Doi vo’i vie

˙c kho’’i do

˙ng các heˆ

˙thong khác, có the’ su’’ du

˙ng cách dó. Chı’ can thêm vào

boot.ini các dòng chu’a liên ket den ta˙p tin kho’’i do

˙ng khác. Khi cho

˙n các dòng này se˜ kho’’i

do˙ng HDH tu’o’ng u’ng. Trong ví du

˙trên Linux cung du’o

˙’c kho’’i do

˙ng theo các này. Trong taˆ

˙p

tin C:\BOOTSECT.LNX caˆn ghi no˙i dung cu’ a ba’ n ghi kho’’i do

˙ng, ta

˙o bo’’i Linux (nói dúng

ho’n – LILO, trình kho’’i do˙ng tiêu chua’n cu’ a Linux).

2.3.4 Van de vo’i các dıa lo’n

Trên MS-DOS và các phiên ba’ n dau tiên cu’ a Windows truy caˆ˙p to’i dıa (trong dó có ca’ bu’o’c

kho’’i do˙ng dau tiên cu’ a HDH) du’o

˙’c to’ chu’c qua Int 13 (Int 13h) cu’ a BIOS. Khi này su’’ du

˙ng

su˙’ dánh di

˙a chı’ sector trên dıa trên co’ so’’ C/H/S (xem trên). Chính xác ho’n:

• AH — cho˙n thao tác;

• CH — 8 bit nho’ ho’n cu’ a socylinder;

• CL — 7-6 bit tu’o’ng u’ng bit lo’n cu’ a socylinder, 5-0 tu’o’ng u’ng sosector;

• DH — socu’ a dau do˙c;

• DL — so cu’ a dıa(80h hay 81h).

(Can lu’u ý rang vie˙c dánh soˆ cylinder va

˙t lý và rãnh thu’o’ng bat dau tu’ 0, còn sector trên

rãnh dánh soˆ bat dau tu’ 1). Tuy nhiên trên thu˙’c te so dau do

˙c không quá 16, còn soˆ sector

trên rãnh – không quá 63, và dù có dùng 10 bit de’ chı’ ra cylinder, BIOS vaˆn không the’ làmvie

˙c vo’i dıa dung lu’o

˙’ng lo’n ho’n 1024*63*16*512 = 528 Mbyte.

De’ vu’o˙’t qua ha

˙n chenày, ngu’o’i ta áp du

˙ng nhieu cách "láu cá" khác nhau. Ví du

˙, Extended

CHS (ECHS) hay "Large disk support" (dôi khi còn go˙i là "Large") su’’ du

˙ng ba bit chu’a dùng

2.4 Lu˙’a cho

˙n trình kho’’i do

˙ng 11

den cu’ a sothu’ tu˙’ dau do

˙c de’ tang socylinder. Cách này cho pehsp su’’ du

˙ng cau trúc "hình

ho˙c gia’ ma

˙o cu’ a dıa" vo’i 1024 cylinder, 128 dau do

˙c và 63 sector/rãnh. Bieˆn do’i Extended

CHS thành di˙a chı’ CHS thu

˙’c (có the’ chu’a den 8192 cylinder) du’o

˙’c BIOS thu

˙’c hie

˙n. Cách này

cho phép làm vieˆ˙c vo’i dıa có dung lu’o

˙’ng den 8192*16*63*512 = 4 227 858 432 byte hay 4,2

Gbyte.Nhu’ng các nhà phát trie’n càng ngày càng ta˘ng ma

˙t do

˙ghi cu’ a dıa, sodıa và soˆ rãnh, và

còn phát minh ra các phu’o’ng pháp khác de’ tang dung lu’o˙’ng dıa. Ví du

˙, sosector trên rãnh

không còn coˆ di˙nh mà tro’’ thành khác nhau trên các rãnh khác nhau (trên các rãnh na˘m gan

rìa ngoài cu’ a dıa, dài ho’n, sosector du’o˙’c tang lên). Ket qua’ là bo

˙ba so´ C/H/S không còn

pha’ n ánh dúng cau trúc "hình ho˙c cu’ a dıa", và các phiên ba’ n BIOS cukhông the’ ho tro

˙’ truy

ca˙p to’i toàn bo

˙không gian dıa.

Khi dó ngu’o’i ta nghıra phu’o’ng pháp khác de’ làm vie˙c vo’i các dıa lên qua Int 13h -dánh

di˙a chı’ các khoi theo du’o’ng tha’ ng ("Linear Block Addressing" hay LBA). Không di sâu vào

chi tiet, có the’ nói rang tat ca’ sector trên dıa du’o˙’c dánh soˆ mo

˙t cách tuaˆn tu

˙’, bat dau tu’ sector

dau tiên trên rãnh soˆ 0 cu’ a cylinder soˆ 0. Thay vào choˆ di˙a chı’ CHS moi sector nhaˆ

˙n du’o

˙’c

mo˙t di

˙a chı’ lôgíc – so´ thu’ tu

˙’ cu’ a sector trong to’ng sotat ca’ sector. Vie

˙c dánh soˆ sector lôgíc

bat dau tu’ 0, trong dó sector soˆ 0 chu’a ba’ n ghi kho’’i do˙ng chính (MBR). Trong Setup BIOS

ho tro˙’ bien do’i so thu’ tu

˙’ theo du’o’ng tha’ ng thành di

˙a chı’ CHS có da

˙ng "Ho tro

˙’ LBA". Nhu’

va˙y, trong các phiên ba’ n BIOS mo’i thu’o’ng có lu

˙’a cho

˙n vo’i ba phu’o’ng án: "Large", "LBA",

và "Normal" (phu’o’ng án cuoˆi cùng có nghı˜a là không thu˙’c hie

˙n bien do’i di

˙a chı’).

Tuy nhiên trong cheˆ do˙

LBA vie˙c su’’ du

˙ng dıa va

˙t lý van du’o

˙’c thu

˙’c hie

˙n qua Int 13h, mà

Int 13h van su’’ du˙ng bo

˙3D (C,H,S). Vì nguyên nhân này xuaˆt hie

˙n ha

˙n chelên dung lu’o

˙’ng

cu’ a dıa: BIOS, và theo dó, MS-DOS và các phiên ba’ n Windows dau tiên không the’ dánh di˙a

chı’ các dıa có dung lu’o˙’ng lo’n ho’n 8,4 Gbyte.

Can chú ý rang ha˙n chenói trên chı’ áp du

˙ng vo’i các dıa có giao dieˆ

˙n IDE. Trong các

controller cu’ a dıa SCSI, soˆ cu’ a sector du’o˙’c chuye’n vào các leˆ

˙nh SCSI, và sau dó tu

˙’ dıa tìm

ra vi˙trí can thiet, vì theha

˙n chelên dung lu’o

˙’ng dıa không xuaˆt hie

˙n.

Mo˙t lan nu’a muon nhac la

˙i rang, tat ca’ nhu’ng ha

˙n chenói trên chı’ có ý nghı˜a trong giai

doa˙n kho’’i do

˙ng HDH. Bo’’i vì Linux và các phiên ba’ n Windows mo’i nhat khi làm vie

˙c vo’i dıa

dã không còn su’’ du˙ng Int 13 cu’ a BIOS, mà su’’ du

˙ng driver riêng cu’ a mình. Nhu’ng tru’o’c khi

có the’ su’’ du˙ng driver cu’ a mình, heˆ

˙thong pha’ i du’o

˙’c na

˙p. Vì thetrong giai doa

˙n kho’’i do

˙ng dau

tiên bat ky he˙

thong nào cu˜ng can su’’ du˙ng BIOS. Dieu này ha

˙n chevie

˙c da

˙t nhieu he

˙thong

ra ngoài vùng 8 Gbyte dıa dau tiên: chúng không the’ kho’’i do˙ng tu’ dó, ma

˙c dù sau khi kho’’i

do˙ng thì có the’ làm vie

˙c vo’i các dıa có dung lu’o

˙’ng lo’n ho’n nhieu. De’ có the’ hie’u cách thoát

kho’ i nhu’ng ha˙n chenày, chúng ta caˆn mo

˙t chút kien thu’c vequá trình kho’’i do

˙ng cu’ a HDH

Linux.

2.4 Lu˙’a cho

˙n trình kho’’i do

˙ng

2.4.1 Trình kho’’i do˙ng LILO cu’ a HDH Linux

Trình kho’’i do˙ng LILO du’o

˙’c viet bo’’i Werner Almesberber. LILO có the’ kho’’i do

˙ng nhân

Linux tu’ dıa mem, dıa cu’ng, và cung có the’ kho’’i do˙ng các heˆ

˙dieu hành khác: PC/MS-DOS,

DR DOS, OS/2, Windows 95/98, Windows NT/2000/XP, 386BSD, SCO UNIX, Unixwarev.v. . . LILO cho phép cho

˙n den 16 he

˙dieu hành khác nhau de’ kho’’i do

˙ng.

LILO không pha’ i là chu’o’ng trình do’n le’ mà là mo˙t bo

˙gom nhieu chu’o’ng trình: trình kho’’i

do˙ng, các chu’o’ng trình su’’ du

˙ng de’ cài da

˙t và cau hình trình kho’’i do

˙ng, và các taˆ

˙p tin phu

˙c vu

˙:

12 Cài da˙t HDH Linux trên cùng máy tính vo’i Windows

• chu’o’ng trình/sbin/lilo , cha˙y du’o’i Linux, phu

˙c vu

˙de’ ghi tat ca’ thông tin can thiet

trong giai doa˙n kho’’i do

˙ng vào các choˆ tu’o’ng u’ng. Can cha

˙y chu’o’ng trình này sau moˆi

lan có thay do’i trong nhân hay trong taˆ˙p tin cau hình LILO;

• các ta˙p tin phu

˙c vu

˙, can cho LILO trong tho’i gian kho’’i do

˙ng. Nhu’ng ta

˙p tin này thu’o’ng

nam trong thu’ mu˙c /boot . Quan tro

˙ng nhat trong so´ chúng – dó là ba’ n thân trình

kho’’i do˙ng (xem phía du’o’i) và ta

˙p tin map (/boot/map ); trong ta

˙p tin này có chı’ ra

vi˙

trí cu’ a nhân. Moˆ˙t ta

˙p tin quan tro

˙ng khác – taˆ

˙p tin cau hình LILO; thu’o’ng có tên

/etc/lilo.conf ;

• trình kho’’i do˙ng – dây là phan LILO du’o

˙’c na

˙p vào bo

˙nho’ dau tiên qua Int cu’ a BIOS;

trình kho’’i do˙ng na

˙p nhân Linux hay sector kho’’i do

˙ng cu’ a he

˙dieu hành khác. Trình

kho’’i do˙ng gom có hai phaˆn. Phan thu’ nhat du’o

˙’c ghi vào sector kho’’i do

˙ng và phu

˙c vu

˙de’ na˙p phan thu’ hai, có kích thu’o’c lo’n ho’n rat nhieu. Ca’ hai phan thu’o’ng du’o

˙’c ghi trên

dıa trong ta˙p tin /boot/boot.b .

Can nho’ rang, di˙nh da

˙ng cu’ a sector kho’’i do

˙ng ta

˙o ra bo’’i LILO khác vo’i di

˙nh da

˙ng MBR

cu’ a DOS. Vì theˆ neu ghi sector kho’’i do˙ng LILO vào MBR, thì các heˆ

˙dieu hành dã cài cu’ a

Microsoft sengu’ng kho’’i do˙ng (neu nhu’ không có các bieˆ

˙n pháp bo’ sung).

Sector kho’’i do˙ng cu’ a LILO có the’ du’o

˙’c thiet ke de’ su’’ du

˙ng nhu’ sector kho’’i do

˙ng cu’ a

phân vùng; trong dó có chocho ba’ ng phân vùng.Sector kho’’i do

˙ng cu’ a LILO trong khi cài da

˙t có the’ da

˙t vào nhu’ng chosau:

• sector kho’’i do˙ng cu’ a dıa mem trong di

˙nh da

˙ng Linux (/dev/fd0 , . . . );

• MBR cu’ a dıa cu’ng dau tiên (/dev/hda, /dev/sda , . . . );

• sector kho’’i do˙ng cu’ a phân vùng chính vo’i he

˙thong ta

˙p tin Linux trên dıa cu’ng dau tiên

(/dev/hda1, /dev/hda2 , . . . );

• sector kho’’i do˙ng cu’ a phân vùng lôgíc trong phân vùng mo’’ ro

˙ng dıa cu’ng dau tiên

(/dev/hda5 , . . . ). Su˙’ tha

˙t là phan lo’n chu’o’ng trình da

˙ng fdisk không de ra kha’ nang

kho’’i do˙ng kho’’i do

˙ng tu’ phân vùng mo’’ ro

˙ng và tu’ choi vie

˙c kích hoa

˙t phân vùng này. Vì

va˙y trong thành phaˆn LILO có chu’a mo

˙t chu’o’ng trình da

˙c bie

˙t (activate ) cho phép

vu’o˙’t qua ha

˙n chenày. Tuy nhiên chu’o’ng trìnhfdisk cu’ a ba’ n phân phoˆi Linux ho tro

˙’

kha’ nang kích hoa˙t phân vùng mo’’ ro

˙ng. Can su’’ du

˙ng tùy cho

˙n -b hoa

˙c bien BOOT.

Sector kho’’i do˙ng cu’ a LILO không the’ da

˙t vào các choˆ sau:

• sector kho’’i do˙ng cu’ a dıa mem hay phân vùng chính, vo’i di

˙nh da

˙ng he

˙thong ta

˙p tin

khác Linux;

• trong phân vùng swap cu’ a Linux;

• trên dıa cu’ng thu’ hai.

Ngoài ra, caˆn nho’ rang, LILO trong tho’i gian kho’’i do˙ng nhu’ng ta

˙p tin sau:

• /boot/boot.b ;

• /boot/map (ta˙o ra bo’’i le

˙nh /sbin/lilo );

2.4 Lu˙’a cho

˙n trình kho’’i do

˙ng 13

• tat ca’ phiên ba’ n nhân kho’’i do˙ng (neu ba

˙n do

˙c cho

˙n phiên ba’ n nhân khi kho’’i do

˙ng);

• sector kho’’i do˙ng cu’ a các heˆ

˙dieu hành khác mà ba

˙n do

˙c muon kho’’i do

˙ng qua LILO;

• ta˙p tin chu’a các thông báo du’a ra khi kho’’i do

˙ng (neu du’o

˙’c xác di

˙nh).

Nhu’ va˙y, sector kho’’i do

˙ng LILO cung nhu’ nhu’ng ta

˙p tin dã lie

˙t kê (trong soˆ dó có các taˆ

˙p

tin ba˙n do

˙c secài da

˙t sau này) caˆn nam trong pha

˙m vi 1024 cylinder dau tiên cu’ a dıa cu’ng,

bo’’i vì chúng can du’o˙’c truy ca

˙p qua BIOS. Xem phaˆn nói veha

˙n checu’ a BIOS o’’ trên.

Bat dau tu’ phiên ba’ n 21, LILO du’a ra màn hình trình do’n (thu˙’c do’n) cho phép cho

˙n he

˙thong de’ kho’’i do˙ng (tru’o’c dây can nhan phím Tab de’ go

˙i trình do’n này).

2.4.2 Các trình kho’’i do˙ng khác

Ngoài LILO de’ kho’’i do˙ng Linux có the’ kho’’i do

˙ng các trình kho’’i do

˙ng khác.

• Neu nhu’ tru’o’c khi cài da˙t Linux dã có HDH Windows NT/2000/XP, thì trình kho’’i do

˙ng

ba˙n do

˙c có the’ su’’ du

˙ng là OS Loader cu’ a NT. So sánh vo’i LILO thì trình kho’’i do

˙ng

OS Loader có ít nhaˆt hai u’u the. Thu’ nhat, tat ca’ cau hình cukhông bi˙

mat (chúng tacó the’ cho

˙n kho’’i do

˙ng Windows hay Linux theo lu

˙’a cho

˙n), và thu’ hai, có the’ cài da

˙t

Linux lên dıa mà LILO không the’ kho’’i do˙ng, ví du

˙, o’ dıa thu’ hai trên controller thu’ hai

(Secondary Slave).

• Neu nhu’ tru’o’c khi cài da˙t Linux ba

˙n do

˙c chı’ có HDH Windows 95 hay Windows 98 và

không có Windows NT/2000 hay XP, thì OS Loader không du’o˙’c cài da

˙t. Và neu nhu’ vì

mo˙t lý do nào dó ba

˙n do

˙c không muoˆn cài da

˙t LILO, thì có the’ su’’ du

˙ng chu’o’ng trình

kho’’i do˙ng loadlin.exe (thu’o’ng di kèm vo’i ba’ n phân phoˆi Linux);

• Tho’i gian gan dây trong thành phaˆn ba’ n phân phoˆi Linux thu’o’ng có chu’o’ng trình kho’’ido

˙ng GRUB.

• Trong thành phaˆn OS/2 cu’ a công ty IBM có chu’o’ng trình kho’’i do˙ng Boot Manager.

Trong rat nhieu hu’o’ng dan ngu’o’i ta khuyên dùng chu’o’ng trình này de’ to’i chu’c kho’’ido

˙ng nhieu HDH.

• Trong các nguoˆn thông tin khác nhau còn nha˘c den chu’o’ng trình System Commander;

• Thêm mo˙t trình kho’’i do

˙ng khác có trong thành phaˆn gói PartitionMagic cu’ a công ty

Power Quest. Chúng ta se˜ nói vechu’o’ng trình này trong phaˆn nho’ tiep theo.

Ngoài ra tác gia’ còn thay ngu’o’i ta nói den mo˙t loa

˙t trình kho’’i do

˙ng khác (moˆ

˙t socó the’

tìm thay trong thu’ mu˙c /public/ftp/pub/Linux/system/boot/loaders trên trang

ftp://metalab.unc.edu/. Nhu’ng vì tác gia’ không su’’ du˙ng nhu’ng chu’o’ng trình này, nên không

the’ nói cu˙

the’ cách su’’ du˙ng chúng. Và taˆt ca’ nhu’ng lo’i khuyên dùng sau cu’ a tác gia’ sedu

˙’a

trên vie˙c su’’ du

˙ng LILO, NT Loader và loadlin.exe. Neˆu nhu’ có ý muon cài da

˙t chu’o’ng trình

kho’’i do˙ng khác, thì ba

˙n do

˙c can do

˙c hu’o’ng dan cài da

˙t và su’’ du

˙ng cu’ a nó.

14 Cài da˙t HDH Linux trên cùng máy tính vo’i Windows

2.4.3 Các phu’o’ng án kho’’i do˙ng

Nhu’ va˙y, theo ý kien cu’ a tác gia’ có các phu’o’ng án kho’’i do

˙ng sau:

• Neu dã cài da˙t Windows NT hay Windows 2000/XP, thì hãy su’’ du

˙ng NT Loader.

• Neu có Windows 95 hay Windows 98 trên FAT16, và ba˙n do

˙c không muoˆn cài da

˙t

chu’o’ng trình kho’’i do˙ng nào khác, thì có the’ su’’ du

˙ng LILO, hoa

˙c dau tiên cha

˙y DOS và

sau dó kho’’i do˙ng Linux nho’ chu’o’ng trình loadlin.exe (hay moˆ

˙t chu’o’ng trình tu’o’ng tu

˙’,

có vài chu’o’ng trình nhu’ va˙y, nhu’ng chúng ta se˜ không xét den).

• Neu dã cài da˙t Windows 95 OSR2 hay Windows 98 trên FAT32, và ba

˙n do

˙c không

muon cài da˙t thêm chu’o’ng trình kho’’i do

˙ng, thì can su’’ du

˙ng loadlin.exe. Raˆt nhieu

HOWTO kha’ ng di˙nh rang không caˆn su’’ du

˙ng LILO, neu nhu’ phân vùng kích hoa

˙t có

di˙nh da

˙ng FAT32, ma˘

˙c dù tác gia’ không rõ nguyên nhân. Tuy nhiên thí nghieˆ

˙m kho’’i

do˙ng Linux qua NT Loader, cài da

˙t trên phân vùng FAT32, cu’ a tác gia’ dã ket thúc

không thành công. Vì theˆ, trong tru’o’ng ho˙’p này tác gia’ dã pha’ i su’’ du

˙ng chu’o’ng trình

loadlin.exe. Chu’o’ng trình này dã hoàn thành toˆt nhie˙m vu

˙, và ta

˙o cho tác gia’ mo

˙t an

tu’o˙’ng tot, vì thetác gia’ khuyên ba

˙n do

˙c su’’ du

˙ng loadlin.exe de’ kho’’i do

˙ng Linux.

Trong nhu’ng phan tiep theo tác gia’ se cho biet cách cài da˙t Linux, su’’ du

˙ng tat ca’ ba

phu’o’ng án kho’’i do˙ng: qua trình kho’’i do

˙ng NT Loader, trình kho’’i do

˙ng LILO và trình kho’’i

do˙ng loadlin.exe. Tuy nhiên tru’o’c khi cài da

˙t trình kho’’i do

˙ng can chua’n bi

˙các phân vùng

trên dıa, hay ít nhaˆt là nghıcách to’ chu’c chúng.

2.5 Chua’n bi˙các phân vùng trên dıa

2.5.1 Lo’i khuyên khi ta˙o phân vùng

Du’a ra lo’i khuyên o’’ dây không pha’ i là vie˙c dedàng, vì phân vùng dıa phu

˙c thuo

˙c rat nhieu

vào ý thích và nhu caˆu cu’ a chu’ nhân dıa. Nhu’ng cung xin thu’’ du’a ra vài de nghi˙

sau. Tácgia’ seda

˙t tên dıa và phân vùng theo "tiêu chua’n" cu’ a Linux, tu’c là /dev/hda, /dev/hdb ,

v.v. . . doi vo’i dıa và/dev/hda1, /dev/hda2 , v.v. . . – doi vo’i các phân vùng.Vie

˙c phân chia dıa thành các phân vùng là caˆn thiet, bo’’i vì Windows và Linux su’’ du

˙ng

các cách lu’u tru’ thông tin trên dıa và sau dó do˙c chúng tu’ dıa khác nhau. Chính vì theˆ tot ho’n

het là dành cho moˆi he˙

dieu hành moˆ˙t (hoa

˙c tha

˙m chí mo

˙t vài nhu’ chúng ta se˜ thay o’’ du’o’i)

phân vùng riêng.Dau tiên chúng ta hãy xem xét moˆ

˙t tru’o’ng ho

˙’p do’n gia’ n – dung lu’o

˙’ng o’ dıa cu’ a ba

˙n do

˙c

không vu’o˙’t quá 8,4 Gbyte (nói chính xác ho’n – socylinder không vu’o

˙’t quá 1024). Trong

tru’o’ng ho˙’p này mo

˙i thu’ deu do’n gia’ n: ba

˙n do

˙c chı’ vie

˙c chia dıa làm sao de’ du’ cho cho he

˙dieu hành se˜ cài da˙t. Có the’ su’’ du

˙ng du’ lie

˙u cho biet kích thu’o’c dıa nho’ nhat can thiet de’ cài

da˙t he

˙dieu hành vo’i cau hình co’ ba’ n trong ba’ ng2.2.

Tuy nhiên xin hãy nho’ rang, không nhu’ng pha’ i tính kích thu’o’c các ta˙p tin cu’ a ba’ n thân

he˙

dieu hành, mà còn pha’ i tính ca’ kích thu’o’c cu’ a các chu’o’ng trình ba˙n do

˙c du

˙’ tính cha

˙y. Và

còn pha’ i dành mo˙t phan du

˙’ tru’ không nho’ cho các chu’o’ng trình se˜ cài da

˙t sau này (không the’

tránh kho’ i!). Hãy tính rang, 700 Mbyte dành cho Linux o’’ trong ba’ ng nói trên chı’ dành chocác chu’o’ng trình cài da

˙t cùng vo’i Linux theo ma

˙c di

˙nh, trong soˆ dó có, ví du

˙, chu’o’ng trình

soa˙n tha’ o rat ma

˙nh Lyx. Doi vo’i Windows cung tu’o’ng tu

˙’ nhu’ va

˙y.

2.5 Chua’n bi˙các phân vùng trên dıa 15

Ba’ ng 2.2: Nhu caˆu su’’ du˙ng không gian dıa cu’ a HDH

He˙

dieu hành Yêu cauWindows 95 100 MbyteWindows 98 200 MbyteWindows NT 200 MbyteWindows 2000 700 MbyteLinux Red Hat 6.2 (Worksta-tion vo’i KDE)

700 Mbyte

Theo kinh nghieˆ˙m cu’ a tác gia’ thì de’ làm vie

˙c vo’i Windows 95/98, Windows NT và Linux

các phân vùng vo’i kích thu’o’c 800-1000 Mbyte là du’ (tat nhiên, neˆu ba˙n do

˙c không cài da

˙t

các gói chu’o’ng trình lo’n, nhu’ OpenOffice.Org), còn doi vo’i Windows 200 thì caˆn phân vùnglo’n ho’n.

Bây gio’ chúng ta se˜ xem xét va´n de chia các phân vùng cho Linux. O’’ dây không the’ chı’chia mo

˙t phân vùng. Thu’ nhat, can chia mo

˙t phân vùng swapriêng bie

˙t cho Linux. Khi xác

di˙nh dung lu’o

˙’ng cu’ a phân vùng swap Linux caˆn tính den nhu’ng yeu to sau:

• Trong Linux, RAM và không gian swap ho˙’p la

˙i ta

˙o thành boˆ

˙nho’ a’ o chung. Ví du

˙, neu

ba˙n do

˙c có 256 MByte RAM và 128 Mbyte không gian swap, thì se˜ có 384 Mbyte boˆ

˙nho’ a’ o.

• De’ làm vie˙c vo’i Linux can ít nhat 16 Mbyte bo

˙nho’ a’ o, vì theneu ba

˙n do

˙c chı’ có 4

Mbyte RAM, thì can phân vùng swap không nho’ ho’n 12 Mbyte.

• Trên Linux kích thu’o’c mo˙t phân vùng swap không the’ vu’o

˙’t quá 128 Mbyte. Nghı˜a là

phân vùng swap có the’ có kích thu’o’c lo’n bao nhiêu tùy thích nhu’ng Linux không the’

su’’ du˙ng ho’n 128 Mbyte. Neˆu ba

˙n do

˙c muon có bo

˙nho’ a’ o lo’n ho’n, thì can ta

˙o hai phân

vùng swap hoa˘˙c su’’ du

˙ng ta

˙p tin swap.

• Khi tính kích thu’o’c cu’ a không gian swapping, caˆn nho’ rang kích thu’o’c quá lo’n có the’

là vô ích. Trên máy tính vo’i 16 Mbyte RAM khi cài da˙t Linux vo’i cau hình chua’n và

các chu’o’ng trình u’ng du˙ng chua’n thì 48 Mbyte không gian swapping là du’ . Còn ne´u

cài da˙t Linux vo’i cau hình nho’ nhat, thì không caˆn den không gian swap. Taˆt nhiên,

kích thu’o’c chính xác cu’ a không gian swap phu˙

thuo˙c lo’n vào chu’o’ng trình se˜ du’o

˙’c cài

da˙t.

Nói chung, chı’ nên suy nghı˜ ve van de dung lu’o˙’ng cu’ a phân vùng swap khi có moˆ

˙t dıa

nho’ và ít bo˙

nho’ RAM. Trong tru’o’ng ho˙’p ngu’o

˙’c la

˙i hãy phân chia de’ to’ng sodung lu’o

˙’ng cu’ a

bo˙

nho’ a’ o (gom RAM và phân vùng swap) không nho’ ho’n 128 Mbyte. Còn neˆu nhu’ ba˙n do

˙c

có 128 Mbyte RAM hay nhieˆu ho’n, thì phân vùng này có the’ không can thiet.Tat ca’ các phaˆn còn la

˙i cu’ a Linux và các chu’o’ng trình hotro

˙’ theo nguyên ta˘c có the’ da

˙t

vào mo˙t phân vùng. Tuy nhiên, vieˆ

˙c da

˙t he

˙thong ta

˙p tin Linux lên vài phân vùng riêng re˜ là

có ý nghı˜a. Ví du˙, có nhà chuyên gia khuyên nên dành cho heˆ

˙thong ta

˙p tin Linux ba phân

vùng (neu tính ca’ swap thì thành 4). Phân vùng thu’ nhat (theo ý kien cá nhân tác gia’ , 1 Gbytelà du’ ) sechu’a he

˙thong ta

˙p tin goc (/ ). Phân vùng thu’ hai dành cho thu’ mu

˙c /home . Còn

phân vùng thu’ ba du’o˙’c gan vào thu’ mu

˙c /usr . Vie

˙c phân chia nhu’ va

˙y du

˙’a trên nhu’ng lý le

sau. Dù HDH Linux có o’n di˙nh và dáng tin ca

˙y den dâu, thì thı’nh thoa’ ng cung can cài da

˙t la

˙i.

Ví du˙, ba

˙n do

˙c muon ca

˙p nha

˙t phiên ba’ n mo’i cu’ a ba’ n phân phoˆi, hoa

˙c vì ít kinh nghie

˙m su’’

16 Cài da˙t HDH Linux trên cùng máy tính vo’i Windows

du˙ng nên làm ho’ ng ta

˙p tin he

˙thong quan tro

˙ng, hoa

˙c do’n gia’ n là muon cài da

˙t mo

˙t ba’ n phân

phoi khác. Neu nhu’ tat ca’ du’o˙’c cài da

˙t vào mo

˙t phân vùng, thì khi cài da

˙t la

˙i nhu’ng du’ lie

˙u

dã làm ra và ghi nho’ trong thu’ mu˙c cá nhân se˜ bi

˙mat (neu không có ba’ n sao chép). Ngoài ra,

sebi˙

mat ca’ nhu’ng chu’o’ng trình dã cài tu’ mã nguoˆn, hay cài ba˘ng phu’o’ng pháp khác. Phaˆnlo’n nhu’ng gói chu’o’ng trình này du’o

˙’c cài vào thu’ mu

˙c /usr . Neu dành cho thu’ mu

˙c này mo

˙t

phân vùng riêng và khi cài da˙t không di

˙nh da

˙ng la

˙i chúng, thì nhu’ng chu’o’ng trình nói trên

sedu’o˙’c giu’ la

˙i và có the’ selàm vie

˙c (rat có the’ can vài cau hình nho’ ) sau khi cài da

˙t la

˙i he

˙thong. Trong tiêu chua’n ve he˙

thong ta˙p tin cu’ a Linux FHS (cu

˙the’ xin xem o’’ chu’o’ng ??)

cung có lo’i khuyên vevie˙c da

˙t thu’ mu

˙c /usr lên mo

˙t phân vùng riêng.

Theo tác gia’ thay, nhu’ng ý kien nói trên dã du’ de’ ba˙n do

˙c tu

˙’ tìm ra phu’o’ng án phân chia

o’ dıa cu’ a mình, trong tru’o’ng ho˙’p chı’ có mo

˙t o’ dıa nho’ . Bây gio’ chúng ta xem xét tru’o’ng ho

˙’p

dıa vo’i so cylinder lo’n ho’n 1024.Tu’ nhu’ng gì dã nói den o’’ phan tru’o’c (ha

˙n chedung lu’o

˙’ng dıa cu’ng), can da

˙t chu’o’ng trình

kho’’i do˙ng trong pha

˙m vi 1024 cylinder dau tiên. Nhân tieˆ

˙n, NT Loader không nhaˆt thiet pha’ i

da˙t vào phân vùng NTFS, cu˜ng nhu’ không nhaˆt thiet pha’ i da

˙t vào phân vùng chu’a các taˆ

˙p tin

khác cu’ a HDH. Nhu’ dã nói o’’ trên, doi vo’i Linux có the’ da˙t thu’ mu

˙c goc cùng vo’i thu’ mu

˙c

con/boot vào các cylinder "thaˆp" (trong vòng 1024 dau tiên), còn các thu’ mu˙c khác – o’’ cho

nào tùy thích.Nhu’ va

˙y trong tru’o’ng ho

˙’p này, nhu’ng de nghi

˙cu’ a tác gia’ cho ra ba’ ng to’ng ket sau:

• phan kho’’i do˙ng cu’ a tat ca’ các he

˙thong Microsoft da

˙t vào phân vùng chính dau tiên cu’ a

dıa, vo’i di˙nh da

˙ng FAT16 (DOS);

• phân vùng chính tieˆp theo dành cho thu’ mu˙c goc (/ ), kích thu’o’c khoa’ ng 1 Gbyte;

• phân vùng chính thu’ ba dành cho swap cu’ a Linux (lo’i khuyên vekích thu’o’c cu’ a phânvùng này xem o’’ trên);

• phan còn la˙i cu’ a dıa da

˙t thành phân vùng mo’’ ro

˙ng;

• trong phân vùng mo’’ ro˙ng ta

˙o các phân vùng lôgíc cho moˆi HDH secài da

˙t: Windows

98, Windows NT/2000/XP, và dong tho’i cho các heˆ˙

thong ta˙p tin /home và /usr cu’ a

HDH Linux (trong /home seda˙t các ta

˙p tin riêng cu’ a ngu’o’i dùng, còn trong/usr –

chu’o’ng trình se˜ cài da˙t).

Tat nhiên, neˆu nhu’ ba˙n do

˙c chı’ có Windows 95 vo’i FAT16, thì có the’ de’ Windows trên

phân vùng dau tiên. Neu nhu’ trên máy dã cài da˙t Windows NT hay có FAT32, thì moˆ

˙t phân

vùng FAT16 cu˜ng không thu’a. Thu’ nhat, ke’ ca’ trong tru’o’ng ho˙’p he

˙thong có van de, ba

˙n do

˙c

có the’ kho’’i do˙ng tu’ dıa mem DOS (ta

˙m tho’i khi chu’a làm quen vo’i Linux mo

˙t cách "tu’o’ng

ta˙n") và thay du’o

˙’c rang dıa cu’ng làm vie

˙c bình thu’o’ng. Thu’ hai, he

˙thong ta

˙p tin FAT16 du’o

˙’c

ho tro˙’ trên mo

˙i HDH, trong dó có Linux, vì the´ phân vùng này có the’ phu

˙c vu

˙cho vie

˙c trao

do’i ta˙p tin giu’a các heˆ

˙thong. Nhu’ng không nên de’ phân vùng này lo’n, vì FAT16 su’’ du

˙ng

không gian dıa rat không ho˙’p lý. Chính vì va

˙y hãy dành cho phân vùng này khoa’ ng 256 hoa˘

˙c

512 Mbyte.Nhu’ng lo’i khuyên này du’a ra vo’i gia’ thiet rang, ba

˙n do

˙c chı’ có mo

˙t dıa cu’ng. Neu nhu’

ba˙n do

˙c có 2, thì vaˆn su’’ du

˙ng du’o

˙’c nhu’ng lo’i khuyên này, chı’ có dieu phân vùng swap toˆt

ho’n da˙t trên dıa khác vo’i dıa dành cho Linux. Ngu’o’i ta nói rang nhu’ va

˙y tang toc do

˙làm vie

˙c

trong Linux (cung dehie’u vì dau do˙c ít pha’ i cha

˙y ho’n).

2.6 Windows NT và Linux: kho’’i do˙ng qua OS Loader cu’ a NT 17

2.5.2 Chu’o’ng trình d e’ phân chia o’ dıa

Sau khi hoàn thành keˆt hoa˙ch chia o’ dıa, can lu

˙’a cho

˙n công cu

˙de’ du’a kehoa

˙ch này thành

hie˙n thu

˙’c. Chu’o’ng trình phân chia dıa du’o

˙’c biet den nhieu nhat là fdisk ; trên mo

˙i he

˙dieu

hành deu có phiên ba’ n riêng cu’ a chu’o’ng trình này. Và không caˆn gì ho’n ngoài chu’o’ng trìnhnày, ne´u nhu’ phân chia o’ dıa trang, không chu’a bat ký du’ lie

˙u nào. Nhu’ng chúng ta dang xem

xét tru’o’ng ho˙’p dã có HDH nào dó trên dıa và can phân chia o’ dıa mà không làm maˆt thông

tin. fdisk không thích ho˙’p cho nhu’ng mu

˙c dích nhu’ va

˙y.

Trong thành phaˆn các ba’ n phân phoˆi Red Hat và BlackCat (raˆt có the’ trong các ba’ nphân phoˆi khác) có chu’o’ng trình fips , phu

˙c vu

˙cho phân chia o’ dıa. Tuy nhiên, theo ý

kien cu’ a ngu’o’i dùng thì không nên su’’ du˙ng chu’o’ng trình này. Vì theˆ lo’i khuyên cu’ a tác

gia’ vo’i ba˙n do

˙c, nhu’ng ngu’o’i dùng Linux mo’i – neu nhu’ muon phân chia la

˙i o’ dıa mà

không làm maˆt thông tin, thì hãy tìm chu’o’ng trình Partition Magic cu’ a công ty Power Quest(http://www.powerquest.com) và su’’ du

˙ng chu’o’ng trình này.

Thu’ nhat, chu’o’ng trình này cho phép phân chia la˙i o’ dıa mà không làm maˆt thông tin (tu’c

là, tat ca’ nhu’ng cài da˙t và cau hình tru’o’c dó sedu’o

˙’c ghi la

˙i). Khi này, không chı’ ta

˙o du’o

˙’c

phân vùng mo’i tu’ cho trong trên dıa, mà còn có the’ di chuye’n các phân vùng dã có theo ýmuon.

Thu’ hai, chu’o’ng trình này (thaˆ˙m chí trong phiên ba’ n dành cho DOS) cung caˆp mo

˙t giao

die˙n do ho

˙a desu’’ du

˙ng có hotro

˙’ chuo

˙t, và mo

˙i thao tác cu˜ng nhu’ thay do’i deu thay rõ ràng.

Dieu này rat quan tro˙ng vo’i ngu’o’i dùng mo’i.

Khi ta˙o phân vùng caˆn de’ ý không cho ranh gio’i giu’a các phân vùng ca˘t lan nhau.

Tác gia’ cho rang, nhu’ng thông tin dã du’a du’ de’ ba˙n do

˙c la

˙p kehoa

˙ch và thu

˙’c hie

˙n vie

˙c

phân chia o’ dıa thành các phân vùng. Vì theˆ tiep theo chúng ta se˜ xem xét các phu’o’ng án càida˙t hai HDH trên mo

˙t máy tính.

2.6 Windows NT và Linux: kho’’i do˙ng qua OS Loader cu’ a NT

Trong phan này, khi nói veˆ Windows NT xin ngaˆm hie’u ca’ Windows 2000 và NT, vì "quanhe˙" cu’ a chúng doi vo’i vie

˙c cài da

˙t Linux hoàn toàn gioˆng nhau. Chúng ta gia’ thiet là Windows

NT dã du’o˙’c cài vào phân vùng/dev/hda2 (neu nhu’ ba

˙n do

˙c nho’, /dev/hda1 sedành cho

phân vùng FAT16). Neˆu HDH Windows NT dã du’o˙’c cài da

˙t, nghıa là trình kho’’i do

˙ng OS

Loader cu˜ng dã du’o˙’c cài da

˙t. Và nhu’ thecó the’ su’’ du

˙ng chu’o’ng trình này de’ kho’’i do

˙ng Linux.

Tác gia’ hy vo˙ng rang ba

˙n do

˙c dã sao lu’u nhu’ng thông tin có giá tri

˙cu’ a mình. Các bu’o’c cài

da˙t có the’ mô ta’ nhu’ sau:

1. Neu nhu’ ba˙n do

˙c chu’a cài da

˙t Linux bao gio’, thì tru’o’c khi bat dau can chua’n bi

˙dıa

mem kho’’i do˙ng và phu

˙c hoi Windows NT. De’ ta

˙o dıa mem kho’’i do

˙ng chı’ can di

˙nh

da˙ng la

˙i dıa mem, roi sao chép lên dó các ta

˙p tin ntldr, ntdetect.com và boot.ini tu’ thu’

mu˙c goc cu’ a o’ dıa kho’’i do

˙ng NT. Chu’o’ng trình ta

˙o dıa phu

˙c hoi Windows 2000/XP có

the’ cha˙y tu’ trình do’n he

˙thong (le

˙nh Backup trong Start/Program/Accessories).

2. Dùng chu’o’ng trình Partition Magic de’ lay mo˙t phan dıa trong và tu’ dó ta

˙o ra phân vùng

vo’i da˙ng ext2(3) (heˆ

˙thong ta

˙p tin Linux) và phân vùng swap. Cách tính kích thu’o’c cu’ a

chúng dã nói o’’ trên.

3. Cài da˙t Linux theo chı’ dan cu’ a ba’ n phân phoˆi. Trong khi cài da

˙t can chú ý den nhu’ng

die’m sau:

18 Cài da˙t HDH Linux trên cùng máy tính vo’i Windows

• thu’ nhat, trong quá trình cài da˙t nhat di

˙nh pha’ i ta

˙o ra các dıa mem kho’’i do

˙ng

Linux. Tu’c là can tra’ lo’i "Yes, make a BOOT DISK" (hay tu’o’ng tu˙’ the, tùy thuo

˙c

vào ba’ n phân phoˆi) khi du’o˙’c ho’ i có ta

˙o dıa mem kho’’i do

˙ng hay không. D¯ ıa mem

này sedu’o˙’c dùng den o’’ sau. Ngoài ra, có the’ su’’ du

˙ng dıa mem này de’ kho’’i do

˙ng

Linux. Dây cung là mo˙t phu’o’ng án kho’’i do

˙ng, và ho’n nu’a khác vo’i dıa mem kho’’i

do˙ng DOS, sau khi kho’’i do

˙ng he

˙thong không còn yêu caˆu dıa mem nu’a, có the’

bo’ nó ra kho’ i o’, su’’ du˙ng o’ de’ do

˙c các dıa mem khác. Tuy nhiên cách kho’’i do

˙ng

này cung có dieu tie˙n, vì thekhông nên su’’ du

˙ng thu’o’ng xuyên. Chı’ su’’ du

˙ng trong

tru’o’ng ho˙’p "bat dac dı". Dıa mem này còn caˆn thiet cho cau hình de’ kho’’i do

˙ng

nhieu HDH.

• thu’ hai, khi cài da˙t Linux can cài LILO vào sector dau tiên cu’ a phân vùng dành

cho thu’ mu˙c goc (/) cu’ a Linux, chu’ không pha’ i vào sector kho’’i do

˙ng chính cu’ a

dıa (MBR). Chúng ta gia’ thiet Linux du’o˙’c cài vào phân vùng/dev/hda3 . Nhu’

va˙y LILO se du’o

˙’c cài vào sector dau tiên cu’ a /dev/hda3

Theo nguyên ta˘c, neu nhu’ ba˙n do

˙c cài LILO vào MBR, thì không pha’ i mo

˙i thu’ dã ho’ ng

het. Ket qua’ cuoi cùng (kho’’i do˙ng qua NT Loader) vaˆn có the’ da

˙t du’o

˙’c nhu’ng can bo’

ra mo˙t chút công su’c. Van deo’’ cho, di

˙nh da

˙ng MBR ta

˙o bo’’i LILO và Windows (DOS)

khác nhau. Vì theˆ neu ba˙n do

˙c cài LILO vào MBR, thì caˆu phu

˙c hoi la

˙i MBR cu’ a

Windows. Tác gia’ cung senói cách phu˙c hoi, nhu’ng tot ho’n het là ba

˙n do

˙c cài LILO

ngay la˙p tu’c vào sector dau tiên cu’ a phân vùng dã cài Linux.

4. Sau khi cài da˙t xong, kho’’i do

˙ng Linux bang dıa mem (neu nhu’ ba

˙n do

˙c cài LILO vào

phân vùng cu’ a Linux và không do˙ng gì den MBR, thì dây là kha’ nang duy nhaˆt).

5. Sao chép sector kho’’i do˙ng cu’ a Linux vào moˆ

˙t ta

˙p tin; ta

˙p tin này se˜ can de’ trình kho’’i

do˙ng Windows NT/2000 có the’ kho’’i do

˙ng Linux. Vie

˙c sao chép thu

˙’c hie

˙n nhu’ sau: dau

tiên gan mo˙t dıa mem trang (mo’i mua thì càng toˆt),

kênh giao tác[root]# mount -t vfat /dev/fd0 /mnt/floppy

chuye’n vào thu’ mu˙c /mnt/floppy

kênh giao tác[root]# cd /mnt/floppy

và thu˙’c hie

˙n câu le

˙nh

kênh giao tác[root]# dd if=/dev/hda3 of=/mnt/floppy/bootsect.lnx bs=512 count=1

de’ ghi no˙i dung sector kho’’i do

˙ng cu’ a dıa/dev/hda3 vào ta

˙p tin /mnt/floppy/bootsect.lnx .

1

6. Tiep theo caˆn kho’’i do˙ng la

˙i de’ vào Windows NT, ba˘ng câu le

˙nh:

1Ghi chú: ne´u dıa C: (/dev/hda1) có di˙nh da

˙ng FAT, thì có the’ ta

˙o ta

˙p tin bootsect.lnx trong thu’ mu

˙c goc cu’ a

dıa C:. Tác gia’ không biet (chu’a thu’’) có the’ kho’’i do˙ng không caˆn dıa mem không, neˆu phân vùng chính dau

tiên có di˙nh da

˙ng NTFS. Tuy nhiên o’’ dây cung không có vaˆn de gì, chı’ can sao chép sector kho’’i do

˙ng qua dıa

mem nhu’ dang trình bày. Ta˙m tho’i nhân Linux còn chu’a hotro

˙’ tot vie

˙c ghi lên phân vùng NTFS.

2.6 Windows NT và Linux: kho’’i do˙ng qua OS Loader cu’ a NT 19

kênh giao tác[root]# shutdown -h now

Vì MBR chu’a có gì thay do’i, nên Windows NT se˜ kho’’i do˙ng. Trong NT caˆn sao chép

ta˙p tin bootsect.lnx vào thu’ mu

˙c goc cu’ a dıa C:, hay chính xác ho’n là vào thu’ mu

˙c goc

cu’ a phân vùng mà tu’ dó kho’’i do˙ng Windows NT. Dây có the’ là phân vùng FAT16 hay

phân vùng NTFS. D¯ a˙c die’m de’ nha

˙n ra phân vùng này là hai taˆ

˙p tin ntldr và boot.init

chu’a trong dó (nhu’ng ta˙p tin này có the’ a’n!). Ta

˙p tin bootsect.lnx có the’ da

˙t thuo

˙c tính

chı’ do˙c (read-only).

7. Sau dó tìm ta˙p tin boot.ini và thêm vào dòng sau:

C:\bootsect.lnx="LINUX"

(tat nhiên, trong daˆu ngoa˙c kép ba

˙n do

˙c có the’ da

˙t tên bat ky.)

8. Vie˙c còn la

˙i là kho’’i do

˙ng la

˙i máy tính mo

˙t lan nu’a, và trong trình do’n cho

˙n he

˙dieu

hành se˜ có LINUX. Neu cho˙n LINUX, thì LILO se du’o

˙’c cha

˙y và sau dó nó (LILO) se

na˙p Linux.

Còn bây gio’ chúng ta se˜ xem xét tru’o’ng ho˙’p ba

˙n do

˙c (do vô tình hay coˆ ý) cài da

˙t LILO

vào ba’ n ghi kho’’i do˙ng chính cu’ a dıa (Master Boot Record, MBR). Trong tru’o’ng ho

˙’p này ba’ n

ghi kho’’i do˙ng Windows NT (hay 2000) se˜ bi

˙xóa, và vie

˙c kho’’i do

˙ng Windows NT (bu’o’c thu’

6 o’’ trên) là không the’. Neu nhu’ ba˙n do

˙c van còn muoˆn su’’ du

˙ng trình kho’’i do

˙ng OS Loader

cu’ a NT, chu’ không muoˆn dùng LILO, thì nhu’ng bu’o’c trên có thay do’i mo˙t chút: thay cho

bu’o’c thu’ 6 can làm các thao tác sau.

1. Kho’’i do˙ng Windows NT tu’ dıa mem kho’’i do

˙ng (dã ta

˙o tru’o’c khi cài da

˙t Linux, neu

không có thì ba˙n do

˙c can tìm mo

˙t máy khác dang cha

˙y Windows NT roi ta

˙o). Trong

trình do’n (thu˙’c do’n) cu’ a trình kho’’i do

˙ng can cho

˙n le

˙nh Recover, roˆ i cho

˙n che do

˙Command mode. Sau dó dang nha˙p vào tài khoa’ n nhà qua’ n tri

˙(administrator).

2. Phu˙c hoi la

˙i ba’ n ghi kho’’i do

˙ng chính cu’ a dıa. Su’’ du

˙ng câu le

˙nh fdisk /mbr. Tác gia’

dùng le˙nh này thành công, ma˘

˙c dù trong moˆ

˙t sobài báo nói cách phu

˙c hoi MBR nhu’

va˙y không pha’ i lúc nào cung làm vie

˙c. Trong Windows 2000 có các leˆ

˙nh chuyên dùng

fixboot và fixmbr (cha˙y tu’ console phu

˙c hoi he

˙thong). Cha

˙y hai le

˙nh này theo thu’ tu

˙’

dã chı’ ra. Sau dó Windows 2000 se˜ kho’’i do˙ng bình thu’o’ng.

3. Kho’’i do˙ng la

˙i máy tính tu’ dıa mem kho’’i do

˙ng Linux và dang nha

˙p vào he

˙thong vo’i

quyen ngu’o’i dùng root.

4. Nha˙p le

˙nhcd /etc và mo’’ ta

˙p tin lilo.conf . O’’ dau ta

˙p tin này có liên keˆt den phân

vùng kho’’i do˙ng theo ma˘

˙c di

˙nh, ví du

˙, /dev/hda .

5. Dùng bat ky trình soa˙n tha’ o nào, ví du

˙, CoolEdit cu’ a Midnight Commander, de’ thay

the giá tri˙

này thành phân vùng dã cài Linux lên (chính xác ho’n là thành phân vùngdu’o

˙’c gan nhu’ goc (/) cu’ a Linux). Neu Linux du’o

˙’c cài vào phân vùng/dev/hda3 , thì

can ghi cái dó, tu’c là thay theˆ /dev/hda thành/dev/hda3 . Neu nhu’ ba˙n do

˙c không

nho’ dã cài Linux vào dâu, thì hãy cha˙y câu le

˙nh mount và tìm ket qua’ tu’o’ng tu

˙’ nhu’

sau2:2có nghı˜a là tìm phân vùng dã gan vào thu’ mu

˙c goc /, trong ví du

˙này là /dev/hda3

20 Cài da˙t HDH Linux trên cùng máy tính vo’i Windows

kênh giao tác/dev/hda3 on / type reiserfs (rw)

6. Cha˙y le

˙nh /sbin/lilo de’ ghi trình kho’’i do

˙ng vào phân vùng /dev/hda3 (caˆn cha

˙y

le˙nh lilo không có tham soˆ). Secó ca’ nh báo veˆ vie

˙c phân vùng không pha’ i là dau

tiên trên dıa. Dây chính là dieu chúng ta caˆn, ba’ n ghi kho’’i do˙ng cu’ a Windows du’o

˙’c giu’

nguyên ve˙n.

7. Thu˙’c hie

˙n các bu’o’c 6-8 nhu’ o’’ trên.

Dedàng doán ra ra˘ng, "quy trình" phu’c ta˙p vo’i hai lan kho’’i do

˙ng la

˙i chı’ de’ chuye’n sector

kho’’i do˙ng Linux tu’ MBR vào sector dau tiên cu’ a phân vùng dành cho Linux, và phu

˙c hoi

MBR cu’ a Windows.Quá trình cài da

˙t Linux ket thúc o’’ dây. Ba

˙n do

˙c dã có the’ cho

˙n HDH sekho’’i do

˙ng và dieu

khie’n máy tính cu’ a mình.

2.7 Su’’ du˙ng trình kho’’i do

˙ng LILO

2.7.1 Cài da˙t và cau hình LILO

Nhu’ dã nói trong phaˆn lu˙’a cho

˙n chu’o’ng trình kho’’i do

˙ng, neu trên máy dã cài Windows 98

vo’i he˙

thong ta˙p tin FAT16, thì lu

˙’a cho

˙n tot ho’n cho trình kho’’i do

˙ng là chu’o’ng trình có trong

thành phaˆn cu’ a mo˙i ba’ n phân phoˆi HDH Linux – LILO (LI nuxLOader).

Giong nhu’ tru’o’ng ho˙’p Windows NT, chúng ta se˜ du’a ra các bu’o’c can thu

˙’c hie

˙n de’ có the’

kho’’i do˙ng nhieu HDH.

1. Tru’o’c khi cài da˙t Linux hãy chua’n bi

˙dıa mem kho’’i do

˙ng Windows.

2. Dùng chu’o’ng trình Partition Magic de’ lay phan không gian dıa còn tro´ ng và trên dóta˙o ra mo

˙t phân vùng ext2(3) (heˆ

˙thong ta

˙p tin Linux) và mo

˙t phân vùng swap. Cách

chia o’ dıa dã nói o’’ trên. Neu dung lu’o˙’ng o’ dıa cu’ng vu’o

˙’t quá 8,4 Gbyte thì hãy do

˙c ky

các phaˆn 2.3và2.5.

3. Cài da˙t Linux theo chı’ dan di kèm vo’i ba’ n phân phoˆi. Can nho’ rang, neu ba

˙n muon su’’

du˙ng trình kho’’i do

˙ng LILO, thì trong quá trình cài da˘

˙t Linux can cho

˙n phu’o’ng án cài

LILO vào ba’ n ghi kho’’i do˙ng chính (Master Boot Record). Ta

˙o các dıa mem kho’’i do

˙ng

theo nguyên ta˘c là không ba˘t buo˙c, nhu’ng tác gia’ khuyên ba

˙n do

˙c nên làm.3

4. Bu’o’c tiep theo caˆn cau hình LILO de’ có the’ kho’’i do˙ng các HDH theo lu

˙’a cho

˙n. LILO

du’o˙’c cau hình bang ta

˙p tin /etc/lilo.conf và câu le

˙nh /sbin/lilo . Câu le

˙nh này

dùng de’ cài da˙t (hay cài da

˙t la

˙i) LILO.

Chúng ta xem xét moˆ˙t ví du

˙nho’ cu’ a ta

˙p tin cau hình LILO. Trong ví du

˙này chúng

ta secoi nhu’ thiet bi˙

/dev/hda1 là phân vùng vo’i DOS/Windows, còn phân vùng

3Ghi chú. Trình kho’’i do˙ng LILO không bat buo

˙c pha’ i cài da

˙t vào ba’ n ghi kho’’i do

˙ng chính cu’ a dıa, LILO

có the’ nam o’’ ba’ n ghi kho’’i do˙ng cu’ a phân vùng chính du’o

˙’c kích hoa

˙t và chu’a thu’ mu

˙c goc cu’ a Linux hoa

˙c tha

˙m

chí trên phân vùng lôgíc trong phân vùng mo’’ ro˙ng. Trong tru’o’ng ho

˙’p dó MBR can pha’ i có kha’ nang na

˙p LILO,

ví du˙

khi MBR là trình kho’’i do˙ng cu’ a MS-DOS hay Windows. Tuy nhiên tác gia’ chu’a nhìn thaˆy su

˙’ can thiet

cu’ a u’ng du˙ng này (neˆu dã cho

˙n LILO làm trình kho’’i do

˙ng chính thì hãy su’’ du

˙ng cho "tro

˙n bo

˙"), vì thechúng ta

sekhông xem xét den.

2.7 Su’’ du˙ng trình kho’’i do

˙ng LILO 21

/dev/hda2 chu’a Linux. Trong tru’o’ng ho˙’p dó /etc/lilo.conf có da

˙ng gan nhu’

sau:kênh giao tác

boot = /dev/hda2compactdelay = 50# message = /boot/bootmesg.txtroot = currentimage = /boot/vmlinuz-2.4.22label = linuxread-onlyother = /dev/hda1table = /dev/hdalabel = dos

Vài lo’i gia’ i thích cho ví du˙: Dòngboot cho biet thiet bi

˙kho’’i do

˙ng.

Dòngcompact ba˙t chedo

˙nén ta

˙p tin map – taˆ

˙p tin chu’a da

˙c tính cu’ a nhân du’o

˙’c kho’’i

do˙ng; tính nang (nén) này ta˘ng toc do

˙cu’ a kho’’i do

˙ng dau.

Câu le˙nh message dùng de’ du’a ra thông báo theo ý muoˆn khi kho’’i do

˙ng.

Bat dau tu’ dòngimage là các phaˆn nho’ cu’ a ta˙p tin cau hình, moi phan tu’o’ng u’ng vo’i

mo˙t he

˙dieu hành se˜ kho’’i do

˙ng theo lu

˙’a cho

˙n cu’ a ngu’o’i dùng. Trong moˆi phan nhu’ va

˙y

có mo˙t dòng label . Trên dòng này ghi tên caˆn nha

˙p vào da´u nhac LILO hay tên se˜

hie’n thi˙

trong trình do’n cu’ a LILO de’ có the’ cho˙n HDH muon kho’’i do

˙ng. Neu nhu’ tên

không du’o˙’c nha

˙p sau khoa’ ng tho’i gian chı’ trên dòngdelay (tính theo phaˆn mu’o’i giây

– can nhân vo’i 0,1 giây), thì se˜ kho’’i do˙ng HDH theo ma

˙c di

˙nh. Trong ví du

˙này, se˜

kho’’i do˙ng Linux theo ma˘

˙c di

˙nh, vì phan cau hình tu’o’ng u’ng vo’i Linux nam dau tiên

trong ta˙p tin. Có the’ chı’ ra he

˙dieu hành du’o

˙’c kho’’i do

˙ng theo ma˘

˙c di

˙nh khi thêm moˆ

˙t

dòng có da˙ng default=dos , tu’c là su’’ du

˙ng tên dã da

˙t trên dònglabel .

Dòngtable=<device> cho biet tên thiet bi˙chu’a ba’ ng phân chia dıa. LILO sekhông

du’a thông tin veˆ phân chia dıa cho heˆ˙

dieu hành du’o˙’c kho’’i do

˙ng neu bien này không

du’o˙’c du’a ra. (Mo

˙t sohe

˙dieu hành có công cu

˙khác de’ xác di

˙nh là dã du’o

˙’c kho’’i do

˙ng

tu’ phân vùng nào.) D¯ u’ng quên ra˘ng, can thu˙’c hie

˙n câu le

˙nh /sbin/lilo , sau khi thay

do’i chı’ dan den ba’ ng phân chia dıa, tu’c là thay do’i bien table . Neu da˙t dòng (go

˙i

là phan nho’ thì tot ho’n) other = /dev/hda1 trong ta˙p tin /etc/lilo.conf , thì

trong thu’ mu˙c goc cu’ a dıa /dev/hda1 (dıa C: trong heˆ

˙thong thua

˙t ngu’ Microsoft) can

có trình kho’’i do˙ng phu

˙(không pha’ i là chính). Trên moˆ

˙t máy cu’ a tác gia’ o’’ dó nam trình

kho’’i do˙ng NT Loader (vì Windows NT du’o

˙’c cài da

˙t tru’o’c Linux), và LILO kho’’i do

˙ng

thành công Windows NT. Chı’ can da˙t tho’i gian cho’ kho’’i do

˙ng trong ta

˙p tin boot.ini

bang không, de’ không tha´ y trình do’n kho’’i do˙ng cu’ a NT Loader. Tuy nhiên, neˆu vì mo

˙t

lý do nào dó ba˙n muon thay trình do’n này thì giá tri

˙timeout trong taˆ

˙p tin boot.ini can

da˙t khác không (tho’i gian cho’ du’o

˙’c tính theo giây). D¯ ieu này có the’ can thiet khi muon

kho’’i do˙ng ca’ Windows 98 tu’ trình do’n cu’ a NT Loader (trong tru’o’ng ho

˙’p này se˜ có 3

HDH: Linux, Windows NT và Windows 98, trong trình do’n cu’ a LILO neu cho˙n dos

thì sehie˙n ra trình do’n cu’ a NT Loader roˆ i tu’ dó cho

˙n mo

˙t trong hai HDH Windows de’

kho’’i do˙ng).

Neu ba˙n do

˙c muon kho’’i do

˙ng Windows tru

˙’c tiep tu’ LILO, thì hãy thêm phaˆn nho’ sau

vào /etc/lilo.conf :

22 Cài da˙t HDH Linux trên cùng máy tính vo’i Windows

kênh giao tácother = /boot/bootsect.doslabel = win

trong dó bootsect.dos laˆy tu’ thu’ mu˙c goc cu’ a o’ dıa chu’a NT Loader.

5. Sau khi su’’a xong ta˙p tin /etc/lilo.conf theo ý muoˆn, can cha

˙y câu le

˙nh/sbin/lilo

de’ nhu’ng thay do’i có hie˙u lu

˙’c. Câu le

˙nh này (trong tài lieˆ

˙u hu’o’ng dan go

˙i là map-

installer) cài da˙t trình kho’’i do

˙ng phu

˙, mà se˜ du’o

˙’c kích hoa

˙t trong lan kho’’i do

˙ng tiep

theo. Tru’o’c khi cha˙y /sbin/lilo de’ thay do’i bu’o’c kho’’i do

˙ng, hãy thu

˙’c hie

˙n câu le

˙nh

này vo’i tham so´ -t . Khi có tham soˆ này sethu˙’c hie

˙n tat ca’ các thu’ tu

˙c cài da

˙t trình

kho’’i do˙ng, tru’ vie

˙c thay do’i ta

˙p tin map, ba’ n ghi sector kho’’i do

˙ng, và ba’ ng phân chia o’

dıa, tu’c là chı’ cha˙y thu’’ cau hình mo’i. Neu cho thêm tùy cho

˙n -v , thì ba

˙n do

˙c sedu’o

˙’c

biet thêm thông tin chi tieˆt ve nhu’ng gì le˙nh /sbin/lilo sethu

˙’c hie

˙n.

Khi /sbin/lilo ghi dè no˙i dung mo’i lên sector kho’’i do

˙ng, thì no

˙i dung cucu’ a

sector này se˜ tu˙’ do

˙ng du’o

˙’c ghi nho’ vào mo

˙t ta

˙p tin. Theo ma˘

˙c di

˙nh dó là ta

˙p tin

/boot/boot.NNNN , trong dó NNNN tu’o’ng u’ng vo’i so cu’ a thiet bi˙, ví du

˙, 0300 –

tu’o’ng u’ng /dev/hda , 0800 –/dev/sda , v.v. . . Neu ta˙p tin này dã có trên dıa, thì nó

không bi˙ghi dè lên. Tuy nhiên có the’ da

˙t mo

˙t tên khác de’ ghi sector kho’’i do

˙ng, không

nhat thiet pha’ i dùng /boot/boot.NNNN .

Ta˙p tin /boot/boot.NNNN có the’ su’’ du

˙ng de’ phu

˙c hoi no

˙i dung cucu’ a sector kho’’i

do˙ng, neu không còn cách phu

˙c hoi nào khác do’n gia’ n ho’n. Câu le

˙nh de’ thu

˙’c hie

˙n có

da˙ng:

kênh giao tác[root:~#] dd if=/boot/boot.0300 of=/dev/hda bs=446 count=1

haykênh giao tác

[root:~#] dd if=/boot/boot.0800 of=/dev/hda bs=446 count=1

(bs=446 vì chı’ phu˙c hoi chu’o’ng trình kho’’i do

˙ng, và không do

˙ng gì den ba’ ng phân chia

dıa).

Cung có the’ phu˙c hoi MBR cu khi can thiet bang câu le

˙nh /sbin/lilo vo’i tùy cho

˙n

-u . Nhu’ng can biet rang, câu leˆ˙nh này chı’ làm vie

˙c dúng vo’i dieu kie

˙n là thu’ mu

˙c LILO

(tu’c là /boot ) không thay do’i ke’ tu’ khi cài da˙t.

MBR cu’ a MS-DOS có the’ du’o˙’c phu

˙c hoi bang cách kho’’i do

˙ng vào DOS tu’ dıa mem

(CD) roi cha˙y câu le

˙nh fdisk /mbr (xem trên). Leˆ

˙nh này chı’ thay do’i mã chu’o’ng trình

kho’’i do˙ng nam trong MBR, mà không thay do’i ba’ ng phân chia dıa.

6. Sau khi cài da˙t la

˙i trình kho’’i do

˙ng can kho’’i do

˙ng la

˙i máy tính và thu’’ các phu’o’ng án

kho’’i do˙ng khác nhau de’ kie’m tra.

De’ ket thúc phan nói veLILO này chúng ta se˜ xem xét vài khó kha˘n có the’ xuat hie˙n khi

su’’ du˙ng LILO, và cách kha˘c phu

˙c (neu có the’).

Khi LILO du’o˙’c na

˙p, nó du’a ra màn hình tu’ "LILO". Khi này moi chu’ cái bie’u thi

˙su˙’ ket

thúc mo˙t hành do

˙ng nào dó hay ket thúc mo

˙t bu’o’c na

˙p LILO. Neu kho’’i do

˙ng bi

˙bi˙

ngu’nggiu’a chu’ng, thì qua soˆ chu’ cái du’a ra có the’ nha

˙n di

˙nh venguyên nhân xuaˆt hie

˙n van de.

2.7 Su’’ du˙ng trình kho’’i do

˙ng LILO 23

• Không chu’ cái nào hieˆ˙n ra – không có phaˆn nào cu’ a LILO du’o

˙’c na

˙p. Hoa

˙c LILO không

du’o˙’c cài da

˙t, hoa

˙c phân vùng chu’a LILO chu’a du’o

˙’c kích hoa

˙t.

• L [mã loi] – trình kho’’i do˙ng chính dã du’o

˙’c na

˙p và dã cha

˙y (tu’c là dã nha

˙n du’o

˙’c quyen

dieu khie’n), nhu’ng nó không the’ na˙p trình kho’’i do

˙ng phu

˙. Mã loi hai ký tu

˙’ cho biet

nguyên nhân cu˙

the’ cu’ a van de (cách gia’ i mã can tìm trong tài lie˙u ky thua

˙t cu’ a LILO).

Thông thu’o’ng thì van de na’ y sinh do o’ dıa xau (có khuye´ t ta˙t) hay không da

˙t dúng cau

trúc hình ho˙c cu’ a dıa. Neu LILO không du’ng la

˙i o’’ dây, mà tie´ p tu

˙c du’a ra mo

˙t chuoi

vô ta˙n các mã loˆ i, thì van de thu’o’ng degia’ i quyet.

• LI – trình kho’’i do˙ng chính dã na

˙p du’o

˙’c trình kho’’i do

˙ng phu

˙, nhu’ng không cha

˙y du’o

˙’c

nó. Có the’ là loi du’a cau trúc hình ho˙c cu’ a dıa, hoa

˙c ta

˙p tin boot/boot.b bi

˙di chuye’n

mà ngu’o’i dùng quên không cha˙y /sbin/lilo .

• LIL — trình kho’’i do˙ng phu

˙dã du’o

˙’c cha

˙y, nhu’ng nó không the’ na

˙p ba’ ng mô ta’ tu’ ta

˙p

tin map. Nguyên nhân thu’o’ng do khuyeˆt ta˙t cu’ a o’ dıa hoa

˙c không du’a dúng cau trúc

hình ho˙c cu’ a dıa.

• LIL? – trình kho’’i do˙ng phu

˙dã du’o

˙’c na

˙p vào di

˙a chı’ không dúng. Thông thu’o’ng do loi

du’a ra ca´u trúc hình ho˙c cu’ a dıa hoa

˙c ta

˙p tin /boot/boot.b bi

˙di chuye’n mà ngu’o’i

dùng quên không cha˙y /sbin/lilo .

• LIL- – ba’ ng mô ta’ trong ta˙p tin map bi

˙phá hu’ y. Thông thu’o’ng do loi du’a ra ca´u trúc

hình ho˙c cu’ a dıa hoa

˙c ta

˙p tin /boot/boot.b bi

˙di chuye’n mà ngu’o’i dùng quên không

cha˙y /sbin/lilo .

• LILO – tat ca’ các phaˆn cu’ a LILO du’o˙’c na

˙p thành công.

2.7.2 Cài da˙t các he

˙dieu hành khác sau Linux

Khi cài da˙t MS-DOS và Windows 95/98, trình kho’’i do

˙ng cu’ a chúng (không phu

˙thuo

˙c vào ý

muon cu’ a ba˙n do

˙c) du’o

˙’c ghi vào Master Boot Record (MBR), và daˆu kích hoa

˙t trong ba’ ng

phân vùng se˜ du’o˙’c chuye’n sang phân vùng MS-DOS (Windows 95/98). Mà trình kho’’i do

˙ng

MS-DOS và Windows 95/98 chı’ "biet" chuye’n quyen dieu khie’n cho sector dau tiên cu’ aphân vùng kích hoa

˙t. Nhu’ the, neu nhu’ ba

˙n do

˙c dau tiên cài da

˙t Linux, và sau dó mo’i cài da

˙t

Windows 95/98 hay MS-DOS, thì Linux se˜ không the’ kho’’i do˙ng. Có the’ phu

˙c hoi la

˙i LILO

bang cách cha˙y le

˙nh /sbin/lilo (neu LILO du’o

˙’c cài vào MBR), hoa˘

˙c kích hoa

˙t phân vùng

chu’a LILO (neu LILO du’o˙’c cài vào phân vùng chính).

Khi có van de sau khi cài da˙t mo

˙t he

˙dieu hành khác sau Linux, thu’o’ng có the’ gia’ i quyet

bang cách kho’’i do˙ng vào Linux ba˘ng dıa mem kho’’i do

˙ng, su’’a la

˙i ta

˙p tin cau hình LILO (thêm

phan nho’ cho HDH mo’i), roi cha˙y /sbin/lilo .

2.7.3 Chuye’n thu’ mu˙c /boot lên phân vùng DOS

Nhu’ng phiên ba’ n nhân Linux mo’i nhat ho tro˙’ kha’ nang da

˙t các ta

˙p tin can thiet trên giai doa

˙n

kho’’i do˙ng vào heˆ

˙thong ta

˙p tin MS-DOS (hay UMSDOS). Vì trong phaˆn lo’n các tru’o’ng ho

˙’p

phân vùng DOS chieˆm các vùng dıa o’’ dau (không có ha˙n checu’ a BIOS), nên cho phép gia’ i

quyet nhieu van decu’ a o’ dıa lo’n, khi mà thu’ mu˙c /boot không the’ nam trên phân vùng dành

cho Linux.

24 Cài da˙t HDH Linux trên cùng máy tính vo’i Windows

De’ thu˙’c hie

˙n phu’o’ng án kho’’i do

˙ng này, caˆn phân vùng DOS o’’ chedo

˙do

˙c/ghi, ta

˙o trong

dó mo˙t thu’ mu

˙c (ví du

˙, /dos/linux ), và chuye’n tat ca’ các ta

˙p tin tu’ thu’ mu

˙c /boot vào

dó; thu’ mu˙c /boot du’o

˙’c chuye’n thành liên keˆt tu’o

˙’ng tru’ng den thu’ mu

˙c /dos/linux ; vi

˙trí

mo’i cu’ a thu’ mu˙c /boot can chı’ ra trong ta

˙p tin /etc/lilo.conf , và cuoi cùng cha

˙y le

˙nh

/sbin/lilo .

2.8 Kho’’i do˙ng Linux tu’ MS-DOS bang loadlin.exe

Không chı’ các ta˙p tin kho’’i do

˙ng và nhân có the’ nam trong phân vùng DOS, mà ca’ tien trình

kho’’i do˙ng Linux nói chung có the’ du’o

˙’c to’ chu’c tu’ DOS. Kha’ nang này thu

˙’c hie

˙n nho’ chu’o’ng

trình da˙c bie

˙t loadlin.exe, do Hans Lermen ([email protected]) viet. Chu’o’ng trình

này thu’o’ng có trên các dıa cu’ a ba’ n phân phoˆi.4

Loadlin.exe cung caˆp cách kho’’i do˙ng Linux tu’ o’ cu’ng an toàn nhaˆt, khi có phân vùng

kích hoa˙t là DOS hay Windows. Phu’o’ng án kho’’i do

˙ng này du’o

˙’c khuyên su’’ du

˙ng cho ngu’o’i

dùng Linux mo’i. Phan lo’n ngu’o’i dùng mo’i (và không chı’ ho˙) không du’ kiên nhan de’ do

˙c tài

lie˙u rat hay nhu’ng rat dài (và la

˙i viet trên tieng Anh nu’a) cu’ a LILO. Vì theho

˙thu’o’ng su’’ du

˙ng

LILO không dúng cách, và keˆt qua’ là không the’ kho’’i do˙ng du’o

˙’c bat ky he

˙dieu hành nào (tác

gia’ cung dã ro’i vào tru’o’ng ho˙’p nhu’ va

˙y). Doi vo’i nhu’ng ngu’o’i dùng mo’i thì sethua

˙n tie

˙n ho’n

khi su’’ du˙ng loadlin.exe de’ kho’’i do

˙ng và bat dau tìm hie’u Linux. Tuy nhiên,"không vào hang

co˙

p sao ba˘t du’o˙’c co

˙p".

Chu’o’ng trình loadlin.exe không yêu caˆu pha’ i cài da˙t, chı’ can da

˙t chu’o’ng trình – ta

˙p tin

loadlin.exe và nhân (a’ nh cu’ a nhân) lên moˆ˙t trong các dıa mà DOS nhaˆ

˙n ra. Có the’ dùng

chu’o’ng trình này de’ kho’’i do˙ng Linux tu’ CD hoa

˙c tu’ o’ dıa trong ma

˙ng mà không caˆn su’’ du

˙ng

dıa mem kho’’i do˙ng. Kha’ nang này bie´ n loadlin.exe thành moˆ

˙t công cu

˙tuye

˙t vo’i de’ kho’’i do

˙ng

Linux khi có van de vo’i LILO.Phiên ba’ n 1.6 cu’ a loadlin.exe làm vieˆ

˙c vo’i mo

˙i cau hình DOS và có raˆt ít ha

˙n che. Phiên

ba’ n này có the’ su’’ du˙ng bo

˙nho’ mo’’ ro

˙ng; có the’ na

˙p các nhân lo’n (các bzImage) và các a’ nh

dıa a’ o (initrd) tru˙’c tiep vào vùng boˆ

˙nho’ nam trên.

Vie˙c su’’ du

˙ng loadlin.exe không có nghı˜a là Linux làm vie

˙c du’o’i DOS, vì chu’o’ng trình

này hotro˙’ "kho’’i do

˙ng lôgíc" cu’ a máy tính, và sau dó DOS du’o

˙’c thay the´ hoàn toàn ba˘ng

Linux. Neu nhu’ ba˙n do

˙c muon quay tro’’ la

˙i DOS, thì pha’ i kho’’i do

˙ng la

˙i máy tính, ví du

˙, bang

câu le˙nh reboot .

Nhu’ va˙y, can làm gì de’ có the’ su’’ du

˙ng chu’o’ng trình loadlin.exe.

• Trên máy tính cu’ a ba˙n (tat nhiên vo’i bo

˙xu’’ lý 386 hoa

˙c cao ho’n) can cài da

˙t DOS hay

WINDOWS 95.

• Can có a’ nh nén cu’ a nhân Linux (zImage, bzImage)5.

• Chu’o’ng trình loadlin.exe. Có the’ tìm thay trên dıa phân phoˆi o’’ da˙ng không nén hay trong

gói LOADLIN16.TGZ. Gói nén này còn chu’a hu’o’ng dan su’’ du˙ng DOC\MANUAL.TXT,

ta˙p tin tham soˆ ví du

˙DOC\TEST.PAR, và hu’o’ng dan cách du’a các tham soˆ DOC\PARAMS.DOC

(du’ng quên ra˘ng chúng là nhu’ng ta˙p tin DOS).

4mo˙t soba’ n phân phoˆi còn có gói cài da

˙t cho chu’o’ng trình này, thông thu’o’ng ghi ta

˙p tin loadlin.exe vào thu’

mu˙c cu’ a ngu’o’i dùng root5Ghi chú. zImage là di

˙nh da

˙ng nhi

˙phân cu˜ cu’ a nhân, bzImage là di

˙nh da

˙ng mo’i ho’n (sophiên ba’ n nhân lo’n

ho’n 1.3.73) có kích thu’o’c lên to’i 1 Mbyte, do dó, nhân khi gia’ i nén có kích thu’o’c lên to’i 2 Mbyte. Tiep theochúng ta se˜ chı’ nói vecác ta

˙p tin zImage, ma˘

˙c dù ba

˙n do

˙c có the’ thay thezImage thành bzImage

2.8 Kho’’i do˙ng Linux tu’ MS-DOS bang loadlin.exe 25

Neu ba˙n cha

˙y loadlin.exe không có tham soˆ

C:\LOADLIN> loadlin

thì senha˙n du’o

˙’c hu’o’ng dan su’’ du

˙ng ngan go

˙n. Thua

˙n tie

˙n ho’n de’ do

˙c hu’o’ng dan này, khi

cha˙y chu’o’ng trình vo’i tham so´ more (giong trong Linux)C:\LOADLIN> loadlin | more

Bây gio’ chúng ta có the’ xem xét các bu’o’c cài da˙t Linux khi su’’ du

˙ng loadlin.exe de’ kho’’i

do˙ng.

1. Chia các phân vùng cho Linux (cách làm xem phaˆn 2.5)

2. Cài da˙t Linux vào phân vùng dã chia. LILO can cài da

˙t vào sector dau tiên cu’ a phân

vùng Linux de’ không ghi dè lên MBR và không bi˙

mat kha’ nang kho’’i do˙ng vào

Windows.

3. Sau khi ke´ t thúc phan cài da˙t hãy kho’’i do

˙ng Linux (neu không có cách nào khác, hãy

su’’ du˙ng dıa mem kho’’i do

˙ng). Gan phân vùng DOS (gia’ thiet là /dev/hda1 , còn phân

vùng Linux là/dev/hda3 ):kênh giao tác

[root]# mount -t vfat /dev/hda1 /mnt/C

Ta˙o thu’ mu

˙c /mnt/C/loadlin và gia’ i nén ta

˙p tin LOADLIN16.TGZ vào dó. Ngoài

ra sao chép tu’ thu’ mu˙c /boot vào thu’ mu

˙c dó ca’ ta

˙p tin chu’a a’ nh cu’ a nhân Linux. Có

the’ tìm ta˙p tin chu’a a’ nh cu’ a nhân caˆn thiet nho’ ta

˙p tin /etc/lilo.conf : tìm trong

ta˙p tin cau hình dòng "image=..." và ba

˙n do

˙c sethay tên can thiet o’’ phía bên pha’ i dau

bang. Ví du˙

tên cu’ a ta˙p tin này là vmlinuz-2.4.22. Sao chép taˆ

˙p tin vmlinuz-2.4.22 tu’

/boot vào /mnt/C/loadlin và do’i tên thành vmlinuz (vieˆ˙c do’i tên là không nhaˆt

thiet, và chı’ có ý nghı˜a thua˙n tie

˙n cho su’’ du

˙ng):

kênh giao tác[root]# cp /boot/vmlinuz-2.4.22 /mnt/C/loadlin/vmlinuz

4. Bây gio’i kho’’i do˙ng la

˙i máy tính vào DOS tru

˙’c tiep (neu ba

˙n do

˙c có Windows 95/98 thì

can nhan phím <F8> khi kho’’i do˙ng de’ hie’n thi

˙trình do’n cho phép cho

˙n DOS), hoa˘

˙c

qua ho˙p thoa

˙i lu

˙’a cho

˙n khi nhan le

˙nh tat máy (shutdown) Windows 95/98.

Sau khi vào DOS hãy chuye’n sang thu’ mu˙c C:\LOADLIN (le

˙nh CD\LOADLIN) và

thu˙’c hie

˙n le

˙nh

C:\LOADLIN> LOADLIN vmlinuz /dev/hda3 ro vga=ask

hoa˙c, neu ba

˙n do

˙c muon na

˙p nhân cùng vo’i o’ dıa RAM:

C:\LOADLIN> LOADLIN vmlinuz /dev/ram rw initrd=diskimage

Còn có the’ ghi tat ca’ các tham soˆ cu’ a le˙nh loadlin.exe vào taˆ

˙p tin (ví du

˙vo’i tên params)

và go˙i câu le

˙nh dó o’’ da

˙ng sau:

C:\LOADLIN> LOADLIN @params

Kha’ nang này da˙c bie

˙t có ích khi du’a nhieu tham soˆ dòng le

˙nh và khi do

˙dài

cu’ a dòng le˙nh lo’n ho’n 127 ký tu

˙’. Mô ta’ day du’ tat ca’ các tham soˆ cu’ a câu le

˙nh

loadlin.exe có the’ tìm thay trong ta˙p tin PARAMS.DOC hoa˘

˙c Internet trên trang

http://sunsite.unc.edu/mdw/HOWTO/BootPrompt-HOWTO.htmlvàhttp://rsphy1.anu.edu/ gpg109/BootPrompt-HOWTO.html

26 Cài da˙t HDH Linux trên cùng máy tính vo’i Windows

Bây gio’ ba˙n do

˙c có the’ su’’ du

˙ng cách này de’ kho’’i do

˙ng Linux. Công vieˆ

˙c duy nha´ t còn

la˙i là làm sao de’ không pha’ i gõ le

˙nh loadlin vo’i tat ca’ các tham soˆ sau moˆi lan kho’’i do

˙ng

la˙i. Có the’ viet thêm le

˙nh go

˙i loadlin vào ta

˙p tin autoexec.bat hoa˘

˙c ta

˙o mo

˙t ta

˙p tin le

˙nh (ví

du˙, linux.bat), và khi cha

˙y ta

˙p tin này, máy tính se˜ chuye’n vào cheˆ do

˙DOS tru’o’c, sau dó thì

cha˙y Linux. Tác gia’ cho rang nhu’ng thông tin dã du’a ra o’’ trên du’ de’ ta

˙o ta

˙p tin bat can thiet.

Can nói thêm ra˘ng, không du’o˙’c kho’’i do

˙ng Linux tu’ giao die

˙n do ho

˙a DOS/Windows và caˆn

tat mo˙t vài tùy cho

˙n trong ta

˙p tin a’n C:\MSDOS.SYS (dây là ta

˙p tin van ba’ n thông thu’o’ng),

bang cách thêm vào hai dòng sau (neˆu chu’a có):BootGUI=0

Logo=0

Dòng dau tiên tat giao die˙n do ho

˙a, và DOS se˜ du’o

˙’c kho’’i do

˙ng thay cho Windows 95/98.

(De’ cha˙y giao die

˙n do ho

˙a, can nha

˙p câu le

˙nh C:> win).

Logo=0 tat vie˙c hie’n thi

˙bie’u tu’o

˙’ng Windows (cu’’a so’). Van de o’’ cho, doi vo’i mo

˙t soca

˙c

màn hình Linux se˜ du’a ra mo˙t màn hình troˆng rong sau khi kho’’i do

˙ng, neu nhu’ có hie’n thi

˙bie’u tu’o˙’ng Windows.

Chu’o’ng 3

Bash

Tot go ho’n tot nu’o’c so’n– ca dao tu

˙c ngu’ Vie

˙t Nam

Trong phan này chúng ta se˜ de ca˙p den van de làm vie

˙c vo’i Linux o’’ chedo

˙text, hay còn

du’o˙’c go

˙i là console hoa˘

˙c terminal. Nhu’ng ngu’o’i dùng Linux mo’i (newbie) thu’o’ng nghı˜ se

cha’ ng bao gio’ làm vie˙c o’’ chedo

˙này, vì dã có giao dieˆ

˙n do ho

˙a. Tuy nhiên dây là mo

˙t ý kien

sai lam, bo’’i vì rat nhieu công vie˙c có the’ thu

˙’c hie

˙n nhanh và thuaˆ

˙n tie

˙n trong cheˆ do

˙này ho’n

là su’’ du˙ng giao die

˙n do ho

˙a. Và dù sao thì cheˆ do

˙text cu’ a HDH Linux không pha’ i là chedo

˙text mo˙t tien trình cu’ a MS-DOS. Vì Linux là HDH da tien trình, nên ngay trong cheˆ do

˙text

dã có kha’ nang làm vie˙c trong vài cu’’a so’. Và de’ soa

˙n tha’ o mo

˙t ta

˙p tin van ba’ n không nhaˆt

thiet pha’ i cha˙y các trình soa

˙n tha’ o lo’n và cha

˙m cha

˙p (da

˙c bie

˙t trên các máy có caˆu hình phaˆn

cu’ng thap) cu’ a môi tru’o’ng do ho˙a.

3.1 He˙

vo’ là gì?

Chúng ta thu’o’ng nói "ngu’o’i dùng làm vie˙c vo’i he

˙dieu hành". Dieu này không hoàn toàn

dúng, vì trên thu˙’c te "liên he

˙" vo’i ngu’o’i dùng du’o

˙’c thu

˙’c hie

˙n bo’’i mo

˙t chu’o’ng trình da

˙c bie

˙t.

Có hai da˙ng cu’ a chu’o’ng trình dã de ca

˙p - he

˙vo’ , hay shell, de’ làm vie

˙c trong cheˆ do

˙text

(giao die˙n dòng le

˙nh) và giao dieˆ

˙n do ho

˙a GUI (Graphical User Interface), thu

˙’c hie

˙n "liên

he˙" vo’i ngu’o’i dùng trong môi tru’o’ng do ho

˙a. Can nói ngay ra˘ng, bat ky chu’o’ng trình nào

trong Linux có the’ kho’’i do˙ng tu’ dòng le

˙nh cu’ a he

˙vo’ (neu máy chu’ X dã cha

˙y), cung nhu’

qua giao dieˆ˙n do ho

˙a. Cha

˙y chu’o’ng trình tu’ dòng le

˙nh cu’ a he

˙vo’ tu’o’ng du’o’ng vo’i vie

˙c nháy

(dúp) chuo˙t lên bie’u tu’o

˙’ng cu’ a chu’o’ng trình trong GUI. D¯ u’a các tham soˆ cho chu’o’ng trình

trên dòng leˆ˙nh tu’o’ng du’o’ng vo’i vie

˙c chúng ta kéo và tha’ cái gì dó lên bie’u tu’o

˙’ng chu’o’ng trình

trong môi tru’o’ng do ho˙a. Nhu’ng ma

˙t khác, mo

˙t sochu’o’ng trình không the’ cha

˙y o’’ GUI và chı’

có the’ thu˙’c hie

˙n tu’ dòng le

˙nh. Nói ngoài leˆ mo

˙t chút, tên go

˙i "he

˙vo’ " bi

˙pha’ n doi rat nhieu.

Theo ý kien cu’ a mo˙t sochuyên gia ngôn ngu’ cung nhu’ chuyên gia Linux thì nên go

˙i chu’o’ng

trình này moˆ˙t cách dúng ho’n là "trình xu’’ lý le

˙nh" hay "trình biên di

˙ch le

˙nh". Tuy nhiên, tên

go˙i "he

˙vo’ " (shell) du’o

˙’c dùng cho các chu’o’ng trình dùng de’ biên di

˙ch le

˙nh trong cheˆ do

˙text

trên mo˙i he

˙thong UNIX. Trên các heˆ

˙thong UNIX dau tiên có moˆ

˙t chu’o’ng trình, go

˙i là sh ,

viet tat cu’ a shell . Sau dó, vài bien the’ cu’ a sh du’o˙’c phát trie’n và làm to´ t ho’n, trong dó có

Bourne shell - phiên ba’ n mo’’ ro˙ng cu’ a sh , viet bo’’i Steve Bourne. Du

˙’ án GNU (du

˙’ án

phát trie’n chu’o’ng trình u’ng du˙ng cu’ a Stollman, xemhttp://www.gnu.org/) sau dó cho ra do’i

he˙

vo’ bash , tên go˙i cu’ a nó du’o

˙’c gia’ i mã ra làBourne-again shell , tu’c là "la

˙i là he

˙vo’

28 Bash

cu’ a Bourne". Trên tieˆng Anh dây là mo˙t cách cho’i chu’, vì tu’ Bourne do

˙c giong vo’i tu’ borne

(sinh ra, de’ ra), và nhu’ thebash còn có the’ gia’ i mã là "shell du’o˙’c sinh ra lan hai". Tiep theo

chúng ta se˜ chı’ xem xétbash , vì theo’’ du’o’i khi nói den he˙

vo’ , xin ngam hie’u dó là bashTu

˙’ mo

˙t mìnhbash không thu

˙’c hie

˙n mo

˙t công vie

˙c u’ng du

˙ng nào. Nhu’ng nó hotro

˙’ vie

˙c thu

˙’c

thi mo˙i chu’o’ng trình khác, tu’ vie

˙c tìm kiem chu’o’ng trình du’o

˙’c go

˙i, cha

˙y chúng den vie

˙c to’

chu’c du’ lie˙u dau vào/dau ra. Ngoài ra, heˆ

˙vo’ chi

˙u trách nhieˆ

˙m vecông vie

˙c vo’i các bien môi

tru’o’ng và thu˙’c hie

˙n mo

˙t vài bien do’i (the, hoán do’i vi

˙trí) các tham soˆ le

˙nh. Nhu’ng tính chaˆt

chính cu’ a he˙

vo’ , nho’ dó du’a he˙

vo’ tro’’ thành moˆ˙t công cu

˙ma

˙nh cu’ a ngu’o’i dùng, dó là nó

bao gom mo˙t ngôn ngu’ la

˙p trình do’n gia’ n. Trong toán ho

˙c tu’ lâu dã du’o

˙’c chu’ng minh rang,

bat ky mo˙t thua

˙t toán nào cu˜ng có the’ du’o

˙’c xây du

˙’ng tu’ hai (ba) thao tác co’ ba’ n và mo

˙t toán

tu’’ dieu kie˙n. He

˙vo’ cung ca´p các toán tu’’ dieu kie

˙n và toán tu’’ vòng la

˙p. Nó su’’ du

˙ng các tie

˙n

ích và chu’o’ng trình khác (có trong thành phaˆn he˙

dieu hành, hay du’o˙’c cài da

˙t riêng) de’ làm

các thao tác co’ ba’ n cho ngôn ngu’ la˙p trình mà nó hoˆ tro

˙’. Dong tho’i cho phép du’a các tham

socung nhu’ ket qua’ làm vie˙c cu’ a mo

˙t chu’o’ng trình to’i các chu’o’ng trình khác hay to’i ngu’o’i

dùng. Ket qua’ thu du’o˙’c là mo

˙t ngôn ngu’ la

˙p trình ma

˙nh. Dây cung là su’c ma

˙nh và là moˆ

˙t

trong các chu’c nang chính cu’ a he˙

vo’ . Tru’o’c khi bat dau phan này, ba˙n do

˙c nên bie´ t các to’ ho

˙’p

phím chính, su’’ du˙ng de’ dieu khie’n vie

˙c nha

˙p du’ lie

˙u trên dòng leˆ

˙nh. Nên nho’ ít nhat cách su’’

du˙ng cu’ a các (to’ ho

˙’p) phím <Ctrl>+<C>, <Ctrl>+<D>, <Tab> và các phím có mu˜i tên.

3.2 Các ký tu˙’ da

˙c bie

˙t

He˙

vo’ bash su’’ du˙ng mo

˙t vài ký tu

˙’ tu’ bo

˙256 ký tu

˙’ ASCII cho các mu

˙c dính riêng, hoa˘

˙c de’

bie’u thi˙các thao tác nào dó, hoa

˙c de’ bien do’i bie’u thu’c. Các ký tu

˙’ này bao goˆm:

‘ ~ ! @ # $ % ^ & * ( ) _ -- [ ] { } : ; ’ " / \ > <

và ký tu˙’ vo’i mã 0, ký tu

˙’ hàng mo’i (ta

˙o ra khi nha´n phím <Enter>) và ký tu

˙’ khoa’ ng trang. Phu

˙thuo˙c vào tình huoˆng các ký tu

˙’ da

˙c bie

˙t này có the’ su’’ du

˙ng vo’i ý nghıa da

˙c bie

˙t cu’ a nó hay

su’’ du˙ng nhu’ mo

˙t ký tu

˙’ thông thu’o’ng. Nhu’ng trong da socác tru’o’ng ho

˙’p không khuyên dùng

các ký tu˙’ vo’i giá tri

˙thu’ hai. Tru’o’c het dó là vie

˙c su’’ du

˙ng chúng trong tên taˆ

˙p tin và thu’ mu

˙c.

Tuy nhiên các ký tu˙’ _, - và . (da´u ga

˙ch du’o’i, ga

˙ch ngang và daˆu cham) thu’o’ng du’o

˙’c su’’ du

˙ng

trong tên taˆ˙p tin, và dây là mo

˙t ví du

˙cho thay không pha’ i lúc nào chúng cu˜ng có giá tri

˙da˙c

bie˙t. Trong tên taˆ

˙p tin chı’ dau cham (.) và ga

˙ch chéo (/) có giá tri

˙da˙c bie

˙t. Ký hie

˙u ga

˙ch chéo

dùng de’ phân chia tên các thu’ mu˙c trong du’o’ng dan, còn daˆu cham có giá tri

˙da˙c bie

˙t khi nó

là ký tu˙’ dau tiên trong tên taˆ

˙p tin (cho biet ta

˙p tin là "a’n"). Vie

˙c du’a ngay taˆt ca’ ý nghıa da

˙c

bie˙t cu’ a nhu’ng ký tu

˙’ này và các tình huoˆng su’’ du

˙ng chúng ta

˙m tho’i không có ích. Chúng ta

sexem xét chúng daˆn dan trong các phaˆn sau, khi caˆn su’’ du˙ng den. Tuy nhiên, 3 ký hieˆ

˙u có

ý nghıa lo’n và can de ca˙p den dau tiên. Ký hie

˙u \ (ga

˙ch chéo ngu’o

˙’c) có the’ go

˙i là "ký hie

˙u

xóa bo’ ý nghıa da˙c bie

˙t" cho bat ky ký tu

˙’ da

˙c bie

˙t nào, du’ng ngay sau\ . Ví du

˙, neu muon

su’’ du˙ng khoa’ ng trang trong tên taˆ

˙p tin, thì chúng ta caˆn da

˙t tru’o’c ký tu

˙’ khoa’ ng trang dó mo

˙t

dau Ví du˙, câu le

˙nh sau:

kênh giao tácteppi82@teppi:~$ cp lennon_imagine lennon\ imagine

Các ký tu˙’ ’ và " (ngoa

˙c do’n và ngoa˘

˙c kép) có the’ go

˙i là "các ký tu

˙’ trích dan". Moi ký tu

˙’

nàyluôn luôn du’o˙’c su’’ du

˙ng trong moˆ

˙t ca

˙p vo’i ba’ n sao cu’ a chính nó de’ dóng khung moˆ

˙t bie’u

thu’c nào dó, giong nhu’ trong các va˘n ba’ n, sách báo, . . . thông thu’o’ng. Neu nhu’ mo˙t doa

˙n

3.3 Thu˙’c thi các câu le

˙nh 29

van ba’ n nào dó da˙t trong ngoa˘

˙c do’n, thì tat ca’ các ký tu

˙’ nam trong ngoa˘

˙c do’n này có giá

tri˙

nhu’ các ký tu˙’ thông thu’o’ng, khôn moˆ

˙t ký tu

˙’ nào có ý nghı˜a da

˙c bie

˙t. Tro’’ la

˙i vo’i ví du

˙su’’

du˙ng khoa’ ng trang trong tên taˆ

˙p tin o’’ trên, có the’ nói, neu muon da

˙t ta

˙p tin cái tên "lennon

imagine" can du’a tên dó vào da´u ngoa˙c:

kênh giao tácteppi82@teppi:~$ cp lennon_imagine ’lennon imagine’

Su˙’ khác nhau trong cách su’’ du

˙ng ký tu

˙’ ’ và " dó là, trong ngoa˘

˙c do’n mat ý nghıa da

˙c bie

˙t

tat ca’ các ký tu˙’, còn trong ngoa˘

˙c kép - tat ca’ chúngngoa

˙i tru’ $, ’ và \ (dau dô la, ngoa˘

˙c

do’n và dau ga˙ch ngu’o

˙’c).

3.3 Thu˙’c thi các câu le

˙nh

Nhu’ dã nói o’’ trên, mo˙t trong các chu’c nang chính cu’ a he

˙vo’ là to’ chu’c vie

˙c thu

˙’c hie

˙n các câu

le˙nh mà ngu’o’i dùng du’a vào trên dòng leˆ

˙nh. He

˙vo’ , nói riêng, cung caˆp cho ngu’o’i dùng hai

thao tác da˙c bie

˙t de’ to’ chu’c vie

˙c du’a các câu leˆ

˙nh trên dòng leˆ

˙nh: ; và&.

3.3.1 Thao tác ;

Ma˙c dù ngu’o’i dùng thu’o’ng chı’ nha

˙p trên dòng leˆ

˙nh tu’ng câu le

˙nh mo

˙t, nhu’ng còn có the’ du’a

vào dòng leˆ˙nh dó ngay la

˙p tu’c vài câu le

˙nh, và chúng se˜ thu

˙’c hie

˙n lan lu’o

˙’t tu’ câu le

˙nh này

den câu le˙nh khác. De’ làm du’o

˙’c dieu này can su’’ du

˙ng ký tu

˙’ da

˙c bie

˙t - ; . Neu dùng ký tu

˙’ này

de’ phân chia các câu leˆ˙nh, thì câu leˆ

˙nh tiep theo se˜ du’o

˙’c coi nhu’ tham soˆ cu’ a le

˙nh phía tru’o’c.

Nhu’ va˙y, neu nha

˙p vào dòng leˆ

˙nh cái gì dó giong nhu’ sau:

kênh giao tácteppi82@teppi:~$ command1 ; command2

thì he˙

vo’ dau tiên sethu˙’c hie

˙n câu le

˙nh command1, cho’ cho le

˙nh dó hoàn thành, sau dó

cha˙y command2, cho’ le

˙nh hoàn thành, sau dó la

˙i du’a ra dòng nhaˆ

˙p le

˙nh và cho’ các hành do

˙ng

tiep theo cu’ a ngu’o’i dùng.

3.3.2 Thao tác &

Thao tác & du’o˙’c dùng de’ to’ chu’c vie

˙c thu

˙’c hie

˙n các câu leˆ

˙nh trong cheˆ do

˙nen sau. Neˆu da

˙t

dau & ngay sau câu leˆ˙nh, thì he

˙vo’ setra’ la

˙i quyen dieu khie’n cho ngu’o’i dùng ngay sau khi

cha˙y câu le

˙nh, mà không do

˙’i cho câu le

˙nh dó hoàn thành. Ví du

˙, neu nha

˙p vào dòng leˆ

˙nh

"command1 & command2 &", thì he˙

vo’ cha˙y câu le

˙nh command1, ngay laˆ

˙p tu’c cha

˙y le

˙nh

command2, và sau dó không chaˆ˙m tretra’ la

˙i dòng nha

˙p le

˙nh cho ngu’o’i dùng.

3.3.3 Thao tác && và ||

Các thao tác && và || lá nhu’ng thao tác dieu khie’n. Neu trên dòng leˆ˙nh làcommand1 && command2,

thì command2 se˜ thu˙’c hie

˙n và chı’ thu

˙’c hie

˙n trong tru’o’ng ho

˙’p tra

˙ng thái thoát ra cu’ a le

˙nh

command1 ba˘ng không (0), tu’c là le˙nh dó thu

˙’c hie

˙n thành công. Moˆ

˙t cách tu’o’ng tu

˙’, neu dòng

le˙nh có da

˙ngcommand1 || command2 , thì command2 se˜ thu

˙’c hie

˙n và chı’ thu

˙’c hie

˙n khi

tra˙ng thái thoát cu’ a le

˙nh command1 khác không. Chúng ta se˜ không xem xét ma˘

˙t ky thua

˙t cu’ a

30 Bash

vie˙c thu

˙’c hie

˙n mo

˙t câu le

˙nh nào dó. Chı’ có the’ nói ngan go

˙n rang, he

˙vo’ pha’ i tìm mã (code)

chu’o’ng trình, na˙p mã dó vào bo

˙nho’, chuye’n các tham soˆ dã nha

˙p trên dòng leˆ

˙nh vào cho câu

le˙nh, và sau khi thu

˙’c hie

˙n xong thì theo moˆ

˙t cách nào dó tra’ la

˙i ket qua’ thu

˙’c hie

˙n le

˙nh này

cho ngu’o’i dùng hay tie´ n trình khác. Chúng ta se˜ xem xét qua các bu’o’c này. Bu’o’c dau tiên -tìm kiem câu le

˙nh. Các câu leˆ

˙nh chia thành hai loa

˙i: no

˙i trú (mã cu’ a chúng có trong mã cu’ a

chính he˙

vo’ ) và ngoa˙i trú (mã cu’ a chúng na˘m trong mo

˙t ta

˙p tin riêng le’ trên dıa). He

˙vo’ luôn

luôn tìm thay le˙nh no

˙i trú, còn de’ tìm các le

˙nh ngoa

˙i trú ngu’o’i dùng, theo nguyên ta˘c, pha’ i

chı’ cho he˙

vo’ du’o’ng dan day du’ to’i ta˙p tin tu’o’ng u’ng. Tuy nhiên de’ go’ "gánh na

˙ng" cho ngu’o’i

dùng he˙

vo’ biet cách tìm le˙nh ngoa

˙i trú trong các thu’ mu

˙c, mà du’o

˙’c lie

˙t kê trongdu’o’ng dan

tìm kiem. Chı’ khi (he˙

vo’ ) không the’ tìm thay ta˙p tin can thiet trong các thu’ mu

˙c dó, nó mo’i

quyet di˙nh rang ngu’o’i dùng dã nham khi nha

˙p tên le

˙nh. Vecách thêm thu’ mu

˙c vào du’o’ng

dan tìm kiem chúng ta se˜ nói den o’’ du’o’i, còn bây gio’ chúng ta se˜ xem xét cách heˆ˙

vo’ to’ chu’cvie

˙c du’a du’ lie

˙u vào cho câu leˆ

˙nh dang thu

˙’c hie

˙n và vie

˙c du’a ket qua’ to’i cho ngu’o’i dùng.

3.4 Dau vào/dau ra tiêu chua’n

3.4.1 Dòng du’ lie˙u vào-ra

Khi mo˙t chu’o’ng trình du’o

˙’c thu

˙’c hie

˙n, nó du’o

˙’c cung caˆp ba dòng du’ lie

˙u (hay còn go

˙i là

kênh):

• dau vào tiêu chua’n (standard input hay stdin). Qua kênh này du’ lie˙u du’o

˙’c du’a vào cho

chu’o’ng trình;

• dau ra tiêu chua’n (standard output hay stdout). Qua kênh này chu’o’ng trình du’a ra ketqua’ làm vie

˙c cu’ a mình;

• kênh thông báo loˆ i tiêu chua’n (standard error hay stderr). Qua kênh này chu’o’ng trìnhdu’a ra thông tin veˆ loi.

Tu’ dau vào tiêu chua’n chu’o’ng trình chı’ có the’ do˙c, còn hai dau ra và kênh thông báo loˆ i

du’o˙’c chu’o’ng trình su’’ du

˙ng chı’ de’ ghi. Theo ma˘

˙c di

˙nh dau vào có liên keˆt1 vo’i bàn phím, còn

dau ra và kênh báo loˆ i hu’o’ng den terminal cu’ a ngu’o’i dùng. Nói cách khác, toàn boˆ˙

thông tincu’ a le

˙nh hay chu’o’ng trình mà ngu’o’i dùng dã cha

˙y, và tat ca’ nhu’ng thông báo loˆ i, du’o

˙’c du’a

ra cu’’a so’ terminal. Tuy nhiên, chúng ta se˜ thay o’’ du’o’i, có the’ chuye’n hu’o’ng thông báo daura (ví du

˙, vào ta

˙p tin). De’ cho thay kênh thông báo loˆ i tiêu chua’n làm vie

˙c nhu’ thenào, hãy

thu˙’c hie

˙n câu le

˙nh ls vo’i mo

˙t tham soˆ không dúng, ví du

˙dùng tham soˆ là mo

˙t tên ta

˙p tin

không ton ta˙i. Trong tru’o’ng ho

˙’p này,ls du’a mo

˙t tin nhan báo loi ra kênh thông báo loˆ i tiêu

chua’n. Tuy nhiên, doi vo’i ngu’o’i dùng thì trong tru’o’ng ho˙’p này kênh thông báo loˆ i tiêu chua’n

không khác gì vo’i dau ra tiêu chua’n, bo’’i vì chúng ta cu˜ng thay thông báo loˆ i dó trên cu’’a so’

terminal. Làm vieˆ˙c vo’i dau vào và dau ra tiêu chua’n du’o

˙’c minh ho

˙a tot nhat qua ví du

˙các

le˙nhecho vàcat .

3.4.2 Le˙nh echo

Câu le˙nhecho dùng de’ chuye’n to’i dau ra tiêu chua’n dòng ký tu

˙’, mà du’o

˙’c du’a vào làm tham

socho nó. Sau dó le˙nh này du’a ra tín hie

˙u chuye’n dòng và hoàn taˆt công vie

˙c. Hãy thu’’ thu

˙’c

hie˙n câu le

˙nh sau:

1giong liên ket hóa ho˙c

3.5 Chuye’n hu’o’ng dau vào/dau ra, du’o’ng ong và dau lo˙c 31

kênh giao tác[user]$ echo ’xin chao cac ban!’

Tôi nghırang lo’i gia’ i thích selà thu’a thãi (chı’ xin hãy su’’ du˙ng dau ngoa

˙c do’n, neu không

ket qua’ có the’ sekhác. Ne´u ba˙n do

˙c chú ý thì có the’ gia’ i thích ta

˙i sao la

˙i khác).

3.4.3 Le˙nh cat

Chúng ta se˜ xem xét le˙nh cat o’’ dây vì le

˙nh này thu’o’ng làm vie

˙c vo’i dau vào và dau ra tiêu

chua’n. Theo ma˘˙c di

˙nh ket qua’ làm vie

˙c cu’ a le

˙nhcat hu’o’ng to’i dau ra tiêu chua’n. De’ chu’ng

minh là le˙nh này theo ma˘

˙c di

˙nh tiep nha

˙n dòng du’ lie

˙u nha

˙p vào, hãy cha

˙y le

˙nh cat không

có tham soˆ. Ket qua’ là con tro’ chuye’n to’i mo˙t dòng mo’i, và ho’n nu’a có ve’ nhu’ không có gì

xa’ y ra. Lúc này câu leˆ˙nh cho’ các ký tu

˙’ den tu’ dau vào tiêu chua’n. Hãy nhaˆ

˙p bat ky ký tu

˙’ nào,

và nó se˜ xuat hie˙n ngay la

˙p tu’c trên màn hình, tu’c là chu’o’ng trình ngay laˆ

˙p tu’c du’a chúng to’i

dau ra tiêu chua’n. Có the’ tiep tu˙c nha

˙p các ký tu

˙’, và chúng cu˜ng sexuat hie

˙n trên màn hình.

Thông thu’o’ng bàn phím du’o˙’c cau hình de’ nha

˙p vào theo tu’ng dòng, vì theˆ neu ba

˙n nhan phím

<Enter>, dòng ký tu˙’ ba

˙n vu’a nha

˙p sedu’o

˙’c du’a to’i le

˙nhcat , và le

˙nh này se˜ la

˙i du’a du’ lie

˙u ra

màn hìnhthông qua dau ra tiêu chua’n. Nhu’ va˙y, moi dòng ký tu

˙’ nha

˙p vào se˜ du’o

˙’c hie

˙n ra

hay lan: mo˙t lan khi gõ và lan thu’ hai bo’’i câu le

˙nhcat . Neu nhan to’ ho

˙’p phím <Ctrl>+<D>,

mà dùng de’ ngu’ng vie˙c nha

˙p du’ lie

˙u, chúng ta se˜ qua la

˙i dòng nha

˙p le

˙nh. Cung có the’ su’’

du˙ng to’ ho

˙’p phím <Ctrl>+<C>, mà là câu leˆ

˙nh trong heˆ

˙vo’ de’ du’ng chu’o’ng trình dang cha

˙y.

Neu du’a tên moˆ˙t ta

˙p tin vào làm tham soˆ cho le

˙nh cat , thì no

˙i dung cu’ a le

˙nh này se˜ du’o

˙’c

du’a to’i dau vào tiêu chua’n, tu’ dó le˙nh cat sedo

˙c no

˙i dung này và du’a to’i dau ra tiêu chua’n

(xem so’ do).

No˙

i dung ta ˆ˙

p tin -> D ¯ au vào tiêu chua ’ n (stdin) --cat--> d au ratiêu chua ’ n (stdout)

Dây chı’ là mo˙t tru’o’ng ho

˙’p riêng cu’ a vie

˙c chuye’n hu’o’ng du’ lie

˙u dau vào, mo

˙t co’ cherat

có ích cu’ a he˙

vo’ . Và tat nhiên chúng ta caˆn xem xét kyho’n co’ chenày.

3.5 Chuye’n hu’o’ng dau vào/dau ra, du’o’ng ong và dau lo˙c

Ma˙c dù, nhu’ dã nói o’’ trên, thông thu’o’ng dau vào/dau ra cu’ a mo

˙t chu’o’ng trình liên ke´ t vo’i

các dau vào/dau ra tiêu chua’n, trong heˆ˙

vo’ còn có các môi tru’o’ng da˙c bie

˙t cho phép chuye’n

hu’o’ng dau vào/dau ra.

3.5.1 Su’’ du˙ng >, < và >>

De’ chuye’n hu’o’ng dau vào/ra, su’’ du˙ng các ký hieˆ

˙u ">", "<" và ">>". Thu’o’ng su’’ du

˙ng vie

˙c

chuye’n hu’o’ng du’ lie˙u ra cu’ a câu le

˙nh vào ta

˙p tin. Du’o’i dây là mo

˙t ví du

˙tu’o’ng u’ng:

kênh giao tácmaikhai@fpt:/some/where$ ls -l > /home/maikhai/ls.txt

Theo le˙nh này danh sách taˆ

˙p tin và thu’ mu

˙c con cu’ a thu’ mu

˙c, mà tu’ dó ngu’o’i dùng

thu˙’c hie

˙n le

˙nh ls 2 sedu’o

˙’c ghi vào ta

˙p tin /home/maikhai/ls.txt ; khi này neu ta

˙p tin

2thu’ mu˙c hie

˙n tho’i

32 Bash

ls.txt không ton ta˙i, thì nó sedu’o

˙’c ta

˙o ra; neu ta

˙p tin dã có, thì noˆ

˙i dung cu’ a nó se˜ bi

˙xóa và ghi dè bo’’i danh sách nói trên. Neˆu ba˙n không muoˆn xóa no

˙i dung cumà ghi thêm

du’ lie˙u dau ra vào cuoˆi ta

˙p tin, thì can su’’ du

˙ng ký hie

˙u >> thay cho>. Khi này khoa’ ng

trang tru’o’c và sau các ký hieˆ˙u > hay>> không có ý nghı˜a và chı’ dùng vo’i mu

˙c dích thua

˙n

tie˙n, denhìn. Ba

˙n có the’ chuye’n hu’o’ng không chı’ vào ta

˙p tin, mà còn to’i dau vào cu’ a mo

˙t

câu le˙nh khác hay to’i mo

˙t thiet bi

˙nào dó (ví du

˙, máy in). Ví du

˙, de’ du’a no

˙i dung ta

˙p tin

/home/maikhai/ls.txt vu’a ta˙o o’’ trên to’i cu’’a so’ terminal thu’ hai3 có the’ su’’ du

˙ng le

˙nh

sau:

kênh giao tácmaikhai@fpt:/sw$ cat /home/maikhai/ls.txt > /dev/tty2

Nhu’ ba˙n thay, > dùng de’ chuye’n hu’o’ng du’ lie

˙u cu’ a dau ra. Chu’c nang tu’o’ng tu

˙’ doi vo’i

dau vào du’o˙’c thu

˙’c hie

˙n bo’’i <. Ví du

˙, có the’ dem sotu’ trong ta

˙p tin ls.txt nhu’ sau (chú ý,

dây chı’ là mo˙t ví du

˙minh ho

˙a, trên thu

˙’c te thu’o’ng su’’ du

˙ng câu le

˙nh do’n gia’ n ho’n):

kênh giao tácmaikhai@fpt:/sw$ wc -w < /home/maikhai/ls.txt

Cách chuye’n hu’o’ng này thu’o’ng du’o˙’c su’’ du

˙ng trong các script, cho các câu leˆ

˙nh mà thu’o’ng

tiep nha˙n (hay cho’) du’ lie

˙u vào tu’ bàn phím. Trong script dùng de’ tu

˙’ do

˙ng hóa moˆ

˙t thao tác

nào dó, có the’ du’a các thông tin caˆn thiet cho câu leˆ˙nh tu’ ta

˙p tin: trong ta

˙p tin này ghi sa˘n

nhu’ng gì can de’ thu˙’c hie

˙n le

˙nh dó. Bo’’i vì các ký hie

˙u <, > và>> làm vie

˙c vo’i các kênh tiêu

chua’n (dau vào hoa˘˙c dau ra), chúng không chı’ du’o

˙’c dùng theo các cách quen thuoˆ

˙c, thu’o’ng

dùng, mà còn có the’ theo cách khác, "la˙

mat" ho’n. Ví du˙, các câu leˆ

˙nh sau là tu’o’ng du’o’ng:

kênh giao tác[user]$ cat > file[user]$ cat>file[user]$ >file cat[user]$ > file cat

Tuy nhiên, tu˙’ chúng (không có moˆ

˙t le

˙nh nào, tu’c là không có kênh tiêu chua’n nào cho

le˙nh) các ký tu

˙’ chuye’n hu’o’ng này không the’ du’o

˙’c su’’ du

˙ng, nhu’ the không the’, ví du

˙, nha

˙p

vào dòng leˆ˙nh sau:

kênh giao tác[user]$ file1 > file2

mà thu du’o˙’c ba’ n sao cu’ a mo

˙t ta

˙p tin nào dó. Nhu’ng dieu này không làm gia’ m giá tri

˙cu’ a

co’ chenày, bo’’i vì các kênh tiêu chua’n có chomo˙i câu le

˙nh. Khi này, có the’ chuye’n hu’o’ng

không chı’ dau vào và dau ra tiêu chua’n, mà còn các kênh khác. D¯ e’ làm du’o˙’c dieu này, caˆn

da˙t tru’o’c ký hie

˙u chuye’n hu’o’ngsocu’ a kênh muoˆn chuye’n. Dau vào tiêu chua’n stdin có soˆ 0,

dau ra tiêu chua’n stdout - soˆ 1, kênh thông báo loˆ i stderr - soˆ 2. Tu’c là le˙nh chuye’n hu’o’ng có

da˙ng day du’ nhu’ sau (xin du’o

˙’c nhac la

˙i, khoa’ ng trang ca

˙nh > là không nhaˆt thiet):

command N > M

3ba˙n can dùng to’ ho

˙’p phím <Ctrl>+<Alt>+<F2> de’ chuye’n to’i cu’’a so’ terminal này và dang nha

˙p tru’o’c

3.5 Chuye’n hu’o’ng dau vào/dau ra, du’o’ng ong và dau lo˙c 33

Trong dó, N và M - socu’ a kênh tiêu chua’n (0, 1, và 2) hoa˘˙c tên ta

˙p tin. Trong mo

˙t vài

tru’o’ng ho˙’p có su’’ du

˙ng các ký hieˆ

˙u <, > và >> mà không chı’ ra sokênh hay tên taˆ

˙p tin, vì

vào chocòn thieu seda˙t, theo ma˘

˙c di

˙nh, 1 ne´u dùng>, tu’c là dau ra tiêu chua’n, hoa

˙c 0 neu

dùng<, tu’c là dau vào tiêu chua’n. Nhu’ the, khi không có soˆ nào chı’ ra,> sedu’o˙’c biên di

˙ch

là 1 >, còn< sedu’o˙’c biên di

˙ch là0 <. Ngoài vie

˙c chuye’n hu’o’ng các kênh tiêu chua’n do’n

gia’ n nhu’ va˙y, còn có kha’ nang không nhu’ng chuye’n hu’o’ng du’ lie

˙u vào kênh này hay kênh

khác, mà còn sao chép noˆ˙i dung cu’ a các kênh tiêu chua’n dó. Ký hie

˙u & dùng de’ thu

˙’c hie

˙n

dieu này, khi da˙t nó (&) tru’o’c socu’ a kênh se˜ chuye’n du’ lie

˙u den:

command N > &M

Le˙nh này có nghı˜a là, dau ra cu’ a kênh vo’i soN du’o

˙’c gu’’i den ca’ dau ra tiêu chua’n, và sao

chép to’i kênh có soˆ M. Ví du˙, de’ sao chép thông báo loˆ i vào dau ra tiêu chua’n, can dùng le

˙nh

2>&1, còn 1>&2 sao chép stdout vào stderr. Kha’ nang này da˙c bie

˙t có ích khi muoˆn ghi dau

ra vào ta˙p tin, vì khi dó chúng ta vu’a có the’ nhìn thay thông báo trên màn hình, vu’a ghi chúng

vào ta˙p tin. Ví du

˙, tru’o’ng ho

˙’p sau thu’o’ng du’o

˙’c u’ng du

˙ng trong các script cha

˙y khi kho’’i do

˙ng

Linux:kênh giao tác

teppi82@teppi:~$ cat hiho > /dev/nullcat: hiho: No such file or directoryteppi82@teppi:~$ cat hiho > /dev/null 2>&1

3.5.2 Su’’ du˙ng |

Mo˙t tru’o’ng ho

˙’p da

˙c bie

˙t cu’ a chuye’n hu’o’ng dau ra là su

˙’ to’ chu’c các du’o’ng ong (ha y còn có

the’ go˙i là kênh giu’a các chu’o’ng trình, hoa˘

˙c bang chuyen). Hai hay vài câu leˆ

˙nh, mà dau ra

cu’ a le˙nh tru’o’c dùng làm dau vào cho leˆ

˙nh sau, liên keˆt vo’i nhau (có the’ nói phân cách nhau,

neu muon) bo’’i ký hie˙u ga

˙ch tha’ ng du’ng - "| ". Khi này dau ra tiêu chua’n cu’ a le

˙nh du’ng bên

trái so vo’i | du’o˙’c chuye’n den dau vào tiêu chua’n cu’ a chu’o’ng trình, du’ng bên pha’ i so vo’i | .

Ví du˙:

kênh giao tácmaikhai@fpt:/sw$ cat ls.txt | grep knoppix | wc -l

Dòng này có nghı˜a là ket qua’ cu’ a le˙nhcat , tu’c là no

˙i dung ta

˙p tin ls.txt, sedu’o

˙’c chuye’n

den dau vào cu’ a le˙nh grep , le

˙nh này se˜ phân chia noˆ

˙i dung nói trên và chı’ lay ra nhu’ng

dòng nào có chu’a tu’ knoppix. Den lu’o˙’t mình, ket qu’ a cu’ a le

˙nh grep du’o

˙’c chuye’n to’i dau

vào cu’ a le˙nh wc -l , mà tính soˆ nhu’ng dòng thu du’o

˙’c. Du’o’ng ong su’’ du

˙ng de’ ket ho

˙’p vài

chu’o’ng trình nho’ la˙i vo’i nhau (moi chu’o’ng trình thu

˙’c hie

˙n mo

˙t bien do’i xác di

˙nh nào dó trên

dau vào) ta˙o thành moˆ

˙t le

˙nh to’ng quát, mà keˆt qua’ cu’ a nó se˜ là mo

˙t bien do’i phu’c ta

˙p. Can

chú ý rang, he˙

vo’ go˙i và thu

˙’c hie

˙n tat ca’ các câu leˆ

˙nh có trong du’o’ng ong cùng moˆ

˙t lúc, cha

˙y

moi le˙nh dó trong mo

˙t ba’ n sao heˆ

˙vo’ riêng. Vì thengay khi chu’o’ng trình thu’ nhat bat dau du’a

ket qua’ o’’ dau ra, chu’o’ng trình tiep theo ba˘t dau xu’’ lý ket qua’ này. Cung y nhu’ va˙y, các le

˙nh

tiep theo thu˙’c hie

˙n các công vieˆ

˙c cu’ a mình: cho’ du’ lie

˙u tu’ le

˙nh tru’o’c và du’a ket qua’ cho le

˙nh

tiep theo, gio´ ng nhu’ mo˙t dây chuyeˆn sa’ n xuat. Neu nhu’ muon mo

˙t le

˙nh nào dó ket thúchoàn

toàn, tru’o’c khi thu˙’c hie

˙n le

˙nh tiep theo, ba

˙n có the’ su’e’ du

˙ng trên moˆ

˙t dòng ca’ ký hie

˙u dây

chuyen | , cung nhu’ dau chap pha’y ; . Tru’o’c moi dau cham pha’y, he˙

vo’ sedu’ng la˙i và cho’

cho den khi thu˙’c hie

˙n xong tat ca’ các câu leˆ

˙nh tru’o’c cu’ a du’o’ng ong. Tra

˙ng thái thoát ra (giá

34 Bash

tri˙

lôgíc, mà du’o˙’c tra’ la

˙i sau khi thu

˙’c hie

˙n xong chu’o’ng trình) cu’ a mo

˙t du’o’ng ong setrùng

vo’i tra˙ng thái thoát ra cu’ a câu le

˙nh sau cùng trong du’o’ng ong. O’’ tru’o’c câu le

˙nh dau tiên cu’ a

du’o’ng ong có the’ da˙t ký hie

˙u "! ", khi dó tra

˙ng thái thoát ra cu’ a du’o’ng ong selà phu’ di

˙nh

lôgíc cu’ a tra˙ng thát thoát ra cu’ a le

˙nh cuoi cùng trong du’o’ng ong. Tu’c là neu tra

˙ng thái thoát

ra cu’ a le˙nh cuoi cùng bang 0 thì tra

˙ng thái thoát ra cu’ a du’o’ng ong sebang 1 và ngu’o

˙’c la

˙i. He

˙vo’ cho’ cho tat ca’ các câu leˆ˙nh ket thúc roi mo’i xác di

˙nh và du’a ra giá tri

˙này.

3.5.3 Dau lo˙c

Ví du˙

cuoi cùng o’’ trên (ví du˙

vo’i câu le˙nhgrep ) có the’ dùng de’ minh ho

˙a cho moˆ

˙t khái nie

˙m

qua tro˙ng khác, dó là,dau lo

˙c chu’o’ng trình . Dau lo

˙c - dó là le

˙nh (hay chu’o’ng trình), mà tieˆp

nha˙n du’ lie

˙u vào, thu

˙’c hie

˙n mo

˙t vài bien do’i trên du’ lie

˙u này và du’a ra ket qua’ o’’ dau ra tiêu

chua’n (tu’ dây còn có the’ chuye’n den no’i nào dó theo ý muoˆn cu’ a ngu’o’i dùng). Các câu leˆ˙nh

- dau lo˙c bao goˆm các le

˙nh dã nói den o’’ trêncat, more, less, wc, cmp, diff ,

và ca’ nhu’ng câu le˙nh có trong ba’ ng3.1

Ba’ ng 3.1: Các câu leˆ˙nh dau lo

˙c

Le˙nh Mô ta’ ngan go

˙n

grep, fgrep, egrep Tìm trong ta˙p tin hay du’ lie

˙u dau vào các dòng có chu’a mau van ba’ n

du’o˙’c chı’ ra và du’a các dòng này to’i dau ra tiêu chua’n

tr Trong du’ lie˙u dau vào thay theˆ các ký tu

˙’ o’’ ô thu’ nhat bo’’i các ký tu

˙’ tu’o’ng

u’ng o’’ ô thu’ hai. Hãy thu’’ gõ le˙nh tr abc ABC roi gõ vài dòng chu’a

các ký tu˙’ abc!

comm So sánh hai taˆ˙p tin theo tu’ng dòng moˆ

˙t và du’a vào dau ra tiêu chua’n 3

co˙t : mo

˙t - nhu’ng dòng chı’ ga

˙p o’’ ta

˙p tin thu’ nhat, hai - nhu’ng dòng chı’

ga˙p o’’ ta

˙p tin thu’ hai, và ba - nhu’ng dòng có trong ca’ hai ta

˙p tin.

pr Di˙nh da

˙ng ta

˙p tin hay no

˙i dung cu’ a dau tiêu chua’n de’ in an.

sed Trình soa˙n tha’ o ta

˙p tin theo dòng, su’’ du

˙ng de’ thu

˙’c hie

˙n mo

˙t vài bien do’i

trên du’ lie˙u dau vào (lay tu’ ta

˙p tin hay dau vào tiêu chua’n)

Mo˙t dau lo

˙c da

˙c bie

˙t, câu le

˙nh tee , nhân dôi du’ lie

˙u dau vào, mo

˙t ma

˙t gu’’i du’ lie

˙u này

den dau ra tiêu chua’n, ma˙t khác ghi nó (du’ lie

˙u) vào ta

˙p tin (ngu’o’i dùng can da

˙t tên). Dethay

rang theo chu’c nang cu’ a mình le˙nh tee tu’o’ng tu

˙’ nhu’ nhóm ký tu

˙’ chuye’n hu’o’ng 1>&file.

Kha’ nang cu’ a dau lo˙c có the’ mo’’ ro

˙ng vo’i vie

˙c su’’ du

˙ng các bie’u thu’c chính quy (dieu khie’n),

cho phép, ví du˙, to’ chu’c tìm kiem theo các maˆu tìm kiem tu’ do’n gia’ n den phu’c ta

˙p và rat

phu’c ta˙p. Neu muon, chúng ta có the’ nói rat nhieu vechuye’n hu’o’ng và dau lo

˙c. Nhu’ng no

˙i

dung này có trong phaˆn lo’n các cuoˆn sách veˆ UNIX và Linux (xem phan lo’i ket). Vì va˙y,

chúng ta se˜ du’ng o’’ dây và chuye’n sang moˆ˙t phan khác, du’o

˙’c go

˙i là "môi tru’o’ng và các bieˆn

môi tru’o’ng" ta˙o bo’’i he

˙vo’ .

3.6 Tham bien và các bien so. Môi tru’o’ng cu’ a he˙

vo’

Khái nie˙m tham bie´n trong he

˙vo’ bash tu’o’ng u’ng vo’i khái nie

˙m bien sotrong các ngôn ngu’

la˙p trình thông thu’o’ng. Tên go

˙i (hay ID) cu’ a tham bieˆn có the’ là mo

˙t tu’ bao gom các ký tu

˙’

ba’ ng chu’ cái, chu’ so, dau ga˙ch du’o’i (chı’ ký tu

˙’ dau tiên cu’ a tu’ này không du’o

˙’c là chu’ so), và

ca’ nhu’ng ký tu˙’ sau: , , #, , - (ga

˙ch ngang), $,, 0, _ (ga

˙ch du’o’i). Chúng ta nói ra˘ng, tham bieˆn

3.6 Tham bien và các bien so. Môi tru’o’ng cu’ a he˙

vo’ 35

du’o˙’c xác di

˙nh hay du’o

˙’c da

˙t ra, neu ngu’o’i dùng gan cho nó moˆ

˙t giá tri

˙. Giá tri

˙có the’ là mo

˙t

dòng trong rong. De’ nhìn thay giá tri˙cu’ a tham bieˆn, ngu’o’i ta su’’ du

˙ng ký tu

˙’ $ o’’ tru’o’c tên cu’ a

nó. Nhu’ va˙y, le

˙nh:

kênh giao tácmaikhai@fpt:/sm$ echo parameter

hie’n thi˙tu’ parameter, còn leˆ

˙nh

kênh giao tácmaikhai@fpt:/sm$ echo $parameter

hie’n thi˙giá tri

˙cu’ a tham bieˆn parameter (taˆt nhiên ne´u nhu’ tham bien dó du’o

˙’c xác di

˙nh).

3.6.1 Các da˙ng tham bien khác nhau

Tham bien chia thành ba da˙ng: tham bieˆn vi

˙trí, tham bie´n da

˙c bie

˙t (các ký tu

˙’ da

˙c bie

˙t dã nói

o’’ trên chính là tên cu’ a nhu’ng tham bieˆn này) và các bieˆn socu’ a he˙

vo’ . Tên (ID) cu’ a thambien vi

˙trí gom mo

˙t hay vài chu’ so(nhu’ng không có tham bieˆn vi

˙trí 0). Giá tri

˙cu’ a tham bieˆn

vi˙trí là các tham soˆ cho le

˙nh, du’o

˙’c du’a ra khi cha

˙y he

˙vo’ (tham soˆ dau tiên là giá tri

˙cu’ a tham

bien 1, tham soˆ thu’ hai - tham bieˆn 2, v.v. . . ). Có the’ dùng câu leˆ˙nh set de’ thay do’i giá tri

˙cu’ a tham bieˆn vi˙

trí. Giá tri˙

cu’ a các tham bieˆn này cung thay do’i trong khi he˙

vo’ thu˙’c hie

˙n

mo˙t trong các hàm soˆ (chúng ta se˜ xem xét va´n denày o’’ du’o’i). Các tham bieˆn da

˙c bie

˙t không

gì khác ho’n là các maˆu, mà su˙’ thay the(phép theˆ, phép hoán do’i) chúng du’o

˙’c thu

˙’c hie

˙n nhu’

trong ba’ ng3.2:Các tham bieˆn da

˙c bie

˙t, du’o

˙’c lie

˙t kê o’’ ba’ ng trên, có moˆ

˙t die’m khác bie

˙t dó là chı’ có the’

"nhac" den chúng, không the’ gán các giá tri˙

cho các tham bieˆn này.Bien môi tru’o’ng, nhìntu’ phía he

˙vo’ , dó là các tham bieˆn du’o

˙’c da

˙t tên. Giá tri

˙cu’ a bien môi tru’o’ng du’o

˙’c gán nho’

thao tác có da˙ng sau:

kênh giao tác[user]$ name=value

Trong dó, name - tên cu’ a bien, cònvalue - giá tri˙

muon gán cho bieˆn (có the’ là mo˙t

dòng trong). Tên cu’ a bien môi tru’o’ng chı’ có the’ bao gom các chu’ so, chu’ cái và không du’o˙’c

bat dau bo’’i mo˙t chu’ so. (Tin rang sau khi do

˙c doa

˙n viet ve tham bien vi

˙trí thì các ba

˙n dã hie’u

ta˙i sao mo

˙t bien môi tru’o’ng không the’ bat dau bo’’i mo

˙t chu’ so.) Giá tri

˙có the’ là bat ky mo

˙t

dòng van ba’ n nào. Neˆu giá tri˙

có chu’a nhu’ng ký tu˙’ da

˙c bie

˙t, thì can da

˙t nó (giá tri

˙) vào dau

ngoa˙c. Giá tri

˙tat nhiên se˜ không chu’a các daˆu ngoa

˙c này. Ne´u mo

˙t bien môi tru’òng du’o

˙’c xác

di˙nh, thì cung có the’ bi

˙xóa bo’ bang le

˙nh no

˙i trú unset . Ta

˙p ho

˙’p tat ca’ các bien này cùng vo’i

các giá tri˙

dã gán cho chúng go˙i là môi tru’o’ng (enviroment) cu’ a he

˙vo’ . Có the’ xem nó (môi

tru’o’ng) nho’ le˙nh set khi không có tham soˆ (có the’ can dùng du’o’ng ong ’set | less ",

neu môi tru’o’ng lo’n, có nhieu bien). De’ xem giá tri˙

cu’ a mo˙t bien môi tru’o’ng cu

˙the’, thay vì

dùng le˙nh set (khi này can tìm trong ke´ t qua’ cu’ a nó bien muon xem), có the’ su’’ du

˙ng le

˙nh

echo :

kênh giao tác[user]$ echo $name

36 Bash

Ba’ ng 3.2: Thay theˆ các tham bieˆn da˙c bie

˙t

Tham bien Quy lua˙t thay the

* Thay thebo’’i các tham bieˆn vi˙trí, bat dau tu’ tham bien thu’ nhat. Neu su

˙’

thay thethu˙’c hie

˙n trong da´u ngoa

˙c kép, thì tham bieˆn này se˜ du’o

˙’c thay

bo’’i mo˙t tu’ duy nhat, mà ta

˙o ra tu’ tat ca’ các tham bieˆn vi

˙trí, phân cách

nhau bo’’i ký tu˙’ dau tiên cu’ a bien soIFS (senói den o’’ sau). Tu’c là "$"

tu’o’ng du’o’ng vo’i "$1c$2c. . . ", trong dó c - ký tu˙’ dau tiên trong giá tri

˙cu’ a bien soIFS. Neu giá tri˙

cu’ a IFS trong, hoa˙c không du’o

˙’c xác di

˙nh

giá tri˙, thì tham bieˆn phân cách nhau bo’’i các khoa’ ng trang.

@ Thay thebo’’i tham bien vi˙trí, bat dau tu’ tham bien thu’ nhat. Neu thay the´

thu˙’c hie

˙n trong ngoa˘

˙c kép, thì moˆi tham bien sedu’o

˙’c thay the´ bo’’i mo

˙t

tu’ riêng bie˙t. Tu’c là, "$@" tu’o’ng du’o’ng vo’i "$1" "$2" . . . Neu không có

tham bien vi˙trí, thì giá tri

˙sekhông du’o

˙’c thiet la

˙p (tham bie´n sebi

˙x

# Thay thebo’’i giá tri˙tha

˙p phân cu’ a các tham bieˆn vi

˙trí.

? Thay thebo’’i tra˙ng thái thoát ra cu’ a câu le

˙nh cuoi cùng trong du’o’ng ong,

mà du’o˙’c thu

˙’c hie

˙n trong cheˆ do

˙nen tru’o’c.

- (ga˙ch ngang) Thay thebo’’i giá tri

˙các co’, flag, du’o

˙’c da

˙t bo’’i le

˙nh no

˙i trú set hay trong

khi cha˙y he

˙vo’ .

$ Thay thebo’’i so cu’ a tien trình (PID - process identificator)Thay thebo’’i socu’ a tien trình (PID) cuoˆi cùng trong soˆ các câu leˆ

˙nh thu

˙’c

hie˙n trong nen sau.

0 Thay thebo’’i tên he˙

vo’ hay tên cu’ a script dang cha˙y. Neu bash cha

˙y

mo˙t ta

˙p tin le

˙nh nào dó, thì $0 có giá tri

˙bang tên cu’ a ta

˙p tin này. Trong

tru’o’ng ho˙’p ngu’o

˙’c la

˙i giá tri

˙này bang du’o’ng dan dau du’ den he

˙vo’ (ví

du˙, /bin/bash

_ (ga˙ch du’o’i) Thay thebo’’i tham so´ cuoi cùng cu’ a câu le

˙nh tru’o’c trong soˆ các câu leˆ

˙nh

dã du’o˙’c thu

˙’c hie

˙n (neu dó la

˙i là mo

˙t tham bien hay bien so, thì sesu’’

du˙ng giá tri

˙cu’ a n

Trong dó, can thay name bo’’i tên bien (nhu’ va˙y, trong tru’o’ng ho

˙’p này, ba

˙n la

˙i can pha’ i

biet tên cu’ a bien muon xem). Trong soˆ các bien, mà ba˙n sethay trong ket qua’ cu’ a le

˙nhset ,

có nhu’ng bien rat thú vi˙. Xin hãy chú ý den, ví du

˙, bien RANDOM. Neu thu’’ cha

˙y vài lan liên

tiep câu le˙nh sau:

kênh giao tácmaikhai@fpt:/sw$ echo $RANDOM

thì moi lan ba˙n senha

˙n du’o

˙’c mo

˙t giá tri

˙mo’i. Nguyên nhân là vì bieˆn này tra’ la

˙i mo

˙t giá

tri˙ngau nhiên4 trong khoa’ ng 0 - 32 768.

3.6.2 Dau nhac cu’ a he˙

vo’

Mo˙t trong các bieˆn rat quan tro

˙ng có tên PS1. Bieˆn này cho bieˆt da

˙ng cu’ a dau nhac, màbash

du’a ra trong khi cho’ ngu’o’i dùng nha˙p câu le

˙nh tiep theo. Theo ma˘

˙c di

˙nh thì bien này du’o

˙’c

gán giá tri˙

"\s-\v\$ , tuy nhiên trên các ba’ n phân phoˆi khác nhau thu’o’ng có các script

4random là tu’ tieng Anh có nghı˜a ngau nhiên

3.6 Tham bien và các bien so. Môi tru’o’ng cu’ a he˙

vo’ 37

kho’’i do˙ng (hay script dang nha

˙p) xác di

˙nh la

˙i bien này. Nói chung thì trongbash có tat ca’

bon dau nhac, du’o˙’c su’’ du

˙ng trong các tru’o’ng ho

˙’p khác nhau. Bieˆn PS1 du’a ra da

˙ng cu’ a dau

nhac khi he˙

vo’ cho’ nha˙p le

˙nh. Dau nhac thu’ hai, xác di

˙nh bo’’i bien PS2, xuaˆt hie

˙n khi he

˙vo’

cho’ ngu’o’i dùng nha˙p thêm moˆ

˙t vài du’ lie

˙u can thiet nào dó de’ có the’ tiep tu

˙c cha

˙y câu le

˙nh

(chu’o’ng trình) dã go˙i. Theo ma

˙c di

˙nh bien PS2 có giá tri

˙">". Rat có the’ ba

˙n dã nhìn thaˆy

dau nhac này, khi cha˙y le

˙nhcat de’ du’a du’ lie

˙u vào tu’ bàn phím vào taˆ

˙p tin. Mo

˙t ví du

˙khác

- le˙nh ftp , sau khi cha

˙y le

˙nh này daˆu nhac secó da

˙ng nhu’ dã nói. Dau nhac, xác di

˙nh bo’’i

bien PS3, su’’ du˙ng trong le

˙nh select . Dau nhac, xác di

˙nh bo’’i bien PS4, du’o

˙’c du’a ra tru’o’c

moi câu le˙nh, trong lúcbash theo dõi quá trình thu

˙’c hie

˙n. Giá tri

˙theo ma

˙c di

˙nh - "+". Neu

có mong muoˆn, ba˙n có the’ thay do’i các bien PS1 và PS2. Khi này có the’ su’’ du

˙ng bat ky ký

tu˙’ nào nhaˆ

˙p tu’ bàn phím, cu˜ng nhu’ mo

˙t vài ký tu

˙’ chuyên dùng de’ xác di

˙nh da

˙ng dau nhac

nhu’ trong ba’ ng3.3(chı’ du’a ra mo˙t vài trong soˆ chúng làm ví du

˙, danh sách day du’ xem trong

trang man cu’ abash - gõ le˙nh "man bash").

Ba’ ng 3.3: Ký tu˙’ xác di

˙nh da

˙ng dau nhac

Cu˙m ký tu

˙’ Giá tri

˙(ket qua’ thu du’o

˙’c)

\a Tín hie˙u âm thanh (mã ASCII 07)

\d Tho’i gian o’’ da˙ng "Thu’, tháng, ngày", ví du

˙, Sun, Dec, 26.

\h Tên máy (hostname) den dau cham dau tiên.\H Tên máy day du’ , ví du

˙teppi.phanthinh.com

\t Tho’i gian hie˙n tho’i o’’ da

˙ng 24 gio’: HH:MM:SS (gio’:phút:giây)

\T Tho’i gian hie˙n tho’i o’’ da

˙ng 12 gio’: HH:MM:SS

\@ Tho’i gian hie˙n tho’i o’’ da

˙ng 12 gio’ am/pm (sáng/chieˆu)

\u Tên ngu’o’i dùng dã cha˙y he

˙vo’ , ví du

˙teppi

\w Tên day du’ cu’ a thu’ mu˙c làm vie

˙c hie

˙n tho’i (bat dau tu’ goc), ví du

˙/home/teppi82/project/l4u\W Thu’ mu

˙c hie

˙n tho’i (không có du’o’ng dan)

\$ Ký tu˙’ #, neu he

˙vo’ du’o

˙’c cha

˙y bo’’i ngu’o’i dùng root, và ký tu

˙’ $, neu he

˙vo’

du’o˙’c cha

˙y bo’’i ngu’o’i dùng thu’o’ng.

\nnn Ký tu˙’ có mã heˆ

˙tám nnn

\n Dòng mo’i (chuye’n dòng)\s Tên he

˙vo’

\# Sohie˙n tho’i cu’ a câu le

˙nh

\\ Dau ga˙ch ngu’o

˙’c (backslash)

\[ Sau ký tu˙’ này tat ca’ các ký tu

˙’ sekhông du’o

˙’c in ra.

\] Ket thúc chuoˆi các ký tu˙’ không du’o

˙’c in ra.

\! Sothu’ tu˙’ cu’ a le

˙nh hie

˙n tho’i trong li

˙ch su’’ các câu leˆ

˙nh dã dùng.

Socu’ a le˙nh (sothu’ tu

˙’ cu’ a le

˙nh dang thu

˙’c hie

˙n trong buo’i làm vie

˙c hie

˙n tho’i) có the’ khác

vo’i so cu’ a chính nó trong danh sách "li˙ch su’’ các câu leˆ

˙nh", bo’’i vì danh sách còn chu’a ca’

nhu’ng câu le˙nh dã du’o

˙’c ghi la

˙i trong ta

˙p tin li

˙ch su’’. Sau khi giá tri

˙cu’ a bien du’o

˙’c he

˙vo’ do

˙c

xong, se˜ xa’ y ra su˙’ thay thetheo các quy luaˆ

˙t mo’’ ro

˙ng trong ba’ ng trên, dong tho’i còn xa’ y ra

su˙’ thay thetrong tên các câu leˆ

˙nh, trong các bie’u thu’c soho

˙c, và su

˙’ chia tu’ (word splitting).

Chúng ta se˜ nói den nhu’ng su˙’ thay thenày o’’ du’o’i.Ví du

˙, sau khi thu

˙’c hie

˙n le

˙nh (vì trong dòng

van ba’ n có khoa’ ng trong, nên nhaˆt thiet pha’ i có dau ngoa˙c):

kênh giao tác[user/root]$ PS1="[\u@\h \W]\$"

38 Bash

thì trong da´u nhac secó dau mo’’ ngoa˙c vuông, tên ngu’o’i dùng, ký hie

˙u , tên máy, khoa’ ng

trang, tên cu’ a thu’ mu˙c hie

˙n tho’i (không có du’o’ng dan), dau dóng ngoa˘

˙c vuông, và ký hieˆ

˙u

$ (neu trên he˙

vo’ dang làm vie˙c ngu’o’i dùng bình thu’o’ng) hay #(neˆu he

˙vo’ cha

˙y du’o’i ngu’o’i

dùng root).

3.6.3 Bien môi tru’o’ng PATH

Còn mo˙t bien cung quan tro

˙ng nu’a có tênPATH. Bien này du’a ra danh sách du’o’ng dan

den các thu’ mu˙c, mà bash se tìm kiem ta

˙p tin (tru’o’ng ho

˙’p riêng là các taˆ

˙p tin le

˙nh)

trong tru’o’ng ho˙’p, du’o’ng dan day du’ den ta

˙p tin không du’o

˙’c du’a ra. Các thu’ mu

˙c trong

danh sách này phân cách nhau bo’’i dau hai cha´m (:). Theo ma˘˙c di

˙nh bien PATH chu’a

các thu’ mu˙c /usr/local/bin, /bin, /usr/bin, /usr/X11R6/bin , tu’c là có

da˙ng: /usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin: De’ thêm thu’ mu

˙c

vào danh sách này, caˆn thu˙’c hie

˙n câu le

˙nh sau:

kênh giao tác[user]$ PATH=$PATH:new_path

Khi tìm kiem, he˙

vo’ "lu˙c lo

˙i" các thu’ mu

˙c theo dúng thu’ tu

˙’ dã lie

˙t kê trong bie´ n PATH.

Mo˙t chú ý nho’ , có the’ du’a vào danh sách này thu’ mu

˙c hie

˙n tho’i, khi thêm vào bieˆn PATH

mo˙t dau cham (.). Tuy nhiên, dây là dieu không khuyên làm vo’i lý do ba’ o ma

˙t: ngu’o’i có ác

ý có the’ da˙t vào thu’ mu

˙c dùng chung moˆ

˙t chu’o’ng trình nào dó, có cùng tên vo’i mo

˙t trong so´

nhu’ng câu le˙nh thu’o’ng dùng bo’’i root, nhu’ng thu

˙’c hie

˙n nhu’ng chu’c nang khác hoàn toàn (da

˙c

bie˙t nguy hie’m neu thu’ mu

˙c hie

˙n tho’i du’ng o’’ dau danh sách tìm kieˆm).

3.6.4 Bien môi tru’o’ng IFS

Bien này xác di˙nh ký tu

˙’ (cu

˙m ký tu

˙’) phân cách (InternalField Separator), su’’ du

˙ng trong thao

tác phân chia tu’ ngu’ khi bien do’i dòng le˙nh, mà heˆ

˙vo’ thu

˙’c hie

˙n tru’o’c khi cha

˙y mo

˙t câu le

˙nh nào

dó (xem du’o’i). Giá tri˙theo ma

˙c di

˙nh cu’ a bien này - "<Khoa’ ng_trang><Tab><Ký_tu

˙’_hàng_mo’i>".

Neu thu’’ gõ le˙nh "echo $IFS ", ba

˙n senha

˙n du’o

˙’c mo

˙t nga

˙c nhiên nho’ .

3.6.5 Thu’ mu˙c hie

˙n tho’i và thu’ mu

˙c cá nhân

Tên cu’ a thu’ mu˙c hie

˙n tho’i ghi trong bien môi tru’o’ng vo’i tênPWD, và giá tri

˙cu’ a bien này thay

do’i sau moi lan cha˙y chu’o’ng trìnhcd (cung nhu’ moi lan thay do’i thu’ mu

˙c hie

˙n tho’i theo bat

ky cách nào, ví du˙, qua Midnight Commander). Tu’o’ng tu

˙’ nhu’ va

˙y tên day du’ (gom ca’ du’o’ng

dan) cu’ a thu’ mu˙c cá nhân cu’ a ngu’o’i dùng, cha

˙y tien trình dã cho, ghi trong bieˆn HOME.

3.6.6 Câu le˙nh export

Khi he˙

vo’ cha˙y mo

˙t chu’o’ng trình hay câu leˆ

˙nh nào dó, nó (he

˙vo’ ) cung ca´p cho chúng moˆ

˙t

phan bien môi tru’o’ng. De’ có the’ cung ca´p bien môi tru’o’ng cho tien trình cha˙y tu’ he

˙vo’ , can

gán giá tri˙cho bien này vo’i le

˙nhexport , tu’c là thay vì

kênh giao tác[user]$ name=value

can gõ:

3.7 Khai trie’n bie’u thu’c 39

kênh giao tác[user]$ export name=value

Trong tru’o’ng ho˙’p này, ta´ t ca’ các chu’o’ng trình cha

˙y tu’ he

˙vo’ (ke’ ca’ ba’ n sao thu’ hai cu’ a

chính he˙

vo’ ) secó quyen truy ca˙p to’i các bien du’o

˙’c gán nhu’ va

˙y, tu’c là su’’ du

˙ng giá tri

˙cu’ a

chúng qua tên.

3.7 Khai trie’n bie’u thu’c

Hay he˙

vo’ do˙

c các câu le ˆ˙

nh nhu’ the nào? Khi he˙

vo’ nha˙n du’o

˙’c mo

˙t dòng

le˙nh này dó can thu

˙’c hie

˙n, nó (he

˙vo’ ) tru’o’c khi cha

˙y câu le

˙nh thu

˙’c hie

˙n vie

˙c "phân tích ngu’

pháp" dòng leˆ˙nh này (gio´ ng trong ngôn ngu’, phân tích chu’ ngu’, vi

˙ngu’). Mo

˙t trong nhu’ng

bu’o’c cu’ a su˙’ phân tích này làphép mo’’ haykhai trie’n bie’u thu’c (expansion). Trongbash có

ba’ y loa˙i khai trie’n bie’u thu’c:

• Khai trie’n dau ngoa˙c (brace expansion);

• Thay thedau ngã (tilde expansion);

• Phép theˆ các tham bieˆn và bien so;

• Phép theˆ các câu leˆ˙nh;

• Phép theˆ soho˙c (thu

˙’c hie

˙n tu’ trái sang pha’ i);

• Phép chia tu’ (word splitting);

• Khai trie’n các maˆu tên ta˙p tin và thu’ mu

˙c (pathname expansion).

Các thao tác này du’o˙’c thu

˙’c hie

˙n theo dúng thu’ tu

˙’ lie

˙t kê trên. Chúng ta se˜ xem xét chúng

theo tu’ tu˙’ này.

3.7.1 Khai trie’n dau ngoa˙c

Khai trie’n dau ngoa˙c tot nhat minh ho

˙a trên ví du

˙. Gia’ thiet, chúng ta caˆn ta

˙o thu’ mu

˙c con

trong mo˙t thu’ mu

˙c nào dó, hoa

˙c thay do’i ngu’o’i dùng so’’ hu’u cu’ a vài ta

˙p tin cùng mo

˙t lúc. Có

the’ thu˙’c hie

˙n dieu này nho’ các câu leˆ

˙nh sau:

kênh giao tác[user]$ mkdir /usr/src/unikey/{old,new,dist,bugs}[root]# chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}

Trong tru’o’ng ho˙’p dau, trong thu’ mu

˙c /usr/src/unikey/ seta

˙o ra các thu’ mu

˙c con

old,new,dist , vàbugs . Trong tru’o’ng ho˙’p thu’ hai, ngu’o’i dùng so’’ hu’u cu’ a các taˆ

˙p tin sau

sethay do’i (thành root):

• /usr/ucb/ex

• /usr/lib/ex?.?

40 Bash

• /usr/ucb/edit

• /usr/lib/ex?.?

• /usr/ucb/ex

• /usr/lib/how_ex

• /usr/ucb/edit

• /usr/lib/how_ex

Tu’c là vo’i moi ca˙p dau ngoa

˙c seta

˙o ra vài dòngriêng re (sonhu’ng dòng này ba˘ng sotu’

nang trong daˆu ngoa˙c) bang cách ghi thêm vào tru’o’c moi tu’ trong ngoa˘

˙c nhu’ng gì du’ng tru’o’c

dau ngoa˙c, và ghi thêm vào sau moˆi tu’ này nhu’ng gì du’ng sau daˆu ngoa

˙c. Mo

˙t ví du

˙khác:

dònga{d,c,b}e khi khai trie’n sethu du’o˙’c ba tu’ "ade ace abe ". Khai trie’n dau ngoa

˙c

du’o˙’c thu

˙’c hie

˙n tru’o’c các da

˙ng khai trie’n khác trong dòng leˆ

˙nh, ho’n nu’a tat ca’ các ký tu

˙’ da

˙c

bie˙t có trong dòng leˆ

˙nh, ke’ ca’ nhu’ng ký tu

˙’ nam trong da´u ngoa

˙c, sedu’o

˙’c giu’ không thay do’i

(chúng se˜ du’o˙’c biên di

˙ch o’’ các bu’o’c phía sau).

3.7.2 Thay thedau ngã (Tilde Expansion)

Neu nhu’ tu’ bat dau vo’i ký tu˙’ dau ngã (’∼’), tat ca’ các ký tu

˙’ du’ng tru’o’c dau ga

˙ch chéo dau tiên

(hay tat ca’ các ký tu˙’ neu nhu’ không có daˆu ga

˙ch chéo) se˜ du’o

˙’c hie’u là tên ngu’o’i dùng (login

name). Neˆu nhu’ tên này là moˆ˙t dòng rong (tu’c là dau ga

˙ch chéo du’ng ngay phía sau daˆu ngã),

thì dau ngã se˜ du’o˙’c thay the´ bo’’i giá tri

˙cu’ a bien HOME. Và neu giá tri

˙cu’ a bien HOMEkhông

du’o˙’c gán thì daˆu ngã se˜ du’o

˙’c thay the´ bo’’i du’o’ng dan dau du’ den thu’ mu

˙c cá nhân cu’ a ngu’o’i

dùng, mà dã cha˙y he

˙vo’ . Neu nhu’ ngay sau daˆu ngã (và tru’o’c dau ga

˙ch chéo) là moˆ

˙t tu’ trùng

vo’i tên cu’ a mo˙t ngu’o’i dùng ho

˙’p pháp, thì daˆu ngã coˆ

˙ng vo’i tên ngu’o’i dùng du’o

˙’c thay the´ bo’’i

du’o’ng dan day du’ den thu’ mu˙c cá nhân cu’ a ngu’o’i dùng này. Neˆu nhu’ tu’ du’ng sau daˆu ngã

không pha’ i là tên cu’ a mo˙t ngu’o’i dùng (và không roˆng), thì tu’ không bi

˙thay do’i. Neu nhu’ sau

dau ngã là ’+’, hay ký hieˆ˙u này se˜ du’o

˙’c thay the´ bo’’i tên dau du’ cu’ a thu’ mu

˙c hie

˙n tho’i (tu’c là

giá tri˙cu’ a bien PWD). Neu du’ng sau daˆu ngã là ’-’, thì thay theˆ giá tri

˙cu’ a bien OLDPWD(thu’

mu˙c "cu").

3.7.3 Phép theˆ các tham bien và bien so

Ký tu˙’ $ du’o

˙’c su’’ du

˙ng cho các thao tác theˆ tham bien, thecác câu leˆ

˙nh và the´ các bie’u thu’c

so ho˙c. Bie’u thu’c hay tên du’ng sau $ có the’ du’o

˙’c du’a vào ngoa˘

˙c, không nhaˆt thiet, nhu’ng

rat tie˙n, vì dau ngoa

˙c phân cách bie’u thu’c vo’i các tu’ hay ký tu

˙’ du’ng sau. Nhu’ va

˙y, de’ go

˙i

giá tri˙cu’ a tham bieˆn nói chung cu˜ng nhu’ bien môi tru’o’ng nói riêng trong dòng leˆ

˙nh, can da

˙t

bie’u thu’c da˙ng $parameter. Daˆu ngoa

˙c chı’ can thiet, neu tên cu’ a tham bieˆn có chu’a vài chu’

so, hoa˙c khi theo sau tên còn có các ký tu

˙’ khác, mà chúng ta không muoˆn he

˙vo’ "hie’u lam"

chúng là moˆ˙t phan cu’ a tên tham bieˆn. Trong ta´ t ca’ các giá tri

˙cu’ a bien soxa’ y ra phép theˆ dau

ngã (∼), su˙’ khai trie’n tham bie´n và bien so, phép theˆ các câu leˆ

˙nh, phép theˆ các bie’u thu’c so

ho˙c, cung nhu’ xóa các ký tu

˙’ trích dan (xem du’o’i). Su

˙’ phân chia tu’ không xa’ y ra, tru’ tru’o’ng

ho˙’p "$" (lo’i gia’ i thích xem o’’ ba’ ng so3). Su

˙’ khai trie’n các maˆu tên ta

˙p tin và thu’ mu

˙c cung

không du’o˙’c thu

˙’c hie

˙n.

3.7 Khai trie’n bie’u thu’c 41

3.7.4 Phép theˆ các câu le˙nh

Phép theˆ các câu leˆ˙nh là mo

˙t công cu

˙rat ma

˙ng cu’ abash . Ý nghıa cu’ a nó nam o’’ chothay the

tên các câu leˆ˙nh bo’’i ket qua’ thu

˙’c hie

˙n cu’ a chúng. Có hai da

˙ng phép theˆ le

˙nh:$(command)

và ‘command‘ Neu u’ng du˙ng da

˙ng thu’ hai (chú ý o’’ dây su’’ du

˙ng dau "ngoa

˙c do’n ngu’o

˙’c",

phím cho nó thu’o’ng nam trên phím Tab), thì daˆu ga˙ch ngu’o

˙’c (\) o’’ trong dau ngoa

˙c secó chu’c

nang nhu’ mo˙t ký tu

˙’ thông thu’o’ng, tru’ tru’o’ng ho

˙’p, khi du’ng sau nó (daˆu ga

˙ch ngu’o

˙’c) là mo

˙t

$, ‘, hay mo˙t \. Neu nhu’ su’’ du

˙ng da

˙ng $(command), thì taˆt ca’ các ký tu

˙’ du’ng trong ngoa˘

˙c ta

˙o

thành moˆ˙t câu le

˙nh, không có ký tu

˙’ nào có ý nghı˜a da

˙c bie

˙t. Neu phép theˆ câu le

˙nh xa’ y ra

phía trong ngoa˘˙c kép, thì trong keˆt qua’ cu’ a phép theˆ sekhông thu

˙’c hie

˙n phép phân chia tu’ và

su˙’ khai trie’n mau tên ta

˙p tin và thu’ mu

˙c.

3.7.5 Phép theˆ soho˙c (Arithmetic Expansion)

Phép theˆ so ho˙c cho phép tính giá tri

˙cu’ a mo

˙t bie’u thu’c soho

˙c và thay theˆ nó (bie’u thu’c)

bo’’i ket qua’ thu du’o˙’c. Có hai da

˙ng phép theˆ soho

˙c: $[expression] ((expression))

Trong dó expression du’o˙’c hie’u (du’o

˙’c bash do

˙c) nhu’ khi du’ng trong ngoa˘

˙c kép, nhu’ng

nhu’ng dau ngoa˙c kép o’’ trongexpression la

˙i du’o

˙’c do

˙c nhu’ mo

˙t ký tu

˙’ thu’o’ng. Phía trong

expression có thu˙’c hie

˙n các phép theˆ tham bien và thecâu le

˙nh. Cú pháp cu’ a bie’u thu’c

expression tu’o’ng tu˙’ nhu’ cú pháp cu’ a bie’u thu’c soho

˙c cu’ a ngôn ngu’ C, cu

˙the’ ho’n vevan

de này có the’ do˙c trong phaˆn ARITHMETIC EVALUATION cu’ a trang man cu’ a bash . Ví

du˙, câu le

˙nh

kênh giao tác[user]$ echo $((2 + 3 * 5))

cho ket qua’ bang "17". Neu bie’u thu’c không chính xác,bash sedu’a ra thông báo loˆ i.

3.7.6 Phân chia tu’ (word splitting)

Sau khi thu˙’c hie

˙n xong các phép theˆ tham bien, thele

˙nh, và theˆ các bie’u thu’c soho

˙c, he

˙vo’ la

˙i

phân tích dòng leˆ˙nh mo

˙t lan nu’a (nhu’ng o’’ da

˙ng thu du’o

˙’c sau các phép theˆ nói trên) và thu

˙’c

hie˙n vie

˙c phân chia tu’ (word splitting). Thao tác này na˘m o’’ cho, he

˙vo’ tìm trong dòng leˆ

˙nh

tat ca’ các ký tu˙’ phân chia, xác di

˙nh bo’’i bien IFS (xem trên), và nho’ dó chia nho’ dòng le

˙nh

thành các tu’ riêng retrong các choˆ tu’o’ng u’ng. Neu giá tri˙

cu’ a IFS bang mo˙t dòng trong, thì

vie˙c phân chia tu’ sekhông xa’ y ra. Neu trong dòng leˆ

˙nh không thu

˙’c hie

˙n phép theˆ nào trong

các phép theˆ ke’ trên, thì phân chia tu’ cung không xa’ y ra.

3.7.7 Khai trie’n các mau tên ta˙p tin và thu’ mu

˙c (Pathname Expansion)

Phép theˆ tên du’o’ng dan và ta˙p tin (Pathname expansion) su’’ du

˙ng de’ chı’ nho’ mo

˙t mau nho’

go˙n mà có the’ chı’ ra vài ta

˙p tin (hay thu’ mu

˙c), tu’o’ng u’ng vo’i mau này. Sau khi phân chia tu’,

và neu nhu’ không du’a ra tùy cho˙n -f , thì bash setìm kiem trong tu’ng tu’ cu’ a dòng le

˙nh các

ký tu˙’ *, ?, và [ . Neu tìm thay tu’ vo’i mo

˙t hay vài ký tu

˙’ nhu’ va

˙y, thì tu’ này sedu’o

˙’c xem

nhu’ mo˙t mau, và can thay the´ bo’’i các tu’ trong danh sách du’o’ng dan, tu’o’ng u’ng vo’i mau này.

Neu nhu’ không tìm thaˆy tên tu’o’ng u’ng vo’i mau, và bien nullglob không du’o˙’c du’a ra, thì tu’

sekhông thay do’i, tu’c là các ký tu˙’ da

˙c bie

˙t bi

˙mat giá tri

˙và hie’u nhu’ các ký tu

˙’ thu’o’ng. Neu

nhu’ bien này du’o˙’c xác di

˙nh, mà du’o’ng dan tu’o’ng u’ng vo’i mau không tìm thaˆy, thì tu’ sebi

˙xóa kho’ i dòng le˙nh. Các ký tu

˙’ dùng de’ ta

˙o mau có các giá tri

˙trong ba’ ng3.4

42 Bash

Ba’ ng 3.4: Các ký tu˙’ ta

˙o mau

Ký tu˙’ Quy lua

˙t thay the

* Tu’o’ng u’ng vo’i bat ky dòng ký tu˙’ nào, ke’ ca’ dòng rong. Ví du

˙, v*.txt

sedu’o˙’c thay the´ bo’’i vnoss.txt, vnlinux.txt và vntex.txt

(neu các ta˙p tin này ton ta

˙i), và *.png setu’o’ng u’ng tat ca’ các ta

˙p tin có

phan mo’’ ro˙ng png (ta

˙p tin do ho

˙a hai chieu).

? Tu’o’ng u’ng bat ký mo˙t ký tu

˙’ do’n nào. Ví du

˙, mau

file?.txt se du’o˙’c thaythe´ bo’’i các tên teˆ

˙p sau

file1.txt, file2.txt, file3.txt , và filea.txt(neu chúng toˆn ta

˙i), nhu’ng file23.txt thì không.

[...] Tu’o’ng u’ng bat ky ký tu˙’ nào trong soˆ các ký tu

˙’ nam trong da´u ngoa

˙c

vuông này. Ca˘˙p ký tu

˙’, phân cách nhau bo’’i dau tru’ (-), ví du

˙c-f , bie’u

thi˙mo

˙t dãy; bat ký ký tu

˙’ nào, theo tu’ die’n, nam giu’a hai ký tu

˙’ này, ke’ ca’

hai ký tu˙’ ta

˙o ra dãy (c và f trong ví du

˙) cung tu’o’ng u’ng vo’i mau. Neu

ký tu˙’ dau tiên trong ngoa˘

˙c vuông là hay, thì mau (o’’ vi

˙trí này) setu’o’ng

u’ng tat ca’ các ký tu˙’, không du’o

˙’c chı’ ra trong ngo

Mau tên ta˙p tin rat thu’o’ng xuyên su’’ du

˙ng trong dòng leˆ

˙nh có chu’a ls . Hãy tu’o’’ng tu’o

˙’ng

là ba˙n muon xem thông tin cu’ a mo

˙t thu’ mu

˙c, trong dó có chu’a mo

˙t so lu’o

˙’ng lo’n các ta

˙p tin

du’ các da˙ng, ví du

˙, ta

˙p tin hình a’ nh, phim vo’i da

˙ng gif, jpeg, avi, v.v. . . . D¯ e’ thu du’o

˙’c thông

tin chı’ cu’ a ta˙p tin da

˙ng jpeg, có the’ dùng câu leˆ

˙nh

kênh giao tác[user]$ ls *.jpg

Neu trong thu’ mu˙c có nhieu ta

˙p tin, mà tên cu’ a chúng là các soˆ gom bon chu’ so(thu’ mu

˙c

/proc là mo˙t ví du

˙+), thì le

˙nh sau chı’ du’a ra danh sách các taˆ

˙p tin có so´ tu’ 0500 den 0999:

kênh giao tác[user]$ ls -l 0[5-9]??

3.7.8 Xóa các ký tu˙’ da

˙c bie

˙t

Sau khi làm xong taˆt ca’ các phép theˆ, các ký tu˙’ \, ‘ và " còn la

˙i trong dòng le

˙nh (chúng

du’o˙’c su’’ du

˙ng de’ huy’ bo’ giá tri

˙da˙c bie

˙t cu’ a các ký tu

˙’ khác) se˜ bi

˙xóa het.

3.8 Shell - mo˙t ngôn ngu’ la

˙p trình

Nhu’ dã nói o’’ trên, de’ có the’ xây du˙’ng bat ky gia’ i thua

˙t nào, cung can có các toán tu’’ kie’m tra

dieu kie˙n. He

˙vo’ bash ho tro

˙’ các toán tu’’ lu

˙’a cho

˙n if...then...else và case , cung

nhu’ các toán tu’’ vòng la˙p for, while, until , nho’ dó nó (bash ) tro’’ thành moˆ

˙t ngôn

ngu’ la˙p trình ma

˙nh.

3.8.1 Toàn tu’’ if và test (hoa˙c [ ])

Cau trúc cu’ a toán tu’’ dieu kie˙n có da

˙ng thu go

˙n nhu’ sau:if list1 then list2 else list3

fi trong dó, list1, list2 , và list3 là các chuoˆi câu le˙nh, phân cách nhau bo’’i dau

3.8 Shell - mo˙t ngôn ngu’ la

˙p trình 43

pha’ y và ket thúc bo’’i mo˙t dau cham pha’y hay ký tu

˙’ dòng mo’i. Ngoài ra, các chuoˆi này có the’

du’o˙’c du’a vào daˆu ngoa

˙c nho

˙n: list. Toán tu’’ if kie’m tra giá tri

˙du’o

˙’c tra’ la

˙i bo’’i các câu leˆ

˙nh

tu’ list1 . Neu trong danh sách có vài câu leˆ˙nh, thì kie’m tra giá tri

˙du’o

˙’c tra’ la

˙i bo’’i câu le

˙nh

cuoi cùng cu’ a danh sách. Neˆu giá tri˙

này bang 0, thì se˜ thu˙’c hie

˙n các le

˙nh tu’ list2 ; còn

neu giá tri˙

này khác không, thì se˜ thu˙’c hie

˙n nhu’ng le

˙nh tu’ list3 . Giá tri

˙du’o

˙’c tra’ la

˙i bo’’i

toán tu’’ if nhu’ va˙y, trùng vo’i giá tri

˙mà chuoˆi le

˙nh thu

˙’c hie

˙n (list2 hoa

˙c list3 ) du’a ra.

Da˙ng day du’ cu’ a le

˙nh if nhu’ sau:

if list then list [ elif list then list ] ... [ else list ] fi(o’’ dây dau ngoa

˙c vuông chı’ có nghı˜a là, nhu’ng gì nam trong nó, ngoa˘

˙c vuông, không nhaˆt

thiet pha’ i có). Bie’u thu’c du’ng sauif hayelif thu’o’ng là câu leˆ˙nh test , mà có the’ du’o

˙’c

bie’u thi˙

bo’’i dau ngoa˙c vuông [ ]. Le

˙nh test thu

˙’c hie

˙n phép tính moˆ

˙t bie’u thu’c nào dó, và

tra’ la˙i giá tri

˙0, neu bie’u thu’c là dúng, và 1 trong tru’o’ng ho

˙’p ngu’o

˙’c la

˙i. Bie’u thu’c du’o

˙’c du’a

to’i chu’o’ng trìnhtest nhu’ mo˙t tham soˆ cu’ a chu’o’ng trình. Thay vì gõ

test expressioncó the’ du’a bie’u thu’c expression vào ngoa˘

˙c vuông:

[ expression ]Can chú ý rang, test và [ dó là hai tên cu’ a cu’ a cùng moˆ

˙t chu’o’ng trình, chu’ không pha’ i

là mo˙t phép bie´ n hóa thaˆn thông nào dó cu’ a he

˙vo’ bash (chı’ là cú pháp cu’ a [ dòi ho’ i pha’ i có

dau dóng ngoa˘˙c). Và cung can chú ý rang o’’ chocu’ a test trong cau trúc if có the’ su’’ du

˙ng

bat ky chu’o’ng trình nào. D¯ e’ ket thúc mu˙c này, chúng ta du’a ra ví du

˙su’’ du

˙ng if :

kênh giao tácif [ -x /usr/bin/unicode_start ] ; thenunicode_startelseecho "hello world"fi

Ve toán tu’’ test (hay[...] ) can di sâu ho’n.

3.8.2 Toán tu’’ test và dieu kie˙n cu’ a bie’u thu’c

Bie’u thu’c dieu kie˙n, su’’ du

˙ng trong toán tu’’ test , du’o

˙’c xây du

˙’ng trên co’ so’’ kie’m tra thuo

˙c

tính ta˙

p tin, so sánh các dòngvà các so sánh soˆ ho˙

c thông thu’o’ng. Bie’u thu’c phu’c ta˙p ho’n

du’o˙’c ta

˙o ra tu’ các thao tác do’n và kép sau ("nhu’ng viên ga

˙ch co’ so’’"):

• -a fileDúng neu ta

˙p tin có tênfile ton ta

˙i.

• -b fileDúng neu file ton ta

˙i, và là mo

˙t ta

˙p tin thiet bi

˙khoi (block device) da

˙c bie

˙t.

• -c fileDúng neu file ton ta

˙i, và là mo

˙t ta

˙p tin thiet bi

˙ký tu

˙’ (charater device) da

˙c bie

˙t.

• -d fileDúng neu file ton ta

˙i và là mo

˙t thu’ mu

˙c.

• -e fileDúng neu ta

˙p tin có tênfile ton ta

˙i.

44 Bash

• -f fileDúng neu ta

˙p tin có tênfile ton ta

˙i và là mo

˙t ta

˙p tin thông thu’o’ng.

• -g fileDúng neu ta

˙p tin có tênfile ton ta

˙i và du’o

˙’c da

˙t bit thay do’i nhóm.

• -h file hay-L fileDúng neu ta

˙p tin có tênfile ton ta

˙i và là liên ket mem (liên ket tu’o

˙’ng tru’ng).

• -k fileDúng neu ta

˙p tin có tênfile ton ta

˙i và du’o

˙’c da

˙t bit sticky.

• -p fileDúng neu ta

˙p tin có tênfile ton ta

˙i và là tên cu’ a mo

˙t ong (kênh FIFO).

• -p fileDúng neu ta

˙p tin có tênfile ton ta

˙i và là tên cu’ a mo

˙t ong (kênh FIFO).

• -r fileDúng neu ta

˙p tin có tênfile ton ta

˙i và có quyen do

˙c.

• -s fileDúng neu ta

˙p tin có tênfile ton ta

˙i và kích thu’o’c lo’n ho’n không.

• -t fdDúng neu bo

˙mô ta’ cu’ a ta

˙p tin (fd) mo’’ và chı’ lên terminal.

• -u fileDúng neu ta

˙p tin có tênfile ton ta

˙i và du’o

˙’c da

˙t bit thay do’i ngu’o’i dùng.

• -w fileDúng neu ta

˙p tin có tênfile ton ta

˙i và có quyen ghi.

• -x fileDúng neu ta

˙p tin có tênfile ton ta

˙i và có quyen thu

˙’c thi.

• -0 fileDúng, ne´u ta

˙p tin có tênfile và chu’ so’’ hu’u cu’ a nó là ngu’o’i dùng mà ID có hieˆ

˙u lu

˙’c

chı’ den.

• -G fileDúng, ne´u ta

˙p tin có tênfile ton ta

˙i và thuo

˙c venhóm, xác di

˙nh bo’’i ID nhóm có hie

˙u

lu˙’c.

• -S fileDúng, ne´u ta

˙p tin có tênfile ton ta

˙i và là socket.

• -N fileDúng, ne´u ta

˙p tin có tênfile ton ta

˙i và thay do’i tu’ lan du’o

˙’c do

˙c cuoi cùng.

• file1 -nt file2Dúng, ne´u ta

˙p tin file1 có tho’i gian su’’a do’i muo

˙n ho’n file2 .

3.8 Shell - mo˙t ngôn ngu’ la

˙p trình 45

• file1 -ot file2Dúng, ne´u ta

˙p tin file1 "già" ho’n file1 (tru’o’ng ho

˙’p ngu’o

˙’c la

˙i cu’ a tru’o’ng ho

˙’p trên).

• file1 -ef file2Dúng, ne´u ta

˙p tin file1 và file2 có cùng moˆ

˙t sothiet bi

˙và chı’ somô ta’ inode.

• -o optnameDúng, ne´u tùy cho

˙n optname cu’ a he

˙vo’ du’o

˙’c kích hoa

˙t. Chi tiet xin xem trên trang

man bash .

• -z stringDúng, ne´u do

˙dài cu’ a chuoi string bang không.

• -n stringDúng, ne´u do

˙dài cu’ a chuoi khác không.

• string1 == string2Dúng, ne´u hai chuoˆi trùng nhau. Có the’ thay hai== bang mo

˙t =.

• string1 !== string2Dúng, ne´u hai chuoˆi không trùng nhau.

• string1 < string2Dúng, ne´u chuoi string1 , theo tu’ die’n, du’ng tru’o’c chuoi string2 (doi vo’i ngônngu’ hie

˙n tho’i).

• string1 > string2Dúng, ne´u chuoi string1 , theo tu’ die’n, du’ng sau chuoˆi string2 (doi vo’i ngôn ngu’hie

˙n tho’i).

• arg1 OP arg2O’’ dây OP là moˆ

˙t trong các phép so sánh soˆ ho

˙c: -eq (bang),-ne (khác, không ba˘ng),

-lt (nho’ ho’n), -le (nho’ ho’n hoa˙c bang), -gt (lo’n ho’n), -ge (lo’n ho’n hoa

˙c bang).

O’’ chocác tham soˆ arg1 và arg2 có the’ su’’ du˙ng các soˆ nguyên (âm hoa˘

˙c du’o’ng).

Tu’ các bie’u thu’c dieu kie˙n co’ ba’ n này có the’ xây du

˙’ng các bie’u thu’c phu’c ta

˙p theo ý

muon nho’ các phép lôgíc thông thu’o’ng PHU’ DI˙NH, VÀ (co

˙ng) và HOA

˙C:

• !(expression)Phép phu’ di

˙nh. Dúng, ne´u bie’u thu’c sai.

• expression1 -a expression2Phép coˆ

˙ng lôgicAND. Dúng neu ca’ hai bie’u thu’c deu dúng.

• expression1 -o expression2Phép lôgíc hoa˘

˙c OR. Dúng neu mo

˙t trong hai bie’u thu’c dúng.

46 Bash

3.8.3 Toán tu’’ case

Da˙ng cu’ a toán tu’’ case nhu’ sau:case word in [ [(] pattern [ | pattern ] ... ) list ;; ] ...+esacCâu le

˙nh case dau tiên khai trie’n tu’ word , và so sánh nó (word) vo’i moi tu’ trong mau

pattern theo thu’ tu˙’. Sau khi tìm thaˆy su

˙’ trùng nhau dau tiên thì du’ng vie

˙c so sánh la

˙i, và

thu˙’c hie

˙n danh sáchlist các câu leˆ

˙nh du’ng sau maˆu dã tìm thay. Giá tri

˙tra’ la

˙i bo’’i toán tu’’

này, bang 0, ne´u không tìm thaˆy su˙’ trùng nhau nào. Trong tru’o’ng ho

˙’p ngu’o

˙’c la

˙i, tra’ la

˙i giá tri

˙mà câu leˆ˙nh cuoi cùng trong danh sáchlist du’a ra. Ví du

˙su’’ du

˙ng toán tu’’ case sau lay tu’

script/etc/rc.d/rc.sysinit (FreeBSD-style):

kênh giao táccase "$UTC" inyes|true)CLOCKFLAGS="$CLOCKFLAGS -u";CLOCKDEF="$CLOCKDEF (utc)";;;no|false)CLOCKFLAGS="$CLOCKFLAGS --localtime";CLOCKDEF="$CLOCKDEF (localtime)";;;esac

Neu bien so(UTC) nha˙n giá tri

˙yes hoa

˙c true , thì sethu

˙’c hie

˙n ca

˙p le

˙nh thu’ nhat, nha

˙n

giá tri˙no hoa

˙c false - ca

˙p thu’ hai.

3.8.4 Toán tu’’ select

Toán tu’’ select cho phép to’ chu’c ho˙i thoa

˙i vo’i ngu’o’i dùng. Nó có da

˙ng sau:

select name [in word; ] do list; doneLúc dau tu’ mau word hình thành moˆ

˙t danh sách nhu’ng tu’ tu’o’ng u’ng vo’i mau này. Ta

˙p

ho˙’p nhu’ng tu’ này du’o

˙’c du’a vàokênh thông báo loˆ i tiêu chua’n, ho’n nu’a moi tu’ du’o

˙’c di kèm

vo’i mo˙t sothu’ tu

˙’. Neu mau word bi

˙bo’ qua (không có trong toán tu’’ select ), thì sedu’a vào

các tham bieˆn vi˙

trí (xem trên) theo moˆ˙t cách tu’o’ng tu

˙’. Sau dó, dau nhac PS3 du’o

˙’c du’a ra,

và he˙

vo’ cho’ chuoi nha˙p vào trêndau vào tiêu chua’n. Neu chuoi nha

˙p vào có chu’a so, tu’o’ng

u’ng vo’i mo˙t trong các soˆ dã hie

˙n ra, thì bie´ n name sedu’o

˙’c gán giá tri

˙bang tu’ di kèm vo’i so

này. Neu nha˙p vào mo

˙t dòng rong, thì so´ và tu’ sedu’o

˙’c hie

˙n ra them moˆ

˙t lan nu’a. Neu nha

˙p

vào bat ky mo˙t giá tri

˙nào khác, thì bieˆn name senha

˙n giá tri

˙bang không. Chuoˆi mà ngu’o’i

dùng nhaˆ˙p vào, du’o

˙’c ghi la

˙i trong bien REPLY. Danh sách leˆ

˙nh list du’o

˙’c thu

˙’c hie

˙n vo’i giá

tri˙bien name dã cho

˙n. Sau dây là mo

˙t script nho’ (xin hãy gõ không daˆu neu console cu’ a ba

˙n

chu’a hotro˙’ vie

˙c hie’n thi

˙Tieng Vie

˙t):

kênh giao tác#!/bin/shecho "Ba

˙n thích dùng OS nào?"

select var in "Linux" "Gnu Hurd" "Free BSD" "MacOSX" "Solaris" "QNX" "Other"; dobreakdoneecho "Ba

˙n dã cho

˙n $var"

3.8 Shell - mo˙t ngôn ngu’ la

˙p trình 47

Ghi doa˙n trên vào moˆ

˙t ta

˙p tin (ví du

˙, select.sh ), thay do’i de’ ta

˙p tin thành kha’ thi (ví

du˙, chmod 755 select.sh ), và cha

˙y (./select.sh ). Trên màn hình se˜ hie

˙n ra câu

ho’ i sau:

kênh giao tácBa

˙n thích dùng OS nào?

1) Linux 3) Free BSD 5) Solaris 7) Other2) Gnu Hurd 4) MacOSX 6) QNX#?

Hãy nhan mo˙t trong 7 soˆ du’a ra (tu’ 1 den 7). Neu ba

˙n nha

˙p 4 (nhan ca’ <Enter>), thì se˜

thay thông báo sau:

kênh giao tácBa

˙n dã cho

˙n MacOSX

3.8.5 Toán tu’’ for

Toán tu’’ for làm vie˙c có khác moˆ

˙t chút so vo’i for trong các ngôn ngu’ la

˙p trình thông thu’o’ng.

Thay vì tang hoa˙c gia’ m giá tri

˙cu’ a mo

˙t bien sonào dó (lên hoa

˙c xuong) mo

˙t do’n vi

˙sau moˆi

vòng la˙p, thì nó gán giá tri

˙tiep theo trongdanh sách tu ’ du’a sa n cho bien dó trong

moi vòng la˙p. Nói chung caˆu trúc có da

˙ng sau:

for namein wordsdo list doneQuy lua

˙t xây du

˙’ng danh sách leˆ

˙nh (list ) giong trong toán tu’’ if . Ví du

˙. Script sau ta

˙o

các ta˙p tin fu1, fu2 , và fu3 :

kênh giao tácfor a in 1 2 3 ; dotouch fu$adone

Có the’ gõ ba dòng này trên moˆ˙t dòng le

˙nh, ket qua’ thu du’o

˙’c tu’o’ng tu

˙’ vo’i script. Da

˙ng

to’ng quát cu’ a toán tu’’ for nhu’ sau:for name [in word; ] do list ; doneDau tiên cung xa’ y ra su

˙’ khai trie’n tu’ word theo quy luaˆ

˙t khai trie’n bie’u thu’c (xem trên).

Sau dó bien name lan lu’o˙’t du’o

˙’c gán các giá tri

˙thu du’o

˙’c tu’ su

˙’ khai trien này, và thu

˙’c hie

˙n

danh sách leˆ˙nh list trong moi lan nhu’ va

˙y. Neu không có "in word ", thì danh sách leˆ

˙nh

list du’o˙’c thu

˙’c hie

˙n mo

˙t lan cho moi tham bieˆ n vi

˙trí dã du’a ra. Trên Linux có

chu’o’ng trìnhseq , tiep nha˙n hai so´ nguyên làm tham soˆ, và du’a ra chuoˆi tat ca’ các soˆ nam

giu’a hai soˆ này (co˙ng thêm ca’ chúng). Nho’ câu le

˙nh này có the’ su’’ du

˙ng for cu’ a bash làm

vie˙c nhu’ toán tu’’ for trong các ngôn ngu’ la

˙p trình thông thu’o’ng. De’ làm du’o

˙’c dieu này chı’

can viet vòng la˙p for nhu’ sau:

kênh giao tácfor a in $( seq 1 6 ) ; docat fu$adone

Câu le˙nh (script) này du’a ra màn hình noˆ

˙i dung cu’ a 10 ta

˙p tin (neu có): "fu1 ", ..., "fu10 ".

48 Bash

3.8.6 Toán tu’’ while và until

Toán tu’’ while làm vie˙c tu’o’ng tu

˙’ nhu’ if , nhu’ng vòng la

˙p các câu leˆ

˙nh tronglist2 chı’

thu˙’c hie

˙n khi dieu kie

˙n còn dúng, và se˜ ngu’ng khi dieu kie

˙n không tho’ a mãn. Caˆu trúc có

da˙ng nhu’ sau:while list1 do list2 doneVí du

˙:

kênh giao tácwhile [ -d directory ] ; dols -l directory >> logfileecho -- SEPARATOR -- >> logfilesleep 60done

Chu’o’ng trình (script) trên se˜ theo dõi và ghi la˙i no

˙i dung cu’ a thu’ mu

˙c directory theo

tu’ng phút neˆu thu’ mu˙c còn ton ta

˙i. Toán tu’’ until tu’o’ng tu

˙’ nhu’ toán tu’’ while :

until list1 do list2 doneDie’m khác bie

˙t nam o’’ cho, su’’ du

˙ng giá tri

˙phu’ di

˙nh cu’ a dieu kie

˙n list1 , tu’c là list2

thu˙’c hie

˙n, neu câu le

˙nh cuoi cùng trong danh sáchlist1 tra’ la

˙i tra

˙ng thái thoát ra khác

không.

3.8.7 Các hàm soˆ

Cú phápHe˙

vo’ bash cho phép ngu’o’i dùng ta˙o các hàm soˆ cho mình. Hàm soˆ làm vie

˙c và

du’o˙’c su’’ du

˙ng giong nhu’ các câu leˆ

˙nh thông thu’o’ng cu’ a he

˙vo’ , tu’c là chúng ta có the’ tu

˙’ ta

˙o

các câu leˆ˙nh mo’i. Hàm socó cau trúc nhu’ sau:

function name() { list }Ho’n nu’a tu’ function không nhaˆt thiet pha’ i có, name xác di

˙nh tên cu’ a hàm (dùng de’

go˙i hàm), còn phaˆn thâm cu’ a hàm soˆ ta

˙o bo’’i danh sách các câu leˆ

˙nh list , nam giu’a { và } .

Các câu leˆ˙nh này se˜ du’o

˙’c thu

˙’c hie

˙n moi khi tên name du’o

˙’c go

˙i (giong nhu’ mo

˙t le

˙nh thông

thu’o’ng). Can chú ý rang hàm có the’ là de˙

qui, tu’c là go˙i hàm so´ o’’ ngay trong phan thân cu’ a

nó. Hàm soˆ thu˙’c hie

˙n trong pha

˙m vi he

˙vo’ hie

˙n tho’i: không có tien trình mo’i nào du’o

˙’c cha

˙y

khi biên di˙ch hàm soˆ (khác vo’i vie

˙c cha

˙y script).

3.8.8 Tham soˆ

Khi hàm so´ du’o˙’c go

˙i de’ thu

˙’c hie

˙n, các tham soˆ cu’ a hàm se˜ tro’’ thành các tham bieˆn vi

˙trí

(positional parameters, xem trên)trong tho’i gian thu˙’c hie

˙n hàm này. Chúng du’o

˙’c da

˙t các tên

nhu’ $n , trong dó n là socu’ a tham soˆ mà chúng ta muoˆn su’’ du˙ng. Vie

˙c dánh soˆ bat dau tu’

1, nhu’ va˙y $1 là tham soˆ dau tiên. Cung có the’ su’’ du

˙ng tat ca’ các tham soˆ mo

˙t lúc nho’ $* ,

và du’a ra soˆ thu’ tu˙’ cu’ a tham soˆ nho’ $# Tham soˆ vi

˙trí so0 không thay do’i. Trong khi thu

˙’c

hie˙n neu ga

˙p câu le

˙nh no

˙i trú return (trong phan thâm cu’ a hàm), thì hàm soˆ sebi

˙du’ng la

˙i

và quyen dieu khie’n du’o˙’c trao cho câu leˆ

˙nh du’ng sau hàm. Khi thu

˙’c hie

˙n xong hàm soˆ, các

tham bien vi˙trí và tham bieˆn da

˙c bie

˙t # sedu’o

˙c tra’ la

˙i các giá tri

˙mà chúng có tru’o’c khi cha

˙y

hàm. Bien no˙i bo

˙(local)

Neu muon ta˙o mo

˙t tham bien di

˙a phu’o’ng, có the’ su’’ du

˙ng tu’ khóa local . Cú pháp du’a ra

bien di˙a phu’o’ng giong he

˙t các tham bieˆn khác, chı’ có dieu can du’ng sau tu’ khóa local :

3.9 Script cu’ a he˙

vo’ và le˙nh source 49

local name=value . Du’o’i dây là mo˙t ví du

˙hàm soˆ, thu

˙’c hie

˙n công vie

˙c cu’ a le

˙nhseq dã

nhac den o’’ trên:kênh giao tác

seq(){local I=$1;while [ $2 != $I ]; do{echo -n "$I ";I=$(( $I + 1 ))};done;echo $2}

Can chú ý den tùy cho˙n -n cu’ a echo , nó (tùy cho

˙n) hu’ y bo’ vie

˙c ta

˙o dòng mo’i. Ma

˙c dù

tùy cho˙n này không có nhieˆu ý nghıa vo’i mu

˙c dích chúng ta muoˆn o’’ dây, nhu’ng serat có ích

trong các hàm soˆ vo’i mu˙c dích khác.Hàm sotính giai thu’a fact Mo

˙t ví du

˙khác:

kênh giao tácfact(){if [ $1 = 0 ]; thenecho 1;else{echo $(( $1 * $( fact $(( $1 -- 1 )) ) ))};fi}

Dây là hàm soˆ giai thu’a, mo˙t ví du

˙cu’ a hàm de

˙qui. Hãy chú ý den su

˙’ khai trie’n soho

˙c,

và phép theˆ các câu leˆ˙nh.

3.9 Script cu’ a he˙

vo’ và le˙nh source

Script cu’ a he˙

vo’ chı’ là các ta˙p tin có chu’a chuoi le

˙nh. Tu’o’ng tu

˙’ hàm soˆ script có the’ du’o

˙’c

thu˙’c hie

˙n nhu’ mo

˙t câu le

˙nh. Cú pháp truy caˆ

˙p den các tham soˆ cung nhu’ hàm soˆ. Trong các

tru’o’ng ho˙’p thông thu’o’ng khi cha

˙y script secó mo

˙t tien trình mo’i du’o

˙’c cha

˙y. De’ có the’ thu

˙’c

hie˙n script o’’ trong ba’ n bash hie

˙n tho’i, can su’’ du

˙ng câu le

˙nhsource , hay mo

˙t dau cham "."

(dong nghı˜a cu’ a source). Trong tru’o’ng ho˙’p này script chı’ do’n gia’ n là mo

˙t tham soˆ cu’ a le

˙nh

nói trên. Câu leˆ˙nh secó da

˙ng:

source filename [arguments]Câu le

˙nh này do

˙c và thu

˙’c hie

˙n các câu leˆ

˙nh có trong taˆ

˙p tin filename trongmôi tru’o’ng

hie˙n tho’i, và tra’ la

˙i giá tri

˙, xác di

˙nh bo’’i câu le

˙nh cuoi cùng cu’ a filename . Neu filename

không chu’a dau ga˙ch chéo, thì du’o’ng dan, lie

˙t kê trong bie´ n soPATH, sedu’o

˙’c su’’ du

˙ng de’

tìm ta˙p tin có tênfilename . Ta

˙p tin này không nhaˆt thiet pha’ i kha’ thi (không nhaˆt thiet

pha’ i có bit x). Neu trong thu’ mu˙c, lie

˙t kê trong PATH, không tìm thaˆy ta

˙p tin can, thì setìm

nó (ta˙p tin) trong thu’ mu

˙c hie

˙n tho’i. Neu có các tham soˆ (du’a ra arguments, xem di

˙nh da

˙ng

50 Bash

câu le˙nh o’’ trên), thì trong tho’i gian thu

˙’c hie

˙n script chúng se˜ thành các tham bieˆn vi

˙trí. Neu

không có tham soˆ, thì tham bieˆn vi˙

trí không thay do’i. Giá tri˙

(tra˙ng thái), mà leˆ

˙nh source

tra’ la˙i, trùng vo’i giá tri

˙, tra’ la

˙i bo’’i câu le

˙nh cuoi cùng trong script. Neˆu không câu leˆ

˙nh nào

du’o˙’c thu

˙’c hie

˙n, hoa

˙c không tìm thaˆy ta

˙p tin filename , thì tra

˙ng thái thoát ba˘ng 0.

3.10 Câu le˙nh sh

Ba˙n luôn luôn có the’ cha

˙y mo

˙t ba’ n sao cu’ a he

˙vo’ bash nho’ câu le

˙nhbash haysh . Khi này

có the’ bat ba’ n sao này cha˙y mo

˙t script nào dó, neu du’a tên cu’ a script nhu’ mo

˙t tham soˆ cho

le˙nh bash . Nhu’ va

˙y, de’ thu

˙’c hie

˙n scriptmyscript can du’a câu le

˙nh "sh myscript ".

Neu xem no˙i dung cu’ a mo

˙t ta

˙p tin script nào dó (nhu’ng ta

˙p tin nhu’ va

˙y có rat nhieu trên

he˙

thong), ba˙n sethay dòng dau tiên có da

˙ng sau:#!/bin/sh . Dieu này có nghı˜a là, khi

chúng ta go˙i script de’ thu

˙’c hie

˙n nhu’ mo

˙t le

˙nh thông thu’o’ng, thì/bin/sh segiúp chúng ta

"thu xep" mo˙i thu’. Có the’ thay thedòng này bo’’i liên ket den bat ky mo

˙t chu’o’ng trình nào,

mà sedo˙c ta

˙p tin và thu

˙’c hie

˙n các câu leˆ

˙nh tu’o’ng u’ng. Ví du

˙, script trên ngôn ngu’ Perl bat

dau bo’’i dòng có da˙ng !/bin/perl . Mo

˙t chú ý khác là ký tu

˙’ # dùng de’ viet lo’i chú thích

trong script. Taˆt ca’ nhu’ng gì du’ng sau ký tu˙’ này den cuoi dòng sedu’o

˙’c coi là chú thích và bi

˙bash bo’ qua (tu’c là he˙

vo’ sekhông xem dòng này là câu leˆ˙nh). Neu ba

˙n muon kie’m chu’ng

la˙i tác du

˙ng cu’ a ký tu

˙’ này, thì hãy nhaˆ

˙p vào dòng leˆ

˙nh mo

˙t câu le

˙nh bat ky, và da

˙t tru’o’c nó

(câu le˙nh) ký tu

˙’ #, ví du

˙"# ls ", ba

˙n sethay rang he

˙vo’ bo’’ qua câu leˆ

˙nh này.

Chúng ta se˜ du’ng bài ho˙c ngan go

˙n vebash ta

˙i dây. Tat nhiên, còn raˆt nhieu van dequan

tro˙ng can xem xét nhu’ng nam ngoài pha

˙m vi cu’ a bài ho

˙c, ví du

˙, qua’ n lý tien trình, li

˙ch su’’ câu

le˙nh, mô ta’ ve thu’ vie

˙n readline, tín hieˆ

˙u, v.v. . . Các ba

˙n setìm thay thông tin can thiet trong

các cuoˆn hu’o’ng dan khác hoa˘˙c trên trangman bash .

3.10 Câu le˙nh sh 51