Vn It Linux Cho Nguoi Moi Dung

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    Vn It Linux Cho Nguoi Moi Dung - Presentation Transcript

    1. Linux cho nguo’i dùng ’` ’ Tác gia: Kostromin V. A. ’’ Dich boi: Phan Vınh Thinh ˜ ˙ ˙
    2. Muc luc ˙ ˙ 1 ’’ HDH Linux: lich su và các ban phân phoi ¯ ’ ´ ˆ 2 ˙ 2 Cài dat HDH Linux trên cùng máy tính voi Windows ¯˘ ¯ ´’ 3 ˙ ’n bi cài d ˘ t . . . . . . . . . . . . . . . . . . . . . . . 2.1 Chua . . . . . . . . . 3 ˆ ¯a ˙ ˙ 2.2 Phòng xa và nhung loi khuyên . . . . . . . . . . . . . . . ˜’ `’ . . . . . . . . . 5 ¯ı ’’ ¯o 2.3 Phân vùng trên d˜a và quá trình khoi d ˆ ng . . . . . . . . . . . . . . . . . . 6 ˙’ ´ nào là cau trúc "hình hoc cua d˜a" . . . . . . . ´ 2.3.1 The ˆ ˆ ¯ı . . . . . . . . . 6 ’ ˙ ’ ¯ı 2.3.2 Phân vùng và bang phân vùng cua d˜a . . . . . . . . . . . . . . . . 7 ’’ ¯o 2.3.3 Quá trình khoi d ˆ ng HDH công ty Microsoft . . . ¯ . . . . . . . . . 8 ˙ ´ n d ˆ voi các d˜a lon . . . . . . . . . . . . . . . ` ´’ 2.3.4 Va ¯e ˆ ¯ı ´’ . . . . . . . . . 10 ’ ’’ ¯o 2.4 Lua chon trình khoi d ˆ ng . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 ˙ ˙ ’’ ¯o ˙ ’ ¯ 2.4.1 Trình khoi d ˆ ng LILO cua HDH Linux . . . . . . . . . . . . . . . 11 ˙ ’’i d ˆ ng khác . . . . . . . . . . . . . . 2.4.2 Các trình kho ¯o . . . . . . . . . 13 ˙ ’ 2.4.3 Các phuong án khoi d ˆ ng . . . . . . . . . . . . . ’’ ’ ¯o . . . . . . . . . 14 2.5 Chua ’n bi các phân vùng trên d˙ a . . . . . . . . . . . . . . ˆ ˜ ¯ı . . . . . . . . . 14 ˙ 2.5.1 Loi khuyên khi tao phân vùng . . . . . . . . . . . `’ . . . . . . . . . 14 ˙ 2.5.2 Chuong trình d ˆ’ phân chia o d˜a . . . . . . . . . . ’’ ¯e ˆ’ ¯ı . . . . . . . . . 17 ’’ ¯o 2.6 Windows NT và Linux: khoi d ˆ ng qua OS Loader cua NT ’ . . . . . . . . . 17 2.7 Su ’’ dung trình khoi d ˆ ng LILO ˙ . . . . . . . . . . . . . . . ’’ ¯o . . . . . . . . . 20 ˙ ´˙ 2.7.1 Cài d ˘ t và cau hình LILO . . . . . . . . . . . . . . ¯a ˆ . . . . . . . . . 20 ˙ ` 2.7.2 Cài d ˘ t các he d ˆ u hành khác sau Linux . . . . . . ¯a ˆ ¯ie . . . . . . . . . 23 ˙’ ˙ 2.7.3 Chuyen thu muc /boot lên phân vùng DOS . . . . ˆ ’ . . . . . . . . . 23 ’’ ¯o ˙ ` 2.8 Khoi d ˆ ng Linux tu MS-DOS bang loadlin.exe . . . . . . `’ ˘ . . . . . . . . . 24 ˙ 3 Bash 27 ˆ ’ 3.1 He vo là gì? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 ˙ 3.2 Các ký tu d ˘ c biet . . . . . . . . . . . . . . . . . . . ’ ¯a ˆ . . . . . . . . . . . . 28 ˙ ˙ ˙ 3.3 Thuc thi các câu lenh . . . . . . . . . . . . . . . . . ’ ˆ . . . . . . . . . . . . 29 ˙ ˙ 3.3.1 Thao tác ; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.3.2 Thao tác & . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.3.3 Thao tác && và || . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Dˆ` ¯a` ˆ’ 3.4 ¯ au vào/d ˆ u ra tiêu chuan . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.4.1 Dòng du lieu vào-ra . . . . . . . . . . . . . ˜’ ˆ . . . . . . . . . . . . 30 ˙ 3.4.2 Lenh echo . . . . . . . . . . . . . . . . . . . ˆ . . . . . . . . . . . . 30 ˙ 3.4.3 Lenh cat . . . . . . . . . . . . . . . . . . . . ˆ . . . . . . . . . . . . 31 ˙ ’n huong d ˆ u vào/d ˆ u ra, d ’ong ong và d ˆ u loc ` ` 3.5 Chuye ˆ ’´’ ¯a ¯a ¯u `’ ´ˆ ¯a` . . . . . . . . . . . . 31 ’’ ˙ 3.5.1 Su dung >, < và >> . . . . . . . . . . . . . . . . . . . . . . . . . . 31 ˙
    3. MUC LUC iii ˙ ˙ ’’ 3.5.2 Su dung | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.5.3 ¯ au ˙ c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ` D ˆ lo . . 34 3.6 Tham bien và˙các bien so. Môi truong cua he vo . . . . . . . . . . . . . ´ ˆ ´ ´ ˆ ˆ ’`’ ’ ˆ ’ . . 34 3.6.1 Các dang tham bie ´ n khác nhau . . .˙ . . . . . . . . . . . . . . . ˆ . . 35 ´ ˙˘ ’ ˆ ’ ˆ ´ 3.6.2 Dau nhac cua he vo . . . . . . . . . . . . . . . . . . . . . . . . . . 36 ´ ˙ 3.6.3 Bien môi truong PATH . . . . . . . . . . . . . . . . . . . . . . . . 38 ˆ ’`’ ´ 3.6.4 Bien môi truong IFS . . . . . . . . . . . . . . . . . . . . . . . ˆ ’`’ . . 38 3.6.5 Thu muc hien thoi và thu muc cá nhân . . . . . . . . . . . . . . ’ ˆ `’ ’ . . 38 3.6.6 Câu lenh ˙ export . . . . . . ˙ . . . . . . . . . . . . . . . . . . . ˙ . . . 38 ˆ 3.7 Khai trien bie˙ thuc . . . . . . . . . . . . . . . . . . . . . . . . . . . . ˆ’ ˆ’u ´’ . . 39 ˆ’ ´ 3.7.1 Khai trien dau ngoac . . . . . . . . . . . . . . . . . . . . . . . ˆ ˘ . . 39 ´ ´ ˙ 3.7.2 Thay the dau ngã (Tilde Expansion) . . . . . . . . . . . . . . . . . 40 ˆ ˆ ´ ˆ ´ ˆ ´ ´ 3.7.3 Phép the các tham bien và bien so . . . . . . . . . . . . . . . . ˆ ˆ . . 40 3.7.4 Phép the ´ các câu lenh . . . . . . . . . . . . . . . . . . . . . . . ˆ ˆ . . 41 ´ ´ ˙ 3.7.5 Phép the so hoc (Arithmetic Expansion) . . . . . . . . . . . . . . . 41 ˆ ˆ `’ ˙ 3.7.6 Phân chia tu (word splitting) . . . . . . . . . . . . . . . . . . . . . 41 3.7.7 Khai trie ˆ’n các mau tên tap tin và thu muc (Pathname Expansion) ˜ ˆ ˆ ’ . . 41 3.7.8 Xóa các ký tu d ˘ c biet ˙ . . . . . . . ˙ . . . . . . . . . . . . . ’ ¯a ˆ . . . . 42 3.8 Shell - mot ngôn ngu ˆ ˙ lap trình . . . . . . . . . . . . . . . . . . . . . . ˙ ˙ . . 42 ˆ ˜’ ˙ ’’ ˙ 3.8.1 Toàn tu if và test (hoac [ ]) . . . . . . . . . . . . . . . . . . . . ˘ . . 42 ’’ ¯ie` ˙ˆ ’ ˆ’ ´’ 3.8.2 Toán tu test và d ˆ u kien cua bieu thuc . . . . . . . . . . . . . . . . 43 ’’ 3.8.3 Toán tu case . . . . . ˙. . . . . . . . . . . . . . . . . . . . . . . . . 46 ’’ 3.8.4 Toán tu select . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 ’’ 3.8.5 Toán tu for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 ’’ 3.8.6 Toán tu while và until . . . . . . . . . . . . . . . . . . . . . . . . . 48 ´ 3.8.7 Các hàm so . . . . . . . . . . . . . . . . . . . . . . . . . . . . ˆ . . 48 3.8.8 Tham so ´ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ˆ . . 48 ’ ˆ ’ 3.9 Script cua he vo và lenh source . . . . . . . . . . . . . . . . . . . . . . ˆ . . 49 3.10 Câu lenh sh ˙ . . . . ˙. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 ˆ ˙
    4. ’ Danh sách bang 2.1 ´ ’ ’’ ¯o Cau trúc cua sector khoi d ˆ ng chính . . . ˆ . . . . . . . . . . . . . . . . . . 9 ˙ `u su dung không gian d˜a cua HDH ’’ 2.2 Nhu ca ˆ ¯ı ’ ¯ . . . . . . . . . . . . . . . . . . 15 ˙ 3.1 ˆ ` Các câu lenh d ˆ u loc . . . . . . . . . . . ¯a . . . . . . . . . . . . . . . . . . 34 3.2 ´ Thay the các˙ tham ˙bien d ˘ c biet . . . . . ´ ¯a . . . . . . . . . . . . . . . . . . 36 ˆ ˆ ˆ 3.3 Ký tu xác d nh dang dau nhac ˙. . . . . . . ’ ¯i ´ ˙ ˘ ˆ ´ . . . . . . . . . . . . . . . . . . 37 3.4 Các ký tu tao ma˙ . . . . . . . . . . . . . ˙ ’ ˙ ˜ ˆu . . . . . . . . . . . . . . . . . . 42 ˙ ˙
    5. ’ DANH SÁCH BANG 1 ` ¯ˆ Loi nói dau `’ D ’ ´ ˆ ’`’ ’ ’ ¯ ây là ban dich cuon "Linux cho nguoi dùng" (sêri sách tu hoc) cua Kostromin Victor Alexeevich co ˙ng thêm mot vài (rat ít) kinh nghiem su dung Linux cua teppi. Ban goc d oc ´ ˆ ’’ ˙ ˙ ’ ’ ´ ¯u ’ ˆ ˆ ˆ ˆ ’ ´ ´ viet trên tieng˙ Nga. Theo˙yêu cau cua Kostromin˙ A. V., xin d oc d a ra các liên ket toi ban ` ’ ˙ ´ ´’ ’ ˙ ˆ ˆ ˆ ¯u ’ ¯u ’ ’ ˆ ´ ¯ây: goc d ˙ ˆ http://rus-linux.net/book1.php?name=book1/oglavl http://linux-ve.chat.ru/ `’ ’ ’ Loi cam on ’ ’ ¯ã ¯o ¯ã ´ ˆ ˆ ´ ˆ ` Xin cam on các bác sau d giúp d ˜’: Kostromin V. A. d viet mot cuon sách ve Linux cho ˆ nguoi dùng moi tuyet voi; Truong Manh Cuong d dành cho teppi ˆ ˙ mot khoang không trên ’ ’`’ ´’ ˆ `’ ’’ ’`’ ¯ã ˙ d ’ d ˘ t cuon sách này; hai bác Nguyen Dai Quý và Nguyen Dang http://phoc.minidns.net ¯e ¯a ´ ˙ ˆ˜ ¯ ˙ ˜ ˆ ˘ ˆ ˆ ˙ c su dung LT X. Bác Nguyen Da˙ Quý d d c và su¯ ˙ Hoàng Tuân d giúp trong vie ’’ A ˜ ˆ ¯ i ’’a cho ¯ã ˆ E ¯ã ¯o phiên ban 0.9. Xin hãy gui thu nhac teppi tai teppi@vnlinux.org neu nhu teppi ˙ quên ai d ’ ’’ ’ ˙ ´ ˘ ˙ ˙ ´ ˆ ’ có ¯ó. ˙ ’ ` ˆ Ban quyen ´ ’’ ’ ` Cuon "Bash cho nguoi dùng" này su dung ban quyen GPL. Nói mot cách ngan gon, ban có ˆ ’`’ ˆ ˆ ´ ˘ theˆ’ làm bat ký thu gì: in, tang, bán, d´ t,... nhung xin hãy thêm hai d ˙’ong dan sau vào các ban ´ ˆ ´’ ˘ ¯oˆ ˙ ’ ¯u `’ ˜ ˆ ˙ ˙ ’ ’ sao cua mình: ˙ http://rus-linux.net/book1.php?name=book1/oglavl http://teppi.org/l4u/ ’ ` Tác gia Kostromin V. A. cung nhu nguoi dich không chiu trách nhiem ve hau qua do viec su ˜ ’ ’`’ ˆ ˆ ˆ ’ ˆ ’’ ´ dung cuon sách này gây ra. ˙ ˙ ˙ ˙ ˙ ˆ ˙ ’ ˆ ˆ Phiên ban và cap nhat ’ Phiên ban 0.9 ˙ ˙ ˆ ˆ ´ Cap nhat cuoi cùng Ngày 9 tháng 2 nam 2005 ˆ ˘ ˙ i d ` ˙nghi sua d ’i, thông báo loi chính ta, loi kien thuc cua ban dich cung nhu d ` nghi giúp Mo ¯e ’’ ¯o ˜ ’ ˆ ´˜ ˆ ´’ ’ ’ ˆ ˆ ˆ ˜ ’ ¯e ˆ d ˜’˙dich xin ˙gui cho Phan Vınh Thinh theo d a chı teppi@vnlinux.org. ’’ ’ ˙ ˙ ¯o ˜ ¯i ˙ ˙ ˙
    6. Chuong 1 ’’ ’’ ’ ´ ˆ HDH Linux: lich su và các ban phân phoi ¯ ˙
    7. Chuong 2 ’’ Cài dat HDH Linux trên cùng máy tính ¯˘ ¯ ´’ ˙ voi Windows ’ ’’ ¯a ` Van su khoi d ˆ u nan – Trung Quoc ´ˆ ˙ ˙ ¯ı ’ ’ ´ Thông thuong trên các d˜a cua ban phân phoi Linux d có huong dan ngan gon cách cài d ˘ t ’`’ ˆ ¯ã ’´’ ˜ ˆ ´ ˘ ¯a Linux. Ngoài ra, trên Internet ban có the ’ tìm thay rat nhieu cuon sách nó ve van d ˆ này. Và tat ˆ ´ ´ ˆ ˆ ˆ` ´ ˆ ` ´ ˙ ¯e ˆ ˆ ` ´˙ ˆ ca ´ ´’ ˙ ’ các ban phân phoi lon (Debian, Slackware, Fedora, Mandrake, ...) d ˆ u d có cuon huong ’ ` ¯ã ´ ˆ ¯e ˆ ’´’ ˜ ˆ ¯a ´ ˆ ´ ˆ ´ ˆ ’’ dan cài d ˘ t rat chi tiet, cho moi tình huong su dung. Hãy cho d ’i và hy vong trong tuong lai `’ ¯o ’’ không xa˙se có ban dich Tieng Viet cua nhung cuon sách này. Chính vì vay trong cuon sách ˜ ’ ´ ˙ ˆ ’ ˆ ˜’ ˙ ´ ˆ ˙ ˙ ˆ ´ ˆ ˙ d a ra các buoc cu the cua viec cài d ˘ t, mà xin ba˙n d c hãy tìm các ˙ ´ ’ ˜ này, tác gia se không ¯u ’ ’’ ˆ’ ’ ˆ ¯a ¯o cuon huong dan tuong ung. Thay vào d ˙ là nhung gì ban ca˙ biet và chuan bi truoc khi cài ´ ˆ ’´’ ˜ ˆ ’ ’ ´’ ¯ó ˜’ ˙ ˆn ´ ` ˆ ˙’ ˙ ˆ ’´’ d ˘ t, d ˆ `’ ’ ˜ ¯i ’ ´ ˙ `ng thoi, tác gia se d cu the và chi tiet vào nhung gì d ˘ c biet khi cài d ˘ t Linux trên máy ˙ ¯a ¯o ˆ ˆ ˜’ ¯a ˆ ¯a tính d có mot trong các he d˙ ˆ u hành Windows cung nhu viec khoi d ˆ ng nhieu he d ˆ u hành. ˙ ¯ã ˆ ˆ ¯ie ` ˜ ’ ˙ ˆ ˙’ ’ ¯o ˙` ˆ ˆ ¯ie ` ˙ ˜ ˙ ´ n d ˆ o cho, phan lon nguoi dùng Viet Nam truoc khi bat d ˆ u hoc Linux d làm quen và ` ’’ ˆ ` ´’ ˙´ ` ˙ ˙ Va ¯e ˆ ˆ ’`’ ˆ ’´’ ˘ ¯a ¯ã rat có the d có kinh nghiem su dung các˙ HDH dòng Windows nhu˙Windows 98, Windows ´ˆ ˆ’ ¯ã ˆ ’’ ¯ ’ 2000 và Windows XP. Và trên thuc˙te thì tam thoi Linux khó có the là HDH d ˆ u tiên mà nguoi ˙ ’ ´ ˆ `’ ˆ’ ¯ ` ¯a ’`’ dùng làm quen. Nhu the ˆ ˙ ˙ ´ , mot cách tu nhiên, neu nguoi dùng d làm viec voi HDH Windows ´ ’ ˆ ’ ˆ ’`’ ¯ã ˆ ´’ ¯ và quyet d nh thu nghiem voi Linux, thì ho không muon mat d môi ˙ ’ong làm viec quen ´ ¯i ˆ ’’ ˆ ˙´ ’ ˙ ´ˆ ´ ¯i ˆ tru `’ ˆ ˙ ˙´ i nhung gì d tao ra và d cau hình duoi duoi Windows. Rat˙ may là ˙ ´ ´ ˆ ’ thuoc cua mình, cùng vo ’ ˜’ ¯ã ¯ã ˆ ’´’ ’´’ ˆ ˙ nhat thiet phai d ´ ´ ’ ˙ ˜’ không ˆ ´ ´ ˆ ’ ¯ánh mat tat ca nhung thu d Boi vì trên mot máy tính có the cùng ˆ ˆ ´’ ¯ó. ’’ ˆ ˆ’ ´ ` ˙ ’ cho trên d a!). Chính ˜ "chung song hòa bình hai HDH và tham chí nhieu hon nua (neu có d ˆ ¯ ˆ ˆ ’ ˜’ ´ ˆ ¯u ˆ ¯ı˜ ´ , o phía duoi se nói cách cài d ˘ t˙HDH Linux trên máy tính d cài d ˘ t mot trong các he vì the ’’ ˆ ’´’ ˜ ¯a ¯ ¯ã ¯a ˆ ˆ ` ’ d ˆ u hành cua hãng Microsoft. ˙ ˙ ˙ ˙ ¯ie 2.1 ˆ’ Chuan bi cài dat ¯˘ ˙ ˙ ˆ’ ¯a ` Có the cài d ˘ t Linux bang mot trong các cách sau: ˘ ˆ ˙ ˙ `’ ˆ’ ¯ı • Tu o d˜a CD-ROM `’ ’ ˆ’ ¯ı ´’ • Tu ban sao chép Linux trên o d˜a cung ’ ˆ ’ • Tu máy chu tap tin cua mang noi bo qua NFS; `’ ˆ ˆ ˙ ˙ ˙ ˙ • Tu máy tính khác trong mang noi bo qua SMB; `’ ˆ ˆ ˙ ˙ ˙
    8. 4 Cài dat HDH Linux trên cùng máy tính voi Windows ¯˘ ¯ ´’ ˙ `’ ’’ • Tu máy tính o xa (ví du tu Internet) qua giao thuc FTP; `’ ´’ ˙ `’ ˆ ’ • Tu mot máy chu WWW qua giao thuc HTTP. ´’ ˙ ´ ˆ ’ ’ ˆ ˆ ’ ´ ´ Theo ý kien cá nhân cua tác gia thì thuan tien và có tính thuc te nhat là cài d ˘ t Linux tu ˆ ˆ ¯a `’ CD-ROM, hon nua viec mua các d˜a CD bây `’ ˙ gio không gây khó khan gì. ˙ ˙ ˘ ˙ ’ ˜’ ˆ ¯ı Truoc khi bat d ˆ u ˙cài d ˘ t, hãy thu thap (hãy viet lên mot to giay) tat ca nhung thông tin ’´’ ´ ¯a ˘ ` ¯a ˆ ´ ˆ ˆ `’ ´ ˆ ´ ’ ˜’ ˆ ´ ` ´ ’ cau hình can thiet cua máy ˙tính. Neu nhu máy tính cua ban tam thoi van còn làm viec duoi ´ ˙ ’ ˙ `’ ˆ ˜ ˆ ˆ ˆ ˆ ’ ˆ ’´’ HDH Windows 95/98/2000/XP, thì ban se tìm thay rat nhie ´ ´ ˙ `u ˙thông tin neu nhan chuot phai ´ ´ ˙ ’ ¯ ˜ ˆ ˆ ˆ ˆ ˆ ˆ ’u tuong My Computer, chon lenh Properties. O d ban có the tìm thay gan he˙ tat ca vào bie ’ ’ ˆ ˆ ˙ ’’ ¯ây ’ ˆ ´ ˆ ´t ´ ’ ˆ ` ˆ ˆ thông tin can thiet. Neu nhu ban không thay thông tin nào d ˙ thì can tìm kiem theo các cách ` ˆ ˙ ´ ˆ ´ ˆ ’ ˙ ˙ ´ ˆ ¯ó, ` ˆ ´ ˆ ˙ ˆ’ ’ ˆ ’’ ’ khác, ke ca viec mo vo máy và d c nhung dòng chu trên thiet bi. ¯o ˜’ ˜’ ´ ˆ ’ giúp ba ¯o˙n d c, xin d oc d ˙a ra d danh sách nhung thông tin can thu thap. Xin d ` ng ˙ ` ¯ e Dˆ ¯u ’ ¯u ’ ’ ¯ây ˜’ ˙ co gang ghi càng nhieu du lieu ve mot thiet bi càng tot (tat ca ˙ ng thông ˙´ ˘ ˙ ˆ ˆ ¯u’ luoi bieng và hãy ˆ ´ ’`’ ´ ˆ ` ˆ ˜’ ˆ ˆ ˆ ` ´ ˆ ´ ´ ’ nhu ˆ ˆ ˜’ tin có the tìm thay), nhung du lieu này se can˙d´ n khi cài d ˘ t ˙ cau hình, khi mà viec tìm ˆ’ ´ ˆ ˜’ ˜’ ˆ ` ˆ ˜ ˆ ¯e ˙ ¯a và ´ ˆ ˆ ´ kiem chúng se khó khan hon. ˘ ˙ ˙ ˙ ˆ ˜ ’ • BIOS: ’ ´ – nhà san xuat;ˆ ´ ˆ – so hieu phiên ban. ˆ ’ ˙ ˆ’ ¯ı ´’ ’’ ’ ˆ’ ¯ı ´ • Controller o d˜a cung: loai (IDE hay SCSI) và dung luong cua o d˜a (neu nhu ban d c ˆ ’ ¯o ˙’ ˜ ’ ˙ˆ ´ ¯o ˙ ˙ `n kiem tra xem BIOS có ho tro viec truy cap o che d ˆ LBA hay dùng d˜a IDE, thì ca ¯ı ˆ ˆ ˆ ˆ ’’ ˆ 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à san xuat và so mau mã cua adapter SCSI (neu có). ˆ ˆ ’ ˆ ´’ ` • Dung luong cua bo nho (tính bang Kilobyte ’’ ˘ ˙ ˙ • CD-ROM: – Giao dien (IDE, SCSI, hay giao dien khác); ˆ ˆ ˙ ˙ ¯o ´’ ˆ ˆ’ ¯ı – d´ i voi các o d˜a CD-ROM không phai IDE, cung nhu SCSI - nhà san xuat và so ’ ˜ ’ ’ ´ ˆ ´ ˆ ˜ mau mã. ˆ • Chuot: ˆ ˙ – loai chuot (serial, PS/2, hay bus mouse); ˆ ˙ ˙ – giao thuc (Microsoft, Logitech, MouseMan, v.v. . . ); ´’ ´ – so nút; ˆ ¯o ´’ ˆ ˆ ˘ ˆ’ ˆ ˆ ˆ ´ ´’ ’ ’ ˆ’ ¯ó. ` ˆ – d´ i voi chuot cam vào cong noi tiep thì can so thu tu cua cong d ´ ´ ´ ˙ ˙ • Cac màn hình ˙
    9. 2.2 Phòng xa và nhung loi khuyên ˜’ `’ 5 ’ ´ – nhà san xuat; ˆ ˆ ˜ ´ ˆ ’’ – so mau mã (hay chipset su dung) ˙ – dung luong bo nho; ’’ ˆ ´’ ˙ ˙ • Màn hình ’ ´ – nhà san xuat ˆ ˆ ˜ ´ ˆ – so mau mã; ’ ˆ ´ ` ˆ ` – các giá tri gioi han (min, max) cua tan so làm moi theo chieu doc và theo chieu ´’ ´’ ˆ ` ˆ ˙ ng giá tri này ban d c chı có the tìm thay trong tài lieu˙ d kèm voi màn ˙ ngang (nhu ˜’ ¯o ’ ˆ’ ´ ˆ ˆ ¯i ´’ hình, Windows không ˆ ˙ hien thi˙ nhung giá tri này, và chúng rat˙ quan trong trong ’˙ ´ ˜’ ˆ khi ca ´ u hình giao dien d ˆ hoa). ` ˙ ˙ ˙ ˆ ˆ ¯o ˙ ˙ ´ ˆ ’ ´ ´ ´ • Neu nhu ban d c muon ket noi mang (mà UNIX nói chung là HDH dành cho mang), ¯o ˆ ˆ ˆ ¯ thì hãy ghi˙lai nhung du lieu sau: ˙ ˙ ˜’ ˜’ ˆ ˙ ˙ ˙ ’ ´ ˆ ˜ ´ ˆ – nhà san xuat và so mau mã cac mang; ˆ ˙ ˙ ’ ’ – d a chı IP cua mình; ¯i ˙ ’ – tên cua máy tính trong mang; ˙ – mat na mang con (subnet mask); ˘ ˙ ˙ ˙ ’ ’ – d a chı IP cua gateway; ¯i ˙ ¯i ’ ’ ’ ` – d a chı IP cua các máy chu tên mien (DNS server); ˆ ˙ ’ ’ ’ – d a chı IP cua máy chu WINS(Windows Internet Name Service); ¯i ˙ ` ˆ ’ – tên mien cua công ty ban d c. ¯o ˙ ˙ ’ ´ • Loai và nhà san xuat cac âm thanh và game controller (neu nhu có) ˆ ´ ˆ ’ ˙ ˙ 2.2 Phòng xa và nhung loi khuyên ˜’ `’ ¯a ¯ ´ Truoc khi cài d ˘ t HDH Linux sau Windows, rat nên thuc hien vài thao tác "phòng xa" ("phòng ’´’ ˆ ’ ˆ ˙cháy"). Vì rat có the ban d c se phai˙ phân vùng lai o d a, thay d ’i ban ghi ’ ˙ cháy hon chua ’ ˜’ ´ˆ ˆ ¯o ˜ ’ ˆ’ ¯ı ˜ ¯o ’ ˆ ’’i d ˆ ng (Boot Record) và làm viec vo kho ¯o ˙ i các tap tin khoi d ng cung nhu các tap tin cau hình. ˙ ’’ ¯o ˙ ´ ˆ ´’ ˆ ˆ ˜ ’ ˆ ˆ ˙ tác này không phai lúc nào cung d ˙ lai d lai mot ket qua theo ý ˙ ´ n, và trong ˙ ˙ Các thao ’ ˜ ¯em ¯em ˆ ´ ˆ ’ muo ˆ truong hop xau có the máy tính cua ban d c se ˙không khoi ˙¯ong nua. Có biet cách thoát ra ’`’ ’ ´ ˆ ˆ’ ’ ¯o ˜ ˙ ’ d ’ ˆ ˜’ ´ ˆ kho ’ i tình ´ ˙huong này và phuc hoi du lieu can thiet không d còn˙là mot câu hoi. Nhung roi vào ` ˜’ ˆ ˆ ˙ `˙ ´ ’ ˆ ˆ ˆ ¯ó ˆ ’ ’ ´ ˙ ˜ ˙´ ` ` ˙ ˆ ’ ˆ ´ ´’ ˆ tình huong nhu vay het suc de dàng nhat là voi nguoi dùng lan d ˆ u tiên cài d ˘ t Linux. Chính ˆ ˆ ´’ ’`’ ˆ ¯a ¯a ` ˙` ` ` ˙ ` ˆ ˆ ’’ ¯o vì vay, d ˆ u tiên, can tao mot d˜a mem khoi d ˆ ng hay mot d˜a mem giúp phuc hoi he thong ˆ ¯a ˆ ¯ı ˆ ¯ı ˆ ˆ ˆ ´ ˆ (neu´ ˙ ban d c còn chu˙ tao). Thu hai, can ghi˙ lai nhung ˙du lieu có giá tri (backup).˙Và thu a ˙ ´’ ` ˙ ´’ ˆ ¯o ’ ˆ ˜’ ˜’ ˆ ˙ ’n bi các tap tin (d a mem, CD) cài d ˘ t cho he thong cu. Mot loi khuyên quan trong ˙ ˙ ` ˙ ˙ ˙ ba, chua ˆ ˆ ˜ ¯ı ˆ ¯a ˆ ´ ˆ ˜ ˆ `’ khác: ne ´ u có gì d ˙ xay ra không theo ý muo˙ thì không nên hoang mang. Xin chia se mot ˆ ˙ ¯ó ’ ´n ˆ ˙ ˙ ’ ˙ˆ ` ` ` ’ kinh nghiem buon: khi lan d ˆ u tiên tác gia cài Linux trên máy tính d có Windows NT, và ˙ ˆ ˆ ˆ ¯a ¯ã ˙máy tính không the khoi d ng d oc. Không hieu het van d ` tác gia nghı là không ´ ket qua là ˆ ’ ˆ’ ’’ ¯o ¯u ’ ˆ ’ ˆ’ ´ ´ ¯e ˆ ˆ ˆ ’ ˜ còn cách gì khác ngoài d nh dang lai o ¯ı ˙’ d a và cài d ˘ t lai tu d `u. Bây gio thì tác gia d hieu là ˙ `’ ¯a `’ ’ ¯ã ˆ’ ¯i ˆ ˜ ¯a ˆ có the phuc hoi lai neu nhu không ˙quyet d nh quá˙vo˙ vàng. Vì vay có the nói rang Werner ˆ’ ` ˆ ´ ˙ ’ ˙ ˆ ´ ¯i ˆ ˆi ˆ ˆ’ ` ˘ Almesberger ¯úng, ˙ d ˙ khi trong huong dan su˙ dung LILO có d a ra ˙ ng loi khuyên sau cho ˜ ’’ ˙ nhu ’´’ ˆ ¯u’ ˜’ `’ nguoi dùng khi roi vào truong hop khó khan nhu vay: ’ `’ ’ ’ `’ ’ ˘ ˙ ’ ˆ ˙ ˙
    10. 6 Cài dat HDH Linux trên cùng máy tính voi Windows ¯˘ ¯ ´’ ˙ • Không hoang hot. Neu nhu có gì d không làm viec, hãy thu moi cách d ˆ’ tìm ra nguyên ’ ´ ˆ ´ˆ ’ ¯ó ˆ ’’ ¯e nhân, kiem tra lai nhieu lan thao tác cua mình. Chı sau khi d ˙moi thuc hien các buoc ˆ’ ` ` ˆ ˆ ’ ˙’ ¯ó ´’ ’ ˆ ’´’ ’’ ˆ˜i. sua lo ˙ ˙ ˙ ¯o ˆ D˘ ˆ ’`’ ’ ˆ ´ • Hãy d c tài lieu. ¯ ac biet trong các truong hop, khi he thong làm nhung gì ban d c ˆ ˜’ ¯o không ˙mong d˙ i. ˙ ˙ ˙ ˙ ˙ ˙ ¯o ’ ˙ ˆ’ ´ Xin thêm mot loi khuyên pho bien sau: * Hãy xem các tap tin log, tuc là các tap tin ghi ˆ `’ ˆ ˆ ´’ ˆ lai su kien cua he ´ ˙ thong (can tìm chúng trong thu muc /var/log). ` ˙ ˙ ’ ˆ ’ ˆ ˆ ˆ ’ ˙ ˙ ˙ ˙ ’’ ˙ ’ ` ’ ´ Nhu d nói o trên, quá trình cài d ˘ t HDH Linux nói riêng không phai là d ˆ tài cua cuon ’ ¯ã ¯a ¯ ¯e ˆ ` sách. Nguoi dùng can tìm các cuon hu ´’ `’ ´ ˙ong dan tuong ung. Tuy nhiên, tác gia cung muon d a ˜ ’ ’ ´’ ’ ˜ ´ ¯u ’ ˆ ˆ ’ ˆ ˆ ’ ra vài loi khuyên d ˆ’ giúp nguoi dùng d ’a ra quyet d nh trong khi cài d ˘ t. `’ ¯e ’`’ ¯u ´ ¯i ˆ ¯a ˙ ˙ ´’ ´ ¯u Thu nhat, d `’ng voi vàng và hãy chú ý d c nhung thông báo se hien thi trên màn hình, ˆ ˆ ¯o ˜’ ˜ ˆ’ ˙ ’ `’ D ˆ’ ˙ ˙ và hãy suy nghı ky khi chon câu tra loi. ¯ e minh chung cho loi khuyên này xin d ’oc ke lai ˜ ˜ ´’ `’ ¯u ’ ˆ’ truong hop khi tác gia cài Red ’ ˙ Hat 7.1, và tu d ng nhan lên nút Next, vì cho rang phuong án ´ ` ˙ ˙ ’`’ ’ ’ ¯o ˆ ˆ ˘ ’’ theo mac d nh là d ’ . Ket qua là tác gia không˙the truy cap d ’oc d´ n máy này qua các giao ˘ ˙ ¯i ¯u ´ ˆ ’ ’ ˙ ˆ’ ˆ ¯u ’ ¯e ˆ thuc ma (telnet, ftp, NFS, Samba), mac dù d cau hình giao ˙dien mang cho máy. Nguyên ´’ ˙ ng ˙ ˘ ¯ã ´ ˆ ˙ ˆ ’’ ˘ ¯i ˙ ’`’ ’’ ¯u ’ nhân là˙trong phuong án theo mac d nh thì tuong lua d ’oc cài d ˘ t, và tuong lua d ¯a ˙ ˙` ’ ’ ’’ ¯óng het các ´ˆ D ˆ’ ’’ truy cap tu mang. ¯ e mo truy cap `’ ˙ này, thì trong quá trình cài d ˘ t can chı rõ các dich vu d oc ˙ ˙ ˙ ` ’ ˆ ˆ ¯a ˆ ¯u ’ ’ ’’ mo. Nhu ˙ ng chúng ta quá voi vàng! Thu hai, tác gia khuyên không nên d `ng ý˙voi viec ˙ ˙ ˙ ´’ ’ ˙ ´’ ˆ ’˙ tu ’ ˆ ¯oˆ ’’ ¯o ˙ ` ´ d ˆ ng khoi d ˆ ng vào giao dien d ˆ hoa. Vì cuoi cùng nguoi dùng không khó khan gì khi gõ ˙ ˙ ¯o ˆ ¯o ˆ ’`’ ˘ ˙ ˙ ˙ ˙ ˆ ˆ ´ ˆ ` câu lenh startx, còn viec cau hình giao dien d ˆ hoa (neu có gì d làm viec không d ˆ ¯o ´ˆ ¯ó ˆ ¯úng) ˙ oi dùng moi rat khó thành công. voi ngu `’ ´’ ´’ ˆ ´ ˙ ˙ ˙ ˙ ’ ` Sau khi làm xong các công viec phòng xa, can quyet d nh se to chuc khoi d ˆ ng nhieu ˆ ˆ ´ ¯i ˆ ˜ ˆ’ ´’ ’’ ¯o ˆ` ˙ a (phân vùng) d ’ cài d ˘˙ tuc là can chia o d a thành so ˙ ¯ ’ ´ HDH nhu the nào, chuan bi các o d˜ ˆ ˆ’ ˆ’ ¯ı ¯e ˆ ¯at, ´’ ` ˆ ˆ’ ¯ı˜ ´ˆ phân vùng ca ´ ˙ ’ ˙ `n thiet. Nhung truoc khi chuyen sang các buoc cu the d ˆ’ chuan bi o d˜a, xin ’ ¯e ’ ’ ¯ı ˆ ˆ ’ ’´’ ˆ ’´’ ˆ ˆ ˆ d ’oc nói qua mot chút ve cau trúc cua d˜a và quá trình khoi d ˆ ng HDH. Neu ai d˙ không d ’ ¯u ’ ˆ ˆ ´ ` ˆ ’ ¯ı ’’ ¯o ˙ ¯ ´ˆ ¯ó ¯u ˙ nhan d ’ d ˙c phan lý thuyet này, thì có the bo qua chúng và chuyen thang d´ n van d ` ˜ ¯e ¯o ` ´ ’ ’ ˙ ’ ’ kiên ˆ ˆ ˆ ˆ ˆ ˆ ˘ ¯e ´ ¯e ˆ ˆ ˆ chon chuong trình ˙ khoi d ng. ’’ ¯o ’’ ˆ ˙ ˙ 2.3 ’’ ¯ ˆ Phân vùng trên d˜a và quá trình khoi dong ¯ı ˙ 2.3.1 ´ ˆ ´ ˆ ’ ¯ı The nào là cau trúc "hình hoc cua d˜a" ˙ ’ ¯o ´ ¯ı ´’ ˆ ` ˆ ¯ı ’ ´’ `’ ` Nhu ban d c biet, d˜a cung gom vài d˜a có phu lop tu tính, nam trên cùng mot truc và quay ˘ ˆ ˙ toc lon. Doc/Ghi du lieu d oc thuc hien boi các d `u d c nam giua ˙ ˙ a này, di voi van ´ ’ ¯ ˙ ´ ’’ ` ´’ ˆ ˆ ˜’ ˆ ¯u ’ ’ ’ ˆ ¯a ¯o ˆ ˘ ˜’ các d˜¯ı chuye ˙n tu tâm d a ra rìa ngoài cua d ˙ Vòng tròn d `u d c ve ra ˙ ’ `’ ˙ ˙’ ˙ ˙ ˆ ˜ ¯ı ¯ıa. ˜ ¯a ¯o ˜ trên các d˜a khi quay quanh ˆ ¯ı ˆ ’ ` ˙ˆ ˘ ` chúng goi là rãnh (track), còn tap hop các rãnh nam chong lên nhau goi là cylinder. Moi ˜ ˆ ˙ ˙ có ˙the ghi vào moi sector 512 byte thông tin. Vì the d ˘ c ˙ rãnh lai chia thành các sector, và ˆ’ ˜ ˆ ´ ¯a ˆ dˆ ˙’ ’m cua mot o d˜a thuong là tap hop ba sô: so cylinder/so rãnh trong cylinder/so sector trên ’ ¯ı ´ ´ ´ ˙ ¯ie ˆ ˆ ’`’ ˆ ’ ˆ ˆ ˆ rãnh hay còn viet tat là C/H/S ˙ chu cái d ˆ u tiên cua các thuat ngu Tieng Anh tuong ung: ˙ ´ ´ ˆ ˘ (ba ˙ ˜’ ¯a` ’ ˆ ˜’ ´ ˆ ’ ’ ´’ Cyliner/Head/Sector). Ba so này goi là cau trúc "hình hoc cua d˜ ¯ ˜ ´’ ´ ´ ´ ’ ¯ı ˙a". Dıa voi cau trúc hình hoc ˆ ˆ ˆ ˙ C/H/S có dung luong C*H*S*512˙byte. ’’ ˙ ˙ ´ ´ ´’ ¯o ´ ’ ¯ ˜a cung là các thiet bi khoi, tu là d ˙ c và ghi thông tin theo các khoi, và kích thuoc nho Dı ´’ ˆ ˙ ˆ ˆ ’´’ ´ ’ ˆ ´ ` nhat cua khoi bang mot sector (512 byte). ¯ e ˆ ˘ ˆ Dˆ ’ có the ghi thông tin lên d˜a, can d ˘ t d ˆ u d˜a ˆ’ ¯ı ` ˆ ¯a ¯a ¯ı` d ˙ ´ ˆ ` ’ cho controller biet can ghi thông tin này vào sector nào. Sector d ’oc ˙ ¯úng vi trí, tuc là chı ´’ ˆ ¯u ’ d ˙ ’ ´ ´’ ’ ´ ´’ ’ ¯a ¯o ` ´ ´’ ’ ˙ ¯ánh d a chı theo so thu tu cylinder, so thu tu d ˆ u d c (hay rãnh) và so thu tu sector trên rãnh. ¯i ˆ ˆ ˆ ˙ ˙ ˙ ˙ ˙
    11. ¯ı ’’ ¯ ˆ 2.3 Phân vùng trên d˜a và quá trình khoi dong 7 ˙ 2.3.2 ’ ’ ¯ı Phân vùng và bang phân vùng cua d˜a ˆ ´ ˆ’ ¯ı Trong các he thong Intel o d˜a thuong d ’oc chia thành các phân vùng. Rat có the nguyên ˆ ’`’ ¯u ’ ´ ˆ ˆ’ ˙ phân vùng là nguyên nhân li˙ su: các phiên ban MS-DOS d `u tiên không the ’ nhân cua viec ˆ ch ’’ ’ ¯a ˆ ˆ’ ˙ c các d a lon, mà dung luong˙ d a lai phát trien nhanh hon kha nang cua DOS. ’’ su dung d ’o ¯u ’ ¯ı ´’ ˜ ˜ ’ ’ ¯ı ˆ’ ’ ’ ˘ ’ Khi d ¯ã˙ d nghı ra viec chia o d a thành các phân vùng. De làm d oc d `u này, trong sector ˙ ’ ¯ı ˙ ˙ ’ ¯ó ˜ ˆ ˆ ˜ ¯ ˆ ¯u ’ ¯ie ’ ˆ ˙ ˙´ ’ ´ˆ ’ ¯ı ´ ˆ ’ ` ´ ˆ’ ¯ı so 0 cua d˜a (sector so 0 cua rãnh d ˆ u tiên trong cylinder so 0) ghi nho bang chia o d˜a thành ¯a ˆ ’ các phân vùng (partition table). Mo ˜i phân vùng d ’oc dùng nhu mot d˜a vat lý riêng re. Mot ˆ ¯u ’ ’ ˆ ¯ı ˆ ˜ ˆ truong hop nói riêng d là trong các phân vùng khác ˙ nhau có the˙ cài d ˘ t˙ các he d `u hành ’ ˙ ’`’ ’ ¯ó ˆ ¯a ˆ ¯ie ˆ khác nhau. ˙ ˙ ˙ ’ ´’ ’ ˜ ˆ ’ Bang phân vùng chua 4 ban ghi 16 byte cho 4 phân vùng chính. Moi ban ghi có cau trúc ´ ˆ nhu sau: ’ kênh giao tác struct partition { char active; /* 0x80: phân vùng kích hoat, 0: không kích hoat */ ` ˙ ˙ char begin[3]; /* CHS sector dˆu tiên, 24 bit ¯a char type; /* loai phân vùng (ví du, 83 — LINUX_NATIVE, 82 — LINUX_SWAP) */ ˙ ´ ˙ char end[3]; /* ˆ CHS sector cuoi cùng, 24 bit */ int start; /* ´ ’ ` so cua sector dˆu tiên (32-bit, tính tu 0) */ ˆ ¯a ` ’ int length; /* ´ ˆ so sector có trong phân vùng (32 bit) */ }; ’ ¯ı ’`’ ¯u ’ ’’ Bang phân vùng d˜a thuong d ’oc tao boi chuong trình fdisk. Trên HDH Linux ngoài ’’ ¯ chuong trình fdisk "truye ’’ `n thong" (tuy˙vay rat khác so voi chuong trình fdisk trong MS-DOS ˆ ´ ˆ ˙ ˆ ´ ˆ ´’ ’’ ˙ và Windows), còn có hai chuong trình d ˆ’ làm viec voi phân vùng d˜a: cfdisk và sfdisk. ’’ ¯e ˆ ´’ ¯ı ’’ ´ˆ ’ ’ ˙ ¯e Chuong trình cfdisk, giong nhu fdisk chı dành d ˆ’ làm viec voi bang phân vùng d˜a: nó ˆ ´’ ’ ¯ı không quan tâm chú ý d ˆ ´ n thông tin có trên d˜a. Chı khác bie˙t voi fdisk o giao dien thuan ¯e ¯ı ’ ˆ ´’ ’’ ˆ ˆ ˜ ˙ ˙ ˙’ ˆ ’ ˆ ’’ ˆ ˆ ´ tien: chı dan su dung lenh và he thong trình d ’n (thuc d ’n). Chuong trình sfdisk có vài kha ˆ ¯o ’ ¯o ’’ na˙ng cao hon, ví ˙ , cho phép ˙ ˘ du ˙ thao tác trên các phân ˙ vùng d có cua d a. ’ ¯ı ’ ¯ã ˜ ˙ ’’ dung truong begin và end cua bang phân vùng và Interrupt 13 cua BIOS (Int 13h) ’ ’ ’ DOS su ’`’ d ˆ’ truy cap to ¯ı ˙i d a, vì the không the su dung d a có dung luong lon hon 8,4 Gbyte, ngay ca ¯e ˆ ´’ ˜ ´ ˆ ˆ’ ’’ ¯ı˜ ’’ ´’ ’ ’ ˙ voi các BIOS moi (ve ˆ ´’ ´’ ˆ ` van d ˆ này se nói d˙ n o sau), còn phân˙ vùng thì không the lon hon 2,1 ´ ¯e ` ´ ’’ ’ ´’ ’ ˜ ¯eˆ ˆ ´ ’ ˆ ´ Gbyte (nhung d là do han che cua he thong tap tin FAT16). ’ ¯ây ˆ ˆ ˆ ’ ’’ ˙ ˙ ˙ ’ ’ ˜ Linux thì chı su dung truong start và length cua bang phân vùng d˜a và ho tro các phân ’ `’ ¯ı ˆ ’ vùng chua d ˆ´’ ¯e ˙ ´ n 232 sector, tuc là dung luong có the d t 2 Tbyte ´’ ’ ¯a ˙ ’’ ˆ ˙ ˙ ’ ˆ’ ¯ı ’ Vì trong bang 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˜a ´ ˆ ¯ı ` ´ ˆ’ ´’ ’ ngay tu d ˆ u dã han che: không the lon hon 4. Khi mà 4 phân vùng tro thành ít, thì nguoi ta `’ ¯a ˆ ’’ ’`’ sáng che ra phân ˙ ´ ˆ ´ vùng lôgíc. Mot trong so các phân vùng chính tro thành mo rong (loai phân ˆ ˆ ’’ ’ ˆ ’ ˙ ˆ ’ ´ ’`’ vùng - 5 hay F hay 85 trong he co so muoi sáu). Và trong phân vùng mo rong nguoi ta tao ra ˆ ’’ ˆ ˙ ’`’ ˙ ˙ các phân vùng lôgíc. Phân vùng mo rong không d ’oc su dung truc tiep mà chı dùng d ˆ’ ghi ˙ ˙ ’’ ˆ ¯u ’ ’’ ’ ´ ˆ ’ ¯e các phân vùng lôgíc. Sector d ˆ u tiên cu ` ˙ ’ a phân vùng mo rong ghi nho bang phân vùng voi ˙ ’ ˙ ˙ ´’ ’ ´’ ¯a ’ ˆ ´ ¯a ` bon d ˆ u vào: mot dùng cho phân vùng lôgíc, mot cho phân vùng mo rong khác, còn hai cái ˙ ’’ ˆ ˆ ˆ ˆ còn lai không d ˙oc su dung. Moi phân vùng mo ˙ ˆ ng có mot bang chia ˙ ’ a mình, trong bang ¯u ’ ’’ ’ ˜ ˆ ’’ ro ˆ ’ cu ’ này, cu˙ ng giong nhu trong phân vùng mo rong chính, chı su dung có hai dòng d ’ d a ra mot ´ ˙ ˙ ’’ ˆ ˙ ’ ˙’ ’ ˜ ˆ ’ ¯e ¯u ˆ ’ ˆ phân vùng lôgíc và mot phân vùng mo rong. Nhu vay, thu d ˙oc mot chuoi các mat xích tu ˆ ’’ ˆ ˙ ’ ˆ ¯u ’ ˆ ’ ˜ ˆ ´ ˘ ˙` ’ ’ ´ ˙ bang phân vùng, mat xích d ˆ u tiên mô ta ˘ ` ’˙ ba phân vùng chính, và moi mat xích tiep theo – ˙ ˙ ˙˜ ´ ´ ¯a ˆ ˘ ˆ mot phân vùng lôgíc và vi trí cua bang tiep theo. ˆ ’ ’ ´ ˆ ˙ ˙ ´ ˜ Chuong trình sfdisk trên Linux cho thay toàn bo chuoi này: ’’ ˆ ˆ ˆ ˙
    12. 8 Cài dat HDH Linux trên cùng máy tính voi Windows ¯˘ ¯ ´’ ˙ kênh giao tác [root]# sfdisk -l -x /dev/hda Disk /dev/hda: 784 cylinders, 255 heads, 63 sectors/track Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0 Device 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 ´ ´ ´ So phân vùng lôgíc theo nguyên tac không han che, vì moi phân vùng lôgíc có the chua ˆ ˘ ˆ ˆ˜ ˆ’ ´’ ˙ Tuy nhiên trên thuc the van có nhung han ’ bang phân vùng và các phân vùng lôgíc cua mình. ’ ’ ´ ˆ ˆ ˜ ˜’ che ’ ´ . Ví du, Linux không the làm viec voi hon 15 phân vùng trên các d˜a SCSI và hon 63 phân ˙ ˙ ˆ ˆ ˆ ´’ ’ ¯ı ’ ˙ vùng trên d˜a IDE. ˙ ¯ı ’’ ˆ Phân vùng mo rong trên mot d˜a vat lý, hay trong mot phân vùng mo rong chua nó (có ˆ ¯ı ˆ ˆ ’’ ˆ ´’ the ’ goi là "me") chı có the làm mot: không mot chuong trình phân chia o d˜a˙nào trong so d ˆ ’ ˙ ’ ˆ ˙ ˆ ˙ ˆ ’’ ˙ ˆ’ ¯ı ´ ¯ã ˆ ˙ ˙ tuong tu) có the tao˙ thêm mot phân vùng mo rong thu hai. ˙ có (fdisk và ’ ’ ’ ˆ’ ˆ ’’ ˆ ´’ ˙ ˙’ ˙ ˙ ˆ’ d˜a trên Linux nói riêng (o d˜a vat lý) d ’oc truy cap qua tên cua thiet bi: /dev/hda, O ¯ı ˆ ¯ı ˆ ¯u ’ ˆ ’ ´ ˆ /dev/hdb, /dev/sda, v.v. . . Các phân ˙ vùng˙ chính có thêm so 1-4 trong˙ tên thiet 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/ ˙ ´ ` ˘ ¯a `’ ´ ˆ `’ ˜’ ` ¯e ˆ ¯e ’’ ˆ ˆ’ . . . (bat d ˆ u tu so 5). Tu nhung gì d ˆ cap d´ n o trên có the suy ra tai sao lai có the bo qua các ˆ’ ’ tên nhu /dev/hda3 hay /dev/hda4 ¯o ˙ (d n gian là phân vùng chính thu˙ba và thu tu không ’ ˙ ´’ ´’ ’ ’ ’ d ’oc tao ra) và ngay sau /dev/hda2 ban d c tha ¯u ’ ¯o ´ y /dev/hda5 (phân vùng lôgíc trong phân ˆ vùng mo rong /dev/hda2), và sau d ˙ viec d ˙ ˙’ ’ ˆ ˙ ´ ¯ó thì ˆ ¯ánh so lai theo thu tu thông thuong. ˆ ´’ ’ ’`’ ˙ Trong Windows các phân vùng lôgíc nha ¯u ’ ˙ n d oc tên (chu cái), bat d `u tu chu cái cuoi ˙ ˙´˘ ¯a `’ ˜’ ´ ˆ ’ ˜’ ˆ ˆ dùng dành cho phân vùng chính. Ví du neu mo ¯ı ’ ´ ˙ t d a cung có hai phân vùng chính (C: và D:) ˙ ´ ˆ ˆ ˜ ’’ ˆ ˙ ˙’ và mot phân vùng mo rong, trong phân vùng mo rong tao ra hai phân vùng lôgíc, thì nhung ˆ ’ ˆ ˜’ phân ˙vùng lôgíc này se ˙ oc d ˘ t tên E: và F:. Xin nói thêm, trong Windows NT và 2000/XP ˙ ˙ ˜ d ’ ’ ¯a ¯u có the thay d ˆ’i tên cua các˙phân vùng d˜a. ˆ’ ¯o ’ ˙ ¯ı 2.3.3 ’’ ¯ ˆ Quá trình khoi dong HDH công ty Microsoft ¯ ˙ Dù he d ˆ u hành có là gì, thì d ˆ’ có the bat d ˆ u d ˆ u khien máy tính, can nap HDH vào bo ` ˆ ¯ie ¯e ˆ’ ´ ¯a ¯ie ˘ ` ` ˆ’ ` ˆ ˆ ´’ ˙ the hãy xem xét qua quá trình khoi d ng cua các HDH khác nhau. Chúng ¯ta chı quan nho. Vì ´ ’’ ¯o ’ ˙ ’ ˙ ˆ ˆ ¯ ’’ ¯o `’ ˆ’ ¯ı ´’ tâm d´ n viec khoi d ˆ ng tu o d˜a cung, nên se ˙không xem xét d´ n viec khoi d ng tu d a mem, ’’ ¯o `’ ¯ı ` ¯e ˆ ˆ ˜ ¯eˆ ˆ ˆ ˜ ˆ CD-ROM và ˙ qua mang. Hãy bat d `u tu MS-DOS và MS Windows˙ cu (xin d ` ng quên rang, ˙ ´ ˆ ˘ ¯a `’ ˙ ` ˘ ˜ ¯u’ viec phát trie ˙ ’n và hoàn thien máy tính cá nhân song song voi su phát trien cua HDH cua ´’ ’ ’ ’ ’ ˆ ˆ ˆ ˆ ¯ ˙ Microsoft và nhung quye ¯i ´ t d nh su dung trong các HDH này có a˙ huong manh d´ n quyet ˙ ’’ ’ nh ’’’ ´ ˜’ ˆ ¯ ¯e ˆ ˆ ˙ ´ t bi). ˙ ˙ ’ ˆ’ d nh cua các nhà phát trien thie ¯i ˆ ˙ ˙
    13. ¯ı ’’ ¯ ˆ 2.3 Phân vùng trên d˜a và quá trình khoi dong 9 ˙ ’ ¯o ´ ˆ ˆ ` Nhu ban d c biet, khi bat máy tính d ˆ u tiên se chay chuong trình POST (Power On Self ¯a ˜ ’’ ˙ong ˙trình xác d nh dung luong bo nho, thu ˙nghiem bo nho, và xác d nh các thành ˙ Test). Chu ’ ’ ¯i ’’ ˆ ´’ ’’ ˆ ˆ ´’ ¯i ` phan khác (bàn phím, o ´’ ˆ ˆ’ cu˙ng. . . ), kho˙ d ˆ ng các the adaptor. Trên màn hình thu˙’ng xuat hien ’’i ¯o ˙ ’ ˙ ˙ ’o ` ´ ˆ ˆ các thông báo ve ˆ ’’ ˆ ´’ ˆ `˙ ˆ ` dung luong bo nho, ve viec thu nghiem bo nho, danh sách các thiet bi nhan ’’ ˆ ˆ ´’ ´ ˆ ˙ ˆ ra (o d˜a cung và mem, bo xu lý, cong COM và v.v. . .˙). ˙ ˆ’ ¯ı ´’ ` ˆ ˙ ˆ ’’ ˙ ’ ˆ ˙ ˙ ˙ ˙ ’’ ´ ˆ ˆ ˆ ’ Sau khi hoàn thành viec thu nghiem POST goi Int 19h. Công viec cua Int 19h là tìm thiet ˆ ’’ ¯o bi khoi d ˆ ng. Viec tìm kie ˙ m thuc hien theo thu ˙ xác d nh trong Setup BIOS và theo cách ´ ˙ ´’ tu ˙ ˆ ˆ ’ ˆ ’ ¯i ˙˘ ˙ ´˙ ’ ´˙ ˙ ´ ¯ı ˙ ˆ’ ’’ ¯o ˙ tham dò sector so 0 cua các thiet bi tuong ung. Neu d˜a có the khoi d ˆ ng, thì trong sector so ´ ˆ ˆ ’ ’ ´’ ˆ ˆ 0 cu ¯ı ’ ’ ¯o ˙ ’ a d˜a có ban ghi khoi d ˆ ng chính – Master Boot Record (MBR). Hai byte cuoi cùng cua ˙ ´ ’ ’ ˆ ˙´ ´ ˆ ˆ ˆ ˆ ´ MBR – "so màu nhiem", là dau hieu cho biet sector có MBR, và theo d d˜a có the khoi d ˆ ng. ˆ ¯ó ¯ı ˆ’ ’’ ¯o ´ ˙ ˙ ´ ’ ’’ ˙ Ngoài "so màu nhiem" MBR còn chua bang phân vùng d˜a d nói o trên, và mot chuong trình ˆ ˆ ’ ¯ı ¯ã ˆ ’’ nho – trình khoi d ˆ˙ng chính, kích thuoc chı có 446 (0x1BE) byte. ’ ’ ¯o ’ ’´’ ’ ˙ ’ ˙ ´ ´ ’ ’’ ¯o Bang 2.1 cho thay cau trúc cua sector khoi d ˆ ng chính sau khi cài d ˘ t Windows. ˆ ˆ ¯a ˙ ˙ ’ ´ ’ ’’ ¯o Bang 2.1: Cau trúc cua sector khoi d ˆ ng chính ˆ ˙ ˆ’ Dich chuyen Noi dung ˆ ˙ ˙ ’ ’’ ¯o 0x000 Mã cua trình khoi d ˆ ng chính ˙ 0x1BE ’ ˆ’ ¯ı Bang phân vùng o d˜a 0x1FE ´ "So màu nhiem" (0xAA55) ˆ ˆ ˙ MS-DOS, Windows95 và NT ghi nho DOS MBR trong khi cài d ˘ t. Ngoài ra cung có the ´’ ¯a ˜ ˆ’ ’ tao MBR cua MS voi câu lenh DOS sau: fdisk /mbr. ´’ ˆ ˙ ˙ Xin tro lai voi quá trình˙ khoi d ng. Int 19h cua BIOS nap trình khoi d ng chính vào bo ’’ ´’ ’’ ¯o ’ ’’ ¯o ˆ ˆ ˆ nho máy tính ˙ và chuyen quyen d `u khien cho chuong trình này. Nhung ˙ ong trình "bé ’ ` ¯ie ˙ ’ ˙ ˙ ´’ ˆ ˆ ˆ ˆ ’’ ’ chu ’ ’ ¯u ’ ˘ ’’ ¯o ´ ’ ˜’ nho" này không d ’ kha nang khoi d ˆ ng HDH; tat ca nhung gì mà nó có the làm – d là nap ’ ˆ ˆ’ ¯ó vào bo nho chuong trình manh hon – ˙ trình¯khoi d ng thu hai. ’’ ¯o ˙ ˆ ´’ ’ ’ ’ ˆ ´’ ˙ D ˆ’ ` ˙ ’ ˙ ¯ e làm d ’oc d ˆ u này, nó tìm trong bang phân vùng kích hoat và d ˙ c vào bo nho trình ¯u ’ ¯ie ¯o ˆ ´’ khoi d ˆ ng thu ˙ ’’ ¯o ´’ hai, bat d ˆ u tu sector lôgíc d ˆ u tiên cua phân vùng˙ kích hoat. Hãy˙ chú ý d´ n ´ ` ˘ ¯a `’ ¯a` ’ ¯eˆ cum tu ˘ ˆ ˙ "bat d `u tu". Vì trình khoi d ng thu hai trên các he thong khác nhau có d dài khác `’ ´ ¯a `’ ’’ ¯o ´’ ´ ˙ ˆ ˆ ˆ ¯o ˆ ˙ nhau. ˙ ˙ ˙ ¯u ’ ¯i ’´’ ˆ ´ Trong phân vùng d ’oc d nh dang duoi he thong tap tin FAT, trình khoi d ˆ ng thu hai chiem ˆ ˆ ’’ ¯o ´’ ´ ˆ mot sector (512 byte). Trong ˙ ˙ phân vùng d ˙ dang ˙duoi he thong tap tin NTFS, trình khoi ˙ ´ ˙ ’’ ˆ ¯inh ’´’ ˆ ˆ ˆ dˆ ˙ng thu hai chiem vài sector. ´’ ´ ˙ ˙ ˙ ˙ ¯o ˆ ˙ Trình khoi d ng thu hai nap lop chuong trình d `u tiên, can thiet cho viec khoi d ng he ’’ ¯o ´’ ´’ ` ´ ’’ ¯o ˆ ’’ ¯a ˆ ˆ ˆ ˆ ˆ ˆ ` d ˆ u hành. Trong ’`’ ˙ truong hop MS DOS chuong trình khoi d ng d ng nap IO.SYS theo d a chı ˙ ’’ ¯o ¯o ˙ ˙ ˙’ ¯ie ’ ’’ ˆ ˆ ¯i 700h, sau d MSDOS.SYS ˙ và chuyen quyen d `u khien cho SYSINIT cua môd IO.SYS. ’ ` ’ ˙ ˙ ˙ ’ ˙ ¯ó ˆ ˆ ¯ie ˆ ˆ ¯un Ne ´ u vì lý do nào d không tìm thay trên d˜a phân vùng kích hoat, thì quá trình kho d ˆ ng ˆ ¯ó ´ˆ ¯ı ’’ ¯o ˙ ´ m khi su dung, nhung ˙ ˜ ´ ´’ ˆ ’’ se tiep tuc voi viec xu lý Int 18h. Truong hop này trên thuc te rat hie ˆ ’`’ ’ ’ ´ ´ˆ ˆ ˆ ’’ ’ ’ ˘ kha nang the ˙ ˙ này có ˙ ’ có ích trong truong hop nào d Trong khi khoi d ng tu xa, khi he d `u ˙ ’’ ¯o ˙ ˆ ’`’ ’ ¯ó. ˆ `’ ˆ ¯ie ˆ hành kho ¯o ˙ ’’i d ˆ ng tu máy chu, thì Int này d ’oc POST chuyen huong lên ROM cua cac mang. `’ ’ ’ ’´’ ˙ ’ ˙ ¯u ’ ˆ ¯Doi voi các HDH khác cua Microsoft thì quá trình khoi d ˆ ng dien ra tuong tu.˙ ´ ´’ ˙ ˆ ¯ ’ ˙ ’’ ¯o ˜ ˆ ’’ ’ ˙ ˙ ˙ ’’ ¯o ´ • Windows95 khoi d ˆ ng giong nhu DOS nhung thay the IO.SYS và MSDOS.SYS boi ˆ ’ ’ ´ˆ ’’ các tap tin cua mình. ’ ˙ Các tap tin DOS d oc giu lai duoi các tên tuong ung IO.DOS và ˆ ˆ ¯u ’ ˜’ ’ ’´’ ’ ’ ´’ MSDOS.DOS. Khi ban d ˙ chon khoi d ˆ ng DOS, Windows95 se d ˆ’i tên các tap tin ˙ ¯o c ’’ ¯o ˙ ˙ ˜ ¯o ˆ ` ˙ rong w40 và phuc ˙hoi tên ban d `u cua các tap tin he thong cua ˙ ˙ ` ˙ ’ ’ cua mình voi phan mo ˆ ´’ ˆ ’’ ˆ ¯a ’ ˆ ˆ ˆ ´ ˆ DOS. Quá trình khoi d ˆ ng ´ ˙ tiep tuc voi viec nap IO.SYS. Nhu the, sector khoi d ng cua ˙ ˙ ˙ ’’ ¯o ˆ ´’ ˆ ’ ´ ˆ ’’ ¯o ˆ ’ DOS và Windows95 là ˙ nhu nhau. ˙ ˙ ˙ ˙ ’
    14. 10 Cài dat HDH Linux trên cùng máy tính voi Windows ¯˘ ¯ ´’ ˙ ’’ ´ ’ • Windows NT4 su dung MBR DOS, nhung thay the ban ghi khoi d ˆ ng cua phân vùng ’ ˆ ’’ ¯o ’ ` kích hoat bang cách ˙thay the NTLDR vào cho IO.SYS. Dây là mot ˙ ong trình mang ´ ˜ ˘ ˆ ˆ ¯ ˆ chu ’ ’ và có the làm d ’oc nhieu thu. Ví du, có the tìm tap tin boot.ini˙ và neu nhu tham˙ so ˙’ ˆ ¯u ’ ` ˆ ´’ ˆ’ ˆ ´ ˆ ’ ´ ˆ timeout lon hon 0, ´’ ’ ˙ thì d a ra trình d ˙n (thuc d n) khoi d ng. ˙ ’ ¯u ’ ¯o’ ’ ¯o ’ ’ ¯oˆ ˙ ˙ ˜ ˆ ’ ˆ` Moi dòng cua phan [operating systems] trong tap tin boot.ini xác d nh mot ˆ ¯i ˆ phuong án (mot HDH) kho ¯o ’’ ˆ ¯ ’’i d ˆ ng và d ’oc viet theo mau sau: ˙ ¯u ’ ˆ ´ ˜ ˆ ˙ ˙ d a_chı˙ ¯i ’ ˙ ¯o ’ ˙ ´ ’_trình_khoi_dˆng_thu_hai="tên_goi_cua_phuong_án" ’ ’ ’’ ˙ ’ ’ ’’ ¯o ˙ ˙ ’ ’ là mot phân vùng cu the nào d cua d˜a cung ¯ ˙a chı cua trình khoi d ˆ ng thu hai có the Di ´’ ˆ ˆ ˆ ¯ó ’ ¯ı ˜ ’ ˆ ’’i d ˆ ng. Duoi ˙d là mot ví du tap tin˙ boot.ini: nhu tap tin kho ¯o ’´’ ¯ây ˆ ˆ ˙ ˙ ˙ ˙ ˙ ˙ [operating systems] multi(0)disk(0)rdisk(0)partition(3)WINNT="Windows NT Workstation 4.00 VIE multi(0)disk(0)rdisk(0)partition(3)WINNT="Windows NT Workstation 4.00 VIE C:="Microsoft Windows" C:BOOTSECT.LNX="Linux" ´ ˜ ’’ ¯o ’ ¯u ’ ’ Neu nguoi dùng chon NT, thì se khoi d ˆ ng theo d a chı phân vùng d ’oc chı trên dòng d ˆ u ˆ ’`’ ¯i ` ¯a tiên. Trên dòng tuong u ˙ ng voi phuong án ˙Microsoft˙Windows, chı d a ˙ "C:", vì tên cua ’ ¯u ra ’ ’ ’ ´’ ´’ ’’ ’ ˆ ’’ ¯o ¯u ’ ´ tap tin khoi d ˆ ng d ’oc lay theo mac d nh: bootsect.dos. Tap tin d ’oc nap vào bo nho và quá ˆ ˘ ¯i ˆ ¯u ’ ˆ ´’ ˙ khoi d ng d oc˙tiep tuc giong nhu khi ban ghi khoi d˙ ng d oc nap boi mã chuong trình ˙ trình ’’ ¯o ¯u ’ ˆ ´ ´ ˙ ˙’ ’ ’’ ¯o ¯u ’ ˙ ˙ ’ ˙ ˆ ’ ˆ ˆ ’ ’ ’’ tu MBR. ˙ `’ ˙ ˙ ˙ ˙ ˙ D´ ´’ ˆ ’’ ¯o ˆ ´ ˆ’ ’’ ` ¯ó. ’ ˆ ¯ oi voi viec khoi d ˆ ng các he thong khác, có the su dung cách d Chı can thêm vào ˆ ˆ ˙ chua liên ket d´˙n tap tin khoi d ng khác. ˙Khi chon các dòng này se khoi ˙ ´ ¯e ˆ ’’ ¯o boot.ini các dòng ´’ ˆ ˆ ˆ ˜ ’’ d ˆ ng HDH tuong ung. Trong ví du trên ˙ Linux cung d oc khoi d ng˙ theo các này. Trong tap ˙ ’’ ¯o ¯o ¯ ’ ’ ´’ ˜ ¯u ’ ’ ˆ ˆ ˙ C:BOOTSECT.LNX can ghi ˙noi dung cua ban ghi khoi d ng, tao boi Linux (nói d ˙ tin ` ’ ’ ˙ ’ ˙ ’’ ˆ ˆ ’ ¯oˆ ¯úng ’’ ¯o ˙ ’ ’ hon – LILO, trình khoi d ˆ ng tiêu chuan cua Linux). ˙ ˙ ’ ˆ ˙ 2.3.4 ´ ¯ˆ ´’ ˆ ` Van de voi các d˜a lon ¯ı ´’ ’ ¯a ` ’ Trên MS-DOS và các phiên ban d ˆ u tiên cua Windows truy cap toi d˜a (trong d có ca buoc ˆ ´’ ¯ı ¯ó ’ ’´’ ` ’ ´’ ˙ ’ ’’i d ˆ ng d ˆ u tiên cua HDH) d ’oc to chuc qua Int 13 (Int 13h) cua BIOS. Khi này su dung kho ¯o ¯a ’ ¯ ’’ ¯u ’ ˆ su d ˙ d a chı sector trên d˜a trên co so C/H/S (xem trên). Chính xác hon: ’ ¯ánh ¯i ’ ¯ı ˙ ’ ’’ ’ ˙ ˙ ˙ • AH — chon thao tác; ˙ ’ ’ ’ ´ • CH — 8 bit nho hon cua so cylinder; ˆ ’ ’ ´’ ´’ ’ ´ ˆ ’ ’ ´’ ´ • CL — 7-6 bit tuong ung bit lon cua so cylinder, 5-0 tuong ung so sector; ˆ ´ ’ ¯a ¯o ` • DH — so cua d ˆ u d c; ˆ ˙ ´ cua d˜a(80h hay 81h). • DL — so ˆ ’ ¯ı ` ˆ ’ ` (Can luu ý rang viec d ˘ ´ ´ ¯a `’ ˘ ` ˆ ¯ánh so cylinder vat lý và rãnh thuong bat d ˆ u tu 0, còn sector trên ˆ ˆ ’`’ rãnh d ´ bat d ˆ u tu 1). Tuy nhiên trên ˙thuc te so d ˆ u d c không quá 16, còn so sector ¯ánh so ˘ ˆ ´ ¯a ˙`’ ` ´ ´ ¯a ¯o ’ ˆ ˆ ` ´ˆ ˙ d ’ chı ra cylinder, BIOS van không the làm ˙ trên rãnh – không quá 63, và dù có dùng 10 bit ¯e ’ ˆ ˜ ˆ ˆ’ viec voi d˜a dung luong lon hon 1024*63*16*512 = 528 Mbyte. ˆ ´’ ¯ı ’ ’ ´’ ’ ˙ De vuot qua han ˙ ´ này, nguoi ta áp dung nhieu cách "láu cá" khác nhau. Ví du, Extended ’ ’’ che ` ¯ ˆ ˙ ˆ ’`’ ˆ CHS (ECHS) hay ˙"Large disk support" (d˙ khi còn goi là "Large") su dung ba bit chua dùng ’’ ˙ ¯ôi ’ ˙ ˙
    15. ’ ’’ ¯ ˆ 2.4 Lua chon trình khoi dong 11 ˙ ˙ ˙ d´ n cua so thu tu d ˆ u d c d ˆ’ tang so cylinder. Cách này cho pehsp su dung cau trúc "hình ¯e ’ ´ ´’ ’ ¯a ¯o ¯e ˘ ˆ ˆ ` ´ ˆ ’’ ´ ˆ ’ hoc gia mao cua ¯ı ’ ˜ ˙ d a" voi 1024 cylinder, 128 d `u d c và 63 sector/rãnh. Bien d ’i Extended ˙ ´’ ˙ ´ ¯a ¯o ˆ ˆ ¯o ˆ ˙ thành d a chı CHS thuc (có the chua d´ n 8192 cylinder) d oc BIOS thuc hien. Cách này CHS ˙ ’ ’ ´’ ¯e ˙ ¯i ’ ˆ ˆ ¯u ’ ’ ’ ˆ cho phép làm ˆ ´’ ¯ı ˙ viec voi d a có dung luong d´ n 8192*16*63*512 = 4 227 858˙ 432˙byte hay 4,2 ˙ ˙ ˜ ’ ’ ¯e ˆ Gbyte. ˙ ˙ ’ ˆ’ Nhung các nhà phát trien càng ngày càng tang mat d ˆ ghi cua d˜a, so d˜a và so rãnh, và ˘ ˆ ¯o ’ ¯ı ´ ¯ı ˆ ´ˆ còn phát minh ra các phuong pháp khác d ˆ’ tang dung ’o ˘ ˙ lu˙ ng d a. Ví du, so sector trên rãnh ´ ’’ ¯e ’ ¯ı ˜ ˆ không còn co d nh mà tro thành khác nhau trên các rãnh ˙ ´ ¯i ˆ ’’ ˙ khác nhau (trên các rãnh nam gan ` ˘ ˆ` rìa ngoài cu ¯ı ˙ ´ ’ a d˜a, dài hon, so sector d ’oc tang lên). Ket qua là bo ba so C/H/S không còn ´ ’ ´ ’ ˆ ¯u ’ ˘ ˆ ˆ ˆ ’ phan ánh d ´ ’ ¯ı˙ ¯úng cau trúc "hình hoc cua d˜a", và các phiên ban BIOS cu không the ho tro truy ˆ ’ ˙ ˜ ˆ’ ˆ ’˜ cap toi toàn bo không gian d˜a. ˙ ˙ ˆ ´’ ˆ ¯ı ˙ ˙ Khi d nguoi ta nghı ra phuong pháp khác d ˆ’ làm viec voi các d˜a lên qua Int 13h - d ¯ó ’`’ ˜ ’’ ¯e ˆ ´’ ¯ı ¯ánh ’ ´ ’ ˙ ¯i ˆ ¯u ` ’ ˘ d a chı các khoi theo d ’ong thang ("Linear Block Addressing" hay LBA). Không d sâu vào ¯i ˙ ´ ˆ’ ` ´ ’ chi tiet, có the nói rang tat ca sector trên d˜a d ’oc d ˆ ˘ ˆ ´ ˆ ˆ ’ ´ ¯a `’ ` ¯ı ¯u ’ ¯ánh so mot cách tuan tu, bat d ˆ u tu sector ˆ ˘ ` ` ´ d ˆ u tiên trên rãnh so 0 cua cylinder so 0. Thay ’ ´ ˙ vào cho d a˙chı CHS mo˙ sector nhan d oc ˜ ’ ˜ ¯a ˆ ˆ ˆ ¯i ˆi ˆ ¯u ’ ’ ’ ´ ´’ ’ ’ mot d a chı lôgíc – so thu tu cua sector trong to ´ ´ ’ ˙ ’ng so tat ca sector. Viec d ´ ˙ ˙ ˆ ¯i ˆ ˆ ˆ ˆ ˆ ¯ánh so sector lôgíc ˆ ˙ d `˙u tu 0, trong d sector so 0 chua ban ghi khoi d ng chính (MBR). Trong Setup BIOS ´ ˆ bat ¯a `’ ˘ ˙ ´ ´’ ’ ’’ ¯o ˙ ¯ó ˆ ˆ ’ ho tro bien d ˆ’i so thu tu theo d ’ong thang thành d a chı CHS có dang "Ho tro LBA". Nhu ˜ ˙ ’ ˜ ˆ ’ ´ ¯o ´ ´’ ’ ˆ ˆ ¯u `’ ˘ ¯i ˆ ’ ’ ˙ vay, trong các phiên ban ’ ˙ BIOS moi thuong có lua chon voi ba phuo˙ng án: "Large", "LBA", ´’ ˙ ˙ ˆ ’`’ ’ ´’ ’’ và "Normal" (phuong án cuoi cùng có nghıa là không˙thuc hien bien d ˆ’i d a chı). ˙ ’’ ´ˆ ˜ ˙ ’ ˆ ´ ¯o ¯i ˆ ’ ´ ¯o ˙˜ ˙ ˙ ˆ ˆ ’’ Tuy nhiên trong che d ˆ LBA viec su dung d˜a vat lý van d ’oc thuc hien qua Int 13h, mà ¯ı ˆ ˆ ¯u ’ ’ ˆ Int 13h va ˙ ˙ ˙ ˜n su dung bo 3D (C,H,S). Vì nguyên nhân này xuat hien han che lên dung luong ’’ ˙ ´ ˙ˆ ˙ ˙´ ˆ ˆ ˆ ˆ ’’ cua d˜a: BIOS, và theo˙d MS-DOS và các phiên ban Windows d˙ˆ u tiên không the d ˙d a ’ ¯ı ˙ ¯ó, ’ ` ˙ ¯a ˆ’ ¯ánh ¯i ’ chı các d˜a có dung luong lon hon 8,4 Gbyte. ˙ ¯ı ’ ’ ´’ ’ ` ` ˙ ´ ’ Can chú ý rang han che nói trên chı áp dung voi các d˜a có giao dien IDE. Trong các ˆ ˘ ˆ ´’ ¯ı ˆ controller cua d˜a SCSI, ´ ’ ’ ¯ı ˙ so cua sector d oc chuyen vào các lenh SCSI, và sau d tu d a tìm ˙ ’ ˙ ˆ ¯u ’ ’ ˆ ˆ ¯ó ’ ¯ı ˜ ra vi trí ca `n thiet, vì the han che lên dung lu ’ ¯ı ´ ´ ´ ˙ ong d a không xuat hien. ˙ ´ ˆ ˙ ˆ ˆ ˆ ˆ ’ ˜ ˆ ˙ ` ˜’ ´ ˙ ´ ` ´ ’ ˙ ˜’ ´ ˙ ’ Mot lan nua muon nhac lai rang, tat ca nhung han che nói trên chı có ý nghıa trong giai ˆ ˆ ˆ ˘ ˘ ˆ ˆ ˜ d n khoi d ˆ ng HDH. Boi vì ˙ ¯oa ˙ ’ ’ ¯o ’˙ ’’ Linux và các phiên ban Windows moi nhat khi làm viec voi d˜a ´’ ´ ˆ ˆ ´’ ¯ı d ˙ ’ ¯ ˙không còn su dung Int 13 cua BIOS, mà su dung driver riêng cua mình. Nhung ˙truoc khi ’ ’’ ’ ¯ã ’ ’ ’´’ ˙ ’ ’ ¯u ˙’ ˆ’ ’’ ˆ ´ có the su dung driver cua mình, he thong phai d ’oc nap. Vì the trong giai d n khoi d ˆ ng d ˆ u ˆ ´ ˆ ¯oa ’’ ¯o ¯a ` ´ t ky ˙he thong nào cung can su dung BIOS. ¯ ieu này han che viec d ˘˙t nhieu he thong tiên ba ` ˆ ˆ ˆ ´ ˜ ` ˙ ’’ ˆ ˙ D ˙` ˆ ´ ˆ ¯a ˆ ˆ` ˙ˆ ´ ˆ ra ngoài vùng ˙ 8 Gbyte d a d `u tiên: chúng không the khoi d ˙ng tu d ˙ mac dù sau khi khoi ˙ ’ ’’ ¯o `’ ¯ó, ˘ ˙ ˙ ’’ ˜ ˆ ¯ı ¯a ˆ ˆ d ˆ ng thì có the làm viec voi các d˜a có dung luong lon hon nhie ¯ ˆ’ ˙ `u. De có the hieu cách thoát ˙ ’ ’ ¯o ˆ’ ˆ ´’ ¯ı ’ ’ ´’ ’ ˆ ˆ ˆ ˙ ’ i nhung han che này, chúng ta can mot chút kien thuc ve quá trình khoi d ng cua HDH kho ´ ˙ ` ˙ ´ ´’ ˆ ` ’’ ¯o ’ ¯ ˜’ ˆ ˆ ˆ ˆ ˆ Linux. ˙ ˙ ˙ 2.4 ’’ ¯ ˆ Lua chon trình khoi dong ’ ˙ ˙ ˙ 2.4.1 ’’ ¯ ˆ ’ Trình khoi dong LILO cua HDH Linux ¯ ˙ ’’ ¯o ¯u ’ ´ ’’ ˆ’ ’’ ¯o Trình khoi d ˆ ng LILO d ’oc viet boi Werner Almesberber. LILO có the khoi d ˆ ng nhân ˆ Linux tu d˜a me `’ ¯ı ˙ `m, d a cung, và cung có the khoi d ng các he d `u hành khác: PC/MS-DOS, ˙ ’ ’’ ¯o ˙ ˆ ¯ı ´’ ˜ ˜ ˆ ˆ ˆ ¯ieˆ ˙ ˙ DR DOS, OS/2, Windows 95/98, Windows NT/2000/XP, 386BSD, SCO UNIX, Unixware v.v. . . LILO cho phép chon d´ n 16 he d ˆ u hành khác nhau d ˆ’ khoi d ˆ ng. ¯e ˆ ˆ ¯ie` ¯e ’’ ¯o LILO không pha ’ i là chuong trình˙d ’n le mà là mot bo gom nhieu chuong trình: trình khoi ˙ ’’ ¯o ’ ˆ ˆ ˆ ` ` ˙ ’’ ˆ ’’ d ˆ ng, các chuong trình su dung d ˆ’ cài d ˘ t và cau hình ’’ ´ ˙ trình khoi d ng, và các tap tin phuc vu: ˙ ’’ ¯o ¯o ’’ ¯e ¯a ˆ ˆ ˆ ˙ ˙ ˙ ˙ ˙ ˙ ˙
    16. 12 Cài dat HDH Linux trên cùng máy tính voi Windows ¯˘ ¯ ´’ ˙ • chuong trình /sbin/lilo, chay duoi Linux, phuc vu d ˆ’ ghi tat ca thông tin can thiet ’’ ’´’ ¯e ´ ’ ˆ ` ˆ ´ ˆ ’’ ¯o ˙ cho tuong ung. Ca˙ chay chuong trình này sau moi trong giai d n khoi d ˆ ng vào các ˆ ’ ’ ´’ ˜ ˙ `n ˜ ¯oa ˆ ’’ ˆ ` lan có thay d ˆ ˙’i trong nhân hay trong tap tin cau hình LILO; ˙ ´ ˙ ˆ ¯o ˆ ˆ ˙ ˆ ` ˆ ’’ ¯o • các tap tin phuc vu, can cho LILO trong thoi gian khoi d ˆ ng. Nhung tap tin này thuong `’ ˜’ ˆ ’`’ na` m ˙trong thu muc /boot. Quan trong nhat trong so ˙ ˘ ˙ ˙ ’ ´ ˆ ˆ ¯ó ˙ ’ ´ chúng – d là ban thân trình ’’ ¯o ˙ ˙ khoi d ˆ ng (xem phía duoi) và tap tin map (/boot/map); trong tap tin này có chı ra ´’ ’ ’ ˆ ˆ vi trí cu˙’ a nhân. Mot tap tin quan trong khác – tap tin cau hình LILO; thuong có tên ˙ ´ ˙ ˆ ˆ ˆ ˆ ’`’ ˙ /etc/lilo.conf; ˙ ˙ ˙ ˙ ’’ ¯o ` ` • trình khoi d ˆ ng – d là phan LILO d ’oc nap vào bo nho d ˆ u tiên qua Int cua BIOS; ¯ây ˆ ¯u ’ ˆ ´’ ¯a ’ ’’ ¯o trình khoi d ˆ ˙ ng nap nhân Linux hay sector˙khoi d ˙ cua he d `u hành khác. Trình ˙ ’’ ¯ong ’ ˆ ¯ie ˆ ˆ ’’ ¯o khoi d ˆ ng go ˙ m có˙ hai phan. Phan thu nhat d oc ghi vào sector khoi d ng và phuc vu ` ` ` ´’ ˆ ’ ´ ¯u ’ ˙ ˙ ’’ ¯o ˆ ˆ ˆ ˆ d ˆ’ nap˙phan thu hai, có kích thuoc lon hon rat nhieu. Ca hai phan thuong d ’oc ghi trên ¯e ` ˆ ´’ ’´’ ´’ ’ ´ ˙ ˆ ˆ ` ’ ˆ` ’`’ ˙ ¯u ’ ˙ ˙ ˙ d˜a trong tap tin /boot/boot.b. ˙ ¯ı ˆ ˙ ` ´’ ` ’ ’’ ¯o ’’ Can nho rang, d nh dang cua sector khoi d ˆ ng tao ra boi LILO khác voi d nh dang MBR ˆ ˘ ¯i ´’ ¯i cua DOS. Vì the ne˙ ghi˙sector khoi d ˆ ng LILO vào MBR, thì các he d ˆ u hành d cài cua ’ ´ ´u ˆ ˆ ’’ ¯o ˙ ˙ ˆ ¯ie` ˙ ˙ ¯ã ’ ’’ ¯o Microsoft se ngung khoi d ˆ ng (neu nhu ´ ˙ không có các bien pháp bo sung).’ ˙ ˜ `’ ˆ ’ ˆ ˆ Sector kho ¯o ’’i d ˆ ng cua LILO có the d ’oc thiet ke d ˆ’˙ su dung nhu sector khoi d ˆ ng cua ’ ˙ ˆ’ ¯u ’ ´ ´ ¯e ’’ ˆ ˆ ’ ’’ ¯o ’ phân vùng; trong d ˙ có cho cho bang phân˙vùng. ˜ ’ ˙ ˙ ¯ó ˆ ’’ ¯o ’ ˆ’ ¯a Sector khoi d ˆ ng cua LILO trong khi cài d ˘ t có the d ˘ t vào nhung cho sau: ¯a ˜’ ˜ ˆ ˙ ˙ ˙ ’’ ¯o ’ ¯ı ` • sector khoi d ˆ ng cua d˜a mem trong d nh dang Linux (/dev/fd0, . . . ); ˆ ¯i ˙ ˙ ˙ ` ’ a d˜a cung d ˆ u tiên (/dev/hda, /dev/sda, . . . ); • MBR cu ¯ı ´’ ¯a ’’ ¯o ’ ´’ ˆ ´ ` • sector khoi d ˆ ng cua phân vùng chính voi he thong tap tin Linux trên d˜a cung d ˆ u tiên ˆ ˆ ¯ı ´’ ¯a (/dev/hda1, ˙ /dev/hda2, . . . ); ˙ ˙ ’’ ¯o ’ ’’ ˆ • sector khoi d ˆ ng cua phân vùng lôgíc trong phân vùng mo rong d˜a cung d ˆ u tiên¯ı ´’ ¯a ` (/dev/hda5, ˙. . . ). Su that là phan lon chuong trình dang fdisk không d ` ra kha nang ` ˙ ’ ˘ ’ ˆ ˆ ´’ ’’ ¯e ˆ ’’i d ˆ ng khoi d ˆ ng tu phân vùng mo rong và tu choi ˙ ˆ c kích hoat phân vùng này. Vì kho ¯o ’’ ¯o ˙`’ ˙ ’’ ˆ `’ ˆ´ vie vay trong thành phan LILO có chua mot chuong trình d˙˘ c biet (activate) cho phép ˆ ˙ ˙ ` ˆ ´’ ˆ˙ ’’ ¯a ˆ ˙ ˙ ot qua han che này. Tuy nhiên chuong trình fdisk cu˙a ban phân phoi Linux ho tro vu ’ ´ ˙ ’ ’ ˙ ´ ˜ ’ ˆ ’’ ˆ ˆ ’ ˙ nang kích hoat phân vùng mo rong. Can su dung tùy chon -b hoac bien BOOT. ˙ ’ ˙ ’’ ˆ ` ´ kha ˘ ˆ ’’ ˘ ˆ ˙ ˙ ˙ ˙ ˙ ’’ ¯o ’ ˆ’ ¯a Sector khoi d ˆ ng cua LILO không the d ˘ t vào các cho sau: ˜ ˆ ˙ ˙ ’’ ¯o ’ ¯ı ` • sector khoi d ˆ ng cua d˜a mem hay phân vùng chính, voi d nh dang he thong tap tin ˆ ´’ ¯i ˆ ´ ˆ ˆ khác Linux; ˙ ˙ ˙ ˙ ˙ ’ • trong phân vùng swap cua Linux; • trên d˜a cung thu hai. ¯ı ´’ ´’ ` ˆ ` ´’ ˘ `’ ’’ ¯o Ngoài ra, can nho rang, LILO trong thoi gian khoi d ˆ ng nhung tap tin sau: ˜’ ˆ ˙ ˙ • /boot/boot.b; ’’ ˆ • /boot/map (tao ra boi lenh /sbin/lilo); ˙ ˙
    17. ’ ’’ ¯ ˆ 2.4 Lua chon trình khoi dong 13 ˙ ˙ ˙ ´ ’ ˆ ’ ’’ ¯o ´ ˆ ¯o ’ ’’ ¯o • tat ca phiên ban nhân khoi d ˆ ng (neu ban d c chon phiên ban nhân khi khoi d ˆ ng); ˙ ˙ ˙ ˙ ˙ ’’ ¯o ’ ` ˆ ¯ie ¯o ´ ˆ ’’ ¯o • sector khoi d ˆ ng cua các he d ˆ u hành khác mà ban d c muon khoi d ˆ ng qua LILO; ˙ ˙ ˙ ˙ ˙ ˆ ¯u ’’ ¯o ´ ¯u ’ • tap tin chua các thông báo d ’a ra khi khoi d ˆ ng (neu d ’oc xác d nh). ´’ ˆ ¯i ˙ ˙ ˙ ˙ ’ ˆ ’’ ¯o ’ ˜’ ˆ ¯ã ˆ ´ ¯ó Nhu vay, sector khoi d ˆ ng LILO cung nhu nhung tap tin d liet kê (trong so d có các tap ˜ ˆ ˆ tin ban d c ˜˙ se cài d ˘ t sau này) can nam trong pham vi 1024 cylinder d `u tiên cua d a cung, ˙ ` ` ˙ ˙ ’ ¯ı ´’ ˙ ¯o ¯a ˆ ˘ ¯aˆ ˜ boi vì chúng can d ’˙’c truy cap qua BIOS. Xem phan nói ve han che cua BIOS o trên. ’’ ˙ ˙ ` ˆ ¯uo ˆ ˙ ` ˆ ` ˆ ´ ’ ˆ ’’ ` `’ ˙ ’ ˙ ˙ ´ t d ˆ u tu phiên ban 21, LILO d ’a ra màn hình trình d ’n (thuc d ’n) cho phép chon he Ba ¯a ˘ ¯u ¯o ’ ¯o ˆ ´ ` ´ ˙ thong d ˆ’ khoi d ˆ ng (truoc d can nhan phím Tab d ˆ’ goi trình d ’n này). ˙ ˙ ˆ ¯e ’’ ¯o ’´’ ¯ây ˆ ˆ ¯e ¯o ˙ ˙ 2.4.2 ’’ ¯ ˆ Các trình khoi dong khác ˙ ¯e ’’ ¯o ˆ’ ’’ ¯o Ngoài LILO d ˆ’ khoi d ˆ ng Linux có the khoi d ˆ ng các trình khoi d ˆ ng khác. ’’ ¯o ˙ ˙ ˙ ´ ˆ ¯a ¯ã ¯ ’’ ¯o • Neu nhu truoc khi cài d ˘ t Linux d có HDH Windows NT/2000/XP, thì trình khoi d ˆ ng ’ ’´’ ¯o ’ su dung˙ là OS Loader cua NT. So sánh voi LILO thì trình khoi d ˙ ng ban d c có the ’’ ˆ ’ ´’ ’’ ¯oˆ ˙ ˙ OS Loader có ít nha˙t hai uu the. Thu nhat, tat ca cau hình cu không bi mat (chúng ta ´ ˆ ’ ˆ ´ ´’ ´ ´ ’ ´ ˆ ˆ ˆ ˜ ´ ˆ ˙ ˆ’ ’’ ¯o ´’ ˙ ˆ’ có the chon khoi d ˆ ng Windows hay Linux theo lua chon), và thu hai, có the cài d ˘ t ’ ¯a ˙d a mà LILO không the khoi d ng, ví du,˙o d a˙thu hai trên controller thu hai Linux lên ¯ı ˙ ’ ’’ ¯o ’ ¯ı ´’ ˙ ˜ ˆ ˆ ˆ ˜ ´’ (Secondary Slave). ˙ ˙ ´ˆ ¯a ¯o ’ • Neu nhu truoc khi cài d ˘ t Linux ban d c chı có HDH Windows 95 hay Windows 98 và ’ ’´’ ¯ ˙ không có Windows NT/2000 hay XP, ˙ thì OS Loader không d oc cài d ˘ t. Và neu nhu vì ˙ ´ ¯u ’ ’ ¯a ˆ ’ mot lý do nào d ban d c không muo ˆ ¯ó ¯o ´ n cài d ˘ t LILO, thì có the su d ˙ng chuong trình ˆ ¯a ˙’ ’ ˆ ’ ¯u ’’ ˙’ ˙ ˙ ` ´’ ’ ˙ ´ khoi d ˆ ng loadlin.exe (thuong d kèm voi ban phân phoi Linux); ˙ ’ ¯o ’’ ¯i ˆ ˙ ` ` ˆ ’ ´ ’’ • Thoi gian gan d trong thành phan ban phân phoi Linux thuong có chuong trình khoi `’ ˆ ¯ây ˆ ’`’ ’’ d ˆ ng GRUB. ¯o ˙ ` ’ ’’ ¯o • Trong thành phan OS/2 cua công ty IBM có chuong trình khoi d ˆ ng Boot Manager. ˆ ’’ ˙ Trong rat nhieu huong dan nguoi ta khuyên dùng chuong trình này d ˆ’ toi chuc khoi ´ ˆ ` ˆ ’´’ ˜ ˆ ’`’ ’’ ¯e ˆ’ ´’ ’’ ¯o `u HDH. d ˆ ng nhie ¯ ˆ ˙ ` ˆ ´ ¯e • Trong các nguon thông tin khác nhau còn nhac d´ n chuong trình System Commander; ˘ ˆ ’’ ’’ ¯o ` ’ • Thêm mot trình khoi d ˆ ng khác có trong thành phan gói PartitionMagic cua công ty ˆ ˆ ˙ ˙se nói ve chuong trình này trong phan nho tiep theo. Power Quest. Chúng ta ˜ ` ’’ ` ’ ˆ ´ ˆ ˆ Ngoài ra tác gia còn thay nguoi ta nói d´ n mot loat trình khoi d ˆ ng khác (mot so có the ’ ´ ˆ ’`’ ¯e ˆ ˆ ’’ ¯o ˆ ´ ˆ ˆ’ tìm tha ˙ ˙ ˙ ´ y trong thu muc /public/ftp/pub/Linux/system/boot/loaders trên trang ˙ ˆ ’ ˙ ’ ’’ ftp://metalab.unc.edu/. Nhung vì tác gia không su dung nhung chuong trình này, nên không ’ ˜’ ’’ the’ nói cu the cách su dung chúng. Và tat ca nhung ˙loi khuyên dùng sau cua tác gia se dua ˆ ’ ˆ ’’ ´ ’ ˜’ ˆ `’ ’ ’ ˜ ’ trên viec su˙ ’ dung LILO, ˙NT Loader và loadlin.exe. Neu nhu có ý muon cài d ˘ t chuong trình ´ ´ ˙ ˆ ’ ˆ ’ ˆ ¯a ’’ khoi d ˆ ng khác, thì ban d c can d c huong dan cài d ˘ t và su dung cua nó. ˙ ’’ ¯o˙ ˙ ` ¯o ˆ ¯o ’´’ ˜ ˆ ¯a ’’ ’ ˙ ˙ ˙ ˙ ˙ ˙
    18. 14 Cài dat HDH Linux trên cùng máy tính voi Windows ¯˘ ¯ ´’ ˙ 2.4.3 ’’ ¯ ˆ Các phuong án khoi dong ’’ ˙ ´ ’ ’ ’’ ¯o Nhu vay, theo ý kien cua tác gia có các phuong án khoi d ˆ ng sau: ’ ˆ ˆ ’’ ˙ ˙ ´ ¯ã • Neu d cài d ˘ t Windows NT hay Windows 2000/XP, thì hãy su dung NT Loader. ˆ ¯a ’’ ˙ ˙ ´ • Neu có Windows 95 hay Windows 98 trên FAT16, và ban d c không muon cài d ˘ t ˆ ¯o ´ ˆ ¯a chuong trình kho ¯o ’’ ’’i d ˆ ng nào khác, thì có the su dung LILO, hoa˙ d ˆ u tiên chay DOS và ˆ’ ’’ ˙ ˘c ` ¯a ˙ ˙ ˙ ˙ ˙ ¯ó ’’ ¯o sau d khoi d ˆ ng Linux nho chuong trình loadlin.exe (hay mot chuong trình tuong tu, `’ ’ ’ ˆ ’’ ’’ ’ có vài chuong ˙ trình nhu vay, nhung chúng ta se không xét d´ n). ˙ ˙ ’’ ’ ˆ ’ ˜ ¯e ˆ ˙ ´ ¯ã • Neu d cài d ˘ t Windows 95 OSR2 hay Windows 98 trên FAT32, và ban d c không ˆ ¯a ¯o muo ´ n cài d ˘ t˙ thêm chuong trình khoi d ˆ ng, thì can su dung loadlin.exe. Rat nhieu ˆ ¯a ’’ ’’ ¯o ` ’’ ˆ ˙ ˙´ ˆ ˆ` ˙˘ ng d nh rang không can su d ng LILO, neu nhu phân vùng kích hoat có ’ ` ` ˙ ´ ˙ HOWTO kha ¯i ˘ ˆ ’’ ¯u ˆ ’ d nh dang FAT32, ˘ ˙ mac dù tác gia không rõ nguyên nhân. Tuy nhiên thí nghiem ˙ ’ i ’ ˙ ¯i ˆ kho ’ dˆ˙ ng Linux qua NT ˙Loader, cài d ˘ t trên phân vùng FAT32, cua tác gia d ket thúc ˙ ’ ’ ¯ã ˙ ´ ¯o ¯a ˆ ˙ ´ ˙` ’ ¯ã ’ ’’ không thành công. Vì the, trong truong hop này tác gia d phai su dung chuong trình ˆ ’’ ’ ’’ ˙ loadlin.exe. Chuong trình này d hoàn thành tot nhiem vu, và tao cho tác gia mot ´ n ´ ˙ ’ ˆ a ’’ ¯ã ˆ ˆ ˆ tuong tot, vì the tác gia khuyên ban d c su dung loadlin.exe d ˆ’ khoi d ˆ ng Linux. ˙ ’’ ˆ ´ ´ˆ ’ ¯o ’’ ˙ ˙ ˙ ¯e ’’ ¯o ˙ ˙ ˙ ˙ ˙ ˆ ´ ` ˆ ’ ˜ ´ ˆ ¯a ’’ ´ ’ Trong nhung phan tiep theo tác gia se cho biet cách cài d ˘ t Linux, su dung tat ca ba ˜’ ˆ ’’ ¯o ’’ ¯o phuong án khoi d ˆ ng: qua trình khoi d ˆ ng NT Loader, trình kho ¯o ˙’ i d ng LILO ˙và trình khoi ’’ ’’ ’ ˆ ˙ ˙ d ˘ t trình khoi d ng can chuan bi các phân vùng d ˆ ng loadlin.exe. Tuy nhiên truoc khi cài ¯a ’’ ¯o ` ˙ ˆ’ ¯o ’´’ ˆ ˆ ˙ ˙ ˙ ˙ ¯ı ´ ˆ ˜ ˆ’ ´’ trên d˜a, hay ít nhat là nghı cách to chuc chúng. 2.5 ˆ’ Chuan bi các phân vùng trên d˜a ¯ı ˙ 2.5.1 Loi khuyên khi tao phân vùng `’ ˙ D’ `’ ’’ ¯ây ’ ˆ ˆ ˜ ¯ ua ra loi khuyên o d không phai là viec de dàng, vì phân vùng d˜a phuc thuoc rat nhieu ¯ı ˆ ´ ˆ ` ˆ vào ý thích và nhu ca ’ `u cua chu nhân d˜a. Nhung cung xin thu d ’a ra vài˙ d ˆ nghi sau. Tác ˆ ’ ¯ı ˙ ’ ˜ ’’ ¯u ` ˙ ¯e ˙ ’ ˜ ¯a ˆ’ ’ gia se d ˘ t tên d˜a và phân vùng theo "tiêu chuan" cua Linux, tuc là /dev/hda, /dev/hdb, ¯ı ´’ ˙ i voi d a và /dev/hda1, /dev/hda2, v.v. . . – d´ i voi các phân vùng. v.v. . . d´ ´’ ¯ı ¯oˆ ˜ ¯o ´’ ˆ Viec phân chia d˜a thành các phân vùng là ca ˆ ¯ı `n thiet, boi vì Windows và Linux su dung ˆ ´ ˆ ’’ ’’ ˙ luu tru thông tin trên d a và sau d d c chúng tu d a khác nhau. Chính vì the tot hon các cách ’ ˜’ `’ ¯ı ´ ´ ˙’ ˜ ¯ı ¯ó ¯o ˜ ˆ ˆ he ˜ ˆ ¯ie ` ´ t là dành cho moi he d ˆ u hành mot (hoac tha ˘ ˙ m chí mot vài nhu chúng ta se thay o duoi) ´ ’’ ’´’ ˆ ˆ ˆ ˆ ˆ ’ ˜ ˆ phân vùng riêng. ˙ ˙ ˙ ˙ ˙ Dˆ ` ¯ au tiên chúng ta hãy xem xét mot truong hop d ’n gian – dung luong o d˜a cua ban d ˙ c ˆ ’`’ ’ ¯o ’ ’ ’ ˆ’ ¯ı ’ ¯o không vuot quá 8,4 Gbyte (nói chính ˙ xác hon – so cylinder không vuot quá 1024). ˙Trong ˙ ´ ˙ ’’ ’ ˆ ’’ truong ho˙ này moi thu d ˆ u d ’n gian: ban d c chı viec chia d˜a làm sao d ˆ’ d ’ cho cho he ’`’ ’p ` ´’ ¯e ¯o ’ ¯o ’ ˆ ¯ı ˙ ¯e ¯u ˆ ˜ ˆ ` ˙ se cài d ˘ t. Có the su dung du lieu cho biet kích thuoc d a nho nhat can thiet d ’ cài ˙ ’ ’’ ˙ ˙ ´ ˙ ’ ´ ˆ ´ ¯e ˙ d ˆ u hành ˜ ¯ie ¯a ˆ ˜’ ˆ ˆ ’´’ ¯ı ˜ ˆ ` ˆ ˆ d ˘ t he d ˆ ¯a ˆ ¯ie `u hành voi cau hình co ˙ban trong bang 2.2. ˙´ ´ ’ ˆ ’ ’ ˙ ’ ˙ ˙ ` ’ ’ ’ Tuy nhiên xin hãy nho rang, không nhung phai tính kích thuoc các tap tin cua ban thân ´’ ˘ ˜’ ’´’ ˆ he d ˆ ˆ ¯ie `u hành, mà còn phai tính ca kích thuoc cua các chuong trình ban d ˙ c du tính chay. Và ’ ’ ’´’ ’ ’’ ¯o ’ còn phai dành mot phan du tru không nho cho các chuong trình se cài˙d ˘ t ˙ này (không the ˙ ’ ˆ ` ˆ ’ ˜’ ’ ’’ ˜ ¯a sau ˙ ˙ ˆ’ ’ tránh khoi!). Hãy ˙ tính rang, 700 Mbyte dành cho Linux o trong bang nói trên chı dành cho ` ˘ ˙ ’’ ’ ˙ ’ các chuong trình cài d ˘ t cùng voi Linux theo mac d nh, trong so ¯ó ’’ ¯a ´’ ˘ ¯i ´ d có, ví du, chuong trình ˆ ’’ soan thao rat manh Lyx. ¯ oi voi Windows cung ˙ ’ong tu nhu vay. ’ ´ ˆ ˙ D´ ´ ˆ ’ ˜ tu ’ ˙ ’ ’ ˆ ˙ ˙ ˙ ˙ ˙
    19. ˆ’ 2.5 Chuan bi các phân vùng trên d˜a ¯ı 15 ˙ ’ ` ˆ ’’ ¯ı ’ ¯ Bang 2.2: Nhu cau su dung không gian d˜a cua HDH ` He d ˆ u hành ` Yêu cau ˙ ˆ ¯ie ˆ ˙ Windows 95 100 Mbyte Windows 98 200 Mbyte Windows NT 200 Mbyte Windows 2000 700 Mbyte Linux Red Hat 6.2 (Worksta- 700 Mbyte tion voi KDE) ´’ Theo kinh nghiem cua tác gia thì d ˆ’ làm viec voi Windows 95/98, Windows NT và Linux ˆ ’ ’ ¯e ˆ ´’ ˙ ˙kích thuoc 800-1000 Mbyte là d ’ (tat nhiên, neu ban d c không cài d ˘ t các phân vùng voi ´’ ’´’ ¯u ´ ˆ ´ ˆ ¯o ¯a ˙ ˙ ` ´ i voi Windows 200 thì can phân vùng các gói chuong trình lon, nhu OpenOffice.Org), còn d ˆ ´’ ´’ ˙ ’’ ’ ¯o ˆ lon hon. ´’ ’ `’ ˜ ´ ¯e ˆ ` ’’ ¯ây Bây gio chúng ta se xem xét van d ˆ chia các phân vùng cho Linux. O d không the chı ˆ’ ’ ˆ ˆ ` ´’ ´ ˆ chia mot phân vùng. Thu nhat, can chia mot phân vùng swap riêng biet cho Linux. Khi xác ˆ ˆ ˙ luong cua phân vùng swap Linux can tính d´ n nhung yeu to˙ sau: d nh dung ’ ’ ’ ˙ ` ´ ´ ¯i ˆ ¯eˆ ˜’ ˆ ˆ ˙ ˙ ˆ ´’ ’ • Trong Linux, RAM và không gian swap hop lai tao thành bo nho ao chung. Ví du, neu ’ ´ ˆ ban d c có 256 MByte RAM và 128 Mbyte ˙ không gian swap, thì se có 384 Mbyte bo ˙ ˙ ˙ ˙ ¯o ˜ ˆ ˙ ´ ao. nho ’˙ ˙ ’ D ˆ’ ` ´ ˆ ´’ ’ ´ ´ ’ • ¯ e làm viec voi Linux can ít nhat 16 Mbyte bo nho ao, vì the neu ban d c chı có 4 ˆ ´’ ˆ ˆ ˆ ˆ ¯o Mbyte RAM,˙ thì can phân vùng swap không nho hon 12 Mbyte. ` ˙’ ˙ ˙ ˆ ’ • Trên Linux kích thuoc mot phân vùng swap không the vuot quá 128 Mbyte. Nghıa là ’´’ ˆ ˆ’ ’ ’ ˜ ˙ ˙ ’ có kích thuoc lon bao nhiêu tùy thích nhung Linux không the phân vùng swap có the ˆ ’´’ ´’ ’ ˆ’ ’’ ´ ´ ˆ ´’ ’ ´’ ’ su dung hon 128 Mbyte. Neu ban d c muon có bo nho ao lon hon, thì can tao hai phân ’ ˆ ¯o ˆ ` ˆ vùng ˙ swap hoac su dung tap tin swap. ˘ ’’ ˙ ˙ ˙ ˙ ˆ ˙ ˙ ˙ ’´’ ’ ` • Khi tính kích thuoc cua không gian swapping, can nho rang kích thuoc quá lon có the ˆ ´’ ˘ ` ’´’ ´’ ˆ’ là vô ích. Trên máy tính voi 16 Mbyte RAM khi cài d ˘ t Linux voi cau hình chuan và ´’ ¯a ´’ ´ ˆ ˆ’ ˙gian swapping là d ’ . Còn neu các chuong trình ung dung chuan thì 48 Mbyte không ’’ ´’ ˆ’ ¯u ´ ˆ cài d ˘ t Linux voi ca ´’ ˆ ˙ ´ u hình nho nhat, thì không can d´ n không gian swap. Tat nhiên, ’ ˆ ´ ` ¯e ´ ¯a ˆ ˆ ˆ ˙ ´ ’ kích thuoc chính xác cua không gian swap phu thuoc lon vào chuong trình se d ’oc cài ´’ ’’ ˆ ’’ ˜ ¯u ’ d ˘ t. ˙ ˙ ˙ ¯a ˙ ’ ˜ ˆ ´ ¯e ` ˆ ` Nói chung, chı nên suy nghı ve van d ˆ dung luong cua phân vùng swap khi có mot d˜a ’’ ’ ˆ ¯ı ˙ phân chia d ’ tong so dung luong cua ˙ ’ ’ nho và ít bo nho RAM. Trong truong hop nguoc lai hãy ˆ ´’ ’`’ ’ ’’ ¯e ˆ’ ˆ ´ ˆ ’’ bo nho ao (gom RAM và phân vùng swap) không˙nho hon 128 Mbyte. Còn neu nhu ban d c ˆ ´’ ’ ˙ ` ˆ ˙ ˙ ’ ’ ´ ˆ ’ ˙ ¯o ˙ ˙ ˙ ` có 128 Mbyte RAM hay nhieu hon, thì phân vùng này có the không can thiet. ˆ ’ ˆ’ ` ˆ ´ˆ ´ ’ ` ’ ˜ Tat ca các phan còn lai cua Linux và các chuong trình ho tro theo nguyên tac có the d ˘ t ˆ ˆ ’’ ˆ ’ ´ ˘ ˆ’ ¯a ˙ ˙ vài phân vùng riêng re là ˙ ˆ ˆ ¯a ˆ ´ vào mot phân vùng. Tuy nhiên, viec d ˘ t he thong tap tin Linux lên ˆ ˆ ˜ có ý nghıa. Ví du, có nhà chuyên ˙gia ˙ ˙ nên ˙ ˙ ˜ khuyên ˆ ´ dành cho he thong tap tin Linux ba phân ˆ ˆ vùng (ne ˙ ’ ´’ ˆ ´ ˙ ´ ´ u tính ca swap thì thành 4). Phân vùng thu nhat (theo ý kien cá nhân tác gia, 1 Gbyte ˙ ’ ˆ ˆ ¯u ˜ ´’ ˆ ´ ˆ ˆ ´ là d ’ ) se chua he thong tap tin goc (/). Phân vùng thu hai dành cho thu muc /home. Còn ˆ ´’ ’ phân vùng thu ba d ’oc ga˙ vào thu muc /usr. Viec phân chia nhu vay dua trên nhung lý le ´’ ˙ ¯u ’ ˘ n ´ ’ ˆ ’ ˆ ’ ˙ ˜’ ˜ sau. Dù HDH Linux có ˆ ˙ on d nh và d ˙ tin cay d´ n d thì thınh thoa˙ cung can cài d ˘ t lai. ’ ¯i ˙ ’ ’ ng ˜ ˙ ` ¯ ¯áng ˆ ¯e ¯âu, ˆ ˆ ¯a Ví du, ban d c muon cap nhat phiên ban moi cua ban phân phoi, hoac vì ít kinh nghie˙m ˙ ’’ ¯o ´ ˆ ˆ ˙ ˆ ’ ´˙ ’ ’ ’ ´ˆ ˘ ˆ su ˙ ˙ ˙ ˙ ˙ ˙ ˙
    20. 16 Cài dat HDH Linux trên cùng máy tính voi Windows ¯˘ ¯ ´’ ˙ ’ ˆ ´ dung nên làm hong tap tin he thong quan trong, hoac d ’n gian là muon cài d ˘ t mot ban phân ˆ ˆ ˘ ¯o ’ ´ ˆ ¯a ˆ ’ ˙ ´ i khác. Neu nhu tat ca d ˙ oc cài d ˘ t vào˙mot phân vùng, thì khi cài d ˘ t lai nhung du lieu pho ´ ˙´ ’ ˙ ˙ ˙ ˆ ˆ ’ ˆ ¯u ’ ’ ¯a ˆ ¯a ˜’ ˜’ ˆ ˙ muc cá˙ nhân se ˙ mat (neu không có ban sao ˙ ˙ chép). Ngoài ra, ˙ d làm ra và ghi nho trong thu ¯ã ´’ ’ ˜ bi ´ ´ ˆ ˆ ’ se bi mat ca nhung chuong trình ˙d cài tu mã nguon, hay cài bang phuong pháp khác. Phan ˜ ´ ’ ˜’ ˆ ’’ ¯ã `’ ˙ ` ˆ ` ˘ ’’ ` ˆ lon nhu ´’ ˙ ng gói chuong trình này d oc cài vào thu muc /usr. Neu dành cho thu muc này mot ´ ˜’ ’’ ¯u ’ ’ ’ ˆ ’ ˆ phân vùng riêng và khi cài d ˘ t không ¯i ˙ d nh dang la˙ chúng, thì nhung chuong trình nói trên i ˙ ˙ ¯a ˜’ ’’ ˙ ˙ ˙ ’ ` ˙ ˜ ¯u ’ ˜’ ˆ’ ˜ ˆ ´ se d ’oc giu lai và có the se làm viec (rat có the can vài cau hình nho) sau khi cài d ˘ t lai he ˆ ˆ ˆ ´ ˆ ’ ¯a ˆ ´ thong. ˙ Trong˙tiêu chuan ve he thong tap tin cua Linux FHS (cu the xin xem o chu˙ ng ??) ’ ˆ ˆ ´` ˙ ’ ’ ’’ ’o ˙ ˙ ˆ ˆ ˆ ˆ ˆ ’ cung có loi khuyên ve viec d ˘˙ thu muc /usr lên mot phân vùng riêng. ˜ `’ ` ˆ ˆ ¯at ’ ˙ ˆ ˙ ˙ ˙ ´ ˙ ˙ Theo tác gia thay, nhung ý kien nói trên d d ’ d ˆ’ ban d c tu tìm ra phuong án phân chia ’ ´ ˆ ˜’ ˆ ¯ã ¯u ¯e ¯o ’ ’’ o d˜a cua mình, trong truong hop chı có mot o d˜a nho. ˙ ˙gio˙chúng ta xem xét truong hop ˆ’ ¯ı ’ ’`’ ’ ’ ˆ ˆ’ ¯ı ’ Bây `’ ’`’ ’ d˜a voi so ´ cylinder lon hon 1024. ˙ ˙ ˙ ¯ı ´’ ˆ ´’ ’ Tu nhung gì d nói d´ n o phan truoc (han che dung luong d˜a cung), can d ˘ t chuong trình `’ ˜’ ¯ã ¯e ’’ ˆ ˆ ` ’´’ ´ ˆ ’ ’ ¯ı ´’ ` ˆ ¯a ’’ ’’ ¯o khoi d ˆ ng trong pham vi 1024 cylinder d ˆ u ` ˙ tiên. Nhân tie˙ NT Loader không˙nhat thiet phai ´ ´ ’ ¯a ˆ n, ˆ ˆ d ˘ t vào ˙ phân vùng NTFS, cung nhu không nhat thiet pha˙i d ˘ t vào phân vùng chua các tap tin ˙ ´ ´ ’ ¯a ´’ ¯a ˜ ’ ˆ ˆ ˆ khác cua HDH. Nhu d nói o trên, d´ i voi Linux có the d ˘˙t thu muc goc cùng voi thu˙ muc ˙ ’ ¯ ’ ¯ã ’’ ¯oˆ ´’ ˆ’ ¯a ’ ´ ˆ ´’ ’ ´ ` ˙ con /boot vào các cylinder "thap" (trong vòng 1024 d ˆ u tiên), còn các thu muc khác – o cho ˆ ¯a ˙ ’ ’’ ˙ ˆ˜ nào tùy thích. ˙ ` ’ Nhu vay trong truong hop này, nhung d ˆ nghi cua tác gia cho ra bang tong ket sau: ’ ˆ ’`’ ’ ˜’ ¯e ’ ’ ˆ’ ´ ˆ ˙ ˙ ˙ ` ’’ ¯o ’ ´ ’ ˆ ´ ` ’ • phan khoi d ˆ ng cua tat ca các he thong Microsoft d ˘ t vào phân vùng chính d ˆ u tiên cua ˆ ˆ ˆ ¯a ¯a d˜a, voi d nh˙ dang FAT16 (DOS); ˙ ˙ ¯ı ´’ ¯i ˙ ˙ ´ ˆ ’ ´ˆ ’´’ ’ • phân vùng chính tiep theo dành cho thu muc goc (/), kích thuoc khoang 1 Gbyte; ˙ ’ ` ’´’ ’ • phân vùng chính thu ba dành cho swap cua Linux (loi khuyên ve kích thuoc cua phân ´’ `’ ˆ ’’ vùng này xem o trên); ` ’ ¯ı ¯a ’’ ˆ • phan còn lai cua d˜a d ˘ t thành phân vùng mo rong; ˆ ˙ ˙ ˙ ’’ ˆ ˜ • trong phân vùng mo rong tao các phân vùng lôgíc cho moi HDH se cài d ˘ t: Windows ˆ ˜ ¯a ˙ ˙và d `ng thoi cho các he thong tap¯ tin /home và /usr cua ˙ 98, Windows NT/2000/XP, ¯oˆ `’ ˆ ´ ˆ ˆ ’ HDH Linux (trong /home se d ˘ t các tap tin riêng cu ˙ ’ a nguoi dùng, còn trong /usr – ˙ ¯ ˜ ¯a ˆ ’`’ chuong trình se cài d ˘ t). ˙ ˙ ’’ ˜ ¯a ˙ Tat nhiên, neu nhu ban d c chı có Windows 95 voi FAT16, thì có the d ˆ’ Windows trên ´ ˆ ´ ˆ ’ ¯o ’ ´’ ˆ’ ¯e ` phân vùng d ˆ u tiên. Neu ´ ˙nhu˙trên máy d cài d ˘ t Windows NT hay có FAT32, thì mot phân ¯a ˆ ’ ¯ã ¯a ˆ ˜ `’ ´’ ´ ˆ’ ’ ˙ vùng FAT16 cung không thua. Thu nhat, ke ca trong truong hop he thong có van d ˆ , ban d c ˆ ’`’ ’ ˆ ´ ˆ ´ ¯e ˙ ¯o ˆ ` ˙ ˙´ ˙ `˙ ˆ’ ’’ ¯o ` có the khoi d ˆ ng tu d˜a mem DOS (tam thoi khi chua làm quen voi Linux mot cách "tuong `’ ¯ı ˆ `’ ’ ’ ˆ ’’ ˆ ´ ˙¯u ’ ˘ ˆ ` ˙ tan") và thay d ’oc rang d˜a cung làm viec bình thuong. Thu hai, he thong tap tin FAT16 d ’oc ¯ı ´’ ˆ ’`’ ´’ ˆ ´ ˆ ˆ ˙ ¯u ’ ho tro trên moi HDH, trong d có Linux, vì the phân vùng này có the phu˙ vu cho viec trao ˙˜ ˆ ’ ˙ ¯ ¯ó ˙ ´ ˆ ˙ ’ ˆ c ˆ ˙ d ˆ’i tap tin giua các he thong. Nhung không nên d ˆ’ phân vùng này lon, ˙vì FAT16 su dung ¯o ˆ ˙ ˙ ˜’ ˆ ´ ˆ ’ ¯e ´’ ˙ ˙ ’’ ˙ ˙ ˙˘ ¯ı ´ không gian d˜a rat không hop lý. Chính vì vay hãy dành cho phân vùng này khoang 256 hoac ˆ ’ ˆ ’ 512 Mbyte. ˙ ˙ ˙ ˜’ ¯u ´’ ’ ´ ˘ ˆ ` Nhung loi khuyên này d ’a ra voi gia thiet rang, ban d c chı có mot d˜a cung. Neu nhu `’ ¯o ’ ˆ ¯ı ´’ ´ˆ ’ ˜ ˙này, chı có d `u phân vùng swap tot ˙ ’ ˙ ´ ¯o ˆ ’’ ban d c có 2, thì van su dung d ’oc nhung loi khuyên ¯u ’ ˜’ `’ ¯ie ˆ ˆ hon d ˘ t trên d˜a khác voi d˜˙ dành ˙cho Linux. Nguoi ta nói rang nhu vay tang toc d ˆ làm viec ˙ ˙ ’ ¯a ¯ı ´’ ¯ıa ’`’ ` ˘ ’ ˆ ˘ ´ ¯o ˆ ˆ ˙ ˙ ˙ ˙ ˆ ˆ’ ˜ ` trong Linux (cung de hieu vì d ˆ u d c ít phai chay hon). ˜ ¯a ¯o ’ ’ ˙ ˙
    21. ’’ ¯ ˆ ’ 2.6 Windows NT và Linux: khoi dong qua OS Loader cua NT 17 ˙ 2.5.2 ¯ˆ’ ˆ’ ¯ı Chuong trình de phân chia o d˜a ’’ Sau khi hoàn thành ket hoach chia o d˜a, can lua chon công cu d ˆ’ d ’a ke hoach này thành ´ˆ ˆ’ ¯ı ˆ ’ ` ¯e ¯u ´ ˆ hien thuc. Chuong trình phân ˙ chia d a d oc bie˙ d´ n ˙nhieu nha˙ là fdisk; trên moi he d `u ´ t ¯e ` ´t ˙ ˆ ’ ’’ ˜ ’ ¯ı ¯u ’ ˆ ˆ ˆ ˆ ˆ ¯ieˆ ˙ ˙ ` ’ ’ ˙ hành d ˆ u có phiên ban riêng cua chuong trình này. Và không can gì hon ngoài chuong trình ` ˙ ˙ ¯e ’’ ˆ ’ ’’ ´ ˆ ’ ˆ’ ¯ı ´ ˘ ´’ ´ này, neu nhu phân chia o d˜a trang, không chua bat ký du lieu nào. Nhung chúng ta d ˆ ˜’ ˆ ’ ¯ang xem xét truong hop d có HDH nào d trên d˜a và ca ˙ ’ `n phân chia o d˜a mà không làm mat thông ´ ’`’ ’ ¯ã ¯ ¯ó ¯ı ˆ ˆ ¯ı ˆ ˙ tin. fdisk không thích hop cho nhung muc d nhu vay. ’ ˜’ ¯ích ’ ˆ Trong thành phan các ban phân phoi Red Hat và˙BlackCat (rat có the trong các ban ` ˆ ˙ ’ ´˙ ˆ ´ ˆ ˆ’ ’ ´ phân phoi khác) có chuong trình fips, phuc vu cho phân chia o d˜a. Tuy nhiên, theo ý ˆ ’’ ˆ’ ¯ı ´ ˙ ˙ ´ `’ ˆ ’ ’’ kien cua nguoi dùng thì không nên su dung chuong trình này. Vì the loi khuyên cua tác ’`’ ’’ ˆ ’ ˙ ’ voi ban d c, nhung nguoi dùng Linux moi – neu nhu muon phân chia lai o d˜a mà gia ´’ ´ ´ ’ ¯ı ¯o ˜’ ’`’ ´’ ˆ ’ ˆ ˆ không làm ma˙ thông tin, thì hãy tìm chuong trình Partition Magic cua công ty Power Quest ˙ ´t ˆ ’’ ’ ˙ ’’ (http://www.powerquest.com) và su dung chuong trình này. ’’ ˙ ´’ ´ ˆ ’’ ˆ’ ¯ı Thu nhat, chuong trình này cho phép phân chia lai o d˜a mà không làm mat thông tin (tuc ´ ˆ ´’ ´ ’ ˜’ ´ là, tat ca nhung cài d ˘ t và cau hình truoc d se d ’o ˙c ghi lai). Khi này, không chı tao d oc ’ ˆ ¯a ˆ ’´’ ¯ó ˜ ¯u ’ ¯u ’ ’ phân vùng moi tu cho ˆ ´’ `’ ˆ ˜ trong trên d˜a, mà còn có the di chuyen các phân vùng d có theo˙ý ˙ ´ ¯ı ˙’ ˆ ˙ ’ ˆ ¯ã ˙ muon.´ˆ Thu hai, chuong trình này (tham chí trong phiên ban dành cho DOS) cung cap mot giao ´’ ’’ ˆ ’ ´ ˆ ˆ ` ˜ ’’ ˜ ’ ˙ dien d ˆ hoa de su dung có ho tro chuot, và moi thao tác cung nhu thay d ˆ’i d ˆ u thay rõ ràng. ` ´ ˙ ˆ ¯o ˆ ˆ ˆ ˜ ’ ¯o ¯e ˆ Dieu này ˙ ´ t quan trong voi ngu˙`’i dùng moi. ˙ ¯ ˙` ˆ raˆ ˙ ´’ ’o ˙ ´’ ˙ ` Khi tao phân vùng can d ˆ’ ý không cho ranh gioi giua các phân vùng cat lan nhau. ´’ ˜’ ˘ ˜ ´ ˆ ˆ ¯e ˙ ’ cho rang, nhung thông tin d d a d ’ d ’ ban d c lap ke hoach và thuc hien viec ` Tác gia ˘ ˜’ ¯ã ¯u ¯u ¯e ’ ˆ ¯o ˆ ´ ˆ ’ ˆ ˆ 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 phuong án cài ˆ ´ ´ ˆ ˆ ˙ ˙ ˜ ˙ ˙ ’’ ˙ ˙ d ˘ t hai HDH trên mot máy tính. ¯a ¯ ˆ ˙ ˙ 2.6 ’’ ¯ ˆ ’ Windows NT và Linux: khoi dong qua OS Loader cua NT ˙ ` ` ` ˆ’ ’ Trong phan này, khi nói ve Windows NT xin ngam hieu ca Windows 2000 và NT, vì "quan ˆ ˆ ˆ he" cua chúng d´ i voi viec cài d ˘ t Linux hoàn toàn giong nhau. Chúng ta gia thiet là Windows ˆ ’ ¯o ´’ ˆ ˆ ¯a ´ ˆ ’ ´ ˆ ˙ d d oc cài vào phân vùng ˙ NT ¯ã ¯u ’ ˙ /dev/hda2 (ne ´ u nhu ban d c nho, /dev/hda1 se dành cho ´’ ’ ˆ ’ ¯o ˜ ˙ ´ ˙ ˙ phân vùng FAT16). Neu HDH Windows NT d d ’oc cài d ˘ t, nghıa là trình khoi d ˆ ng OS ’’ ¯o ˆ ¯ ¯ã ¯u ’ ¯a ˜ Loader cung d d ’oc cài d ˘ t. Và nhu the có the su dung chuong trình này d ˆ’ khoi d ˆ ng˙ Linux. ˜ ¯ã ¯u ’ ¯a ’ ´ ˆ ˆ’ ’’ ˙ ’’ ˙ ¯e ’’ ¯o Tác gia hy vong ra˙ ban ˙¯oc d sao luu nhung thông tin có giá tri cua mình. Các buoc cài ’ ` ˘ ng d ¯ã ’ ˜’ ˙ ’ ˙ ’´’ d ˘ t có the ¯a ’ mô ta nhu sau: ˙ ˆ ˙ ’ ’ ˙ ˙ ˙ ´ 1. Neu nhu ban d c chua cài d ˘ t Linux bao gio, thì truoc khi bat d ˆ u can chuan bi d˜a ˆ ’ ¯o ’ ¯a `’ ’´’ ´ ¯a ˆ ˘ ` ` ˆ’ ¯ı ` mem khoi d ˆ ’’ ¯o˙ ng và phuc hoi˙Windows NT. De tao d a mem khoi d ng chı can ˙ nh ˙ ` ’ ` ’’ ¯o ` ¯i ’ ˆ d ˆ ˆ ¯ ˆ ¯ı˜ ˆ ˆ dang lai d˜a mem, roi sao chép lên d các tap tin ˙ ¯ı ˙ ` ˆ ` ˙ ˆ ¯ó ˆ ˙ ntldr, ntdetect.com và boot.ini tu ˙ ’ `’ thu ˙ c goc cua o d a khoi d ng NT. Chuong trình tao d a phuc hoi Windows 2000/XP có mu ˆ ´˙ ’ ’ ’’ ¯o ˙ ` ˆ ¯ı˜ ˆ ’’ ˜ ¯ı ˆ ˙ ˙ ˙ ˙ ˆ’ `’ ¯o ˆ ´ the chay tu trình d ’n he thong (lenh Backup trong Start/Program/Accessories). ˆ ˆ ˙ ˙ ˙ 2. Dùng chuong trình Partition Magic d ˆ’ lay mot phan d˜a trong và tu d tao ra phân vùng ’’ ¯e ´ ˆ ˆ ˆ ¯ı ´ ` ˆ `’ ¯ó ˙ ˙ ´’ ˆ ´ voi dang ext2(3) (he thong tap tin Linux) và phân vùng swap. Cách tính kích thuoc cua ˆ ˆ ’´’ ’ chúng ¯ã ˙ d nói o trên. ’’ ˙ ˙ ¯a ˜ 3. Cài d ˘ t Linux theo chı dan cua ban phân phoi. Trong khi cài d ˘ t can chú ý d´ n nhung ’ ˆ ’ ’ ´ ˆ ¯a ˆ ` ¯e ˆ ˜’ ˙ d ˆ’m sau: ˙ ¯ie
    22. 18 Cài dat HDH Linux trên cùng máy tính voi Windows ¯˘ ¯ ´’ ˙ ´’ ´ ´ ¯i • thu nhat, trong quá trình cài d ˘ t nhat d nh phai tao ra các d˜a mem khoi d ˆ ng ˆ ¯a ˆ ’ ¯ı ˆ` ’’ ¯o ` ˙ ˙ ˙ (hay tuong tu the, tùy thuoc ´ ˙ ˆ ’ `’ Linux. Tuc là can tra loi "Yes, make a BOOT DISK" ´’ ’’ ’ ˆ ˆ vào ban phân phoi) khi d ’oc hoi có tao d˜a mem khoi d ˆ ng hay không. ¯ ˜a me˙ ’ ´ ˆ ¯u ’ ’ ¯ı ` ˆ ’’ ¯o ˙ Dı ` ˆm này se d ’oc dùng d ˆ ˜ ¯u ’ ¯e ’’ ˙ ˙ ´ n o sau. Ngoài ra, có the su dung d˜a mem này d ˆ’ khoi d ˆ ng ’ ’’ ˆ ¯ı ˙ ` ˆ ¯e ’’ ¯o D˙ ˜ ˆ ’’ ’’ ¯o Linux. ¯ ây cung là mot phuong án khoi d ˆ ng, và hon nua khác voi d˜a mem khoi ˙ ’ ˜’ ´’ ¯ı ˆ` ˙ ’’ ˙’ i d ng he thong không còn yêu cau d a mem nua, có the ˙ d ˆ ng DOS, sau khi kho ¯o ¯o ’ ˆ ˆ ´ ˆ ` ˜ ˆ ¯ı ` ˆ ˜’ ˆ’ ˙ nó ra khoi o, su dung o˙d ’ d ˙c các d a mem khác. Tuy nhiên cách khoi d ng ’ ˆ’ ’’ bo ’ ˆ’ ¯e ¯o ˆ ˜ ¯ı ˆ` ’’ ¯o ˆ này cung có d ˆ u tien, ` ´ ˙ ˙ vì the không nên su dung thuong xuyên. Chı su dung trong ’’ ’ ’’ ˙ ˜ ¯ie ˆ ˆ ’`’ truong hop "bat d ´ c ˜ ¯ ˜ ´ ¯a ˙ dı". Dıa mem này còn ˙ `n thiet cho cau hình d ’ khoi d ng ` ca ´ ´ ˙ ’ ’`’ ’ ˆ ˘ ˆ ˆ ˆ ˆ ¯e ˆ ’ ¯oˆ ` nhieu HD ˙ H. ˙ ˆ ¯ ´’ ¯a ˆ` • thu hai, khi cài d ˘ t Linux can cài LILO vào sector d ˆ u tiên cua phân vùng dành ¯a` ’ cho thu muc go ’ ´ c ˙(/) cua Linux, chu không phai vào sector khoi d ˆ ng chính cua ˆ ’ ´’ ’ ’’ ¯o ’ ˙ ’ ´ d˜a (MBR). Chúng ta gia thiet Linux d ’oc cài vào phân vùng /dev/hda3. Nhu ˙ ¯ı ˆ ¯u ’ ’ vay LILO se d ’oc cài vào sector d ˆ u tiên cua /dev/hda3 ` ˙ ’ ˆ ˜ ¯u ’ ¯a ˙ ˙ ´ ˘ ´ Theo nguyên tac, neu nhu ban d c cài LILO vào MBR, thì không phai moi thu d hong ˆ ’ ¯o ’ ´’ ¯ã ’ he´ t. Ket qua cuoi cùng (kho˙i d ˆ˙ qua NT Loader) van có the d t d ’oc ˙nhung can bo ˆ ´ˆ ’ ˆ ´ ’’ ¯ong ˜ ˆ ’ ¯a ¯u ’ ˆ ’ ` ˆ ’ ´’ ´ ¯e ’’ ˆ ˙ ˜, d nh dang MBR tao boi LILO và Windows (DOS) ˙ ˙ ra mot chút công suc. Van d ˆ o cho ¯i ˆ ˆ ` ’’ khác ˙ nhau. Vì the neu ban d c cài LILO ˙vào MBR,˙ thì cau phuc hoi lai MBR cua ´ ´ ˙ ` ` ’ ˆ ˆ ¯o ˆ ˆ Windows. Tác gia ˜ ’ cung se nói cách phuc hoi, nhung tot hon het là ban d˙ c cài LILO ˙ ˙ ˜ ` ˆ ’ ´ ˆ ’ ˆ ´ ˙ ¯o ` ’ ngay lap tuc vào sector d ˆ u tiên cua phân vùng d cài Linux. ˙ ˙ ˙ ˆ ´’ ¯a ¯ã ˙ ¯a ’’ ¯o ` 4. Sau khi cài d ˘ t xong, khoi d ˆ ng Linux bang d˜a mem (neu nhu ban d c cài LILO vào ˘ ¯ı ` ˆ ´ ˆ ’ ¯o phân vùng cua ’ ˙ Linux và không d ng gì d´ n MBR, thì d là kha nang˙ duy nhat). ˙ ’ ˙˘ ´ ¯oˆ ¯eˆ ¯ây ˆ ˙ 5. Sao chép sector khoi d ˆ ng cua Linux vào mot tap tin; tap tin này se can d ˆ’ trình khoi ’’ ¯o ’ ˆ ˆ ˆ ˜ ˆ ¯e` ’’ d ˆ ng Windows NT/2000 ˙ có the khoi d ng Linux. Viec sao chép thuc hien nhu sau: d `u ’ ’’ ¯o ˙ ˙ ˙ ¯o ˆ ˆ ˆ ’ ˆ ’ ¯a ˆ ˙ gan mot d a mem trang (moi mua ˙thì càng tot), ˙ tiên ˘ ´ ` ´ ˘ ´’ ´ ˙ ˙ ˆ ¯ı ˜ ˆ ˆ ˙ kênh giao tác [root]# mount -t vfat /dev/fd0 /mnt/floppy ˆ’ chuyen vào thu muc /mnt/floppy ’ ˙ kênh giao tác [root]# cd /mnt/floppy và thuc hien câu lenh ’ ˆ ˆ ˙ ˙ ˙ kênh giao tác [root]# dd if=/dev/hda3 of=/mnt/floppy/bootsect.lnx bs=512 count=1 d ˆ’ ghi noi dung sector khoi d ˆ ng cua d˜a /dev/hda3 vào tap tin /mnt/floppy/bootsect.lnx. ¯e ˆ ’’ ¯o ’ ¯ı ˆ 1 ˙ ˙ ˙ 6. Tiep theo can khoi d ˆ ng lai d ˆ’ vào Windows NT, bang câu lenh: ´ ˆ ` ˆ ’’ ¯o ¯e ` ˘ ˆ ˙ ˙ ˙ 1 ´ ¯ı ˆ ¯i ˆ’ ˆ ’ ´ ’ Ghi chú: neu d˜a C: (/dev/hda1) có d nh dang FAT, thì có the tao tap tin bootsect.lnx trong thu muc goc cua ˆ d˜a C:. Tác gia không biet (chua thu) có˙the khoi d ˆ ng không can d˜a mem không, neu phân vùng ˙chính d ˆ u ¯ı ’ ´ ˆ ’ ’’ ˙ ˆ’ ’’ ¯o `˙ ˙ ˆ ˆ ¯ı ` ´ ˆ ¯a` ˙ ´ ¯e ¯i ’’ ¯ây ˜ ˆ ` ’ ˆ` ’’ ¯o tiên có d nh dang NTFS. Tuy nhiên o d cung không có van d ˆ gì, chı can sao chép sector khoi d ˆ ng qua d˜a ¯ı mem nhu d ˙ trình bày. Tam thoi nhân Linux còn chua ho tro tot viec ghi lên phân vùng NTFS. ˙ ` ˆ ˙ ’ ¯ang `’ ˜ ’ ˆ ’ ´ ˆ ˆ ˙ ˙ ˙
    23. ’’ ¯ ˆ ’ 2.6 Windows NT và Linux: khoi dong qua OS Loader cua NT 19 ˙ kênh giao tác [root]# shutdown -h now Vì MBR chua có gì thay d ˆ’i, nên Windows NT se khoi d ˆ ng. Trong NT can sao chép ’ ¯o ˜ ’’ ¯o ˆ` ´ ’ ¯ı tap tin bootsect.lnx vào thu muc goc cua d˜a C:, hay chính ˙ xác hon là vào thu muc goc ´ ˆ ’ ˆ ’ ’ ˆ ˙’ a phân vùng mà tu d khoi d ng Windows NT. Dây có the là phân vùng FAT16 hay cu `’ ¯ó ’’ ˙¯o ’ ˙ ˆ ¯ ˆ phân vùng NTFS. ¯ ac d ˆ’m d ˆ’˙ nhan ra phân vùng này là hai tap tin ntldr và boot.init D ˘ ¯ie ¯e ˆ ˆ ˙ ’’ ˙ ˙ tap tin này có the an!). Tap tin bootsect.lnx có the d ˘ t thuoc tính chua trong d (nhung ˆ ´’ ¯ó ˜’ ˆˆ ˆ ˆ’ ¯a ˆ ’ ¯o chı d c (read-only). ˙ ˙ ˙ ˙ ˙ 7. Sau d tìm tap tin boot.ini và thêm vào dòng sau: ¯ó ˆ ˙ C:bootsect.lnx="LINUX" ´ ˆ ´ ˆ ˘ ¯o ˆ’ ¯a (tat nhiên, trong dau ngoac kép ban d c có the d ˘ t tên bat ky.) ´ ` ˆ ˙ ˙ ˙ ˙ ˆ ’’ ¯o ` 8. Viec còn lai là khoi d ˆ ng lai máy tính mot lan nua, và trong trình d ’n chon he d ˆ u ˆ ˆ ˜’ ¯o ` ˆ ¯ie ˙ se có˙LINUX. Neu chon LINUX, thì˙LILO se d oc chay và sau d nó ˙(LILO) se hành ˜ ´˙ ˙ ˙ ˆ ˜ ¯u ’ ’ ¯ó ˜ nap Linux. ˙ ˙ ˙ ˙ `’ ˜ ’`’ ’ ¯o ´ Còn bây gio chúng ta se xem xét truong hop ban d c (do vô tình hay co ý) cài d ˘ t LILO ˆ ¯a ’ ’’ ¯o ’ ¯ı ˙ ˙ ˙ MBR). Trong truong hop ˙ ban vào ban ghi khoi d ˆ ng chính cua d˜a (Master Boot Record, ’`’ ’ này ’ ’’ ¯o ˙ ’’ ¯o ghi khoi d ˆ ng Windows NT (hay 2000) se bi xóa, và viec khoi d ˆ ng Windows NT (buoc thu ˙ ˜ ˆ ’´’ ´’ 6 o trên) là không the. Neu nhu ban d c van còn muon˙ su dung ˙trình khoi d ˆ ng OS Loader ’’ ˙ ’ ´ ˆ ˆ ’ ¯o ˆ ˜˙ ´ ’’ ˆ ’’ ¯o cua NT, chu không muon dùng LILO, thì nhung buoc trên ˙ thay d ˆ’i mot ˙chút: thay cho ’ ´’ ´ ˆ ˙ ˙ ˜’ ’´’ có ¯o ˆ buoc thu 6 ca `n làm các thao tác sau. ˙ ’´’ ´’ ˆ ’’ ¯o `’ ¯ı ` ˆ ’’ ¯o 1. Khoi d ˆ ng Windows NT tu d˜a mem khoi d ˆ ng (d tao truoc khi cài d ˘ t Linux, neu ¯ã ’´’ ¯a ´ ˆ không có ˙ thì ban d c can tìm mot máy khác ˙d ` ˙y Windows NT roi tao). Trong ˙ ` ¯o ˆ ˆ ¯ang cha ˆ trình d ’n (thuc d ’n) cua trình khoi d ˆ ng can chon ˙lenh Recover, roi chon che d ˆ ¯o ’ ˙ ˙ ’ ¯o ˙ ’ ’ ¯o ` ˆ ˆ ` ˆ ˙ ´ ¯o ˆ Command mode. ˙ Sau d d ˘ ng nhap vào tài khoan nhà quan tri (administrator). ˙ ’ ˙ ˙ ’ ˙ ˙ ¯ó ¯a ˆ ˙ ˙ 2. Phuc ho ˆ`i lai ban ghi khoi d ˆ ng chính cua d˜a. Su dung câu lenh fdisk /mbr. Tác gia ’ ’’ ¯o ’ ¯ı ’’ ˆ ’ dùng lenh ˙ thành công, mac dù trong mot so bài ˙ nói cách phuc hoi MBR nhu ˙ ˆ này ˙˘ ˆ ˆ ´ báo ˙ ` ˆ ’ ˙ ’ ˙ ˙ vay không phai lúc nào cung làm viec. Trong Windows 2000 có các lenh chuyên dùng ˙ ˆ ˜ ˆ ˆ ˙ ˙ ˙ `’ ˆ ˆ ´ ` fixboot và fixmbr (chay tu console phuc hoi he thong). Chay hai lenh này theo thu tu ˆ ˆ ´’ ’ d chı ra. Sau d Windows 2000 se khoi d ˆ ng ˙ ¯ã ’ ¯ó ˙ ˙ ˜ ’’ ¯o bình thuong. ’`’ ˙ ˙ ˙ ˙ ’’ ¯o `’ ¯ı ` ˆ ’’ ¯o 3. Khoi d ˆ ng lai máy tính tu d˜a mem khoi d ˆ ng Linux và d ˘ ng nhap vào he thong voi ¯a ˆ ˆ ´ ˆ ´’ quye `n nguoi˙dùng root. ˆ ˙ ` ’’ ˙ ˙ ˙ ˆ ˆ ’’ ˆ ’’ ¯a ˆ 4. Nhap lenh cd /etc và mo tap tin lilo.conf. O d ˆ u tap tin này có liên ket d´ n phân ` ´ ¯e ˆ ˆ vùng ˙ khoi d ng theo mac d nh, ví du, /dev/hda. ˙’ ˘ ¯i ˙ ˙ ’ ¯o ˆ ˙ ˙ ˙ ˙ 5. Dùng bat ky trình soan thao nào, ví du, CoolEdit cua Midnight Commander, d ˆ’ thay ´ ` ˆ ’ ’ ¯e ´ ˙ the giá tri này thành phân vùng d cài ˙ Linux lên (chính xác hon là thành phân vùng ˆ ¯ã ’ d ’oc gan˙nhu goc (/) cua Linux). Neu Linux d ’oc cài vào phân vùng /dev/hda3, thì ¯u ’ ´ ˘ ’ ´ ˆ ’ ´ ˆ ¯u ’ ` can ˙ ghi cái d tuc là thay the /dev/hda thành ˙ ´ ´ /dev/hda3. Neu nhu ban d c không ˆ ¯ó, ´’ ˆ ˆ ’ ¯o nho d cài Linux vào d thì hãy chay câu lenh mount và tìm ke ´’ ¯ã ¯âu, ˆ ´ t qua ˙tuong tu nhu ˆ ’ ’’˙ ’ ’ sau2 : ˙ ˙ ˙ 2 ´ ´ có nghıa là tìm phân vùng d gan vào thu muc goc /, trong ví du này là /dev/hda3 ˜ ¯ã ˘ ’ ˆ ˙ ˙
    24. 20 Cài dat HDH Linux trên cùng máy tính voi Windows ¯˘ ¯ ´’ ˙ kênh giao tác /dev/hda3 on / type reiserfs (rw) 6. Chay lenh /sbin/lilo d ˆ’ ghi trình khoi d ˆ ng vào phân vùng /dev/hda3 (can chay ˆ ¯e ’’ ¯o ` ˆ lenh ˙ lilo không có tham so). Se có canh báo ve viec phân vùng không phai là d ˙ u ˙ ´ ’ ˙ ` ’ ` ˆ ˆ ˜ ˆ ˆ ¯a ˆ ˙ trên d a. Dây chính là d `u chúng ta can, ban ghi khoi d ng cua Windows d oc giu tiên ` ’ ˙ ’ ’ ˜ ¯ı ¯ ¯ie ˆ ˆ ’ ¯o ˆ ¯u ’ ˜’ ’ nguyên ven. ˙ ˙ ˙ ’ ˆ ’´’ ’ ’’ 7. Thuc hien các buoc 6-8 nhu o trên. ˙ ˙ ˜ De dàng d ˆ ` ˘ ´’ ´’ ` ˆ ’’ ¯o ’ ¯e ˆ’ ¯oán ra rang, "quy trình" phuc tap voi hai lan khoi d ˆ ng lai chı d ˆ’ chuyen sector ` khoi d ˆ ng Linux tu MBR vào sector d ˆ u tiên ’ ’’ ¯o `’ ˙ ˙ ˙ cua phân vùng dành cho Linux, và phuc hoi ` ¯a ˆ MBR cu ˙’ a Windows. ˙ ´ ’’ ¯ây. ˆ’ ˜ ’’ ¯o Quá trình cài d ˘ t Linux ket thúc o d Ban d c d có the chon HDH se khoi d ˆ ng và d ˆ u ¯a ˆ ¯o ¯ã ` ¯ie ˙ mình. ˙ ˙ ˙ ¯ ˙ ˆ’ khien máy tính cua ’ 2.7 ’’ ’’ ¯ ˆ Su dung trình khoi dong LILO ˙ ˙ 2.7.1 ´ ˆ Cài dat và cau hình LILO ¯˘ ˙ ’ ¯ã ` ˆ ’ ’’ ’’ ¯o ´ Nhu d nói trong phan lua chon chuong trình khoi d ˆ ng, neu trên máy d cài Windows 98 ˆ ¯ã ´’ ˆ ´ voi he thong tap tin FAT16,˙ thì˙ lua chon tot hon cho trình khoi d ng là chuong trình có trong ´ ’ ˙ ’’ ¯o ˆ ˆ ’ ˆ ˆ ’’ thành˙ phan cu˙ moi ban phân phoi HDH Linux – LILO (LInux LOader). ` ˆ ’a ’ ˙´ ˆ ¯ ˙ ˙ ˙ Giong nhu truong hop Windows NT, chúng ta se d ’a ra các buoc can thuc hien d ˆ’ có the ´ ˆ ’ ’`’ ’ ˜ ¯u ` ’´’ ˆ ’ ˆ ¯e ˆ’ ’’ ¯o ` khoi d ˆ ng nhieu HDH. ˙ ˙ ˙ ˆ ¯ ˙ ’´’ ¯a ˆ’ ¯ı ` ˆ ’’ ¯o 1. Truoc khi cài d ˘ t Linux hãy chuan bi d˜a mem khoi d ˆ ng Windows. ˙ ˙ ˙ 2. Dùng chuong trình Partition Magic d ˆ ˆ ’’ ’ lay phan không gian d˜a còn trong và trên d ¯e ´ ` ˆ ¯ı ´ ˆ ¯ó ˆ ´ tao ra mot phân vùng ext2(3) (he thong tap tin Linux) và mot phân vùng swap. Cách ˆ ˆ ˆ ˆ chia o d˜˙ d nói o trên. Neu dung luong o d˜a cung vuot quá˙8,4 Gbyte thì hãy d c ky ˙ ’ a ˆ ¯ı ¯ã ’’ ´ˆ ˙ ˙ ’ ’ ˆ’ ¯ı ´’ ’’ ¯o ˜ ` các phan 2.3 và 2.5. ˙ ˙ ˙ ˆ ¯a ˜ ’ ˆ ¯i ´’ ’ ´ ` ` ´ 3. Cài d ˘ t Linux theo chı dan d kèm voi ban phân phoi. Can nho rang, neu ban muon su ˆ ˆ ´’ ˘ ˆ ´ ’’ ˆ ˙ ’’ ¯o ` dung trình khoi d ˆ ng LILO, thì trong quá trình cài dat Linux can chon phu ’ ˘ ˙ ong án cài ˆ ’ LILO vào ban ghi˙khoi d ˆ ng chính (Master Boot Record). Tao các d˜a mem khoi d ˆ ng ˙ ’ ’’ ¯o ˙ ¯ı ˙ ` ˆ ’’ ¯o ´ theo nguyên tac là không ˘ ˘ ˙bat buoc, nhung tác gia khuyên ba˙ d c nên làm.3 ´ ’ n ¯o ˙ ˆ ’ ˙ ˙ ˙ 4. Buoc tiep theo can cau hình LILO d ˆ’ có the khoi d ˆ ng các HDH theo lua chon. LILO ’´’ ´ ˆ ˆ ´ ` ˆ ¯e ˆ’ ’’ ¯o ¯ ’ d ’oc ca ¯u ’ ˆ ´ u hình bang tap tin /etc/lilo.conf và câu lenh /sbin/lilo˙. Câu˙lenh này ` ˘ ˆ ˙ ˆ ˆ ˙ d ’ cài d ˘ t (hay ˙ d ˘ t lai) LILO. dùng ¯e cài ¯a ˙ ˙ ˆ ¯a ˙ ˙ ˙ ’ ’ ˆ ´ Chúng ta xem xét mot ví du nho cua tap tin cau hình LILO. Trong ví du này chúng ˆ ˆ ˙ /dev/hda1 là phân vùng voi DOS/Windows, còn phân vùng ˙ ˙ ˙ ˜ ’ ´ ta se coi nhu thiet bi ˆ ´’ ˙ 3 ’’ ¯o ´ ’ ’ ’’ ¯o ’ ¯ı Ghi chú. Trình khoi d ˆ ng LILO không bat buoc phai cài d ˘ t vào ban ghi khoi d ˆ ng chính cua d˜a, LILO ˘ ˆ ¯a ˆ’ ˘ ’’ ’ ` ’’ ˙ ’ ˙ ˙ ˙´ ’ có the nam o ban ghi khoi d ˆ ng cua phân vùng chính d ’oc kích hoat và chua thu muc goc cua Linux hoac tham ¯o ¯u ’ ´’ ’ ˆ ˘ ˆ ˙ ’’ ˆ ˙ ˙ ` ˙ ’ ’ ˘ chí trên phân vùng lôgíc trong phân vùng mo rong. Trong truong hop d MBR can phai có kha nang nap LILO, `’ ˙ ˙ ’ ’ ¯ó ˆ ’’ ¯o ’ ví du khi MBR là trình khoi d ˆ ng cua MS-DOS ˙ hay Windows. Tuy nhiên tác gia chua nhìn thay su ˙can thiet ˙ ’ ´ ` ´ ’ ˆ ’ ˆ ˆ cua ung dung này (neu d chon˙LILO làm trình khoi d ˆ ng chính thì hãy su dung cho "tron bo"), vì the chúng ta ’ ˙’´ ´ ¯ã ˆ ’’ ¯o ’’ ˆ ˙ ´ ˆ ˙ se không xem xét d´ n. ˙ ˙ ˙ ˙ ˙ ˜ ¯eˆ
    25. ’’ ’’ ¯ ˆ 2.7 Su dung trình khoi dong LILO 21 ˙ ˙ ’`’ ’ ¯ó ` /dev/hda2 chua Linux. Trong truong hop d /etc/lilo.conf có dang gan nhu ´’ ˆ ’ sau: ˙ ˙ kênh giao tác boot = /dev/hda2 compact delay = 50 # message = /boot/bootmesg.txt root = current image = /boot/vmlinuz-2.4.22 label = linux read-only other = /dev/hda1 table = /dev/hda label = dos `’ ’ Vài loi giai thích cho ví du: Dòng boot cho biet thiet bi khoi d ˆ ng. ´ ˆ ´ ˆ ’’ ¯o ˙ ˙ ˙ ˆ ´ ¯o Dòng compact bat che d ˆ nén tap tin map – tap tin chua d ˘ c tính cua nhân d ’oc khoi ˆ ˆ ˆ ´’ ¯a ’ ¯u ’ ’’ d ˆ ng; tính nang (nén) ˘ ˙ này˙tang toc d cua khoi d ng d `u. ˙ ˘ ˙ ´ ¯o ’ ˙ ’’ ¯o ¯a ˙ ¯o ˆ ˆ ˆ ˆ ˙ ˙ ˙ Câu lenh message dùng d ˆ’ d ’a ra thông báo theo ý muon khi khoi d ˆ ng. ˆ ¯e ¯u ´ ˆ ’’ ¯o ˙ ˙ ´ ` ` ’ ’ ˆ Bat d ˆ u tu dòng image là các phan nho cua tap tin cau hình, moi phan tuong ung voi ˘ ¯a `’ ˆ ´ ˆ ˜ ˆ ` ˆ ’ ’ ´’ ´’ ` ˙’ a nguoi dùng. Trong moi phan nhu vay ˜ ` ˆ ˆ ¯ie ˜ ’’ ¯o mot he d ˆ u hành se khoi d ˆ ng theo lua chon cu ’ ’`’ ˆ ˆ ’ ˆ có ˆ˙ mo˙t dòng label. Trên ˙ dòng này ˙ghi tên can nhap vào dau nhac LILO hay tên ˙ ˙ ` ´ ´ ˘ se ˆ ˆ ˆ ˜ ˙ hien thi trong trình d ’n cua LILO d ˆ’ có the chon HDH muon khoi d ˆ ng. Neu nhu tên ˙ ˆ’ ¯o ’ ¯e ˆ’ ¯ ´ ˆ ’’ ¯o ´ ˆ ’ ˙ không d ’oc nhap sau khoang thoi gian chı trên ˙ ¯u ’ ˆ ’ `’ ’ dòng delay (tính theo phan muoi giây ˙ ` ˆ ’`’ – can nhân voi˙ 0,1 giây), thì se khoi d ˆ ng HDH theo mac d nh. Trong ví du này, se ˆ` ˙ ´ ’ ˜ ’’ ¯o ˘ ¯i ˜ khoi d ˆ ng Linux theo mac d nh, vì phan ´ ’’ ¯o ˘ ¯i `˙ cau ¯hình tuong ˙ung˙voi Linux nam˙d `u tiên ` ˆ ˆ ’ ’ ´’ ´’ ˘ ¯a ˆ ˙ ˙ ˙ ` ˆ ˆ’ ’ trong tap tin. Có the chı ra he d ˆ u hành d ’oc khoi d ˆ ng theo mac d nh khi thêm mot ˆ ¯ie ¯u ’ ’’ ¯o ˘ ¯i ˆ dòng có ˙ dang default=dos˙, tuc là su dung tên d d ˘ t trên dòng˙ label. ´’ ’’ ˙ ˙ ˙ ˙ ¯ã ¯a ˙ ˙ ˙ ´ˆ ´ Dòng table=<device> cho biet tên thiet bi chua bang phân chia d˜a. LILO se không ˆ ´’ ’ ¯ı ˜ d ’a thông tin ve ¯u ˆ ¯ı ˆ ¯ie ` ˙ ` phân chia d˜a cho he d ˆ u hành d ’oc khoi d ˆ ng neu bien này không ¯u ’ ’’ ¯o ´ˆ ´ ˆ d ’oc d ’a ra. (Mot so he d ˆ u hành có công cu khác ˙¯e xác d nh là d d ’oc khoi d ˆ ng ¯u ’ ¯u ˆ ´ ˆ ¯ie ˆ ` ˙ d ˆ’ ¯i ˙ ¯ã ¯u ’ ’’ ¯o ˙ tu phân vùng nào.) ¯ `’ ˙ Dung quên rang, can thuc ˙ n câu lenh /sbin/lilo,˙ sau khi thay ˙ ` ` ˙ ˙ `’ ˘ ˆ ’ hie ˆ ˆ ˙ ˙ d ˆ’i chı dan d´ n bang phân chia d˜a, tuc là thay d ˆ’i bien table. Neu d ˘ t dòng (goi ˜ ˆ ˙ ¯o ’ ˆ ¯e ’ ¯ı ´’ ¯o ´ ˆ ´ ¯a ˆ ` ’ ´ là phan nho thì tot hon) other = /dev/hda1 trong tap tin /etc/lilo.conf, thì ˙ ˙ ˆ ˆ ’ ˆ ´ ’ ¯ı trong thu muc goc cua d˜a /dev/hda1 (d˜a C: trong he tho ˙´ ng thuat ngu Microsoft) can ` ’ ˆ ¯ı ˆ ˆ ˆ ˜’ ˆ có trình khoi ¯o ˙ d ng phu (không phai là chính). Trên mo˙t máy cua tác gia o d nam trình ’’ ˆ ’ ’ ˙ ’ ’’ ¯ó ˘ ` ˆ ’’ ¯o khoi d ˆ ng NT Loader ˙ ˙(vì Windows NT d oc cài d ˘ t truoc Linux), và LILO khoi d ng ˙ ´ ’’ ¯o ¯u ’ ’ ¯a ’ ’ ˆ ˙ thành công Windows NT. Chı ˆ ’ can d ˘ t tho˙ gian cho khoi d ˆ ng trong tap tin boot.ini ` ¯a `’i ˙` ’ ˙ ’ ’ ¯o ˆ bang không, d ˆ’ không thay trình d ’n ˙ ’’i d ˆ ng cua NT Loader. Tuy nhiên, neu vì mot ` ˘ ¯e ´ ˆ ¯o kho ¯o ’ ˙ ˙ ´ ˆ ˆ lý do nào d ban muo ´ n thay trình d ’n này thì ´ ˙ giá tri timeout trong tap tin boot.ini ca˙n ` ¯ó ˆ ˆ ¯o ˆ ˆ ˙ ` d ˘ t khác không (thoi gian cho d ’oc tính theo giây). ¯ ieu này có the can thiet khi muon `’ ¯u ’ ˙ ` Dˆ ’ ˙ˆ ` ´ ´ ¯a ’ ˆ ˆ ˆ ˙’ ’ `’ ˙ ¯o ’ khoi d ˆ ng ca Windows 98 tu trình d ’n cua NT Loader (trong truong hop này se có 3 ’ ¯o ’`’ ’ ˜ HDH: ˙ ¯ Linux, Windows NT và Windows 98, trong trình d ’n cua LILO˙ neu chon dos ¯o ’ ´ ˆ thì se hien ra trình d ’n cua NT Loader roi tu d chon mot trong hai HDH Windows d ˆ’ ` ˙ ˜ ˆ ¯o ’ ˆ `’ ¯ó ˆ ¯ ¯e ’’ ¯o khoi d ˆ ng). ˙ ˙ ˙ ˙ ´ ´ ’’ ¯o ’ ´ `’ Neu ban d c muon khoi d ˆ ng Windows truc tiep tu LILO, thì hãy thêm phan nho sau ˆ ¯o ˆ ˆ ` ˆ ’ ˙ ˙ vào /etc/lilo.conf: ˙ ˙
    26. 22 Cài dat HDH Linux trên cùng máy tính voi Windows ¯˘ ¯ ´’ ˙ kênh giao tác other = /boot/bootsect.dos label = win ¯ó ´ `’ ’ ˆ ´ ’ ˆ’ ¯ı trong d bootsect.dos lay tu thu muc goc cua o d˜a chua NT Loader. ˆ ´’ ˙ ’’ ´ 5. Sau khi sua xong tap tin /etc/lilo.conf theo ý muon, can chay câu lenh /sbin/lilo ˆ ˆ ˆ ` ˆ ¯e’ nhung thay d ˆ’i có hieu luc. Câu lenh này (trong tài lieu ˙ ’ong dan goi là map- d ˆ ˜’ ¯o ˙ ˆ ’ ˆ ˆ hu ´’ ˙˜ ˆ installer) cài d ˘ t trình kho ¯o ˙’ i d˙ ng phu, ˙mà se d oc kích hoat trong lan khoi˙ d ng tiep ˙ ` ’’ ¯o ´ ¯a ’ ˆ ˜ ¯u ’’ ˆ ˆ ˆ theo. Truoc khi ´’ ˙ chay /sbin/lilo d˙’ thay d ’i buoc khoi d ˙ ng, hãy thuc hien câu lenh ˙ ˙´ ’’ ¯o ˙ ’ ¯eˆ ¯o ’ ’ ˆ ˆ ’ ˆ ˆ ´ ˙ ˆ ´ˆ ˜ ’ ˆ ´ ’ này voi tham so -t. Khi có tham so này se thuc hien tat ca các thu tuc cài d ˘ t trình ´’ ˆ ˙ ’ ˙ ˙ ¯a ˙ khoi d ˆ ng, tru viec thay d ˆ’i tap tin map, ban ghi˙ sector khoi d ˆ ng, và bang phân chia o ’’ ¯o `’ ˆ ¯o ˆ ’ ˙ ’’ ¯o ˙ ’ ˙ ˆ’ d˜a, tuc ˙ là chı chay thu cau hình moi. Neu cho thêm tùy chon˙ -v, thì ban d c se d oc ’ ˙ ’’ ´ ˙ ´’ ´ ¯ı ´’ ˆ ˆ ¯o ˜ ¯u ’ ’ bie´ t thêm thông tin chi tiet ve nhung gì lenh /sbin/lilo se thuc hien.˙ ˙ ˆ ˙ ´ ˆ ˜’ ˆ ` ˆ ˙ ˜ ’ ˆ ˙ ˙ ˙ ˙ Khi /sbin/lilo ghi d noi dung moi lên sector khoi dong, thì noi dung cu cua ¯è ˆ ´’ ’’ ˆ ˆ ˜ ’ sector này se tu d ˆ ng d ’oc ˙ ghi nho vào mot tap tin. Theo mac d nh d là tap tin ´’ ˙ ˘ ˙ ˜ ’ ¯o ¯u ’ ˆ ˆ ¯i ¯ó ˆ ˙ ´ ˙ ´ ´ ’ ˙´ ˙ ˙ ˙ , trong d NNNN tuong ung voi so cua thiet bi, ví du, 0300 – ˙ ˙ /boot/boot.NNNN ¯ó ’’ ’ ’ ˆ ˆ ´ ˆ tuong ung /dev/hda, 0800 – /dev/sda, v.v. . . Neu tap tin này d có trên d˜a, thì nó ˙ ˙ ’ ’ ´’ ˆ ¯ã ¯ı không bi ghi d lên. Tuy nhiên có the ¯a ˆ ’ d ˘ t mot tên khác d ˙ ’ ghi sector khoi d ng, không ’’ ¯o ¯è ˆ ¯e ˆ nha ˆ ´˙ ´ t thiet phai dùng /boot/boot.NNNN. ˙ ˆ ’ ˙ ˙ ˆ ˆ’ ’’ Tap tin /boot/boot.NNNN có the su dung d ˆ’ phuc hoi noi dung cu cua sector khoi ¯e ` ˆ ˆ ˜ ’ ’’ dˆ˙ ng, neu không còn cách phuc hoi nào ˙ ´ ` khác d ’n gia ˙ ’ n hon. Câu lenh d ’ thuc hien có ˙ ¯o ˆ ˆ ¯o ’ ˆ ¯e ’ ˆ ˆ da˙ng: ˙ ˙ ˙ ˙ ˙ kênh giao tác [root:~#] dd if=/boot/boot.0300 of=/dev/hda bs=446 count=1 hay kênh giao tác [root:~#] dd if=/boot/boot.0800 of=/dev/hda bs=446 count=1 (bs=446 vì chı phuc hoi chuong trình khoi d ˆ ng, và không d ˆ ng gì d´ n bang phân chia ’ ˆ` ’’ ’’ ¯o ¯o ¯e ’ ˆ d˜a). ˙ ˙ ˙ ¯ı ˜ ˆ’ ` ˆ ˜ ` ˆ ´ ˘ ˆ ` Cung có the phuc hoi MBR cu khi can thiet bang câu lenh /sbin/lilo voi tùy chon ˆ ´’ -u. Nhung ca ’ `n biet rang, câu lenh này chı làm viec d ˙ voi d ˆ u kien là thu muc LILO ˆ ˙´ ` ˆ ˘ ˆ ’ ˆ ¯úng ´’ ¯ie ` ˆ ’ ˙ (tuc là /boot) không thay d ˆ’i˙ ke tu khi cài d ˘ t. ˙ ´’ ¯o ˆ’ `’ ¯a ˙ ˙ ˙ ’ ˆ’ ¯u ’ ` ` MBR cua MS-DOS có the d ’oc phuc hoi bang cách khoi d ˆ ng vào DOS tu d˜a mem ˆ ˘ ’’ ¯o `’ ¯ı ` ˆ (CD) ro ˆ`i chay câu lenh fdisk /mbr (xem trên). Lenh này chı ˙thay d ˆ’i mã chuong trình ˆ ˙ ˙ ˆ ’ ¯o ’’ ˙ ˙ khoi d ˆ ng nam trong MBR, mà không thay d ˆ’i bang phân chia d˜a. ’’ ¯o ` ˙ ˘ ¯o ’ ¯ı ˙ ’’ ¯o ` ’’ ¯o 6. Sau khi cài d ˘ t lai trình khoi d ˆ ng can khoi d ˆ ng lai máy tính và thu các phuong án ¯a ˆ ’’ ’’ ˙ ˙ ’’i d ˆ ng khác nhau d ˆ’ kiem tra. kho ¯o ’ ˙ ˙ ˙ ¯e ˆ ˙ D ˆ’ ´ ˆ ˆ` ` ¯ e ket thúc phan nói ve LILO này chúng ta se xem xét vài khó khan có the xuat hien khi ˆ ˜ ˘ ˆ’ ´ ˆˆ ’’ ´ su dung LILO, và cách khac phuc (neu có the). ˘ ´ ’ ˙ ˆ ˆ Khi LILO d ’oc nap, nó d ’a˙ra màn hình tu "LILO". Khi này moi chu cái bieu thi su ket ˙ ¯u ’ ¯u `’ ˜ ˆ ˜’ ˆ’ ’ ´ˆ thúc mot hành d ˆ ˙ng nào d hay ket thúc mot buoc nap LILO. Neu khoi d ng bi bi˙ ngung ˙ ´ ´ ’’ ¯o ˙ ˆ ¯o ¯ó ˆ ˆ ’´’ ˆ ˆ ’ giua chung, thì qua so chu cái d ’a ra có the nhan d nh ˙ve nguyên nhân xuat hien van˙d ˆ . ˜’ ˙ `’ ˙ ´ ˆ ˜’ ¯u ˙ ˆ’ ˆ ¯i ` ˆ ´ ˙ ˆ ˙´ ¯e ˆ ˆ ` ˙ ˙ ˙
    27. ’’ ’’ ¯ ˆ 2.7 Su dung trình khoi dong LILO 23 ˙ ˙ ˜’ ˆ ˆ` ’ • Không chu cái nào hien ra – không có phan nào cua LILO d ’oc nap. Hoac LILO không ¯u ’ ˘ d ’oc cài d ˘ t, hoac phân ˘ ˙ vùng chua LILO chua d oc kích hoat. ˙ ´’ ˙ ˙ ¯u ’ ¯a ’ ’ ¯u ’ ˙ ˙ ˙ ˙ ˙ ˜ ˆ ’’ ¯o • L [mã loi] – trình khoi d ˆ ng chính d d ’oc nap và d chay (tuc là d nhan d ’oc quyen ¯ã ¯u ’ ¯ã ´’ ¯ã ˆ ¯u ’ ˆ` ˙ ˙ khoi d ng phu. Mã loi hai ˙ tu˙cho biet ˙ ’ ˙ ` ¯ie ˆ’ d ˆ u khien), nhung nó không the nap trình ’ ˆ’ ’ ¯o ˆ ˜ ˆ ký ’ ´ ˆ nguyên nhân cu the ’ ˆ ˆ’ cua van d ˆ (cách giai mã can tìm trong˙tài lieu ky thuat cua LILO). ´ ¯e ` ˙ ’ ˆ` ˙ ˆ ˜ ˆ ’ ˙ Thông thuong ˙ van d ˆ nay sinh do o d˜a xau (có khuyet tat) hay không˙d ˘ t d ’`’ thì ´ ¯e ’ ˆ ` ’ ¯ı ´ ˆ ˆ ´ ˆ ˙ ˆ ¯a ¯úng cau ´ ˆ trúc hình hoc cua d˜a. Neu LILO không dung lai o d mà ´ ’ ¯ı ´ `’ ’’ ¯ây, ˙ tiep tuc d a ra˙ mot chuoi ˜ ˆ ˆ ¯u ’ ˆ ˆ vô tan các mã ˆ ˙ loi, thì van d ` thuong de giai quyet. ˜ ´ ¯e ’`’ ˜ ’ ˙ ´ ˙ ˙ ˆ ˆ ˆ ˆ ˆ ˙ ’’ ¯o ¯ã ¯u ’ ’’ ¯o • LI – trình khoi d ˆ ng chính d nap d ’oc trình khoi d ˆ ng phu, nhung không chay d ’oc ’ ¯u ’ nó. Có the ˆ’ là loi d˙ ’a cau trúc hình hoc ˙ ’ a d˜a, hoac tap tin boot/boot.b bi di˙chuyen ˆ˜ ¯u ´ ˆ ˙ cu ¯ı ˘ ˆ ˙ ˙ ˙ ˆ’ mà nguoi dùng quên không chay /sbin/lilo. ˙ ˙ ’`’ ˙ ˙ ˙ ’’ ¯o • LIL — trình khoi d ˆ ng phu d d ’oc chay, nhung nó không the nap bang mô ta tu tap ¯ã ¯u ’ ’ ˆ’ ’ ’ `’ ˆ tin map. Nguyên nhân ’`’ ˙ thuong do ˙ ˙ ˙t tat cua o d a hoac không d a d khuye ˆ ’ ˆ’ ¯ı ´ ˙ ´ ˙ ˆ ˜ ˘ ¯u ¯úng cau trúc ’ ˆ ’ ¯ı hình hoc cua d˜a. ˙ ˙ ˙ ’’ ¯o • LIL? – trình khoi d ˆ ng phu d d ’oc nap vào d a chı không d ¯ã ¯u ’ ¯i ’ ¯úng. Thông thuong do loi ’`’ ˆ˜ d ’a ra ca ¯u ´ u trúc hình hoc cua d˜a hoac˙ tap tin /boot/boot.b bi di chuyen mà nguoi ˆ ˙ ˙’ ¯ı ˙ ˘ ˆ ˙ ’ ˆ ’`’ dùng quên không chay˙/sbin/lilo. ˙ ˙ ˙ ˙ ’ ’ ’ • LIL- – bang mô ta trong tap tin map bi phá huy. Thông thuong do loi d ’a ra cau trúc ˆ ’`’ ˜ ˆ ¯u ´ ˆ ˙ /boot/boot.b bi di chuyen mà nguoi dùng quên không ˙ ’ ¯ı hình hoc cua d˜a hoac tap tin ˘ ˆ ˆ’ ’`’ chay /sbin/lilo.˙ ˙ ˙ ˙ ˙ ´ ’ ` ˆ ’ • LILO – tat ca các phan cua LILO d ’oc nap thành công. ˆ ¯u ’ ˙ ˙ 2.7.2 ˆ ¯ˆ` Cài dat các he dieu hành khác sau Linux ¯˘ ˙ ˙ ’’ ¯o ’ Khi cài d ˘ t MS-DOS và Windows 95/98, trình khoi d ˆ ng cua chúng (không phu thuoc vào ý ¯a ˆ ´ ’˙ ˙ ´ muon cua ban d c) d ’oc ghi vào Master Boot Record (MBR), và dau kích hoat trong bang ˆ ¯o ¯u ’ ˆ ˙ ˙ ’ ˙ d oc chuyen sang phân vùng MS-DOS (Windows 95/98). Mà trình khoi d ng phân vùng se ¯u ’ ˙ ˙ ’ ˙ ’’ ¯o ˜ ’ ˆ ˆ ˙ MS-DOS và Windows 95/98 chı ’ "biet" chuyen quyen d ˆ u khien cho sector d ˆ u tiên ˙ ’ a ´ ’ ` ¯ie` ’ ` cu ˆ ˆ ˆ ˆ ¯a ’ ´ ´ ˆ ˆ ’ ` phân vùng kích hoat. Nhu the, neu nhu ban d c d ˆ u tiên cài d ˘ t Linux, và sau d moi cài d ˘ t ¯o ¯a ¯a ¯ó ´’ ¯a Windows 95/98 hay ˙ MS-DOS, thì Linux˙se không the khoi d ˙ ng. Có the phuc hoi lai LILO ˙ ’ ’’ ¯o ’ ` ˙ ˜ ˆ ˆ ˆ ˆ ` ˘ ˆ ´ˆ ¯u ’ ˙ bang cách chay lenh /sbin/lilo (neu LILO d ’oc cài vào MBR), hoac kích ˙ t phân vùng ˘ hoa ˙ chua LILO (neu ˙ ´’ ˙´ LILO d oc cài vào phân vùng chính). ˆ ¯u ’ ’ ˙ ˙ ˙ ˙ ´ ¯e ˆ ` ` ˆ’ ’ Khi có van d ˆ sau khi cài d ˘ t mot he d ˆ u hành khác sau Linux, thuong có the giai quyet ¯a ˆ ˆ ¯ie ’`’ ´ ˆ ` ’’ ¯o ˙bang d a mem khoi d ng, sua lai tap tin cau hình LILO (thêm bang cách khoi d ˆ ng vào Linux ˘ ¯ı ˆ ˘ ` ˙ ˙ ` ’’ ¯o ’’ ´ ˜ ˆ ˆ ˆ phan nho cho HDH moi), roi chay /sbin/lilo. ˙ ˆ` ’ ¯ ˙ ´’ ˆ ` ˙ ˙ ˙ 2.7.3 ˆ’ Chuyen thu muc /boot lên phân vùng DOS ’ ˙ ˜’ ’ ˆ ˜ ´’ ´ ˆ ’ ’ ˘ ¯a ˆ ` ˆ ´ Nhung phiên ban nhân Linux moi nhat ho tro kha nang d ˘ t các tap tin can thiet trên giai d n ˆ ¯oa ’’ ¯o ´ khoi d ˆ ng vào he thong tap tin MS-DOS (hay ˙ UMSDOS). Vì trong phan lon các truong hop ˙ ˙ ` ´’ `’ ˙ ˆ ˆ ˆ ˆ ’ ’ phân vùng DOS ˙chiem các vùng d˜a o d ˆ u (không có han che cua BIOS), nên cho phép giai ˙ ´ ˆ ˙ ` ¯ı ’’ ¯a ´ ’ ˆ ˙’ ˙ ´ ˆ ´ ¯e ’ ˆ’ ¯ı ´’ ` ˆ ` ˆ’ ` quyet nhieu van d ˆ cua o d˜a lon, khi mà thu muc /boot không the nam trên phân vùng dành ˆ ’ ˘ cho Linux. ˙
    28. 24 Cài dat HDH Linux trên cùng máy tính voi Windows ¯˘ ¯ ´’ ˙ D ˆ’ ’ ˆ ’’ ¯o ` ’’ ´ ¯o ¯o ¯ e thuc hien phuong án khoi d ˆ ng này, can phân vùng DOS o che d ˆ d ˙ c/ghi, tao trong ’’ ˆ ˆ ˙ muc (ví du, /dos/linux), và chuyen tat ca các tap tin tu thu muc /boot vào ˙ ˙ `’ ˙ ’ ˙ d mot thu ¯ó ˆ ’ ˆ’ ´ ’ ˆ ˆ ˙ muc /boot d ˙oc chuyen thành liên ket tuong trung d´ n˙ thu muc /dos/linux; vi trí ˙ ˙ d thu ¯ó; ’ ¯u ’ ’ ˆ’ ´ ’’ ˆ ’ ¯eˆ ’ moi cu ´’ ’ a thu ’ ˙ ˙ ˙ muc /boot can chı ra trong tap tin /etc/lilo.conf, và cuoi cùng chay lenh ˙ ` ´ ˙ ’ ˆ ˆ ˆ ˆ /sbin/lilo. ˙ ˙ ˙ ˙ 2.8 ’’ ¯ ˆ ` Khoi dong Linux tu MS-DOS bang loadlin.exe `’ ˘ ˙ ’ ˆ ’’ ¯o ˆ’ ˘ ` Không chı các tap tin khoi d ˆ ng và nhân có the nam trong phân vùng DOS, mà ca tien trình ’ ´ ˆ ’’i d ˆ ng Linux kho ¯o ˙ nói chung có the d oc to chuc tu DOS. Kha nang này thuc hien nho chuong ˙ ’ ’ ´’ `’ ’ ˘ `’ ’ ’ ˆ ¯u ’ ˆ ’ ’ ˆ trình d˙˘ c biet loadlin.exe, do Hans Lermen (lermen@elserv.ffm.fgan.de)˙viet.˙ Chuong trình ¯a ˆ ˙ ´ ˆ ’’ này thuong ˙ trên các d˜a cua ban phân phoi.4 ˙` có ’’ ¯ı ’ ’ ´ ˆ ´ˆ ’’ ¯o `’ ˆ’ ´’ Loadlin.exe cung cap cách khoi d ˆ ng Linux tu o cung an toàn nhat, khi có phân vùng ´ ˆ kích hoat là DOS hay Windows. Phuong ˙ án khoi d ng này d oc khuyên su dung cho nguoi ’’ ¯o ’’ ’’ ˆ ¯u ’ ’ ’`’ ˙ dùng Linux moi. Pha ´’ ´’ ˙ `n lon nguoi dùng moi (và không chı ho) không d ’ kiên nhan d ˆ’ d c tài ’ ˙ ˙˜ ˆ ’`’ ´’ ¯u ˆ ¯e ¯o lieu rat hay nhung rat dài (và lai viet trên tieng Anh nua) cua˙ LILO. Vì the ho thuong su ˙ ng ˆ ´ ˆ ’ ´ˆ ´ ˆ ´ ˆ ˜’ ’ ´ ˆ ’`’ ’’ du ˙ ´ ˙ qua là không the khoi d ng d oc bat ky he d ˙`u hành nào (tác ’ ’’ ¯o ¯u ’ ´ ` ˆ ¯ie ˙ LILO không d ¯úng cách, và ket ’ ˆ ˆ ˆ ’ ˆ ˆ gia cung d roi vào truong hop nhu vay). ¯ oi voi nhung nguoi˙dùng moi thì se thuan tien hon ’ ˜ ¯ã ’ ’`’ ’ ’ ˆ D´ ´’ ˜’ ˆ ˙ ’`’ ´’ ˙ ˜ ˆ ˆ ’ khi su dung loadlin.exe d ˆ’ khoi d ˆ ng˙và bat d ˆ u tìm hieu Linux. Tuy nhiên, "không vào hang ’’ ˙ ¯e ’’ ¯o ´ ` ˘ ¯a ˆ’ ˙ ˙ cop sao ˙ ˘ t d ’oc cop". ´ ba ¯u ’ ˙ ˙ ˙ ˙ ` ’ ` ’ ˆ ¯a Chuong trình loadlin.exe không yêu cau phai cài d ˘ t, chı can d ˘ t chuong trình – tap tin ’’ ˆ ¯a ’’ ˆ ˙ d a mà DOS nhan ra. Có the ˙dùng ˙ ’ ’ loadlin.exe và nhân (anh cua nhân) lên mot trong các ¯ı ˆ ˜ ˆ ˆ’ chuong trình này d ˆ’ khoi d ˆ ng Linux tu CD˙ hoac tu o d˜a trong mang mà˙không can su dung ’’ ¯e ’’ ¯o `’ ˘ `’ ˆ’ ¯ı ` ˆ ’’ ` ’’ ¯o ’ ˘ ˙ng này bien loadlin.exe thành mot công cu tuyet voi d ’ khoi d ˙ ng ´ ˙ ˙ d˜a mem khoi d ˆ ng. Kha na ¯ı ˆ ˆ ˆ ˆ `’ ¯e ’’ ¯o ˆ ˆ Linux khi có van ¯e ´ ˙ d ˆ voi LILO. ˆ ` ´’ ˙ ˙ ˙ ˙ ’ ’ ´ Phiên ban 1.6 cua loadlin.exe làm viec voi moi cau hình DOS và có rat ít han che. Phiên ˆ ´’ ˆ ´ ˆ ´ˆ ’ ban này có the ’’ ˙ ’˙ ’ su dung bo nho mo rong; có the nap các nhân lon (các bzImage) và các anh ˙ ˆ ˆ ´’ ’’ ˆ ˆ ´’ ’ d˜a a ¯ı ’ ˆ ˙´ ˙ ’ o (initrd) truc tiep vào vùng bo nho nam trên.˙ ˆ ˙ ´ ` ’ ˘ ˙ ˙ ˆ ’’ Viec su dung loadlin.exe không có nghıa là Linux làm viec duoi DOS, vì chuong trình ˜ ˆ ’´’ ’’ này ho ’ ˙ ˙’ ˜ tro "khoi d ˆ ng lôgíc" cua máy tính, và sau d DOS d ’oc thay the hoàn toàn bang ’ ˙ ´ ` ˘ ˆ ’ ¯o ¯ó ¯u ’ ˆ Linux. Ne ´˙u nhu ban d c muon quay tro lai DOS, thì phai khoi d ˙ng lai máy tính, ví du, bang ˙ ´ ’’ ’ ’’ ¯o ` ˘ ˆ ’ ¯o ˆ ˆ câu lenh reboot. ˙ ˙ ˙ ˙ ˙ ˙ ˆ ˙ Nhu vay, can làm gì d ˆ’ có the su dung chuong trình loadlin.exe. ’ ˆ ˆ ` ¯e ˆ’ ’’ ’’ ˙ ˙ ’ ´ ´’ ˆ ’’ • Trên máy tính cua ban (tat nhiên voi bo xu lý 386 hoac cao hon) can cài d ˘ t DOS hay ˆ ˘ ’ ˆ ` ¯a WINDOWS 95. ˙ ˙ ˙ ˙ ` • Can có anh nén cua nhân Linux (zImage, bzImage)5 . ˆ ’ ’ ’’ ˆ’ ´ ˆ ¯ı ´ ’’ • Chuong trình loadlin.exe. Có the tìm thay trên d˜a phân phoi o dang không nén hay trong ˆ gói LOADLIN16.TGZ. Gói nén này còn chua huong da ´’ ’´’ ’’ ˙ ˜n su dung DOCMANUAL.TXT, ˆ ´ ˜ ˙ ´ tap tin tham so ví du DOCTEST.PAR, và huong dan cách d ’a các tham so DOCPARAMS.DOC ˆ ˆ ’´’ ˆ ¯u ˆ ˙ ` ng quên rang chúng là nhung tap tin DOS). (d ’ ` ˘ ˙ ¯u ˜’ ˆ ˙ 4 ˆ ´ ’ ˆ ´ mot so ban phân phoi còn có gói cài d ˘ t cho chuong trình này, thông thuong ghi tap tin loadlin.exe vào thu ˆ ¯a ’’ ’`’ ˆ ’ ’˙ muc cua nguoi dùng root ’`’ ˙ ˙ ˙ 5 Ghi chú. zImage là d nh dang nhi phân cu cua nhân, bzImage là d nh dang moi hon (so phiên ban nhân lon ´’ ’ ´ ¯i ˜ ’ ¯i ˆ ’ ´’ hon 1.3.73) có kích thuoc lên ˙ ´’i 1 Mbyte, do d nhân khi giai nén có kích thuoc lên toi 2 Mbyte. Tiep theo ’ ’´’˙ to ˙ ¯ó, ’ ˙ ˙ ’´’ ´’ ´ ˆ ˜ ’ ` ˆ ˆ ˘ ¯o ˆ’ ´ chúng ta se chı nói ve các tap tin zImage, mac dù ban d c có the thay the zImage thành bzImage ˆ ˙ ˙ ˙ ˙
    29. ’’ ¯ ˆ `’ ` 2.8 Khoi dong Linux tu MS-DOS bang loadlin.exe ˘ 25 ˙ ´ ´ Neu ban chay loadlin.exe không có tham so ˆ ˆ ˙ ˙ C:LOADLIN> loadlin thì se nhan d ’oc huong dan su dung ngan gon. Thuan tien hon d ˆ’ d c huong dan này, khi ˜ ˆ ¯u ’ ’´’ ˜ ˆ ’’ ´ ˘ ˆ ˆ ’ ¯e ¯o ’´’ ˜ ˆ chay chuong ˙ trình˙ voi tham so more (giong trong Linux) ˙ ´’ ´ ˙ ´ ˙ ˙ ˙ ’’ ˆ ˆ ˙ C:LOADLIN> loadlin | more Bây gio chúng ta có the xem xét các buoc cài d ˘ t Linux khi su dung loadlin.exe d ˆ’ khoi `’ ˆ’ ’´’ ¯a ’’ ¯e ’’ d ˆ ng. ˙ ˙ ¯o ˙ 1. Chia các phân vùng cho Linux (cách làm xem phan 2.5) ` ˆ ¯a ¯ã ` ˆ ¯a ¯a` ’ 2. Cài d ˘ t Linux vào phân vùng d chia. LILO can cài d ˘ t vào sector d ˆ u tiên cua phân vùng ˙Linux d ’ không ghi d lên MBR và không bi ˙ mat kha nang khoi d ng vào ´ ’ ˘ ’’ ¯o ¯e ˆ ¯è ˆ ˆ Windows. ˙ ˙ ´ ` ’’ ¯o ´ 3. Sau khi ket thúc phan cài d ˘ t hãy khoi d ˆ ng Linux (neu không có cách nào khác, hãy ˆ ˆ ¯a ˆ ’’ ` ’’ ¯o ˙ Gan phân vùng DOS (gia thiet là /dev/hda1, còn phân su dung d˜a mem khoi d ˆ ng). ˘ ´ ˙ ’ ´ ¯ı ˆ ˆ vùng˙ Linux là /dev/hda3): ˙ kênh giao tác [root]# mount -t vfat /dev/hda1 /mnt/C ’ ’ Tao thu muc /mnt/C/loadlin và giai nén tap tin LOADLIN16.TGZ vào d Ngoài ˆ ¯ó. ˙ sao chép tu thu muc /boot vào thu muc d ˙ ca tap tin chua anh cua nhân Linux. Có ˙ ` ra ’ ’ ’ ¯ó ’ ˆ ´’ ’ ’ the tìm tap tin chua ˙ nh cua nhân can thiet nho ta˙ tin /etc/lilo.conf: tìm trong ˆ’ ˆ ’ ´’ a ’ ` ˆ ˙´ ˆ `’ ˆ p ´˙ ¯o ˜ ´ ˙ ` ´ ’’ ’ ´ tap tin cau hình dòng "image=..." và ban d c se thay tên can thiet o phía bên phai dau ˆ ˆ ˆ ˆ ˆ ˆ ˙` ng. Ví du tên cua tap tin này là vmlinuz-2.4.22. Sao chép tap tin vmlinuz-2.4.22 tu ba˘ ’ ˆ ˙ ˙ `’ ˆ ˙ ˙ ˙ /boot vào /mnt/C/loadlin và d ˆ’i tên thành vmlinuz (viec d ˆ’i tên là không nhat ´ ¯o ˆ ¯o ˆ ´ ’ ’’ thiet, và chı có ý nghıa thuan tien cho su dung): ˙ ˆ ˜ ˆ ˆ ˙ ˙ ˙ kênh giao tác [root]# cp /boot/vmlinuz-2.4.22 /mnt/C/loadlin/vmlinuz `’ ’’ ¯o ’ ´ ´ 4. Bây gioi khoi d ˆ ng lai máy tính vào DOS truc tiep (neu ban d c có Windows 95/98 thì ˆ ˆ ¯o ca ˙ `n nhan phím <F8> ´ ˙ khi khoi d ng d ’ hien thi trình d n cho phép chon DOS), hoac ’’ ¯o ’ ˙ ˙ ˙ ˘ ˆ ˆ ˆ ¯e ˆ ˆ ¯o’ qua hop thoai lua chon khi nhan ˙ ˆ nh tat máy (shutdown) Windows 95/98. ˆ ’ ´ le ˆ ´ ˘ ˙ ˙ ˙ ˙ ˙ ˙ ˙ ˙ ˆ’ Sau khi vào DOS hãy chuyen sang thu muc C:LOADLIN (lenh CD LOADLIN) và ’ ˆ thuc hien lenh ˙ ˙ ’ ˆ ˆ ˙ ˙ ˙ C:LOADLIN> LOADLIN vmlinuz /dev/hda3 ro vga=ask ˘ ´ ´ ´’ ˆ’ ¯ı hoac, neu ban d c muon nap nhân cùng voi o d˜a RAM: ˆ ¯o ˆ ˙ ˙ ˙ ˙ C:LOADLIN> LOADLIN vmlinuz /dev/ram rw initrd=diskimage ˆ’ ´ ’ ˆ ´ ’ ˆ Còn có the ghi tat ca các tham so cua lenh loadlin.exe vào tap tin (ví du voi tên params) ˆ ˆ ´’ ˙ ˙ ˙ ¯ó ’’ và goi câu lenh d o dang sau: ˆ ˙ ˙ ˙ C:LOADLIN> LOADLIN @params ’ ˘ ˆ ¯u ` ˆ ´ Kha nang này d ˘ c biet có ích khi d ’a nhieu tham so dòng lenh và khi d ˆ dài ¯a ˆ ˆ ¯o ’ cua dòng lenh lon ’ ´’˙ hon 127 ký tu. Mô ta d `y d ’ tat ca các tham so cua câu˙ lenh ˙ ’ ¯a ¯u ´ ’ ˙ ´ ’ ˆ ’ ˆ ˆ ˆ ˆ loadlin.exe ˙có the tìm thay trong tap tin PARAMS.DOC hoac Internet trên trang ˆ’ ´ ˆ ˙ ˆ ˘ ˙ ˙ http://sunsite.unc.edu/mdw/HOWTO/BootPrompt-HOWTO.html ˙ và http://rsphy1.anu.edu/ gpg109/Bo HOWTO.html
    30. 26 Cài dat HDH Linux trên cùng máy tính voi Windows ¯˘ ¯ ´’ ˙ Bây gio ban d c có the su dung cách này d ˆ’ khoi d ˆ ng Linux. Công viec duy nhat còn `’ ¯o ˆ’ ’’ ¯e ’’ ¯o ˆ ´ˆ ˙d ’ không phai gõ ˙lenh loadlin voi tat ca ˙ tham so sau mo˙i lan khoi d ng lai là làm sao ¯e ˙ ’ ´’ ´ ’ các ´ ˜ ` ’’ ¯o ˆ ˆ ˆ ˆ ˆ ˆ ˆ ˙ i. Có the viet thêm lenh goi loadlin vào tap tin autoexec.bat hoac tao mot tap tin lenh˙(ví la ’ ´ ˙ ˘ ˆ ˆ ˆ ˆ ˆ ˆ ˆ ˙ , linux.bat), và khi chay tap tin này, máy ˙ du ˙ ˙ tính se chuye’n vào che d ˆ˙DOS truoc, sau d thì ´˙ ¯o ˙ ˙´ ˙ ˆ ˜ ˆ ˆ ’’ ¯ó chay Linux. Tác gia cho˙rang nhung thông tin d d ’a ra o trên d ’ d ˆ’ ˙ o tap tin bat can thiet. ˙ ’ ˘ ˙ ` ˜’ ¯ã ¯u ’’ ¯u ¯e ta ˆ ` ˆ ´ ˆ Can`˙ nói thêm rang, không d ’oc khoi d ˆ ng Linux tu giao dien d ˆ hoa ˙DOS/Windows và can ˆ ` ˘ ¯u ’ ’’ ¯o `’ ˆ ¯o ` ˙ ˆ` ˙tin an C:MSDOS.SYS (d ˙ tap tin van ban thông thuong), ˙ ˙ ˘ ’ ´ tat mot vài tùy chon trong tap ˘ ˆ ˆ ˆ’ ¯ây là ˆ ’`’ ` ˙ bang cách thêm vào ˘ ˙ hai dòng sau (neu chua có): ˙ ´ ˙ ˆ ’ BootGUI=0 Logo=0 ` ´ ` ’’ ¯o Dòng d ˆ u tiên tat giao dien d ˆ hoa, và DOS se d ’oc khoi d ˆ ng thay cho Windows 95/98. ¯a ˘ ˆ ¯o ˜ ¯u ’ ’ ` (De chay giao dien d ˆ hoa, ca ˙ ˙ ˙`n nhap câu lenh C:> win). ˙ ¯ ˆ ˙ ˆ ¯o ˆ ˆ ˆ Logo=0 tat viec hien˙ thi bieu tuong Windows (cua so). Van d ˆ o cho, d´ i voi mot so cac ˘ ˙ˆ ´ ˆ’ ˙ ˆ’ ’ ’ ˙ ’’ ˆ’ ´ ¯e ’’ ˆ ¯o ´’ ˆ ´ ˆ ` ˜ ˆ ˆ màn hình Linux se ¯u˙ d a ra mot màn˙hình trong rong sau khi khoi d ng, neu nhu có˙ hien thi ˙ ´ ˜ ’’ ¯o ´ ’ ˙ ˜ ’ ˆ ˆ ˆ ˆ ˆ ’ ˆ ˙ ˙ ˙ ˆ’ ’ ’ bieu tuong Windows. ˙
    31. Chuong 3 ’’ Bash ˆ ˜ ´ ˆ ’ ´ ’´’ ’ Tot go hon tot nuoc son ˆ – ca dao tuc ngu Viet Nam ˜’ ˆ ˙ ˙ Trong phan này chúng ta se d ˆ cap d´ n van d ˆ làm viec voi Linux o che d ˆ text, hay còn ` ˆ ˜ ¯e ˆ ¯e ´ ¯e ` ˆ ˆ ` ˆ ´’ ’’ ´ ¯o ˆ d ’oc goi là console hoac terminal. Nhu ˘ ˙ ng nguoi dùng Linux moi (newbie) thuong nghı se `’ ˙ ´’ ˙ ` ¯u ’ ˜’ ’ ’’ ˜ ˜ chang bao gio làm viec ˙o che d ˆ này, vì d có giao dien d ˆ hoa. Tuy nhiên d là mot ý kien ’ ˘˙ ˙ `’ ˆ ’’ ´ ¯oˆ ¯ã ˆ ¯o ` ¯ây ˆ ´ ˆ sai la `m, boi vì rat nhieu công viec có the thuc hien nhanh và thuan tien trong che d ˆ ˙này hon ˆ ’’ ´ ˆ ˙` ˆ ˙ ˆ ˆ’ ’ ˆ ˙ ˙ ˆ ˆ ´ ¯o ˆ ’ là su dung giao dien d ˆ hoa. Và ˙dù sao thì che d˙ text cua HDH˙Linux không phai ˙là che d ˆ ’’ ˆ ¯o ` ˙´ ˆ ¯oˆ ’ ¯ ˙ ’ ´ ¯o ˆ text mot tien trình˙cua MS-DOS. Vì Linux là HDH d tien trình, nên ngay trong che d ˆ text ˙ ˆ ´ ˆ ’ ˙ ¯ ˙ ¯a ´ ˆ ´ ¯o ˙ ˆ d có kha ˘˙ ’ nang làm viec trong vài cua so. Và d ’ soan thao mot tap tin van ban không˙ nhat ’’ ˆ’ ’ ˘ ’ ´ ¯ã ˆ ¯eˆ ˆ ˆ ˆ ´ ’ thiet phai chay các trình ˙ soan thao lon và cham chap ˙(d ˘ c biet trên˙các máy có cau hình phan ’ ´’ ˙ ´ ` ˆ ˆ ¯a ˆ ˆ ˆ cung thap) cua môi truong ˙¯o hoa. ´’ ´ ˆ ˙ ’ ’`’ d ˆ` ˙ ˙ ˙ ˙ ˙ 3.1 ˆ ’ He vo là gì? ˙ Chúng ta thuong nói "nguoi dùng làm viec voi he d ˆ u hành". ¯ ieu này không hoàn toàn ’`’ ’`’ ˆ ´’ ˆ ¯ie ` Dˆ ` ˙ ˙ ´ "liên he" voi nguoi dùng d ’oc thuc hien boi mot chuong trình d ˘ c biet. d¯úng, vì trên thuc te ’ ˆ ˆ ´’ ’`’ ¯u ’ ’ ˆ ’’ ˆ ’’ ¯a ˆ Có hai dang cu˙ chuong trình d d ˆ cap - he vo, hay shell, d ˆ’ làm viec trong che ˙¯o text ’a ’’ ˙ ¯ã ¯e ` ˆ ˆ ’˙ ˙ ˙ ¯e ˙ ˆ ´ dˆ ˙ ˆ (giao dien dòng lenh) và giao dien d ˆ ˙ a GUI (Graphical User Interface), thuc hien˙"liên ˆ ˙ ˆ ˆ ¯o ho ` ˙ ˙ ’ ˆ he" voi ˙ ’oi dùng trong môi truong d ˆ˙ hoa. Can nói ngay rang, bat ky chuo˙ trình nào ˆ ´’ ngu `’ ˙ ˙` ’ ’ ¯o ` ` ˆ ` ˘ ´ ` ˆ ’ ’ng ˙ trong Linux có the khoi d ˆ ng tu dòng lenh˙ cua he vo (neu máy chu X d chay), cung nhu ˙ ˆ’ ’’ ¯o `’ ˆ ’ ˆ ’ ´ ˆ ’ ¯ã ˜ ’ qua giao dien d ˆˆ ¯o ` hoa. Chay chuong trình tu dòng lenh cua he vo tuong d ’ong ˙voi viec nháy ˙ ’’ ˙ ` ’ ˙ ˆ ’ ˆ ’ ’ ’ ¯u ’ ´’ ˆ ˙ ˙ ˙ ’ ˙ D ’˙ ˙ (d ˆ ˆ’ ’ ’ ¯úp) chuot lên bieu tuong cua chuong trình trong GUI. ¯ ua các tham so cho chuong trình ’’ ´ ˆ ’’ trên dòng lenh tuong d ’˙’ng voi viec chúng ta kéo và tha cái gì d lên bieu tuong chuong trình ˙ ˆ ’ ’ ¯uo ´’ ˆ ’ ¯ó ˆ’ ’ ’ ’’ ˙ ong d ` hoa. Nhung mat khác, mot so chuong trình không the chay o GUI và chı trong môi tru `’ ¯o ˙˘ ´ ’ ˙ ’’ ’ ’ ˆ ’ ˆ ˆ ’’ ˆ có the thuc hien tu dòng lenh. Nói ˙ngoài le mot chút, tên goi "he vo" bi pha˙ d´ i rat nhieu. ˆ’ ’ ˆ `’ ˙ ˆ ` ˙ ˆ ˆ ˆ ’ ’ n ¯o ´ ˆ ˆ ˆ` ˙´ ’ ˙ ˙ ˙ ˙ ˙ ˙ ˆ ˆ ´ Theo ý kien cua mot so chuyên gia ngôn ngu cung nhu chuyên gia Linux thì nên goi chuong ˆ ˜’ ˜ ’ ’’ ˙d trình này mot cách ¯úng hon là "trình xu ’’ lý lenh" hay "trình biên dich lenh". Tuy nhiên, tên ˙ ˆ ’ ˆ ˆ goi "he vo" ˙ ¯u ’ ’’ ˙ ˆ ’ (shell) d ’oc dùng cho các chuong trình dùng d ˆ’ biên dich lenh trong che d ˆ text ¯e ˙ ˆ ˙ ´ ¯o ˆ ˙ moi he thong UNIX. Trên các he thong UNIX d `u tiên có mo˙ chuong trình, goi là sh, trên ˙ ´ ˙ ´ ˙ ˙ ˆ ˆ ˆ ˆ ¯a ˆ ˆt ’’ viet tat˙ cua shell. Sau d vài bien˙ the cua sh d ’oc phát trien và làm tot hon, trong d có ´ ˘ ’˙ ˆ ´ ¯ó, ´ˆ ˆ’ ’ ¯u ’ ˆ’ ˙ ´ˆ ’ ˙ ¯ó ’ ’’ ˆ ’ Bourne shell - phiên ban mo rong cua sh, viet boi Steve Bourne. Du án GNU (du án ´˙ ’’ ˆ ’ ’ phát trie ’n chuong trình ung dung cua Stollman, xem http://www.gnu.org/) ˙sau d cho ra˙ d `’i ˆ ’’ ´’ ’˙ ¯ó ¯o he vo bash, tên goi cua nó d ˙oc giai mã ra là Bourne-again shell, tuc là "lai là he vo ˆ ’ ’ ¯u ’ ’ ’ ´’ ˆ ’ ˙ ˙ ˙ ˙ ˙
    32. 28 Bash ’ ´ cua Bourne". Trên tieng Anh d là mot cách choi chu, vì tu Bourne d c giong voi tu borne ˆ ¯ây ˆ ’ ˜’ `’ ¯o ´ ˆ ´’ `’ (sinh ra, d ’ ra), và nhu the bash còn có ˆ’ ’ ´ ˙ the giai mã là "shell d oc sinh ˙ lan hai". Tiep theo ra ˆ ` ´ ¯e ’ ˆ ¯u ’ ’ ˆ chúng ta se chı xem xét bash, vì the o duoi khi nói d´ n he vo ´ ’’ ’´’ ˙, xin ngam hieu d là bash ` ’ ¯ó ˜ ’ ˆ ¯e ˆ ’ ˆ ˆ ˆ Tu mot mình bash không thuc hien mot công viec ung dung ˙ nào. Nhung nó ho tro viec thuc ˜ ’ ˆ ’ ˆ ˆ ˆ ´’ ’ ˆ ’ ˆ ’ thi˙ moi chuong trình khác, tu viec tìm ˙kiem chuong trình d oc goi, chay chúng d´ n ˙ c ˙ ’ ˙ ˙ `’ ˆ ˙ ´ ˙ ˙ ˙ vie to ’’ ˆ ’’ ¯u ’ ’ ¯e ˆ ˆ ˆ chuc du lieu d ˆ u vào/d ˆ u ra. Ngoài ra, he vo chiu trách nhiem˙ ve công viec voi các bien˙môi ´’ ˙ ˜’ ˆ ¯a ` ¯a` ˙ ˆ ’ ˆ `˙ ˆ ˙ ˆ ´’ ´ ˆ truong và thu `’ ˙ c hien mot vài bien d ’i (the, hoán˙d ’i vi trí) các tham so lenh. Nhung tính chat ´ ¯o ´˙ ˙ ´ ˆ ˙ ´ ’ ’ ˆ ˆ ˆ ˆ ˆ ¯oˆ ˆ ’ ˆ chính cua he ’ ’ ˆ `’ d ¯u ˆ ’ ’’ ˙ ˙ vo, ˙nho ˙ d a he vo tro thành mot công cu manh cua nguoi dùng, d là nó ’ ˙ ` ¯ó ’ ˆ ’’ ¯ó ` ˙ ˙ ’ ˙ bao gom mot ngôn ngu lap trình d ’n gian. Trong toán hoc tu lâu d d ’oc chung minh rang, ˙ `˙ ´’ ` ˘ ˆ ˆ ˜’ ˆ ¯o ’ ¯ã ¯u ’ ˙ t toán nào cung có the d oc xây dung tu hai (ba) thao tác co ban và mot toán ˙ ˙ ˙ ´ ` ˆ bat ky mot thua ˆ ˆ ˜ ˆ’ ¯u ’ ’ ’ `’ ’ ’ ˆ tu d ˆ u kien. He vo cung cap các toán tu ˙d ˆ u kien và toán tu vòng lap. Nó su dung các tien ’’ ¯ie ˙ˆ ` ˙ ’ ˆ ´ ˆ ’’ ¯ie ` ˆ ˙ ’’ ˘ ’’ ˙ ˆ ˙ ˙ ` ˙ ¯ie ích và chuong trình khác (có trong thành phan he d ˆ u hành, hay d ’oc cài d ˘ t riêng) d ˆ’ làm ` ˙ ˙ ˙ ’’ ˆ ˆ ¯u ’ ¯a ¯e các thao tác co ban cho ngôn ngu lap trình mà nó ho tro. ¯ ong thoi ˙cho phép d ’a các tham ’ ’ ˜’ ˆ ˙ ˜ ˆ ’ Dˆ ` `’ ˙ ¯u ´ cung nhu ket qua làm viec cua mo so ˜ ´ ’ ’ ˙ t chuong trình toi ˙ chuong trình khác hay toi nguoi ´’ các ´’ ˆ ’ ˆ ˆ ˆ ’’ ’’ ’`’ ´ ’ ˙ ˙ dùng. Ket qua thu d ’oc là mot ngôn ngu lap trình manh. ¯ ây cung là suc manh và là mot D ´’ ˆ ¯u ’ ˆ ˜’ ˆ ˜ ˆ trong các chuc nang chính cua ˆ ’ ˙ ’ ˙ he vo. Truoc ˙ bat d `u phan này, ban d c nên biet các to ho˙p ´ ¯a ˙ ˆ ` ˙´ ’ ’ ´’ ˘ ’´’ khi ˘ ˆ ¯o ˆ ˆ phím chính, su ’’ dung d ˆ’ d ˆ u khien viec nhap du lieu trên dòng lenh. Nên nho ít nhat cách ˙ ’’ ¯e ¯ie` ˙’ ˆ ˆ ˆ ˜’ ˆ ˆ ˙ ˙ ´’ ´ ˆ su ’ ˆ’ ho ˙ ˙ ˙ dung cua các (to ˙ ’p) phím <Ctrl>+<C>, <Ctrl>+<D>, <Tab> và các phím có mui tên. ˙ ˜ ˙ ˙ 3.2 ˆ Các ký tu dac biet ’ ¯˘ ˙ ˙ ˙ ˆ ’ ’’ He vo bash su dung mot vài ký tu tu bo 256 ký tu ASCII cho các muc d ˆ ’ `’ ˆ ’ ¯ính riêng, hoac d ˆ’ ˘ ¯e ˙’u thi các thao ˙tác nào d hoac ˙d ’ bien d ’i bieu˙thuc. Các ký tu này bao gom: bie ˙ ´˙ ¯o ˆ’ ´’ ˙ ` ˙ ˆ ¯ó, ˘ ¯e ˆ ˆ ˆ ’ ˆ ˙ ˙ ˙ ‘ ~ ! @ # $ % ^ & * ( ) _ -- [ ] { } : ; ’ " / > < ’ ´’ ´ và ký tu voi mã 0, ký tu hàng moi (tao ra khi nhan phím <Enter>) và ký tu khoang trang. Phu ’ ´’ ˆ ’ ’ ´ ˘ ˙ tình huong các ký tu d ˘ c˙biet này có the su dung voi ý nghıa ˙ ˘ c biet cua nó hay ´ ˙ ’ ’’ ˙ thuoc vào ˆ ˆ ’ ¯a ˆ ˆ ´’ ˜ d ¯a ˆ ’ ˙ ng nhu mot ký tu thông thuo˙ng. Nhung trong d so˙các truong hop không ˙khuyên dùng ˙ ` ˙ ˙ ’’ su du ’ ˆ ’ ’’ ’ ¯a ´ ˆ ’`’ ’ ˙ tu voi giá tri thu hai. Truoc het d là viec su dung chúng trong ˙tên tap tin và thu muc. ˙ ˙´ ´’ ´ ¯ó các ký ’ ´’ ’ ’ ˆ ˆ ’’ ˆ ’ ˙ các ký tu _, - và . (dau gach duoi, gach ngang và dau cham) thu˙ ng d oc su du˙ ˙ ´ ˙ ˙ ´ ´ Tuy nhiên ’ ˆ ’´’ ˆ ˆ ’o ¯u ’ ’’ ng `’ ’ trong tên tap tin, và d là mot ví du cho thay ˙không phai lúc nào chúng cung có ˙giá tri ˙¯ac ˆ ˙ ¯ây ˆ ˙ ´ˆ ’ ˜ d˘ biet. Trong ˙ tên tap tin chı dau˙cham ˙ và gach chéo (/) có giá tri d ˘ c biet. Ký hieu gach ˙ ˙ ’ ´ ´ (.) chéo ˆ ˆ ˆ ˆ ¯a ˆ ˆ ˙ d ’ phân chia tên các thu muc trong d ˙ong dan, còn dau cham có giá tri d ˘˙c biet khi nó dùng ¯e ˙ ˜ ´ ˙´ ˙ ˙ ˙ ˆ ’ ¯u `’ ’ ˆ ˆ ˆ ¯a ˆ là ký tu d ˆ u tiên trong tên tap tin˙ (cho biet tap tin là "an"). Viec d ’a ngay ta˙t ca ý nghıa d ˘ c ’ ¯a` ˆ ´ ˆ ˆ ˆ’ ˆ ¯u ´ ˙ ˆ ’ ˙ ˜ ¯a ˙ nhung ký tu này và˙ các tình huong ˙ ’ dung chúng tam thoi không có ích. Chúng ˙ ´ su ˙ ` ˆ ’ biet cua ˜’ ’ ˆ ’ ’ ta se ˙xem xét chúng dan dan trong các phan sau, khi can su dung d´ n. Tuy nhiên, 3 ký hieu có ˙ ` ` ˆ ` ˙ ` ’ ˙ ˜ ˆ ˆ ˆ ’ ¯e ˆ ˆ ˜ ´’ ` ` ˆ ¯e ˆ ¯e ¯a ˆ ` ˆ ˙ ý nghıa lon và can d ˆ cap d´ n d ˆ u tiên. Ký hieu (gach chéo nguoc) có the goi là "ký˙ hieu ’’ ˆ’ ˆ ’ xóa bo ý nghıa d ˘ c biet" ˙ cho bat ky ký tu d ˘ c biet nào, d ´ ng ngay sau . Ví du, neu muon ´ ` ˙ ˙ ˙ ˙ ´ ˙ ´ ˜ ¯a ˆ ˆ ’ ¯a ˆ ¯u’ ˆ ˆ su dung khoang trang ˙ ’’ ’ ˙˘ trong tên tap tin, thì chúng ˙ can d ˘ t truoc ký tu khoang trang d mot ´ ˆ ˙ ˙ ` ta ˆ ¯a ’´’ ’ ’ ˙˘ ´ ¯ó ˆ ´ dau Ví ˙˙ du, câu lenh sau: ˙ ˙ ˙ ˙ ˆ ˆ ˙ ˙ kênh giao tác teppi82@teppi:~$ cp lennon_imagine lennon imagine ’ ˘ ˆ’ ’ ˜ ˆ ˜ Các ký tu ’ và " (ngoac d ’n và ngoac kép) có the goi là "các ký tu trích dan". Moi ký tu ˘ ¯o ˆ ’ ˙ d oc su dung trong mot cap voi ban sao cua chính nó d˙’ d này luôn luôn ¯u ’ ’’ ˙ ˙˘ ´ ’ ˙’ ’u˙ ’ ˆ ’ ¯e ¯óng khung mot bie ˆ ˆ ˆ thuc nào d giong nhu ˙ ´’ ¯ó, ´ ˆ ˙ ’ trong các van ban, sách báo, . . . thông thuong. Neu nhu mo˙ d n ˘˙ ˙’ ’`’ ´ ˆ ’ ˆ t ¯oa ˙ ˙
    33. ’ ˆ 3.3 Thuc thi các câu lenh 29 ˙ ˙ ˘ ’ ¯ó ¯a ˘ ¯o ´ ’ ˆ ’ ` van ban nào d d ˘ t trong ngoac d ’n, thì tat ca các ký tu nam trong ngoac d ’n này có giá ˘ ˘ ¯o ˙ tri nhu các ký tu thông thuong, `’ ˙ khôn mot ký tu nào có ý ˙nghıa d ˘ c biet. Tro lai voi ví du su ˙’ ´’ ’’ ’ ’ ’ ˆ ’ ˜ ¯a ˆ ’ du˙ ng khoang trang trong tên tap tin o trên, có˙the nói, neu muon˙ d ˘ t tap tin cái tên "lennon ’ ˙ ´ ˘ ’’ ˙ ’ ´ ´ ¯a ˆ ˙ ˙ ˙ ˆ ˆ ˆ ˆ ˙ ˙ `n d ’a tên d vào dau ngoac: imagine" ca ¯u ´ ˘ ˙ ˙ ˆ ¯ó ˆ ˙ kênh giao tác teppi82@teppi:~$ cp lennon_imagine ’lennon imagine’ ’ ’’ ’ ¯ó ˘ ¯o ´ Su khác nhau trong cách su dung ký tu ’ và " d là, trong ngoac d ’n mat ý nghıa d ˘ c biet ˆ ˜ ¯a ˆ ´ ’ ˆ tat ca˙ các ký tu, còn trong ngoac˙kép - ta˙ ca chúng ngoai tru $, ’ và (dau d la, ˙ngoac ˘ ´t ’ `’ ˙ ´ ¯ô ˘˙ ’ ˆ ˆ ´ ˙ d ’n và dau gach nguoc). ˙ ˙ ˙ ¯o ˆ ’’ ˙ ˙ 3.3 ˆ Thuc thi các câu lenh ’ ˙ ˙ ’ ¯ã ’’ ˆ ´’ ˘ ’ ˆ ’ ˆ’ ´’ ˆ Nhu d nói o trên, mot trong các chuc nang chính cua he vo là to chuc viec thuc hien các câu ’ ˆ ˙ a vào trên dòng lenh. He vo, nói riêng, cung cap ˙cho nguo˙ dùng hai ˙ ´ ˙ `i lenh mà nguoi dùng d ’ ˆ ’`’ ¯u ˆ ˆ ’ ˆ ’’ thao tác d ˘ c biet d ˆ’ to chuc viec d ’a các ˙câu lenh trên dòng lenh: ; và &. ˙ ¯a ˆ ¯e ˆ’ ´’ ˆ ¯u ˆ ˙ ˆ ˙ ˙ ˙ ˙ ˙ 3.3.1 Thao tác ; ’`’ ’ ˆ Mac dù nguoi dùng thuong chı nhap trên dòng lenh tung câu lenh mot, nhung còn có the d ’a ˘ ’`’ ˆ `’ ˆ ˆ ’ ˆ’ ¯u vào ˙ dòng lenh d ngay lap tuc vài câu lenh, và ˙chúng se thuc hien ˙ `n luot tu câu lenh này ˙ ˙ ˆ ¯ó ˆ ´’ ˆ ˜ ’ ˆ la ’ ’ `’ ˆ ˆ dˆ ˙ Dˆ ’ ˙ ¯u ’ ¯ie ˙ ` ’ ˙ ˙ ˙ ´ ˙ ´ n câu lenh khác. ¯ e làm d ’oc d ˆ u này can su dung ký tu d ˘ c biet - ;. Neu dùng ký tu này ` ¯e ˆ ˆ ’ ’ ¯a ˆ ˆ ’ ¯e ˙ d ˆ’ phân chia các câu lenh, thì ˙ lenh tiep theo se˙d ’oc coi nhu tham so cua lenh phía truoc. ˆ câu ˆ ´ ˆ ˜ ¯u ’ ˙ ˙ ’ ˙ ´ ’ ˆ ˆ ˙ ´ ’’ Nhu vay, neu nhap vào dòng lenh cái gì d giong nhu˙sau: ’ ˆ ´ ˆ ˆ ˙ ˆ ˙ ¯ó ´ ˆ ’ ˙ ˙ ˙ ˙ kênh giao tác teppi82@teppi:~$ command1 ; command2 ˆ ’ ¯a ` thì he vo d ˆ u tiên se thuc hien câu lenh command1, cho cho lenh d hoàn thành, sau d ˜ ’ ˆ ˆ `’ ˆ ¯ó ¯ó ˙ ˙ ˙ chay command2, cho lenh hoàn thành, sau ¯ó ˙ d lai d a ra dòng nhap ˙ nh và cho các hành d ng `’ ˆ ¯u’ ˆ le ˆ `’ ¯o ˆ tie˙ theo cua nguoi dùng. ´p ˆ ’ ’`’ ˙ ˙ ˙ ˙ ˙ 3.3.2 Thao tác & Thao tác & d ’oc dùng d ˆ’ to chuc viec thuc hien các câu lenh trong che d ˆ nen sau. Neu d ˘ t ¯u ’ ¯e ˆ’ ´’ ˆ ’ ˆ ˆ ´ ¯o ˆ ˆ ` ´ ¯a ˆ ´ dau & ngay sau˙ câu lenh, thì he vo se tra˙lai quyen d `u khien cho nguoi ˙ ˙ ’ ’ ˜ ˙ ` ˙ ’ ˙ `’ dùng ngay sau khi ˆ ˆ ˆ ˆ ¯ie ˆ ˆ ’ ˙ ˙ ˙ ´ chay câu lenh, mà không d ’i cho câu lenh d hoàn thành. Ví du, neu nhap vào dòng lenh ˆ ¯o ˆ ¯ó ˆ ˆ ˆ ˙ "command1 ˙ & command2 &", thì he˙vo chay câu lenh command1, ngay˙lap tuc chay lenh ˙ ’ ˙ ˙ ˆ ˆ ˆ ´’ ˆ ˜ ˙ ˆ ’ ˙ ˙ command2, và sau d không cham tre tra lai dòng nhap lenh cho nguoi dùng. ¯ó ˆ ˆ ˆ ’`’ ˙ ˙ ˙ ˙ ˙ ˙ ˙ 3.3.3 Thao tác && và || ˜’ ` ¯ie ˆ’ ´ Các thao tác && và || lá nhung thao tác d ˆ u khien. Neu trên dòng lenh là command1 && command2, ˆ ˆ thì command2 se thuc hien và chı thuc hien trong truong hop ˙trang thái thoát ra cua lenh ˜ ’ ˆ ’ ’ ˆ ’`’ ’ ’ ˆ ` ˙ (0), tuc là lenh˙d thuc hien thành công. Mot cách tuong tu, neu dòng ˙ ´ ˙ ˙ ˙ ˙ command1 bang không ˘ ’ ˆ ¯ó ’ ˆ ˆ ’’ ’ ´ ˆ lenh có dang command1 || command2, ˙ ˙thì command2 se thuc hien và chı thuc hien khi ˙ ˙ ˙ ’ ’ ˆ ˆ ˜ ’ ˆ ˙ ng thái˙thoát cua lenh command1 khác không. Chúng ta se không xem xét mat ky thuat cua tra ’ ˆ ˙ ˙ ˘ ˙˜ ˙ˆ ’ ˜ ˙ ˙ ˙ ˙
    34. 30 Bash ˆ ’ ˆ ˆ ˆ ¯ó. ’ ˆ’ ´ viec thuc hien mot câu lenh nào d Chı có the nói ngan gon rang, he vo phai tìm mã (code) ˘ ` ˘ ˆ ’ ’ ˙ ong˙ trình, nap mã d ˙vào bo nho, chuyen các tham so d˙ nhap trên dòng lenh vào cho câu ˙ ˙ ˙ chu ’’ ¯ó ˆ ´’ ˆ’ ´ ¯ã ˆ ˆ ˆ ˙ thuc hien xong thì theo mot cách nào d tra lai ket qua thu˙ hien lenh này ˙ ˙ ´ lenh, và sau khi ’ ˆ ˆ ˆ ¯ó ’ ˆ ’ ’c ˆ ˆ ˙ nguoi dùng hay tien trình khác. Chúng˙ta se xem xét qua các buoc này.˙ Buo˙ d `u tiên - cho ˙ ´˙ ˙ ˙ ’`’ ˆ ˜ ’´’ ’´’c ¯a ˆ ´ tìm kiem câu lenh. Các câu lenh chia thành hai loai: noi trú (mã cua chúng có trong mã cua ˆ ˆ ˆ ˆ ’ ’ ˙ ngoai trú (mã˙ cua chúng nam trong mo˙t tap tin riêng le trên d a). He vo luôn ` ˙ ˆ ’ chính he vo) và ’ ˘ ˆ ˆ ’ ˜ ¯ı ˆ ’ luôn tìm thay lenh noi trú, còn d ˆ’ tìm các lenh ngoai ˙ ˙nguoi dùng, theo nguyên ˙tac, phai ˙ ´ ˆ ˆ ˙ ˆ ¯e ˆ trú ’`’ ´ ˘ ’ ’ ˙ ong dan d `y d ’ toi tap tin tu˙ ng ung. Tuy nhiên d ’ go "gánh nang" cho nguoi ˙˜ ˙ ˆ ’ ¯u chı cho he vo d ’`’ ˆ ¯a ¯u ´’ ˆ ˆ ’o ´’ ’ ¯e ˜’ ˆ ˘ ’`’ ˙ ’ biet cách tìm lenh ngoai˙trú trong các thu muc, mà d oc liet kê trong d ong dan ´ ˙ ˜ dùng he vo ˆˆ ˆ ’ ¯u ’ ˆ ’ ¯u ` ’’ ˆ ´ tìm kiem. ’ ˙ Chı khi (he vo) không the tìm thay tap tin can˙ thiet trong các thu muc d nó moi ˙ ˙’ ´ ˆ ` ´ ˙ ˙ ˆ ˆ ’ ˆ ˆ ˆ ˆ ’ ¯ó, ´’ quye ¯i ˆ ` ˘ ’o ¯ã ˆ ` ˆ ˙ ´ t d nh rang ngu˙`’i dùng d nham khi nhap tên lenh. Ve cách thêm thu muc vào d ’ong ˆ ` ˆ ’ ˙ ¯u `’ dan tìm˙kiem chúng ta se nói d´ n o duoi, còn ˙ gio ˙chúng ta se xem xét cách ˙ ˆ vo to chuc ˜ ˆ ´ ˆ ˜ ¯e ˆ ’’ ’´’ bây `’ ˜ he ’ ˆ’ ´’ ˙ viec d ’a du lieu vào cho câu lenh d ˆ ¯u ˜’ ˆ ˆ ’ ˆ ˆ ¯u ´ ˆ ’ ´’ ¯ang thuc hien và viec d ’a ket qua toi cho nguoi dùng. ’`’ ˙ ˙ ˙ ˙ ˙ ˙ Dˆ` ` ¯ˆ ˆ’ 3.4 ¯ au vào/dau ra tiêu chuan 3.4.1 ˜’ ˆ Dòng du lieu vào-ra ˙ ˆ ’’ ¯u ’ ’ ˆ ¯u ’ ´ Khi mot chuong trình d ’oc thuc hien, nó d ’oc cung cap ba dòng du lieu (hay còn goi là ˆ ˜’ ˆ kênh): ˙ ˙ ˙ ˙ ˙ ˙ ˙ ` ˆ’ • d ˆ u vào tiêu chuan (standard input hay stdin). Qua kênh này du lieu d ’oc d ’a vào cho ¯a ˜’ ˆ ¯u ’ ¯u chuong trình; ˙ ˙ ’’ ¯a` ˆ’ • d ˆ u ra tiêu chuan (standard output hay stdout). Qua kênh này chuong trình d ’a ra ket ’’ ¯u ´ ˆ ’ ˆ ’ qua làm viec cua mình; ˙ ˜ ˆ’ • kênh thông báo loi tiêu chuan (standard error hay stderr). Qua kênh này chuong trình ˆ ’’ d ’a ra thông tin ve loi. ¯u ` ˜ ˆ ˆ ` ˆ’ ’’ ’ ˆ’ ¯o ` Tu d ˆ u vào tiêu chuan chuong trình chı có the d c, còn hai d ˆ u ra và kênh thông báo loi `’ ¯a ¯a ˜ ˆ ’’ d ’oc chuong trình su dung chı d ˆ ’ ¯e ˘ ¯i ¯a ˙ ` ’ ghi. Theo mac d nh d ˆ u vào có liên ket1 voi bàn phím, còn ´ ¯u ’ ’’ ˆ ´’ d ˆ u ra và kênh báo loi huong d´ n terminal cua˙nguoi dùng. Nói cách khác, toàn bo thông tin `˙ ¯a ˜ ˙ ˆ ’´’ ¯e ˆ ’ ˙` ’’ ˆ cua lenh hay chuong trình mà nguoi dùng d chay, và tat ca nhung thông báo lo ˙ ¯u ’ ¯u ’ ˆ ’’ ’`’ ¯ã ´ ’ ˜’ ˆ ˜i, d ’oc d ’a ˆ ˙ ’ ˙ ´ ’’ ’´’ ’ ’ ’´’ ’’a so terminal. Tuy nhiên, chúng ta se thay o duoi, có the chuyen huong thông báo d ˆ u ra cu ˆ ˙ ` ˜ ˆ ˆ ˆ ¯a ˆ D ˆ’ ´ ˆ ˜ ˆ ˆ’ ra (ví du, vào tap tin). ¯ e cho thay kênh thông báo loi tiêu chuan làm viec nhu the nào, hãy ˆ ’ ´ˆ ˙ ˙ thuc hien câu lenh ls voi mot tham so không d ´ ˙ ´ ’ ˆ ˆ ´’ ˆ ˆ ¯úng, ví du dùng tham so là mot tên tap tin ˆ ˆ ˆ không ton tai. Trong truong hop này, ls d ’a mot tin nhan˙báo loi ra kênh thông báo loi tiêu ˙ ˙` ˆ ˙ ’ `’ ˙ ’ ¯u ˆ ´ ˘ ˆ˜ ˙ ˆ˜˙ chuan. Tuy ˙ ˆ’ ˙ ˙ ` nhiên, d´ i voi nguoi dùng thì trong truong hop này kênh thông báo loi tiêu chuan ¯o ´’ ˆ ’`’ ’’ ’ ˆ˜ ˆ’ ˙ thay thông báo loi d trên cua so ´’ ¯a ˆ’ không khác gì voi d ˆ u ra tiêu chuan, boi vì chúng ta cung ´ ` ’’ ˜ ˆ ˜ ˆ ¯ó ’’ ˆ’ ` ` ˆ’ ¯u ’ ´ terminal. Làm viec voi d ˆ u vào và d ˆ u ra tiêu chuan d ’oc minh hoa tot nhat qua ví du các ˆ ´’ ¯a ¯a ˆ ´ˆ lenh echo và cat. ˙ ˙ ˙ ˙ ˆ ˙ 3.4.2 ˆ Lenh echo ˙ Câu lenh echo dùng d ˆ’ chuyen toi d ˆ u ra tiêu chuan dòng ký tu, mà d ’oc d ’a vào làm tham ˆ ¯e ˆ’ ´’ ¯a` ˆ’ ’ ¯u ’ ¯u ´ cho so ’ ˙ ´ ˙ ˙ nó. Sau d lenh này d a ra tín hieu chuyen dòng và hoàn tat công viec. Hãy thu thuc ’’ ’ ˆ ¯ó ˆ ¯u’ ˆ ˆ ˆ ˆ hien câu lenh sau: ˙ ˆ ˆ ˙ ˙ ˙ ˙ ˙ 1 ´ ´ giong liên ket hóa hoc ˆ ˆ ˙
    35. ˆ’ 3.5 Chuyen huong dau vào/dau ra, duong ´ ng và dau loc ` ’´’ ¯ ˆ ` ¯ˆ ˆ ¯ ’`’ o ` ¯ˆ 31 ˙ kênh giao tác [user]$ echo ’xin chao cac ban!’ ˜ ` `’ ’ ’ ’’ ´ ˘ ¯o ´ Tôi nghı rang loi giai thích se là thua thãi (chı xin hãy su dung dau ngoac d ’n, neu không ˘ ˜ `’ ˆ ˆ ke ’ ’ ˜ ´ ’ ’ ´ t qua có the se khác. Neu ban d c chú ý thì có the giai thích ˙ ˙tai sao lai khác). ˆ ˆ ˆ ¯o ˆ ˙ ˙ ˙ ˙ 3.4.3 ˆ Lenh cat ˙ ˜ ˆ ’’ ¯ây Chúng ta se xem xét lenh cat o d vì lenh này thuong làm viec voi d ˆ u vào và d ˆ u ra tiêu ˆ ’`’ ˆ ´’ ¯a ` ` ¯a chua ’n. Theo mac d nh˙ket qua làm viec cua lenh cat huong toi˙d ˆ u ra tiêu chuan. ¯ e chung ˆ ˘ ¯i ´ ˆ ’ ˆ ˙ ’ ˆ ’´’ ´’ ¯a ` ˆ’ D ˆ’ ´’ ˙ ˙ ´ ˙ ˆ ˙ minh là lenh này theo mac d nh tiep nhan dòng du lieu nhap vào, hãy chay lenh cat không ˘ ¯i ˆ ˆ ˜’ ˆ ˆ ˆ ˙´ ´ ˙ ˙’ ˙ ˙ ´ ˙ ˙’ ˙ ˆ ˆ ’ ˆ’ ´’ ˆ có tham so. Ket qua là con tro chuyen toi mot dòng moi, và hon nua có ve nhu không có gì ’ ’ ˜’ ’ xay ra. Lúc này câu lenh cho các ký tu d´ n tu˙ d ˆ u vào tiêu chuan. Hãy nhap bat ky ký tu nào, ’ ˆ `’ ’ ˆ¯e `’ ¯a ` ’ ˆ ˆ ˆ ´ ` ’ và nó se xuat hien ngay lap tuc trên màn hình, tuc là chuong trình ngay la˙ tuc d ’a chúng toi ˜ ´ ˆ ˆ ˙ ˆ ´’ ˙ ´’ ’’ ˆ p ´’ ¯u ˙ ´ ’ dˆ`u ra tiêu chua˙ Có the˙ tiep tuc nhap các ký tu, và chúng cung se xuat ˙hien trên màn hình. ¯a ’n. ˆ ’ ´ ˆ ˆ ˆ ’ ˜ ´ ˜ ˆ ˆ ˙ ˙ ˙ Thông thuong bàn phím d ’oc cau hình d ˆ’ nhap vào theo tung dòng, vì the neu ban nhan phím ˙ ’`’ ¯u ’ ´ ˆ ¯e ˆ `’ ´ ´ ˆ ˆ ´ ˆ ˙ nhap se d oc d ˙a toi lenh cat, và lenh này se lai d a du lieu ra <Enter>, dòng ký tu ban vua ˆ ˜ ¯u ’ ¯u ´’ ˆ `’ ˙ ’ ’ ’ ˆ ˜ ¯u ˜’ ˆ ’ ¯a ˆ’ ’ ˆ ˙ ˜ màn hình thông qua d ˆ u ra tiêu chuan.˙Nhu vay, moi dòng ký tu nhap vào ˙se d ’oc hien ra ˙ ˙` ˙ ˆ ˙ ’ ˆ ˜ ¯u ’ ˆ ˙ ` ` ` ’’ ˙ hay lan: mot lan khi gõ và lan thu hai boi câu lenh cat. Neu nhan to hop phím <Ctrl>+<D>, ´’ ´ ´ ˙ ˆ’ ˙ ’ ˙ ˙ ˆ ˆ ˆ ˆ ˆ ˆ ˆ ˙’ ngung viec nhap du lieu, chúng ta se qua lai dòng nhap˙lenh. Cung có the su ˙ mà dùng d ˆ `’ ¯e ˆ ˆ ˜’ ˆ ˜ ˆ ˆ ˜ ˆ’ ’’ ˙ ˙ ˙là câu lenh trong he vo d ’ dung ˙ ˙ ng trình d ˙’ ˆ’ ’ dung to hop phím <Ctrl>+<C>, mà ˆ ˆ ¯e `’ chuo ˆ ’’ ¯ang chay. Ne˙ u d a tên mot tap tin vào làm tham so cho lenh cat, thì noi dung cua lenh này se d ˙ c ´ ¯u ˙ ´ ˙ ˆ ˙ ’ ˆ ˆ ’ ˆ ˆ ˆ ˆ ˜ ¯uo ’’ d ’a toi d ˆ ¯u ´’ ¯a `u vào˙tiêu chuan, tu d lenh cat se d˙ c noi dung này và d ’a toi d˙ˆ u ra tiêu chuan ˙ ˆ’ `’ ¯ó ˆ ˜ ¯o ˆ ˙ ¯u ´’ ¯a ` ˙ ˆ’ (xem so d ˆ ). ` ˙ ˙ ˙ ’ ¯o ˆ ˆ Dˆ` ’ ˆ ` Noi dung tap tin -> ¯ au vào tiêu chuan (stdin) --cat--> dˆu ra ¯a ˙ ˙ ’n (stdout) ˆ tiêu chua D ’ ˆ ’`’ ’ ’ ˆ ˆ’ ’´’ ˜’ ˆ ¯a ` ˆ ’ ´ ´ ¯ ây chı là mot truong hop riêng cua viec chuyen huong du lieu d ˆ u vào, mot co che rat ˆ ˆ ’ ˆ ’ có ích cua he vo. ˙Và tat nhiên chúng ta can ˙ ´ ˙ ` xem xét ky hon co che˙ này. ´ ˙ ˆ ˆ ˜ ’ ’ ˆ ˙ 3.5 ˆ’ ` ’´’ ¯ ˆ ` Chuyen huong dau vào/dau ra, duong ´ ng và dau loc ¯ˆ ˆ ¯ ’`’ o ` ¯ˆ ˙ ˘ ’ ¯ã ’’ ’`’ ¯a ` ` ¯a ’ ˆ ’’ ´ ´’ Mac dù, nhu d nói o trên, thông thuong d ˆ u vào/d ˆ u ra cua mot chuong trình liên ket voi ˆ ˙ d `u vào/d `u ra tiêu chuan, trong he vo còn có các môi truong d ˘ c biet cho phép chuyen ˙ các ¯aˆ ¯a ˆ ˆ’ ˆ ’ ’`’ ¯a ˆ ˆ’ huong d ˆ `u vào/d ˆ u ra. ` ˙ ˙ ˙ ’´’ ¯a ¯a 3.5.1 ’’ Su dung >, < và >> ˙ D ˆ’ ˆ’ ` ’’ ’’ ¯ e chuyen huong d ˆ u vào/ra, su dung các ký hieu ">", "<" và ">>". Thuong su dung viec ’´’ ¯a ˆ ’`’ ˆ chuye’n huong d ˜’ lieu ra cua câu lenh vào tap tin.˙Duoi d là mot ví du tuong ung: ˙ ˆ ’´’ ¯u ˆ ’ ˆ ˙ ˆ ’´’ ¯ây ˆ ’ ’ ´’ ˙ ˙ ˙ kênh ˙ giao tác ˙ ˙ maikhai@fpt:/some/where$ ls -l > /home/maikhai/ls.txt ˆ ˆ ’ ’ Theo lenh này danh sách tap tin và thu muc con cua thu muc, mà tu d nguoi dùng ’ `’ ¯ó ’`’ ˙ nh ls2 se d oc ghi vào tap tin /home/maikhai/ls.txt; khi này neu tap tin thuc hien le ˙ ˙ ˙ ´ ˆ ’ ˆ ˆ ˜ ¯u ’ ’ ˆ ˆ ˙ ˙ ˙ ˙ ˙ ˙ 2 thu muc hien thoi ’ ˆ `’ ˙ ˙
    36. 32 Bash ` ˆ ´ ˆ ls.txt không ton tai, thì nó se d ’oc tao ra; neu tap tin d có, thì noi dung cua nó se bi ˜ ¯u ’ ˆ ¯ã ˆ ’ ˜ ˙ sách nói trên. Neu ban không muon xóa noi dung cu mà ghi thêm ˙ ´˙ ˙ ´ ˙ ˙ ¯è ’’ xóa và ghi d boi danh ˆ ˆ ˆ ˜ ` ´ ˆ ` ˙ ng ký hieu >> thay ˙ ˜’ ˆ ¯a ˆ ˆ ’’ du lieu d ˆ u ra vào cuoi tap tin, thì can su du ˆ cho >. Khi này khoang ’ ´ ng˙ truoc và sau các ký ˙ ˆ u > hay >> không có ý nghıa và chı dùng voi muc d tra ˘ ’´’ hie ˙ ˙ ˜ ’ ´’ ¯ích thuan ˆ tien, de nhìn. Ban có the chuyen huong không chı vào tap tin, mà còn toi d ˆ u˙ vào cua mot ˆ ˜ ˆ ˆ’ ˙ ’ ˆ ’´’ ’ ˆ ´’ ¯a` ’ ˙ˆ ˙ ˙ ´ ˙ câu lenh khác hay toi mot thiet bi nào d (ví du, máy in). Ví du, d ˆ’ d ’a noi dung tap tin ´ ˙ ˆ ’ ˆ ˆ ¯ó ¯e ¯u ˆ ˆ /home/maikhai/ls.txt vua˙tao o trên toi cua so terminal thu hai3 có the su dung lenh ˙ ˙ `’ ’’ ´’ ˙’’ ˆ’ ˙´ ’ ˙’ ’ ˆ ’ ˙ ˆ sau: ˙ ˙ ˙ kênh giao tác maikhai@fpt:/sw$ cat /home/maikhai/ls.txt > /dev/tty2 Nhu ban thay, > dùng d ˆ’ chuyen huong du lieu cua d ˆ u ra. Chuc nang tuong tu d´ i voi ’ ´ ˆ ¯e ˆ’ ’´’ ˜’ ˆ ’ ¯a ` ´’ ˘ ’’ ’ ¯o ´’ ˆ ` d ˆ u vào d ’ ’ ’’ ’ ¯e ˙´ ` ˙ ˙oc thuc hien boi <. Ví du, có the d´ m so tu trong tap tin ls.txt nhu sau (chú ý, ¯a ¯u ’ ˆ ˆ ˆ ˆ ’ ˆ ’ d chı là mot ví du minh hoa, trên˙thuc te thuong su dung câu lenh d ’n gian hon): ¯ây ’ ˙ ˆ ˙ ˙ ’ ´ ’`’ ˆ ’’ ˙ ˆ ¯o ’ ’ ˙ ˙ ˙ ˙ ˙ ˙ kênh giao tác maikhai@fpt:/sw$ wc -w < /home/maikhai/ls.txt ˆ’ ’´’ ’`’ ¯u ’ ’’ Cách chuyen huong này thuong d ’oc su dung trong các script, cho các câu lenh mà thuong ˆ ’`’ tiep nhan (hay cho) du lieu vào tu bàn˙ phím.˙Trong script dùng d ˆ’ tu d ˆ ng hóa mot thao tác ´ ˆ ˆ `’ ˜’ ˆ `’ ¯e ’ ¯o ˙ ˆ nào d ˙ có the d ’a các thông tin can thiet cho câu lenh tu tap tin: trong tap tin này ghi san ¯ó, ˆ’ ¯u ˙ ` ˆ ´ ˆ ˆ `’ ˆ ˙ ˙ ˆ ˙ ˜ ˘ nhung gì can d ˆ’ thuc hien lenh d Boi vì các ký hieu ` ¯e ’ ˆ ˆ ’’ ˙<, > và >> làm viec voi các kênh tiêu ˙ ˙ ´ ˜’ ˆ ¯ó. ˆ ˆ ’ chuan (d ˆ u vào hoac d ˆ˙u ra), chúng không chı d ’oc dùng theo các cách ˙ ˆ’ ¯a ` ˙ ` ˙ ˘ ¯a ’ ¯u ˙ ’ quen thuoc, thuong ˆ ’`’ dùng, mà còn có the ˙ ’ theo cách khác, "la mat" hon.˙ Ví du, các câu lenh sau là tuong d ong: ´ ˘ ˙ ˆ ’ ˆ ’ ’ ¯u ’ ’ ˙ ˙ ˙ 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ó mot lenh nào, tuc là không có kênh tiêu chuan nào cho ˙ ’n huong này không˙the d ’oc su dung, nhu the không the, ví du, nhap lenh) các ký tu chuye ˙ ’ ¯u ’ ’’ ´ ’ ˆ ’ ˆ ’´’ ˆ ’ ˆ ˆ ˆ vào dòng lenh˙sau: ˙ ˆ ˙ ˙ ˙ ˙ ˙ kênh giao tác [user]$ file1 > file2 ¯u ’ ’ ’ ` ’ mà thu d ’oc ban sao cua mot tap tin nào d Nhung d ˆ u này không làm giam giá tri cua ˆ ˆ ¯ó. ’ ¯ie ’ co che ’ ˆ ’˙ ’ ˙ ˙ ’ ˆ ˆ ˆ’ ´ này, boi vì các kênh tiêu chuan có cho moi câu lenh. Khi này, có the chuyen huong’ ˙’´’ ˆ ˙ không chı d ˆ u vào và d ˆ u ra tiêu chuan, mà còn ˙ kênh khác. ¯ e làm d ’oc d ˆ u này, can ’ ¯a` ¯a` ˆ’ các D ˆ’ ¯u ’ ¯ie ` ˆ` d ˘ t truoc ký hieu chuye ´ ’ ˆ ´ ’ Dˆ ` ˙’ ’n huong so cua kênh muon chuyen. ¯ au vào tiêu chuan stdin có so 0, ´ ¯a ’´’ ˆ ˆ ’´’ ˆ ˆ ˆ ˆ d ˙ u ra tiêu chuan stdout - so 1, kênh thông báo loi stderr - so 2. Tuc là lenh chuyen huong có ` ¯a ˆ ˙’ ˆ ´ ˆ ˜ ˆ ´ˆ ´’ ˆ ’ ’´’ ˆ dang d ˆ y d ’ nhu sau (xin d ’oc nhac lai, khoang trang canh > là không ˙ ´ t thiet): ` ¯a ¯u ’ ¯u ’ ´ ˘ ’ ´ ˘ nha ˆ ´ ˆ ˙ ˙ ˙ ˙ command N > M 3 ban can dùng to hop phím <Ctrl>+<Alt>+<F2> d ˆ’ chuyen toi cua so terminal này và d ˘ ng nhap truoc ` ˆ ˆ’ ’ ¯e ˆ’ ´’ ’’ ˆ’ ¯a ˆ ’´’ ˙ ˙ ˙
    37. ˆ’ 3.5 Chuyen huong dau vào/dau ra, duong ´ ng và dau loc ` ’´’ ¯ ˆ ` ¯ˆ ˆ ¯ ’`’ o ` ¯ˆ 33 ˙ ¯ó, ´ ’ ˆ ˆ’ Trong d N và M - so cua kênh tiêu chuan (0, 1, và 2) hoac tên tap tin. Trong mot vài ˘ ˆ ˆ truong hop có su dung các ký hieu <, > và >> mà không chı ˙ so kênh hay tên tap tin, vì ’ `’ ’ ’’ ˆ ’ ra ´ ˙ ˆ ˆ ˙ ˙ thieu se d ˘ t, theo mac d nh, 1 neu dùng >, tuc là d `u ra tiêu chuan, hoac 0 neu ˙ ˙ ˙˘ ˜ vào cho còn ´ ˜ ¯a ˆ ˆ ˘ ¯i ´ˆ ´’ ¯a ˆ ˆ’ ´ˆ dùng <, tuc là d ˆ ´’ `u vào ˙tiêu chuan. Nhu the, khi không có so nào chı ra, > se d oc biên dich ’ ˙ ˙ ´ ´ ’ ˙ ¯a ˆ ’ ˆ ˆ ˜ ¯u ’ ’ ˙ ˙ ˆ’ ’´’ là 1 >, còn < se d ’oc biên dich là 0 <. Ngoài viec chuyen huong các kênh tiêu chuan d ’n ˜ ¯u ’ ˆ ˆ’ ¯o gian nhu vay, còn có ’ ˘ ’ ˙ kha nang không nhung chuyen huong du lieu vào kênh này hay kênh ˙ ˙’ ’ ˆ ˜’ ˆ ’´’ ˜’ ˆ khác, mà còn sao chép noi dung cua các kênh tiêu chuan d Ký ˙hieu & dùng d ˆ’ thuc hien ˙ ˆ ’ ˆ’ ¯ó. ˆ ¯e ’ ˆ d ˆ u này, khi d ˘ t nó (&) truoc so cua kênh se chuyen du lieu d´ n: ˙ ` ¯ie ¯a ˙ ´ ´ ’ ’’ ˆ ˜ ˆ’ ˜’ ˆ ¯e ˆ ˙ ˙ ˙ ˙ command N > &M ˆ ˜ ¯a ’ ´’ ´ˆ ¯u ’ ’’ ¯e ’ ¯a ˆ ` ˆ’ Lenh này có nghıa là, d ˆ u ra cua kênh voi so N d ’oc gui d´ n ca d ˆ u ra tiêu chuan, và sao ` ˙´ i kênh có so M. Ví du, d ’ sao chép thông báo loi vào d `u ra tiêu chuan, can dùng lenh chép to ´ ˙ ˜ ’ ˆ ` ’ ˆ ¯e ˆ ˆ ¯a ˆ ˆ ˆ ˙ ’ ˘ ´ 2>&1, còn 1>&2 sao chép stdout vào stderr. Kha nang này d ˘ c biet có ích khi muon ghi d ˆ u ˙` ¯a ˆ ˆ ¯a ra vào tap tin, vì khi d chúng ta vua có the `’ ´ ˙ trên màn hình, vua ghi chúng ’ nhìn thay thông báo ˙ `’ ˆ ¯ó ˆ ˆ vào tap ˙tin. Ví du, truong hop sau thuong d oc ung dung trong các script chay khi khoi d ng ’’ ¯o ˆ ’`’ ’ ’`’ ¯u ’ ´’ ’ ˆ ˙ Linux: ˙ ˙ ˙ ˙ ˙ ˙ kênh giao tác teppi82@teppi:~$ cat hiho > /dev/null cat: hiho: No such file or directory teppi82@teppi:~$ cat hiho > /dev/null 2>&1 3.5.2 ’’ Su dung | ˙ ˆ ’ ˆ’ ’´’ ¯a ` ’ ˆ’ ´’ ¯u `’ ´ Mot truong hop d ˘ c biet cua chuyen huong d ˆ u ra là su to chuc các d ’ong ong (ha y còn có ˆ ’`’ ’ ¯a ˆ the ˙ goi là kênh giua các chuong trình, hoac bang chuyen). Hai hay vài câu lenh, mà d `u ra ’ ˙ ˙ ˙ ˘ ˘ ˙` ˆ ˜’ ’’ ˆ ˆ ¯a ˆ cua lenh truoc dùng làm d ˆ u vào cho lenh˙sau, liên ket voi nhau (có the nói phân cách nhau, ’ ˆ ˙ ’´’ ` ¯a ˆ ´ ´’ ˆ ˆ’ ˙ ´ ˙ ´ ˆ ˆ ’’ ˆ ’ ˘ ¯u ˙ ` ¯a ˆ’ ’ ˆ neu muon) boi ký hieu gach thang d ´’ng - "|". Khi này d ˆ u ra tiêu chuan cua lenh d ´’ng bên ¯u ˙ ’n d´ n d `u vào tiêu chuan cua chuong trình, dung bên phai so voi |. trái so voi | duoc chuye ¯e ¯a ´’ ˙ ’ ’ ´’ ˙ ’ ´’ ’’ ˆ ˆ ˆ ˆ ’’ Ví du: ˙ ˙ kênh giao tác maikhai@fpt:/sw$ cat ls.txt | grep knoppix | wc -l ˜ ´ ˆ ’ ’ ˆ Dòng này có nghıa là ket qua cua lenh cat, tuc là noi dung tap tin ls.txt, se d ’oc chuyen ´’ ˆ ˆ ˜ ¯u ’ ˆ’ ´ n d ˆ u vào cua lenh grep, lenh này se phân chia no˙ dung nói trên và chı lay˙ ra nhung d ˆ ¯a ¯e ` ’ ˆ ˆ ˙ ˜ ˆi ˙ ’ ˆ ´ ˜’ dòng nào có chua tu ˙ ` knoppix. ˙ ´ n luot mình, ket qua ˙cua lenh grep d oc chuyen toi d `u ´ ’ ’ ˆ ’ ´’ ¯a ´’ ’ ¯ e ’˙’ Dˆ ˆ ¯u ’ ’ ˆ ˆ vào cua lenh wc -l, mà tính so nhung dòng thu d ’oc. ¯ uong ong su du˙ d ˆ’ ket hop vài ’ ˆ ´ ˆ ˜’ ˙ ¯u ’ D ’`’ ´ ˆ ’’ ng ¯e ´ ’ ˆ chuong trình nho lai voi nhau (moi chuong trình thuc ˙ ˆ n mot bien d ˆ’i xác d nh nào d˙ trên ’’ ˙ ’ ´’ ˜ ˆ ’’ ’ hie ˆ ´ ¯o ˆ ˙ ¯i ¯ó d ˆ u vào) tao thành˙ mot lenh tong quát, mà ket qua˙ cua ˙ se là mot bien d ˆ’i˙ phuc tap. Can ` ¯a ˆ ˆ ˆ’ ´ ˆ ’ ’ nó ˜˙ ˆ ´ ¯o ˆ ´’ ˆ` ` ˙ he vo goi và thuc hien tat ca các câu lenh có trong d ong ong cùng mot lúc, chay ˙ ˙ ˙ ´ ˙ chú ý rang, ˆ ’ ˘ ’ ˆ ´ ’ ˆ ˆ ¯u `’ ˆ ’ ˆ mo ˆ˜i lenh d trong mot ban ˙ he vo riêng. Vì the˙ngay khi chuong trình thu nhat bat d ˆ u d ˙’a ˆ ¯ó ˙ ˙ ˆ ’ sao ˙ˆ ’ ´ ˆ ’’ ´ ˙ ´ ¯a ¯u ´’ ˆ ˘ ` ´ ˙ ’ o d `u ra, chuong trình tiep theo bat d `u xu lý ket qua này. Cung y nhu vay, các lenh ket qua ’’ ¯a ˙ ˙ ´ ´ ˆ ˘ ¯a ’’ ´ ’ ˆ ˆ ’’ ˆ ˆ ˜ ’ ˆ ˆ ´ p theo thuc hien các công viec cua mình: cho du lieu tu lenh truoc và d ’a ket qua cho lenh tie ˆ ’ ˆ ˆ ’ `’ ˜’ ˆ `’ ˆ ’´’ ¯u ˆ ´ ˙’ ˙ ˆ ´ ˙´ ˙ ˙ ` ’ ´ ´ ˙’ ´ tiep theo, giong nhu mot dây chuyen san xuat. Neu nhu muon mot lenh nào d ket thúc hoàn˙ ´ ˙ ˆ ˆ ’ ˆ ˆ ˆ ˆ ˆ ˆ ˆ ¯ó ˆ ˙ ˙ ˙ ’´’ ’ ˆ ˆ ´ ˆ ˆ’ ’’ toàn, truoc khi thuc hien lenh tiep theo, ban có the sue dung trên mot dòng ca ký hieu dây ˆ ’ ˆ chuye `n |, cung nhu ´ u ˆ ˙ da˙ chap phay ;. Tru˙´ c moi dau cha˙m phay, he vo se dung lai và cho ˙´ ’ ˜ ´ ´ ’ ˆ˙ ’ ˜ `’ ˙ ˆ ˜ ’ ˆ ˆ ’o’ ˆ ˆ ˆ ˆ `’ cho d´ n khi thuc hien xong tat ca các câu lenh truoc cua d ’ong ong. ˙Trang thái thoát ra (giá ¯eˆ ’ ˆ ´ ’ ˆ ˆ ’´’ ’ ¯u `’ ´ ˆ ˙ ˙ ˙ ˙ ˙
    38. 34 Bash ¯u ’ ’ ’ ˆ ’’ ’ ˆ ¯u `’ ´ tri lôgíc, mà d ’oc tra lai sau khi thuc hien xong chuong trình) cua mot d ’ong ong se trùng ˆ ˜ ˙ i trang thái thoát ra cua câu lenh sau cùng trong d ong ong. O truoc˙câu lenh d `u tiên cua ˙ ˙’ ˙ ˙ ’’ ’´’ vo´’ ˆ ¯u `’ ´ ’ ˆ ˆ ¯a ˆ ’ d ’ong ´˙ ong có the d ˘ t ký hieu "!", khi d trang thái thoát ra cua d ong ong se là phu d nh ’ ¯a ˙ ’ ¯u `’ ´ ˙ ’ ¯i ¯u `’ ˆ ˆ ˆ ¯ó ’ ˆ ˜ lôgíc cu ’ a trang thát ˙thoát ra ˙cua lenh cuoi cùng trong d ong ong. Tuc là neu trang thái thoát ’ ˆ ´ ˆ ˙ ¯u `’ ˆ ’ ´ ´’ ´ ˆ ˙ ra cua lenh ˙ ´ i cùng bang 0 thì trang thái thoát ra cua d ’ong ong se bang 1 và ˙ ’oc lai. He ’ ˆ cuo ˆ ` ˘ ˙ ’ ¯u `’ ´ ˆ ˜ ˘` ngu ’ ˆ ’ `’ ˙ tat ca các câu lenh ket ˙ vo cho cho ˆ ´ ’ ´ thúc roi moi xác d nh và d ’a ra giá tri này. ` ´’ ˙ ˙ ˙ ˆ ˆ ˆ ¯i ¯u ˙ ˙ ˙ Dˆ` 3.5.3 ¯ au loc ˙ Ví du cuoi cùng o trên (ví du voi câu lenh grep) có the dùng d ˆ’ minh hoa cho mot khái niem ´ ˆ ’’ ´’ ˆ ˆ’ ¯e ˆ ˆ ˙ ng khác, d là, dau loc chuong trình. Dau loc - d là lenh (hay chuong trình), mà tiep ` ˙ ˙ ` ˙ ˙ ˙´ qua tro ¯ó ¯ˆ ’’ ˆ ¯ó ˆ ’’ ˆ ˙ lieu vào, thuc hien ˙mot vài bien d ’i ¯ nhan du ˆ ˙ lieu này ˙và d a ra ket qua o d `u ra tiêu ´ ¯o trên du ˆ ´ ’ ’’ ¯a ˆ ˜’ ’ ˆ ˆ ˆ ˆ ˜’ ¯u’ ˆ ˆ ˆ ’ ¯ây ˙ ’ chuyen d´ n noi nào d theo ý˙muon cua nguoi dùng). Các câu lenh chuan (tu d còn có the ˙ ˙’ ` ˙ ˆ ˙’ ˆ ¯e ˆ ’ ¯ó ´ ’ ˆ ’`’ ˆ `u loc bao gom các lenh d nói d´ n o trên cat, more, less, wc, cmp, diff, ` ˙ - dˆ ¯a ˆ ˆ ¯ã ¯e ’’ ˆ và ca nhung câu lenh có˙trong bang 3.1 ’ ˙ ˜’ ˆ ’ ˙ ’ Bang 3.1: Các câu lenh d ˆ u loc ˆ ¯a` Lenh ’ ˘ ´ Mô ta ngan gon ˙ ˙ ˆ ˙ ˙ ` ˜ grep, fgrep, egrep Tìm trong tap tin hay du lieu d ˆ u vào các dòng có chua mau van ban ˆ ˜’ ˆ ¯a ´’ ˆ ˘ ’ ˙ d a các dòng˙này toi d `u ra tiêu chuan ¯u ’ ’ d ’oc chı ra và ¯u ’ ´’ ¯aˆ ˆ’ ˙ ` ´ tr ˜’ ˆ ¯a ˆ ’ ’’ ´’ ´ ’’ Trong du lieu d ˆ u vào thay the các ký tu o ô thu nhat boi các ký tu tuong ˆ ’ ’’ ´’ ’’ ung o ô thu ˙ hai. Hãy thu gõ lenh tr ˙ ´’ ’’ ` abc ABC roi gõ vài dòng chua ˙ ´’ ˆ ˆ các ký tu abc! ˙ ’ ˙ comm So sánh hai tap tin theo tung dòng mot và d ’a vào d ˆ u ra tiêu chuan 3 ˆ `’ ˆ ¯u ` ¯a ˆ’ cot : mot - nhu ˙ ng dòng chı gap o tap tin thu nhat, hai - nhung dòng chı ’ ˘ ’’ ˆ ˙ ´’ ˆ ´ ’ ˆ ˆ ˜’ ˜’ gap o tap tin thu hai, và ba - nhung˙dòng có trong ca hai tap tin. ˙ ’ ˙ ˘ ’ ˆ ´’ ˙ ˜’ ’ ˆ ˙ ˙ ˙ pr Dinh dang tap tin hay noi dung cua d ˆ u tiêu chuan d ˆ’ in ´ n. ¯ ˙ ˆ ˆ ’ ¯a ` ˆ’ ¯e a ˆ ˙ ˙’ ˙ sed Trình soan thao tap tin theo dòng, su dung d ˆ’ thuc hien mot vài bien d ˆ’i ˆ ’’ ¯e ’ ˆ ˆ ´ ¯o ˆ ˙ u d `u vào (lay tu tap tin hay ˙d `u vào tiêu chuan) trên du lie ¯a ˙ ´ `’ ˆ ˙ ˙ ’˙ ˜’ ˆ ˆ ˆ ¯aˆ ˆ ˙ ˙ ˆ ¯a ` ¯a ˆ ˆ ¯ôi ˜’ ˆ ¯a ` ˆ ˘ ’’ ˜’ ˆ Mot d ˆ u loc d ˘ c biet, câu lenh tee, nhân d du lieu d ˆ u vào, mot mat gui du lieu này d´ n d ˆ˙u ra tiêu chuan, mat khác˙ghi nó (du lieu) vào tap ˙ (nguoi dùng can d ˘ t tên). De thay ˙ ˙’ ˙ ˘ ˙ `˙ ˙˜ ´ ˆ ` ¯e ¯a ˆ ˜’ ˆ ˆ tin ’`’ ˆ ¯a ˆ ˆ ra` ng theo chuc nang cua ˘ ´’ ˘ ’ ˙ mình lenh tee tuong tu nhu nhóm ký tu chuyen huong 1>&file. ˙ ˙ ’ ˙ ´ ˆ ’’ ’ ’ ’ ˆ ’’ Kha nang cua d ˆ u loc có the mo ˙ ˆ ng voi viec su dung các bieu thu˙c chính quy (d ˆ u khien), ’ ˘ ’ ¯a ` ˆ’ ’’ ro ´’ ˆ ’’ ˙ ˆ’ ´’ ¯ie` ˆ’ cho phép, ví du, to ´’ ˆ’˙chuc tìm kiem theo các˙ mau tìm kiem tu d ’n gian d´ n phuc tap và rat ´ ˙ ˆ ˜ ˙ ˆ ´ ˆ `’ ¯o ’ ¯e ˆ ´’ ´ ˆ phuc tap. Ne ´’ ˙ ´ n, chúng ta có the nói rat nhieu ve chuyen huong và d `u loc. Nhung noi ´ u muo ’ ´ ` ˆ ` ’ ’´’ ˙ ˆ ˆ ˆ ˆ ˆ ˆ ¯a ˆ ’ ˆ ˙ dung này có trong phan lon các cuon sách ve UNIX và Linux (xem phan lo˙ ket). Vì va˙ ` ˆ ´’ ´ ˆ ` ˆ ˆ `’i ´ ` ˆ ˆ y, ˙ ˜ `’ ’’ ¯ây ˆ’ ˆ ˆ` chúng ta se dung o d và chuyen sang mot phan khác, d ’oc goi là "môi truong và các bien ¯u ’ ’`’ ´ ˆ ’’ ˆ ’ môi truong" tao boi he vo. `’ ˙ ˙ ˙ ’ ˙ ˙ 3.6 ´ ˆ ´ ´ ˆ ˆ ’ ˆ ’ Tham bien và các bien so. Môi truong cua he vo ’`’ ˙ ˆ ´ ˆ ˆ ’ ´’ ˆ ´ ´ Khái niem tham bien trong he vo bash tuong ung voi khái niem bien so trong các ngôn ngu ’ ’ ´’ ˆ ˆ ˜’ lap trình˙ thông thuong. Tên goi (hay ID) cua tham bien có the là mot tu bao gom các ký tu ˙ ’ ´ ˙’ ` ˆ ’`’ ˆ ˆ ˆ `’ ˆ ’ ˙’ ng chu cái, chu so, dau gach duoi (chı ký tu d `u tiên cua tu này không d oc là chu so), và ba ´ ´ ˙ ´ ’ ’ `’ ˙ ´ ˙ ˜’ ˜’ ˆ ˆ ’’ ’ ¯a ˆ ¯u ’ ’ ˜’ ˆ ca nhung ký tu sau: , , #, , - ˙(gach ngang), $,,˙0, _ (gach duoi). Chúng ta nói ˙rang, tham bien ’ ˜’ ’ ’´’ ` ˘ ´ ˆ ˙ ˙ ˙
    39. ´ ˆ ´ ´ ˆ ˆ ’ ˆ ’ 3.6 Tham bien và các bien so. Môi truong cua he vo ’`’ 35 ˙ ¯u ’ ¯i ¯u ’ ¯a ´ ˆ ´ ˆ ˆ’ d ’oc xác d nh hay d ’oc d ˘ t ra, neu nguoi dùng gan cho nó mot giá tri. Giá tri có the là mot ’`’ ˘ ˆ ˙ trong˙rong. De nhìn thay giá tri cua tham bien, nguoi ta su dung ˙ tu $ o truoc tên cua dòng ´ ˜ ¯ ˆ’ ˙ ˙´ ’ ´ `’ ˙’ ˙ ký ’ ’’ ’´’ ’˙ ˆ ˆ ˆ ˆ ’ ’ nó. Nhu vay, lenh: ˙ ˙ ˙ ’ ˆ ˆ ˙ ˙ kênh giao tác maikhai@fpt:/sm$ echo parameter ˆ’ hien thi tu parameter, còn lenh `’ ˆ ˙ ˙ kênh giao tác maikhai@fpt:/sm$ echo $parameter ˆ’ ’ ´ ´ ´ ´ ¯ó ’ ’ hien thi giá tri cua tham bien parameter (tat nhiên neu nhu tham bien d duoc xác d nh). ˆ ˆ ˆ ’ ˆ ¯i ˙ ˙ ˙ ˙ 3.6.1 ´ ˆ Các dang tham bien khác nhau ˙ ´ ˆ ´ ˆ ´ ¯a Tham bien chia thành ba dang: tham bien vi trí, tham bien d ˘ c biet (các ký tu d ˘ c biet d nói ˆ ˆ ’ ¯a ˆ ¯ã ˙ ´ ˙ ´ ˙ ’˙ ˆ ’ ´ ’’ trên chính là tên cua nhung tham bien này) và các bien so cua he vo. Tên (ID) cua tham o ’ ˙ ˙ ˙’ ˜’ ˆ ˆ ˆ bien vi trí gom mot hay vài chu so (nhung không có tham bien vi trí ˙ Giá tri cua tham bien ´ ˆ ` ˆ ˆ ˜’ ´ ˆ ’ ´ ˆ 0). ’ ´ ˆ ˙ các tham so cho lenh, d oc d a ra khi chay he vo (tham so d `u tiên là giá tri cua tham ˙´ ˙´ ˙ vi trí là ˆ ˆ ¯u ’ ¯u ’ ’ ˆ ’ ˆ ¯a ˆ ’ ˙´ n 1, tham so thu hai - ˙ bie ´ ´’ tham bie ˙´ n 2, v.v. . . ). Có the dùng câu lenh set d ’ thay ˙d ’i giá tri ˙ ˙’ ˆ ˆ ˆ ˆ ˆ ¯eˆ ¯oˆ cua tham bien vi trí. Giá tri cua các tham bien này cung thay d ˆ’˙ trong khi he vo thuc hien ’ ´ ˆ ’ ´ˆ ˜ ¯oi ˆ ’ ’ ˆ ˙ mot trong các hàm ´ ˙ so (chúng ta se xem xét van d ` này o duoi). Các tham bien d ˘ c biet˙ không ˙ ´ ¯e ’’ ’´’ ´ ¯a ˙ ˙ ˆ ˆ ˜ ˆ ˆ ˆ ˆ gì ˙khác hon là các mau, mà su thay the (phép the, phép hoán d ’i) chúng d oc thuc hien nhu ˜ ´ ´ ˙ ˙ ’ ˆ ’ ˆ ˆ ¯o ˆ ¯u ’ ’ ’ ˆ ’ ’ trong bang 3.2: ˙ ˙ ˙ ˙ Các tham bien d ˘ c biet, d ’oc liet kê o bang trên, có mot d ˆ’m khác biet d là chı có the ´ ¯a ˆ ˆ ¯u ’ ˆ ’’ ’ ˆ ¯ie ˆ ¯ó ’ ˆ’ "nhac" d´ n chúng, không ˆ’ ´ ˘ ¯e ˙ ˙ the gán các giá tri cho các tham ˙bien này. Bien ˙ ˙ ˙ ´ ´ môi truong, nhìn ˆ ˆ ˆ ’`’ `’ ˆ ’ ¯ó tu phía he vo, d là các tham bie ¯u ’ ¯at ´ n d ’oc d ˘˙ tên. Giá tri cua bien môi truong d ’oc gán nho ˆ ’ ´ˆ ’`’ ¯u ’ `’ thao tác có ˙ dang sau: ˙ ˙ ˙ ˙ ˙ kênh giao tác [user]$ name=value ’ ´ ´ Trong d name - tên cua bien, còn value - giá tri muon gán cho bien (có the là mot ¯ó, ˆ ˆ ´ˆ ˆ’ ˆ dòng tro ˆ ’ ´ ˆ ’`’ ’ ’ ˆ `˙ ´ ng). Tên cua bien môi truong chı có the bao gom các chu so, chu cái và không d ’oc ˆ ˜’ ˆ ´ ˜’ ¯u ’ ˙ ˙ ´ ` ˘ ¯a ’’ ˆ ˜’ ´ˆ ` ˘ ¯o ¯oa ´ ˆ ˆ ` ´ bat d ˆ u boi mot chu so. (Tin rang sau khi d c d n viet ve tham bien vi trí thì các ban d hieu ˆ ¯ã ˆ’ ˆ ´ ˙ tai sao mot bien môi truong không the bat˙d ˆ u boi mot chu so.) Giá tri có the là bat ky mot ˆ ’`’ ´ ` ˙ ˆ’ ˘ ¯a ’’ ˆ ˜’ ´ˆ ˙ ˆ’ ˙´ ` ˆ ˆ ˙ dòng van ˘ ˙ban nào. Neu giá tri có chua nhung ký tu d ˘ c biet, thì can d ˘ t nó (giá tri) vào da˙u ’ ´ ´’ ˙ ` ¯a ˙ ´ ˆ ˜’ ’ ¯a ˆ ˆ ˆ ´ ˙ ´ ˘ ˙ ˙ ˙´ ˙ ˙ ngoac. Giá tri tat nhiên se không chua các dau ngoac này. Neu mot bien môi truòng d ’oc xác ˘ ˆ ˜ ´’ ˆ ˆ ˆ ´ ˆ ’ ¯u ’ d nh, thì cung có the bi xóa bo bang lenh noi trú unset. Tap hop˙tat ca các bien này cùng voi ¯i ˙ ˜ ˙ ˆ’ ’ ` ˘ ˆ ˆ ˙ ˆ ’ ´ ’ˆ ´ ˆ ˙ ´ ’ ˙ giá tri d gán cho ˙chúng goi là môi truong (enviroment) cua he vo. Có the xem nó (môi các ˙ ˙` ˙ ˙ ˆ ’’ ’ ¯ã ’’ ˆ truong) nho lenh set khi không có tham so (có the can dùng d ’o˙ng ong ’set | less", ’`’ ˙` ’ ˆ ˙ ´ ˆ ˆ’ ˆ ` ¯u `’ ´ ˆ ˙ ´ ´ ` ˆ D ˆ’ ´ ’ ˆ ´ neu môi truong lon, có nhieu bien). ¯ e xem giá tri cua mot bien môi truong cu the, thay vì ˆ ’`’ ’ ˆ ˆ ’`’ ˆ’ ˙nó bien muon xem), có the ˙ ’ dung lenh ˙ ´ ˆ ` dùng lenh set (khi này can tìm trong ket qua cua ˆ ´ ˆ ’ ’ ´ ˆ ˆ ˆ’ su’ ˆ echo: ˙ ˙ ˙ kênh giao tác [user]$ echo $name
    40. 36 Bash ’ ´ Bang 3.2: Thay the các tham bien d ˘ c biet ˆ ´ ¯a ˆ ˆ ´ Tham bien Quy luat thay the ´ ˙ ˙ ˆ ˆ ˆ ˙´ ’ ´ ´ ¯a `’ * ˘ ` Thay the boi các tham bien vi trí, bat d ˆ u tu tham bien thu nhat. Neu su ˆ ’ ˆ ´ˆ ´’ ´ ˆ ´ ˆ ’ ´ thuc hien trong dau ngoa thay the ’ ˆ ´ ˙ ˘ c kép, thì tham bien này se d oc thay ´ ˙ ˆ ˆ ˆ ˜ ¯u ’’ ’’ ˆ `’ nha ˆ ˙ ˆ boi mot tu ˙duy ˙ ´ t, mà tao ra tu tat ca các tham bien vi trí, phân cách `’ ´ ’ ´ˆ ˙ nhau bo ˙ ’ i ký tu d ˆ u tiên cu˙ bien so IFS (se nói d´ n o sau). Tuc là "$" ` ’a ´ ´ ˜ ¯e ’’ ˙ ´’ ’ ’ ¯a ˆ ˆ ˆ tuong d ’ong vo ˙ ´ i "$1c$2c. . . ", trong d c - ký tu d `u tiên trong giá tri ’’ ¯u ’ ’ ¯ó ’ ¯aˆ ’ ´ ´ ˆ ˆ ´ ˆ ’ ´ cua bien so IFS. Neu giá tri cua IFS trong, hoac không d ’oc xác d nh ˆ ˘˙ ¯u ’ ¯i ˙ giá tri, thì tham bien phân cách nhau boi các khoang trang. ˙ ´ˆ ˙ ’’ ˙ ’ ´ ˘ ˙ ˙ ´ ’ ´ ´ ` ´ @ Thay the boi tham bien vi trí, bat d ˆ u tu tham bien thu nhat. Neu thay the ˆ ’ ˆ ˘ ¯a `’ ˆ ´’ ´ ˆ ´ ˆ ´ ˆ thuc hien trong ngoac kép, ˘ ˙ thì moi tham bien se d oc thay the boi mot ˜ ´ ˜ ¯u ’ ´ ’’ ˆ ’ ˆ ˆ ˆ ’ ˆ tu `’ ˙riêng biet. Tuc là,˙"$@" tuong d ong voi "$1" "$2" . . . Neu không có ˙ ˙ ´ ˙ ˆ ´’ ’ ’ ¯u ’ ’ ´’ ˆ tham bien ˙ trí, thì giá tri se không d ’oc thiet lap (tham bien se bi x ´ vi ˆ ˜ ¯u ’ ´ ˆ ˆ ´ˆ ˜ # Thay the ’’i´ bo˙ giá tri thap phân cua các tham bien vi trí. ˆ ˆ ˙ ’ ˙ ´˙ ˆ ˙ ´ ’’ ˙ ˙ ´ ˙ ? ˆ ’ Thay the boi trang thái thoát ra cua câu lenh cuoi cùng trong d ’ong ong, ˆ ˆ ¯u `’ ´ ˆ ˙ n trong che d nen truoc. ´ ¯o ˆ ˙ mà d ’oc thuc hie ¯u ’ ’ ˆ ˆ ˆ ` ’´’ ˙ ´ ’˙ ˙ ˙ - (gach ngang) ˆ ’ `’ ¯u ’ ¯a ’’ ˆ Thay the boi giá tri các co, flag, d ’oc d ˘ t boi lenh noi trú set hay trong ˆ ˙ khi chay he vo. ˙ ’ ˙ ˙ ˙ ˙ ˆ ˙ ´ ˙’ ´ ’ ´ $ Thay the boi so cua tien trình (PID - process identificator) ˆ ’ ˆ ˆ ´ boi so cua tien trình (PID) cuoi cùng trong so các câu lenh thuc Thay the ’’ ˆ ˆ ´ ’ ´ ˆ ´ˆ ´ ˆ ˆ ’ hien trong ne `n sau. ˙ ˙ ˆ ˆ ˙ ´ ’’ ´ 0 ˆ ’ Thay the boi tên he vo hay tên cua script d ˆ ’ ¯ang chay. Neu bash chay ˆ mot tap tin lenh nào ¯ó, ˙ d thì $0 có giá tri bang tên cua tap tin này. Trong ` ˘ ’ ˆ˙ ˙ ˆ ˆ ˆ truong hop nguoc lai giá tri này bang d ’ong dan d ˆ u ˙¯u d´ n he vo (ví ˙` ˙ ’’ ’ ˙ ’’ ˘ ˙¯u `’ ` ˜ ` ˆ ¯a d ’ ¯e ˆ ’ ˆ du, /bin/bash ˙ ˙ ˙ ˙ ˙ ˙ ´ ’’ ´ ´ ’ ´ _ (gach duoi) ’´’ Thay the boi tham so cuoi cùng cua câu lenh truoc trong so các câu lenh ˆ ˆ ˆ ˆ ’´’ ˆ ˆ ˙ d d ’oc thuc hien (neu d lai là mot tham ´ ´ ¯ó ˙ bien hay bien so, thì se˙ su ´ ´ ¯ã ¯u ’ ’ ˆ ˆ ˆ ˆ ˆ ˆ ˜ ’’ dung giá tri cua ˙ ˙ ˙ ’ n ˙ ˙ ˙ ˙ ¯ó, ˆ` ’’ ´ˆ ’ ˆ ’`’ ’ ` Trong d can thay name boi tên bien (nhu vay, trong truong hop này, ban lai can phai ˆ ’ bie´ t tên cua bien muon xem). Trong so các bien, mà ban se thay trong ket qua˙cua˙ lenh set, ˆ ’ ´ ˆ ´ ˆ ´ ˆ ´ ˙ ˆ ´ ˜ ˆ ˙ ´ ˆ ’ ’ ˆ ˜’ ´ ´ ˆ ˆ ¯e ˆ ´˙ ˆ ´ˆ ’’ ˙ ` có nhung bien rat thú vi. Xin hãy chú ý d´ n, ví du, bien RANDOM. Neu thu chay vài lan liên ˆ ´ tiep câu lenh sau: ˙ ˙ ˙ ˆ ˆ ˙ kênh giao tác maikhai@fpt:/sw$ echo $RANDOM ˜ ` ˆ ˆ ˜ ˆ ¯u ’ ˆ ´’ ´ ˆ ’ thì moi lan ban se nhan d ’oc mot giá tri moi. Nguyên nhân là vì bien này tra lai mot giá ˆ ˜ 4 ˙ ˙’ ng 0˙- 32 ˙768. ˙ ˙ ˙ tri ngau nhiên trong khoa ˆ ˙ 3.6.2 ´ ˆ ´ ’ ˆ ’ Dau nhac cua he vo ˘ ˙ ˆ ´ ´ ˆ ˆ ´ ˆ ´ ˆ ’ ´ ˆ ´ Mot trong các bien rat quan trong có tên PS1. Bien này cho biet dang cua dau nhac, mà bash ˘ ˙ ra trong khi cho nguoi dùng nhap câu lenh tiep theo. Theo mac d nh thì bien này d oc d ’a `’ ’`’ ˙ ´ ˙ ˘ ´ ¯u ˆ ˆ ˆ ¯i ˆ ¯u ’ ’ ˙ gán giá tri "s-v$ , tuy nhiên trên các ˙ban phân phoi khác nhau˙ thuong có các script ’ ´ ˙ ˙ ˆ ’`’ ˙ 4 `’ ´ ˜ random là tu tieng Anh có nghıa ngau nhiên ˆ ˜ ˆ
    41. ´ ˆ ´ ´ ˆ ˆ ’ ˆ ’ 3.6 Tham bien và các bien so. Môi truong cua he vo ’`’ 37 ˙ ’’ ¯o ¯a ˆ ¯i ´ khoi d ˆ ng (hay script d ˘ ng nhap) xác d nh lai bien này. Nói chung thì trong bash có tat ca ˆ ´ ’ ˆ ´ ´ ˙ nhac, d oc su dung trong các truong hop khác nhau. Bien PS1 d a ra dang cua dau ´ bon dau ˘ ¯u ’ ’’ ˙ ˙ ` ˙ ´ ’ ´ ˆ ˆ ’ ’’ ’ ˆ ¯u ’ ˆ ´ ˙` nhap˙lenh. Dau nhac thu hai, xác d nh boi bien PS2, xuat hien khi he vo ´ ´ ˙ ’’ ´ ´ ˙ ˆ ’ nhac khi he vo cho ˆ ˆ ˘ ’ ˆ ˘ ´’ ¯i ˆ ˆ ˆ ˆ ’ ˙ cho nguoi dùng nhap thêm ˆ `’ ’`’ ˙ ˙ mot vài du lieu can thiet nào d d ’ có the tiep tuc chay câu lenh ` ´ ˙ ¯ó ¯e ’ ´ ˙ ˙ ˆ ˜’ ˆ ˆ ˆ ˆ ˆ ˆ ˆ (chuong trình) d goi. Theo mac d nh bien PS2 có giá tri ">". Rat có the ban d˙ nhìn thay ’’ ¯ã ˙ ˙˘ ¯i ˙´ ˆ ´ ˆ ˆ’ ˙ ¯ã ˙´ ˆ da´ u nhac này, khi cha ˆ ´ ˘ ˙ y lenh cat d ˙ d a du lieu vào tu bàn phím vào tap tin. ˙Mot ví du khác ˙ ’ `’ ˙ ˆ ¯e ¯u ˜’ ˆ ˆ ’ ˆ ˆ - lenh ftp, sau khi chay lenh này dau nhac se có dang nhu d nói. Dau nhac, ˙ d nh boi ˆ ˙ ˙ ˆ ´ ˆ ˘ ˙˜ ´ ’ ¯ã ˙ ´ˆ ˘ xác ¯i˙ ´ ’’ bie´˙n PS3, su dung trong lenh select. Dau nhac, xác d nh boi bien PS4, d oc d a ra truoc ’’ ˙ ˙ ´ ´ ˘ ˙ ’’ ´ ˙ ˆ ˆ ˆ ¯i ˆ ¯u ’ ¯u ’ ’ ’´’ mo ˙ ˙ ˙ ˜i câu lenh, trong lúc bash theo dõi quá trình thuc hien. Giá tri theo mac d nh - "+". Neu ˘ ¯i ˙ ´ ˆ ˆ ’ ˆ ˆ ˙ ´ n, ban có the thay d ’i các bien PS1 và PS2. Khi này có the ˙ ’ dung bat ky ký ˙ ˙ ˙ ˙ có mong muo ˆ ˆ’ ¯o ˆ ´ ˆ ˆ’ su ’ ´ ` ˆ ˙ tu nào nhap tu bàn phím, cung nhu mot vài ký tu chuyên dùng d ˆ’ xác d nh dang dau nhac ˙ ´ ´ ’ ˆ `’ ˜ ’ ˆ ’ ¯e ¯i ˆ ˘ ˙ trong ˙bang 3.3 (chı d a ra mot vài trong so chúng làm ví du, danh sách d `y ˙ ’ xem trong nhu ’ ’ ¯u ˙ ´ ˙ ˙ d ’ ’ ˆ ˆ ¯a ¯u ˆ ’ trang man cua bash - gõ lenh "man bash"). ˙ ˙ ˆ ˙ ’ Bang 3.3: Ký tu xác d nh dang dau nhac ’ ¯i ´ ˆ ´ ˘ Cum ký tu Giá tri (ke ’ ´ t qua thu d ’oc) ˙ ˆ ’ ¯u ’ ˙ ˙ ˙ ˙ ˙ ˙ a Tín hieu âm thanh (mã ASCII 07) ˆ ˙ ’ d Thoi gian o dang "Thu, tháng, ngày", ví du, Sun, Dec, 26. `’ ’ ´’ ˙ ˙ h Tên máy (hostname) d´ n dau cham d ˆ u tiên. ¯e ´ ˆ ˆ ´ ¯a ˆ ` H ` Tên máy d ˆ y d ’ , ví du teppi.phanthinh.com ¯a ¯u ˙ t `’ ˆ `’ ’’ Thoi gian hien thoi o dang 24 gio: HH:MM:SS (gio:phút:giây) `’ `’ ˙ ˙ T `’ ˆ `’ ’’ Thoi gian hien thoi o dang 12 gio: HH:MM:SS `’ ˙ ˙ ` @ `’ ˆ `’ ’’ Thoi gian hien thoi o dang 12 gio am/pm (sáng/chieu) `’ ˆ ˙ ˙ u Tên nguoi dùng d chay he vo, ví du teppi ’`’ ¯ã ˆ ’ ` ˙ ˙ ˙ w Tên d ˆ y d ’ cua thu muc làm viec hien thoi (bat d ˆ u tu goc), ví du ¯a ¯u ’ ’ ˆ ˆ `’ ˘ ¯a `’ ´ ´ ` ˆ /home/teppi82/project/l4u ˙ ˙ ˙ ˙ W Thu muc hien thoi (không có d ’ong dan) ’ ˆ `’ ¯u `’ ˆ˜ ˙ ´ ˙ ´ ˆ ’ $ ’ ˆ ˆ ’ ¯u ’ ’’ Ký tu #, neu he vo d ’oc chay boi nguoi dùng root, và ký tu $, neu he vo ’`’ ’ ˆ d ’oc ˙ chay boi ˙nguoi dùng thuong. ’’ ˙ ˙ ` ˙ ˙ ¯u ’ ’`’ ’’ ˙ ˙ nnn Ký tu có mã he tám nnn ’ ˆ ˙ ˙ ’ n Dòng moi (chuyen dòng) ´’ ˆ s Tên he vo ˆ ’ # ´ ˆ˙ `’ ’ So hien thoi cua câu lenh ˆ ˆ ˙ ´ u gach nguoc (backslash) ˙ Da ˆ ’’ [ Sau ký tu này ˙´ t ca các ký tu se không d ’oc in ra. ˙ ’ ta ’ ˆ ’ ˜ ¯u ’ ] Ke ´ t thúc˙chuoi các ký tu không d ’oc in ra.˙ ˆ ˜ ˆ ’ ˙ ¯u ’ ! So thu tu cua lenh hien ˙thoi trong lich su các câu lenh d dùng. ´ ´’ ’ ’ ˆ ˆ ˆ `’ ˙ ’’ ˆ ¯ã ˙ ˙ ˙ ˙ ˙ ´ ’ ˆ ˆ ´ ´’ ’ ’ ˆ So cua lenh (so thu tu cua lenh d ˆ ’ ˆ ˆ’ ¯ang thuc hien trong buoi làm viec hien thoi) có the khác ˆ ˆ `’ ˆ’ voi so ’ ´’ ˆ ´ cua chính nó trong danh sách "lich˙ su các câu lenh", boi vì˙ danh sách còn chua ca ˙ ˙ ˙ ’’ ˙ ˆ ’’ ˙ ´’ ’ nhung câu lenh d d ’oc ghi lai trong tap tin lich su. Sau˙ khi giá tri cua bien d ’oc he vo d c ˜’ ˆ ¯ã ¯u ’ ˆ ˙ ’’ ’ ´ ¯u ’ ˆ ’ ¯o ˆ xong, se xay ra su thay the theo các quy luat ˙ ’’ rong trong bang trên, d ˆ ng thoi còn xay ˙ ˜ ’ ˙ ’ ˙ ´ ˙ ˆ ˙ ˆ mo ˆ ’ ˙ ¯o` `’ ˙ ’ ra ˙ ´ su thay the trong tên ˙ các câu lenh, trong các bieu thuc so hoc, và su chia tu (word splitting). ˙ ’ ˙´ ´ `’ ’ ˆ ˆ ˆ ’ ˆ ’ Chúng ta se nói d´ n nhung su thay the này o duoi.Ví du, sau˙khi thuc hien lenh (vì trong dòng ˙ ˜ ¯eˆ ˜’ ’ ˙ ´ ˆ ’’ ’´’ ’ ˙ ˆ ˆ ˘ ’ ’ ´ ˙ ´ van ban có khoang trong, nên nhat thiet phai có dau ngoac): ´ ’ ´ ˙ ˘ ˙ ˙ ˙ ˆ ˆ ˆ ˆ kênh giao tác ˙ [user/root]$ PS1="[u@h W]$"
    42. 38 Bash ´ ˆ ´ ˜ ˘ ´ ˆ ’’ ˘ ’`’ ˆ ’ thì trong dau nhac se có dau mo ngoac vuông, tên nguoi dùng, ký hieu , tên máy, khoang trang, tên cua thu muc hien thoi (không˙ có d ’ong dan), dau d ´ ˘ ’ ’ ˆ `’ ¯u `’ ˜ ˆ ´ ¯óng ngoa˙c vuông, và ký hieu ˆ ˘ ˆ ´ ˙ làm viec nguoi dùng bình thuong) hay #(neu he vo chay duoi ngu˙` i ˙ ´ ˆ ˙ ’ ˆ ˆ ’ ¯ang $ (neu trên he vo d ˆ ’`’ ’`’ ˆ ’´’ ’o’ dùng root). ˙ ˙ ˙ ˙ 3.6.3 ´ ˆ Bien môi truong PATH ’`’ ˆ ´ ˆ ˜ ˜’ ´ Còn mot bien cung quan trong nua có tên PATH. Bien này d ’a ra danh sách d ’ong dan ˆ ¯u ¯u `’ ˜ ˆ dˆ ˙ ˙ ´ n các thu muc, mà bash se tìm kiem tap tin (truong hop riêng là các tap tin lenh) ´ ¯e ’ ˜ ˆ ˆ ’`’ ’ ˆ ˆ trong truong hop, d ’ong dan d ˆ y d ’ d´ n ta˙ tin không d ’o˙ d ’a ra. Các thu muc trong ’`’ ˙ ’ ¯u `’ ˜ ` ˆ ¯a ¯u ¯e ˆ p ˆ ¯u ’c ¯u ˙ ’ ˙ danh sách này ˙ phân cách nhau boi dau hai cham (:). Theo mac d nh bien PATH chua ’’ ´ ˙ ´ ˙ ˘ ¯i ´ ˙ ´’ ˆ ˆ ˆ ˙ ˙ các thu muc /usr/local/bin, /bin, /usr/bin, /usr/X11R6/bin, tuc là có ´’ ’ ˙ dang: /usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin: ¯ e thêm thu muc D ˆ’ ’ ˙ danh sách này, can thuc hien câu lenh sau: vào ` ˙ ˆ ’ ˆ ˆ ˙ ˙ ˙ kênh giao tác [user]$ PATH=$PATH:new_path ´ ˆ ˆ ’ Khi tìm kiem, he vo "luc loi" các thu muc theo d ’ ´ ¯úng thu tu d liet kê trong bien PATH. ´’ ’ ¯ã ˆ ˆ ’ Mot chú ý nho, có the ¯u ˙ ’ d a˙ vào danh sách này thu muc hien thoi, khi thêm vào bien PATH ˙ ˙ ˙` ˙ ´ ˆ ˆ ’ ’ ˆ ’ ˆ ˙t dau cham (.). Tuy nhiên, d là d `u không khuyên làm voi lý do bao mat: nguoi có ác mo ˆ ´ ´ ˙ ˙ ´ ’ ˆ ˆ ¯ây ¯ieˆ ’ ˆ ’`’ ˙ ´˙ ˆ ˆ’ ¯a ý có the d ˘ t vào thu muc dùng chung mot chuong trình nào d có cùng tên voi mot trong so ’ ˆ ’’ ¯ó, ’ ´ ˆ nhung câu ˆ ˙ lenh thuong˙dùng boi root, nhung thuc hien nhung chuc nang khác hoàn toàn (d ˘ c ’’ ˙ ˙ ˜’ ’`’ ’ ’ ˆ ˜’ ´’ ˘ ¯a biet nguy hiem neu thu muc hien thoi d ´’ng o d˙ u danh sách tìm kiem). ˆ ˙’ ´ ˆ ˆ ’ ˆ `’ ¯u ’’ ¯a ˙ ` ˆ ´ ˆ ˙ ˙ ˙ ˙ 3.6.4 ´ ˆ Bien môi truong IFS ’`’ ´ˆ ¯i ’ ’ ’’ Bien này xác d nh ký tu (cum ký tu) phân cách (Internal Field Separator), su dung trong thao tác phân chia tu˙ngu khi bie˙ d ˆ’i dòng lenh, mà he vo thuc hien truoc khi chay mot câu lenh nào `’ ˜’ ˙ ´ n ¯o ˙ ˆ ˆ ˆ ’ ’ ˆ ’´’ ˙ ˆ ˆ d (xem duoi). Giá tri theo mac d nh cua bien này˙- "<Khoang_trang><Tab><Ký_tu_hàng_moi>". ¯ó ’´’ ˘ ¯i ’˙ ´ˆ ˙ ’ ˙ ˘ ´ ˙ ˙ ’ ˙ ´’ Ne ˙ ´ u thu gõ lenh "echo $IFS", ’’ ˙ ˙ ban se nhan d oc mot ngac nhiên nho. ’ ˙ ˆ ˆ ˜ ˆ ¯u ’ ˆ ’ ˙ ˙ ˙ ˙ ˙ ˙ 3.6.5 ’ ˆ Thu muc hien thoi và thu muc cá nhân `’ ’ ˙ ˙ ˙ ’ ’ ˆ ´ ˆ ’`’ ´’ ’ ´ Tên cua thu muc hien thoi ghi trong bien môi truong voi tên PWD, và giá tri cua bien này thay `’ ˆ dˆ ¯o’i sau moi lan cha˙y chuong trình cd (cung nhu moi lan thay d ˆ’i thu muc hien thoi theo bat ˜ ˆ˙ ˆ ` ’’ ˜ ’ ˆ ˜ ˆ` ¯o ’ ˙ ˆ `’ ´ ˆ ky cách nào, ví du, ˙ qua Midnight Commander). Tuong tu nhu vay tên d `˙ d ’ ˙(gom ca d ong ` ’ ¯u `’ ` ’’ ’ ’ ˆ ¯ay ¯u ˆ ˆ ’ dan) cua thu muc˙cá nhân cua nguoi dùng, chay tien trình d cho, ghi trong bien HOME. ˜ ˆ ’ ’ ’ ’`’ ´ ˆ ˙ ¯ã ˙ ´ ˆ ˙ ˙ 3.6.6 ˆ Câu lenh export ˙ ˆ ’ ˆ ’’ ˆ ˆ ’ ´ Khi he vo chay mot chuong trình hay câu lenh nào d nó (he vo) cung cap cho chúng mot ¯ó, ˆ ˆ ` ˙ ´ n môi truong. De có the cung cap bien môi truong cho tien trình chay tu he vo, ca˙n phan bie ˙ ˙ ’ ’ ´ ˙´ ˙ ´ `’ ˆ ’ ˆ ` ˆ ˆ ’`’ ¯ ˆ ˆ ˆ ˆ ’`’ ˆ ´ gán giá tri cho bien này voi lenh export, tuc là thay vì ´’ ˆ ´’ ˙ ˙ ˆ ˙ ˙ kênh giao tác [user]$ name=value ` can gõ: ˆ
    43. ˆ’ ˆ’ 3.7 Khai trien bieu thuc ´’ 39 kênh giao tác [user]$ export name=value ’`’ ’ ´ ’ ˆ ’’ `’ ˆ ’ ˆ’ ’ ’ ´’ ’ Trong truong hop này, tat ca các chuong trình chay tu he vo (ke ca ban sao thu hai cua ˙ `n truy cap toi các bien d oc gán nhu vay, tuc là su dung giá tri cua ´ ¯u ’ ˙ ˙ ˆ ’ ˜ chính he vo) se có quye ˆ ˆ ´’ ˆ ’ ’ ˆ ´’ ’’ ’ ˙ tên. chúng qua ˙ ˙ ˙ ˙ ˙ 3.7 ˆ’ ˆ’ Khai trien bieu thuc ´’ ˆ ’ ¯o ’ ´ Hay he vo d c các câu lenh nhu the nào? Khi he vo nhan d ’oc mot dòng ˆ ˆ ˆ ’ ˆ ¯u ’ ˆ ˆ ˙ ¯ó ˆ`n ˙ ’c hien, nó (he vo) truoc khi chay câu lenh thu˙ hien viec "phân tích ngu lenh này d ca thu ˆ ˆ ˙’ ’´’ ˆ ’c ˆ ˙ ˆ ˙ ˙ ˜’ pháp" dòng lenh này (giong trong ngôn ngu, phân tích chu ngu˙ vi ngu). ˙ ˆ t trong nhung ˙ ˆ ˙ ˙´ ˆ ˙ ˜’ ˙ ˙’ ˜’, ˙ ˜’ Mo ˜’ ˙ ˙ ˙ ’´’ ’ ’ ’’ ˆ’ ˆ’ ´’ buoc cua su phân tích này là phép mo hay khai trien bieu thuc (expansion). Trong bash có ˙ ’ ˆ’ ˆ’ ´’ bay loai khai trien bieu thuc: ˙ ˆ’ ´ • Khai trien dau ngoac (brace expansion); ˆ ˘ ˙ ´ ´ • Thay the dau ngã (tilde expansion); ˆ ˆ ´ ´ ´ ´ • Phép the các tham bien và bien so; ˆ ˆ ˆ ˆ ´ • Phép the các câu lenh; ˆ ˆ ˙ ´ ´ ’ • Phép the so hoc (thuc hien tu trái sang phai); ˆ ˆ ’ ˆ `’ ˙ ˙ ˙ • Phép chia tu (word splitting); `’ ˆ’ ˜ • Khai trien các mau tên tap tin và thu muc (pathname expansion). ˆ ˆ ’ ˙ ˙ Các thao tác này d ’oc thuc hien theo d ¯u ’ ’ ˆ ¯úng thu tu liet kê trên. Chúng ta se xem xét chúng ´’ ’ ˆ ˜ theo tu tu này. ´’ ’ ˙ ˙ ˙ ˙ ˙ ˙ 3.7.1 ˆ’ ´ˆ Khai trien dau ngoac ˘ ˙ ˆ’ ´ ˆ ˘ ´ˆ ´ ˆ ’ ´ ˆ ` Khai trien dau ngoac tot nhat minh hoa trên ví du. Gia thiet, chúng ta can tao thu muc con ˆ ’ ˙ d hoac thay d ’i nguoi dùng so huu cua vài tap tin cùng mot lúc. Có trong mot thu muc nào ¯ó, ˘ ˙ ˙ ’ ’ ˙ ˆ ˙ ˆ ’ ¯o ˆ ’`’ ’ ˜’ ˆ the thuc˙hien d ˆ˙u này nho các câu lenh sau: ˆ’ ’ ˆ ¯ie ` `’ ˙ ˆ ˙ ˙ ˙ ˙ ˙ 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 truong hop d ˆ u, trong thu muc /usr/src/unikey/ se tao ra các thu muc con ’`’ ’ ¯a ’ ˜ ’ old,new,dist, và ˙ bugs. Trong truong hop thu hai, nguoi dùng so huu cua các tap tin sau ˙ `’ ´’ `’ ’’ ˙ ˜’ ’ ˙ ’ ’ ’ ˆ se thay d ˆ’i (thành root): ˙ ˙ ˜ ¯o • /usr/ucb/ex • /usr/lib/ex?.?
    44. 40 Bash • /usr/ucb/edit • /usr/lib/ex?.? • /usr/ucb/ex • /usr/lib/how_ex • /usr/ucb/edit • /usr/lib/how_ex ´’ ˜ ´’ ˆ ˘ ´ ˆ ˘ ˜ ˜ ´ ˜’ ˆ ` Tuc là voi moi cap dau ngoac se tao ra vài dòng riêng re (so nhung dòng này bang so tu ˘ ´ `’ ˆ na˘ ´ ˘ c) ˘` ˙ ˙ ` ng trong dau ngoa˙ bang cách ghi thêm vào truoc moi tu trong ngoac nhung gì d ´’ng truoc ˜ `’ ˆ ’´’ ˆ ˘ ˜’ ¯u ’´’ ´ ˙ ˜ `’ ´ ˙ ˘ dau ngoac, và ghi thêm vào sau moi tu này nhung gì d ´’ng sau dau ngoac. Mot ví du khác: ˘ ˆ ˆ ˜’ ¯u ˆ ˆ ˙ ˙ ˙’ ´ ˙ ˆ’ ˜ dòng a{d,c,b}e khi khai trien se thu d ’oc ba tu "ade ace abe". Khai trien dau ngoac ¯u ’ `’ ˆ ˆ ˘ d ’oc thuc hien truoc các dang khai trie ’n khác ´ ’ ˙ ˙ trong dòng lenh, hon nua tat ca các ký tu d ˘ c ¯u ’ ’ ˆ ’´’ ˆ ˆ ’ ˜’ ˆ ’ ¯a bie˙t có trong˙dòng lenh, ke˙ca nhung ký tu nam trong dau ngoac, se d ’oc giu không thay d˙ˆ’i ˆ ˙ ˆ ˆ’ ’ ˜’ ’ ˘` ´ ˙ ˘ ˜ ¯u ’ ˜’ ˆ ˙ ¯o ˙ (chúng se d ’oc biên ˙ dich o các buoc phía˙sau). ’’ ˙ ˙ ˜ ¯u ’ ’´’ ˙ ˙ 3.7.2 ´ ´ ˆ ˆ Thay the dau ngã (Tilde Expansion) ´ ˆ ´ ` ’ `’ ˘ ¯a ´’ ’ ´ ˆ ´ ’ ˆ ’ ¯u ’´’ ´ Neu nhu tu bat d ˆ u voi ký tu dau ngã (’∼’), tat ca các ký tu d ´’ng truoc dau gach chéo d ˆ u tiên ˆ ¯a` (hay ta ’ ´ t ca các ký tu neu nhu không có dau gach chéo) se˙d ’oc hieu là tên nguoi dùng (login ˆ ’ ˆ´ ˙ ’ ´ ˆ ˜ ¯u ’ ˆ ’ ˙ ` ’’ ´ ˙ ˜ ´’˙ ´ ˙ name). Neu nhu tên này là mot dòng rong (tuc là dau gach chéo d ´’ng ngay phía sau dau ngã), ´ ˆ ’ ˆ ˆ ˆ ¯u ˆ ´ thì dau ngã se d ’oc thay the bo ´ ’˙ ’ i giá tri cua bien HOME. Và neu giá tri cua bien HOME không ’ ´ ˙ ´ ’ ´ ˆ ˜ ¯u ’ ˆ ˆ ˆ ˆ d ’oc gán thì da ¯u ’ ´ u ngã se d ’oc thay the ˙boi d ’ong dan d ˆ u d ’ d´ n thu ˙muc cá nhân cua nguoi ˆ ˙ ˜ ¯u ’ ´ ’’ ¯u `’ ˆ ˜ ¯a ¯u ¯e ˆ ` ˆ ’ ’ ’`’ ˙ mà d chay he vo. Neu nhu ngay sau dau ngã (và truoc dau gach ˙ ˙ dùng, ¯ã ˆ ’ ´ ˆ ’ ´ˆ ’´’ ´ ˆ chéo) là mot tu trùng ˆ `’ voi tên cua mot˙ngu˙’i dùng hop pháp, thì dau ngã cong voi tên nguoi dùng d ’oc thay the boi ´’ ’ ˆ ’o` ’ ´ ˆ ˆ ´’ ˙ ’`’ ¯u ’ ˙ ´ ’’ ˆ ˜ ¯a d ’ong dan d ˆ y ¯u ¯e `’ `˙ d ’ d´ n thu muc cá nhân cua nguoi ˙ ˙ ’ ´ `’ dùng này. Neu nhu tu d ´’ng `’ ¯u ˙ sau dau ngã ´ ¯u ˆ ˆ ’ ’ ˆ ’ ˆ ˙` không phai là tên cua mot nguoi dùng (và không rong), thì tu không bi thay d ˆ’i. Neu nhu sau ˜ ’ ’ ˆ ’’ ˆ `’ ¯o ´ ˆ ’ da ˙ ´ ’’ ` ¯u ’ ˙ ’ ´ u ngã là ’+’, hay ký hieu này se d ’oc thay the boi tên d ˆ u d ’ cua thu muc hien thoi (tuc là `’ ´’ ˆ ˆ ˜ ¯u ’ ˆ ¯a ˆ giá tri cua bien PWD). Ne˙u dung sau dau ngã là ’-’, thì thay the giá tri cua bien ˙ ’ ´ ˆ ´ ´’ ˆ ˙´ ˆ ´ ˆ ’ ˙ ´ OLDPWD (thu ˆ ’ ˙ muc "cu"). ˙ ˜ ˙ 3.7.3 ´ ˆ ´ ˆ ´ ´ ˆ ˆ Phép the các tham bien và bien so ’ ¯u ’ ’’ ´ ´ ´ Ký tu $ d ’oc su dung cho các thao tác the tham bien, the các câu lenh và the các bieu thuc ˆ ˆ ˆ ˆ ´ ˆ ˆ’ ´’ ´ hoc. Bie˙u thuc ˙hay tên d ´’ng sau $ có the d ’oc d ’a vào ngoac, ˙ so ˆ ˙ ˆ’ ´’ ¯u ˆ’ ¯u ’ ¯u ˘ không nha ´ t thiet, nhung ˆ ´ ˆ ’ rat tien, vì dau ngoac phân cách bieu thuc voi các tu hay ký tu˙ d ´’ng sau. Nhu vay, d ˆ’ goi ´ ˙ˆ ˆ ´ ˆ ˘ ˆ’ ´’ ´’ ˙ `’ ’ ¯u ’ ˆ ¯e giá tri cua tham bien nói chung cung nhu bien môi truong nói riêng trong dòng lenh, can d˙ t ˙ ’ ´˙ ˆ ˜ ’ ´ ˆ ’`’ ˙ ˆ ˙ ` ˘ ˆ ¯a bie ˙ ´ ’u thuc dang $parameter. Dau ngoac chı can thiet, neu tên cua tham bien có chua vài chu ´ ˘ ’ ˆ ` ´ ´ ’ ´ ˙´ ˙ ˆ ’ ˆ ˆ ˆ ˆ ’ ˜’ so, hoac khi theo sau tên còn có các ˙ tu khác, mà chúng ta không muon he vo "hieu lam" ´ ˆ ˘ ˙ ký ’ ´ ˆ ’ ˆ ˆ’ ˆ ` chúng˙là mot phan cua tên tham bien. Trong tat ca các giá tri cua bien so xay ˙ phép the dau ˆ ` ˆ ’ ´ ˆ ˙ ´ ’ ˆ ’ ´ ´ ’ ra ˆ ˆ ´ ´ ˆ ˆ ngã (∼), su ˙khai trien tham bien và bien so, phép the các câu lenh, phép the các bieu thuc so ’ ´ ´ ´ ´ ˙ ´ ’ ´’ ´ ’ ˆ ˆ ˆ ˆ ˆ ˆ ˆ ˆ ˆ ˜ nhu ’ ˜ ˆ ’´’ ’ ˙ ` hoc, cung ˙ ’ xóa các ký tu trích dan (xem duoi). Su phân chia tu không xay ra, tru truong ’ ’ `’ ’`’ hop "$" (loi giai thích xem ˙o bang so 3). Su khai trien các mau tên tap tin và thu muc cung ˙ ’ `’ ’ ’’ ’ ´ ˆ ’ ˙ ˆ’ ˜ ˆ ˆ ’ ˜ ˙ không d ’oc thuc hien. ˙ ˙ ˙ ¯u ’ ’ ˆ ˙ ˙ ˙
    45. ˆ’ ˆ’ 3.7 Khai trien bieu thuc ´’ 41 3.7.4 ´ ˆ ˆ Phép the các câu lenh ˙ ´ ´ ’ ˜ ’ ` ’’ ˆ Phép the các câu lenh là mot công cu rat mang cua bash. Ý nghıa cua nó nam o cho thay the ˆ ˆ ˆ ˆ ˘ ˜ ´ ˆ tên các câu lenh bo ´ ˙ i ket qua thuc hien cua chúng. Có hai dang phép the lenh: $(command) ’’ ˆ ˙ ’ ’ ˆ ˙ ’ ˙ ´ ˆ ˆ ˆ và ‘command‘ Neu ung dung dang thu hai (chú ý o d ˙su dung dau "ngoac d ’n nguoc", ˙ ´ ´’ ˆ ˙ ˙ ´’ ’’ ¯ây ’’ ´ ˙ ˆ ˘ ¯o ’’ phím cho nó thuong nam trên phím Tab), thì dau gach nguoc () ˙’ trong dau ngoac se có chuc ’`’ ` ˘ ˙ ˙ ´ ˆ ’’ ’ o ´ ˆ ˙ ˘ ˜ ˙´ ’ nang nhu mot ký tu thông thuong, tru truong hop,˙ khi d ´’ng sau nó (dau gach nguoc) là mot ˘ ’ ˆ ’ ’`’ `’ ’`’ ’ ¯u ˙ ´ˆ ˙ ’’ ˆ $, ‘, hay mot˙ . Neu nhu su dung dang $(command), thì tat ca các ký tu d ´’ng trong ˙ngoac ta˙o ˆ ´˙ ˆ ’ ’’ ˙ ´ ’ ˆ ’ ¯u ˙ ˘ thành mot ˙ lenh, không có ký tu nào có ý nghıa d ˘ c biet. Neu phép the câu lenh xay ˙ ˆ câu ˆ ˙ ˙ ’ ˜ ¯a ˆ ´ ˆ ˙ ´ ˆ ˆ ˙’ ra phía trong˙ ngoac kép, thì trong ket qua cua phép the se˙không thuc hien phép phân˙ chia tu và ˘ ˙ ´ ˙ ’ ’ ´ ˜ ˙ `’ ˆ ˆ ’ ˆ su khai trie’n ma˙˜u tên tap tin và thu muc. ˙ ˙ ’ ˆ ˆ ˆ ’ ˙ ˙ ˙ 3.7.5 ´ ´ ˆ ˆ Phép the so hoc (Arithmetic Expansion) ˙ ´ ´ ’ ˆ’ ´’ ´ ´ Phép the so hoc cho phép tính giá tri cua mot bieu thuc so hoc và thay the nó (bieu thuc) ˆ ˆ ˆ ˆ ˆ ˆ’ ´’ bo ˆ ´ ˙ d oc. Có hai dang phép the so˙hoc: $[expression] ((expression)) ’’i ket qua thu ¯u ’ ’ ˙ ´ ´ ˙ ’ ˆ ˆ Trong d expression d ’oc˙ hieu (d ’oc bash d c) nhu khi d ´’ng trong ngoac kép, nhung ¯ó ˙ ¯u ’ ˆ’ ¯u ’ ˙ ¯o ’ ¯u ˘ ’ nhung da ´ u ngoac kép o trong ˘ ’’ ˙ expression lai d ˙oc d c nhu mot ký tu thuong. Phía trong ˙ ˙ ˜’ ˆ ¯u ’ ¯o ’ ’ ˆ ’ ’`’ expression ˙có thuc hien các phép the tham bien và the câu le˙ Cú pháp cua bieu thuc ’ ˆ ´ ˆ ˙ ´˙ ˙ ´ ˆ ˆ ˆ nh. ˙ ’ ˆ’ ´’ expression tuong ’ ’ ˙ tu nhu cú pháp cua bieu thuc so hoc cua ngôn ngu C, cu the hon ve van ˙ ’ ’ ´’ ´ ’ ˙ ’ ’ ˆ ´ ` ˆ ’’ ˆ ˆ ˜’ ˆ ’ ¯o ˙ ˙ ` này có the d c trong phan ARITHMETIC EVALUATION cua trang man cua bash. Ví dˆ ` ’ ˙ ’ ¯e ˆ ˆ du, câu lenh ˙ ˆ ˙ ˙ kênh giao tác [user]$ echo $((2 + 3 * 5)) ´ ’ ` ´ ˆ’ ´’ ˜ cho ket qua bang "17". Neu bieu thuc không chính xác, bash se d ’a ra thông báo loi. ˆ ˘ ˆ ˜ ¯u ˆ 3.7.6 Phân chia tu (word splitting) `’ ´ ´ ´ ˆ ´ ˆ’ ´’ ´ Sau khi thuc hien xong các phép the tham bien, the lenh, và the các bieu thuc so hoc, he vo lai ’ ˆ ˆ ˆ ˆ ˆ ˆ ˆ ’ ˙ ˙lenh mot lan nua (nhung o dang thu˙ d oc sau các phép the nói trên) và thuc ` ˜’ ´ ˙ ˙ ˙ phân tích dòng ˆ ˆ ˆ ’ ’’ ¯u ’ ’ ˆ ’ ˙ tu ˙ hien viec phân chia `’ (word splitting). Thao ˙ tác này nam o cho, he vo tìm trong dòng lenh ˙ ˘ ˜ ` ’’ ˆ ˆ ’ ˙ ˆ ˆ ˆ tat˙ ca các ký tu phân chia, xác d nh boi bien IFS (xem trên), và nho d chia nho dòng lenh ´ ’ ˙ ˆ ’ ¯i ’’ ´ ˆ ˙` ’ ¯ó ’ ˙ ˆ ˙ re trong các cho tuong ung. Neu giá tri cua IFS bang mot dòng trong,˙thì thành các tu riêng ˜ `’ ˙˜ ´ ’ ` ´ ˆ ’ ’ ´’ ˆ ˘ ˆ ˆ ’ ´ ˙ ˙ viec phân chia tu se không xay ra. Neu trong dòng lenh không thuc hien phép the nào trong `’ ˜ ´ ˆ ˆ ˆ ’ ˆ ˆ ˙ ´ ˆ’ các phép the ke trên, thì phân chia tu cung không xay ra. `’ ˜ ’˙ ˙ ˙ ˆ 3.7.7 ˆ’ ˜ ˆ ˆ Khai trien các mau tên tap tin và thu muc (Pathname Expansion) ’ ˙ ˙ Phép the tên d ’ong dan và tap tin (Pathname expansion) su dung d ˆ’ chı nho mot mau nho ´ˆ ¯u `’ ˜ ˆ ˆ ’’ ¯e ’ `’ ˆ ˜ ˆ ’ gon mà có the ’ ˙ ˙˜ ’ chı ra vài tap tin (hay thu muc), tuong ung voi mau này. Sau khi phân chia tu, ˙ ˆ ˆ ’ ’ ’ ´’ ´’ ˆ `’ ˙ neu nhu không d a ra tùy chon -f, thì bash se tìm kiem trong tung tu cua dòng lenh các và ˆ ´ ˙ ˙ ´ `’ `’ ’ ’ ¯u’ ˜ ˆ ˆ ’ ´ ˆ ´˙ `’ ´’ ˆ ký tu *, ?, và [. Neu tìm thay tu voi mot hay vài ký tu nhu vay, thì tu này se d ’˙’c xem ˆ ’ ’ ˆ `’ ˜ ¯uo nhu ˙ ˆ t mau, và can thay the boi các tu trong danh sách d˙ ’ong dan, tuong ung voi mau này. ’ mo ˆ ˜ ` ˆ ´ ’’ ˆ `’ ˙ ¯u `’ ˙ ˜ ˆ ’ ’ ´’ ´’ ˙˜ ˆ ´ ˙ ´ ´’ ´’ ˆ ˜ ´ Neu nhu không tìm thay tên tuong ung voi mau, và bien nullglob không d ’oc d ’a ra, thì tu `’ ˆ ’ ˆ ’’ ˆ ¯u ’ ¯u se không thay d ˆ ´’ ˜ ¯o’i, tuc là các ký tu d ˘ c biet bi mat giá tri và hieu nhu các ký˙tu thuong. Neu ’ ¯a ˆ ´ ˆ ˆ’ ’ ’ ’`’ ´ ˆ nhu bie ˙ `˙ ˙˜ ˙ ˙´ ˜ ´ n này d ’oc xác d nh, mà d ’ong dan tuong ung voi mau không tìm thay, thì tu se bi ˙ ´ ’ ˆ ¯u ’ ¯i ¯u ’ ˆ ’ ’ ´’ ’ ˆ ˆ `’ ˜ xóa khoi dòng le˙ Các ˙ tu dùng d ˆ’ tao mau có các giá tri trong bang 3.4 ’ ˆ nh. ký ’ ¯e ˜ ˆ ’ ˙ ˙ ˙ ˙ ˙
    46. 42 Bash ’ ˜ Bang 3.4: Các ký tu tao mau ’ ˆ Ký tu Quy luat thay the ´ ˙ ˙ ’ ˆ ˆ ˙ ˙ * ´’ ´ ` ˆ’ ’ Tuong ung voi bat ky dòng ký tu nào, ke ca dòng rong. Ví du, v*.txt ’ ’ ´’ ˆ ’ ˜ ˆ se d ’oc thay the ˙ ´ boi vnoss.txt, vnlinux.txt và vntex.txt ’’ ˙ ˜ ¯u ’ ˆ ´ ˙ ˆ ˆ ` ˆ ˜ ’ ’ ´’ ´ ’ (neu các tap tin này ton tai), và *.png se tuong ung tat ca các tap tin có ˆ ˆ pha ˙ ˙ ` `n mo rong png (tap tin d ˆ hoa hai chieu). ’’ ˆ ` ˙ ˆ ˆ ¯o ˆ ˙ ´ ˙ ˙ ˜ ? Tuong ung bat ký mot ký tu d ’n nào. Ví du, mau ’’ ´’ ˆ ˆ ’ ¯o ˆ file?.txt se d ’oc ˙ thaythe ˙ boi các tên tep sau ´ ’’ ˙ ˜ ¯u ’ ˆ ˆ file1.txt, file2.txt, file3.txt, ˙ và ˙ filea.txt ´ ˆ ` (neu chúng ton tai), nhung file23.txt thì không. ˆ ’ ´ ˙` ˆ ’ ´ [...] Tuong ung bat ky ký tu nào trong so các ký tu nam trong dau ngoac ’ ’ ´’ ˆ ’ ˘ ` ´ ˆ ˘ ˙ ´ u ˙ `’ (-), ví du c-f, bieu ˙ vuông này. Cap ký tu, phân cách nhau boi da tru ˘ ’ ’’ ˆ ˆ’ ˙ ˙ thi mot dãy; bat ký ký tu nào, theo tu d ˆ’n, nam giua hai ký tu này, ke ca ˙ ˆ ´ ˆ ’ `’ ¯ie ` ˘ ˜’ ’ ˆ’ ’ ˙ ký tu tao ra dãy (c ˙ f trong ví du) cung tuong ung vo˙ mau. Neu hai ˙ và ´’i ˆ ˜ ´ ’ ˜ ’ ’ ´’ ˆ `˙ tiên trong ngoac vuông là hay ˆ thì mau (o vi trí này) se tuong ký tu d ˆ u ’ ¯a ˙ ˘ ˙, ˜ ’’ ˆ ˜ ’’ ´’ ´ ’ˆ ’ ˙ ung ˙tat ca các ký tu, không d ’oc chı ra trong ngo ¯u ’ ’ ˙ ˙ ˙ ˆ˜ ˆ ´ ˆ ’’ Mau tên tap tin rat thuong xuyên su dung trong dòng lenh có chua ls. Hãy tuong tuong ’`’ ˆ ´’ ’’’ ’’ là ban muo ´ n xem thông tin cua mot thu muc, trong d có ˙ ´’a mot so luong lon các tap˙tin ˆ ˙ ’ ˆ ’ ˙ ¯ó chu ˆ ˆ ´ ’ ’ ´’ ˆ ˙ ’ ˙ ˙´ ˙ ˙ D ˆ’ ˙ d ’ các dang, ví du, tap tin hình anh, phim voi dang gif, jpeg, avi, v.v. . . . ¯ e thu d ’oc thông ¯u ˆ ’ ¯u ’ tin chı cua tap tin˙dang jpeg, có the dùng câu lenh ˙ ’ ’ ˆ ˙ ˆ’ ˆ ˙ ˙ ˙ ˙ ˙ kênh giao tác [user]$ ls *.jpg ´ ` ’ ´ ˆ ˆ ` ´ ˜’ ´ Neu trong thu muc có nhieu tap tin, mà tên cua chúng là các so gom bon chu so (thu muc ˆ ’ ˆ ˆ ˆ ˆ ’ ˙ thì lenh sau chı d a ra danh sách các tap tin có so tu 0500 d´ n 0999: /proc là mot ví du+), ˙ ’ ¯u ´ `’ ˙ ˆ ˆ ’ ˆ ˆ ¯e ˆ ˙ ˙ ˙ ˙ kênh giao tác [user]$ ls -l 0[5-9]?? 3.7.8 ˆ Xóa các ký tu dac biet ’ ¯˘ ˙ ˙ ˙ ´ ’ ˆ ´ Sau khi làm xong tat ca các phép the, các ký tu , ‘ và " còn lai trong dòng lenh (chúng ˆ ’ ˆ d ’oc su dung d ˆ’ huy bo giá tri d ˘ c biet cua các˙ký tu khác) se bi xóa het. ¯u ’ ’’ ¯e ’ ’ ¯a ˆ ’ ’ ˜ ˙ ´ ˆ ˙ ˙ ˙ ˙ ˙ ˙ ˙ ˙ 3.8 ˆ ˜’ ˆ Shell - mot ngôn ngu lap trình ˙ ˙ Nhu d nói o trên, d ˆ’ có the xây dung bat ky giai thuat nào, cung can có các toán tu kiem tra ’ ¯ã ’’ ¯e ˆ’ ’ ´ ` ’ ˆ ˆ ˜ ` ˆ ’’ ˆ’ ` ˆ ’ d ˆ u kien. He vo bash ho ’ ¯ie ˆ ˜ tro các˙ toán tu lua chon if...then...else và case, cung ˆ ’’ ’ ˙ ˜ nhu các ˙ toán˙ tu vòng lap for, while, ˙until, nho d nó (bash) tro thành mot ngôn ’’ ˘ ˙ ˙ `’ ¯ó ’’ ’ ˆ ngu lap trình manh. ˙ ˜’ ˆ ˙ ˙ ˙ 3.8.1 ’’ Toàn tu if và test (hoac [ ]) ˘ ˙ ´ ’ ` ’’ ¯ie Cau trúc cua toán tu d ˆ u kien có dang thu gon nhu sau: if list1 then list2 else list3 ˆ ˆ ’ ˙ ˙ fi trong d list1, list2, và list3 là ˙ chuoi câu lenh, phân cách nhau boi dau các ˜ ’’ ´ ¯ó, ˆ ˆ ˆ ˙
    47. ˆ ˜’ ˆ 3.8 Shell - mot ngôn ngu lap trình 43 ˙ ˙ ’ ´ ’’ ˆ ´ ´ ˆ’ phay và ket thúc boi mot dau cham phay hay ký tu dòng moi. Ngoài ra, các chuoi này có the ˆ ˆ ˆ ’ ´’ ˆ˜ ˆ’ ˙ ˙c nhon: list. Toán tu if kiem tra giá tri d oc tra lai boi các câu lenh d ’oc d ’a vào dau ngoa ¯u ’ ¯u ´ ˆ ˘ ’’ ˆ’ ¯u ’ ’ ’ ’’ ˆ ˙ ´ ˙ ˙ có vài câu lenh, thì kiem tra giá tri d oc ˙tra lai boi câu lenh ’ ˙ ˙ ˙ tu list1. Neu trong danh sách `’ ˆ ˆ ˆ ¯u ’ ’ ’ ’’ ˆ cuo ´ i cùng cua danh sách. Neu giá tri này bang 0, thì se thuc hien˙ các˙ lenh tu list2; còn ˆ ’ ´ ˆ ˙ ` ˘ ˜ ’ ˆ ˆ ˙ `’ ˙ neu giá tri này khác không, thì se thuc hien nhung lenh tu ˙list3. Giá˙ tri d ’oc tra lai boi ´ ˆ ˙ ˜ ’ ˆ ˜’ ˆ `’ ˙ ¯u ’ ’ ’’ toán tu if ’’ ˙ nhu vay, trùng voi giá tri mà chuoi lenh thuc hien (list2 hoac list3) d˙ a ra. ´’ ˙ ˙ ˜ ˙ ˘ ˙ ˙ ’ ˆ ˆ ˆ ’ ˆ ¯u’ Dang day du cua˙ lenh if nhu sau: ˙ ¯ ` ˆ ¯’ ’ ˆ ’ ˙ ˙ ˙ ˙ ˙ if list then list [ elif list then list ] ... [ else list ] fi ˙ ’’ ¯ây ´ ˆ ’ ˜ ˜’ ` (o d dau ngoac vuông chı có nghıa là, nhung gì nam trong nó, ngoac vuông, không nhat ˘ ˘ ˘ ´ ˆ ˙ thuc d ´ ng sau if hay elif thuong là câu lenh test, mà có the d oc ˙ ´ ˆ ’ thiet phai có). Bieu ´’ ¯u ˆ’ ’ ’`’ ˆ ˆ’ ¯u ’ ’ ˙ ˙ ˆ’ ’’ ´ bieu thi boi dau ngoac vuông [ ]. Lenh test thuc hien phép tính mot bieu thuc nào d và ˆ ˘ ˆ ’ ˆ ˆ ˆ’ ´’ ¯ó, tra lai giá tri 0, neu bieu thuc là d ˙ và 1 trong truo˙ hop nguoc lai. Bieu thuc d ’oc d ’a ’ ˙ ´ ˙ ˆ’ ˆ ´’ ¯úng, ˙ ` ng ’’ ’ ’’ ˙ ˆ’ ´’ ¯u ’ ¯u ˙ ong trình test nhu mot tham so cua chuong trình. ˙ toi chu ’ ´’ ˙ ´ ’ Thay vì ˙ gõ˙ ˙ ’ ’ ˆ ˆ ’’ test expression ˙ ˆ’ ¯u ˆ’ ´’ có the d ’a bieu thuc expression vào ngoac vuông: ˘ [ expression ] ˙ ˆ` ` ˘ ¯ó ’ ’ Can chú ý rang, test và [ d là hai tên cua cua cùng mot chuong trình, chu không phai ˆ ’’ ´’ ’ ´ ` ˙ cú pháp cua [ d hoi phai có ¯ó ’ ˆ ’ là mot phép bien hóa than thông nào d cua he vo bash (chı là ˆ ˆ ˆ ’ ’ ¯òi ’ ’ ´u d ˙ da ¯óng ngoac). Và cung ca ˘ ` ’’ ˙ ˆ ’˜ `n chú ý rang o cho cua test trong cau trúc if có the su dung ˘ ´ ’ ’’ ˆ ˜ ˆ ˆ ˆ bat ky chuong˙ trình nào. ¯ e ket thúc muc này, chúng ta d ’a ra ví du su dung if: ´ ` ˆ ’’ D ˆ’ ´ ˆ ¯u ’’ ˙ ˙ ˙ ˙ kênh giao tác if [ -x /usr/bin/unicode_start ] ; then unicode_start else echo "hello world" fi ` ’’ ` Ve toán tu test (hay [...]) can d sâu hon. ˆ ˆ ¯i ’ 3.8.2 ’’ ¯ˆ` ˆ ’ ˆ’ Toán tu test và dieu kien cua bieu thuc ´’ ˙ ˆ’ Bieu thuc d ˆ u kien, su dung trong toán tu test, d ’oc xây dung trên co so kie’m tra thuoc ` ´’ ¯ie ˆ ’’ ’’ ¯u ’ ’ ’ ’’ ˆ ˆ ˙ các dòng và các so sánh so hoc thông thuong. Bieu thuc phuc tap hon ˙ ´ ˙ ˙` ’ ˙ tính tap tin, so sánh ˆ ˆ ’’ ˆ ´’ ´’ ’ ˙ ˙ ˙ ¯u ’ ¯o ˜’ ’ ’’ d ’oc tao ra tu các thao tác d ’n và kép sau ("nhung viên gach co so"): `’ ˙ ˙ ˙ • -a file D ´ ˆ ˆ ` ¯ úng neu tap tin có tên file ton tai. ˆ ˙ ˙ • -b file ´ ˆ ` ˆ ˆ ˆ ´ ˆ ´ ¯ úng neu file ton tai, và là mot tap tin thiet bi khoi (block device) d ˘ c biet. D ˆ ¯a ˆ ˙ ˙ ˙ ˙ ˙ ˙ • -c file ´ ˆ ` ˆ ˆ ˆ ´ ¯ úng neu file ton tai, và là mot tap tin thiet bi ký tu (charater device) d ˘ c biet. D ˆ ’ ¯a ˆ ˙ ˙ ˙ ˙ ˙ ˙ ˙ • -d file ´ ˆ ` ¯ úng neu file ton tai và là mot thu muc. D ˆ ˆ ’ ˙ ˙ ˙ • -e file D ´ ˆ ˆ ` ¯ úng neu tap tin có tên file ton tai. ˆ ˙ ˙
    48. 44 Bash • -f file ´ ˆ ˆ ` ¯ úng neu tap tin có tên file ton tai và là mot tap tin thông thuong. D ˆ ˆ ˆ ’`’ ˙ ˙ ˙ ˙ • -g file ¯ úng neu tap tin có tên file ton tai và d ’oc d ˘ t bit thay d ˆ’i nhóm. D ´ ˆ ˆ ˙ ` ˆ ˙ ¯u ’ ¯a ˙ ˙ ¯o • -h file hay -L file ´ ˆ ` ´ ˆ ˆ ` ´ ’’ ¯ úng neu tap tin có tên file ton tai và là liên ket mem (liên ket tuong trung). D ˆ ˆ ˆ ’ ˙ ˙ ˙ • -k file D ´ ˆ ˆ ` ¯ úng neu tap tin có tên file ton tai và d ’oc d ˘ t bit sticky. ˆ ¯u ’ ¯a ˙ ˙ ˙ ˙ • -p file ´ ˆ ` ’ ˆ ´ ¯ úng neu tap tin có tên file ton tai và là tên cua mot ong (kênh FIFO). D ˆ ˆ ˆ ˙ ˙ ˙ • -p file ´ ˆ ` ’ ˆ ´ ¯ úng neu tap tin có tên file ton tai và là tên cua mot ong (kênh FIFO). D ˆ ˆ ˆ ˙ ˙ ˙ • -r file D ´ ˆ ˆ ` ˆ ` ¯ úng neu tap tin có tên file ton tai và có quyen d ˙ c. ˆ ¯o ˙ ˙ • -s file D ´ ˆ ˆ ` ¯ úng neu tap tin có tên file ton tai và kích thuoc lon hon không. ˆ ’´’ ´’ ’ ˙ ˙ • -t fd D ´ ˆ ˆ ’ ’ ˆ ’’ ’ ¯ úng neu bo mô ta cua tap tin (fd) mo và chı lên terminal. ˙ ˙ • -u file ¯ úng neu tap tin có tên file ton tai và d ’oc d ˘ t bit thay d ˆ’i nguoi dùng. D ´ ˆ ˆ ˙ ` ˆ ˙ ¯u ’ ¯a ˙ ˙ ¯o ’` ’ • -w file D ´ ˆ ˆ ` ˆ ` ¯ úng neu tap tin có tên file ton tai và có quyen ghi. ˆ ˙ ˙ • -x file D ´ ˆ ˆ ` ˆ ` ¯ úng neu tap tin có tên file ton tai và có quyen thuc thi. ˆ ’ ˙ ˙ ˙ • -0 file D ´ ˆ ˆ ’ ’’ ˜’ ’ ¯ úng, neu tap tin có tên file và chu so huu cua nó là nguoi dùng mà ID có hieu luc ’`’ ˆ ’ chı d´ n. ’ ¯e ˙ ˙ ˙ ˆ • -G file D ´ ˆ ˆ ` ˆ ˆ ˆ ` ¯i ’’ ¯ úng, neu tap tin có tên file ton tai và thuoc ve nhóm, xác d˙nh boi ID nhóm có hieu ˆ luc. ˙ ˙ ˙ ˙ ’ ˙ • -S file D ´ ˆ ˆ ` ¯ úng, neu tap tin có tên file ton tai và là socket. ˆ ˙ ˙ • -N file ¯ úng, neu tap tin có tên file ton tai và thay d ˆ’i tu lan d ’oc d ˙ c cuoi cùng. D ´ ˆ ˆ ˙ ` ˆ ˙ ` ¯o `’ ˆ ¯u ’ ¯o ˙ ´ ˆ • file1 -nt file2 ¯ úng, neu tap tin file1 có thoi gian sua d ˆ’i muon hon file2. D ´ ˆ ˆ ˙ ` ’ ’’ ¯o ˆ ˙ ’
    49. ˆ ˜’ ˆ 3.8 Shell - mot ngôn ngu lap trình 45 ˙ ˙ • file1 -ot file2 ´ ˆ ˆ ’ ’ ’’ ’ ¯ úng, neu tap tin file1 "già" hon file1 (truong hop nguoc lai cua truong hop trên). D ’`’ ’`’ ’ ˙ ˙ ˙ ˙ ˙ • file1 -ef file2 ´ ˆ ˆ ´ ´ ’ ´ ’ ¯ úng, neu tap tin file1 và file2 có cùng mot so thiet bi và chı so mô ta inode. D ˆ ˆ ˆ ˆ ˙ ˙ ˙ • -o optname ´ ’ ˆ ’ ¯u ’ ´ ¯ úng, neu tùy chon optname cua he vo d ’oc kích hoat. Chi tiet xin xem trên trang D ˆ ˆ man bash. ˙ ˙ ˙ ˙ • -z string ´ ¯o ’ ˜ ` ¯ úng, neu d ˆ dài cua chuoi string bang không. D ˆ ˆ ˘ ˙ • -n string ´ ¯o ’ ˜ ¯ úng, neu d ˆ dài cua chuoi khác không. D ˆ ˆ ˙ • string1 == string2 D ´ ˆ ˜ ˆ ˆ’ ` ¯ úng, neu hai chuoi trùng nhau. Có the thay hai == bang mot =. ˘ ˆ ˙ • string1 !== string2 D ´ ˆ ˜ ¯ úng, neu hai chuoi không trùng nhau. ˆ • string1 < string2 ¯ úng, neu chuoi string1, theo tu d ˆ’n, d ´’ng truoc chuoi string2 (d´ i voi ngôn D ´ ˆ ˜ ˆ `’ ¯ie ¯u ’´’ ˜ ˆ ¯o ´’ ˆ ngu hien thoi). ˜’ ˆ `’ ˙ • string1 > string2 ¯ úng, neu chuoi string1, theo tu d ˆ’n, d ´’ng sau chuoi string2 (d´ i voi ngôn ngu D ´ˆ ˜ ˆ `’ ¯ie ¯u ˜ ˆ ¯o ´’ ˆ ˜’ hien thoi). ˆ `’ ˙ • arg1 OP arg2 ’’ ¯ây ´ ` ` O d OP là mot trong các phép so sánh so hoc: -eq (bang), -ne (khác, không bang), ˆ ˆ ˘ ˘ ’ ’ -lt (nho hon),˙ -le (nho hon hoac bang), -gt (lon hon), -ge (lon hon hoac bang). ’ ’ ˘ ˘ ` ˙ ´’ ’ ´’ ’ ˘ ˘` O cho các tham so arg1 và arg2 có˙ the su dung các so nguyên (âm hoac duong). ’’ ˆ ˜ ´ ˆ ˆ’ ’’ ´ ˆ ˘ ’’ ˙ ˙ ˙ `’ ˆ’ ` ´’ ¯ie ˆ ’ ’ ˆ’ ’ ˆ’ Tu các bieu thuc d ˆ u kien co ban này có the xây dung các bieu thuc phuc tap theo ý ´’ ´’ ´ ˙ thuong PHU DINH, VÀ (cong) và HOAC: muon nho các phép lôgíc thông ’`’ `’ ’ ˙ ˘ ˙ ˆ ¯ ˙ ˆ ˙ ˙ • !(expression) ’ ¯i D ´ ˆ’ ´’ Phép phu d nh. ¯ úng, neu bieu thuc sai. ˆ ˙ • expression1 -a expression2 ´ ’ ˆ’ ´’ ¯e ¯úng. ` Phép cong lôgic AND. ¯ úng neu ca hai bieu thuc d ˆ u d ˆ D ˆ ˙ • expression1 -o expression2 ´ ˆ ˆ’ ´’ ¯úng. Phép lôgíc hoac OR. ¯ úng neu mot trong hai bieu thuc d ˘ D ˆ ˙ ˙
    50. 46 Bash 3.8.3 ’’ Toán tu case ’ ’’ Dang cua toán tu case nhu sau: ’ ˙ case word in [ [(] pattern [ | pattern ] ... ) list ;; ] ...+ esac ` ˆ’ `’ ˜ Câu lenh case d ˆ u tiên khai trien tu word, và so sánh nó (word) voi moi tu trong mau ˆ ¯a ´’ ˆ `’ ˜ ˆ ˙ theo thu tu. Sau khi tìm thay su trùng nhau d `u tiên thì dung viec so sánh lai, và ´’ ’ ´ `’ pattern ˆ ’ ¯a ˆ ˆ ˙ ˙ ˜ ´ ˙’ ’’ ˙ ’’ thuc hien danh sách list các câu lenh d ´’ng sau mau d tìm thay. Giá tri tra lai boi toán tu ’ ˆ ˆ ¯u ˆ ¯ã ˆ này, bang 0, neu không tìm thay su trùng nhau nào. Trong truong hop nguoc lai,˙ tra lai giá tri ˙ ˘˙ ` ´ ˆ ´ ˆ ’ ˙ ’`’ ’ ˙ ’’ ’ mà câu lenh cuo ´ i cùng trong danh˙ sách list d a ra. Ví du su dung toán tu case sau lay tu ’’ ˙ ˙’ ˙ ˙ ´ ` ˙ ˆ ˆ ¯u’ ’ ˆ ’ ˙ script /etc/rc.d/rc.sysinit (FreeBSD-style): ˙ ˙ kênh giao tác case "$UTC" in yes|true) CLOCKFLAGS="$CLOCKFLAGS -u"; CLOCKDEF="$CLOCKDEF (utc)"; ;; no|false) CLOCKFLAGS="$CLOCKFLAGS --localtime"; CLOCKDEF="$CLOCKDEF (localtime)"; ;; esac ´ˆ ´ ´ ˆ ˆ ˆ ˜ ’ ˆ ˘ ˆ ´’ ´ Neu bien so (UTC) nhan giá tri yes hoac true, thì se thuc hien cap lenh thu nhat, nhan ˘ ˆ ˆ ˙˘ p thu hai. giá tri no hoac false - ca ˘ ´’ ˙ ˙ ˙ ˙ ˙ ˙ ˙ ˙ ˙ ˙ 3.8.4 ’’ Toán tu select ’’ ˆ’ ´’ ˆ Toán tu select cho phép to chuc hoi thoai voi nguoi dùng. Nó có dang sau: ´’ ’`’ ˙ ˙ ˙ select name [ in word; ] do list; done ` ˜ Lúc d ˆ u tu mau word hình thành mot danh sách nhung tu tuong ung voi mau này. Tap ¯a `’ ˆ ˆ ˜’ `’ ’ ’ ´’ ´’ ˆ ˜ ˆ ˙ báo loi tiêu chuan, hon nua moi tu d oc d kèm ˙ hop nhung tu này d ’oc d ’a vào kênh thông ’ ˜’ `’ ¯u ’ ¯u ˜ ˆ ˆ’ ˜ ’ ˜’ ˆ `’ ¯u ’ ¯i ’ ˙ i mot so thu tu. Neu mau word bi bo qua (không có trong toán tu select), thì se d a vào vo ˆ ´ ´’ ’ ´ ´’ ˙ ˜ ’ ’’ ˙ ˆ ˆ ˆ ˜ ¯u’ ˙ ´ ˙ ˙ các tham bien vi trí (xem trên) theo mot cách tuong tu. Sau d dau nhac PS3 d ’oc d ’a ra, ˆ ˆ ’’ ’ ¯ó, ´ ˆ ´ ˘ ¯u ’ ¯u và he vo cho chuoi nhap vào trên d ˆ u vào tiêu chuan. Neu chuoi nhap vào có chua˙so, tuong ˆ ’ `’ ˙˜ ˆ ˆ ¯a` ˙ ˆ’ ˙´ ˆ ˜ ˆ ˆ ´’ ´ ’ ’ ˆ ˙ ´ i mot trong các ˙so d hien ra, thì bien name se d oc gán giá ˙ bang tu d kèm voi so ung vo ˆ ´’ ´ ¯ã ˆ ´ tri ˘ ` `’ ¯i ´’ ´ ’ ˆ ˆ ˜ ¯u ’ ’ ˆ ´ ˙ p vào mot dòng rong, thì so và tu se d oc hien ra them ˙ t lan nua. Neu nhap ˙˜ ´ ˙ này. Neu nha ˆ ˆ ˆ ˆ ˆ `’ ˜ ¯u ’ ˆ’ ˆ ` mo ˆ ˜’ ´ˆ ˆ vào bat ky mot giá tri˙nào khác, thì bien name se nhan giá tri bang không. Chuoi mà ngu˙`’i ´ ` ˙ˆ ˆ ´ ˆ ˜ ˆ ˙ ˙ ` ˘ ˙ ˜ ˆ ’o ˙ d oc ˙ lai trong bien REPLY. Danh ˙sách lenh list d oc thuc hien voi giá dùng nhap vào, ¯u ’ ghi ´ ˙ ´’ ˆ ’ ˆ ˆ ¯u ’ ’ ’ ˆ ´ ˙ ˆ ˙ ˙ ¯ây ˆ ’ tri bien name d chon. Sau d là mot script nho (xin hãy gõ không dau neu console cua ban ¯ã ˙ ´ ˙´ ˙ ˆ ˆ ˙ ’ ˙ a ho tro viec hien thi Tieng Viet): ˙ ˙ ˙ ’ ˜ chu ˆ ’ ˆ ˆ’ ´ ˆ ˆ ˙ ˙ ˙ ˙ kênh giao tác #!/bin/sh echo "Ban thích dùng OS nào?" ˙ select var in "Linux" "Gnu Hurd" "Free BSD" "MacOSX" "Solaris" "QNX" "Other"; break done echo "Ban d chon $var" ¯ã ˙ ˙
    51. ˆ ˜’ ˆ 3.8 Shell - mot ngôn ngu lap trình 47 ˙ ˙ Ghi d n trên vào mot tap tin (ví du, select.sh), thay d ˆ’i d ˆ’ tap tin thành kha thi (ví ¯oa ˆ ˆ ¯o ¯e ˆ ’ ˙ ˙ ˙ ˙ ˙ du, chmod 755 select.sh), và chay (./select.sh). Trên màn hình se hien ra câu ˜ ˆ ˙ ’ hoi sau: ˙ ˙ kênh giao tác Ban thích dùng OS nào? ˙ 1) Linux 3) Free BSD 5) Solaris 7) Other 2) Gnu Hurd 4) MacOSX 6) QNX #? Hãy nhan mot trong 7 so d ’a ra (tu 1 d´ n 7). Neu ban nhap 4 (nhan ca <Enter>), thì se ´ ˆ ˆ ´ ¯u ˆ `’ ¯eˆ ´ ˆ ˆ ´ ’ ˆ ˜ ´ ˙ thay thông báo sau: ˙ ˙ ˆ kênh giao tác Ban d chon MacOSX ¯ã ˙ ˙ 3.8.5 ’’ Toán tu for ’’ Toán tu for làm viec có khác mot chút so voi for trong các ngôn ngu lap trình thông thuong. ˆ ˆ ´’ ˜’ ˆ ’`’ ˙ ’ m giá tri cua mot bien so nào d (lên hoac xuong) mot d n vi sau moi Thay vì tang hoac gia ˘ ˘ ˙’ ´ ´ ˘ ´ ˙ ˆ ¯o ˜ ˆ ˆ ˆ ¯ó ˆ ’ ˆ vòng lap, thì nó ˘ ˙gán giá tri tiep theo ˙ ´˙ trong danh sách tu ¯u ˙d a san cho bien˙d trong ˜ ˙ ´ ¯ó ˆ ` ’ ’ ˘ ˆ ˜ ˙ lap. Nói chung cau trúc có dang sau: moi vòng ˘ ˙ ´ ˆ ˆ ˙ ˙ for name in words do list done ˆ ’ ˆ ´ ˆ ’’ Quy luat xây dung danh sách lenh (list) giong trong toán tu if. Ví du. Script sau tao ˙ ˙ các tap tin fu1, fu2, và fu3: ˙ ˙ ˙ ˆ ˙ kênh giao tác for a in 1 2 3 ; do touch fu$a done ˆ’ ˆ ˆ ´ ˆ ’ Có the gõ ba dòng này trên mot dòng lenh, ket qua thu d ’oc tuong tu voi script. Dang ¯u ’ ’ ’ ’ ´’ ’ng quát cua toán tu for nhu sau: to ’ ’’ ˙ ˙ ˙ ˙ ˙ ˆ ’ for name [ in word; ] do list ; done ` ’ ˆ’ `’ ˆ’ ˆ’ ´’ ¯ au tiên cung xay ra su khai trien tu word theo quy luat khai trien bieu thuc (xem trên). Dˆ ˜ ’ ˆ ˙t d oc gán các giá tri thu d oc tu su khai trien này, và thuc hien ˙` ¯ó ´ Sau d bien name lan luo ¯u ’ ˆ ` ˆ ’’ ’ ¯u ’ ’ ’ ’ ` ˆ ’ ˆ danh sách lenh list trong ˆ ˆ ˙ mo˙i lan nhu vay. Neu không có "in word", thì danh sách lenh ˜ ` ˙ ´ ˙ ˙ ˙ ˙ ˆ ’ ˆ ˆ ˆ list d ’oc ’ ˙ thuc hien mot lan cho moi tham bien vi trí d d a ra. Trên Linux˙ có ` ˜ ˙ ´ ˆ ¯u ’ ˆ ˆ ˆ ˆ ¯ã ¯u’ ˙ seq, tiep nhan hai so nguyên làm tham so, ˙ d a ra chuoi tat ca các so nam ˙ ˙´ ˙ ´ ´ và ¯u ˜ ˆ chuong trình ’’ ˆ ˆ ˆ ˆ ’ ˆ ´ ’ ´ ˘ ˆ ` ´ giua hai so này (cong thêm ’ ˙ ca chúng). Nho câu lenh này có the su dung for cua bash làm `’ ’ ’’ ’ ˜’ ˆ ˆ ˆ ˆ viec nhu toán tu ˙ ˙ ˙ ’ ’’ for trong các ngôn ngu lap trình thông thuong. ¯ e làm d ’oc d ˆ u này chı` ’ ˆ ’ ˜’ ˆ ’`’ D ˆ ¯u ’ ¯ie `˙ viet vòng lap for nhu sau: can ´ ˘ ˙ ˙ ˆ ˆ ’ ˙ kênh giao tác for a in $( seq 1 6 ) ; do cat fu$a done ˆ ˆ ’ ˆ ´ Câu lenh (script) này d ’a ra màn hình noi dung cua 10 tap tin (neu có): "fu1", ..., "fu10". ¯u ˆ ˙ ˙ ˙
    52. 48 Bash 3.8.6 ’’ Toán tu while và until ’’ Toán tu while làm viec tuong tu nhu if, nhung vòng lap các câu lenh trong list2 chı ˆ ’’ ’ ’ ’ ˘ ˆ ’ ` thuc hien khi d ˆ u kien˙ còn d ˙ và se ngung khi d `u kien không thoa mãn. Cau trúc có ˙ ˙’ ´ ’ ˆ ¯ie ˆ ¯úng, ˜ `’ ¯ie ˆ ˆ ˆ ˙ nhu sau: dang ˙ ˙ ˙ ’ ˙ while list1 do list2 done Ví du: ˙ kênh giao tác while [ -d directory ] ; do ls -l directory >> logfile echo -- SEPARATOR -- >> logfile sleep 60 done ’’ ˆ ’ Chuong trình (script) trên se theo dõi và ghi lai noi dung cua thu muc directory theo ˜ ’ ´ ` ’’ tung phút neu thu muc còn ton tai. Toán tu until ’ ’ `’ ˙ tu˙ong tu nhu toán tu while: ’˙ ˆ ’ ˆ ’ ’ ’ ˙ ˙ ˙ until list1 do list2 done ¯ ˆ’ ` ˆ ˘ ’’ ˆ ’’ ˜ ˙ lenh cuoi cùng ˙ ’ ¯i ’ ¯ie` Diem khác biet nam o cho, su dung giá tri phu d nh cua d ˆ u kien list1, tuc là list2 ˆ ´’ ˙ sách˙ list1 tra lai˙ trang thái thoát ra khác ’ ˆ ´ thuc hien, neu câu ˆ ˆ ´ ˆ trong danh ’ ˙ không. ˙ ˙ ˙ ˙ 3.8.7 ´ ˆ Các hàm so ` ´ ˆ ´ Cú pháp He vo bash cho phép ngu’o’i dùng tao các hàm so cho mình. Hàm so làm viec và ˆ ’ ˆ ˆ d ’oc su dung˙ giong nhu các câu lenh thông thuong cua he vo, tuc là chúng ta có the tu tao ¯u ’ ’’ ´ ˆ ’ ˆ ˙` ’’ ’ ˆ ’ ´’ ˙ ˆ’ ’ ˙ ˙ ´ ´ ˙ các câu lenh moi. Hàm so có cau trúc nhu sau: ´’ ˙ ˙ ˙ ˆ ˆ ˆ ’ ˙ function name () { list } Hon nua tu function không nhat thiet phai có, name xác d nh tên cua hàm (dùng d ˆ’ ’ ˜’ `’ ´ ˆ ´ ˆ ’ ¯i ’ ¯e ` ’ ´ ’’ goi hàm), còn phan thâm cua hàm so tao boi danh sách các câu lenh ˙ list, nam giua { và }. ` ˘ ˆ ˆ ˆ ˜’ Các câu lenh này se d ’oc thuc hien moi khi tên name d ’oc goi˙ (giong nhu mot lenh thông ˙ ˆ ˜ ¯u ’ ’ ˆ ˙˜ ˆ ¯u ’ ´ ˆ ’ ˆ ˆ thuong). Ca `’ ˙ `n chú ý rang hàm có the là d qui, tuc là goi hàm so o ngay trong phan thân cua ` ˘ ˙ ˙ ˙’ ´’ ˙ ´˙ ’ ˙ `˙ ’ ’ ˆ ˆ ¯e ˆ ˆ ’ ˆ ´ thuc hien trong pham vi he vo ˆ nó. Hàm so ’ ˆ ˙’ hien thoi: không có tien trình moi nào d oc chay `’ ˙ ´ ´’ ˆ ˆ ˆ ¯u ’ ’ khi biên dich hàm so (khác voi˙viec chay script). ˙ ˙´ ˆ ´’ ˆ ˙ ˙ ˙ ˙ ˙ ˙ ˙ 3.8.8 ´ ˆ Tham so Khi hàm so d ’oc goi d ˆ’ thuc hien, các tham so cua hàm se tro thành các tham bien vi trí ´ ¯u ’ ˆ ¯e ’ ˆ ´ ’ ˆ ˜ ’’ ´ ˆ ˙ ˙ xem ˙trên)˙trong thoi gian thuc hien hàm này. Chúng d oc d ˘ t các˙tên (positional parameters, `’ ’ ˆ ¯u ’ ¯a ’ nhu $n, trong d n là so cua tham so mà chúng ta ˙ ´ n su dung. Viec d ’ ¯ó ´ ’ ˆ ´ ˆ muo˙ ’’ ˆ ˙ ´ ˙´ ` ` ˆ ¯ánh so bat d ˆ u tu ˆ ˘ ¯a ’ ’ ˆ ´ ¯a ˆ ` ˜ ’ ’’ ˆ ´ ’˙ ˆ ˙ ´ 1, nhu vay $1 là tham so d ˆ u tiên. Cung có the su dung tat ca các tham so mot lúc nho $*, ˆ ˆ `’ ˙ so thu tu cua tham so nho $# Tham so vi ˙ so 0 không thay d ’i. Trong khi thuc và d ’a ra ´ ´’ ’ ’ ´ ´ ˙ ¯u ˆ ˆ `’ ˆ trí ´ ˆ ¯o ˆ ’ ´ u gap câu lenh noi trú return (trong phan ˙ hien ne ˘ ˆ ˆ ˙ ˆ ˆ ` thâm cua hàm), thì hàm so se bi dung lai ˆ ’ ´ ˜ ˆ `’ ˙ và˙quyen d˙ ˆ u khien d ’oc trao cho câu lenh d ´’ng sau hàm. Khi thuc hien xong hàm so, các ` ˆ ¯ie ` ˙ ˙ ˆ’ ¯u ’ ˆ ¯u ’ ˆ ˙ ´ ˙ ˆ tham bie ´ n vi trí và tham˙bien d ˆ c biet # se d ’oc tra lai các giá tri mà chúng có truoc khi chay ˆ ´ ¯a ˆ ˆ ˙ ˜ ¯u ’ ˙ ˙ ’´’ hàm. Bie ´ n˙ noi bo (local) ˙ ˙ ˆ ˆ ˆ ˙ ˙ ˙ ˙ Neu muon tao ˙ ˆ t ˙ ´ ˆ ´ ˆ ´ ¯i ˆ ’’ ˆ’ ’’ mo tham bien d a phuong, có the su dung tu khóa local. Cú pháp d ’a ra `’ ¯u ´ ¯i ˙ong giong het các tham bien khác, chı có˙ d `u can d ´ ng sau tu khóa local: ˙ ´ ˙ ´ bien d a phu ’ ˆ ’ ˆ ˆ ˆ ’ ˆ ` ¯ie ˆ ¯u ’ `’ ˙ ˙
    53. ’ ˆ ’ ˆ 3.9 Script cua he vo và lenh source 49 ˙ ˙ ˆ ´ ˆ ’ ˆ ˆ ’ ˆ local name=value. Duoi d là mot ví du hàm so, thuc hien công viec cua lenh seq d ’´’ ¯ây ¯ã nhac d´ n o trên: ´ ˆ ˘ ¯e ’’ ˙ ˙ ˙ ˙ ˙ ˙ kênh giao tác seq() { local I=$1; while [ $2 != $I ]; do { echo -n "$I "; I=$(( $I + 1 )) }; done; echo $2 } Can chú ý d´ n tùy chon -n cua echo, nó (tùy chon) huy bo viec tao dòng moi. Mac dù ˆ` ¯e ˆ ’ ’ ’ ˆ ´’ ˘ ˙ `u ý nghıa voi muc d chúng ta muon o d ˙ nhung se rat có ích ˙ ˙ ´ ’’ ¯ây, ˙ tùy chon này không có nhie ˆ ˜ ´’ ¯ích ˆ ’ ˜ ´ˆ ˙ hàm so voi muc d khác. Hàm so tính giai thua fact Mot ví du khác: trong các ´ ´’ ˙´ ˆ `’ ˆ ¯ích ˆ ˙ ˙ ˙ kênh giao tác fact() { if [ $1 = 0 ]; then echo 1; else { echo $(( $1 * $( fact $(( $1 -- 1 )) ) )) }; fi } D ´ ˆ `’ ˆ ’ ¯e ¯e ’ ˆ ˆ’ ´ ¯ ây là hàm so giai thua, mot ví du cua hàm d ˆ qui. Hãy chú ý d´ n su khai trien so hoc, ˆ ´ và phép the các câu lenh. ˙ ˙ ˙ ˙ ˙ ˆ ˆ ˙ 3.9 ’ ˆ ’ ˆ Script cua he vo và lenh source ˙ ˙ ’ ˆ ’ ’ ˆ ´’ ˜ Script cua he vo chı là các tap tin có chua chuoi lenh. Tuong tu hàm so script có the d ’oc ˆ ˆ ’’ ’ ´ ˆ ˆ’ ¯u ’ thuc hien nhu ˆ ˙ mot câu lenh. Cú pháp truy cap d´ n các tham so cung nhu hàm so. Trong các ˙ ˙ ´ ˜˙ ´ ˙ ’ ˆ ’ ˆ ˆ ¯eˆ ˆ ’ ˆ truong ˙ ’p thông thuong khi chay script se ˙ mot tien trình moi d ’oc chay. ¯ e có the thuc ˙` ho ’’ ˙ ’`’ ˙ ˜ có ˆ ´ ˆ ´’ ¯u ’ D ˆ’ ˆ’ ’ ˙ o trong ban bash hie˙n thoi, can su dung câu lenh source, hay˙mot dau cham "." hien script ’’ ’ `’ ˆ ` ’’ ˙ ˙ ´ ´ ˙ ˆ ˆ ˆ ˆ ˆ ˆ (d˙`ng nghıa cua source). Trong˙ truong hop này˙script chı d ’n gian là mot tham so cua lenh ¯o ˆ ˜ ’ ’`’ ’ ˙’ ¯o ’ ˆ ˙ ´ ’ ˆ ˆ nói trên. Câu lenh se có dang: ˙ ˙ ˙ ˆ ˜ ˙ source filename [arguments] ˙ Câu lenh này d c và thuc hien các câu lenh có trong tap tin filename trong môi truong ˆ ¯o ’ ˆ ˆ ˆ ’` ’ hien thoi,`’ ˙và tra lai ˙ tri, xác d˙nh boi câu lenh cuoi cùng cua filename. Neu filename ’ giá ˙ ’’ ˙ ´ ˙ ’ ´ ˆ ¯i ˆ ˆ ˆ không chua dau ˙ ch chéo, thì ˙d ’ong dan, ˙ ˆ t kê trong bien so PATH, se d ’oc su dung d ˆ’ ˙ ´’ ´ ga ˆ ˙ ¯u `’ ˜ ˆ lie ´ ´ ˆ ˆ ˜ ¯u ’ ’’ ¯e ˙ ˙ ´ ´ tìm tap tin có tên filename. Tap tin này không nhat thiet phai kha thi (không nhat thiet ’ ’ ˙ ´˙ ´ ˆ ˆ ˆ ˆ ˆ ˆ pha ˙ ´ ˙ ´ ˆ ’ i có bit x). Neu trong thu muc, liet kê trong PATH, không tìm thay tap tin can, thì se tìm ` ˆ ’ ˆ ˆ ˆ ˜ nó (tap tin) trong thu muc hien ˙thoi. ˙Neu có các tham so (d ’a ra arguments, xem d nh dang ˆ ’ ˆ `’ ´ ˆ ´ ¯u ˆ ˙ ¯i ˙ ˙ ˙ ˙ ˙
    54. 50 Bash ˆ ’’ `’ ’ ˆ ˜ ´ ˆ ´ câu lenh o trên), thì trong thoi gian thuc hien script chúng se thành các tham bien vi trí. Neu ˆ không ˙ có tham so, thì tham bien vi trí˙không thay d ’i. Giá tri (trang thái), mà lenh ˙ ´ ´ ˙ ˆ ˆ ¯o ˆ ˆ source tra lai, trùng voi giá tri, tra lai boi ˙câu lenh cuoi cùng trong ˙ ˙ Neu không ˙câu lenh nào ’ ´’ ’ ’’ ˆ ´ ˆ script. ´ ˆ ˆ ˙ thuc hien, hoac không tìm thay tap˙ tin filename, thì trang thái thoát bang 0. ˙ d ’oc ’ ˆ ˘ ˙ ˙ ´ ˆ ` ˘ ¯u ’ ˆ ˙ ˙ ˙ ˙ ˙ ˙ 3.10 ˆ Câu lenh sh ˙ ˆ’ ˆ ’ ’ ˆ ’ Ban luôn luôn có the chay mot ban sao cua he vo bash nho câu lenh bash hay sh. Khi này `’ ˆ ˙ the bat ban sao này chay ˙ t script nào d neu d a tên cua script nhu mot tham so cho có ˆ ´ ’ ˘ ’ ˙ mo ˙ ´ ’ ˙ ´ ˆ ¯ó, ˆ ¯u ’ ’ ˆ ˆ lenh bash. Nhu vay, d ˆ ’ ˆ ˆ ’ ˆ ¯e ’ thuc hien script myscript can d ’a câu lenh "sh ˙ myscript". ˙ ˙ ` ¯u ˆ ˆ Neu xem noi dung˙ cua mot tap ˙ script nào d (nhung tap tin nhu vay có rat nhieu trên ˙´ ˆ ˆ ’ ˙ ˆ ˆ tin ¯ó ˜’ ˆ ˙ ’ ˆ ´ ˆ ` ˆ he tho ˙ n se thay dòng d˙`u tiên có dang sau: #!/bin/sh. Dieu này có nghıa là, khi ´ ng), ba ˜ ´ ˙ ˙ ` ˙ ˆ ˆ ˆ ¯a ˆ ¯ ˆ ˜ ˙ chúng ta goi ˙script d ’ thuc hien nhu mot lenh thông thuong, thì /bin/sh se giúp chúng ta ˙ ¯e ’ ˆ ˆ ’ ˆ ˆ ’`’ ˜ ´ ˙ ´’ ˙’ ˙ ´ ˙ ˙ "thu xep" moi thu. Có the thay the dòng này boi liên ket d´ n bat ky mot chuong trình nào, ’’ ´ ¯e ´ ` ˆ ˆ ˆ ˆ ˆ ˆ ˆ ’’ mà se d c tap ˙ tin và thuc hien các câu lenh tuong ung. Ví du, script trên ngôn ngu Perl bat ˙ ´ ˜ ¯o ˆ ’ ˆ ˆ ’ ’ ´’ ˜’ ˘ ` ˙ ˙ có dang !/bin/perl. Mot chú ý khác là ký ˙tu # dùng d ’ viet loi chú thích ˙ ˙ ˙ ¯a ’’ d ˆ u boi dòng ˆ ’ ¯e ´ `’ ˆ ˆ trong script. Tat ca˙nhung gì d ´’ng sau ký ˙ ’ này d´ n cuoi dòng˙se d ’oc coi là chú thích và bi ´ ’ ˜’ ˆ ¯u tu ¯e ˆ ´ˆ ˜ ¯u ’ ˙ ´ ˙ ´’ ˙ bash bo ’ qua (tuc là he vo se không xem dòng này là câu lenh). Neu ban muon kiem chung ´’ ˆ ’ ˜ ˆ ˆ ´ ˆ ˆ’ lai tác dung cua ký tu ˙ ’ ˆ ˆ ˆ ˙ ’ này, thì hãy nhap vào dòng lenh mot câu lenh bat ky, và d ˘ t truoc nó ˆ ´˙ ` ˆ ¯a ’´’ ˙ lenh) ký tu #, ví˙du "# ls", ban˙se thay rang he vo bo qua câu lenh này. ˙ (câu ˆ ˙ ´ ` ˙ ’ ˙’ ˙ ’ ˜ ˆ ˘ ˆ ’ ˆ Chúng ta se dung bài hoc ngan gon ve bash tai d˙ Tat nhiên, còn rat nhieu van d ˆ quan ˙ ˙ ` ˜ ’ ˙ ˘ ˙ ´ ` ˆ ¯ây. ˆ ´ ˙ ´ ˆ ˆ ´ ¯e ` ˆ ` ` trong can xem xét nhung na ˙m ngoài pham vi cua bài hoc, ví du, quan lý tien trình, lich su câu ` ˘ ˙ ’ ˙ ’ ´ ’’ ˆ ’ ˆ ˙ mô ta ve thu vien readline, tín hie˙ v.v. . . Các ban se tìm thay thông tin can thiet trong lenh, ` ’ ˆ ’ ˆ ˙ ˙ ´ ` ˙ ´ ˆ ˆ u, ˜ ˆ ˆ ˆ các cuon huong dan ˙ ˙ ´ ˆ ’ ´’ ˜ ˙ ˆ khác hoac trên trang man bash. ˘ ˙ ˙
    55. ˆ 3.10 Câu lenh sh 51 ˙
    SlideShare Zeitgeist 2009

    + imsansuusanimsansuusan Nominate

    custom

    79 views, 0 favs, 0 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 79
      • 79 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 3
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories