232

Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

Embed Size (px)

DESCRIPTION

Tài liệu cơ bản về GNU/Linux (FTA: Basic GNU/Linux)

Citation preview

Page 1: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)
Page 2: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Hệ điều hành GNU/Linux cơ bảnJordi Serra i Ruiz (người điều phối)David Megías Jiménez (người điều phối)Jordi Mas (người điều phối)Joaquín López Sánchez-MontañésSofia Belles RamosRoger Baig ViñasFrancesc Aulí LlinàsPID_00148369

GNU/Linux Basicoperating systemJordi Serra i Ruiz (coordinator)David Megías Jiménez (coordinator)Jordi Mas (coordinator)Joaquín López Sánchez-MontañésSofia Belles RamosRoger Baig ViñasFrancesc Aulí LlinàsPID_00148369

Trang 2/232

Page 3: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Xuất bản lần thứ 2: Tháng 02/2008© Joaquín López Sánchez-Montañés, Sofia Belles Ramos, Roger Baig i Viñas i Francesc Aulí Llinàs© Cấp vốn từ Đại học Oberta de CatalunyaAv. Tibidabo, 39-43, 08035 BarcelonaChuẩn bị tư liệu: Eureca Media, SLTiền gửi pháp lý: B-1.567-2008Bản quyền Copyright © 2010, FUOC. Các quyền được trao để sao chép, phân phối và/hoặc sửa đổi tài liệu này theo các điều khoản của Giấy phép Tài liệu Tự do GNU, phiên bản 1.2 (GFDL v1.2) hoặc bất kỳ phiên bản nào được xuất bản sau này từ Quỹ Phần mềm Tự do; mà không có các phần bất biến, không các văn bản bìa ngoài, không các văn bản bìa sau. Một bản sao của giấy phép này được đưa vào trong phần có đầu đề “Giấy phép Tài liệu Tự do GNU”.

Second edition: February 2008© Joaquín López Sánchez-Montañés, Sofia Belles Ramos, Roger Baig i Viñas i Francesc Aulí Llinàs© Fundació per a la Universitat Oberta de CatalunyaAv. Tibidabo, 39-43, 08035 BarcelonaMaterial prepared by Eureca Media, SLLegal deposit: B-1.567-2008Copyright © 2010, FUOC. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".

Trang 3/232

Page 4: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Lời người dịchTrong bối cảnh khi mà các Công nghệ Tự do đang ngày càng trở thành một xu thế không thể đảo ngược trên toàn thế giới, tài liệu “Hệ điều hành GNU/Linux cơ bản” của các tác giả: Joaquín López Sánchez-Montañés, Sofia Belles Ramos, Roger Baig Viñas, Francesc Aulí Llinàs và những người điều phối: Jordi Serra i Ruiz, David Megías Jiménez, Jordi Mas, với bản tiếng Anh xuất bản lần 2 vào tháng 02/2008 của Viện Hàn lâm Công nghệ Tự do FTA (Free Technology Academy), là tài liệu được sử dụng trong chương trình đào

tạo trực tuyến cho các giáo viên theo các module của khóa học về các Công nghệ tự do và tại một số trường đại học châu Âu cùng đứng ra thành lập Viện như: Đại học Mở Hà Lan (Open Universiteit Nederland), Đại học Oberta de Catalunya của Tây Ban Nha (Universitat Oberta de Catalunya) và Đại học Agder của Nauy (University of Agder).

Bản dịch sang tiếng Việt được thực hiện từ bản gốc tiếng Anh, được đưa lên trực tuyến trên website của Viện tại địa chỉ: http://ftacademy.org/materials, hầu như không có sự tùy biến nào về nội dung.

Tuân thủ theo các điều khoản của giấy phép được giới thiệu trong tài liệu gốc tiếng Anh, trong phần phụ lục ở cuối tài liệu này, tại nơi có giới thiệu giấy phép tài liệu tự do GFDL v.1.2, dù có cả bản dịch sang tiếng Việt đi cùng, thì bản dịch chỉ để tham khảo, bản gốc bằng tiếng Anh mới là bản có giá trị pháp lý cao nhất.

Các trang có những lưu ý về bản quyền của bản gốc tiếng Anh được giữ nguyên không thay đổi, dù có các phần dịch tương ứng sang tiếng Việt nằm trên cùng các trang đó.

Tài liệu này được cấp phép theo giấy phép tài liệu tự do GFDL v1.2 và các phiên bản tương ứng tiếp sau của giấy phép này.

Tài liệu “Hệ điều hành GNU/Linux cơ bản”, cùng với 2 tài liệu khác cũng đã được dịch sang tiếng Việt và xuất bản trên mạng gồm: “Giới thiệu Phần mềm Tự do” và “Quản trị cao cấp GNU/Linux” đều nằm trong cùng bộ sách đào tạo về các công nghệ tự do của Viện Hàn lâm Công nghệ Mở.

Những nội dung của tài liệu này là những kiến thức cơ bản đối với bất kỳ người quản trị hệ thống GNU/Linux nào.

Mọi thông tin đóng góp cho các bản dịch sang tiếng Việt, xin gửi vào địa chỉ thư điện tử: [email protected]

Chúc các độc giả thành công!

Hà Nội, tháng 09 năm 2012

Lê Trung Nghĩa

Trang 4/232

Page 5: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Lời nói đầu

Phần mềm đã trở thành một tài nguyên xã hội chiến lược trong vài thập kỷ vừa qua. Sự nổi lên của Phần mềm Tự do (PMTD), đã thâm nhập vào trong những lĩnh vực chính của thị trường công nghệ thông tin và truyền thông (CNTT-TT), làm thay đổi nhanh chóng các nền kinh tế phát triển và sử dụng phần mềm. PMTD - đôi lúc cũng được tham chiếu tới như là “Nguồn Mở” (Open Source) hoặc “Phần mềm tự do” (Libre Software) - có thể được sử dụng, nghiên cứu, sao chép, sửa đổi và phân phối một cách tự do. Nó đưa ra sự tự do để học và dạy mà không có những phụ thuộc vào bất kỳ nhà cung cấp công nghệ duy nhất nào. Những quyền tự do đó được xem là một điều kiện tiên quyết cơ bản cho sự phát triển bền vững và một xã hội thông tin toàn diện.

Dù có sự quan tâm đang gia tăng trong các công nghệ tự do (PMTD và các Chuẩn Mở), vẫn có số người hạn chế có đủ tri thức và sự tinh thông trong các lĩnh vực đó. FTA có ý định đáp ứng cho nhu cầu này.

Giới thiệu FTA

Viện Hàn lâm Công nghệ Tự do (FTA - Free Technology Academy) là một sáng kiến chung từ vài tổ chức giáo dục tại vài quốc gia. Nó có mục tiêu đóng góp cho xã hội nhằm cho phép tất cả mọi người sử dụng nghiên cứu, tham gia và xây dựng trên tri thức hiện có mà không có giới hạn nào.

FTA đưa ra những gì?

Viện hàn lâm đưa ra một chương trình mức giáo viên trực tuyến với các module khóa học về các Công nghệ Tự do. Các học viên có thể chọn để ghi danh vào trong một khóa học riêng rẽ hoặc đăng ký cho toàn bộ chương trình. Việc dạy học diễn ra trực tuyến trong khu trường ảo của FTA và được các nhân viên dạy học được thừa nhận tại các trường đại học đó thực hiện.

Ai đứng đằng sau FTA?

FTA đã được khởi xướng vào năm 2008 và được hỗ trợ từ Chương trình Học tập Suốt Đời (LLP - Life Long Learning Programme) của Ủy ban châu Âu, theo sự điều phối của Viện Tri thức Tự do và trong mối quan hệ đối tác với 3 trường đại học của châu Âu là: Đại học Mở Hà Lan (Hà Lan), Đại học Oberta de Catalunya (Tây Ban Nha) và Đại học Agder (Nauy).

FTA là vì ai?

FTA đặc biệt hướng tới những người chuyên nghiệp, các nhà giáo dục, các sinh viên và những người ra quyết định về CNTT.

Về việc cấp phép thì sao?

Tất cả các tư liệu học được sử dụng và phát triển từ FTA là các Tài nguyên Giáo dục Mở, được xuất bản theo các giấy phép tự do copyleft, cho phép chúng được tự do sử dụng, sửa đổi và phân phối. Tương tự, các phần mềm được sử dụng trong khu trường ảo của FTA đều là các PMTD và được xây dựng trong khung các Tiêu chuẩn Mở.

Sự tiến bộ của cuốn sách này

FTA đã sử dụng lại các tư liệu khóa học đang có sẵn từ Đại học Oberta de Catalunya và đã và đang phát triển cùng với các nhân viên của LiberSoft từ Đại học Rey Juan Carlos. Vào năm 2008 cuốn sách này đã được dịch sang tiếng Anh với sự trợ giúp của Dự án Khoa học, Giáo dục và Học tập trong Tự do (SELF - Science, Education và Learning in Freedom), được hỗ trợ từ Chương trình Khung số 6 của Ủy ban châu Âu. Trong năm 2009, tư liệu này đã được FTA cải tiến. Bổ sung thêm

Trang 5/232

Page 6: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

rằng FTA đã phát triển một chỉ dẫn nghiên cứu và các hoạt động học tập, chúng sẵn sàng cho các học viên ghi danh học trong các khu học ảo của FTA.

Sự tham gia

Những người sử dụng các tư liệu học tập của FTA được khuyến khích đưa ra các ý kiến phản hồi và những gợi ý cho sự cải tiến. Một không gian đặc biệt cho sự phản hồi này được thiết lập trên website của FTA. Có những đầu vào sẽ được tính tới cho các phiên bản sau. Hơn nữa, FTA chào đón bất kỳ ai sử dụng và phân phối tư liệu này cũng như làm các phiên bản mới và bản dịch.

Xem thông tin đặc thù và được cập nhật về cuốn sách này, bao gồm các bản dịch và các định dạng khác: http://ftacademy.org/materials/fsm/. Để có thêm thông tin và sự ghi tên trong chương trình khóa học trực tuyến của FTA, xin viếng thăm website của Viện hàn lâm tại: http://ftacademy.org/.

Tôi chân thành hy vọng cuốn sách về khóa học này sẽ giúp các bạn trong quá trình học tập của cá nhân các bạn và giúp các bạn giúp những người khác trong việc học tập của họ. Tôi mong đợi được gặp gỡ các bạn trong các phong trào tri thức tự do và công nghệ tự do.

Chúc học tập hạnh phúc!

Wouter Tebbens

Chủ tịch Viện Tri thức Tự do

Giám đốc Viện Hàn lâm Công nghệ Tự do

Trang 6/232

Page 7: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Các tác giả muốn cảm ơn Quỹ của Đại học Oberta de Catalunya vì việc cấp vốn cho lần xuất bản đầu tiên tác phẩm này, và một sự chia sẻ lớn những cải tiến dẫn tới việc xuất bản lần thứ 2, như một phần của Chương trình của Giáo viên trong PMTD được Đại học đưa ra theo yêu cầu, ở những nơi nó được sử dụng như là tư liệu cho một trong những chủ đề.

Bản dịch của tác phẩm này sang tiếng Anh đã thực hiện được nhờ vào sự trợ giúp của Dự án SELF, Nền tảng SELF, chương trình của Ủy ban châu Âu về các Công nghệ Xã hội Thông tin và Đại học Oberta de Catalunya. Chúng tôi muốn cảm ơn bản dịch các tư liệu sang tiếng Anh được lexia:park triển khai.

Phiên bản hiện hành của các tư liệu tiếng Anh đã được mở rộng với việc cấp vốn từ dự án của FTA. Dự án của FTA đã được cấp vốn với sự hỗ trợ từ Ủy ban châu Âu (tham chiếu số 142706-LLP-1-2008-1-NL-ERASMUS-EVC của Chương trình Học tập Suốt đời). Xuất bản phẩm này phản ánh quan điểm chỉ của các tác giả, và Ủy ban không giữ trách nhiệm về bất kỳ sự sử dụng nào mà có thể được thực hiện đối với các thông tin ở đó.

Trang 7/232

Page 8: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

FTA muốn cảm ơn Quỹ của Đại học Oberta de Catalunya về việc cấp vốn cho lần xuất bản đầu tiên của tác phẩm này, như một phần của khóa học cho các giáo viên quốc tế theo PMTD được đưa ra tại FTA.

Trang 8/232

Page 9: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Giới thiệu

Mặc dù PMTD đã tồn tại hơn 20 năm, chỉ mới gần đây nó đã bắt đầu được xem như một lựa chọn thay thế có giá trị cho nhiều người sử dụng, các công ty, và ngày một gia tăng, các chính phủ và các cơ quan. Hiện hành, GNU/Linux là một trong những hệ thống có hiệu quả và đáng tin cậy nhất có thể được thấy. Dù thực tế ban đầu chính PMTD đã làm cho những người sử dụng và các công ty miễn cưỡng áp dụng nó, thì GNU/Linux đã chứng minh đáp ứng được nhiệm vụ như bất kỳ hệ điều hành nào khác đang tồn tại.

Mục tiêu của khóa học này là để giới thiệu cho chúng ta thế giới GNU/Linux. Nó cũng sẽ cho chúng ta những chìa khóa để hiểu biết triết lý của PMTD, dạy cho chúng ta cách sử dụng nó và điều khiển nó cho hợp với chúng ta, cho chúng ta các công cụ theo yêu cầu để dịch chuyển dễ dàng trong thế giới mới này. Tài liệu này không có ý định là một chỉ dẫn tham chiếu cơ bản cho các nhà quản trị và/hoặc những người sử dụng; đã có hàng trăm các sách chỉ dẫn, sách dạy cách làm (HOWTOS) và nhiều tham chiếu khác được thiết kế cho mục đích này, mà có thể chiếm hàng triệu trang giấy. Mục tiêu của chúng tôi ở đây là để dạy cho bạn cách tiến hành các bước đầu tiên của bạn trong lĩnh vực còn chưa được khai phá này đối với nhiều người sử dụng và các quản trị viên và cách để bạn tự tiếp cận và giải quyết các vấn đề bạn có thể gặp phải.

Khóa học này không cố ý dựa vào bất kỳ phát tán cụ thể nào, nhưng trong hầu hết các ví dụ và hoạt động chúng tôi cần phải là cụ thể, nên chúng tôi sẽ sử dụng Debian GNU/Linux (phiên bản 4.0 -Etch-). Dù phát tán này không phải là thật trực quan và dễ dàng sử dụng như một số phát tán khác, nó sẽ giúp chúng tôi giải thích tất cả các tính năng của một hệ điều hành dựa vào GNU/Linux từng bước một. Hơn nữa, chất lượng, tính ổn định và an ninh đặc biệt của nó làm cho nó trở thành một trong những lựa chọn giá trị nhất ngay lúc này. Tuy nhiên, chúng tôi sẽ không quên sự hỗ trợ mà các phát tán khác cung cấp (Debian được những người tình nguyện phát triển và không đưa ra dạng hỗ trợ nào, mà trong trường hợp với các công ty là không thể thiếu). Vì lý do đó, chúng tôi đã đưa vào một phụ lục chỉ ra quá trình cài đặt và những đặc tính chính của Red Hat Fedora (phiên bản 7).

Chúng tôi hy vọng rằng bạn tận hưởng được khóa học và nó sẽ giúp bạn mở ra những cánh cửa vào thế giới của PMTD. Càng có nhiều người sử dụng PMTD, thì chúng ta sẽ có phần mềm càng có chất lượng tốt hơn.

Chào mừng bạn tới GNU/Linux!

Trang 9/232

Page 10: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Các nội dung

Module 1

GNU/Linux cơ bản

1. Giới thiệu

2. Các khái niệm và các lệnh cơ bản

3. Hội thảo về Knoppix

4. Cài đặt GNU/Linux

5. Hội thảo về cài đặt Debian Etch

6. Các cấu hình cơ bản

7. Các daemon và mức chạy

8. Cài đặt các ứng dụng

9. Hội thảo về các cấu hình cơ bản

10. Kiến trúc X-Window

11. Hội thảo về X-Window

Module 2

Các phụ lục

1. Phụ lục A. Các bảng lệnh

2. Phụ lục B. Trình soạn thảo vi

3. Phụ lục C. Tiến trình cài đặt Fedora 7

4. Phụ lục D. Các công cụ quản trị

5. Giấy phép Tài liệu Tự do GNU

Trang 10/232

Page 11: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

GNU/Linux cơ bảnPID_00148393

Basic GNU/LinuxPID_00148393

Trang 11/232

Page 12: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Bản quyền Copyright © 2010, FUOC. Quyền được trao để sao chép, phân phối và/hoặc sửa đổi tài liệu này theo các điều khoản của Giấy phép Tài liệu Tự do GNU, Phiên bản 1.2 (GFDLv1.2) hoặc bất kỳ phiên bản nào được xuất bản sau này của Quỹ Phần mềm Tự do (FSF); mà không có các phần bất biến, không có các văn bản bìa trước, không có các văn bản bìa sau. Một bản sao của giấy phép này được đưa vào trong phần có đầu đề “Giấy phép Tài liệu Tự do GNU”.

Copyright © 2010, FUOC. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".

Trang 12/232

Page 13: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Mục lục1. Giới thiệu........................................................................................................................................17

1.1. GNU là gì?..............................................................................................................................171.2 GNU/Linux là gì?....................................................................................................................191.3 Các phát tán ............................................................................................................................211.4. Các chương trình và tài liệu....................................................................................................22

2. Các khái niệm và lệnh cơ bản.........................................................................................................252.1. Giới thiệu................................................................................................................................252.2 Người sử dụng và nhóm...........................................................................................................252.3. Hệ thống tệp............................................................................................................................30

2.3.1. Tôn ti trật tự của hệ thống tệp.........................................................................................302.3.2. Các thư mục hệ thống.....................................................................................................312.3.3. Dịch chuyển....................................................................................................................322.3.4. Các liên kết......................................................................................................................332.3.5. Các quyền........................................................................................................................342.3.6. Việc điều khiển, các mẫu và tìm kiếm............................................................................362.3.7. Dạng và nội dung tệp......................................................................................................37

2.4. Các tiến trình ..........................................................................................................................382.5. Các lệnh hữu dụng khác..........................................................................................................40

2.5.1. Trợ giúp hệ thống............................................................................................................402.5.2. Đóng gói và nén..............................................................................................................412.5.3. Các hoạt động của đĩa.....................................................................................................42

2.6. Các hoạt động với các lệnh.....................................................................................................442.6.1. Định tuyến lại..................................................................................................................442.6.2. Các lệnh bash (trình biên dịch GNU shell) cụ thể..........................................................452.6.3. Shell script với bash........................................................................................................46

3. Hội thảo về Knoppix......................................................................................................................483.1. Giới thiệu................................................................................................................................483.2. Khởi động hệ thống................................................................................................................483.3 Dừng hệ thống.........................................................................................................................513.4. Cấu hình bàn phím..................................................................................................................523.5. Kiểm tra hệ thống...................................................................................................................543.6. Điều khiển các tệp và thư mục................................................................................................583.7 Quản trị người sử dụng............................................................................................................633.8. Quản lý các tiến trình..............................................................................................................653.9. Kích hoạt và sử dụng chuột....................................................................................................663.10. Các hoạt động khác...............................................................................................................683.11. Kết luận.................................................................................................................................69

4. Cài đặt GNU/Linux........................................................................................................................704.1. Giới thiệu................................................................................................................................704.2 Khởi động................................................................................................................................704.3. Phân vùng cho đĩa...................................................................................................................714.4. Cài đặt các module..................................................................................................................734.5. Cấu hình mạng cơ bản............................................................................................................744.6. Hệ thống khởi động................................................................................................................754.7. Lựa chọn các gói.....................................................................................................................75

Trang 13/232

Page 14: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

4.8. Các khía cạnh khác.................................................................................................................765. Hội thảo cài đặt Debian Etch..........................................................................................................77

5.1 Giới thiệu.................................................................................................................................775.1.1. Các hệ thống cài đặt........................................................................................................785.1.2. Các dạng gói....................................................................................................................805.1.3. Tình trạng phát triển gói..................................................................................................80

5.2. Cài đặt Debian Etch................................................................................................................815.2.1. Các thành phần của Debian Etch....................................................................................815.2.2. Cài đặt Debian GNU/Linux 4.0 cho Intel x86................................................................81

5.3. Cài đặt Debian Etch từ DVD-ROM........................................................................................825.3.1. Trước khi bắt đầu cài đặt.................................................................................................825.3.2. Khởi động hệ thống cài đặt.............................................................................................835.3.3. Cấu hình ngôn ngữ cài đặt..............................................................................................865.3.4. Cấu hình bàn phím..........................................................................................................885.3.5. Dò tìm và kích hoạt CD-ROM........................................................................................895.3.6. Cấu hình mạng................................................................................................................905.3.7. Phân vùng đĩa cứng.........................................................................................................925.3.8. Cấu hình thời gian...........................................................................................................965.3.9. Cấu hình cho người sử dụng và mật khẩu.......................................................................985.3.10. Cài đặt hệ thống cơ bản...............................................................................................1015.3.11. Cấu hình cho trình quản lý gói....................................................................................1025.3.12. Chọn và cài đặt các chương trình................................................................................1035.3.13. Cài đặt GRUB.............................................................................................................1035.3.14. Khởi tạo lại hệ thống...................................................................................................1035.3.15. Khởi động hệ thống cơ bản.........................................................................................1035.3.16. Cấu hình apt................................................................................................................1045.3.17. Tasksel.........................................................................................................................106

5.4. Cài đặt mạng với Debian Etch..............................................................................................1085.4.1. Những đặc thù của cài đặt mạng...................................................................................1085.4.2. Những khía cạnh chung cho các phương pháp cài đặt khác nhau................................1085.4.3. Cài đặt module mạng....................................................................................................1095.4.4. Cấu hình mạng..............................................................................................................1105.4.5. Cấu hình apt..................................................................................................................110

5.5. Kết luận.................................................................................................................................1106. Các cấu hình cơ bản......................................................................................................................111

6.1. Hệ thống đăng nhập..............................................................................................................1116.2. Khai thác bash.......................................................................................................................1126.3. Hệ thống khởi động...............................................................................................................114

6.3.1. Grub...............................................................................................................................1156.4. Truy cập các phân vùng và thiết bị khác...............................................................................1176.5. Cấu hình thiết bị ...................................................................................................................120

6.5.1. Bàn phím ......................................................................................................................1206.5.2. Card mạng (dạng Ethernet)...........................................................................................1216.5.3. Card Wifi.......................................................................................................................1246.5.4. Các modem...................................................................................................................1246.5.5. ADSL và PPPoE............................................................................................................1256.5.6. Card âm thanh...............................................................................................................126

Trang 14/232

Page 15: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

6.5.7. Máy in...........................................................................................................................1267. Daemons và các mức chạy...........................................................................................................128

7.1. Daemons...............................................................................................................................1287.2. Các mức chạy........................................................................................................................1307.3 Khởi động hệ thống...............................................................................................................1327.4 Các daemon cơ bản................................................................................................................133

7.4.1. Các lưu ký hệ thống (sysklogd)....................................................................................1337.4.2. Thực thi thường xuyên (cron).......................................................................................1357.4.3. Các thực thi trễ (at và batch).........................................................................................136

8. Cài đặt các ứng dụng....................................................................................................................1388.1. Giới thiệu..............................................................................................................................138

8.2. Hệ thống đóng gói Debian...............................................................................................1388.3. Biên dịch các chương trình mới ...........................................................................................142

9. Hội thảo về các cấu hình cơ bản...................................................................................................1459.1. Giới thiệu..............................................................................................................................1459.2. Trình tải khởi động (Bootloader)..........................................................................................145

9.2.1. Cài đặt Grub..................................................................................................................1459.3. Hệ thống gói..........................................................................................................................147

9.3.1. /etc/apt/sources.list........................................................................................................1479.3.2. apts sẵn sàng..................................................................................................................1499.3.3. dpkg...............................................................................................................................1519.3.4. dselect............................................................................................................................1529.3.5. aptitude..........................................................................................................................152

9.4. locals: cấu hình vùng miền...................................................................................................1529.5. Tệp khởi động chính, /etc/inittab..........................................................................................1539.6. Lắp các thiết bị, /etc/fstab ....................................................................................................1539.7. Cấu hình thiết bị....................................................................................................................154

9.7.1. Thiết lập cấu hình cho chuột.........................................................................................1559.7.2. Thiết lập cấu hình cho các modem................................................................................1569.7.3. Thiết lập cấu hình cho các modem DSL.......................................................................1589.7.4. Thiết lập cấu hình cho các card mạng...........................................................................1589.7.5. Thiết lập cấu hình cho các máy in.................................................................................1609.7.6. Thiết lập cấu hình cho card âm thanh...........................................................................161

9.8. Kết luận.................................................................................................................................16210. Kiến trúc X-Window..................................................................................................................163

10.1. X-Window là gì?.................................................................................................................16310.2. Cấu hình..............................................................................................................................16710.3. Trình quản lý hiển thị X......................................................................................................170

11. Hội thảo về X-Window...............................................................................................................17311.1. Giới thiệu............................................................................................................................17311.2. Cài đặt và thiết lập cấu hình của máy chủ X.......................................................................173

11.2.1. Các chiến lược khác nhau cho việc cài đặt các gói.....................................................17311.2.2. Cài đặt các gói cơ bản.................................................................................................174

11.3. Thiết lập cấu hình cho X.....................................................................................................17611.3.1. Phần “Thiết bị” (Device).............................................................................................176

11.3.2. Phần “Màn hình” (Monitor).............................................................................................17611.3.3. Phần “Màn hình” (Screen)..........................................................................................177

Trang 15/232

Page 16: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

11.3.4. Phần thiết bị đầu vào (“InputDevice”)........................................................................17711.3.5. Phần trình bày máy chủ (“ServerLayout”)..................................................................17811.3.6. Phần “DRI”.................................................................................................................17811.3.7. Phần các tệp (“Files”)..................................................................................................17911.3.8. Khởi động máy chủ.....................................................................................................17911.3.9. Tệp lưu ký ..................................................................................................................179

11.4. Các trình quản lý cửa sổ......................................................................................................18011.5. Trình quản lý phiên X.........................................................................................................18111.6. Trình quản lý hiển thị X......................................................................................................18111.7. Các trình quản lý môi trường đồ họa máy để bàn...............................................................182

11.7.1. GNOME......................................................................................................................18311.7.2. KDE.................................................................................................................................18311.8. Cá nhân hóa một số khía cạnh............................................................................................184

11.8.1. Cá nhân hóa các khía cạnh bản địa.............................................................................18411.8.2. Cá nhân hóa các khía cạnh của mạng..........................................................................185

11.9. Thiết lập cấu hình cho các máy in.......................................................................................18611.10. OpenOffice........................................................................................................................18911.11. Kết luận.............................................................................................................................190

Các phụ lục.......................................................................................................................................191Phụ lục A. Các bảng lệnh.............................................................................................................193Phụ lục B. Trình soạn thảo vi.......................................................................................................198Phụ lục C. Qui trình cài đặt Fedora 7..........................................................................................201Phụ lục D. Các công cụ quản trị .................................................................................................212

Giấy phép Tài liệu Tự do GNU........................................................................................................219

Trang 16/232

Page 17: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

1. Giới thiệu

1.1. GNU là gì?

Để hiểu được toàn bộ phong trào PMTD, chúng ta nên quay ngược về cuối những năm 60, đầu những năm 70. Khi đó, các hàng máy tính lớn đã không trao cho phần mềm giá trị y hệt như nó có ngày nay. Họ từng hầu hết là các nhà sản xuất máy tính mà doanh số chính của họ đã được tạo ra bằng việc bán các máy tính lớn của họ, đi với một số dạng hệ điều hành và các ứng dụng. Các trường đại học đã có quyền để lấy và nghiên cứu các mã nguồn của hệ điều hành cho các mục đích nghiên cứu hàn lâm. Bản thân những người sử dụng có thể yêu cầu mã nguồn từ các trình điều khiển cho tới các chương trình, cho việc thích nghi cho các nhu cầu của họ. Phần mềm đã không được xem là có một giá trị thực và đơn giản nó đi với phần cứng mà nó hỗ trợ. Trong ngữ cảnh đó, các phòng thí nghiệm của Bell (AT&T) đã thiết kế ra một hệ điều hành được gọi là UNIX được đặc trưng bởi sự quản lý có hiệu quả các tài nguyên hệ thống của nó, sự ổn định và tính tương thích của nó với các phần cứng được các nhà sản xuất khác nhau tạo ra (thuần nhất tất cả các hệ thống của họ). Yếu tố cuối cùng này từng rất quan trọng (trước đó, mọi nhà sản xuất đã có các hệ điều hành của riêng họ mà không tương thích với phần còn lại), vì thế nó làm cho UNIX cực kỳ phổ biến.

Stallman, không có các trình điều khiển

Bản thân Stallman nhớ lại phiền phức làm sao khi ông đã phát hiện rằng một công ty từng cung cấp một máy in mới cho phòng thí nghiệm nơi ông từng làm việc đã không muốn trao cho ông mã nguồn của trình điều khiển. Tất cả điều ông từng mong muốn là để sửa đổi nó sao cho máy in đó có thể tự động cảnh báo cho ông khi giấy bị kẹt. Công ty đó đã từ chối cung cấp mã nguồn cho ông.

Dần dần, các hãng lớn đã bắt đầu nhận thức được giá trị của phần mềm: đầu tiên làm như vậy là IBM, vào năm 1965 đã dừng chào mã nguồn hệ điều hành của hãng, trong khi cuối những năm 70 Digital Research đã bắt đầu bán hệ điều hành của riêng hãng. Điều này đã làm cho tất cả các công ty nhận thức được thực tế là phần mềm có thể rất có lợi nhuận và đưa ra được những lợi ích khổng lồ. Sau đó hầu hết các công ty đã bắt đầu miễn cưỡng đưa ra mã nguồn đối với các chương trình và các hệ điều hành của họ và đã bắt đầu bán các chương trình của họ như là giá trị gia tăng cho phần cứng của họ. Trong môi trường đóng ngày một gia tăng này, Richard Stallman (người từng làm việc tại MIT, Viện Công nghệ Massachusetts) đã phẫn nộ thấy rằng điều đó đã trở thành ngày một khắc nghiệt để có được mã nguồn của các chương trình, mà ông đã sử dụng để thích nghi các chương trình đó cho các nhu cầu của ông, như ông đã từng làm thế cho tới khi đó.

Khi đó, Stallman đã quyết định đứng lên vì các lý tưởng của ông và khởi xướng một dự án lớn để thử mở lại mã nguồn các chương trình. Nhận thực được thực tế rằng ông không muốn thuyết phục các công ty đưa ra về điểm này, ông đã đề xuất tạo ra hệ điều hành và các ứng dụng của riêng mình, khởi xướng một dự án gọi là GNU.

Tuyên ngôn đầu tiên của Stallman là đặc biệt thú vị để hiểu những lý do vì sao ông đã tạo ra GNU; trong tài liệu đó ông đã giải thích cho toàn bộ cộng đồng những gì dự án mới bao gồm, cách mà nó có thể được định hướng, và vì sao ông đã phải làm nó. Trong tuyên ngôn ông đã bắt đầu mô tả khái niệm PMTD và vì sao ông tin tưởng các lập trình viên và những người phát triển trên khắp thế giới nên đóng góp vào với ông. Dù trong nhiều trường hợp thì khái niệm PMTD bị lẫn lộn với khái niệm miễn phí hoặc không phải trả tiền cho phần mềm (trong tiếng Anh, free có nghĩa tự do và miễn phí), trong các tài liệu sau này nó đã được làm rất rõ ràng rằng không có lý do nào giải thích vì sao

Trang 17/232

Page 18: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

PMTD nên là miễn phí cả. Chúng ta cần hiểu PMTD có nghĩa là các chương trình mà mã nguồn của chúng có thể chúng ta có được để nghiên cứu, sửa đổi và phân phối lại, mà không có bổn phận phải trả tiền cho điều đó. Những gì chúng ta cần hiểu là chúng ta có thể yêu cầu trả tiền mà chúng ta muốn cho các chương trình và mã nguồn của chúng, cho sự hỗ trợ mà chúng ta có thể đưa ra cho những người sử dụng, cho các cuốn sách chúng ta bán hoặc các tư liệu mà chúng ta cung cấp, hệt như nhiều công ty phân phối GNU/Linux đã làm. Tuy nhiên, không bao giờ, chúng ta có thể bắt buộc những người sử dụng không phân phối phần mềm mà chúng ta bán cho họ. Phải có khả năng để phân phối lại chúng một cách tự do. Nhiều văn bản của Quỹ Phần mềm Tự do (FSF - Free Software Foundation) làm việc với đạo đức nhiều hơn là với kỹ thuật. Chúng ta cần hiểu toàn bộ phong trào như một cách nghĩ hoặc làm mọi điều hơn là chỉ công ty phần mềm nào đó khác làm.

Những nguyên tắc đối với phần mềm được xác định theo 4 quyền tự do sau:

• Tự do 0 chỉ tới quyền tự do có khả năng sử dụng chương trình vì bất kỳ mục đích nào

• Tự do 1 cho phép chúng ta nghiên cứu cách thức chương trình làm việc và thích nghi nó cho những nhu cầu riêng của chúng ta. Truy cập tới mã nguồn là điều kiện tiên quyết để đảm bảo cho quyền tự do này.

• Tự do 2 cho phép chúng ta tự do phân phối các bản sao của phần mềm, giúp các hàng xóm của chúng ta.

• Tự do cuối cùng cho phép chúng ta cải tiến chương trình và làm cho những cải tiến riêng của chúng ta công khai, vì lợi ích của toàn bộ cộng đồng. Truy cập tới mã nguồn cũng là điều kiện tiên quyết để đảm bảo cho quyền tự do này.

Giấy phép Công cộng Chung (GPL - General Public License) đã được phác thảo để đảm bảo các quyền tự do cho phần mềm được dự án phát triển và cho những người sử dụng đầu cuối của phần mềm, và được sử dụng từ đó để bảo vệ tất cả dạng các chương trình này. Giấy phép này đưa những ý tưởng được nhắc tới ở trên ra giấy.

Dự án đã bắt đầu tạo ra các phần mềm trong năm 1984, bằng việc phát triển tất cả các công cụ theo yêu cầu để triển khai một hệ điều hành hoàn chỉnh. Mặc dù việc hiện thực hóa dự án với các đặc tính đó là một qui trình dài lâu và phức tạp, ngay từ đầu nhiều lập trình viên và những người phát triển phần mềm đã say mê với ý tưởng của Stallman và đã bắt đầu cộng tác với ông một cách tự do. Cộng đồng đã không ngừng phát triển, và dần dần các công cụ cần thiết đã xuất hiện (các trình soạn thảo, các trình biên dịch, ...) để triển khai nhân của hệ điều hành, các công cụ đã được phát triển theo yêu cầu. Từ ý tưởng ban đầu từng là để xây dựng một hệ điều hành tương tự như UNIX theo các tiêu chí của POSIX (Giao diện Hệ điều hành Khả chuyển - Portable Operating System Interface). Mặc dù UNIX cũng đã có những vấn đề và các lỗi riêng của nó, thì nó từng, và tiếp tục là, đù tốt để thích nghi cho hầu hết các yêu cầu. Nhiệm vụ thiết kế và viết nhân của hệ điều hành đã được để lại sau cùng. Nó vẫn còn chưa xong hoàn toàn nhân GNU, gọi là Hurd, và vẫn còn trong pha phát triển.

Nhân (Kernel)

Như cái tên của nó chỉ ra, nhân của hệ điều hành là phần cốt lõi làm cho nó hoạt động. Nhân của phần mềm này là những gì quản lý các tài nguyên của máy tính: nó giao tiếp với các thiết bị và ứng dụng được cài đặt, quản trị đúng đắn bộ nhớ, phân phối thời gian xử lý cho tất cả các chương trình, giao tiếp với các thiết bị lưu trữ để lưu các tệp, ...

Hoạt động

1.1 Đọc thông điệp đầu tiên mà Stallman đã viết năm 1983 khi công bố dự án của ông tại: http://www.fsf.org/gnu/initial-announcement.es.html

Trang 18/232

Page 19: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Hoạt động

1.2 Đọc tuyên ngôn GNU ban đầu của Stallman.

Hoạt động

1.3 Đọc Giấy phép Công cộng Chung GPL

1.2 GNU/Linux là gì?

Đối với vấn đề này, trong khi FSF vẫn còn chưa có được một nhân ổn định cho hệ điều hành của mình, thì một giáo sư của Đại học Hà Lan, Andrew Tanenbaum, đã quyết định viết một hệ điều hành sao cho các sinh viên của ông có thể nghiên cứu nó. Giống như Stallman, cho tới khi đó ông đã có khả năng sử dụng mã nguồn UNIX của AT&T để giúp dạy các học trò của mình thiết kế các hệ điều hành. Ý tưởng của ông là viết một hệ điều hành mà bất kỳ ai cũng có thể nghiên cứu và sửa đổi nó nếu họ muốn. Trong năm 1987, ông đã bắt đầu làm việc và đã gọi dự án của mình là UNIX nhỏ (mini UNIX), là MINIX. Vì ông đã không sử dụng một dòng mã nguồn nào trong UNIX của AT&T, không có hạn chế nào để lấy mã nguồn đó để sử dụng nó và sửa đổi nó một cách tự do cả.

Công nghệ vi nhân (micro - kernel)

Công nghệ vi nhân dựa vào việc chia tách các chức năng khác nhau của nhân của một hệ điều hành thành các chương trình giao tiếp với nhau hoàn toàn tách biệt. Điều này làm cho nó rất được module hóa, làm cho việc kiểm thử, dò tìm và kiểm tra lỗi, duy trì, ... , dễ hơn nhiều. Hiện hành, một số hệ điều hành như Amoeba, Chorus, Mach hoặc Windows - NTTM đã tích hợp dạng cộng nghệ này.

Tanenbaum đã muốn tạo ra một hệ thống cho các mục đích nghiên cứu hàn lâm, nên ông đã thiết kế nó bằng việc sử dụng một kiến trúc vi nhân, lý tưởng cho sự dễ dàng toàn diện, có sử dụng công nghệ đổi mới cho từng giai đoạn, được đưa ra một cách linh hoạt, từng là đa nền tảng, ... Điều này từng là một trong những điểm mạnh và điểm yếu của MINIX cùng một lúc, dù hệ thống đó là một viên ngọc nhỏ cho các mục đích nghiên cứu và thiết kế, thì nó khó có khả năng được sử dụng trong các môi trường thực tế. Nó đã được làm cho dễ dàng để hiểu, module hóa và tốt cho các mục đích đào tạo, nhưng không nhanh. Trong bất kỳ trường hợp nào, thì đó cũng không phải là ý định của Tanenbaum; qua năm tháng thì MINIX đã tiến hóa và ngày nay nó tiếp tục được nhiều học sinh trong các trường đại học trên thế giới nghiên cứu.

Đây chính là nới mà Linux tới để bù đắp. Trong khi FSF đã tiếp tục với dự án lớn của mình cung cấp các công cụ để xây dựng một hệ điều hành, Tanenbaum đã thiết kế MINIX cho các mục đích hàn lâm và nhiều công ty đã tiếp tục tiến hóa cho các phiên bản UNIX của họ, thì Linus Torvalds, một sinh viên Đại học Helsinki, đã quyết định tạo ra nhân riêng của mình cho một hệ điều hành mới, Linux, vào tháng 08/1991. Ý tưởng của ông từng là để tạo ra một UNIX cho máy tính cá nhân (PC) sao cho bất kỳ ai muốn cũng có thể sử dụng nó trên máy tính của họ. Sự xuất hiện lần đầu của ông trên vũ đài là trong một tranh luận về MINIX và các hệ điều hành, nơi ông đã đưa ra những ý tưởng sau đây:

Trang 19/232

Page 20: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Nhóm tin: comp.os.minix

Chủ đề: Bạn có muốn thấy hầu hết mọi thứ trong minix?

Ngày: 25/08/1991 20:57:08 GMT Tổ chức: Đại học Helsinki

Chào tất cả những người sử dụng minix.

Tôi đang làm (chỉ là một sở thích riêng, sẽ không lớn và chuyên nghiệp như gnu) một hệ điều hành (tự do) cho các mô phỏng các máy AT 386 (486). Điều này đã và đang được làm kể từ tháng 04, và đang bắt đầu có sẵn sàng. Tôi muốn có bất kỳ ý kiến phản hồi nào về những điều mọi người thích/ không thích trong minix, vì hệ điều hành của tôi giống nó một chút (trình bày vật lý y hệt đối với hệ thống tệp (vì những lý do thực tế) trong số những điều khác).

Tôi hiện đã chuyển bash (1.08) và gcc (1.40), và mọi thứ dường như làm việc được.

Điều này ngụ ý rằng tôi sẽ có vài thứ thực tế trong vòng vài tháng tới, và tôi muốn biết những tính năng nào hầu hết mọi người có thể muốn. Bất kỳ gợi ý nào cũng được chào đón, nhưng tôi không hứa tôi sẽ triển khai chúng.

Nếu chúng ta vào diễn đàn nơi thông điệp đầu tiên này đã xuất hiện, thì chúng ta sẽ thấy mọi người từ khắp nơi trên thế giới đã trở nên nhanh chóng như thế nào trong việc quan tâm tới hệ thống mới này, nó cũng đã có những đặc tính của PMTD vì nó đã sử dụng trình biên dịch và các trình dịch lệnh GNU. Mặc dù trong những lời của chính Torvalds, nếu ông biết được số lượng nỗ lực tham gia cho ý tưởng của mình để làm việc, ông có lẽ không bao giờ có thể đã thực hiện được nó: những nỗ

Trang 20/232

Page 21: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

lực của nhiều chuyên gia CNTT trên toàn thế giới đã làm cho dự án này có khả năng.

Nhân liền khối của Linux

Linux, nhân của GNU/Linux, là thuộc dạng liền khối. Điều này nói cho chúng ta rằng các chức năng khác của nó là không được phân chia thành các module riêng rẽ, mà tất cả chúng tạo nên các phần của chương trình y hệt. Sự bất tiện chính với dạng thiết kế này là việc định vị các lỗi và duy trì rất tốn kém. Mặt khác, hiệu năng của nó lại tốt hơn nhiều so với các dạng thiết kế khác.

Trên thực tế, trong quá trình vài năm đầu tồn tại, GNU/Linux đã được xác định như là hệ điều hành được các cao thủ (hacker) sử dụng. Thực tế là nó từng khó để cài đặt, điều khiển và sự thiếu các trình điều khiển của nó làm cho nó trở thành một công cụ chỉ phù hợp cho những người rất am hiểu về các hệ điều hành. Chính những người sử dụng đầu tiên đã thiết kế ra các trình điều khiển cho các đĩa, máy in, các card mạng..., và những người đó đã bắt đầu tạo ra nhận thức về hệ thống này khắp trên thế giới. Từng tí một, số lượng người sử dụng đã bắt đầu tăng và bây giờ có nhiều công ty và nhóm người sử dụng tạo các phát tán GNU/Linux của riêng họ.

1.3 Các phát tán

Hiện tại, có nhiều phát tán khác nhau dựa vào GNU/Linux. Chúng tồn tại đối với mọi dạng máy tính và các thiết bị điện tử: các máy tính xách tay hoặc để bàn, các máy tính cá nhân (PC) bỏ túi hoặc các thiết bị điện tử cá nhân (PDA), các điểm truy cập mạng không dây, ... Bản chất tự nhiên của PMTD cho phép điều này: bất kỳ ai cũng có thể lấy mã nguồn được phát triển cho tới bây giờ và thích nghi nó cho những yêu cầu của riêng họ. Thực tế là số lượng ngày càng gia tăng các công ty và những người sử dụng đã chọn các hệ thống dựa vào GNU/Linux vì hiệu năng tốt và số lượng các phần mềm sẵn có của nó.

Linux và dự án GNU

Dù nhiều phát tán GNU/Linux được gọi chỉ là Linux, thì điều quan trọng để chỉ ra rằng Linux chỉ là nhân của hệ điều hành và dự án GNU là những gì thực sự đã đóng góp nhiều về cấu trúc cho nó hoạt động được.

Trong tất cả các sự kiện, dù có hàng tá các phát tán, thì một số là phổ biến hơn và đã trở nên được sử dụng rộng rãi. Triết lý của PMTD đã dẫn dắt nhiều công ty, nhiều người sáng tạo ra các phát tán GNU/Linux của riêng họ, không hạn chế sự truy cập tới mã nguồn của họ. Ngay cả như vậy, sự hỗ trợ mà họ đưa ra và tư liệu mà họ bán cung cấp những lợi nhuận, cho phép họ sống được. Cùng lúc, chúng ta nên nhớ trong đầu rằng nhiều trong số các phát tán đó đưa vào cả các phần mềm sở hữu độc quyền (PMSHĐQ) mà một số người sử dụng thích hơn, mặc dù trong nhiều trường hợp có thể có những chương trình tương tự với một giấy phép của PMTD.

Sau đây chúng ta sẽ mô tả ngắn gọn một ít các phát tán GNU/Linux:

• Slackware: một trong những phát tán đầu tiên xuất hiện. Nó đã được Patrick Volkerding tạo ra và đã từng thành công vang dội trong những năm đầu tồn tại của nó.

• Debian GNU/Linux: một trong những phát tán GNU/Linux đầu tiên xuất hiện và tiếp tục tồn tại và tiến hóa. Hệ thống gói cho phép chúng ta phân biệt rõ ràng giữa PMTD và không tự do, giúp chúng ta thiết lập hệ thống với các chương trình giấy phép hoàn toàn là PMTD. Được một nhóm các cộng tác viên phân tán khắp nơi trên thế giới phát triển mà không có bất kỳ công ty nào đứng đằng sau. Dù vậy nó lại là một trong những phát tán ổn định và an ninh nhất đang tồn tại, sự cài đặt và cấu hình hệ thống của nó đòi hỏi tri thức trước đó.

Trang 21/232

Page 22: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

• Red Hat Linux: cùng với SuSE, đây là một trong những phát tán phổ biến nhất. Nó được một công ty tại Mỹ tạo ra và cung cấp các phần mềm chất lượng cao. Nó có một môi trường trực quan làm cho nó rất dễ dàng để cài đặt và cấu hình.

• SuSE Linux: dù nó là phát tán được tạo ra khá gần đây, nó đã có được sự thừa nhận rộng rãi. Nó được một công ty của Đức phát triển và đóng góp nhiều PMSHĐQ chất lượng. Hoàn toàn dễ dàng để cài đặt và duy trì, dù trong một số khía cạnh nó không tuân thủ một số tiêu chuẩn cộng đồng.

• Knoppix: phát tán trong một live-CD dựa vào Debian. Nó tự động dò tìm tất cả các dạng phần cứng và cung cấp môi trường đồ họa KDE mới nhất và bộ phần mềm các ứng dụng văn phòng OpenOffice.org. Rất hữu dụng cho các trình bày và những người sử dụng mới hệ điều hành.

• Ubuntu: đây là một phát tán Linux đưa ra một hệ điều hành trước hết nhằm vào các máy tính để bàn dù nó cũng đưa ra sự hỗ trợ cho các máy chủ. Dựa vào Debian GNU/Linux, trọng tâm chính của Ubuntu là dễ sử dụng, tự do trong giới hạn sử dụng, các phiên bản phát hành thường xuyên (cứ mỗi 6 tháng) và dễ dàng cài đặt. Nó tồn tại ở cả dạng live-CD và có khả năng cài đặt được. Nó tự động dò tìm ra tất cả các dạng phần cứng (thậm chí mới nhất).

Chúng ta không nên quên rằng có những hệ điều hành khác tương thích với UNIX và với các tiêu chuẩn được chú trọng hiện hành. Nhiều trong số những khái niệm và công cụ mà chúng ta sẽ gặp qua khóa học này cũng sẽ phục vụ cho những hệ điều hành khác đó. Đặc biệt, chúng ta có thể nhắc tới GNU/Hurd (nhân được dự án GNU phát triển) và FreeBSD.

Hoạt động

1.4 Hãy đọc mô tả một số phát tán GNU/Linux hiện hành tại: http://www.linuxhq.com/dist.html.

1.4. Các chương trình và tài liệu

Internet luôn đã và đang là phương tiện chính của giao tiếp giữa các lập trình viên và những người sử dụng của PMTD. Vì lý do này, ngay từ lúc bắt đầu sự mở rộng khổng lồ của GNU/Linux thì đã có khả năng tìm thấy được nhiều thông tin về hệ điều hành trên này Internet. Chúng ta có thể tải về hầu hết các chương trình từ Internet, được đóng gói bằng việc sử dụng bất kỳ hệ thống thường dùng nào hoặc trực tiếp từ mã nguồn sao cho chúng ta có thể biên dịch nó trong hệ thống riêng của chúng ta. Hơn nữa, hầu hết các phát tán có thể được tải về từ Internet mà không phải mua bất kỳ gói đặc biệt nào từ các tạp chí chuyên dụng hoặc từ các công ty sản xuất ra chúng. Điều này cũng đúng rằng nếu chúng ta muốn có sự hỗ trợ cho một số phát tán được cung cấp, thì tốt nhất là mua tất cả các tư liệu mà có thể được cung cấp (CD, các sách chỉ dẫn, ...) và hãy đăng ký.

Khi chúng ta bắt đầu làm quen với PMTD và GNU/Linux, chúng ta sẽ nhận thức được tầm quan trọng của việc hiểu được cách tìm tài liệu chúng ta muốn. Khi chúng ta đối mặt với một vấn đề, trước khi bắt đầu đi loanh quanh tự hỏi cách để giải quyết nó, thì chúng ta nên nghĩ rằng có ai đó khác đã có thể đi qua những thứ tương tự rồi. Việc tìm kiếm và tìm thấy tài liệu đáp ứng tốt nhất cho các vấn đề chúng ta gặp phải lúc này lúc khác tiết kiệm cho chúng ta nhiều thời gian và nỗ lực. Cộng đồng PMTD tạo ra hàng trăm tài liệu mà chúng ta có thể tải về tự do từ Internet, hơn nữa còn có cả các diễn đàn thảo luận, các nhóm tin và các trang tin, ...

Trang 22/232

Page 23: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Một số tham chiếu phổ biến nhất có thể giúp tốt nhất cho chúng ta là:

• Tài liệu

◦ Dự án Tài liệu Linux. Chúng ta có thể thấy hầu hết các sách chỉ dẫn đang tồn tại, các sách chỉ dẫn cách làm HOWTOS, các hỏi đáp thường gặp FAQ... trên site này, bổ sung thêm là trong vài ngôn ngữ: http://www.tdlp.org/

◦ Linux tiếng Tây Ban Nha. Dự án tài liệu lớn cho GNU/Linux, các HOWTOS, các sách chỉ dẫn ... bằng tiếng Tây Ban Nha: http://lucas.linux.org.mx

◦ Các sách HOWTO của HOWTOS: http://lucas.linux.org.mx/

◦ Linux.com. Trang với các phần tin, tài liệu khác nhau, ...: http://www.linux.com/

◦ Tài liệu cho Debian GNU/Linux: http://www.debian.org/doc/

• Tin tức

◦ Slashdot. Tin và thảo luận từ cộng đồng GNU/Linux bằng tiếng Anh: http://slashdot.org

◦ Barrapunto. Tương tự như Slashdot bằng tiếng Tây Ban Nha: http://barrapunto.com

◦ Puntbarra. Tương tự như Slashdot trong tiếng Catalan: http://puntbarra.com

◦ Bulmalug. Những người mới sử dụng Linux từ Mallorca và xung quanh đó. Tin tức và các phần chuyên cho các chủ đề đặc biệt: http://bulmalug.net

◦ Tin tức tiếng Tây Ban Nha về GNU: http://www.es.gnu.org/

◦ Linux ngày nay (Linuxtoday). Một trang tin rất thực tế khác được cập nhật với tin tức mới nhất. http://www.linuxtoday.com/

◦ Libertonia. Trang tin. Phần các nguồn tin của nó là đặc biệt thú vị với vô số các đường liên kết tới các trang khác dạng tương tự: http://libertonia.escomposlinux.org

• Các diễn đàn

◦ Foroslinux.org. Vài diễn đàn GNU/Linux về tất cả các dạng chủ đề.

◦ Các diễn đàn an ninh Linux. Các diễn đàn tập trung vào các vấn đề an ninh và tương tự.

• Tìm kiếm

◦ Linux trên Google. Máy tìm kiếm lớn nhất thế giới cũng dành cho GNU/Linux. http://www.google.com/linux

◦ Buscadoc. Máy tìm kiếm cho các tài liệu CNTT tiếng Tây Ban Nha.

• Các phát tán

◦ Trang web chính thức của Quỹ Phần mềm Tự do: http://www.fsf.org/

◦ Trang web chính thức của Debian GNU/Linux: http://www.debian.org/

◦ Trang web chính thức của Red Hat Linux: http://www.redhat.com/

◦ Trang web chính thức của SuSE: http://www.novell.com/es-es/linux/

Trang 23/232

Page 24: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

◦ Trang web chính thức của Slackware Linux: http://www.slackware.com/

◦ Trang web chính thức của Knoppix: http://www.knoppix.com/

◦ Trang web chính thức của Ubuntu: http://ubuntu.org/

• Tải về

◦ Sourceforge. Trang lớn nhất với các dự án PMTD: http://sourceforge.net/

◦ Linux trong Softonic. Phần tải GNU/Linux về từ một trong nhiều trang tải về: http://www.softonic.com/

◦ Tải về. Trang tải về: http://www.download.com/

• Khác

◦ An ninh của Linux. Trang với thông tin thích hợp về tất cả các dạng vấn đề an ninh với GNU/Linux: http://www.linuxsecurity.com/

◦ LinuxHQ: Thông tin chung về các phát tán GNU/Linux: http://www.linuxhq.com/

◦ Tạp chí Linux. Trang tin và các bài báo về GNU/Linux: http://www.linuxjournal.com/

◦ Tạp chí Linux. Tạp chí GNU/Linux: http://www.linuxgazette.com/

◦ Linux-mag. Tạp chí GNU/Linux: http://www.linux-mag.com/

◦ Trang web chính thức của dự án XFree86: http://www.xfree86.org/

Trang 24/232

Page 25: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

2. Các khái niệm và lệnh cơ bản

2.1. Giới thiệu

Trong phần này chúng ta sẽ học những ý tưởng và lệnh cơ bản cần thiết cho việc dịch chuyển xung quan hệ thống. Nếu chúng ta không quen sử dụng dòng lệnh để làm việc với hệ điều hành, thì ban đầu có thể thấy một chút phức tạp, nhưng khi chúng ta sử dụng nó thì chúng ta sẽ thấy các dòng lệnh đó là rất hữu dụng và chúng cho phép chúng ta thực hiện được bất kỳ nhiệm vụ nào chúng ta cần. Hơn nữa, biết cách sử dụng dòng lệnh đúng sẽ là rất hữu dụng khi chúng ta cần kết nối từ xa tới một máy tính nơi mà chúng ta sẽ, tương tự, có khả năng thiết kế các chương trình nhỏ (shell scripts - các scripts biên dịch) để tự động hóa hầu hết những nhiệm vụ quản trị chúng.

Hầu hết các lệnh chúng ta sẽ thấy trong phần này tạo thành một phần của tiêu chuẩn (IEEE POSIX norms) và được tất cả các hệ thống GNU/Linux và UNIX chia sẻ. Mặc dù từng phát tán có các ứng dụng quản lý và quản trị của riêng mình, thì nhiều hành động mà chúng thực hiện cũng có thể được triển khai với các lệnh mà chúng ta sẽ thấy. Sử dụng chúng, chúng ta sẽ có khả năng điều khiển hầu hết tất cả các tính năng của hệ thống và dịch chuyển qua hệ thống một cách có hiệu quả. Bằng việc học cách sử dụng các lệnh đó một cách đúng đắn, chúng ta cũng sẽ học được cách định vị qua bất kỳ hệ thống nào dựa vào GNU/Linux, bất chấp là phát tán nào chúng ta sử dụng.

Mỗi trong số các lệnh hệ thống có xu hướng có một số lượng lớn các tham số khác nhau. Bằng việc truyền các tham số, chúng ta có thể sử dụng lệnh y hệt để triển khai nhiều hành động khác nhau, thậm chí nếu tất cả chúng là cùng một loại dạng y hệt. Trong tài liệu này chúng ta sẽ không chỉ định các tham số khác nhau của từng lệnh mà chúng ta xem xét, vì văn bản đó có thể trở nên quá dài; nó vừa không có ý nghĩa để biết chính xác tất cả các tham số có khả năng cho từng lệnh. Tất cả chúng có một sách chỉ dẫn mở rộng, chỉ định từng lựa chọn, sao cho bất kỳ lúc nào chúng ta cần thực hiện một hành động đặc thù thì chúng ta có thể hướng tới nó. Trong các bài tập xuyên khắp khóa học này, chúng ta sẽ thấy một số lựa chọn đó, dù quan trọng để biết rằng với sách chỉ dẫn đó chúng ta có thể luôn phát hiện ra nhiều thứ khác mà có thể giúp chúng ta triển khai mọi thứ chúng ta cần.

2.2 Người sử dụng và nhóm

Hiện hành, hầu hết các hệ điều hành đang sử dụng là đa người sử dụng và đa nhiệm. Điều này có nghĩa là hơn một người sử dụng có thể làm việc trong hệ thống cùng một lúc, triển khai một hoặc nhiều nhiệm vụ cùng một lúc. Vì lý do này, rất quan trọng cho hệ điều hành phải có các cơ chế cho phép chúng ta kiểm soát và quản lý những người sử dụng một cách đúng đắn: hệ thống truy cập và nhận diện (đăng nhập), các chương trình mà mỗi người sử dụng có thể chạy, các cơ chế an ninh để

Trang 25/232

Lệnh

Một lệnh là một chương trình thực hiện một hành động đặc thù có liên quan tới hệ điều hành.

Tham số của lệnh

Một tham số là một lựa chọn đặc biệt của một lệnh mà chúng ta bổ sung vào sau lệnh, sao cho trước nó là một dấu trống, và thường có một dấu gạch ngang. Ví dụ, nếu

lệnh là list, thì chúng ta có thể bổ sung một tham số như

là list all.

Chính sách các tên

Một chính sách các tên được sử dụng thường xuyên sẽ đặt ra như một sự đăng nhập ký tự đầu của tên người sử dụng đi tiếp sau với họ của người sử dụng đó.

Page 26: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

bảo vệ phần cứng thiết bị, bảo vệ cho các tệp của người sử dụng, …

Hệ điều hành dựa vào UNIX tổ chức tất cả các thông tin trong các nhóm và người sử dụng. Để vào được hệ thống đó, chúng ta cần nhận diện tự bản thân mình, bằng việc sử dụng một đăng nhập và một mật khẩu. Đăng nhập đó có xu hướng sẽ là một tên để nhận diện người sử dụng một cách duy nhất. Đối với các hệ thống với nhiều hơn là chỉ một ít người sử dụng, thì điều quan trọng phải có một chính sách các tên tốt sao cho tất cả những người sử dụng có thể được nhận diện rõ ràng. Mật khẩu phải bao gồm sự kết hợp các ký tự, các con số và các ký tự đặc biệt. Nó không nên bao gồm bất kỳ từ ngữ từ điển hoặc tương tự nào vì điều này có thể gây ra một rủi ro an ninh nghiêm trọng. Hệ thống các mật khẩu là dạng đơn hướng. Điều này có nghĩa là mật khẩu của chúng ta không được lưu giữ ở dạng văn bản, thay vào đó nó được mã hóa và được lưu giữ như nó có. Khi chúng ta vào hệ thống và viết mật khẩu của chúng ta, thì nó được mã hóa và được so sánh với mật khẩu được lưu giữ, nếu chúng khớp nhau, thì sự nhận diện là tích cực, còn nếu chúng không khớp nhau, thì không có sự nhận diện. Điều quan trọng của hệ thống này là thông qua việc mã hóa chúng ta không thể có được mật khẩu gốc ban đầu bằng bất kỳ cách gì. Điều mà tất cả các chương trình được thiết kế để phá các mật khẩu của người sử dụng có thể làm là viết thành mật mã các từ dựa vào các từ điển (có sử dụng các hệ thống tự động để dẫn xuất chúng và tìm ra những phương án) và kiểm thử liệu chúng có trùng với việc mã hóa của bất kỳ mật khẩu nào của người sử dụng hay không. Vì thế, chúng ta cần chọn các mật khẩu của chúng ta cẩn thận; nếu không chúng ta có thể bị tổn thương về an ninh cho toàn bộ hệ thống.

Hiện hành, trong các hệ thống GNU/Linux chúng ta có thể chọn 2 dạng có khả năng mã hóa cho các mật khẩu của người sử dụng. Một dạng được sử dụng kể từ đầu của UNIX là 3DES. Sự bất tiện duy nhất với dạng mã hóa này là nó chỉ cho phép chúng ta có các mật khẩu 8 ký tự (nếu chúng ta viết nhiều hơn, chúng sẽ bỏ qua), không giống như dạng mã hóa khác, gọi là MD5, cho phép chúng ta sử dụng các mật khẩu có độ dài như chúng ta muốn (trong thực tế, MD5 là một hệ thống băm, nhưng cũng có thể được sử dụng để mã hóa các mật khẩu có sử dụng dạng mã hóa thứ 2. Trong bất kỳ trường hợp nào, chúng ta nên nhớ rằng nếu chúng ta cần sử dụng một chương trình đặc biệt để quản lý người sử dụng, như NIS, thì nó có thể không tương thích với MD5.

Mặc dù một người sử dụng là một cá nhân có thể truy cập hệ thống, còn một nhóm là một tập hợp những người sử dụng chia sẻ cùng y hệt các đặc tính, nghĩa là hữu dụng để nhóm họ cùng vào nhau sao cho chúng ta có thể trao cho họ một loạt các quyền đặc thù trong hệ thống. Một người sử dụng phải thuộc về ít nhất 1 nhóm, nhưng cũng có thể thuộc về nhiều hơn 1 nhóm. Hệ thống cũng sử dụng toàn bộ cơ chế này của người sử dụng và các nhóm để quản lý các máy chủ ứng dụng và các cơ chế khác. Vì lý do này, bổ sung thêm vào những người sử dụng thực tế, một hệ thống sẽ có nhiều người sử dụng khác có liên quan tới các nhiệm vụ cần phải được triển khai trong hệ điều hành. Thông thường, dạng người sử dụng này sẽ không có khả năng đi vào hệ thống (sử dụng một đăng nhập thông thường).

Bất kỳ hệ điều hành nào cũng phải có một siêu người sử dụng (gốc root). Người sử dụng gốc root có các quyền ưu tiên tối đa để triển khai bất kỳ hoạt động nào trong hệ điều hành. Người sử dụng gốc root cần phải tồn tại, vì gốc root sẽ có trách nhiệm cho việc quản trị và quản lý các máy chủ, các nhóm... Tài khoản này không nên được sử dụng để làm việc thông thường trong hệ thống. Chúng ta nên vào như gốc root khi thực sự cần thiết, và sẽ sử dụng các tài khoản khác cho người sử dụng thông thường làm việc. Điều này sẽ ngăn ngừa chúng ta gây hại cho hệ thống thông qua vô số

Trang 26/232

NIS

NIS là một loạt các ứng dụng cho phép chúng ta quản lý tất cả những người sử dụng của cùng mạng đó theo cách tập trung trong một máy chủ duy nhất.

Máy chủ

Một máy chủ là một chương trình có trách nhiệm cung cấp một số dạng dịch vụ (như phục vụ các trang web, cho phép những người sử dụng kết nối từ xa ...), thường được kết nối tới Internet.

Page 27: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

các hoạt động hoặc trong việc kiểm thử các chương trình độc hại, ...

Tất cả thông tin của người sử dụng và nhóm được lưu giữ trong các tệp sau:

• /etc/passwd: thông tin (tên, thư mục, thư mục home ...) của người sử dụng.

• /etc/group: thông tin về các nhóm người sử dụng

• /etc/shadow: các mật khẩu được mã hóa của người sử dụng và cấu hình để kiểm tra tính hợp lệ, việc thay đổi chúng...

Sử dụng tệp shadow là lựa chọn tùy ý. Ban đầu, các mật khẩu người sử dụng được mã hóa từng

được lưu giữ trong cùng tệp passwd, nhưng vì các lý do an ninh (nhiều cơ chế cần có khả năng đọc tệp này, nghĩa là từng rất dễ nắm được nó và cố để phá các mật khẩu), cơ chế này đã được quyết

định thay đổi sao cho tệp shadow chỉ có khả năng truy cập được đối với số ít người sử dụng với các quyền ưu tiên đặc biệt trong hệ thống. Lựa chọn này có thể được cấu hình trong quá trình cài đặt hệ thống và nó thường được khuyến cáo sử dụng. Tất cả các tệp đó được tổ chức theo các dòng, nơi mà mỗi dòng xác định một người sử dụng hoặc một nhóm (phụ thuộc vào tệp đó). Trong từng dòng có vài trường tách bạch nhau bằng ký tự “:”. Đối với các nhiệm vụ quản trị, điều quan trọng phải biết các trường đó là cái gì, trường nào và vì sao mà chúng ta sẽ xem xét chúng chi tiết hơn một chút:

Cấu hình mật khẩu

Cũng có khả năng cấu hình hệ thống để sử dụng tệp shadow cho các nhóm (trong trường hợp chúng cần phải

đưa ra được một mật khẩu). Tệp này có thể có tên /etc/gshadow. Thông thường, cấu hình mật khẩu được đưa ra khi hệ thống được cài đặt, dù nó tất cả có thể bị thay đổi và được áp dụng theo ý của chúng ta, bằng việc sử dụng các Module Xác thực Cài cắm được (PAM - Pluggable Authentication Modules) cho Linux, mà là các chương trình có trách nhiệm cho toàn bộ hệ thống xác thực người sử dụng.

• passwd

1) Đăng nhập (login): tên người sử dụng. Không thể có bất kỳ 2 tên nào y hệt nhau, mặc dù có thể có một tên mà trùng với một nhóm hệ thống.

2) Mật khẩu được mã hóa: Nếu chúng ta không sử dụng tệp

shadow, thì các mật khẩu được mã hóa sẽ được lưu giữ

trong trường này. Nếu chúng ta sử dụng tệp shadow, thì tất cả những người sử dụng đang tồn tại trong tệp này

cũng cần phải ở trong tệp shadow đó, và chúng ta cần phải gõ một “x” vào trường đó.

3) Mã của người sử dụng (User ID): số của nhóm mà người sử dụng đó thuộc về. Đây là số mà hệ thống sử dụng để nhận diện người sử dụng. 0 chỉ là một giá trị được dự phòng cho gốc root.

4) Mã của nhóm (Group ID): số của nhóm mà người sử dụng đó thuộc về. Vì một người sử dụng có thể thuộc về nhiều hơn một nhóm, nên nhóm này được gọi là nhóm ban đầu.

5) Các bình luận: trường được giữ để đưa vào các bình luận mà chúng ta mong muốn về người sử dụng. Nó thường được sử dụng để vào tên đầy đủ hoặc một số dạng nhận

Trang 27/232

Phá mật khẩu

Việc phá mật khẩu có nghĩa là có được mật khẩu thông qua sử dụng các chương trình được thiết kế đặc biệt. Những chương trình đó cũng được các quản trị hệ thống sử dụng để phát hiện những người sử dụng nào đang sử dụng các mật khẩu quá dễ dàng để phát hiện (các mật khẩu tốt không thể bị phá theo bất kỳ cách gì mà không sử dụng tới các siêu máy tính lớn).

Page 28: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

diện cá nhân.

6) Thư mục Home (gốc): thư mục Home của người sử dụng là nơi người sử dụng có thể lưu tất cả các tệp của anh ta. Tất cả chúng thường được lưu giữ trong một thư mục hệ

thống (thường là /home/) và được tổ chức theo các nhóm.

7) Trình biên dịch các lệnh: Trình biên dịch các lệnh (shell) là một chương trình đọc mọi thứ chúng ta viết bằng việc sử dụng bàn phím và chạy các chương trình hoặc các lệnh mà chúng ta chỉ định. Có hàng tá chúng, mặc dù thứ được sử dụng phổ biến

nhất không nghi ngờ gì, là bash (GNU Bourne-Again Shell). Nếu trong trường này

chúng ta viết /bin/false/ thì chúng ta sẽ không cho phép người sử dụng thực thi bất kỳ lệnh nào trong hệ thống, thậm chí nếu người sử dụng được hệ thống đăng ký.

• Group

1) Tên nhóm

2) Mật khẩu được mã hóa: Một mật khẩu nhóm được sử dụng để cho phép những người sử dụng của một nhóm đặc thù để thay đổi sang nhóm khác hoặc chạy một số chương trình với các quyền của nhóm khác (trong điều kiện có mật khẩu).

3) Mã nhóm (Group ID): số nhận diện nhóm. Đây là số với nó hệ thống nhận diện các nhóm một cách nội bộ. 0 chỉ là một mã được lưu giữ dành cho nhóm gốc (các quản trị viên).

4) Danh sách người sử dụng: các tên của những người sử dụng thuộc về nhóm, được tách bạch nhau bằng dấu phẩy. Mặc dù tất cả những người sử dụng nên thuộc về một

nhóm cụ thể (được chỉ định trong trường thứ 4 của tệp passwd), thì trường này có thể được sử dụng cho những người sử dụng của các nhóm khác để có cùng các quyền y hệt như của nhóm theo yêu cầu.

• shadow

1) Đăng nhập (login): nó nên là tên y hệt như được sử dụng trong tệp passwd.

2) Mật khẩu được mã hóa.

3) Ngày tháng, kể từ 01/01/1970, cho tới khi mật khẩu được thay đổi lần cuối.

4) Ngày tháng đi qua trước khi mật khẩu có thể được thay đổi.

5) Ngày tháng đi qua trước khi mật khẩu nên được thay đổi.

6) Ngày tháng trước khi mật khẩu hết hạn khi người sử dụng được lưu ý để thay đổi nó.

7) Ngày tháng có thể đi qua sau khi hết hạn mật khẩu, trước khi tài khoản của người sử dụng bị khóa (trừ phi mật khẩu được thay đổi).

8) Ngày, kể từ 01/01/1970, khi tài khoản đã bị khóa.

9) Trường dự phòng.

Khi một người sử dụng vào hệ thống, anh ta được đặt trong thư mục home và trình biên dịch shell được thiết lập cấu hình để chạy được. Người sử dụng bây giờ có thể bắt đầu làm việc. Chỉ gốc root của hệ thống (hoặc những người sử dụng nhóm root) có quyền để điều khiển thông tin của người sử dụng

Trang 28/232

Ngày tháng trong các hệ thống UNIX

Trong các hệ thống UNIX, ngày tháng thường được chỉ ra theo số giây đã trôi qua kể từ ngày 01/01/1970.

Page 29: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

và nhóm, để đăng ký và bỏ đăng ký chúng... Có nhiều lệnh để làm việc với điều này. Hơn nữa, mỗi một người sử dụng có vài tham số cho việc quản lý tất cả các trường chúng ta đã thấy trước đó. Sau đây, chúng ta sẽ xem xét một số các lệnh đó:

• adduser: điều này cho phép chúng ta thêm một người sử dụng mới vào hệ thống. Cách thêm nó (nếu chúng ta không chỉ định bất kỳ thứ gì khác) có thể được cấu hình trong tệp

/etc/adduser.conf. Một số lựa chọn khác nhau có thể được chỉ định bằng việc tham chiếu tới thư mục home, trình biên dịch sẽ được sử dụng...

• useradd: tạo một người sử dụng mới hoặc thay đổi cấu hình mặc định của người sử dụng. Lệnh này và lệnh trước có thể được sử dụng để hoàn thành các nhiệm vụ hệt như nhau.

• usermod: với lệnh này chúng ta có thể sửa hầu hết các trường trong tệp passwd và shadow, như thư mục home, trình biên dịch shell, thời điểm hết hạn mật khẩu...

• chfn: thay đổi thông tin cá nhân của người sử dụng trong các trường bình luận của tệp

passwd.

• chsh: thay đổi trình biên dịch shell của người sử dụng.

• deluser: hạn chế một người sử dụng đối với hệ thống, xóa hoặc lưu tất cả các tệp của người sử dụng phụ thuộc vào các tham số chúng ta đã thiết lập, với một bản sao lưu của chúng hoặc không... Cấu hình được sử dụng mặc định với lệnh này được chỉ định trong tệp

/etc/deluser.conf.

• userdel: lệnh với y hệt các khả năng như lệnh trên.

• passwd: chúng ta có thể sử dụng nó để thay đổi mật khẩu, thông tin về sự hết hạn của mật khẩu của một người sử dụng hoặc khóa hay mở khóa cho một tài khoản đặc biệt nào đó.

• addgroup: cho phép chúng ta thêm một nhóm vào hệ thống.

• groupadd: y hệt như lệnh trước, nhưng với các tham số khác.

• groupmod: cho phép chúng ta sửa thông tin (tên và GID) của một nhóm đặc biệt nào đó.

• delgroup: loại bỏ một nhóm nhất định nào đó. Nếu một người sử dụng vẫn còn trong nhóm gốc ban đầu, thì nhóm đó không thể bị loại bỏ.

• groupdel: như trong trường hợp ở trước.

• gpasswd: chúng ta có thể sử dụng nó để thay đổi mật khẩu nhóm.

Để biết người sử dụng nào chúng ta có thể sử dụng lệnh whoami, mà sẽ chỉ ra sự đăng nhập của

chúng ta. groups cho phép chúng ta biết các nhóm nào chúng ta thuộc về và id sẽ chỉ cho chúng ta người sử dụng và các nhóm. Cũng thú vị để có khả năng trở thành người sử dụng khác mà không

phải thoát khỏi phiên (lệnh login hoặc su) hoặc để thay đổi các nhóm với lệnh newgrp. Chúng ta chỉ nên sử dụng lệnh này khi chúng ta không thuộc về nhóm theo yêu cầu và biết mật khẩu (mà nên

Trang 29/232

Khẩu phần đĩa

Đối với các hệ thống với hàng trăm người sử dụng thì nói chung để triển khai một số dạng cơ chế để hạn chế không gian đĩa mà từng cơ chế đó có thể sử dụng. Trong các hệ thống GNU/Linux, hệ thống này được gọi là khẩu phần (quota).

Page 30: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

phải được kích hoạt trong tệp group). Nếu tất cả điều chúng ta cần là các quyền của nhóm theo yêu

cầu để chạy một lệnh cụ thể, thì chúng ta cũng có thể sử dụng sg.

Tính linh hoạt của GNU/Linux

Như chúng ta có thể thấy, với GNU/Linux chúng ta có hơn một cách thức triển khai các nhiệm vụ nhất định. Đây là tiếp cận tổng thể của hệ thống: chúng ta có thể sửa các tệp trực tiếp và tự chúng ta sửa chúng, bằng việc sử dụng một số lệnh đang tồn tại, tự chúng ta tạo ra chúng... Tất nhiên, chúng ta cũng có thể chọn những gì chúng ta thích nhất.

Như chúng ta đã nhắc tới trước đó, GNU/Linux là một hệ điều hành đa người sử dụng, nghĩa là bất kỳ lúc nào cũng có thể có vài người sử dụng được kết nối tới hệ thống cùng một lúc. Để biết được

có những người sử dụng nào ở bất kỳ thời điểm cụ thế nào, chúng ta có thể sử dụng lệnh who, nó sẽ

chỉ cho chúng ta danh sách những người sử dụng trong hệ thống. w, nó cũng chỉ cho chúng ta những

gì chúng đang làm. Chúng ta có thể giao tiếp với chúng bằng việc sử dụng lệnh write, với nó thông

điệp mà chúng ta đã viết trong màn hình của người sử dụng cụ thể hoặc wall sẽ xuất hiện, viết nội dung của tệp mà chúng ta đã chỉ định cho tất cả những người sử dụng trong hệ thống. Để kích hoạt

hoặc giải hoạt lựa chọn của các thông điệp nhận được thì chúng ta có lệnh mesg. Chúng ta cũng có

thể có một giản đồ cá nhân với một người sử dụng bằng việc sử dụng lệnh talk.

2.3. Hệ thống tệp

2.3.1. Tôn ti trật tự của hệ thống tệp

Bất kỳ hệ điều hành nào cũng cần lưu vô số các tệp: từ các tệp cấu hình hệ thống, tới các tệp lưu ký hoặc các tệp của người sử dụng ... Nói chung, mỗi hệ điều hành sử dụng hệ thống tệp của riêng mình đặc trưng cho nó trong nhiều khía cạnh, như hiệu năng, an ninh, độ tin cậy ... GNU/Linux có khả năng đọc và ghi các tệp với bất kỳ hệ thống tệp nào hiện đang tồn tại, dù đối với root của riêng nó và các thư mục chính thì nó đòi hỏi một hệ thống tệp cho phép các hoạt động nhất định. Nói chung, chúng ta sử dụng dạng ext2, ext3 hoặc ReiserFS. Hệ thống tệp ext2 là phổ biến nhất và được sử dụng rộng rãi. Hiệu năng của nó là khá tốt, nó kết hợp tất cả các dạng cơ chế, an ninh và tinh chỉnh và rất tin cậy. Hệ thống tệp ext3 là sự tiến hóa của nó và kết hợp một công nghệ được biết tới như là ghi nhật ký (journaling). Một trong những ưu điểm chính của công nghệ này là nếu việc cung cấp điện bị cắt và máy tính tắt không đúng cách, thì các hệ thống phục hồi tệp là có hiệu quả hơn. ReiserFS là một dạng mới của hệ thống có kết hợp các công nghệ thiết kế mới để làm cho nó nhanh hơn. Trong quá trình cài đặt, hệ điều hành sẽ hỏi chúng ta trong 3 hệ thống tệp đó thì chúng ta muốn sử dụng cái nào. Thông thường, chúng ta sẽ sử dụng ext2 hoặc ext3 vì chúng đã được kiểm thử hơn nhiều so với ReiserFS.

Hệ thống tệp

Hệ thống tệp là chương trình (hoặc các module của nhân hệ điều hành) có trách nhiệm cho tất cả các hoạt động có liên quan tới việc điều khiển các tệp và lưu trữ. Chúng là những chức năng làm việc với các thiết bị lưu trữ vật lý của máy tính, như đĩa cứng.

Một đặc tính rất quan trọng của tất cả các hệ điều hành dựa vào UNIX là tất cả các thiết bị hệ thống có thể được điều khiển dường như chúng là các tệp. Như vậy, khi chúng ta muốn truy cập nội dung của một đĩa CD, đĩa mềm hoặc bất kỳ thiết bị lưu trữ nào khác, thì chúng ta sẽ phải kích hoạt (mount) nó trong một thư mục hệ thống đang tồn tại rồi và sẽ định vị thông qua nó dường như nó chỉ là một tệp nữa (sử dụng các đơn vị khác như A:, B:, C:, D:, ... là một sơ đồ chỉ tồn tại trong dạng

Trang 30/232

Page 31: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

các hệ điều hành Windows.

Hệ thống tệp ext2

Hệ thống tệp ext2 từng được thiết kế để điều khiển các tệp nhỏ, là những gì một hệ điều hành có xu hướng có nhiều hơn, nhanh hơn. Không thật tốt để điều khiển và vận hành các tệp đa phương tiện lớn, mặc dù chúng ta luôn có thể tinh chỉnh một chút để tùy biến thích nghi nó cho các nhu cầu của chúng ta.

Điều đầu tiên chúng ta cần hiểu rõ là bất kỳ hệ thống tệp nào cũng bắt đầu từ gốc root y hệt, mà chúng ta tham chiếu tới với ký tự “/”. Đây là gốc của toàn bộ hệ thống tệp và chỉ có một. Để tổ chức đúng các tệp, hệ thống cung cấp những gì chúng ta gọi là các thư mục, nơi chúng ta có thể đặt các tệp và nhiều hơn các thư mục. Điều này cho phép chúng ta có được một tổ chức có tôn ti trật tự như được chỉ ra trong hình sau:

Hình 2.1

2.3.2. Các thư mục hệ thống

Hầu hết các hệ điều hành trong thị trường tuân theo tiêu chuẩn FHS, nó chỉ định các đặc tính chính mà bất kỳ hệ điều hành nào cũng có. Chúng bao gồm cách chúng ta nên phân phối các tệp của chúng ta trong các thư mục để tổ chức chúng đúng và có khả năng tìm kiếm chúng nhanh chóng và dễ dàng. Hầu hết các phát tán dựa vào GNU/Linux tuân theo những khuyến cáo đó và chúng ta có thể thấy các thư mục chính sau đây:

• /bin/: các lệnh cơ bản cho tất cả những người sử dụng hệ thống.

• /boot/: các tệp tĩnh được yêu cầu cho việc khởi động hệ thống.

• /dev/: các thiết bị hệ thống.

• /etc/: các tệp cấu hình hệ thống và các ứng dụng được cài đặt trong hệ thống.

Trang 31/232

Page 32: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

• /home/: thư mục cho các tệp ở gốc home của người sử dụng.

• /lib/: các thư viện cơ bản cho nhân của hệ thống và các module của nó.

• /mnt/: điểm kích hoạt tạm thời cho các thiết bị.

• /proc/: các qui trình và các biến của nhân hệ thống...

• /root/: thư mục gốc home cho gốc root của hệ thống.

• /sbin/: các lệnh cơ bản cho root của hệ thống.

• /tmp/: các tệp tạm thời. Phụ thuộc vào phát tán (hoặc cấu hình) mà chúng ta sử dụng thì chúng bị xóa khi hệ thống được khởi động hoặc sau mỗi chu kỳ thời gian nhất định.

• /usr/: cấu trúc tôn ti trật tự thứ 2, được sử dụng cho việc lưu giữ tất cả các phần mềm được cài đặt trong hệ thống.

• /var/: thư mục cho việc in tiện ích spooler, các tệp lưu ký...

Được khuyến cáo cao độ phải lưu giữ và không loại bỏ bất kỳ thư mục nào (hoặc những thư mục mà phát tán của chúng ta đang sử dụng được tạo ra một cách mặc định), vì chúng là cơ bản cho việc vận hành đúng của hệ thống. Thông thường, các qui trình cài đặt ứng dụng mới đòi hỏi tổ chức này và nhiều tệp cấu hình chương trình cần phải được nằm trong các thư mục nhất định. Những gì chúng ta có thể làm mà không có bất kỳ dạng hạn chế nào là tạo ra những thư mục mới trong root của hệ thống hoặc trong bất kỳ thư mục nào khác.

2.3.3. Dịch chuyển

Để dịch chuyển quanh cấu trúc các thư mục, chúng ta cần sử dụng các lệnh để liệt kê các nội dung và thay đổi các thư mục. Khi chúng ta vào hệ thống, đăng nhập sẽ thường đặt chúng ta vào thư mục home của chúng ta, mà thường được tham chiếu tới với ký tự “~”. Nếu chúng ta muốn thấy có gì đó trong thư mục chúng ta đang đứng, thì chúng ta hãy liệt kê các nội dung đó bằn việc sử dụng lệnh

ls. Chúng ta nên nhớ rằng mặc định thì lệnh đó sẽ không chỉ ra cho chúng ta các tệp bắt đầu với

dấu chấm. Bằng việc sử dụng tham số -a thì tất cả các tệp sẽ được liệt kê. Trong tất cả các thư mục có một dấu chấm “.” và cái khác có dấu “..”. Dấu chấm tham chiếu tới thư mục hiện hành, trong khi 2 dấu chấm tham chiếu tới thư mục ngay bên trên thư mục hiện hành một cấp (trong cây tôn ti trật tự). Thông thường, khi chúng ta đang đứng ở gốc root của hệ thống tệp, thì “..” sẽ không tồn tại vì chúng ta đang đứng ở mức cao nhất rồi.

Để thay đổi thư mục chúng ta có thể sử dụng lệnh cd. Nếu chúng ta không thêm bất kỳ tham số nào thì chúng ta sẽ được đưa về thư mục home của chúng ta một cách mặc định. Thông thường, chúng ta có xu hướng chỉ ra nơi chúng ta muốn tới, theo cách tương đối hoặc tuyệt đối. Theo cách tương đối, nó có nghĩa là chúng ta sẽ bắt đầu từ thư mục mà chúng ta đang đứng ở thời điểm đang thực

hiện lệnh. Ví dụ, nếu chúng ta đứng trong thư mục /usr/bin/ và chúng ta muốn đi tới /root/, thì

chúng ta nên vào lệnh sau: cd ../../root (2 dấu chấm đầu chỉ /usr/ và 2 dấu chấm sau chỉ gốc

root / của hệ thống, từ đó chúng ta có thể truy cập được /root/). Theo cách tuyệt đối, chúng ta luôn

bắt đầu từ gốc root, nghĩa là lệnh chúng ta có thể sử dụng trong ví dụ trước có thể là: cd /root. Để

biết thư mục nào chúng ta đang đứng thì chúng ta có thể sử dụng lệnh pwd.

Trang 32/232

Page 33: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

2.3.4. Các liên kết

Các cơ chế khác mà hầu hết các hệ thống tệp cung cấp được biết như là các đường liên kết. Một liên kết là một cầu nối tới một tệp hoặc thư mục thuộc về hệ thống; một tham chiếu chúng ta có thể đặt ở bất kỳ nơi đâu chúng ta muốn và hành động như một sự truy cập trực tiếp tới bất kỳ thứ gì khác. Cơ chế này cho phép chúng ta truy cập các tệp hoặc thư mục nhanh hơn và thuận tiện hơn, không phải dịch chuyển qua trật tự các thư mục. Hãy xem xét điều này bằng một ví dụ: hãy tưởng tượng rằng chúng ta là một người sử dụng (user1) thường xuyên cần truy cập thư mục

/usr/share/man/man3/. Thay vì viết lệnh dài đưa chúng ta tới thư mục đó theo yêu cầu mỗi lần chúng ta cần đi tới đó, thì chúng ta có thể tạo ra một liên kết trong thư mục của chúng ta mà ngay

lập tức tái định hướng chúng ta đi tới đó. Lệnh ln -s /usr/share/man/man3 mmm có thể tạo chiếc

cầu này cho chúng ta, được gọi là mmm. Người sử dụng chỉ cần viết (từ thư mục home) cd mmm và hệ

thống sẽ tự động tái định hướng anh hoặc chị ta tới /usr/share/man/man3. Quan trọng phải nhớ

trong đầu rằng khi thực liện một lệnh cd .. để đi tới thư mục ở trên, thì chúng ta có thể quay về

thư mục home và không tới được usr/share/man/, vì chúng ta đã truy cập nó từ liên kết của chúng ta. Chúng ta có thể trực quan hóa sơ đồ này bằng đồ họa như sau:

Hình 2.2

Khi chúng ta đã tạo ra liên kết trong ví dụ trước mà chúng ta đã đưa

vào tham số -s cho lệnh đó. Điều này chỉ ra rằng chúng ta mong muốn tạo ra một liên kết có tính biểu tượng. Các liên kết có tính biểu tượng có nghĩa rằng chúng ta chỉ vừa tạo ra một con trỏ hoặc cầu nối tới tệp hoặc thư mục, sao cho nếu chúng ta xóa tệp đích, thì liên kết có thể chỉ

tới đâu đó. Nếu chúng ta không thêm tham số -s vào thì chúng ta có thể tạo ra những gì được biết tới như là một liên kết cứng mà, không giống như liên kết trước đó, tạo ra một sự trùng lắp của tệp đó. Trong thực tế, về mặt nội bộ nó không chính xác là một sự đúp bản; giống như là 2 khoản chỉ tới cùng một dữ liệu y hệt. Điều này có nghĩa là nếu chúng ta sửa 1 trong 2 liên kết, thì cái kia sẽ là y hệt. Ưu thế của dạng liên kết này là nếu chúng ta xóa 1 trong 2 bản sao của tệp đó, thì cái kia sẽ vẫn được giữ

Trang 33/232

Tạo các liên kết cứng

Một liên kết cứng chỉ có thể được tạo ra giữa các tệp hoặc các thư mục trong cùng y hệt đơn vị vì cơ chế nội bộ được sử dụng để quản lý chúng.

Page 34: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

lại. Dạng liên kết này thường không được sử dụng vì nó làm phức tạp cho sự quản lý và điều khiển tệp (luôn tốt hơn để có một bản sao duy nhất của các tệp). Hơn nữa, nếu chúng ta tạo ra một liên kết cứng cho một thư mục, thì tất cả các tệp và thư mục con bên trong nó cũng có thể sẽ được tham chiếu tới. Vì lý do này, chỉ gốc root của hệ thống có thể tạo các liên kết cứng tới các thư mục. Sự khác biệt khác là với một liên kết có tính biểu tượng mà chúng ta có thể thấy tệp nào chúng ta đang trỏ tới, nhưng với một liên kết cứng thì chúng ta không thể (vì cơ chế được sử dụng một cách nội bộ đối với chúng).

2.3.5. Các quyền

Trong bất kỳ hệ điều hành đa người sử dụng nào chúng ta cũng cần các tệp được lưu giữ trong đĩa của chúng ta có một loạt các tính năng cho phép chúng ta thấy chúng, sửa đổi chúng hoặc chạy chúng cho những người sử dụng mà chúng ta xác định. Mặc dù có vài lựa chọn thay thế cho việc lưu trữ điều này, thì GNU/Linux sử dụng hệ thống cổ điển cho những người sử dụng và nhóm, cho phép chúng ta bất kỳ cấu hình có khả năng nào. Những gì làm chúng ta quan tâm là để xác định, đối với mỗi tệp hoặc thư mục, người sử dụng và nhóm nào nó thuộc về và các quyền nào nó có cho từng trong số các tệp và thư mục đó, cũng như cho phần còn lại của những người sử dụng hệ thống.

Bằng việc thực hiện lệnh ls -1 chúng ta thấy cách trong mỗi tệp và thư mục mà chúng ta đứng ở trong, một dòng tương tự như sau xuất hiện:

-rwxr-xr-x 1 user1 group1 128931 Feb 19 2000 gpl.txt

10 ký tự đầu tiên (bắt đầu từ bên trái) nói cho chúng ta quyền của tệp như sau:

• Ký tự 1: nó nói cho chúng ta liệu đó là một tệp hay thư mục. Nếu đó là một tệp, thì ký tự “-” sẽ được hiển thị, còn nếu là thư mục thì ký tự “d” sẽ hiển thị.

• Ký tự 2, 3, 4: nói cho chúng ta, một cách tương ứng, các quyền đọc, ghi và chạy đối với người chủ sở hữu tệp. Trong trường hợp không có quyền tương ứng nào được phép, thì chúng ta sẽ thấy ký tự “-” nếu không thì là “r”, “w” hoặc “x”, phụ thuộc vào việc nếu chúng ta có thể đọc, ghi hay chạy. Nếu quyền chỉ là “x”, khi chương trình được chạy thì nó sẽ làm với các quyền của người nào đã khởi xướng nó.

• Ký tự 5, 6, 7: những ký tự này có chính xác nghĩa y hệt như các ký tự ở trên, nhưng tham chiếu tới các quyền được trao cho những người sử dụng của nhóm mà tệp đó thuộc về.

• Ký tự 8, 9 và 10: như trường hợp ở trên, nhưng cho những người sử dụng khác của hệ thống. Sau 10 ký tự đó chúng ta có một con số nói cho chúng ta số các đường liên kết cứng mà tệp đó có. Đối với các thư mục, con số này chỉ ra có bao nhiêu thư mục trong đó cũng như số lượng các liên kết cứng mà nó có (khi không có gì, thì số đó là 2, vì những lý do quản lý nội bộ của hệ điều hành).

Tiếp theo chúng ta xem chủ sở hữu tệp và nhóm, theo sau là kích cỡ mà nó chiếm (theo byte) và ngày tháng mà nó lần cuối được sửa đổi. Đối với tất cả các tệp thì ngày tháng tạo, truy cập và sửa

đổi lần cuối được lưu giữ, mà chúng ta có thể điều khiển bằng việc sử dụng lệnh touch. Cuối cùng chúng ta có tên tệp, trong trường hợp nhạy cảm và chúng ta có thể có bất kỳ dạng ký tự nào mà không có bất kỳ vấn đề gì.

Cơ chế thiết lập mã người sử dụng SetUserId

Cơ chế SetUserId là rất hữu dụng khi một chương trình đòi hỏi các quyền chủ sở hữu để truy cập tới các tệp

Trang 34/232

Page 35: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

nhất định hoặc để triển khai một số dạng hoạt động trong hệ thống. Trong mọi trường hợp, chúng ta cần rất thận trọng với dạng tệp này vì nó có thể gây ra những hỏng hóc về an ninh hệ thống nếu sử dụng không đúng.

Để thay đổi các quyền của một tệp cụ thể, chúng ta có thể sử dụng lệnh chmod. Chúng ta cần nhớ rằng chỉ người chủ sở hữu tệp (hoặc gốc root) mới có thể thay đổi các quyền này, vì nếu không, cơ chế đó có thể không còn ý nghĩa nữa. Chúng ta có thể sử dụng lệnh này theo nhiều cách khác nhau, nhưng 2 cách thường dùng nhất là như sau:

• Cách sử dụng thứ nhất là dạng của chmod XXX file name (tên tệp). Các chữ X phải là 3 con số từ 0 đến 7. Số đầu tiên chỉ các quyền chúng ta muốn thiết lập cho người sử dụng, số thứ 2 cho nhóm và số thứ 3 cho tất cả những thứ khác. Để dịch các quyền mà chúng ta sẽ áp dụng có sử dụng các số từ 0 tới 7 một cách đúng đắn, chúng ta cần sử dụng sự biểu diễn nhị phân của số đó theo yêu cầu, nghĩa là số đầu sẽ chỉ các quyền ghi, số thứ 2 chỉ quyền đọc và số thứ 3 chỉ quyền chạy. Trong từng trường hợp, 0 có nghĩa là quyền theo yêu cầu không được đưa ra và 1 là có. Chúng ta có thể thấy mối quan hệ này trong bảng sau:

Bảng 2.1

Trình bày thập phân Trình bày nhị phân Ý nghĩa

0 000 ...

1 001 ..x

2 010 -w-

3 011 -wx

4 100 r--

5 101 r-x

6 110 rw-

7 111 rwx

• Cách khác sử dụng lệnh này là chỉ dứt khoát quyền mà chúng ta muốn áp dụng hoặc loại bỏ đối với tệp đó. Cách làm này là bằng việc trước hết chỉ định, liệu chúng ta có tham chiếu tới các quyền của người sử dụng, hay nhóm, hay tất cả những thứ khác hay không, với các ký tự “u”, “g” hoặc “o” một cách tương ứng. Sau đó, chúng ta sẽ bổ sung thêm một dấu cộng (+) hoặc dấu trừ (-) phụ thuộc vào việc liệu chúng ta có muốn thêm hoặc hạn chế thuộc tính đó, mà chúng ta sẽ chỉ định với “r”, “w”, “x” hoặc “s” (cái sau là trong trường hợp của SetUserId). Hơn nữa, chúng ta có thể triển khai tất cả những kết hợp có khả năng, tham chiếu tới hơn 1 quyền và/hoặc người sử dụng. Ví

dụ, chmod go+r gpl.txt có thể trao một quyền đọc cho nhóm

và những người sử dụng khác đối với tệp gpl.txt.

Để thay đổi chủ sở hữu tệp, chúng ta có lệnh chown, có thể chỉ được root sử dụng vì các lý do an

ninh. Để thay đổi nhóm của một tệp đặc biệt, chúng ta có thể sử dụng lệnh chgrp. Vì chúng ta có thể tưởng tượng, khi một người sử dụng tạo một tệp mới, thì hệ thống sẽ đặt người sử dụng mà tạo ra nó như là người chủ sở hữu và chỉ định nó là thuộc về nhóm ban đầu của người sử dụng đó. Các

quyền được thiết lập mặc định khi một tệp được tạo ra có thể được cấu hình thông qua lệnh umask,

Trang 35/232

Chính sách an ninh tệp

Nếu những người sử dụng được phép thay đổi chủ sở hữu tệp, thi an ninh của hệ thống có thể bị tổn thương, vì các hành động độc hại có thể được triển khai và sau đó chủ sở hữu tệp đó đã thay đổi để đổ tội cho người sử dụng khác.

Page 36: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

mà chúng ta sẽ phải trao cùng y hệt ký hiệu của 3 số thập phân từ 0 tới 7 như chúng ta đã xem xét ở trên nhưng với các phụ kiện. Ví dụ, nếu chúng ta muốn các tệp của chúng ta sẽ được khởi tạo với

các quyền rwr--r--, thì chúng ta nên viết umask 133.

2.3.6. Việc điều khiển, các mẫu và tìm kiếm

Bây giờ chúng ta biết cách để di chuyển phù hợp qua các thư mục một cách có tôn ti trật tự, chúng ta cũng cần biết cách để sao chép, loại bỏ và điều khiển các khía cạnh khác của tệp theo đúng cách.

Lệnh rm là một lệnh chúng ta sử dụng để loại bỏ các tệp chúng ta chỉ

định. Để loại bỏ một thư mục, chúng ta có thể sử dụng lệnh rmdir, dù nó sẽ chỉ xóa được thư mục một khi thư mục đó rỗng (nếu chúng ta muốn xóa hoàn toàn một thư mục và tất cả các nội dung của nó, thì

chúng ta có thể sử dụng lệnh rm r). Để sao chép các tệp từ chỗ này

sang chỗ khác, chúng ta có lệnh cp, cần phải được nói tệp hoặc thư mục gốc ban đầu nào và chỗ hoặc tên của đích đến, thậm chí nếu đó là bên trong thư mục hiện hành. Vì

thế, nếu chúng ta muốn sao chép tệp /home/user1/gpl.txt vào thư mục hiện hành (và với cùng

tên) thì chúng ta nên gõ cp /home/user1/gpl.txt, nghĩa là sử dụng dấu chấm (.). Nếu thay vào

việc sao chép các tệp chúng ta muốn chuyển chúng, chúng ta có thể sử dụng lệnh mv. Một cơ chế rất hữu dụng được hệ thống đưa ra là các mẫu. Cho tới nay chúng ta đã xem cách triển khai những hoạt động nhất định trong một tệp cụ thể. Khi chúng ta đang điều khiển một hệ thống, thì chúng ta sẽ thường có quan tâm trong việc áp dụng một trong những hành động mà chúng ta đã xem xét, nhưng qua một nhóm lớn các tệp. Các mẫu sẽ cho phép chúng ta áp dụng các hoạt động mà chúng ta muốn chỉ định với chỉ một lệnh cho vài tệp mà thỏa mãn một loạt các đặc tính nhất định. Chúng ta nên xem xét chúng như những mẫu template các tên, với ký tự “*” có nghĩa bất kỳ chuỗi ký tự có khả năng nào và với dấu “?” phục vụ như một đại diện cho bất kỳ ký tự nào. Vì thế, nếu chúng ta muốn liệt kê tất cả các tệp bắt đầu với “s”, đi theo sau bất kỳ ký tự nào khác, rồi tiếp đến là một ký

tự “a”, và sau đó bất kỳ chuỗi nào khác, thì chúng ta có thể sử dụng ls s?a*. Giữa các dấu “[ ]” có thể đưa vào các ký tự khác, chỉ ra rằng mẫu đó là thành công nếu chúng ta thấy một trong số chúng trong tên. Ví dụ, nếu chúng ta muốn tham chiếu tới tất cả các tệp bắt đầu bằng “a” hoặc “b” và tiếp

tục với bất kỳ chuỗi nào khác mà chúng ta có thể viết mẫu [ab]*. Nếu sau “[” mà chúng ta gõ ký

tự ! ([!ab]*) thì chúng ta có thể chỉ định mẫu trùng với bất kỳ tệp nào không bắt đầu với “a” hoặc “b”. Cuối cùng, để giúp cho những tìm kiếm nhất định, bên trong “[ ]” chúng ta có thể chỉ định các lớp ký tự như sau: [:class:], trong đó lớp class có thể là bất kỳ thứ gì được chỉ ra trong bảng sau:

Bảng 2.2

Lớp Ý nghĩa Lớp Ý nghĩa

alnum [A-Za-z0-9] alpha [A-Za-z]

blank [\] cntrl control cars (các ô tô kiểm soát)

digit [0-9A-Fa-f] graph printable cars (các ô tô in được - không có dấu trống)

lower [a-z] print printable cars (các ô tô in được - có dấu trống)

punct [.,i!?:;]... space [ ]

upper [A-Z] xdigit [-9A-Fa-f]

Trang 36/232

Cú pháp mẫu

Cú pháp mẫu có thể rất phức tạp, cho phép chúng ta tham chiếu tới bất kỳ tập hợp tệp nào mà chúng ta muốn.

Page 37: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

A-Z chỉ các ký tự từ A tới Z, \t là bộ lập bảng và \n là nuôi dòng.

Tất nhiên, chúng ta có thể sử dụng các mẫu với bất kỳ lệnh nào mà chúng ta đã thấy và hầu hết chúng là những thứ chúng ta sẽ xem xét tiếp sau đây. Hơn nữa, hầu hết các lệnh đó để liệt kê, loại bỏ, sao chép... các tệp cũng có thể được thực hiện định kỳ. Vì thế, đầu vào và sự chạy của lệnh tương ứng sẽ được thực hiện trong tất cả các tệp và thư mục từ những nơi chúng ta đứng cho tới khi chúng ta tới được mức cuối cùng trong tôn ti trật tự của hệ thống.

Dạng hoạt động rất hữu dụng khác là tìm kiếm tệp. Chúng ta có vài lệnh cho phép chúng ta thực hiện các dạng tìm kiếm khác nhau qua tất cả các tệp hệ thống.

Bảng 2.3

findĐây là lệnh linh hoạt nhất cho việc thực thi hoạt động này. Nó cho phép chúng ta lọc các tệp để tìm ra những tệp với tên đặc biệt, được sửa đổi hoặc được tạo ra trong một ngày cụ thể, có các quyền nhất định... Nhược điểm duy nhất là nó không sử dụng bất kỳ dạng cơ chế nào để tăng tốc tìm kiếm, nghĩa là nó có thể mất khá lâu thời gian.

locateĐây là một lệnh khác, không giống lệnh ở trên, sử dụng một cơ sở dữ liệu nội bộ thường xuyên được cập nhất, cho phép chúng ta thực hiện tìm kiếm nhanh hơn. Chúng ta cần nhớ rằng các kết quả sẽ không luôn được cập nhật, tuy nhiên, bổ sung thêm vào

thực tế rằng chúng ta không thể tiến hành tìm kiếm linh hoạt được với find.

whereis Cuối cùng, whereis được định hướng vào việc tìm kiếm các tệp nhị phân (có khả năng chạy được), hơn là các tệp mã nguồn cho một chương trình đặc biệt.

2.3.7. Dạng và nội dung tệp

Chúng ta có thể có các dạng tệp khác nhau trong hệ thống của chúng ta: các tệp chạy được, văn bản, dữ liệu... Không giống như các hệ thống khác, sử dụng mở rộng tệp để xác định dạng tệp, GNU/Linux sử dụng một hệ thống gọi là các số ma thuật (magic number), mà qua một số ma thuật xác định dạng tệp đối với dữ liệu của nó (một loạt kiểm

thử được chạy để xác định dạng tệp là gì). Lệnh file chỉ ra điều này.

Nếu chúng ta cần thấy nội dung một tệp, một trong những lệnh cơ bản

là cat. Bằng việc truyền tên hoặc các tên tệp mà chúng ta muốn thấy, nó sẽ hiển thị chúng trên màn hình. Chúng ta nên cố gắng không chỉ ra các tệp dữ liệu hoặc chạy được trên màn hình, vì việc gạt bỏ các ký tự không in được có thể làm cho bảng điều khiển (console) đầy các ký tự không thể hiểu

(chúng ta có thể luôn khởi tạo lại được bằng việc gõ vào reset hoặc tset). Đối với các tệp rất lớn,

tốt hơn hết là sử dụng các lệnh less hoặc more, cho phép chúng ta dịch chuyển tăng dần từng nấc qua tệp. Nếu tệp đó là đạng nhị phân và chúng ta muốn thấy những gì nó chứa, thì chúng ta có thể

sử dụng các lệnh hexdump hoặc od để thấy nội dung ở định dạng số hệ 16 (hexadecimal) hoặc các

trình bày khác. string sẽ tìm kiếm các chuỗi ký tự bên trong một tệp nhị phân cho chúng ta và hiển thị chúng trên màn hình.

Một dạng khác của các lệnh hữu dụng là những lệnh mà tìm kiếm một mẫu nhất định trong nội

Trang 37/232

Lệnh Updatedb order

Nếu chúng ta muốn cập nhật cơ sở dữ liệu có sử dụng lệnh

locate, thì chúng ta có thể sử

dụng aupdatedb order.

Phần mở rộng tệp

Sử dụng phần mở rộng tệp để xác định dạng tệp nào chúng ta có không phải là rất có hiệu quả, vì bất kỳ ai cũng có thể thay đổi nó để tạo ra sự lẫn lộn và các lỗi của hệ thống.

Page 38: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

dung tệp. Với lệnh grep, chúng ta có thể thêm tên tệp như là tham số thứ 2 và khi tham số đầu là mẫu mà chúng ta muốn tìm kiếm (sử dụng cú pháp mà chúng ta đã xem xét trước đó, được mở rộng cho các lựa chọn khác). Hơn nữa, lệnh này cho phép chúng ta thực hiện nhiều nhiệm vụ khác, như

tính tới số dòng trong đó mẫu xuất hiện (tham số -c)... Với cut chúng ta có thể tách riêng nội dung của mỗi dòng tệp trong các trường chỉ định các tệp tách, mà là rất hữu dụng cho việc tự động hóa các nhiệm vụ quản trị hệ thống. Chúng ta cũng có thể lấy một số dòng đặc biệt từ đầu tới cuối của

một tệp, bằng việc sử dụng các lệnh head và tail, một cách tương ứng. Với lệnh wc chúng ta có thể tính số lượng các dòng chữ, độ dài tối đa của dòng tệp... Cuối cùng, để kết thúc phần nhỏ này về điều khiển tệp, chúng ta sẽ xem xét cách so sánh các tệp khác nhau. Như với tất cả các hoạt động

khác, chúng ta có vài lệnh để làm việc này. diff,cmp và comm thực hiện các dạng so sánh khác

nhau, có sử dụng các phương pháp khác nhau đối với các tệp mà chúng ta chỉ định. sdiff, cũng cho phép được trộn, khi chúng ta chọn.

2.4. Các tiến trình

Thực tế hệ điều hành là đa nhiệm ngụ ý rằng chúng ta có thể khởi tạo hơn một chương trình cùng một lúc. Một tiến trình không gì hơn là một chương trình hoặc ứng dụng được tải lên bộ nhớ và sẽ được chạy. Mặc dù máy tính của chúng ta có thể chỉ có 1 CPU, thì hệ điều hành có trách nhiệm chia sẻ thời gian xử lý sao cho vài tiến trình có thể triển khai các hoạt động của chúng, trao ấn tượng rằng chúng tất cả đang được chạy cùng một lúc. Để nhận diện từng tiến trình một cách rõ ràng, nhân hệ thống chỉ định chúng một số mã PID (Mã nhận diện tiến trình - Process IDentification). Mặc dù chúng ta có thể nghĩ về việc tham chiếu tới chúng chỉ bằng tên, thì số này là cơ bản vì cách này chúng ta có thể chạy được cùng y hệt chương trình bao nhiêu lần tùy thích, và cũng chạy những cài đặt khác nhau của nó. Để biết được các tiến trình nào đang được chạy, chúng

ta có thể sử dụng lệnh ps. Để khai thác cơ chế các tiến trình này sâu hơn, chúng ta sẽ thảo luận một số tham số mà chúng ta có thể áp dụng cho lệnh này chi tiết hơn:

• T: lựa chọn này tới một cách mặc định và nói cho chúng ta rằng chúng ta sẽ được thấy chỉ những chương trình nào đang được chạy trong máy đầu cuối mà chúng ta có hoặc từ đó các tiến trình được khởi xướng.

• -a: chỉ cho chúng ta các tiến trình của tất cả các máy đầu cuối của hệ thống.

• -: chỉ cho chúng ta tất cả các tiến trình của hệ thống. Nếu chúng ta chạy lệnh này, thì chúng ta sẽ thấy rằng bổ sung thêm vào các chương trình đang được những người sử dụng cho chạy, còn có những tiến trình khác nữa. Nhiều trong số đó chạy các chức năng theo yêu cầu của hệ điều hành để hoạt động đúng, những tiến trình khác được cấu hình như các máy chủ ứng dụng …

• -l: nó hiển thị thông tin tăng cường cho từng tiến trình, như thời gian CPU được sử dụng, máy đầu cuối trong đó nó được chạy... Trong cột 2 chúng ta cũng có thể thấy tình trạng của tiến trình. Mặc dù hệ thống có thể có nhiều tiến trình đang được chạy cùng một lúc, thì điều này không có nghĩa là tất cả chúng đòi hỏi thời gian không đổi của CPU. Ví dụ, khi các trang web của một máy chủ không có yêu cầu, thì nó không cần thực hiện bất kỳ hoạt động nào cả. Mặc dù trong bộ nhớ sẵn sàng để chạy ở thời điểm nó nhận được một yêu cầu, thì tốt

Trang 38/232

Quản lý các tiến trình

Quản lý tiến trình là một khía cạnh sống còn của hệ điều hành, vì nó xác định thời gian trả lời ứng dụng của chúng ta, thời gian sử dụng CPU và bộ nhớ có hiệu quả.

Page 39: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

hơn cho nó không truyền qua CPU bất kỳ lúc nào, vì CPU có thể sau đó được sử dụng cho các tiến trình khác mà cần tới nó. Về nội bộ, hệ điều hành có một loạt các cơ chế rất hiệu quả được triển khai cho việc quản lý tất cả các dạng hoạt động đó. Vì thế, một tiến trình có thể có bất kỳ tình trạng nào sau đây (được hiển thị với ký tự tương ứng):

◦ D: tiến trình không liên tục. Dạng tiến trình này thường có xu hướng thuộc về đầu vào/đầu ra của một số thiết bị mà có thể bị nguy hại nếu để không được chăm sóc.

◦ R: tiến trình mà khi lệnh được chạy thì cũng sẽ được chạy, nói cách khác, tất cả chúng nằm trong hàng đợi chạy. Hàng đợi chạy tiến trình là nơi chúng ta đặt tất cả các tiến trình chia sẻ thời gian của CPU.

◦ S: tiến trình ngủ im hoặc treo một số dạng sự kiện đối với hệ thống để đánh thức nó và đặt nó vào hàng đợi chạy.

◦ T: tiến trình bị dừng vì người sử dụng hoặc hệ thống.

◦ Z: tiến trình ma (nửa sống nửa chết): tình trạng này chỉ rằng tiến trình đã có một số dạng hỏng hóc và không làm việc đúng. Thường thì, tốt hơn là loại bỏ dạng tiến trình này.

• Lệnh rất hữu dụng khác là top, nó nói cho chúng ta một cách tương tác về các tiến trình của hệ thống, sử dụng CPU, bộ nhớ tự do và được sử dụng, RAM được từng tiến trình sử dụng... Chương trình này là rất phù hợp khi hệ thống không đáp ứng phù hợp hoặc khi chúng ta lưu ý thấy một lỗi lạ, vì nó giúp chúng ta nhanh chóng tìm thấy tiến trình đang tác động tiêu cực tới hiệu năng của hệ thống.

Như chúng ta thấy, hệ thống nói cho chúng ta về tất cả các khía cạnh có khả năng của các tiến trình hệ thống. Hơn nữa, chúng ta có thể gửi các tín hiệu nhất định tới các tiến trình để thông báo cho chúng về một số sự kiện, để bỏ chúng ra khỏi hàng đợi chạy, loại bỏ chúng, trao cho chúng ưu tiên cao hơn... Biết cách để điều khiển tất cả các khía cạnh đó đúng đắn cũng rất quan trọng, vì nó sẽ cho phép chúng ta sử dụng máy tính của chúng ta có hiệu quả hơn. Ví dụ, nếu chúng ta là các quản trị viên của một trung tâm tính toán, nơi mà hầu hết các ứng dụng được chạy đòi hỏi nhiều thời gian của CPU, chúng ta có thể cấu hình cho hệ thống sao cho các ứng dụng cấp bách nhất được chạy với ưu

tiên cao hơn so với các ứng dụng khác và kết thúc trước. Lệnh kill cho phép chúng ta gửi các tín hiệu tới các tiến trình trong đó chúng ta có quan tâm. Nói chung, tất cả các chương trình được thiết kế để nhận dạng tín hiệu này. Vì thế, phụ thuộc vào dạng tín hiệu nhận được, chúng sẽ biết dạng hoạt động nào để thực hiện. Có nhiều dạng tín hiệu

khác nhau mà chúng ta có thể thấy trong sách chỉ dẫn của lệnh kill, mặc dù các lệnh thường được sử dụng nhất là các lệnh bắt buộc một tiến trình phải kết thúc hoặc tạm dừng sự chạy của nó. Với tín hiệu

TERM (kill -15 PID), chúng ta đang nói cho tiến trình rằng chúng ta muốn nó kết thúc, sao cho khi nó nhận được tín hiệu thì nó sẽ lưu những gì cần thiết và kết thúc việc chạy. Nếu có một số dạng vấn đề hoặc chương trình không được chuẩn bị để nhận dạng tín

hiệu này, thì chúng ta có thể sử dụng kill (kill -9 PID), sẽ tự động từ chối nó khỏi hàng đợi

chạy. killall được sử dụng để tham chiếu tới tên của vài tiến trình và cùng lúc thay vì việc tham

Trang 39/232

Điều khiển tiến trình

Với các lệnh điều khiển tiến trình chúng ta có thể triển khai bất kỳ hành động nào chúng ta quan tâm: từ việc tạm dừng các tiến trình của một người sử dụng đặc biệt, cho tới việc loại bỏ những tiến trình chúng ta không quan tâm hoặc thực hiện một số chiếm dụng thời gian CPU hơn nữa để chạy nhanh hơn.

Lệnh trap

Để điều khiển các tín hiệu trong một shell script (trình biên dịch script) (xem sau cách lập trình chúng), chúng

ta có thể sử dụng lệnh trap.

Page 40: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

chiếu tới chúng bằng PID của chúng, vì thế, chúng ta có thể gửi một tín hiệu cho tất cả chúng cùng

một lúc. Với lệnh skill, chúng ta cũng có thể gửi các tín hiệu tới các tiến trình, nhưng sử dụng một cú pháp khác. Ví dụ, nếu chúng ta muốn dừng tất cả việc chạy của một người sử dụng cụ thể nào

đó, chúng ta có thể sử dụng skill -stop -u LoginName, nó có thể làm dừng tất cả các tiến trình của người sử dụng đó theo yêu cầu. Để khởi tạo lại chúng một lần nữa, chúng ta có thể sử dụng tín

hiệu CONT. Khi chúng ta đang chạy một chương trình trong một bảng điều khiển (console) và chúng

ta muốn gửi một tín hiệu TERM cho nó, chúng ta có thể sử dụng tổ hợp phím Ctrl+C. Với Ctrl+Z

chúng ta có thể tạm dừng một chương trình và nhận nó với fg.

Một cách khác nhìn vào các tiến trình là từ hệ thống tôn ti trật tự của chúng. Như trong trường hợp của hệ thống tệp, các tiến trình tuân theo một tôn ti trật tự nhất định từ cha tới con. Bất kỳ tiến trình nào cũng phải được khởi tạo từ một tiến trình khác, hoặc bản thân trình biên dịch các lệnh, môi

trường đồ họa..., tạo ra một mối quan hệ cha - con. Với lệnh pstree thì chúng ta có thể thấy tôn ti trật tự này theo các khoản đồ họa. Nếu chúng ta chạy nó, chúng ta sẽ thấy cách mà cha của tất cả các tiến trình có nhiều con, chúng ta cũng sẽ giết tất cả các con của nó. Chúng ta cũng có thể sử dụng nó để xác định những nơi mà các tiến trình chắc chắn bắt đầu từ đó... Nếu chúng ta không truyền bất kỳ tham số nào vào lệnh, mặc định nó sẽ nén tất các các tiến trình với cùng tên sao cho không chỉ ra một cấu trúc quá lớn, dù điều này cũng có thể cấu hình được trên cơ sở các tham số của nó.

Tất cả các tiến trình hệ thống có một ưu tiên nhất định. Như chúng ta đã nói trước đó, ưu tiên này chỉ ra thời gian CPU mà tiến trình sẽ được phép. Ưu tiên của tiến trình càng cao, thì thời gian chạy nó sẽ có trong mối quan hệ với phần còn lại càng nhiều. Dải các ưu tiên đi từ 20 tới 19, từ cao hơn xuống thấp hơn. Để khởi tạo một tiến trình với một ưu tiên đặc biệt, chúng ta có thể sử dụng lệnh

nice. Nếu chúng ta muốn trao một ưu tiên khác cho một tiến trình đã và đang được chạy, thì chúng

ta có thể sử dụng renice. Chỉ gốc root có thể sử dụng dải ưu tiên tiêu cực; điều này chắc chắn rằng gốc root luôn có khả năng chạy các tiến trình nhanh hơn so với những người sử dụng. Mặc định, ưu tiên với những chương trình nào đó được chạy là 0. Một khía cạnh sẽ được cân nhắc là với cơ chế các ưu tiên này thì chúng ta không thể đo đếm thời gian chạy thực tế của tiến trình vì CPU được chia sẻ bởi tất cả các tiến trình trong hàng đợi chạy. Trong các trung tâm tính toán, trách nhiệm phụ thuộc vào thời gian các máy được sử dụng, rất quan trọng để có khả năng đo đếm khía cạnh này

một cách chính xác. Vì thế, hệ thống đưa ra cho chúng ta lệnh time, khi chúng ta truyền chương trình sẽ được đo đếm tới lệnh đó, thì trả về thời gian CPU thực mà chương trình đã sử dụng.

2.5. Các lệnh hữu dụng khác

2.5.1. Trợ giúp hệ thống

Như chúng ta đã nhắc tới thông qua tài liệu này, tất cả các lệnh có nhiều lựa chọn và các tham số khác nhau sao cho chúng ta có thể điều khiển chúng như chúng ta mong muốn. Ngay từ đầu được xem xét cẩn thận rằng tài liệu tốt có thể cần thiết cho tất cả chúng. Cũng vậy, tất cả thông tin này cần thiết cho các tệp cấu hình hệ thống, các ứng dụng mới mà chúng ta sử dụng... Vì thế, bản thân hệ thống kết hợp một cơ chế các sách chỉ dẫn mà chúng ta có thể tư vấn về hầu hết bất kỳ khía cạnh nào của các chương trình, tiện ích, các lệnh và các cấu hình đang tồn tại. Lệnh được sử dụng nhiều

nhất là man, mà chỉ cho chúng ta hướng dẫn đối với chương trình mà chúng ta chỉ thị như một tham

số. Mặc định, tài liệu này được chỉ ra thông qua chương trình less, mà chúng ta có thể sử dụng để

Trang 40/232

Page 41: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

tiến và lùi bằng việc sử dụng các phím PgUp và PgDn, để tìm kiếm một từ bằng việc sử dụng ký tự “/” có đằng sau một từ (“n” để tìm kiếm những xuất hiện tiếp sau và “N” cho các xuất hiện trước đó), “q” để rời khỏi... Các chỉ dẫn hệ thống được chia thành các phần khác nhau:

1) Gọi các hệ thống được trình biên dịch (shell) cung cấp.

2) Gọi các thư viện hệ thống.

3) Chỉ định các tệp (thường cho các thiết bị).

4) Các tệp đặc biệt (thường cho các thiết bị).

5) Định dạng của các tệp cấu hình.

6) Các trò chơi.

7) Các gói Macro.

8) Các lệnh quản trị hệ thống (thường chỉ gốc root mới có thể sử dụng chúng).

9) Các công việc thường ngày của nhân.

Nếu có hơn một chỉ dẫn sẵn sàng cho cùng một từ, thì có thể sẽ là đặc biệt hơn bằng việc truyền số

tương ứng tới phần chúng ta muốn trước mặt từ đó, ví dụ man 3 printf. Như với tất cả các lệnh,

man có vô số các lựa chọn khác nhau được ghi thành tài liệu trong sách chỉ dẫn của riêng nó (man

man), mà chúng ta có thể sử dụng cho những tìm kiếm tự động, tạo ra một tệp chỉ dẫn ở định dạng in được... Một trong những lựa chọn đó có thể tới rất thuận tiện khi chúng ta biết chính xác chương

trình nào chúng ta đang tìm kiếm là -k (lệnh apropos làm hầu hết chính xác y hệt). Với man -k mà đằng sau có một từ tham chiếu tới hành động chúng ta mong muốn triển khai, thì một tìm kiếm sẽ được thực hiện thông qua tất cả các sách chỉ dẫn của hệ thống và tất cả các sách chỉ dẫn với các mô tả hoặc tên bao gồm từ đặc thù đó sẽ được chỉ ra. Vì thế chúng ta có thể tìm thấy bất kỳ thứ gì chúng ta muốn mà không phải dùng tới một cuốn sách hoặc tham chiếu nào bên ngoài hệ thống.

Lệnh mandb

Để tìm kiếm nhanh, ứng dụng man sử dụng một cơ sở dữ liệu nội bộ mà sẽ tìm kiếm qua các tệp chứa các sách chỉ dẫn và đánh chỉ số chúng một cách phù hợp. Nếu chúng ta muốn cập nhật sách chỉ dẫn này (dù thường bản

thân hệ thống đã làm điều này một cách tự động rồi), thì chúng ta có thể sử dụng lệnh mandb.

Nếu sách chỉ dẫn không cung cấp cho chúng ta tất cả thông tin mà chúng ta cần, thì chúng ta có thể

sử dụng lệnh info, nó là y hệt như sách chỉ dẫn nhưng thậm chí còn rộng rãi hơn. Nếu tất cả điều chúng ta muốn là tham chiếu ngắn gọn tới những gì một chương trình, thư viện... nhất định nào đó

làm, thì chúng ta có thể sử dụng lệnh whatis.

2.5.2. Đóng gói và nén

Việc nén tệp, nhóm vài tệp vào một tệp duy nhất hoặc xem những gì một tệp nén có chứa là những nhiệm vụ mà chúng ta sẽ triển khai thường xuyên để tạo các bản sao lưu, chuyển các tệp từ chỗ này sang chỗ khác ... Mặc dù có nhiều chương trình khác nhau cho phép chúng ta triển khai dạng các

hoạt động này, thường thì trong tất cả các hệ thống GNU/Linux chúng ta sẽ thấy công cụ tar. Chương trình này cho phép chúng ta điều khiển một hoặc vài tệp theo bất kỳ cách gì để nén chúng, nhóm chúng ... Mặc dù các lựa chọn là vô tận và cực kỳ mềm dẻo, ở đây chúng ta sẽ giải thích chỉ một ít các lựa chọn cơ bản hơn sao cho chúng ta có thể có một ý tưởng về những gì chúng ta có thể

Trang 41/232

Page 42: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

làm với chương trình này. Cú pháp mà nó sử dụng là như sau: tar options DestinationFile

OriginFile (tar các lựa chọn Tệp-Đích Tệp-Gốc), trong đó tệp đích sẽ là tệp mới mà chúng ta muốn tạo ra và các tệp gốc sẽ những tệp để nhóm lại hoặc nén lại. Quan trọng để nhớ trong đầu rằng nếu chúng ta muốn nhóm toàn bộ một thư mục, mặc định qui trình đó là đệ quy, nghĩa là khi nó được đóng gói thì nó sẽ bao trùm tất cả các mức độ và nhóm mọi thứ nó chứa. Để tạo một tệp

mới, chúng ta cần truyền tham số c, và nếu chúng ta muốn lưu nó trong một tệp, thì chúng ta cần

truyền tham số f. Vì thế, tar cf final.tar o* sẽ đóng gói tất cả các tệp trong thư mục hiện hành mà bắt đầu bằng một ký tự “o”. Nếu chúng ta cũng muốn nén chúng, thì chúng ta có thể sử dụng

czf mà có thể sử dụng chương trình gzip sau khi đóng gói chúng. Để mở gói cho một tệp cụ thể,

tham số chúng ta cần là x, nên chúng ta nên gõ tar xf chỉ ra tệp được gói. Nếu nó được nén, thì

chúng ta sẽ phải truyền xzf.

Mặc dù chúng ta có thể sử dụng tar để nén các tệp, thì ứng dụng này không được thiết kế từ đầu để

nén. Như chúng ta đã nhắc tới, để nén nó sử dụng các chương trình bên ngoài như gzip. Chương

trình gzip sử dụng định dạng nén của riêng nó khác với trình nén phổ biến zip, mà chúng ta cũng có thể sử dụng bằng cách cài đặt ứng dụng tương ứng. Ứng dụng nén khá phổ biến khác mà đưa ra

các kết quả khá tốt là bzip2. Trong bảng sau, chúng ta có thể thấy phần mở rộng thường được sử dụng để nhận diện định dạng nào một tệp nén hoặc đóng gói sử dụng:

Bảng 2.4

Phần mở rộng .tar .gz .tgz .bz2 .zip .z

Định dạng tar gzip tar+gzip bzip2 zip compress

2.5.3. Các hoạt động của đĩa

Quản lý và điều khiển các đĩa cứng máy tính là khía cạnh cơ bản khác của các nhiệm vụ quản trị hệ thống. Mặc dù sau này chúng ta sẽ xem xét cách thiết lập cấu hình phù hợp cho các đĩa mà chúng ta đã cài đặt trong máy tính, thì trong phần nhỏ này chúng ta sẽ thảo luận về các lệnh theo yêu cầu để có được thông tin về chúng. Tất cả các đĩa cứng được chia thành các phân vùng mà chúng ta có thể truy cập dường như chúng ta đang làm việc với một thiết bị độc lập, mà chúng ta sẽ tham chiếu tới như một đơn vị. Điều này rất hữu dụng vì nó cho phép chúng ta tách bạch thông tin chúng ta có trong hệ thống một cách phù hợp, sao cho chúng ta có thể có nhiều hơn một hệ điều hành được cài

đặt trên cùng một đĩa cứng, ví dụ thế. Lệnh df chỉ cho chúng ta, đối với từng đơn vị được kích hoạt

trong hệ thống, không gian được sử dụng và không gian sẵn sàng. Hãy dịch thứ sau df output:

Cấu hình của phân vùng

Khi chúng ta định dạng phân vùng của một đĩa cứng (với hệ thống ext2 hoặc ext3), chúng ta có thể cấu hình kích thước của khối và nhiều tham số khác. Những tham số đó có thể được chỉnh để làm cho hệ thống thích nghi được tốt hơn cho các nhu cầu của chúng ta và để đạt hiệu quả cao hơn.

Hệ thống tệp 1k-blocks Được sử dụng Sẵn sàng % sử dụng Được kích hoạt trong

/dev/hda1 7787712 421288 6970828 6% /

/dev/hdb1 19541504 5742384 13799120 29% /info

/dev/hdc 664432 664432 0 100% /CD-ROM

Trang 42/232

Page 43: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Như chúng ta có thể thấy, đối với mỗi phân vùng hoặc thiết bị được kích hoạt trong hệ thống, lệnh nói cho chúng ta số các khối sẵn sàng và được sử dụng. Khối của đĩa là một đơn vị được sử dụng nội bộ trong các thiết bị lưu giữ để làm cho việc điều khiển chúng có hiệu quả hơn. Mặc định, lệnh

này chỉ cho chúng ta thông tin trong 1k blocks, mặc dù truyền tham số -h (người đọc được) mà chúng ta có thể thấy nó dễ dàng hơn. Dòng đầu luôn chỉ cho chúng ta root của hệ thống tệp và sau đó các thiết bị khác. Quan sát cách mà nó còn chỉ cho chúng ta điểm neo đậu (trong cột cuối), là thư mục chúng ta sẽ đi tới để xem nội dung của nó.

Một lệnh rất hữu dụng khác là du, chỉ cho chúng ta một tệp thực sự chiếm cái gì trong đĩa. Để hiểu rõ ràng về những gì chúng ta ngụ ý với điều này, chúng ta cần xem xét chi tiết hơn một chút vào tổ chức bên trong của các đĩa và cách mà hệ điều hành điều khiển chúng. Như được nhắc tới trước đó, vì những lý do hiệu quả nên hệ điều hành chia không gian đĩa thành các phần nhỏ hơn được gọi là các khối block. Kích cỡ của khối block có thể được cấu hình và thường phụ thuộc vào kích cỡ của đĩa, mặc dù chúng ta cũng có thể cấu hình nó để thích nghi tốt hơn cho các yêu cầu của chúng ta. Mỗi lần chúng ta muốn thêm một tệp mới, thì hệ điều hành sẽ chỉ định nó cho một khối block. Bằng cách này, khi đọc hoặc tác động lên nó, hệ điều hành có thể đọc toàn bộ khối block trực tiếp (kích cỡ được cấu hình) chỉ trong một bước. Khi tệp chiếm nhiều hơn 1 khối block, thì nó được chỉ định nhiều hơn, cố làm chắc chắn rằng chúng sẽ nằm sát nhau nhất có thể, sao cho chúng có thể được đọc liên tục để gia tăng tốc độ đọc. Điều bất tiện duy nhất với dạng hệ thống này là các khối block bị bỏ phí khi các tệp là rất nhỏ, vì nếu một tệp cụ thể nào đó không chiếm hết toàn bộ khối block, thì không gian còn lại không thể được sử dụng cho bất kỳ thứ gì khác. Trong mọi trường hợp, dạng tổ chức này là dạng được toàn bộ các hệ thống tệp đang tồn tại sử dụng, vì nó là khỏe mạnh nhất để

sử dụng đối với đĩa cứng. Lệnh du, vì thế chỉ cho chúng ta số lượng các khối block mà một tệp cụ thể thực sự sử dụng trên đĩa.

Để biết các tham số nào chúng ta đã cấu hình trên các đơn vị đĩa được định dạng của chúng ta với

các mở rộng ext2 hoặc ext3, chúng ta có thể sử dụng lệnh dumpe2fs, thêm phân vùng đặc biệt. Chúng ta sẽ thấy cách có nhiều lựa chọn khác nhau cho phép chúng ta tinh chỉnh cẩn thận hành vi của nó (chúng ta có thể thấy những gì từng lựa chọn có nghĩa trong sách chỉ dẫn). Trong bất kỳ trường hợp nào, một khi chúng ta đã định dạng một phân vùng, thì chúng ta sẽ không có khả năng sửa cứng bất kỳ lựa chọn nào nữa. Nếu chúng ta muốn thay đổi chúng, thì chúng ta sẽ phải sao chép tất cả các thông tin của phân vùng đó, định dạng lại và sao chép các tệp gốc một lần nữa.

Sửa phân mảnh đĩa

Việc sửa phân mảnh một đĩa không gì hơn việc tổ chức lại các khối block các tệp để đặt chúng vào các chỗ liên tục nhau để làm cho sự truy cập được nhanh hơn. Trong các hệ thống tệp chúng ta sử dụng với GNU/Linux thì không cần thiết phải sửa phân mảnh cho các đĩa (mặc dù thường có các chương trình cho mục đích này) vì hệ thống tự động chăm sóc việc tổ chức chúng một cách phù hợp.

Các chức năng của nhân mà chăm sóc việc quản lý các tệp sử dụng một loạt các phương pháp để tăng tốc độ đọc và ghi các tiến trình. Một trong số chúng là sử dụng một bộ nhớ đệm cache của đĩa, sao cho chúng ta không luôn phải đọc hoặc ghi lên đĩa vật lý, là một tiến trình vừa chậm vừa tốn kém. Tất cả những gì cơ chế bộ nhớ đệm cache làm là giữ một bản sao của tệp để chúng ta làm việc với nó trong RAM (nhanh hơn nhiều), sao cho tiến trình đó là trong suốt đối với người sử dụng (bản sao tới đĩa được thực hiện tuân theo một chính sách được triển khai trong nhân). Vấn đề duy nhất với việc điều khiển này là nếu có sự mất điện và chúng ta không tắt máy một cách đúng đắn, thì một số tệp có thể không được lưu lại trên đĩa vật lý và chúng ta có thể có sự không nhất quán trong hệ

thống tệp. Chương trình fsck sẽ kiểm tra và sửa hệ thống tệp mà bị để lại trong trạng thái này. Mặc dù chúng ta có thể chạy nó bất cứ khi nào chúng ta muốn, thường thì bản thân hệ điều hành sẽ chạy

Trang 43/232

Page 44: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

nó khi tiến trình khởi động dò tìm ra rằng hệ thống đã không tắt đúng kiểu (trước khi tắt máy tính,

chúng ta phải chạy lệnh shutdown, nó chăm sóc việc khởi tạo tất cả các qui trình cần thiết cho các chương trình để kết thúc, giải hoạt hệ thống tệp... Theo cách này, hệ thống tệp ext3 là hiệu quả hơn so với người tiền nhiệm của nó vì việc ghi lưu ký cho phép nó phục hồi được nhiều thông tin hơn trong các tệp bị mất một cách nhanh hơn.

Một cách tự nhiên, nếu các tệp chúng ta đang làm việc trong hệ thống của chúng ta là sống còn cao độ và chúng ta không thể, trong mọi tình huống, cho phép bản thân chúng ta đánh mất chúng, thì

chúng ta có thể sử dụng lệnh sync. Cuối cùng, chúng ta cũng có thể kiểm tra tính toàn vẹn vật lý

của phân vùng bằng việc sử dụng lệnh badblocks, nó triển khai việc kiểm tra trên thiết bị được chỉ định để chắc chắn rằng nó không có các vùng bị hỏng.

Hầu hết các lệnh chúng ta đã mô tả trong phần con này đòi hỏi các quyền đặc biệt để được chạy, nghĩa là chỉ root sẽ có khả năng sử dụng chúng.

2.6. Các hoạt động với các lệnh

2.6.1. Định tuyến lại

Một khi chúng ta đã học được cách sử dụng một số lệnh hệ thống, có thể chúng ta sẽ muốn sử dụng chúng cùng một lúc trong một số trường hợp để tăng tốc độ các hành động chúng ta muốn triển khai. Một lựa chọn rất thú vị gồm khả năng thực hiện một đầu ra của lệnh này để phục vụ như một đầu vào của lệnh khác và xử lý nó phù hợp. Hệ điều hành sử dụng một cơ chế đường ống (pipe), cho phép chúng ta tái định tuyến các đầu ra của bất kỳ lệnh hoặc chương trình nào cho bất kỳ nơi nào chúng ta muốn. Nó làm việc rất đơn giản: tất cả thứ chúng ta cần làm là đặt ký tự “|” giữa các lệnh, sao cho đầu ra của lệnh đầu tiên phục vụ như là đầu vào của lệnh thứ 2. Hãy nhìn vào ví dụ

sau: khi chúng ta viết lệnh echo field1: field2:field3:field4, thì tất cả điều chúng ta muốn đạt được có thể là một màn hình hiển thị “field1:field2:field3:field4”. Nếu từ đầu ra này chúng ta chỉ

muốn lấy “field3”, thì chúng ta có thể tái định tuyến nó tới một đường ống hướng tới lệnh cut, để

nó chọn chỉ trường mà chúng ta có quan tâm như sau: echo field1: field2: field3: field4 |

cut -d: -f 3. Trong sơ đồ sau, chúng ta có thể trực quan hóa ví dụ này bằng đồ thị:

Hình 2.3

Trang 44/232

Page 45: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Tất nhiên, chúng ta có thể kết nối nhiều bao nhiêu ống mà chúng ta cần để triển khai nhiều hơn các nhiệm vụ trong thực tế như ví dụ ta vừa thấy. Một dạng tái định tuyến rất thực tế khác có liên quan tới các tệp. Dạng tái định tuyến này cho phép chúng ta lấy tất cả các đầu ra của một lệnh hoặc chương trình và lưu nó trong một tệp có sử dụng ký tự “>”, như chúng ta đã làm với “|”. Ví dụ, nếu chúng ta muốn lưu trong một tệp mọi thứ chúng ta ghi cho tới khi nhấn Ctrl+C, thì chúng ta có thể

sử dụng như sau: cat > test.txt. Với “>>” chúng ta có thể làm chính xác y hệt, nhưng thay vì luôn tạo ra tệp mới, nếu tệp đó đã tồn tại rồi, thì có thể thêm thông tin vào cuối của nó. Với “<” thì việc tái định tuyến được thực hiện theo chiều ngược lại, tái định tuyến nội dung của tệp mà chúng ta chỉ định hướng tới lệnh hoặc chương trình được cho biết.

Một khía cạnh rất thú vị là chúng ta nên biết về hệ thống dạng UNIX khi chúng tách bạch đầu ra thông thường của một chương trình khỏi các đầu ra có lỗi. Mặt dù mặc định cả 2 đầu ra đều được định hướng trong bảng điều khiển nơi mà chương trình được chạy, thì chúng ta có thể điều khiển chúng để định hướng chúng ở bất kỳ đâu chúng ta muốn. Để thấy điều này trong các khoản thực tế,

chúng ta sẽ thử xóa một tệp mà không tồn tại bằng việc sử dụng lệnh sau: rm file > results. Mặc dù chúng ta đang tái định tuyến đầu ra của lệnh tới tệp kết quả, thì màn hình sẽ hiển thị một thông báo lỗi nói cho chúng ta rằng tệp đó đã không được tìm thấy. Điều này là vì mặc định, việc tái định tuyến chỉ nhận đầu ra tiêu chuẩn của chương trình và không nhận đầu ra có lỗi, mà theo mặc định cũng được hiển thị trên màn hình. Để tái định tuyến đầu ra có lỗi, chúng ta nên chỉ ra, trước ký tự

“>”, số “2”, mà là đầu ra có lỗi (“1” là đầu ra thông thường). Vì thế, bằng việc chạy rm file >

results, chúng ta có thể tái định tuyến đầu ra tới tệp kết quả. Chúng ta cũng có thể lưu đầu ra

thông thường và đầu ra có lỗi trong 2 tệp khác nhau: rm file 1> results 2> errors. Nếu, một mặt, chúng ta muốn tất cả các đầu ra được định tuyến hướng tới cùng một tệp, thì chúng ta có thể sử dụng >&. Hơn nữa, với ký tự “&”, chúng ta có thể định tuyến các đầu ra của dạng này hướng tới dạng kia; ví dụ, nếu chúng ta muốn định tuyến các đầu ra có lỗi tới các đầu ra bình thường, thì

chúng ta có thể chỉ định điều này như sau: 2>&1.

Điều quan trọng phải nhớ rằng trật tự của việc tái định tuyến là quan trọng: chúng luôn được chạy từ trái qua phải.

2.6.2. Các lệnh bash (trình biên dịch GNU shell) cụ thể

Mặc dù một số lệnh chúng ta đã xem xét là đặc thù cho bash, thì trình biên dịch các lệnh này có những lệnh khác có thể giúp chúng ta triển khai nhiều hoạt động thú vị hơn. Một cơ chế rất hữu dụng là để chạy các qui trình trong đó được biết tới như là chế độ nền. Chế độ này đơn giản nói cho chúng ta rằng qui trình đó đang được chạy, mà trình biên dịch (shell) đang điều hướng lại dòng lệnh sao cho chúng ta có thể tiếp tục chạy các chương trình khác. Để nói cho chương trình bash điều này, chúng ta cần gõ ký tự “&” sau lệnh hoặc chương trình mà chúng ta sắp chạy. Một khi qui trình này được khởi tạo ở chế độ nền, thì một dòng được hiển thị nói cho chúng ta số công việc và PID của qui trình được khởi tạo đó.

Với lệnh jobs chúng ta có thể thấy những qui trình nào được khởi tạo ở chế độ nền (bằng việc

truyền tham số -1 chúng ta cũng có thể thấy được PID của mình). Nếu chúng ta muốn truyền một trong những qui trình trong chế độ nền (như chúng ta đã khởi tạo nó từ dòng lệnh mà không có ký

tự “&”), chúng ta có thể sử dụng lệnh fg chỉ định PID qui trình. chúng ta cũng có bg, nó gửi một qui trình đặc biệt vào trong chế độ nền cho chúng ta. Điều này là hữu dụng, ví dụ, khi chúng ta đang

Trang 45/232

Page 46: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

chạy một chương trình trong chế độ mặt tiền (foreground) và chúng ta tạm dừng nó bằng việc nhấn

Ctrl+Z. Nếu sau đó chúng ta chạy bg, trao PID, thì qui trình sẽ tiếp tục chạy trong chế độ nền. Như chúng ta thấy trong các phần con trước, các qui trình cũng có một tôn ti trật tự cha con. Khi chúng ta chạy một chương trình trong chế độ nền thì chúng ta không can thiệp vào với tôn ti trật tự này, nghĩa là nếu chúng ta đăng xuất phiên làm việc, thì tất cả các qui trình sẽ kết thúc vì cha (trình biên dịch các lệnh từ đó chúng ta đã khởi tạo chúng) sẽ không còn chạy nữa. Nếu chúng ta muốn bỏ liên

kết một qui trình khỏi cha đó, thì chúng ta có thể sử dụng lệnh disown.

Một cơ chế bash hữu dụng khác là lịch sử các lệnh. Khi chúng ta sử dụng hệ thống mà chúng ta thường phải lặp đi lặp lại nhiều lệnh chúng ta đã viết rồi. Việc sử dụng các phím Up và Down có thể thấy tất cả các lệnh chúng ta đang sử dụng và chúng ta có thể lặp đi lặp lại một lệnh bằng việc nhấn phím “Enter”. Chúng ta cũng có thể sử dụng

history (lịch sử), nó sẽ hiển thị tất cả các lệnh được chạy trên màn

hình, được đánh số theo trật tự xuất hiện. Bằng việc viết !NUM thì lệnh

tương ứng với lịch sử đó sẽ được chạy. Chúng ta cũng có thể viết ! theo sau là các ký tự đầu của một chương trình được chạy trước đó và chương trình sẽ tìm lệnh gần đây nhất theo trật tự để chạy nó.

Trình biên dịch lệnh bash cũng có các phím truy cập nhanh hoặc các phím tắt cho phép chúng ta chạy những hành động nhất định mà thậm chí không phải viết chúng. Một số lệnh phổ biến nhất là:

• Tab: chúng ta không cần viết tên của một tệp, thư mục hoặc lệnh đầy đủ. Nếu chúng ta viết các ký tự đầu và sau đó nhấn phím tab, thì nó sẽ viết phần còn lại cho chúng ta. Nếu có hơn một trùng khớp thì nó sẽ hiển thị các khả năng khác biệt đó.

• Ctrl+L: xóa màn hình (giống như lệnh clear).

• Shift+PgUp: chỉ nửa màn hình trước.

• Shift+PgDn: chỉ nửa màn hình tiếp sau.

• Ctrl+W: Loại bỏ từ được viết sau cùng.

• Ctrl+T: trao đổi trật tự của các ký tự sau cùng.

• Ctrl+U: xóa tất cả các ký tự đứng trước con trỏ.

• Ctrl+D: thoát khỏi trình biên dịch lệnh (tương tự như một lệnh logout).

• ulimit: đây là một lệnh cho phép chúng ta cấu hình một số khía cạnh nội bộ có liên quan tới bash. Ví dụ, nó cho phép chúng ta chỉ định số lượng bộ nhớ mà trình biên dịch lệnh có thể sử dụng, số lượng tệp tối đa có thể được mở... Lệnh này có thể giúp chúng ta cách nào đó hạn chế được các hành động mà những người sử dụng hệ thống của chúng ta có thể triển khai (trong trường hợp các máy chủ quản trị với nhiều người sử dụng).

2.6.3. Shell script với bash

Shell scripts là các tệp nơi mà chúng ta viết một loạt các lệnh (bất kỳ lệnh nào chúng ta thấy trong phần này) để được chạy. Mặc dù cú pháp của chúng có thể trở nên hoàn toàn phức tạp và chúng ta nên đi vào

Trang 46/232

Bash

Trình biên dịch lệnh bash cung cấp cho chúng ta các công cụ vô tận để điều chỉnh bất kỳ khía cạnh nào của trình biên dịch lệnh. Trong sách chỉ dẫn mở rộng chúng ta có thể thấy tài liệu được yêu cầu để học cách điều khiển chúng một cách đúng đắn.

Lệnh fc

Lệnh fc cho phép chúng ta, giống như shell scripts, viết một loạt các lệnh sẽ được chạy mà không phải lưu tệp.

Page 47: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

trong các khía cạnh lập trình để hiểu được nó rõ ràng, trong phần con này chúng ta sẽ tóm tắt một số những đặc tính cơ bản của chúng sao cho chúng ta có thể hiểu được chúng và ít nhất là sử dụng được chúng (nếu chúng ta muốn đi vào sâu hơn thì chúng ta có thể đi tới sách chỉ dẫn bash). Dòng đầu của shell script nên chỉ định trình biên dịch lệnh được sử dụng:

#!/bin/bash

Sau dòng này chúng ta có thể bắt đầu viết các lệnh mà chúng ta muốn chạy, mỗi lệnh trên một dòng. Như trong bất kỳ ngôn ngữ lập trình nào, chúng ta có thể sử dụng các biến, các cấu trúc điều kiện và các vòng lặp. Để khai báo một biến chúng ta sẽ sử dụng cú pháp sau:

variableName=content (Tên-biến = nội dung)

Nếu nội dung là một chuỗi ký tự, chúng ta sẽ cần đặt nó giữa các dấu ngoặc kép, nếu đó là một con số, thì chúng ta không phải đặt gì và nếu chúng ta muốn lưu một đầu ra của lệnh trong một biến, thì chúng ta cần đặt nó giữa các ký tự. Để tham chiếu tới nội dung các biến trong các lệnh khác, chúng ta phải luôn đặt ký tự “$” trước tên. Đối với các lệnh điều kiện thì có thể sử dụng cấu trúc sau:

if condition; then instructions else instructions fi

trong đó điều kiện (condition) có thể tham chiếu tới một tệp, thực hiện một phép so sánh số học

(giữa “(( ))” các ký tự)... Lệnh test là đặc biệt hữu dụng trong đó nó cho phép chúng ta so sánh các tệp, các thư mục..., và trả về một Boolean.

Như vậy, ví dụ, nếu chúng ta muốn triển khai một hành động này hoặc khác phụ thuộc vào sự tồn tại của một tệp đặc biệt, thì chúng ta có thể sử dụng cấu trúc sau đây:

if test -f /etc/inittab; then echo "The inittab file exists." else echo "The inittab file

does NOT exist." fi

Một cấu trúc điều kiện khác là:

case word in case1) instructions;; case2) instructions;; *) instructions esac

Trong cấu trúc này chúng ta so sánh word (từ) với case1, case2 ..., cho tới khi thấy được một trường hợp trùng khớp mà trong trường hợp đó các hành động tương ứng sẽ được chạy. Nếu không tìm

thấy trường hợp nào, thì nó có thể truyền sang phần *), mà là tùy ý lựa chọn. Cấu trúc này có thể rất tiện, ví dụ, khi chúng ta muốn script đặc biệt triển khai một hành động này hoặc khác theo tham số

chúng ta thiết lập. Chúng ta có thể tham chiếu tới các tham số có sử dụng $1 cho tham số đầu, $2 cho tham số 2 và cứ tương tự như thế. Đối với các vòng lặp thì chúng ta có thể sử dụng bất kỳ cấu trúc nào sau đây:

#LOOP TYPE FOR for i in list; do instructions where #LOOP TYPE WHILE while condition; do

instructions done

Tất nhiên, trước khi có thể chạy được một shell script thì chúng ta nên

trao quyền chạy cho tệp tương ứng (lệnh chmod 750 Tên-t �p).

Trang 47/232

Các bình luận trong shell scripts

Để viết các bình luận trong các shell scripts chúng ta có thể sử dụng ký tự “#” đi sau với bình luận chúng ta muốn. Điều này sẽ hợp lệ cho tới kết thúc dòng đó.

Page 48: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

3. Hội thảo về Knoppix

3.1. Giới thiệu

Hội thảo này nhằm để bạn có được kinh nghiệm đầu tiên với môi trường UNIX. Vì lý do này, nó được triển khai từng bước một, nhưng tất nhiên để lại cửa ngỏ đối với những người tò mò trong số các bạn để tự nghiên cứu.

Mục đích chính của hội thảo này là để trở nên quen thuộc với hệ điều hành GNU/Linux và để xem mọi thứ mà bạn quen làm với các hệ điều hành khác, có thể được thực hiện chính xác y hệt với hệ điều hành GNU/Linux. Trong hội thảo này, chúng ta cũng bắt đầu làm việc với dòng lệnh, làm quen với nó và cởi bỏ sự sợ hãi của chúng ta về mọi thứ không phải là một môi trường đồ họa. Như thế, đã tới lúc đưa vào thực tế mọi điều đã được giải thích bằng lý thuyết cho tới nay.

Hội thảo này có thể được triển khai trên bất kỳ máy tính nào, vì rủi ro làm hỏng thông tin chúng ta có thể có là tối thiểu. Chúng ta đã chọn phát tán này vì nó không đòi hỏi tri thức trước đó về hệ điều hành để khởi động nó, và vì, một khi chúng ta dừng hệ thống, nó không để lại dấu vết gì.

KNOPPIX mặc định kích hoạt tất cả các phân vùng đĩa cứng trong hệ thống nhưng với các quyền chỉ đọc; vì thế, chúng ta có thể không ghi được cũng không chạy được bất kỳ thứ gì, trừ phi chúng ta ép buộc nó bằng việc thay đổi các quyền. Rõ ràng, nếu chúng ta có một hệ điều hành GNU/Linux khác, thì chúng ta có thể sử dụng nó để đi theo hội thảo.

Vì đây là một phát tán khởi động được trên CD-ROM hoặc DVD-ROM, chúng ta có thể làm việc mà không để lại dấu vết nào trên máy tính nơi mà nó được chạy khi tiến trình dừng đã kết thúc; điều này có nghĩa là thậm chí dù nó là dựa trên Debian, thì hệ thống tệp cũng không tuân thủ với Chính sách của Debian trong khía cạnh này. Dù vậy, những khác biệt đó sẽ không ảnh hưởng tới hội thảo, và mọi điều chúng ta học được sẽ hợp lệ đối với hội thảo. Hơn nữa, là tốt để làm quen với các phát tán khác nhau ngay từ đầu và để học phân biệt được giữa những gì là chung cho tất cả các hệ điều hành dựa vào UNIX và những gì là đặc biệt đối với từng phát tán.

Trước khi bắt đầu, chỉ có một khuyến cáo: hãy tiến lên với những sáng kiến của riêng chúng ta, hãy thử tự trả lời các câu hỏi của chúng ta, hãy tư vấn trợ giúp được lệnh của con người đưa ra, hãy triển khai các kiểm thử, nếu chúng hỏng, thì hãy phân tích vì sao, hãy cố gắng thử lần nữa, tiếp tục thử cho tới khi chúng ta đạt được các kết quả mong muốn; điều này giải thích làm thế nào để học UNIX, bạo dạn học từ những thất bại của chúng ta.

3.2. Khởi động hệ thống

Trước hết chúng ta cần chắc chắn là máy tính của chúng ta sẽ khởi động từ trình đọc CD-ROM hoặc DVD-ROM. Để làm điều này chúng ta sẽ đưa vào BIOS (Hệ thống đầu vào đầu ra cơ bản - Basic Input Output System), thường bằng việc nhấn phím Del trong quá trình kiểm tra bộ nhớ RAM, và kiểm tra xem CD-ROM hoặc DVD-ROM có được cấu hình như là thiết bị khởi động đầu tiên hay không; nếu có rồi, thì chúng ta có thể thoát ra khỏi BIOS mà không phải lưu bất kỳ thứ gì và đặt đĩa CD-ROM hoặc DVD-ROM KNOPPIX vào trình đọc đó. Còn nếu chưa có, thì chúng ta sẽ tiến hành những thay đổi phù hợp và lưu chúng trước khi thoát khỏi BIOS.

Sau khi khởi tạo lại máy tính, chờ vài giây thì màn hình khởi động KNOPPIX sẽ xuất hiện với các

Trang 48/232

Page 49: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

dòng sau ở đây:

Hình 3.1

Chúng ta có thể nhấn phím F2 hoặc F3 để vào màn hình chỉ các lựa chọn được KNOPPIX chấp nhận để khởi động, sau đó chúng ta có thể thấy thông tin được trình bày bằng việc nhấn phím F2:

Hình 3.2

và đây là thông tin chúng ta thấy khi chúng ta nhấn phím F3:

Trang 49/232

Page 50: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Hình 3.3

Ví dụ, chúng ta có thể khởi động với bàn phím tiếng Tây Ban Nha để tương tác với GNOME như trình quản lý cửa sổ và kích hoạt bánh xe lăn của chuột; để làm thế, chúng ta có thể chỉ gõ vào dòng

lệnh (boot:) như sau knoppix lang=es gnome wheelmouse. Nhưng chúng ta sẽ không làm thế; ví dụ trước đó chỉ để chỉ ra các khả năng của KNOPPIX. Sau khi chèn vào một đĩa mới được định dạng (format) trong ổ đĩa ở đó chúng ta sẽ tiến hành các bước đầu tiên của chúng ta trong GNU/LInux, như vậy bảo vệ tất cả các thông tin chúng ta có thể có trong các đĩa cứng của chúng ta,

chúng ta sẽ chỉ đơn giản viết knoppix 2 và nhấn phím Enter để khởi động máy ở chế độ văn bản.

Hình 3.4

Ban đầu, bàn phím được cấu hình theo tiếng Mỹ (US), nên một số ký tự khác với bàn phím tiếng Tây Ban Nha; chúng ta có thể sửa điều này ngay lập tức, mà thậm chí như vậy, thì thú vị để biết đâu là nơi các ký tự Mỹ nhất định nào đó trên bàn phím tiếng Tây Ban Nha.

• “=” là ở phím ¿.

Trang 50/232

Page 51: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

• “/” là ở phím 0 trên bàn phím số.

• “_” là ở phím ? hoặc trên bàn phím số.

Sau khi nhấn “Intro”, KNOPPIX sẽ bắt đầu tải hệ điều hành, chi trên màn hình các kết quả của một số kiểm thử mà nó triển khai trong quá trình tự động cấu hình.

Một khi qui trình này xong, chúng ta sẽ có dòng lệnh:

Hình 3.5

Chúng ta bây giờ nằm trong hệ thống. Trong trường hợp này, không người sử dụng hay mật khẩu nào là cần thiết cả, chúng ta đã vào trực tiếp như là gốc root, và chúng ta biết điều này vì dấu nhắc kết thúc bằng ký tự “#”. Đối với bất kỳ người sử dụng nào khác root, ký tự cuối cùng là “$”.

3.3 Dừng hệ thống

Một khi nằm trong hệ thống, điều đầu tiên chúng ta nên biết, như chúng ta đã nhắc tới rồi, là làm thế nào để dừng nó. Hãy nhớ một lần nữa là chúng ta không thể dừng máy tính mà không có việc trước đó dừng hệ điều hành (GNU/Linux). Có vài cách để làm thế. Cách chung nhất là: nhấn tổ hợp

phìm Ctrl+Alt+Del hoặc sử dụng lệnh halt (có nhiều hơn nữa, thông qua lệnh reboot, thay đổi mức chạy từ 0 tới 6...). Một khi chúng ta đã lệnh cho hệ thống dừng, thì nó sẽ bắt đầu thực hiện các lệnh dừng phù hợp (giải hoạt các thiết bị, dừng các tiến trình...), và kết thúc của toàn bộ tiến trình này KNOPPIX sẽ đẩy CD-ROM hoặc DVD-ROM ra và yêu cầu chúng ta nhấn phím Enter để dừng máy tính.

Trang 51/232

Page 52: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

3.4. Cấu hình bàn phím

Một khi chúng ta biết cách khởi động và dừng hệ thống, thì chúng ta sẽ khởi động lại nó theo đúng các bước trước đó. Một khi chúng ta nằm trong hệ thống, thì điều đầu tiên chúng ta sẽ phải làm là thiết lập cấu hình bàn phím cho đúng. Có vài cách để làm điều này:

• Bằng tay và nếu chúng ta khởi động ở chế độ bảng điều khiển (console) (knoppix 2):

Hình 3.6

• Bằng đồ họa với lệnh kbdconfig khi chọn lựa chọn es es.

Hình 3.7

• Sử dụng lệnh kbd-config và chọn các lựa chọn sau:

Trang 52/232

Page 53: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Hình 3.8

Chúng ta có một ưu điểm khi đề cập với việc ghi trong môi trường dòng lệnh: lựa chọn tự động hoàn chỉnh, chúng ta nhân phím “Tab” một lần, và nếu chỉ cần có một khả năng lựa chọn, thì nó sẽ tự động hoàn chỉnh; hoặc chúng ta nhấn nó 2 lần trong một dòng, và nếu có hơn một lựa chọn thì chúng ta sẽ thấy các lựa chọn khác nhau đó. Chúng ta có thể kiểm thử nó bằng việc sử dụng lệnh

loadkeys. Chúng ta chỉ gõ một ký tự “l” và nhấn phím Tab một lần, hệ thống sẽ kêu bíp, và sau đó chúng ta nhấy phím đó lần thứ 2 để có được điều sau đây:

Hình 3.9

Trong trường hợp chúng ta không muốn được thấy 211 khả năng. Vì thế, chúng ta nhấn “n” và bổ sung thêm ký tự “o”, và nhắc lại hành động trước đó khi nhấn phím Tab 2 lần. Bây giờ chúng ta có kết quả khác sau:

Trang 53/232

Page 54: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Hình 3.10

Tất cả điều chúng ta cần làm là thêm “adk” và nhấn phím Tab một lần nữa và chức năng tự động hoàn tất sẽ đưa ra:

root@tty1[/]# loadkeys

Tính năng tự động hoàn tất cũng có thể được sử dụng để tham chiếu tới các tệp và thư mục. Chúng ta chỉ phải gõ “loadkeys /u” và nhấn phím Tab để có:

root@tty1[/]# loadkeys /usr

và nhấn phím Tab một lần nữa để có:

root@tty1[/]# loadkeys /usr/

Tự động hoàn tất là một công cụ rất hữu dụng không chỉ vì nó tiết kiệm việc gõ, mà còn vì nó giúp chắn chắn là chúng ta đã viết các lệnh một cách đúng đắn, cũng như các thư mục và tệp. Thiếu công cụ này là dễ nhận thấy đối với những người đã quen sử dụng nó.

3.5. Kiểm tra hệ thống

Một khi chúng ta đã thiết lập cấu hình cho bàn phím, chúng ta sẽ xử lý để kiểm tra hệ thống một chút. Trước hết, xem chúng ta đang đứng ở đâu trong cấu trúc các thư mục? Chúng ta có thể tìm ra

theo lệnh pwd:

root@tty1[/]# pwd /

Chúng ta đang ở gốc root, và chúng ta biết từ trả về của lệnh pwd, mà chúng ta cũng có thể biết bằng

việc đọc thông tin được dấu nhắc đưa ra: root@tty1[/]#. Chúng ta đã học rồi về ý nghĩa của ký tự “#”, bây giờ hãy học về phần còn lại của thông tin mà nó nói cho chúng ta.

“root”, trong trường tên người sử dụng (usename) xuất hiện trong trường hợp này, root, khá dư thừa thông tin, vì ký tự “#” đang nói cho chúng ta điều này. Nhưng đối với những người sử dụng khác là khá thú vị, vì tất cả chúng kết thúc bằng biểu tượng “$”, và cách này chúng ta có thể biết liệu đó có phải là Isabel, Daniel hay người sử dụng nào khác hay không.

Theo sau ký tự “@”, nó phục vụ để chia tách các trường, chúng ta có “tty1”, trường này nói cho chúng ta cửa sổ dòng lệnh (terminal) nào chúng ta đang ở trong, và điều này là vì, như chúng ta đã nhắc tới, GNU/Linux là đa người sử dụng và đa tiến trình. vì thế, không ngạc nhiên là chúng ta có thể truy cập được hệ thống từ các cửa sổ dòng lệnh (terminal) khác nhau. KNOPPIX đặc biệt đưa ra 4 cửa sổ dòng lệnh theo mặc định, mà chúng ta có thể truy cập thông qua các tổ hợp phím: Alt+F1 (tty1), Alt+F2 (tty2), Alt+F3 (tty3) và Alt+F4 (tty4); điều này là cực kỳ hữu dụng, vì nó cho phép chúng ta có tới 4 phiên làm việc, có nghĩa là, ví dụ, chúng ta có thể kiểm thử một lệnh trong một

Trang 54/232

Page 55: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

cửa sổ, có man cho lệnh theo yêu cầu trong cửa sổ khác để đọc về các lựa chọn của nó, trong khi trong một cửa sổ khác chúng ta có thể có một trình soạn thảo mở để ghi chép những gì chúng ta đang làm (nhiều phát tán đưa ra 4 cửa sổ dòng lệnh ở chế độ văn bản và giữ lại cửa số thứ 7 cho môi trường đồ họa; trong KNOPPIX thì môi trường đồ họa, nếu nó được kích hoạt, mà không phải trong trường hợp của chúng ta, có thể sẽ là cửa sổ thứ 5). Vì thế chúng ta thử tổ hợp Atl+F2, quan sát xem “tty2” bây giờ xuất hiện trong trường mà chúng ta đang nghiên cứu, và chạy một lệnh, ví

dụ man man, để đọc man hoặc trợ giúp của man application. Lúc này chúng ta sẽ để nó ở đó và quay về với tty1, kiểm tra xem mọi thứ có như chúng ta đã để lại cho nó hay không.

Cuối cùng, và tiếp tục với sự giải thích của dấu nhắc, đứng trước trường “#” chúng ta đã biết, chúng ta thấy “[/]”: điều này nói cho chúng ta thư mục hiện hành, trong trường hợp này là gốc root, khi

chúng ta đã được nói với lệnh pwd. Sự khác biệt nảy sinh từ thực tế là dấu nhắc chỉ cho chúng ta thư

mục hiện hành, trong khi lệnh pwd lại cho chúng ta toàn bộ đường dẫn.

Ví dụ, nếu chúng ta đang ở trong /home/sofia thì chúng ta có thể có:

Bây giờ chúng ta có thể liệt kê nội dung của thư mục mà chúng ta ở trong. Để làm thế, chúng ta sẽ

sử dụng lệnh ls, đầu tiên không truyền đi với bất kỳ lựa chọn nào trong nó:

Hình 3.11

và bây giờ chúng ta sẽ truyền qua 2 lựa chọn (thường là các lựa chọn được đứng trước bằng một dấu “-”, mặc dù cũng có các lệnh mà không yêu cầu điều này), để nói cho nó trả về các thông tin chi

tiết hơn. Vì thế, một khi chúng ta đã gõ “-” thì chúng ta sẽ viết các lựa chọn cho la để có được các thông tin đó:

Trang 55/232

Page 56: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Hình 3.12

Hãy nhìn vào các màu khác nhau trong đó các kết quả được hiển thị (chúng ta sẽ thấy các màu đó trên màn hình máy tính của chúng ta khi chúng ta tiến bộ thông qua hội thảo Knoppix): màu xanh nước biển cho các thư mục, màu tím (magenta) cho các liên kết biểu tượng (đích đến của nó được chỉ ra sau sự kết hợp của các ký tự “->”), màu xanh lá cây cho những scripts và những thứ thực thi được (dù, rõ ràng, chúng ta không mong đợi để thấy bất kỳ thứ gì trong thư mục root, vì như chúng ta đã thấy trong UNIX, trật tự trong hệ thống tệp là rất chặt chẽ)...

Hãy đi vào một thư mục nơi mà chúng ta chắc chắn thấy những thứ thực thi được, như /usr/bin/

(để làm thế, hãy chạy cd /usr/bin/). Thư mục /usr/ thực sự là một liên kết biểu tượng cho

/KNOPPIX/usr/; vì thế, chúng ta có thể truy cập nội dung của nó bằng việc chui vào nó một cách

trực tiếp thông qua lệnh cd, hoặc bám theo đích thực sự thông qua cùng lệnh đó. Tuy nhiên, chúng ta sẽ chọn lựa chọn đầu tiên vì thư mục này sẽ là một thư mục khi chúng ta ở trong một hệ thống UNIX được cài đặt trên một đĩa cứng:

Trang 56/232

Page 57: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Hình 3.13

Chúng ta có thể không có khả năng thấy nhiều hơn ít dòng cuối của những gì đã được chỉ ra trên màn hình. Chúng ta có thể trực quan hóa một ít nữa các kết quả bằng việc nhấn Shift+PgUp để đi lùi về qua danh sách và Shift+PgDn để tiến lên. Thậm chí như vậy, thì bộ nhớ đệm (buffer) của cửa sổ dòng lệnh có một giới hạn và việc sử dụng kỹ thuật này chúng là có khả năng thấy tất cả các

thông tin được trả về bằng lệnh ls. Vì thế, chúng ta cần viện đến các kỹ thuật khác, định tuyến lại đầu ra (trong trường hợp này đối với một tệp) hoặc sử dụng các đường ống (”|”) và trình phân trang

(paginator) (less trong trường hợp này, nó sử dụng các phím PgUp và PgDn để dịch chuyển nội dung được hiển thị trên màn hình, và phím Q để thoát). Chúng ta sẽ sử dụng lệnh cuối này, vì chúng ta không có quan tâm tới tất cả trong việc lưu danh sách nội dung của thư mục; chúng ta cũng sẽ chỉ lợi dụng để thực hành tiện ích khác mà nó tiết kiệm cho chúng ta việc gõ: nhấn các phím mũi tên lên hoặc xuống để chúng ta có thể dịch chuyển qua tất cả các dòng lệnh mà chúng ta

đã đi qua đối với hệ thống; như vậy, để có được dòng lệnh chúng ta muốn, ls -la | less, tất cả

điều chúng ta sẽ phải làm là nhấn phím mũi tên lên một lần nữa và bổ sung thêm | less.

less là một trình phân trang rất mạnh mà KNOPPIX và hầu hết các phát tán sử dụng để hiển thị các

nội dung của man (dù, giống như hầu hết các dịch vụ của Linux, chúng ta có thể thiết lập cấu hình

Trang 57/232

Page 58: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

cho nó theo ý định của riêng chúng ta). Vì thế, chúng ta có thể thực hiện một man less để tìm ra một ít về lệnh này trong khi làm quen với hình thái của sự trợ giúp này cùng một lúc. Rõ ràng, vì

chúng ta đang nằm trong less, để thoát khỏi man thì tất cả điều chúng ta phải làm là nhấn phím Q.

Đối với tất cả các danh sách nội dung thư mục, hãy lưu ý cách mà chúng ta đã và đang làm cho 2 thư mục khá đặc biệt luôn xuất hiện: . (một dấu chấm) và .. (2 dấu chấm). Khi chúng ta tạo các thư mục, hệ thống tự động tạo ra nhưng thư mục đó như là các thư mục con bên trong thư mục được tạo ra, và chúng gồm các thông tin rất đặc thù. Thư mục . , mà được biết tới như là thư mục hiện hành,

tham chiếu tới bản thân thư mục đó (nên nếu chúng ta chạy một lệnh ls -la ., thì chúng ta sẽ có

thông tin y hệt như khi chạy một lệnh ls –la). Và thư mục .. , mà được biết tới như là thư mục cha,

tham chiếu tới thư mục cha của thư mục mà chúng ta đang ở đó (chạy một lệnh ls -la .. sẽ cho chúng ta danh sách nội dung của thư mục cha hoặc thư mục ngay ở trên).

Hoạt động

3.1 Xem xét trong man của lệnh ls và hiểu các chức năng của các tham số -a và -1.

Liệu chúng ta có thể nhớ nơi chúng ta đang đứng trong hệ thống tệp? Không? Vâng lệnh pwd sẽ nhắc cho chúng ta. Hãy đi ngược về thư mục gốc root. Về cơ bản có 2 cách làm thế và cách khác

đặc biệt cho trường hợp này; trong mọi trường hợp, chúng đều dựa vào việc sử dụng lệnh cd, và chỉ khác nhau trong tham số mà chúng ta tuyền trong từng trường hợp.

Cách đầu tiên là đi lên một cách lặp đi lặp lại qua các thư mục cha bằng việc sử dụng lệnh cd.. (lưu

ý, hệ thống không hiểu cd.. , vì nó dịch thành chúng ta đang gõ để thực hiện một lệnh gọi là

“cd..”, mà nó không tồn tại) cho tới khi chúng ta tới được thư mục gốc root (chúng ta sẽ thấy nó ở dấu nhắc).

Cách thứ 2 có hiệu quả hơn, vì chỉ với một dòng lệnh, chúng ta sẽ đạt được mục đích của chúng ta, đi tới được thư mục gốc root. Để làm như thế, chúng ta cần truyền thư mục gốc root như một tham

số tới lệnh cd (cd /); lựa chọn thứ 2 này mạnh hơn nhiều và cho phép chúng ta truyền trực tiếp qua

các thư mục thuộc về các nhánh khác nhau, ví dụ, chúng ta có thể đã thực hiện được lệnh cd

/etc/rcS.d/ (dấu / cuối cùng là tùy ý) để tới được thư mục này, từ /usr/bin/.

Như chúng ta đã nhắc, đối với trường hợp này (đi tới thư mục gốc root) có một lựa chọn thứ 3 để

đạt được cùng mục đích y hệt với những biến thể: nó liên quan tới việc chạy lệnh cd mà không truyền bất kỳ tham số nào, và nó có thể đặt chúng ta trực tiếp vào thư mục gốc root của hệ thống, vì trong trường hợp của KNOPPIX thì đây là thư mục home (một trường hợp ngoại lệ và đôi khi là đặc biệt, khi trong hầu hết các phát tán, và theo Tiêu chuẩn Tôn ti trật tự của Hệ thống tệp, root phải

có thư mục gốc /root của riêng nó); một biến thể của các phương pháp này là “ cd ”, vì “ “ tương đương với home của người sử dụng, thư mục gốc root trong trường hợp này. Vẫn còn lựa chọn khác cho việc trả về thư mục gốc root, hoặc thay vì, trả về thư mục mà chúng ta tới từ đó, thư mục gốc

root, vì chúng ta đã chạy cd /usr/bin", và đó là cd -, vì trong “-” nó lưu giữ thư mục cuối mà chúng ta ở đó trước khi đi tới thư mục hiện hành.

3.6. Điều khiển các tệp và thư mục

Đã xem xét các lựa chọn khác nhau để đạt được mục đích y hệt nhau, chúng ta vẫn còn ở trong thư mục gốc root. Bây giờ chúng ta có thể học cách để tạo ra các tệp và thư mục, chuyển, sao chép, xóa

Trang 58/232

Page 59: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

chúng... Chúng ta sẽ làm điều này trên đĩa chúng ta đã sử dụng để khởi động KNOPPIX, mà hệ thống đã tự kích hoạt (mount) khi khởi động (sau này chúng ta sẽ học cách kích hoạt và giải hoạt các thiết bị).

Hãy nhớ rằng trong UNIX trước khi các thiết bị có thể được sử dụng thì chúng cần phải được kích hoạt (mount), và rằng trước khi sự hỗ trợ được loại bỏ, thì chúng cần phải được giải hoạt (unmount). Điểm sau là cực kỳ quan trọng, vì nếu không thì tính toàn vẹn của các dữ liệu không thể được đảm bảo đầy đủ. Ví dụ, chúng ta có thể định loại bỏ CD-ROM bằng việc nhấn núm đẩy ra trước khi tiến hành công việc trên đĩa. Hãy ngạc nhiên đi! chúng ta không thể; chúng ta không nên nghĩ rằng thiết bị bị hỏng, ít hơn nhiều rằng GNU/Linux đã làm thế. Đơn giản là hệ thống đã kích hoạt thiết bị này một cách tự động khi khởi động, và vì thế, nó đã trở thành một phần của hệ thống; có thể không có nghĩa để có khả năng loại bỏ đĩa CD-ROM mà không nói trước cho hệ thống; vì thế, hệ thống đã chiếm quyền kiểm soát thiết bị này và, cùng với những thứ khác, đã vô hiệu hóa núm đẩy ra đối với CD-ROM đó, chính xác để tránh cho nó khỏi bị loại bỏ mà không có việc được giải hoạt trước đó. Điều này không là y hệt với ổ đĩa: đối với thiết bị này thì núm đẩy ra hoạt động một cách cơ khí, nghĩa là hệ thống không thể ngăn chúng ta khỏi việc đẩy đĩa ra mà không nói cho nó biết trước, mà điều này là không được khuyến cáo, vì như chúng ta đã nói, nó có thể kéo theo sự mất dữ liệu mà nó có. Vì thế, cho tới khi chúng ta học được cách kích hoạt và giải hoạt các thiết bị hỗ trợ dữ liệu, thì đĩa phải giữ được nằm trong ổ đĩa từ thời điểm hệ thống khởi động cho tới khi nó dừng, vì, cùng với những hoạt động khác trong quá tình dừng các thiết bị đó sẽ được giải hoạt. Hãy đi tới đĩa; nhưng, nó ở đâu? Hệ thống đã kích hoạt nó ở đâu? Để tìm ra câu trả lời cho các câu hỏi

đó, chúng ta sẽ tiến hành lệnh kích hoạt mount mà không có các tham số hoặc các lựa chọn bổ sung

(điều này là chính xác lệnh được sử dụng để kích hoạt các thiết bị, và lệnh giải hoạt umount để giải hoạt chúng):

Hình 3.14

Lệnh này được chạy mà không có các tham số chỉ cho chúng ta các thiết bị được kích hoạt trong hệ thống tại thời điểm chạy nó và một số thông tin bổ sung về chúng (chúng ta thấy thông tin y hệt này

trong tệp /etc/mtab; hệ quả là, việc chạy lệnh cat /etc/mtab (để hiển thị nội dung của mtab) chúng ta có thể có được các kết quả y hệt. Ở dòng thứ 2 được trả về từ lệnh này, chúng ta có thể

thấy rằng quả thực CD-ROM, /dev/CDROM, được kích hoạt trong hệ thống và bổ sung thêm chúng ta

có thể thấy nó được kích hoạt trong thư mục /CD-ROM/. Dòng trả về cuối cùng trả lời cho các câu

hỏi chúng ta đã làm trước đó: hệ thống đã kích hoạt đĩa, /dev/fd0/, trong /mnt/auto/floppy/. Vì thế, chúng ta sẽ thay đổi tới thư mục này để bắt đầu làm việc trên đĩa và kiểm tra xem nó có rỗng hay không:

Trang 59/232

Page 60: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

root@tty1[/]# cd /mnt/auto/floppy root@tty1[floppy]# ls -la total 8 drwxrwxrwx 3 knoppix

knoppix 7168 Jan 1 1970 . drwxr-xr-x 3 root root 0 Mar 3 19:34 ..

Chúng ta tạo thư mục của chúng ta trước, chui vào nó và tạo một vài thư mục con:

root@tty1[floppy]# mkdir dir00 root@tty1[floppy]# cd dir00/ root@tty1[dir00]# mkdir

subdir00 subdir01 root@tty1[dir00]# ls subdir00 subdir01

Chúng ta vào thư mục đầu và tạo tệp đầu tiên của chúng ta:

root@tty1[dir00]# cd subdir00 root@tty1[subdir00]# touch file00 root@tty1[subdir00]# ls

-la total 1 drwxrwxrwx 2 knoppix knoppix 512 Mar 3 20:21 . drwxrwxrwx 4 knoppix knoppix

512 Mar 3 20:21 .. -rwxrwxrwx 1 knoppix knoppix 0 Mar 3 20:21 file00

Trong thực tế touch không phải là cho việc tạo ra các tệp rỗng dù nó sẽ thế nếu tệp không tồn tại, mà thay vào đó sẽ thay đổi thông tin có liên quan tới thời gian và ngày của tệp. Có thể đặt một số nội dung vào tập đầu tiên của chúng ta và kiểm tra xem nó quả thực có được lưu giữ hay không:

root@tty1[subdir00]# echo "my fist hello world in Linux" > file00 root@tty1[subdir00]# cat

file00 my first hello world in Linux

Chúng ta bổ sung thêm một ít văn bản:

root@tty1[subdir00]# echo "Nice to meet you, we're gonna be good friends" >> file00

root@tty1[subdir00]# cat file00 my first hello world in Linux Nice to meet you, we're

gonna be good friends

Hãy đừng quên sử dụng các phím mũi tên để tiết kiệm việc gõ, hoặc sử dụng tự động hoàn tất. Bây giờ chúng ta có thể sử dụng trình soạn thảo văn bản để tạo ra tệp thứ 2 của chúng ta. Để làm điều này, chúng ta sẽ sử dụng trình soạn thảo vi. Hãy nhớ rằng trình soạn thảo này có 2 chế độ: chế độ lệnh, mà chúng ta vào khi nó khởi động, và chế độ soạn thảo. Để vào chế độ soạn thảo chúng ta chỉ cần nhấn “i”, và để vào chế độ lệnh chúng ta chỉ cần nhấn phím Esc. Nếu chúng ta muốn tiết kiệm,

chúng ta cần vào chế độ lệnh và viết :w và :q để thoát ra (vi có nhiều lệnh hơn, nhưng lúc này chỉ 2 lệnh là đủ). Rất thú vị để biết các lệnh cơ bản này của vi, vì trình soạn thảo này đi với hầu hết tất cả các gói cài đặt cơ bản của bất kỳ phát tán nào, và nếu nó hỏng vào bất kỳ lúc nào, thì nó có thể cần phải sửa đổi một tệp và tiếp tục với sự cài đặt.

Chúng ta chạy lệnh vi đi sau tên mà chúng ta muốn trao cho tệp thứ 2 của chúng ta, chúng ta nhấn

I, viết những gì chúng ta muốn, nhấn Esc và :wq để lưu và thoát. Sử dụng nhiều hơn, trình phân trang khác, chúng ta có thể kiểm tra xem mọi thứ có làm việc như mong đợi hay không:

root@tty1[subdir00]# vi file01 it seems we're on the right way, mate!!! I agree.

~ ~ ~ :wq

root@tty1[subdir00]# more file01 it seems we're on the right way, mate!!! I agree.

Các thiết bị bộ nhớ USB. USB có thể kết nối các thiết bị ngoại vi như một con chuột, bàn phím, máy quét, máy ảnh số, thiết bị số cá nhân (PDA)... Nhưng chúng ta sẽ tập trung vào các thiết bị bộ nhớ USB, vì chúng ngày nay thường được sử dụng thay cho các đĩa cũ hơn. Chúng cho phép chúng ta lưu trữ vài trăm MB thông tin trong một thiết bị nhỏ và dễ dàng mang theo: các thiết bị bộ nhớ USB. Có các hệ thống khác nhau, như các hệ thống flash hoặc các hệ thống que cắm bộ nhớ (memorystick).

Những hệ thống này hoạt động tuyệt vời tốt với nhân Linux. Nó đủ để kích hoạt chúng dường như

Trang 60/232

Page 61: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

chúng là các đĩa SCSI, thường thì chúng sẽ ở trong /dev/sda1, hoặc nếu có những đĩa SCSI khác,

thì chúng ở trong /dev/sdb1 hoặc /dev/sdc1.

Như chúng ta đã thấy, lệnh mount cho phép chúng ta kích hoạt bất kỳ hệ thống tệp nào, và với lệnh

umount chúng ta có thể giải hoạt nó. Để biết có bao nhiều hệ thống tệp và cách mà chúng đã được

kích hoạt như thế nào, chúng ta cần chạy lệnh mount mà không có tham số nào. Thông tin có được

từ tệp /etc/mtab, vì tệp này có danh sách các hệ thống tệp được kích hoạt khi đó. Trên thực tế,

chính các chương trình mount và umount giữ danh sách này trong /etc/mtab file.

Giống lệnh sau:

knoppix@0[knoppix]$ mount /dev/root on / type ext2 (rw) /ramdisk on /ramdisk type tmpfs

(rw,size=401312k) /UNIONFS on /UNIONFS type unionfs (rw,dirs=/ramdisk=rw:/KNOPPIX=ro:

/KNOPPIX2=ro,delete=whiteout) /dev/hdc on /cdrom type iso9660 (ro) /dev/cloop on

/KNOPPIX type iso9660 (ro) /dev/cloop2 on /KNOPPIX2 type iso9660 (ro) /UNIONFS/dev/pts

on /UNIONFS/dev/pts type devpts (rw) /proc/bus/usb on /proc/bus/usb type usbfs

(rw,devmode=0666) automount(pid2320) on /mnt/auto type autofs

(rw,fd=4,pgrp=2320,minproto=2,maxproto=4) /UNIONFS/dev/sda1 on /mnt/sda1 type vfat

(rw,nosuid,nodev,umask=000,user=knoppix)

Tệp /etc/fstab là một tệp có những gì các thiết bị thường sẽ được kích hoạt, ở đâu và bằng cách nào (các lựa chọn của chúng là gì). Những khi chúng ta kích hoạt các thiết bị khác hoặc giải hoạt

bất kỳ thiết bị nào, thì điều này được phản ánh trong tệp /etc/mtab, nó là tệp mô tả các hệ thống tệp được kích hoạt đúng lúc khi đó.

Hoạt động

3.2 Làm thế nào chúng ta kích hoạt bộ nhớ hoặc đầu USB sao cho bất kỳ người sử dụng nào cũng có thể ghi vào nó được? Nếu chúng ta muốn dạng bộ nhớ USB này được kích hoạt một cách mặc định (khi hệ thống khởi động) và để có được các quyền đọc và ghi cho tất cả mọi người sử dụng, thì chúng ta nên thêm vào dòng nào?

Hoạt động

3.3 Lặp lại tất cả các hành động của hoạt động 3.2 trong việc điều khiển các tệp và thư mục nhưng thay vì sử dụng đĩa thì sử dụng bộ nhớ USB.

Bây giờ, từ đĩa hoặc đầu USB hãy cố thử xóa tệp đầu tiên của chúng ta. Chúng ta sẽ làm thế bằng

việc sử dụng lệnh rm:

root@tty1[subdir00]# rm file00 rm: remove regular file 'file00'?

Chúng ta chắc chắn không mong đợi hệ thống đưa ra cho chúng ta câu hỏi này. Chúng ta nhấn Ctrl+C để hoãn, n để không (không xóa) và y để có (xóa). Bây giờ điều quan trọng cho chúng ta để

hiểu vì sao hệ thống đã yêu cầu chúng ta câu hỏi này. Nếu chúng ta đọc man của lệnh rm thì chúng ta sẽ thấy nó sẽ xóa tệp mà không hỏi chúng ta bất kỳ câu hỏi nào (hãy nhớ rằng chúng ta có thể chạy

man này trong bất kỳ tty nào, và rằng trong tty2 chúng ta vẫn có man để mở, trừ phi chúng ta đã thoát (nhấn phím q), hoặc đã tắt máy tính khi chúng ta gọi tới nó, và tiếp tục làm việc trong tty mà chúng

ta ở trong đó. Nhưng hãy nhìn vào giải thích của lựa chọn -i trong cùng man. Điều gì đang diễn ra? Nó trông giống như lựa chọn này được kích hoạt một cách mặc định. Thực sự không phải thế, những gì diễn ra là theo mặc định hệ thống đã thiết lập một số bí danh (alias); để xem tất cả chúng, hãy chạy lệnh alias (bí danh):

Trang 61/232

Page 62: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

root@tty1[etc]# alias alias ..='cd ..' alias cp='cp -i' alias l='ls -a --color=auto' alias

la='ls -la --color=auto' alias ll='ls -l --color=auto' alias ls='ls

--color=auto'

alias mv='mv -i' alias rm='rm -i' alias where='type -all' alias which='type -path'

Ở đây chúng ta sẽ bắt đầu hiểu nhiều hơn, ví dụ vì sao sự trả về của lệnh ls lại có chữ màu, hoặc để

làm một ls -la chúng ta chỉ cần gõ la. Và chúng ta cũng hiểu vì sao khi chúng ta đã chạy trước đó

lệnh rm, hệ thống đã yêu cầu chúng ta liệu chúng ta có thực sự muốn làm điều này. Thông qua các bí danh chúng ta có thể thiết lập và sửa đổi hành vi mặc định của các lệnh hoặc thậm chí tạo ra các lệnh mới khác:

root@tty1[subdir00]# alias hi='echo¨I say hello"' root@tty1[subdir00]# hi I say hello

Tiếp tục với man của lệnh rm, chúng ta sẽ đọc cách sử dụng các lựa chọn -f và -r. Lựa chọn đầu là

để lệnh chạy không có nhắc nhở, hoặc nói cách khác, không tuân theo các lựa chọn -i, sao cho nếu

chúng ta không xóa tệp đầu của chúng ta, thì chúng ta có thể làm thế bây giờ thông qua rm -f

file00. Lựa chọn thứ 2 ép vào tính đệ qui, nói cách khác, mở rộng trật tự qua các thư mục con và nội dung tiềm năng của chúng. Những lựa chọn đó là chung cho hầu hết các lệnh cơ bản cho việc điều khiển các tệp và các thư mục; vì thế, chúng ta có thể tạo một thư mục thứ 2 trong gốc root của

đĩa với tất cả các nội dung của các tệp ban đầu mà chúng ta đã tạo thông qua lệnh cp; để làm điều này, chúng ta phải gọi tới sự đệ qui:

root@tty1[subdir00]# cp /mnt/auto/floppy/dir00/ /mnt/auto/floppy/dir01 -r

Hoạt động

3.4 Lặp lại sự sao chép đệ qui của lệnh /dir01 của đĩa cho đầu hoặc bộ nhớ USB.

Trong trường hợp này chúng ta đã sử dụng việc định tuyến tuyệt đối (cho việc chỉ định cả gốc ban đầu và đích) để triển khai hoạt động sao chép. Nói cách khác, chúng ta đã chỉ định đường dẫn đầy đủ, bắt đầu từ thư mục gốc root, cho cả gốc ban đầu và đích. Tương tự, chúng ta có thể đã sử dụng việc điều khiển tương đối để chỉ định gốc ban đầu của hoạt động, đích của nó hoặc cả 2. Khi chúng ta sử dụng việc điều khiển tương đối, thì gốc định tuyến ban đầu là vị trí hiện hành bên trong hệ thống tệp. Như trong hầu hết các trường hợp, hệ thống trao cho chúng ta khả năng đạt được cùng y hệt các kết quả bằng việc sử dụng các phương pháp khác nhau. Chúng ta biết càng nhiều càng tốt và chúng ta có thể chọn phương pháp có hiệu quả nhất trong tường trường hợp cụ thể. Vì thế, chúng ta

có thể đã đạt được cùng y hệt kết quả bằng việc sử dụng cp ../../dir00/ ../../dir01 -r, nghĩa

là nói cho cp rằng gốc ban đầu là thư mục /dir00/, nó là 2 nhánh bên dưới vị trí hiện hành của

chúng ta, và rằng đíchh là /dir01/, mà chúng ta cũng muốn đặt 2 nhánh bên dưới vị trí của chúng

ta. Hơn nữa, dòng cp -r ../../../dir02/ có thể đã hợp lệ tuyệt vời rồi cho cùng mục đích y hệt.

Hoạt động

3.5 Giải thích lý do cho sự khẳng định mới nhất này.

Bây giờ chúng ta có thể đi xuống một thư mục con, đặt chúng ta vào trong /mnt/auto/floppy/ và

sao chép tệp thứ 2 mà chúng ta đã tạo ra trong thư mục con /subdir00 bên trong thư mục y hệt này:

root@tty1[dir00]# cp subdir00/file01.

Chúng ta cần hiểu đầy đủ ý nghĩa và lý do đằng sau dòng trước đó. Đầu tiên, chúng ta chỉ định gốc

Trang 62/232

Page 63: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

ban đầu của tệp mà chúng ta muốn sao chép (trong số nhiều lựa chọn khác, ./subdir00/file00) cũng có thể là hợp lệ và thứ 2 là chúng ta phải chỉ định đích, mà là vị trí hiện hành, nghĩa là “.”.

Thông qua un ls chúng ta có thể kiểm tra xem liệu chúng ta đã đạt được kết quả mong muốn hay chưa. Bây giờ chúng ta có thể đặt bản thân chúng ta vào thư mục cha, nơi nó được kích hoạt trên đĩa, và xóa mọi thứ mà chúng ta đã tạo ra cho tới bây giờ. Để làm thế, chúng ta sẽ sử dụng dấu “*” (chúng ta cũng có dấu “?”, nó chỉ dành cho 1 ký tự, bổ sung thêm cho các phương pháp khác để xác định các dãy ký tự, và để tham chiếu, nói chung tới nhiều hơn một tệp hoặc thư mục) để tiết kiệm việc gõ:

root@tty1[floppy]# rm -rf *

Hoạt động

3.6 Đọc man của rm và hiểu vì sao rm -rf * là vô cùng nguy hiểm.

3.7 Quản trị người sử dụng

Chúng ta sẽ được cảnh báo vì thực sự đã tiến hành tất cả các tác vụ trước đó như là ở home, vì chúng ta đã hiểu rõ rằng người sử dụng này sẽ chỉ được sử dụng khi cần thiết.

Dù vậy, được chứng minh kể từ đó cho tới nay, chúng ta đã không có bất kỳ mối liên hệ trực tiếp nào với một hệ thống UNIX, và điều này đã cho phép chúng ta tự làm quen một chút với các lệnh cơ bản của nó và với hệ thống tệp của nó. Đã tới lúc bắt đầu làm việc như chúng ta luôn làm vào lúc này, nghĩa là sử dụng tài khoản home chỉ khi nó là thực sự cần thiết, như trong bước đầu mà chúng ta sẽ tiếp bước sau, tạo một người sử dụng hệ thống mới và trao cho anh hoặc chị ta một tài khoản, mà là một hoạt động chỉ có thể được home thực hiện. Vì thế, hãy tiếp tục tạo ra một người sử dụng.

root@tty1[etc]# useradd user00

Chúng ta đã tạo ra người sử dụng đầu tiên của chúng ta, nhưng tiến trình này từng là thứ gì đó mù mờ vì hệ thống còn chưa trả về bất kỳ thông tin nào cho chúng ta theo lệnh mà chúng ta vừa mới chạy. Vì thế, chúng ta không biết người sử dụng này thuộc về nhóm nào hoặc các nhóm nào, thư mục home của anh ta ở đâu, trình biên dịch (shell) mặc định nào được chỉ định cho anh hoặc chị

ta... Chúng ta sẽ thấy nhiều thông tin này trong tệp mật khẩu (/etc/passwd) nên hãy phân tích từng trường nội dung của nó:

root@tty1[/]#cd /etc root@tty1[etc]# cat passwd root:x:0:0:root:/home/root:/bin/bash

daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh . . .

partimag:x:104:65534::/home/partimag:/bin/false user00:x:1001:100::/home/user00:/bin/bash

Chúng ta có thể thấy thông tin chúng ta muốn từ dòng cuối của tệp, vì người sử dụng của chúng ta là người cuối cùng được bổ sung thêm vào. Hãy phân tích nội dung của dòng này:

• user00 là tên người sử dụng (username), mà chúng ta đã biết vì tự chúng ta đã tạo ra nó.

• x mật khẩu của anh ta trong tệp mờ (shadow), /etc/shadow.

• 1001 là số nhận diện người sử dụng của anh ta (UID).

• 100 là số nhận diện nhóm của anh ta (GID).

• Anh ta không có bình luận liên quan nào.

Trang 63/232

Page 64: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

• /home/user00 đây là thư mục home của anh ta, như từng được mong đợi, khi tất cả những

người sử dụng có home của họ trong /home/user.

• /bin/bash trình biên dịch (shell) mà người sử dụng sẽ gặp khi việc đăng nhập là trình biên dịch bash, trình biên dịch y hệt mà chúng ta đã sử dụng cho tới nay.

Câu hỏi chúng ta yêu cầu ngay lập tức khi thấy các thông tin này là phải làm với mật khẩu của

người sử dụng. Vì thế, chúng ta cần tư vấn cho tệp shadow, vì chúng ta được tệp /etc/passwd nói cho điều này. Cùng lúc, chúng ta sẽ giới thiệu một khái niệm mới, trình lọc, mà trong trường hợp

này vật chất hóa ở dạng của lệnh grep (bộ xử lý trình bày thường xuyên chung). Các bộ lọc là các công cụ cực kỳ quyền lực, thường được sử dụng trong UNIX, và phạm vi hành động của chúng mở rộng tốt vượt ra khỏi những gì được hiểu biết thông thường về một bộ lọc. Trong trường hợp này,

chúng ta sẽ truyền, qua một đường ống, đầu ra của cat sang grep, sao cho nó hiển thị trên màn hình

các dòng có chứa từ mà chúng ta truyền như một tham số, user00:

root@tty1[etc]# cat shadow | grep user00 user00:!:12115:0:99999:7:::

Cho tới bây giờ chúng ta không cần phải lo lắng thêm nữa: trường thứ 2 nói cho chúng ta rằng người sử dụng của chúng ta không có mật khẩu. Nếu người sử dụng đó có, thì chúng ta có thể không có khả năng để biết nó, vì như chúng ta đã nhắc tới, các mật khẩu được lưu giữ một cách được mã hóa và sự mã hóa là không theo một hướng. Nhưng điều này cũng sẽ không gây lo ngại

cho chúng ta, vì, thông qua lệnh passwd, home có thể thay đổi mật khẩu của bất kỳ người sử dụng nào. Vì thế, điều duy nhất mà chúng ta thực sự cần làm là cố không được quên mật khẩu home, nó

cũng không có một mật khẩu trong trường hợp này, khi chúng ta đã được shadow nói cho, dù nếu điều này mà xảy ra, thì nó cũng có thể được giải quyết. Hãy tiếp tục điều tra nghiên cứu các thuộc

tính của người sử dụng của chúng ta. /etc/group sẽ giúp chúng ta biết chính xác những nhóm nào anh ta thuộc về:

root@tty1[etc]# cat group | grep user00

root@tty1[etc]# cat group | grep 100 users:x:100:knoppix knoppix:x:1000:

Với dòng lệnh đầu tiên chúng ta yêu cầu, với câu trả lời tiêu cực, liệu /etc/group có bất kỳ tham

chiếu rõ ràng nào cho user00 (chúng ta cũng có thể làm được điều này thông qua lệnh các nhóm

groups: groups user00). Với dòng thứ 2 chúng ta tìm kiếm sự nghịch đảo của nhóm 100, nhóm

đầu tiên của người sử dụng user00 theo /etc/passwd, một nhóm những người sử dụng được gọi trong trường hợp này. Vì thế, chúng ta có thể khẳng định rằng người sử dụng mới của chúng ta

thuộc chỉ về một nhóm và rằng nhóm này là user. Chúng ta cũng có thể sửa đổi tệp /etc/group để bổ sung thêm những người sử dụng tới các nhóm và tạo ra các nhóm mới, nhưng chúng ta nên lưu ý rằng không trong hoàn cảnh nào chúng ta có thể đật tên của nhóm khác vào trong trường của những người sử dụng thuộc về một nhóm nhất định với ý định bổ sung thêm tất cả những người sử dụng của cái trước cho cái sau. Nhưng chúng ta không khuyến cáo làm thế, vì có những lệnh đặc biệt để

làm việc với các nhóm (newgrp, addgroup ...).

Chỉ còn một vấn đề cuối cùng phải giải quyết: nếu chúng ta liệt kê các nội dung của /home/, thì

chúng ta sẽ thấy thư mục con /user00/ không tồn tại. Vì thế, chúng ta cần phải tạo ra nó và trao cho nó các đặc tính và các thuộc tính phù hợp bằng tay:

Trang 64/232

Page 65: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

root@tty1[etc]#mkdir /home/user00 root@tty1[etc]#chown user00 -R /home/user00

root@tty1[etc]#chgrp users -R /home/user00 root@tty1[etc]# cd /home root@tty1[home]#

ls -la total 0 drwxr-xr-x 5 root root 100 Mar 4 08:12 . drwxrwxrwt 4 root root 80

Mar 4 08:35 .. drwxr-xr-x 2 knoppix knoppix 40 Mar 4 08:35 knoppix drwxr-xr-x 2 root

root 40 Mar 4 08:35 root drwxr-xr-x 2 user00 users 60 Mar 4 08:12 user00

Người sử dụng mới trong Debian

Qui trình bổ sung thêm người sử dụng mới cho hệ thống thông qua Debian là đơn giản hơn nhiều, như chúng ta sẽ thấy sau này. Nhưng việc tạo ra một người sử dụng thông qua KNOPPIX không phải là không có hiệu quả vì nó đã giúp chúng ta trở nên quen thuộc với hệ thống và học được các lệnh mới.

Hoạt động

3.7 Thông qua man, hiểu được việc hoạt động của các lệnh chown và chgrp.

Đã tới lúc vào hệ thống như một người sử dụng mới. Chúng ta sẽ làm thế thông qua lệnh su, nó mở một tiến trình con với đăng nhập của người sử dụng đã vượt qua nó rồi. Như gốc root, chúng ta có thể luôn sử dụng được cơ chế này để vào như một người sử dụng khác mà không phải biết mật

khẩu, vì khi chúng ta chạy lệnh su như là gốc root thì không cần tới mật khẩu; hơn nữa, thường xảy ra là người sử dụng mà chúng ta đã tạo ra không có một mật khẩu, và vì thế, nó không được yêu

cầu. Nhưng, nếu chúng ta cố gắng chạy lệnh su trong bất kỳ hoàn cảnh nào khác thì chúng ta có thể bị yêu cầu đưa vào mật khẩu của người sử dụng:

root@tty1[home]# su user00 su(pam_unix)[4312]: session opened for user user00 by (uid=0)

user00@tty1[home]$

Đầu tiên, hãy lưu ý tới sự xuất hiện có thay đổi của dấu nhắc. Chúng ta đã không còn là người sử dụng home nữa, để trở thành người sử dụng user00, nên chúng ta đã không còn các quyền ưu tiên của gốc root nữa, như được chỉ ra bằng sự thay đổi trong ký tự cuối cùng của dấu nhắc. Bây giờ chúng ta có thể truy cập thư mục home của chúng ta, tạo một tệp và để thay đổi các thuộc tính của nó sao cho chỉ user00 có thể đọc, ghi và chạy được nó. Tới lúc này, quyền chạy không có nhiều ý nghĩa đối với chúng ta, vì chúng ta vẫn còn chưa biết được cách để tạo ra các tệp chạy được, mà là tốt để biết trước khi chúng ta cần nó:

user00@tty1[home]$ cd user00@tty1[user00]$ echo "only user00 can read, write and execute

this file." > user00file user00@tty1[user00]$ chmod 700 user00file

Hoạt động

3.8 Tạo một người sử dụng mới theo sau các bước được mô tả trước đó, và kiểm tra xem người sử dụng mới này quả thực không thể đọc tệp được tạo ra gần đây hoặc ghi lên tệp đó.

3.8. Quản lý các tiến trình

UNIX được đặc trưng bằng sự quản lý tuyệt vời của nó đối với các tiến trình được chạy trên hệ thống. Trước hết, chúng ta sẽ học dò tìm ra các tiến trình nào đang chạy trong hệ thống và các đặc tính đặc biệt của chúng (chế độ ở đó chúng đang chạy, các tài nguyên được tiêu thụ, ai đang chạy

chúng...). Chúng ta sẽ chạy lệnh ps (tình trạng các tiến trình), có truyền qua vài tham số để thấy cách những tiến trình đó ảnh hưởng tới thông tin được lệnh đó trả về:

root@tty1[/]# ps PID TTY TIME CMD 481 tty1 00:00:00 bash 1559 tty1 00:00:00 ps

Trang 65/232

Page 66: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Không có các tham số thì lệnh ps nói cho chúng ta những tiến trình nào đang chạy trong cửa sổ dòng lệnh trong đó nó được chạy; một cách tự nhiên, tiến trình đầu tiên sẽ luôn tương ứng với trình biên dịch (shell).

Chúng ta có thể ra lệnh cho tiến trình khác được chạy ở nền, sleep, ví dụ (một tiến trình đơn giản

sẽ chờ vài giây để chúng ta truyền tới nó khi một tham số sẽ hoàn tất) và quan sát ps trả về:

root@tty1[/]# sleep 300 [1] 1703 root@tty1[/]# ps PID TTY TIME CMD 481 tty1 00:00:00 bash

1703 tty1 00:00:00 sleep 1705 tty1 00:00:00 ps

Bây giờ chúng ta có thể tự yêu cầu đối với tất cả các tiến trình đang chạy trong hệ thống:

root@tty1[/]# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root

1 0.4 0.0 72 72 ? S 15:41 0:07 init [2] root 2 0.0 0.0 0 0 ? SW 15:41 0:00 [keventd] root

3 0.0 0.0 0 0 ? SWN 15:41 0:00 [ksoftirqd_CPU0] root 4 0.0 0.0 0 0 ? SW 15:41 0:00 [kswapd]

root 5 0.0 0.0 0 0 ? SW 15:41 0:00 [bdflush] root 6 0.0 0.0 0 0 ? SW 15:41 0:00 [kupdated]

root 52 0.0 0.0 0 0 ? SW 15:41 0:00 [kapmd] root 59 0.0 0.0 0 0 ? SW 15:41 0:00 [khubd]

root 433 0.0 0.1 1368 616 ? S 15:41 0:00 pump -i eth0 root 475 0.0 0.1 1316 596 ? S 15:41

0:00 /usr/sbin/automount root 481 0.0 0.3 2864 1988 tty1 S 15:41 0:00 /bin/bash -login root

482 0.0 0.3 2864 1988 tty2 S 15:41 0:00 /bin/bash -login root 483 0.0 0.3 2856 1952 tty3 S

15:41 0:00 /bin/bash -login root 484 0.0 0.3 2856 1976 tty4 S 15:41 0:00 /bin/bash -login

root 2086 0.0 0.3 3436 1552 tty1 R 16:06 0:00 ps aux

Trong những trường hợp nhất định cũng thú vị để chạy lệnh top, nó nói cho chúng ta hoạt động của CPU, sử dụng bộ nhớ …, một cách tương tác.

Bây giờ chúng ta sẽ khởi tạo một tiến trình, dừng nó, và lệnh cho nó chạy ở nền. Để làm thế, chúng

ta sẽ chạy một sleep 20 và nhấn tổ hợp phím Ctrl+Z trước đó 20 giây, dừng nó, chạy jobs để chắc chắn rằng nó quả thực đã dừng và có số nhận diện của nó, và cùng với số nhận diện của nó để lệnh cho nó chạy ở chế độ nền:

root@tty1[/]# sleep 20 <Ctrl+Z> [1]+ Stopped sleep 20 \intro root@tty1[/]#jobs [1]+

Stopped sleep 20 root@tty1[/]# bg 1 [1]+ sleep 20 & [1]+ Done sleep 20 root@tty1[/]#

Một khi 20 giây đã trôi qua, tiến trình đã dừng khi vẫn còn ở nền, và chúng ta được nói về điều này

trên màn hình. Chúng ta có thể kiểm tra thông qua ps rằng quả thực không có tiến trình nào đang chạy cả. Tại thời điểm này, chúng ta có thể dừng một tiến trình và trả nó về mặt trước (foreground)

bằng việc sử dụng lệnh fg:

root@tty1[/]# man ls <Ctrl+z> [1]+ Stopped man ls root@tty1[/]# jobs [1]+ Stopped

man ls root@tty1[/]# fg 1

3.9. Kích hoạt và sử dụng chuột

Chuột là một công cụ cực kỳ hữu dụng để làm việc trong chế độ bảng điều khiển (console), vì nó có thể được sử dụng để lựa chọn và dán văn bản (đây là cách mà chúng ta đã nắm bắt được tất cả các đầu vào và đầu ra để chuẩn bị cho văn bản của hội thảo này, ví dụ thế).

Vì thế, điều đầu tiên chúng ta sẽ làm là thiết lập cấu hình cho chuột, và chúng ta sẽ làm điều này

bằng việc sử dụng chương trình được sử dụng thường xuyên nhất, gpm, nó chạy tự động ở chế độ

Trang 66/232

Page 67: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

nền (vì gpm là một daemon, một khái niệm chúng ta sẽ phân tích trong các phần tiếp sau).

Có nhiều dạng thiết bị chuột (cơ khí, quang, laser và bi) và nhiều dạng kết nối (cổng liên tiếp, cổng PS/2, USB, laser, không dây: tần số radio, hồng ngoại hoặc bluetooth), dù hiện hành những dạng thiết bị chuột được sử dụng thường xuyên nhất là những dạng có các bộ kết nối dạng USB hoặc PS/2 (thường thì chúng được phân phối với 2 dạng kết nối đó). Nếu chúng ta có một chuột dạng đầu tiên, thì chúng ta sẽ chạy dòng lệnh sau:

#gpm -m /dev/input/mice -t autops2

Nếu những gì chúng ta có là một chuột được kết nối tới cổng PS/2, để kích hoạt nó chúng ta sẽ sử dụng thủ tục y hệt như ở trên chỉ khác thiết bị và dạng chuột:

#gpm -m /dev/psaux -t ps2

Về nguyên tắc, sau khi chạy một trong 2 dòng lệnh ở trên, như ở home, bằng việc dịch chuyển chuột thì chúng ta sẽ thấy mũi tên chuột trên tất cả các cửa sổ dòng lệnh, và bằng việc chạy:

sofia@tty1[/]$ ps aux | grep gpm

chúng ta sẽ có câu trả lời của dạng đó

root 3594 0.0 0.1 1632 532 ? Ss 00:28 0:00 gpm -m

/dev/input/mice -t autops2

nơi mà gpm đang chạy ở chế độ nền.

Nếu không, có nghĩa là chuột của chúng ta là không tiêu chuẩn. Trong trường hợp này chúng ta sẽ

cần phải đọc man của gpm cẩn thận và chạy gpm -t help để thử và nhận diện ra dạng chuột để thích nghi cho một dạng mà chúng ta có.

Một khi chuột đã được thiết lập cấu hình, chúng ta có thể chọn phần của văn bản mà chúng ta quan tâm, và khi chúng ta nhấn núm chuột giữa thì chúng ta sẽ dán nội dung được chọn vào vị trí hiện hành của con trỏ. Nếu chúng ta đã quen sử dụng chuột để đặt con trỏ, thì chúng ta có thể thấy rằng các kết quả chúng ta có được không chính xác như những gì chúng ta muốn, nhưng bằng cách luyện tập thực tế một chút, chúng ta sẽ sớm quen được với cách làm việc này.

Chúng ta cũng thiết lập cấu hình cho gpm thông qua lệnh gpmconfig hoặc tiện ích dpkg-

reconfigure gpm.

Hoạt động

3.9 Chúng ta có thể thiết lập cấu hình cho bàn chuột để giả lập một chuột 2 núm được không?

Chúng ta nên lưu ý rằng bộ nhớ đệm mà nội dung của chuột được lưu giữ khi chúng ta truyền từ một tty này sang tty khác.

Hoạt động

3.10 Tận dụng sự việc là nội dung của bộ nhớ đệm của chuột được giữ lại giữa các cửa sổ dòng lệnh, hãy mở

một phiên vi và ở cửa sổ dòng lệnh khác hãy đặt bản thân bạn vào gốc root của hệ thống tệp, hãy liệt kê nội dung của nó một cách chi tiết và chuyển các dữ liệu này tới trình soạn thảo văn bản. Hãy lưu nội dung tệp văn

bản bằng việc sử dụng cat, hãy kiểm tra xem chúng ta đã có được một cách có hiệu quả các kết quả theo yêu cầu hay chưa.

Trang 67/232

Page 68: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

3.10. Các hoạt động khác

Để kết thúc hội thảo đầu tiên này, chúng ta sẽ chạy một loạt các lệnh để tiếp tục với quá trình làm quen với hệ thống và có được các tài nguyên để giải quyết các vấn đề tiềm tàng trong tương lai.

Chúng ta sẽ tìm ra hệ thống, dạng máy tính chúng ta đang chạy trên, phần cứng đã được cài đặt...

Vì thế ở đây bạn có một ít lệnh, nhớ là với man và tên của lệnh bạn có một số trợ giúp để tìm ra những lệnh nào làm gì và tất cả các lựa chọn mà chúng có thể có.

knoppix@0[knoppix]$ uname -a Linux Knoppix 2.6.12 #2 SMP Tue Aug 9 23:20:52 CEST 2005 i686

GNU/Linux knoppix@0[knoppix]$ cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu

family : 15 model : 2 model name : Intel(R) Pentium(R) 4 CPU 2.80GHz stepping : 7 cpu MHz :

2801.835 cache size : 512 KB fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu :

yes fpu_exception : yes cpuid level : 2 wp : yes flags : fpu vme de pse tsc msr pae mce cx8

sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe cid bogomips

: 5455.87 knoppix@0[knoppix]$ lspci 0000:00:00.0 Host bridge: Silicon Integrated Systems

[SiS] SiS645DX Host & Memory & AGP Controller (rev 01) 0000:00:01.0 PCI bridge:

Silicon Integrated Systems [SiS] Virtual PCI-to-PCI bridge (AGP) 0000:00:02.0 ISA bridge:

Silicon Integrated Systems [SiS] SiS962 [MuTIOL Media IO] (rev 14) 0000:00:02.1 SMBus:

Silicon Integrated Systems [SiS]: Unknown device 0016 0000:00:02.3 FireWire (IEEE 1394):

Silicon Integrated Systems [SiS] FireWire Controller 0000:00:02.5 IDE interface: Silicon

Integrated Systems [SiS] 5513 [IDE] 0000:00:02.6 Modem: Silicon Integrated Systems [SiS]

AC'97 Modem Controller (rev a0) 0000:00:02.7 Multimedia audio controller: Silicon

Integrated Systems [SiS] Sound Controller (rev a0) 0000:00:03.0 USB Controller: Silicon

Integrated Systems [SiS] USB 1.0 Controller (rev 0f) 0000:00:03.1 USB Controller: Silicon

Integrated Systems [SiS] USB 1.0 Controller (rev 0f) 0000:00:03.2 USB Controller: Silicon

Integrated Systems [SiS] USB 1.0 Controller (rev 0f) 0000:00:03.3 USB Controller: Silicon

Integrated Systems [SiS] USB 2.0 Controller 0000:00:04.0 Ethernet controller: Silicon

Integrated Systems [SiS] SiS900 PCI Fast Ethernet (rev 91) 0000:00:08.0 CardBus bridge: O2

Micro, Inc. OZ6912 Cardbus Controller 0000:01:00.0 VGA compatible controller: ATI

Technologies

Inc Radeon R250 Lf [Radeon Mobility 9000 M9] (rev 01) knoppix@0[knoppix]$ df S.files 1K

blocks

Used Free Use% Mounted on /dev/root 2471 21 2450 1% / /ramdisk 401312 8388 392924 3% /ramdisk

/UNIONFS 7764900 7371976 392924 95% /UNIONFS /dev/hdc 4067388 4067388 0 100% /cdrom

/dev/cloop

4963828 4963828 0 100% /KNOPPIX /dev/cloop2 2399762 2399762 0 100% /KNOPPIX2

/UNIONFS/dev/sda1

255452 14552 240900 6% /mnt/sda1 knoppix@0[sda1]$ free total used free shared buffers cached

Mem: 514720 495232 19488 0 15476 350084 -/+ buffers/cache: 129672 385048 Swap: 497972 0

497972

Hoạt động

3.11 Trong thư mục ảo /proc/ và trong các thư mục con của nó chúng ta sẽ thấy nhiều thông tin về hệ thống

của chúng ta trong các tệp văn bản. Hãy đặt bản thân bạn vào thư mục này và sử dụng more hoặc cat để khai thác thông tin của các tệp đó.

Trang 68/232

Page 69: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

3.11. Kết luận

Đây là tiếp xúc đầu tiên của chúng ta với một môi trường UNIX. Nó đã giúp phá bỏ chuyện hoang đường rằng làm việc trong dạng các hệ điều hành này là phức tạp và khó. Hơn nữa, nó đã giúp chúng ta bắt đầu hiểu được những khả năng và tính linh hoạt của nó. Chúng ta đã học được cách di chuyển trong hệ thống tệp của nó và để triển khai các hoạt động với các tệp, để tìm kiếm thông tin … Mọi điều chúng ta đã học cho tới bây giờ sẽ rất hữu ích từ đây trở đi và sẽ phục vụ như là cơ sở cho việc mở rộng tri thức của chúng ta.

Cùng lúc, vô số các khả năng thiết lập cấu hình và tự động dò tìm phần cứng của KNOPPIX có nghĩa là nó có thể rất hữu ích cho chúng ta khi cài đặt Debian trong hội thảo tiếp sau, trong trường hợp các vấn đề về phần cứng phát sinh. Chúng ta luôn có thể khởi động lại KNOPPIX và nghiên cứu cách mà nó đã giải quyết vấn đề này (cơ bản bằng việc nghiên cứu các tệp cấu hình).

Như là một hoạt động cuối cùng của hội thảo, chúng ta có thể khởi động lại KNOPPIX trong chế độ đồ họa, nói cách khác, không truyền tham số 2 khi chúng ta khởi tạo nó (cách khác để làm điều này

là bằng việc truyền các tham số knoppix lang=es wheelmouse).

Trang 69/232

Page 70: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

4. Cài đặt GNU/Linux

4.1. Giới thiệu

Trong phần này chúng ta sẽ xem các bước cơ bản được tuân theo trong hầu hết các qui trình cài đặt GNU/Linux. Dù mỗi phát tán có môi trường cài đặt của riêng nó, thì tất cả chúng đều chia sẻ một số bước cơ bản. Trong phần này chúng ta sẽ xem xét các bước đó và giải thích các khái niệm chúng ta cần phải triển khai chúng thành công. Điều quan trọng trước khi chúng ta cài đặt một hệ điều hành mới là chúng ta hãy làm quen một cách phù hợp với những thành phần chính mà chúng ta đã cài đặt lên máy tính của chúng ta sao cho chúng ta có thể thiết lập cấu hình mọi thứ đúng đắn, thậm chí nếu phát tán mà chúng ta sử dụng có bao gồm cả sự dò tìm phần cứng.

Có khả năng là chúng ta có thể có 2 hệ điều hành hoàn toàn độc lập nhau được cài đặt chỉ trên một đĩa cứng. Mặc dù qui trình cài đặt hệ điều hành khác lên cùng đĩa cứng (hoặc được cài đặt lên một đĩa cứng khác trong cùng một máy tính) sẽ không can thiệp vào với các phân vùng khác, thì được khuyến cáo hãy tạo ra các bản sao lưu của tất cả các tài liệu. Bất chấp thực tế là nếu chúng ta tuân theo tất cả các bước được mô tả bên dưới đúng đắn thì thực tế sẽ không có khả năng đánh mất dữ liệu, thì sự thận trọng luôn được khuyến cáo và vì thế hãy tạo ra các bản sao lưu các tệp quan trọng.

Chuẩn bị cài đặt Linux

Trước khi bắt đầu với qui trình cài đặt, sẽ là thuận tiện để biết thương hiệu và mô hình của card đồ họa và âm thanh chúng ta đã cài đặt; card mạng; thương hiệu, dạng và các đặc tính của màn hình, cũng như bất kỳ phần cứng nào khác mà chúng ta có. Thường thì, đối với bo mạch chủ, CPU và RAM, chúng ta không cần biết các đặc tính của chúng. Để có được những thông tin này, chúng ta có thể nghiên cứu các sách chỉ dẫn được đưa ra cho chúng ta khi chúng ta mua máy tính hoặc, nếu chúng ta có hệ điều hành khác được cài đặt, hãy sử dụng nó cho mục đích này (trên các hệ thống Windows chúng ta có thể có được các dữ liệu này từ bảng điều khiển [control panel]).

4.2 Khởi động

Nói chung, tất cả các phát tán GNU/Linux đưa ra một số dạng công cụ khởi động qui trình cài đặt Hiện hành, là điển hình để đưa ra một đĩa CD hoặc DVD khởi động hoặc nếu máy tính của chúng ta không có đầu đọc tương ứng hoặc nếu chúng ta muốn tiến hành cài đặt từ xa, thì một đĩa khởi động sẽ được đưa ra.

Bước đầu tiên của qui trình này là chọn dạng cài đặt mà chúng ta muốn triển khai. Nói chung, lựa chọn này được đưa ra để xác định dạng người sử dụng đang cài đặt hệ thống, đưa ra ít nhiều các thông tin tương ứng và cho phép người sử dụng thiết lập cấu hình cho hệ thống chi tiết hơn hay không. Nếu chúng ta có đủ tri thức, thì được khuyến cáo tiến hành cài đặt ở chế độ chuyên gia (hoặc tương tự) sao cho chúng ta có thể thích nghi được hệ thống tốt hơn cho những nhu cầu đặc biệt của chúng ta. Trong một số phát tán, bước đầu tiên này cũng phục vụ cho việc chọn phiên bản của nhân mà chúng ta muốn cài đặt hoặc thiết lập cấu hình cho qui trình cài đặt ở chế độ đồ họa, chế độ văn bản … Điều cơ bản phải đọc cẩn thận tất cả các thông tin chúng ta được cung cấp trong pha đầu tiên này sao cho chúng ta có thể chọn đúng những gì phù hợp nhất để sử dụng mà chúng ta muốn trao cho hệ thống của chúng ta.

Tiếp đến, hầu hết các phát tán sẽ cho phép chúng ta chọn dạng bàn phím (hoặc cấu hình tương tự)

Trang 70/232

Page 71: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

mà chúng ta muốn sử dụng. Dù có nhiều dạng khác nhau, thì dạng chung nhất là QWERTY (các ký

tự đầu bắt đầu từ hàng đầu từ trái qua của bản phím), nên chúng ta sẽ chọn qwerty/ es (Spain).

4.3. Phân vùng cho đĩa

Việc phân vùng cho đĩa cứng là một trong những phần sống còn nhất của toàn bộ qui trình. Bước này có liên quan tới việc chia đĩa thành các phần khác nhau, sao cho mỗi phần là một đơn vị độc lập. Nếu chúng ta đã có một hệ điều hành được cài đặt lên máy tính của chúng ta rồi, thì đĩa sẽ được phân vùng thành một hoặc vài phân vùng, nhưng nếu đĩa là mới, thì thường sẽ không có điều đó.

Để cài đặt GNU/Linux chúng ta cần phải có ít nhất một phân vùng cho nó. Thực tế là khi chúng ta sửa đổi kích cỡ của một phân vùng thì chúng ta cần phải loại bỏ nó và tạo lại nó một lần nữa, ngụ ý việc đánh mất tất cả các thông tin nó có. Vì lý do này và khác, có các chương trình cho phép chúng ta sửa kích cỡ của các phân vùng mà không phải

loại bỏ chúng. fips là một chương trình với một giấy phép GPL, cho phép chúng ta thay đổi kích cỡ các phân vùng của chúng ta được định dạng với FAT (cho các hệ thống Windows của nhánh không phải là NT) mà không đánh mất các thông tin của chúng. Cũng có những chương trình thương mại khác cho phép chúng ta triển khai dạng hoạt động này với bất kỳ hệ thống tệp nào, nghĩa là nếu chúng ta không muốn đánh mất thông tin hệ thống của chúng ta, thì chúng ta nên sử dụng một trong số chúng trước khi bắt đầu với toàn bộ qui trình này.

Các phân vùng đĩa

Dù với 1 hoặc 2 phân vùng chúng ta có thể có đủ khả năng để cài đặt GNU/Linux, thì thú vị để chia đĩa thành nhiều phân đoạn hơn và để đặt các thư mục nhất định trong các đơn vị khác nhau sao cho chúng ta có thể quản lý các tài nguyên có hiệu quả hơn, tránh hệ thống bị sập vì sự bão hòa của đĩa... Trong tất cả các sự kiện, chúng ta sẽ để lại các khía cạnh đó cho các khóa học tiên tiến hơn về quản trị.

Được khuyến cáo cho GNU/Linux sử dụng 2 phân vùng đĩa cứng. Một phân vùng sẽ phục vụ cho việc lưu các tệp hệ thống và phân vùng kia cho sự hoán đổi swap. Swap là một vùng trao đổi giữa RAM và đĩa cứng của máy tính. Nó giúp khi RAM của hệ điều hành bị chiếm hoàn toàn và các chương trình đang chạy cần nhiều bộ nhớ hơn. Điều này là khi chúng ta bắt đầu sử dụng swap để tiết kiệm các vùng của RAM mà đang không được sử dụng, trao đổi chúng sao cho các ứng dụng không bị để lại mà không có bộ nhớ sẵn sàng. Cũng có khả năng làm mà không có swap, nhưng không được khuyến cáo vì hệ thống sẽ không có khả năng quản lý các tài nguyên một cách có hiệu quả; ngoài ra, khi chúng ta sử dụng vài ứng dụng cùng một lúc thì chúng sẽ bị để lại mà không có đủ bộ nhớ dễ dàng hơn nhiều. Dù kích cỡ của swap có thể lớn bất kỳ như chúng ta muốn, thì được khuyến cáo làm cho nó gấp 2 lần bộ nhớ RAM được cài đặt trên máy tính nếu chúng ta có 64MB hoặc ít hơn, và y hệt như bộ nhớ RAM nếu chúng ta có nhiều hơn. Những tính toán đó là dựa vào những kiểm thử hiệu năng của hệ thống chỉ ra rằng chúng đạt được tới một điểm, nơi mà, nếu các ứng dụng cần sử dụng quá nhiều bộ nhớ swap, thì hiệu năng sẽ giảm nhiều, gây ra cho hệ thống trở thành hầu như bị bão hòa (để xem lượng bộ nhớ RAM và swap đang được sử dụng, hệ thống cho

chúng ta lệnh free).

Có vài ứng dụng cho việc phân vùng cho đĩa. Một trong số những ứng dụng đầu tiên xuất hiện là

Trang 71/232

Các phương pháp cài đặt

Một số phát tán GNU/Linux cho phép chúng ta triển khai cài đặt thông qua bất kỳ phương tiện nào; CD, DVD, FTP, HTTP, đĩa cứng, NFS... Cũng có các phương pháp cài đặt cho phép chúng ta khởi động qui trình từ các hệ điều hành khác.

Lựa chọn hệ thống tệp

Dù có các cách thức cài đặt GNU/Linux bằng việc sử dụng hệ thống tệp của hệ điều hành khác, thì không được khuyến cáo sử dụng dạng cài đặt đó vì hiệu năng của hệ thống sẽ bị suy giảm đáng kể.

Page 72: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

fdisk, dù hiện hành có những ứng dụng khác như cfdisk, diskDruid … Trong một số qui trình cài đặt, chúng ta có thể chọn ứng dụng nào chúng ta muốn sử dụng, dù chúng tất cả đều cho phép chúng ta làm chính xác y hệt điều đó với những thay đổi trong trình bày môi trường. Cách mà

GNU/Linux nhận diện các đĩa là /dev/hdX đối với các đĩa IDE và /dev/sdX đối với các đĩa SCSI và Serial ATA, nơi mà trong cả 2 trường hợp X là một ký tự tương ứng với đĩa mà chúng ta muốn tham chiếu tới như sau:

Các dạng đĩa cứng

Đối với các máy tính cá nhân, có 3 dạng đĩa cứng: IDE, Serial ATA và SCSI. Hiện tại, hầu hết các bo mạch chủ có các trình kiểm soát (controller) Serial ATA. Các trình kiểm soát SATA cho phép tới 4 hoặc 6 đĩa. Các trình kiểm soát SCSI (Giao diện Hệ thống Máy tính Nhỏ/Thông minh - Small/Smart Computer System Interface) cho phép tới 8 thiết bị và có tốc độ truyền cao hơn, dù chúng cũng đắt giá hơn nhiều so với IDE.

Bảng 4.1

Thiết bị Ý nghĩa

/dev/had Đĩa chủ của kênh IDE đầu tiên

/dev/hdb Đĩa phụ của kênh IDE đầu tiên

/dev/hdc Đĩa chủ của kênh IDE thứ 2

/dev/hdd Đĩa phụ của kênh IDE thứ 2

/dev/sda Đĩa đầu tiên của trình kiểm soát SCSI hoặc SATA

/dev/sdb Đĩa thứ 2 của trình kiểm soát SCSI hoặc SATA

Nếu chúng ta có hơn 1 đĩa trong máy tính của chúng ta, thì trước khi chúng ta vào chương trình phân vùng, chúng ta có thể chọn đĩa nào sẽ làm việc trên đó. Khi chúng ta tạo ra một phân vùng thì chúng ta sẽ được câu hỏi phân vùng đó là gốc ban đầu hay logic. Trong một đĩa cứng chúng ta có thể có tới 4 phân vùng gốc ban đầu và tới 64 phân vùng logic. Nếu chúng ta không cần hơn 4 phân vùng, thì chúng ta có thể chọn cả 2 dạng trên. Nếu chúng ta cần hơn nữa, thì chúng ta nên nhớ trong đầu rằng các phân vùng logic được đặt bên trong một phân vùng gốc ban đầu (tối đa 16 phân vùng logic cho mỗi phân vùng gốc ban đầu) nên chúng ta không thể có 4 phân vùng gốc ban đầu được tạo ra và sau đó bổ sung thêm các phân vùng logic khác được. Trong trường hợp này, chúng ta nên tạo ra 3 phân vùng gốc ban đầu và tối đa 16 phân vùng logic trong 4 phân vùng gốc ban đầu. Hình sau đây cho chúng ta một ví dụ đồ họa:

Trang 72/232

Bản ghi khởi động chủ - Master boot record

Để lưu thông tn của các phân vùng và chương trình khởi động, các đĩa có một vùng dữ liệu được giữ gìn được gọi là bản ghi khởi động chủ MBR (Master Boot Record).

Page 73: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Hình 4.1

Khi chúng ta tạo một phân vùng, chúng ta cần chỉ định hệ thống tệp nào chúng ta sẽ sử dụng cho nó (Linux ext2, Linux ext3 hay Linux swap). Một khi chúng ta đã tạo các phân vùng, thì chúng ta sẽ lưu cấu hình và chúng ta phải nói cho tiến trình cài đặt nơi mà chúng ta muốn đặt hệ thống tệp gốc root và hệ thống swap. Một khi chúng ta đã triển khai các bước đó, thì chúng ta có thể tiếp tục với phần còn lại của tiến trình cài đặt.

4.4. Cài đặt các module

Các module nhân là các phần của phần mềm chuyên dụng trong một nhiệm vụ đặc thù. Với tất cả cách thức của các thiết bị và các vùng chức năng khác nhau cho nhiều hệ thống tệp, các hoạt động quản lý trực tuyến …, nó đã được quyết định không bao gồm tất cả các trình điều khiển và các chức năng đó như là tiêu chuẩn. Một trong những phiên bản đầu tiên của Linux, khi nhân mà chúng ta đã không đưa vào bất kỳ chức năng nào, chúng ta đã phải biên dịch lại nó hoàn toàn và tạo ra một nhân được tùy biến cho các nhu cầu của chúng ta. Với sự kết hợp của các module thì tiến trình này không còn cần thiết nữa và chúng ta có thể chọn trực tiếp chức năng mà chúng ta cần.

Thông thường, những phát tán đã kết hợp hàng trăm module khác nhau cho nhân Linux. Chúng có xu hướng được tổ chức trong các chủng loại khác nhau để làm cho việc tìm kiếm chúng là dễ dàng hơn và thường thì, với tên y hệt của module hoặc mô tả ngắn gọn đi cùng với nó mà chúng ta đã biết rồi, nó được thiết kế cho thiết bị nào hoặc chức năng nào mà nó triển khai. Điều này giải thích

Trang 73/232

Phân vùng tích cực

Trong tất cả các phân vùng của một đĩa cứng chúng ta có thể chọn một phân vùng sẽ là tích cực nhất. Cờ này để nói cho BIOS hoặc EFI của hệ thống phân vùng nào nên được khởi tạo nếu nó không thấy chương trình khởi tạo trong MBR.

Page 74: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

vì sao chúng ta đã nhắc tới trước đó rằng điều quan trọng phải biết phần cứng nào máy tính của chúng ta có: trong bước này chúng ta có thể chọn chi tiết hơn những module nào chúng ta cần. Đối với một số trong số chúng thì chúng ta có thể phải truyền một thông số đặc biệt (như địa chỉ I/O, ngắt được thiết bị sử dụng …), thông tin mà chúng ta có thể có được từ BIOS hoặc EFI của hệ thống hoặc thông qua các thủ tục được nhắc tới trước đó.

Cũng đúng là nếu qui trình cài đặt mang một vài dạng chương trình để nhận biết phần cứng một cách tự động, thì toàn bộ qui trình lựa chọn và tải các module là không cần thiết vì nó đã được triển khai rồi một cách tự động. Tuy nhiên, nó có thể không dò tìm ra được đúng một thiết bị mà chúng ta đã cài đặt, trong trường hợp đó chúng ta sẽ cần đưa vào bằng tay module tương ứng.

Nếu chúng ta quên đưa vào một module (hoặc cài đặt một số thiết bị mới) tại thời điểm cài đặt hệ

thống, thì chúng ta luôn có thể sử dụng các lệnh sau: insmod (để thêm một module mới), lsmod (để

liệt kê các module được cài đặt), rmmod (để loại bỏ một module) và modprobe (để kiểm thử một module, và nếu nó làm việc đúng, thì đưa nó vào trong nhân). Tất cả những module đó không gì

hơn là các tệp nhị phân mà chúng ta có xu hướng tìm trong thư mục /lib/modules/ của hệ thống.

Nếu chúng ta có các vấn đề về phát hiện phần cứng nào chúng ta đã cài đặt, thì một tiện ích rất thực tế có xu hướng đi với các phát tán là discover. Chúng ta có thể sử dụng nó để biết chính xác các thành phần nào chúng ta có và những module1 nào tương ứng với chúng.

4.5. Cấu hình mạng cơ bản

Sau việc cấu hình các module mà sẽ được đưa vào trong nhân của hệ điều hành, chúng ta cần thiết phải thiết lập cấu hình cho mạng (nếu chúng ta có card theo yêu cầu). Dù trong tài liệu này chúng ta sẽ không đi vào chi tiết các mạng máy tính, thì chúng ta sẽ đưa ra những ý tưởng cần thiết để triển khai bước này mà không có bất kỳ sự phức tạp rắc rối nào.

Điều đầu tiên chúng ta sẽ được yêu cầu là tên mà chúng ta muốn trao cho hệ thống. Tên này sẽ phục vụ để tham chiếu tới nó mà không cần lúc nào cũng phải nhớ địa chỉ IP của nó. Một khi chúng ta đã vào được tên, chúng ta thường sẽ được yêu cầu liệu trong mạng của chúng ta có sử dụng một cơ chế được gọi là DHCP hay BOOTP hay không, chúng bao gồm việc có một máy chủ đặc thù có trách nhiệm cho việc chỉ định tự động các IP cho các máy tính khi khởi động. Nếu chúng ta sử dụng cơ chế này, thì chúng ta cần chỉ định rằng đây là cách ta làm, còn nếu không, chúng ta sẽ được yêu cầu có IP và mặt nạ cho máy tính của chúng ta. Nếu chúng ta không biết các dữ liệu này, chì chúng ta phải yêu cầu người quản trị mạng của chúng ta. Tiếp theo chúng ta sẽ phải vào IP cổng (gateway) mạng của chúng ta. Cổng này là một thiết bị hoặc một máy tính hành động như một chiếc cầu nối giữa mạng cục bộ của chúng ta và Internet (nếu chúng ta không có bất kỳ thiết bị nào dạng này, thì chúng ta có thể để trường này trống). Tiếp theo, chúng ta sẽ chỉ định (các) máy chủ tên mà chúng ta sử dụng. Một máy chủ tên (DNS server) là một máy tính mà trao cho chúng ta sự tương đương giữa một tên và một địa chỉ IP. Nếu chúng ta không biết tên nào chúng ta đang sử dụng thì chúng ta cũng sẽ phải hỏi người quản trị mạng.

Nếu chúng ta đang ở trong một mạng cục bộ, thì chúng ta sẽ cần tư vấn cho người quản trị mạng cung cấp cho chúng ta tất cả các thông tin cần thiết này. Nếu chúng ta có hệ điều hành khác được cài đặt trên máy tính, thì chúng ta cũng có thể truy cập cấu hình của nó để có được thông tin này. Tuy nhiên, chúng ta sẽ không bao giờ sáng tạo ra được các giá trị đó, vì kết quả có khả năng nhất là

Trang 74/232

(1) Chúng ta thường có thể tìm các module tệp cấu hình

trong /etc/modules

Địa chỉ IP

Một địa chỉ IP là nhận diện của một máy tính trong một mạng khi chúng ta sử dụng giao thức TCP/IP, giao thức được sử dụng phổ biến nhất trên Internet.

Page 75: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

nó sẽ không thiết lập cấu hình phù hợp và chúng ta sẽ gây ra những vấn đề trong mạng cục bộ.

4.6. Hệ thống khởi động

Một khi chúng ta đã thiết lập cấu hình cho tất cả các thiết lập đó, thì chúng ta sẽ cần phải cài đặt một chương trình nhỏ lên đĩa cứng sao cho trong quá trình khởi động máy tính chúng ta có thể chọn hệ điều hành nào chúng ta đã cài đặt chúng ta muốn khởi động. Thậm chí nếu chúng ta đã chỉ cài đặt GNU/Linux lên hệ thống, thì chúng ta cũng vẫn nên cài đặt chương trình này, vì hệ thống khởi động yêu cầu có nó.

Có nhiều ứng dụng khác nhau triển khai tiến trình này. Những ứng dụng phổ biến nhất là Lilo (Linux Loader - Trình tải khởi động Linux) và Grub (GNU Grand Unified Bootloader - Trình tải khởi động Lớn Thống nhất GNU). Điều duy nhất những ứng dụng đó làm là khởi tạo tiến trình tải và chạy nhân của hệ điều hành mà chúng ta chỉ định. Nói chung, tất cả các phát tán đều dò tìm liệu chúng ta có hay không hệ điều hành khác được cài đặt trên các đĩa cứng và tự động cấu hình hệ thống khởi động cho chúng ta. Tất cả điều chúng ta cần ghi nhớ trong đầu là chúng ta sẽ phải đặt chương trình này đúng sao cho nó chạy khi máy tính được khởi động. Thông thường, nó có xu hướng được đặt trong MBR của đĩa chủ của kênh IDE hoặc SCSI đầu tiên, đây là chỗ đầu tiên BIOS hoặc EFI của máy tính dự kiến tìm kiếm một chương trình có các đặc tính đó.

4.7. Lựa chọn các gói

Hầu hết các tiến trình cài đặt bao gồm 2 cách lựa chọn các chương trình mà chúng ta sẽ cài đặt lên hệ thống: cơ bản và chuyên môn. Với tiến trình lựa chọn cơ bản thì các gói có sẵn thường sẽ được nhóm vào thành các tập hợp lớn các chương trình: quản trị, phát triển phần mềm, các bộ văn phòng, toán học... Nếu chúng ta vẫn còn chưa biết chính xác những chương trình nào chúng ta sẽ sử dụng, thì dạng cài đặt này là phù hợp nhất, vì chúng ta có thể chọn dạng chương trình nào chúng ta sử dụng nói chung và không đi vào chi tiết.

Các gói

Một gói bao gồm một hoặc vài chương trình/thư viện có liên quan tới nhau, được nhóm để tạo thành một khối duy nhất. Hầu hết các phát tán bao gồm các tiện ích cho việc điều khiển các gói (cài đặt, loại trừ, cấu hình …). Dạng tổ chức này rất hữu ích vì khi chúng ta cần một chương trình, tiện ích …, thì chúng ta có thể cài đặt nó tất cả chỉ một lần.

Khi chúng ta biết nhiều hơn một chút về hệ thống và biết chính xác những gì chúng ta sẽ sử dụng, thì sự lựa chọn các gói theo chuyên môn là tốt hơn. Với dạng lựa chọn này chúng ta có thể tinh chỉnh các chương trình mà chúng ta cần tốt hơn nhiều, tiết kiệm được khoảng trống đĩa và tránh được việc tải của hệ thống nhiều chương trình hơn mức cần thiết. Khi chúng ta cài đặt một hệ thống để sử dụng đặc thù (máy chủ http, cvs …) thì được khuyến cáo chọn chỉ những chương trình nào mà chúng ta sẽ thực sự sử dụng, để tránh các vấn đề về an ninh (ít cửa hơn chúng ta để mở, an toàn hơn cho hệ thống).

Một số phát tán cũng cho phép khả năng có được các gói từ các vị trí khác nhau, như một hoặc vài CD hoặc DVD, từ các máy chủ trên Internet … Debian GNU/Linux từng là đầu tiên có một hệ

thống dạng này, được gọi là apt. Dạng quản lý này rất hữu ích vì nó cho chúng ta nhiều tính mềm dẻo và giữ cho chúng ta nắm được thông tin về những sửa lỗi cho đúng và các cập nhật chương trình mới nhất.

Trang 75/232

Cập nhật của RedHat

RedHat cũng đã áp dụng một hệ thống tải về hoặc cập nhật theo một dạng tương tự với

apt của Debian.

Page 76: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

4.8. Các khía cạnh khác

Chúng ta cần phải biết phải làm gì nếu chúng ta có bất kỳ vấn đề gì với sự cài đặt hoặc đôi lúc hệ thống khởi động không cho phép chúng ta tải hệ điều hành lên. Thông thường, trong quá trình cài đặt có một bước yêu cầu chúng ta liệu chúng ta có muốn tạo ra một đĩa phục hồi hay không. Luôn được khuyến cáo tạo ra đĩa này, vì nó cho phép chúng ta tải hệ điều hành và truy cập hệ thống tệp để sửa những gì cần thiết.

Trong một số phát tán, chúng ta có thể làm y hệt với đĩa CD khởi động. Trong trường hợp của Debian, ví dụ, bản thân tiến trình khởi động bao gồm một bảng điều khiển (chúng ta có thể truy cập nó bằng việc nhấn Ctrl+F2) với các lệnh cơ bản cho chúng ta để triển khai các hoạt động phục hồi cơ bản. Trong tất cả các sự kiện, nếu chúng ta đối mặt với một vấn đề nghiêm trọng mà không cho phép chúng ta khởi động hệ thống một cách đúng đắn và chúng ta muốn tất cả các cộng cụ thường dùng, thì chúng ta cũng có thể khởi động bằng một đĩa live CD Knoppix hoặc bất kỳ phát tán nào khác và kích hoạt đơn vị nơi mà chúng ta nhờ hệ thống cài đặt để sửa lỗi đó. Điều quan trọng là phải có một trong những công cụ đó và phải kiểm thử nó trước khi một vấn đề nghiêm trọng xảy ra sao cho chúng ta luôn được chuẩn bị.

Hầu hết các qui trình cài đặt sử dụng một ứng dụng gọi là chương trình mồi (bootstrap) mà chúng ta cũng có thể cài đặt lên hệ thống với gói tương ứng. Với nó, chúng ta có thể tạo ra qui trình cài đặt của riêng chúng ta hoặc xem cách mà hệ thống thực sự triển khai sự cài đặt đó và các nhiệm vụ cấu

hình. Chúng ta có thể tái chế hầu hết trong số chúng với base-config program hoặc bất kỳ thứ nào khác mà nó tự gọi bản thân (bạn có thể tìm thêm thông tin trong sách chỉ dẫn), mặc dù chúng ta luôn có thể chuyển sang các tệp cấu hình của hệ điều hành để làm nó bằng tay.

Trang 76/232

Page 77: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

5. Hội thảo cài đặt Debian Etch

5.1 Giới thiệu

Trong khi hội thảo đầu tiên đã giúp chúng ta tiến hành các bước đầu tiên trong một hệ thống dạng UNIX, và để làm thế chúng ta đã sử dụng một phát tán không để lại dấu vết trên máy tính của chúng ta, vì nó đã khởi động và được chạy từ một đĩa CD-ROM hoặc DVD-ROM, điều này phục vụ để dạy chúng ta cách cài đặt một hệ thống GNU/Linux cơ bản lên máy tính của chúng ta.

Phát tán được chọn cho hội thảo lần này là Debian GNU/Linux 4.0, được biết tới như là Etch (phiên bản mới nhất tại thời điểm tác phẩm này được xuất bản), nó đã được phát hành vào ngày 08/04/2007 sau 21 tháng liên tục phát triển. Debian GNU/Linux là một hệ điều hành tự do hỗ trợ tổng cộng 11 kiến trúc vi xử lý.

Về phần mềm, những đổi mới của nó bao gồm các môi trường đồ họa cho máy để bàn GNOME 2.14, KDE 3.5.5a và Xfce 4.4; Bộ phần mềm văn phòng OpenOffice.org 2.0.4, KOffice 1.6, GNUcash 2.0.5, GNUmeric 1.6.3 và Abiword 2.4.6; Coreo Evolution 2.6.3 và trình thông điệp tức thì (chat) Gaim 2.0; iceweasel 2.0.0.2 là trình duyệt Firefox, trong khi icedove 1.5 là trình thư điện tử máy trạm Thunderbird; cả 2 chương trình đều là các phiên bản có các thương hiệu được đăng ký chưa sử dụng.

Nó cũng bao gồm các chương trình mật mã, tuân thủ với FHS phiên bản 2.3 và với các chương trình được phát triển cho phiên bản 3.1 của LSB.

Debian GNU/Linux 4.0 đưa ra một giao diện đồ họa mới cho hệ thống cài đặt có hỗ trợ kiểm tra chính tả, sử dụng các ký tự tổ hợp và các ngôn ngữ phức tạp. Hệ thống cài đặt cho Debian GNU/Linux bây giờ được dịch sang 58 ngôn ngữ. Với Debian GNU/Linux 4.0, an ninh và tính hiệu quả của hệ thống quản lý gói được cải thiện.

Debian GNU/Linux có thể chạy được trên các máy tính chạy từ các thiết bị điện tử cá nhân PDA và các hệ thống bỏ túi cho tới các siêu máy tính, thông qua hầu hết bất kỳ hệ thống trung gian nào. Nó đưa ra sự duy trì cho tổng cộng 11 kiến trúc: Sun SPARC (sparc), HP Alpha (alpha), Motorola/IBM PowerPC (powerpc), Intel IA-32 (i386) e IA-64 (ia64), HP PA-RISC (hppa), MIPS (mips, mipsel), ARM (arm), IBM S/390 (s390) và (được giới thiệu lần đầu tiên trong Debian GNU/Linux 4.0) AMD64 và Intel EM64T (amd64).

Sự lựa chọn giữa Debian và RedHat cho hội thảo này là không thật dễ dàng, vì RedHat đưa ra các sản phẩm thương mại được thừa nhận rất tốt trong thế giới các doanh nghiệp, và nói chung được xem là đơn giản hơn nhiều để cài đặt một phát tán RedHat hơn là Debian. Thực tế là chúng tôi đã chọn Debian vì những lý do sau: trước hết, phát tán này phản ánh triết học của GNU/Linux chân thực hơn và mọi thứ đạt được nhờ công việc tự nguyện của hàng ngàn người; thứ hai, có lẽ một trong những phát tán trao cho người sử dụng tự do nhất khi nói về việc cài đặt và duy trì nó; và một điểm cuối cùng cơ bản, đối với hệ thống gói của nó, có lẽ là có sẵn hiện nay và ổn định nhất với 18.733 gói. Dù vậy, Debian đã được chọn không phải vì nó được xem là tốt hơn RedHat (chắc chắn có nhiều sự lựa chọn theo cách này vì mỗi người thích mỗi phát tán khác nhau), nhưng đơn giản vì tính mềm dẻo của nó làm cho nó phù hợp cho các mục đích nghiên cứu hàn lâm. Với sự thừa nhận về ảnh hưởng của RedHat, chúng tôi đã dành riêng một phụ lục cho phát tán này sao cho các độc giả cũng có thể học về nó và đưa ra những ý kiến của riêng họ.

Trang 77/232

Page 78: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Chúng tôi cũng không quên rằng ngoài 2 phát tán này ra còn có nhiều phát tán khác nữa. Nhưng chúng tôi tin tưởng rằng một khi bạn đã có được mối liên hệ ban đầu với bất kỳ phát tán nào trong số chúng, thì công việc của từng người sử dụng là kiểm thử các phát tán khác nhau đó và đưa ra ý kiến về phát tán nào tốt nhất phù hợp cho những nhu cầu của anh hoặc chị ta. Vì lý do này, một lần nữa chúng tôi muốn khuyến khích từng cá nhân trải nghiệm và kiểm thử và tập trung những nỗ lực vào hướng phù hợp nhất. GNU/Linux không phải là một hệ thống đóng, ngược lại, GNU/Linux đồng nghĩa với sự tự do, và vì lý do này ý định cơ bản của module này là, nói chung, một khi tri thức nền tảng cần thiết được hình thành, thì sự tự do này có thể được thực hành mà không có những trở ngại, với lợi ích của tất cả những ưu điểm của nó và giả thiết tất cả những hệ quả của nó.

Chúng tôi muốn lưu ý rằng tại Tây Ban Nha, và đặc biệt trong ngữ cảnh giáo dục, nhiều cộng đồng tự trị đã chọn phần mềm tự do. Nó được bắt đầu tại Extremadura, với GnuLinEx, một phát tán GNU/Linux dựa vào Debian. Và đi theo nó là Guadalinex tại Andalucia, LliureX trong cộng đồng Valencia, Max trong Cộng đồng Madrid, Molinux tại Castilla - La Mancha... Mặc dù ban đầu chúng từng tất cả dựa vào Debian, thì một số trong số chúng đã thay đổi và bây giờ dựa vào Ubuntu, một phát tán GNU/Linux hiện đang trở nên phổ biến.

Vì thế, nhận thức về sức mạnh gia tăng của Ubuntu, chúng tôi đã dành riêng một phụ lục cho phát tán này sao cho các độc giả cũng có thể làm quen với nó và đưa ra những ý kiến của họ.

Hoạt động

5.1 Hoạt động này nhằm để bạn tới thăm các trang web được chỉ ra ở trên để tìm ra những hành động đang được triển khai, tại các cộng đồng tự trị khác nhau, để giới thiệu và thúc đẩy sử dụng phần mềm tự do trong ngữ cảnh giáo dục.

Hoạt động

5.2 Vì chúng ta sắp cài đặt Debian, chúng tôi khuyến cáo viếng thăm trang web của nó và làm quen với nội dung của nó. Vì thế, chúng tôi đề xuất với bạn viếng thăm trang web đó và các phân khu của nó. Một lần nữa chúng tôi khuyến khích các độc giả đưa ra sự kiềm chế một cách tò mò tự do của họ, và nhân chuyện này bám theo các đường liên kết mà họ thấy thú vị.

5.1.1. Các hệ thống cài đặt

Hệ thống cài đặt được hiểu có nghĩa là các tài nguyên hoặc thiết bị được sử dụng để cài đặt hệ điều hành. Hiện hành, hầu hết tất cả các phát tán đều đưa ra các khả năng khác nhau cho việc triển khai nó, nhưng về cơ bản chúng tôi có thể phân biệt giữa 2 hệ thống cài đặt: CD-ROM/DVD-ROM hoặc Internet. Hơn nữa, nói chung, có khả năng kết hợp các hệ thống khác nhau.

Debian đưa ra các dạng cài đặt khác nhau:

• Sử dụng một tập hợp các đĩa CD-ROM hoặc DVD-ROM có sử dụng debian-installer. Tập hợp này của các đĩa CD-ROM/DVD-ROM gồm tất cả các gói Debian, nghĩa là chúng ta có thể triển khai một cài đặt đầy đủ mà không cần có kết nối tới một mạng. Chúng ta có thể tải về Debian GNU/Linux bằng việc sử dụng bittorrent (đây là phương pháp được khuyến cáo hiện nay), jigdo hoặc HTTP/FTP.

• Sử dụng một đĩa CD-ROM. Có 2 ảnh cài đặt mạng khác nhau cho CD-ROM (“netinst”) có

thể được sử dụng để cài đặt Etch với debian-installer. Những ảnh này được thiết kế sao cho bạn có thể khởi động từ đĩa CD và cài đặt các gói bổ sung thêm mà bạn muốn từ mạng (Net), vì thế có tên là “netinst”. Sự khác biệt giữa 2 ảnh có sẵn này là ảnh đầy đủ “netinst” gồm trình cài đặt và hệ thống cơ bản, còn ảnh “thẻ của người viếng thăm” (“visitor's card”)

Trang 78/232

Page 79: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

là nhỏ hơn và không bao gồm hệ thống cơ bản, nghĩa là phải tải nó về từ Net. Bạn có thể có một ảnh đầy đủ cho CD mà không cần kết nối tới Net để hoàn tất việc cài đặt. Để làm như thế bạn sẽ chỉ cần sử dụng CD đầu tiên trong bộ các đĩa CD Debian.

• Thông qua đĩa khởi động (boot.img), khi đĩa khởi động, thì nó sẽ yêu cầu bạn chèn vào đĩa

thứ 2 (root.img). Nếu bạn định triển khai cài đặt qua mạng, thì bạn sẽ cần ảnh floppy/net-

drivers.img, vì nó chứa các trình kiểm soát bổ sung cho nhiều card mạng Ethernet, và cũng bao gồm sự hỗ trợ cho PCMCIA. Trong trường hợp triển khai cài đặt từ CD-ROM, và không có khả năng khởi động từ nó, thì hãy khởi động trước hết từ một đĩa và sử dụng ảnh

floppy/net-drivers.img như là các trình kiểm soát đĩa để hoàn tất cài đặt khi sử dụng CD-ROM.

• Sử dụng thiết bị nhớ USB. Cách dễ nhất của việc chuẩn bị thiết bị nhớ USB của bạn là tải về

hd-media/boot.img.gz và sử dụng gunzip để trích tách ảnh đó. Sau đó, kích hoạt thiết bị nhớ (nó sẽ có một hệ thống tệp FAT) và, cuối cùng, tải về một ảnh của CD “netinst” của

Debian và sao chép tệp này vào thiết bị nhớ (nó sẽ là .iso).

• Sử dụng mạng. Các phương pháp khác nhau cho việc khởi động qua mạng phụ thuộc vào kiến trúc và cấu hình để khởi động qua mạng (ví dụ, bằng DHCP). Cách dễ nhất để thiết lập cấu hình một khởi động qua mạng có thể là sử dụng PXE.

• Sử dụng đĩa cứng. Có khả năng khởi động trình cài đặt mà không cần sử dụng các phương tiện tháo lắp được, nhưng chỉ được nếu có một đĩa cứng đang tồn tại, mà có thể có một hệ

điều hành khác. Hãy tải về hd-media/initrd.gz, hdmedia/vmlinuz, và một ảnh CD của Debian trong thư mục mức cao nhất trong đĩa cứng (ảnh CD nên có một tên có phần mở

rộng là .iso). Bây giờ chúng ta chỉ cần khởi động Linux với initrd.

Tóm tắt này chỉ được thiết kế để liệt kê các dạng cài đặt khác nhau mà Debian đưa ra. Nhưng để triển khai cài đặt chúng tôi khuyến cáo bạn viếng thăm trang web của nó, như chúng tôi đã nhắc tới, và đọc cẩn thận “Cách cài đặt thế nào” (“HOWTO install”).

Mức độ tương tác mà sự cài đặt đòi hỏi cũng sẽ phụ thuộc vào hệ thống và dạng cài đặt được chọn. Như có thể mong đợi, từng trong số các hệ thống đó đều có những ưu và nhược điểm của nó: trong khi một cài đặt tiêu chuẩn cho phép chúng ta thiết lập cấu hình từng bước một, thứ gì đó cực kỳ hữu dụng cho việc tùy biến hệ thóng theo các khả năng và nhu cầu của chúng ta, thì một hệ thống cài đặt hoàn toàn tự động đòi hỏi hạ tầng và tri thức tiên tiến hơn, và vì thế có sự đầu tư nhiều hơn về cả thời gian và tiền bạc, mà chỉ có thể được chứng minh nếu số lượng các hệ thống mà chúng ta sẽ kích hoạt là rất lớn (ví dụ, chúng ta có thể cân nhắc triển khai dạng cài đặt này trong một phòng nơi mà các máy tính được thiết kế cho sử dụng cá nhân cùng tồn tại với những máy tính khác được thiết kế cho sự song hành, và nơi mà số lượng của chúng thường xuyên gia tăng).

Khi nói về việc chọn một hệ thống và một dạng cài đặt, chúng ta cần cân nhắc vài yếu tố, như: cách mà nhiều sự cài đặt chúng ta sẽ triển khai? có bao nhiêu cài đặt khác nhau chúng ta sẽ triển khai? Mức kinh nghiệm nào chúng ta có? … Thực tế là cài đặt đầu tiên này dẫn chúng ta ngay lập tức tới dạng cài đặt được sử dụng thường xuyên và tương tác nhất: cài đặt tương tác tiêu chuẩn.

Bây giờ, chúng ta chỉ cần xác định hệ thống cài đặt, và điều này sẽ phụ thuộc cơ bản vào việc liệu chúng ta có một kết nối Internet và tốc độ của nó thế nào. Rõ ràng, nếu chúng ta không có một kết nối Internet hoặc tốc độ truy cập của chúng ta quá thấp, thì chúng ta không có lựa chọn nào khác ngoài việc phải chọn cài đặt dựa vào một bộ các đĩa CD-ROM hoặc DVD-ROM; nếu có một tốc độ

Trang 79/232

Page 80: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

truy cập Internet chấp nhận được (như các đường ADSL) hoặc tốc độ truy cập cao (kết nối trực tiếp tới Internet thông qua một cổng gateway), thì lựa chọn tốt nhất sẽ là chọn một cài đặt qua mạng.

Một cài đặt qua mạng đưa ra nhiều ưu điểm hơn một cài đặt được triển khai bằng CD-ROM/DVD-ROM, và đặc biệt với Debian, vì nó sẽ cho phép cài đặt các phiên bản có sẵn mới nhất của các gói; hơn nữa, việc cập nhật tất cả các gói được cài đặt trong hệ thống là dễ dàng với việc thực hiện chỉ một lệnh duy nhất. Nhưng việc này không nên làm cho chúng ta bỏ qua một cài đặt có sử dụng CD-ROM/DVD-ROM nếu, như đã được nhắc nhở, chúng ta không có một kết nối Internet hoặc kết nối đó quá chậm (chúng ta không nên đánh giá thấp hoặc các gói mà những CD-ROM/DVD-ROM đó có chứa, vì Debian được đặc trưng như một phát tán chỉ đưa vào các gói đã được kiểm thử rộng rãi). Và một khi chúng ta đã hoàn tất việc cài đặt thì chúng ta luôn có thể thay đổi nội dung tệp

/etc/apt/sources.list và bổ sung thêm các dòng phù hợp để truy cập Internet, đặc biệt cho các cập nhật an ninh.

5.1.2. Các dạng gói

Tiếp theo chúng ta tập trung vào Debian và hệ thống gói của nó. Một gói Debian có thể được xác

định bằng mở rộng tệp .deb của nó. Tất cả các gói được đưa vào trong phát tán chính thức của Debian là tự do theo các chỉ dẫn phần mềm tự do của Debian. Điều này đảm bảo cho sự sử dụng và phân phối lại tự do các gói và tất cả mã nguồn của chúng. Phát tán Debian khác biệt giữa 4 lớp gói khác nhau. Các gói của riêng phát tán được đưa vào trong lớp chính, trong khi các lớp contrib, non-free (không tự do) và non-US (không phải của Mỹ) được tổ chức Debian cung cấp vì lợi ích của những người sử dụng của họ:

• main (chính). Các gói tuân thủ với các chỉ dẫn phần mềm tự do của Debian, nói cách khác, sử dụng và phân phối lại một cách tự do tất cả các tệp nhị phân tạo nên chúng, bổ sung thêm vào mã nguồn đầy đủ của chúng, được đảm bảo.

• contrib. Các gói mà, trong khi cũng tự do và vì thế giống như các tệp nhị phân có mã nguồn của chúng sẵn sàng, phụ thuộc vào các gói khác mà không phải là tự do.

• Non-free (không tự do). Các gói dù chúng có thể là miễn phí, vẫn có những điều kiện hạn chế mà theo vài cách thức nào đó hạn chế sử dụng hoặc phân phối lại chúng.

• non-US/main (không ở Mỹ/chính). Các gói của khu vực này bản thân chúng là tự do. nhưng không thể được xuất khẩu từ một máy chủ đặt tại Mỹ.

• non-US/non free (không ở Mỹ/không tự do). Các gói mà không thể được xuất khẩu khỏi Mỹ vì chúng có chứa các phần mềm mật mã hoặc các phần mềm có thể ảnh hưởng tới những vấn đề có liên quan tới các bằng sáng chế.

Phát tán chính thức của Debian bao gồm nội dung trong phần chính (main) của tệp Debian.

5.1.3. Tình trạng phát triển gói

Tình trạng phát triển gói sẽ đưa ra điều kiện cho dạng phát tán chúng ta cài đặt. Vì thế, có 3 dạng phát tán khác nhau:

• Ổn định (Stable). Đây là phiên bản chính thức gần đây nhất của phát tán Debian GNU/Linux. Nó bao gồm các phần mềm và những thay đổi được kiểm thử tốt ổn định và chỉ kết hợp những hiệu chỉnh quan trọng về an ninh và khả năng sử dụng.

Trang 80/232

Page 81: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

• Kiểm thử (Testing). Phát tán bao gồm các gói được mong đợi sẽ trở thành một phần của phát tán ổn định tiếp sau. Có một loạt các yêu cầu rất nghiêm ngặt mà mỗi gói phải thỏa mãn trước khi chuyển từ không ổn định sang kiểm thử. Việc kiểm thử không có những cập nhật của đội an ninnh tại cùng thời điểm khi chúng được phát hành.

• Không ổn định (Unstable). Phát tán này bao gồm các gói Debian gần đây nhất, và hệ quả là, được kiểm thử mới nhất. Vì thế, chúng có thể chứa những vấn đề đủ nghiêm trọng để ảnh hưởng tới tính ổn định của hệ thống.

Dù tất cả các gói có những phụ thuộc của riêng chúng, không có vấn đề gì trong việc trộn các gói

của các phát tán khác nhau. apt-pinning (khuyến cáo, man apt-pinning) làm cho nhiệm vụ này dễ hơn nhiều. Ngay cả như thế, trong các hệ thống được khuyến cáo hãy chỉ sử dụng các gói của phát tán ổn định, chúng là tin cậy nhất.

5.2. Cài đặt Debian Etch

Như được bình luận, Debian đưa ra nhiều dạng cài đặt, từ CD-ROM/DVD-ROM, bộ nhớ USB và các đĩa, cho tới sử dụng mạng. Các dạng cài đặt được sử dụng phổ biến nhất là: CD-ROM/DVD-ROM, CD-ROM tối thiểu hoặc cài đặt qua mạng. Nếu chúng ta có thể làm chủ được cái đầu và cái cuối, thì cái thứ 2 là phù hợp. Vì thế, chúng ta sẽ bắt đầu bằng việc cài đặt hệ thống đầu tiên bằng việc sử dụng tập hợp các đĩa DVD-ROM và, một khi kết thúc, chúng ta sẽ phân tích những khác biệt giữa quá trình này và cài đặt qua mạng.

Lần đầu tiên trong Debian GNU/Linux, các đĩa CD và DVD đa kiến trúc được đưa ra cho phép đa kiến trúc sẽ được cài đặt từ một đĩa duy nhất.

5.2.1. Các thành phần của Debian Etch

Debian GNU/Linux 4.0 hay Debian Etch hỗ trợ 12 kiến trúc chính và một số biến thể của từng kiến trúc đó được biết tới như là các thành phần (các nhân được biên dịch trước khác nhau được thiết kế để hỗ trợ các dạng phần cứng khác nhau).

Ví dụ, Debian GNU/Linux 4.0 cho kiến trúc Intel x86 là mặc định với phiên bản nhân 2.6.18. Để có thêm thông tin, bạn có thể tham khảo các tài liệu có những chỉ dẫn cài đặt cho hệ thống Debian GNU/Linux 4.0 (tên khóa “etch”), cho kiến trúc Intel x86. Hơn nữa, nó gồm các đường liên kết tới các tài nguyên thông tin khác, bổ sung thêm cho thông tin về cách làm tốt nhất cho hệ thống Debian mới của bạn.

5.2.2. Cài đặt Debian GNU/Linux 4.0 cho Intel x86

Tài liệu cơ bản mà Debian đưa ra để cài đặt nó là Cài đặt Debian GNU/Linux 4.0 cho i386, được

đưa vào DVD1 (/doc/install/manual/en/index.html) có sẵn trong các ngôn ngữ khác nhau, bao

gồm cả tiếng Tây Ban Nha (/doc/install/manual/es/index.html). Chúng tôi khuyến cáo đọc tài liệu này và có một bản sao của nó trong tay trong trường hợp có bất kỳ vấn đề gì, như không có đĩa DVD-ROM có khả năng khởi động.

Trang 81/232

Page 82: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

5.3. Cài đặt Debian Etch từ DVD-ROM

Chúng ta sẽ triển khai cài đặt này trong một máy tính tiêu chuẩn qua một đĩa cứng ATA được kết nối như là đĩa chủ qua cổng IDE tiêu chuẩn gốc ban đầu. Ở những nơi các trình kiểm soát và các đĩa SCSI được kết nối, chúng sẽ được dò tìm ra mà không có vấn đề gì trong quá trình khởi động, như trong trường hợp các đĩa Serial-ATA. Từ trang web Debian chúng ta có thể tải về 3 đĩa DVD của phiên bản này dù với một hệ thống máy để bàn cơ bản chúng ta sẽ có đủ với chỉ một đĩa đầu tiên.

5.3.1. Trước khi bắt đầu cài đặt

Trước khi bắt đầu với bản thân việc cài đặt, chúng ta sẽ cần chắc chắn rằng có một không gian đĩa tối thiểu trên đĩa cứng (khuyến cáo, có ít nhất khoảng 2-3 GB không gian trống). Nếu đĩa mới, có thể bắt đầu trực tiếp với việc cài đặt thậm chí nếu chúng ta cũng cân nhắc cài đặt hệ điều hành khác trên nó (tất cả điều chúng ta sẽ phải làm là để lại không gian cho nó với dạng phân vùng nó đòi hỏi).

Nếu có một không gian mà chúng ta đã để dành được trước đó, vì chúng ta đã có trong đầu sẽ cài đặt GNU/Linux, hoặc có một phân vùng của bất kỳ hệ điều hành nào khác nơi mà chúng ta mong muốn cài đặt nó, thì cũng có thể tiếp tục với việc cài đặt, nói cách khác khởi động từ DVD-ROM.

Nếu đĩa cứng là đầy và chỉ có một phân vùng (đôi khi chúng tôi không khuyến cáo vì nói chung điều này làm cho hiệu năng của bất kỳ hệ điều hành nào cũng suy giảm đáng kể, và đặc biệt những hệ điều hành có các hệ thống tệp rất không ổn định), chúng ta sẽ cần giải phóng không gian đĩa sao cho để cài đặt được Debian GNU/Linux 4.0. Khó khăn triển khai hoạt động này sẽ phụ thuộc nghiêm ngặt vào hệ thống tệp nào phân vùng đó có.

Có khả năng rằng hệ điều hành theo yêu cầu thuộc về họ sản phẩm của Microsoft; nếu hệ thống tệp là dạng FAT hoặc FAT32 (được MSDOS, Windows95 và Windows98 sử dụng) thì vấn đề là khá đơn

giản để vượt qua, vì bản thân phát tán này đưa ra một ứng dụng (fips20.exe trên

DVD1/tools/fips20.zip) sẽ giúp chúng ta tạo lại phân vùng cho đĩa cứng và tạo không gian để cài đặt GNU/Linux.

Nếu chúng ta đã có một hệ điều hành GNU/Linux được cài đặt rồi, thì chúng ta có thể sử dụng một trong nhiều ứng dụng nó có cho việc thay đổi kích cỡ các phân vùng của đĩa và tạo các phân vùng

mới. Như partman, ví dụ thế (một công cụ gốc GNU/Linux), cfdisk, gparted (trình soạn thảo đồ

họa cho việc phân vùng đĩa cứng trong GNU/Linux và Gnome) hoặc qtparted (trình soạn thảo đồ họa cho việc phân vùng trong GNU/Linux và KDE). Những ứng dụng đó quản lý các hệ thống tệp dạng FAT và FAT32 cũng như NTFS.

Nếu chúng ta không có hệ điều hành GNU/Linux được cài đặt thì chúng ta có thể sử dụng Gparted Live CD, đây là một live CD bao gồm một hệ điều hành GNU/Linux cơ bản và nhỏ chạy được trực tiếp từ CD-ROM có chứa ứng dụng Gparted.

Và như một lựa chọn cuối cùng, chúng ta có thể luôn nhìn sang các ứng dụng thương mại.

Bất chấp các ứng dụng mà chúng ta sử dụng, chúng ta sẽ luôn phải chống phân mảnh cho đĩa trước. Trình chống phân mảnh đĩa là một tiện ích phân tích các đĩa cục bộ, tìm và tăng cường cho các tệp và thư mục bị phân mảnh. Nó cũng có thể chống phân mảnh cho các đĩa từ một dòng lệnh bằng việc

sử dụng lệnh defrag. Điều này sẽ giúp tránh được các vấn đề, vì chúng ta có thể đã chống phân mảnh cho các tệp với một phần của chúng ở cuối của phân vùng. Vì thế, khi chúng ta thay đổi kích thước và lấy chỗ từ phần cuối này, chúng ta có thể xóa mất những tệp đó và trong trường hợp tệ nhất chúng ta có thể đánh mất thông tin, mà nếu chúng là các tệp hệ thống, thì chúng ta có thể làm

Trang 82/232

Page 83: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

cho hệ điều hành không làm việc được nữa.

Vì thế, rất quan trọng để chống phân mảnh cho đĩa trước khi tái phân vùng, và cũng vậy tạo các bản sao lưu của tất cả các thông tin trên đĩa. An toàn tốt hơn là xin lỗi.

5.3.2. Khởi động hệ thống cài đặt

Đã đi được tới điểm này, chúng ta đã bắt đầu với bản thân việc cài đặt rồi. Để làm điều này, chúng ta sẽ khởi động máy tính để chắc chắn rằng thiết bị đầu tiên được đọc khi máy khởi động là DVD-ROM (bằng việc vào trong BIOS), và chúng ta sẽ đặt DVD1 vào đó. Trong vài giây một màn hình chào mừng sẽ xuất hiện như sau:

Hình 5.1

Nếu chúng ta nhấn phím F1, một màn hình giống như sau sẽ xuất hiện:

Trang 83/232

Page 84: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Hình 5.2

Chúng ta có thể nhấn bất kỳ lựa chọn nào mà thực đơn đưa ra, nếu chúng ta nhấn F6, ví dụ thế, màn hình sau sẽ xuất hiện:

Hình 5.3

Nhưng thú vị hơn cả là nhấn F3, sẽ đưa ra cho chúng ta các phương pháp khác nhau cho phép cài đặt. Chúng ta có thể cài đặt bằng việc sử dụng phương pháp mặc định, với trình cài đặt đồ họa, trong chế độ chuyên gia cho kiểm soát lớn hơn hoặc trong chế độ chuyên gia với trình cài đặt đồ

họa. Vì thế, hãy gõ trong expertgui để cài đặt trong một chế độ chuyên gia với trình cài đặt đồ họa:

Trang 84/232

Page 85: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Hình 5.4

và hãy bắt đầu với việc cài đặt:

Hình 5.5

Làm xong điều này, nhân sẽ tải (trong vài giây chúng ta sẽ thấy các đầu ra của những kiểm thử khác nhau được triển khai trên màn hình) và ngay lập tức sau đó màn hình Chọn Ngôn ngữ (Choose Language) sẽ xuất hiện sao cho chúng ta có thể chọn ngôn ngữ cài đặt bằng sử dụng các con trỏ.

Trang 85/232

Page 86: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Hình 5.6

Tới đây, bằng việc nhấn tổ hợp phím Alt+F2 và nhấn Enter, chúng ta có một trình biên dịch (shell) mà, dù rất cơ bản, có thể được sử dụng bất kỳ khi nào trong quá trình cài đặt.

Trong tty3 (Atl+F3) nhân để lại các thông điệp của nó (nói cách khác, nội dung của tệp

/var/log/messages).

5.3.3. Cấu hình ngôn ngữ cài đặt

Được khuyến cáo chọn tiếng Anh (English) trong màn hình chọn ngôn ngữ (Choose language) để tránh các lỗi dịch tiềm tàng. Nói chung, và ở những nơi có khả năng, luôn ưu tiên làm việc với ngôn ngữ gốc ban đầu; dù, một lần nữa. các độc giả được tự do quyết định ngôn ngữ nào là tốt nhất cho họ; trong trường hợp này, họ có thể chọn ngôn ngữ sẽ được sử dụng trong quá trình cài đặt.

Vì tài liệu hướng dẫn này bằng tiếng Tây Ban Nha, nó đã tuân theo cùng triết lý và tất cả các hình chụp cài đặt được làm trong ngôn ngữ đó.

Bây giờ chúng ta chọn ngôn ngữ và nhấn phím Tiếp tục (Continue):

Trang 86/232

Page 87: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Hình 5.7

Trong màn hình Chọn quốc gia, lãnh thổ hoặc khu vực (Choose a country, territory or area), như với ngôn ngữ, các độc giả được tự do quyết định chọn cái gì. Trong trường hợp này, chúng ta đã chọn Tây Ban Nha (Spain):

Hình 5.8

Trang 87/232

Page 88: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Tiếp theo, phụ thuộc vào ngôn ngữ và quốc gia được lựa chọn, chúng ta sẽ được chào vài tham số bản địa và chúng ta chọn một trong những hỗ trợ UTF-8:

Hình 5.9

5.3.4. Cấu hình bàn phím

Như gợi ý ban đầu, giao diện cài đặt sẽ nhắc chung ta thiết lập cấu hình cho bàn phím trong màn hình Chọn Trình bày Bàn phím (Choose Keyboard Layout) và chúng ta sẽ chọn trình bày bàn phím mà chúng ta muốn sử dụng:

Trang 88/232

Cấu hình cho ngôn ngữ

Ngôn ngữ cài đặt không qui định cấu hình bàn phím hoặc ngôn ngữ trong đó chúng ta tương tác với hệ thống hoặc các cấu hình ngôn ngữ khác. Lựa chọn này chỉ hợp lệ trong quá trình cài đặt.

Page 89: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Hình 5.10

Chúng ta sẽ nhấn Tiếp tục (Continue) sao cho thiết bị đầu vào phản ứng được với việc ánh xạ các ký tự bàn phím tiếng Tây Ban Nha. Trong tty2 chúng ta có thể kiểm tra tính hợp lệ rằng quả thực chúng ta có các dấu rồi, ví dụ thế.

5.3.5. Dò tìm và kích hoạt CD-ROM

Bước tiếp sau là dò tìm và kích hoạt CD-ROM (DVD-ROM). Chúng ta được nói rằng nó được dò tìm ra và được khuyến cáo chọn tất cả các module mà chúng ta sẽ tải lên:

Hình 5.11

Trang 89/232

Page 90: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Và, tiếp sau, nếu chúng ta đang triển khai cài đặt trên một máy tính xách tay, thì chúng ta sẽ được hỏi liệu chúng ta có muốn khởi tạo các dịch vụ thẻ (card) PC để sử dụng thẻ PCMCIA hay không, mà chúng ta sẽ trả lời lựa chọn Có (Yes):

Hình 5.12

5.3.6. Cấu hình mạng

Bước tiếp theo của qui trình cài đặt mà chúng ta sẽ triển khai là dò tìm phần cứng mạng:

Hình 5.13

Trang 90/232

Page 91: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Chúng ta có thể thiết lập cấu hình cho mạng bằng DHCP hoặc bằng tay. Trong trường hợp này, chúng ta sẽ chọn lựa chọn để thiết lập cấu hình cho mạng bằng DHCP.

Hình 5.14

Một khi chúng ta đã thiết lập cấu hình cho mạng rồi, thì tới lúc phải đặt tên cho hệ thống mà chúng ta đang cài đặt, chúng ta được hỏi Tên của máy tính, theo mặc định nó gợi ý gọi là debian. Chúng ta có thể xóa gợi ý đó và đưa vào một cái tên chúng ta muốn, gồm chỉ một từ.

Hình 5.15

Trang 91/232

Page 92: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Bây giờ, tất cả thứ chúng ta phải làm là chỉ định tên cục bộ của hệ thống. Nếu nó định hình thành một phần của một mạng, và vì thế, cần một miền, thì điều này sẽ được chỉ định ở màn hình tiếp sau.

5.3.7. Phân vùng đĩa cứng

Một khi chúng ta đã chỉ định tên của máy và miền của nó (ở những nơi cần thiết) thì qui trình cài đặt sẽ gợi ý rằng chúng ta dò tìm các đĩa và sau đó phân vùng các đĩa.

Hình 5.16

Khi nói về việc phân vùng các đĩa, thì kích thước, các đặc tính và số lượng các phân vùng sẽ phụ thuộc nhiều vào mức độ trong dạng sử dụng và lượng không gian đĩa cứng sẵn sàng. Vì đây là một cài đặt cho các mục đích đào tạo, thông tin được đưa ra tiếp sau trong các phân vùng sẽ được tạo ra với giả thiết rằng chúng ta đang làm việc trong một không gian giữa 5 và 15 GB được thiết kế cho cài đặt mới.

Chúng ta cần tạo ít nhất 2 phân vùng: phân vùng đầu để kích hoạt hệ thống và phân vùng thứ 2 cho hoán đổi (đúng là chúng ta có thể thực hiện các cài đặt mà không có sự hoán đổi, nhưng, như đã được lưu ý, nó không được khuyến cáo cao độ). Để gia tăng tính hiệu quả của hệ thống, chúng ta sẽ tạo 6 phân vùng.

Công cụ mà Debian đưa ra cho việc phân vùng đĩa là cfdisk và nó hoạt động dựa vào việc sử dụng các con trỏ để dịch chuyển qua các phân vùng đĩa (phân bên trên của màn hình, với các con trỏ Lên và Xuống), cũng như để chọn các hành động tiềm năng mà có thể được triển khai từng lúc (phần dưới của màn hình, với con trỏ Phải và Trái), khi chúng sẽ thay đổi phụ thuộc vào tình trạng của phân vùng được chọn. Để tạo một phân vùng mới, chúng ta cần chọn lựa chọn [Mới] (New); tiếp đến, nếu chúng ta có thể vẫn tạo các phân vùng chủ gốc ban đầu (số lượng tối đa là 4), thì chúng ta sẽ được yêu cầu liệu chúng ta có muốn tạo nó như một phân vùng chủ hay logic không; sau đó chúng ta cần chỉ định kích thước của phân vùng, và cuối cùng, vị trí vật lý của nó trên đĩa (được

Trang 92/232

Page 93: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

khuyến cáo tạo một phác thảo như cách mà chúng ta muốn làm điều này trước khi bắt đầu phân vùng cho đĩa, và để tạo các phân vùng trên cơ sở này, sao cho chúng ta luôn có thể trả lời câu hỏi này [ngay từ đầu]).

Phân vùng đầu tiên là phân vùng được thiết kế để đặt chỗ cho gốc root (/); nó không cần phải rất lớn và vì lý do này chúng ta sẽ phân bổ nó ít nhất 10% dung lượng đĩa cứng, ưu tiên trong một phân vùng chủ gốc ban đầu (primary), nhưng nếu chúng ta không có nó, thì chúng ta có thể tạo nó như một phân vùng logic mà không có vấn đề gì. Chúng ta sẽ chỉ định rằng phân vùng này ở chỗ bắt đầu của không gian trống và rằng dạng của hệ thống tệp được chọn cho phân vùng này là ext3.

Phân vùng thứ 2 sẽ được sử dụng cho phân vùng hoán đổi (swap). Nó nên có ít nhất kích cỡ y hệt với RAM, 512MB, 1024MB …, với kích cỡ này chúng ta sẽ chắc chắn, an toàn cho những trường hợp ngoại lệ, rằng nó sẽ không bao giờ bị bão hòa; cũng được ưu tiên cho phân vùng này là phân vùng chủ gốc ban đầu (primary), nhưng nếu nó phải là một phân vùng logic, thì nó cũng sẽ không ảnh hưởng tới hiệu năng của hệ thống. Nếu chúng ta có hơn một cài đặt GNU/Linux trên cùng một máy tính, thì chúng ta có thể sử dụng cùng chung phân vùng hoán đổi cho tất cả các cài đặt đó, vì thông tin có thể lưu trữ trong đó khi hệ thống hoạt động là hoàn toàn linh hoạt biến động. Hệ thống tệp cho phân vùng hoán đổi sẽ là dạng hoán đổi (swap area).

Phân vùng thứ 3 sẽ dành cho thư mục usr (/usr); chúng ta cần nhớ trong đầu rằng phân vùng này sẽ đặt chỗ cho hầu hết các phần mềm sẽ được cài đặt, nghĩa là kích cỡ của nó sẽ phải lớn đáng kể, khoảng 40% dung lượng đĩa. Hệ thống tệp của nó sẽ là ext3.

Phân vùng thứ 4 sẽ được sử dụng cho thư mục var (/var), nơi các thư viện, các tệp lưu ký …, sẽ được lưu giữ. Như trong trường hợp trước, nó cũng sẽ là ext3.

Phân vùng thứ 5 chúng ta sẽ sử dụng cho các thư mục gốc home của người sử dụng (/home), được thiết kế để lưu trữ các dữ liệu của người sử dụng, và phụ thuộc vào kích cỡ của đĩa cứng, chúng ta có thể phân bổ khoảng 10%-20% dung lượng đĩa cho nó, phụ thuộc vào số lượng người sử dụng và thường được làm từ hệ thống. Phân vùng này cũng sẽ là ext3.

Không gian còn lại, phân vùng thứ 6, sẽ được sử dụng cho thư mục tạm (/tmp) và hệ thống tệp của nó cũng là ext3.

Sự phân phối các phân vùng ở trên chỉ là một gợi ý, với 2 mục đích: một mặt, để cải thiện hiệu năng trong mối liên hệ với một cài đặt dựa trên chỉ một hoặc hai phân vùng, và mặt khác để làm cho hệ thống mạnh mẽ hơn. Trong số những ưu thế khác, nhờ việc dữ liệu được phân tán trong các phân vùng khác nhau có nghĩa là sự hỏng một trong số phân vùng không tự động ngụ ý mất tất cả thông tin của hệ thống. Rõ ràng, có thể tạo các phân vùng khác hoặc bỏ qua một vài trong số phân vùng mà chúng ta đã đề xuất (trật tự các phân vùng không ảnh hưởng tới hành vi của hệ thống).

Vì thế, đã dò tìm ra được các đĩa, thì chúng ta có thể chọn phương pháp phân vùng, mà có thể hoặc được chỉ dẫn hoặc bằng tay. Nếu là bằng tay, thì chúng ta có thể tạo các phân vùng chúng ta muốn, với kích cỡ và dạng hệ thống tệp, như chúng ta đã giải thích ở trên, ví dụ thế.

Và nếu chúng ta chọn lựa chọn được chỉ dẫn, thì nó sẽ gợi ý việc phân vùng hệ thống cho chúng ta. Vì đây là cài đặt đầu tiên của chúng ta, chúng ta sẽ chọn lựa chọn được chỉ dẫn.

Trang 93/232

Page 94: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Hình 5.17

Tiếp sau, chúng ta sẽ được chỉ lựa chọn các thiết bị để được phân vùng, Nếu chúng ta có hơn 1 đĩa cứng, thì chúng ta có thể sử dụng các con trỏ để chọn đĩa nào chúng ta muốn làm việc. Khi đã chọn xong, chúng ta nhấn Tiếp tục (Continue).

Debian gợi ý vài sơ đồ phân vùng khác nhau: tất cả các tệp trong cùng phân vùng, bổ sung thêm một phân vùng cho các dữ liệu của người sử dụng, hoặc tách bạch các phân vùng chính. Như chúng ta đã thấy ở trước, không được khuyến khích thực hiện cài đặt trong cùng một phân vùng.

Vì chúng ta có một lựa chọn cho phép chúng ta tách bạch các phân vùng một cách tự động /home,

/usr/, /var và /tmp, nên chúng ta sẽ chọn lựa chọn này cho cài đặt đầu tiên hệ thống Debian GNU/Linux của chúng ta.

Trang 94/232

Page 95: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Hình 5.18

Chúng ta sẽ tuân theo sơ đồ phân vùng trước đó, có bảng các phân vùng sau đây:

Hình 5.19

Như chúng ta có thể thấy, đây là việc phân vùng được đề xuất mà ứng dụng tự động gợi ý. Nếu

Trang 95/232

Page 96: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

chúng ta muốn sửa đổi một phân vùng (kích cỡ, vị trí hệ thống tệp của nó), để bổ sung thêm hoặc thậm chí xóa bất kỳ phân vùng được đề xuất nào, thì chúng ta có thể chọn phân vùng đó theo yêu cầu và tiến hành những thay đổi phù hợp, hoặc đi tới Hoãn (Undo) các thay đổi đối với lựa chọn và phân trang các phân vùng.

Tuy nhiên, nếu chúng ta muốn áp dụng việc phân vùng được đề xuất này, thì chúng ta chỉ cần chọn Kết thúc (Finish) việc phân vùng và ghi những thay đổi vào lựa chọn đĩa đó và nhấn Tiếp tục (Continue). Bây giờ thông tin này sẽ được ghi vào MBR và những thay đổi sẽ có hiệu lực. Chúng ta

thoát khỏi ứng dụng cfdisk và tiếp tục với việc cài đặt.

Hình 5.20

5.3.8. Cấu hình thời gian

Ngay sau khi việc phân vùng cho đĩa cứng, chúng ta vào cấu hình thời gian cho hệ thống.

Trang 96/232

Page 97: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Hình 5.21

Tiếp sau, chúng ta chọn thời gian UTC cho đồng hồ, thời gian vạn năng được sắp đặt.

Hình 5.22

Trang 97/232

Thư mục

Để có thêm thông tin về thời gian điều phối chung - UTC, hãy tới thăm khoản “Universal Time Coordinated” trên Wikipedia.

Page 98: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

5.3.9. Cấu hình cho người sử dụng và mật khẩu

Một khi chúng ta hoàn tất các thủ tục cấu hình thời gian hệ thống, đã tới lúc cấu hình cho người sử dụng và mật khẩu.

Trước hết, hệ thống sẽ hỏi liệu chúng ta có muốn kích hoạt lựa chọn mật khẩu được mã hóa hay

không, sao cho chỉ người sử dụng gốc root truy cập được tệp có chứa các mật khẩu (/etc/shadow). Điều này thể hiện biện pháp an ninh bổ sung cho hệ thống của chúng ta.

Câu hỏi thứ 2 là hãy quyết định liệu chúng ta sẽ cho phép người sử dụng gốc root truy cập hệ thống hoặc liệu chúng ta có muốn tạo ra một người sử dụng có các quyền như người quản trị bằng việc sử

dụng lệnh sudo hay không. Ở đây, chúng ta sẽ để cho độc giả quyết định cách mà anh ta muốn làm việc khi triển khai các nhiệm vụ quản trị; trong lần cài đặt đầu tiên này, chúng ta sẽ cho phép người sử dụng gốc root truy cập hệ thống.

Hình 5.23

Bây giờ chúng ta cần ghi mật khẩu của gốc root. Điều quan trọng phải tuân theo những khuyến cáo trong việc chọn mật khẩu và hãy nhớ mật khẩu đó. Để khẳng định rằng mật khẩu được yêu cầu đã được đưa vào và tránh khả năng gõ bị lỗi, được yêu cầu gõ lại mật khẩu như một sự khẳng định.

Trang 98/232

Page 99: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Hình 5.24

Như đã nhắc tới, luôn làm việc như gốc home là một chính sách tồi vì nhiều lý do khác nhau. Vì thế, hệ thống khuyến cáo chúng ta tạo ra một tài khoản người sử dụng thông thường.

Hình 5.25

Trang 99/232

Page 100: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Hệ thống sẽ yêu cầu chúng ta tên đầy đủ của người sử dụng mới:

Hình 5.26

và tiếp sau, tên của tài khoản này, nói cách khác, người sử dụng sẽ truy cập hệ thống:

Hình 5.27

Trang 100/232

Page 101: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

và, cuối cùng, mật khẩu của người sử dụng, mà vì cùng lý do ở trên, cần phải được gõ 2 lần:

Hình 5.28

5.3.10. Cài đặt hệ thống cơ bản

Với tất cả thông tin này, hệ thống bắt đầu việc cài đặt hệ thống cơ bản:

Hình 5.29

Trang 101/232

Page 102: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Điều đầu tiên nó sẽ hỏi là nhân mà chúng ta muốn cài đặt. Như chúng ta có thể thấy từ ảnh sau, chúng ta có thể chọn giữa 4 nhân. Chúng ta sẽ chọn lựa chọn đầu tiên:

Hình 5.30

5.3.11. Cấu hình cho trình quản lý gói

Hình 5.31

Trang 102/232

Page 103: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

5.3.12. Chọn và cài đặt các chương trình

Hình 5.32

5.3.13. Cài đặt GRUB

Tiếp sau, gói này bắt đầu việc cài đặt GRUB boot loader. Nó phân tích đĩa cứng và tìm tất cả các hệ điều hành được cài đặt sao cho một khi cài đặt Debian hoàn tất thì khi chúng ta khởi động lại máy tính, chúng ta có thể chọn giữa các hệ điều hành được cài đặt. Nó sẽ hỏi để chúng ta khẳng định cài đặt nó lên MBR, và chúng ta sẽ trả lời khẳng định điều đó.

5.3.14. Khởi tạo lại hệ thống

Chúng ta đã đi tới cuối của việc cài đặt hệ thống cơ bản, và đây là màn hình được hiển thị:

Đã tới lúc khởi tạo lại hệ thống để khởi động hệ thống cơ bản mà chúng ta đã cài đặt lên đĩa cứng, và từ đó bắt đầu tùy biến cài đặt GNU/Linux đầu tiên của chúng ta. Vì thế, chúng ta sẽ bỏ DVD-ROM ra và nháy lựa chọn Tiếp tục (Continue) được chỉ ra trên ảnh trước.

5.3.15. Khởi động hệ thống cơ bản

Nếu mọi thứ được thực hiện như mong đợi, thì khi khởi tạo lại, chúng ta sẽ thấy rằng hệ thống cho phép chúng ta chọn hệ điều hành Debian GNU/Linux. :

Trang 103/232

Page 104: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Hình 5.34

Sau một lát, trong khi màn hình sẽ hiển thị các kết quả của các tiến trình khác nhau được thực thi khi khởi động, hệ thống sẽ hiển thị màn hình chào mừng và mời chúng ta tiếp tục với việc cài đặt, nhắc chúng ta rằng chúng ta có thể lặp lại qui trình này bất kỳ khi nào chúng ta muốn bằng việc

chạy lệnh base-config với tài khoản gốc root. Chúng ta nháy OK và tiếp tục:

Hình 5.35

5.3.16. Cấu hình apt

Trong phần này chúng ta được hỏi về các nguồn nơi mà apt phải đi tới để tìm thông tin cho việc xây dựng cơ sở dữ liệu của nó về các gói (các phụ thuộc, tình trạng cài đặt...). Vì chúng ta đang triển khai một cài đặt hoàn toàn dựa vào DVD-ROM, nên chúng ta sẽ chọn lựa chọn đầu tiên, cdrom, và nháy OK.

Trang 104/232

Page 105: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Hình 5.36

Trên màn hình sau, chúng ta sẽ nháy OK lần nữa:

Hình 5.37

Và vì chúng ta đã chèn DVD-ROM 1, sau một lát trong lúc apt trích xuất thông tin về các gói mà DVD này chứa, chúng ta sẽ được hỏi liệu có muốn bổ sung thêm nội dung của DVD khác vào cơ sở dữ liệu hay không. Một khi chúng ta đã chèn DVD-ROM 2 vào ổ đọc, thì chúng ta sẽ trả lời câu hỏi đó là có:

Hình 5.38

Trang 105/232

Page 106: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Chúng ta làm y hệt với DVD-ROM 3. Một khi nội dung của cả 3 DVD-ROM đã được quét, thì

chúng ta sẽ được hỏi liệu có muốn bổ sung các nguồn khác từ đó apt có thể lấy được các gói hay không, và tại lúc này chúng ta sẽ trả lời không.

5.3.17. Tasksel

Tiếp theo, chương trình lựa chọn gói tasksel sẽ chạy:

Hình 5.39

Chúng ta sẽ không đánh dấu bất kỳ lựa chọn nào, vì chúng ta cũng sẽ có khả năng chạy chương trình này từ dòng lệnh một khi chúng ta đã hoàn tất việc cài đặt. Như là gốc root chúng ta đơn giản

sẽ phải chạy lệnh tasksel. Cũng có chương trình lựa chọn gói khác, là dselect.

Tiếp theo, chúng ta sẽ được hỏi về cấu hình Exim; vì hội thảo này không dành riêng để thiết lập cấu hình cho chương trình quản lý thư này, nên chúng ta sẽ chọn lựa chọn 6 để thoát khỏi chương trình.

Hình 5.40

Trang 106/232

Page 107: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Và đây là nơi mà cấu hình hệ thống Debian cơ bản kết thúc:

Hình 5.41

Cuối cùng, sau một lát màn hình sẽ hiển thị debian login và tiếp đến chúng ta sẽ gõ vào người sử dụng mà chúng ta đã tạo ra trong quá trình cài đặt, ví dụ sofia, và sau khi nhấn Enter, chúng ta sẽ vào mật khẩu để khởi tạo phiên làm việc trong hệ thống Debian GNU/Linux mà chúng ta vừa cài đặt xong:

Hình 5.42

Bây giờ chúng ta có một hệ thống cơ bản tiêu chuẩn được cài đặt trên máy tính. Bây giờ bắt đầu việc chỉnh sửa hệ thống theo các yêu cầu của chúng ta. Đã đạt được tới điểm này, điều rất quan trọng để phân biệt giữa 2 dạng hệ thống: các hệ thống phát triển và các hệ thống sản xuất.

Hệ thống phát triển là hệ thống được thiết kế để thử nghiệm, trong đó các vụ kiểm thử và thí nghiệm được triển khai, và nơi mà tính ổn định và hiệu quả không có ngay từ đầu. Đây là một hệ thống được thiết kế để có được tri thức về bản thân hệ thống. Tuy nhiên, tính ổn định và hiệu quả là những quan tâm chính cho một hệ thống được thiết kế để sản xuất. Vì thế, chúng ta cần chắc chắn rằng nó bao gồm chỉ và hoàn toàn các gói được yêu cầu nghiêm ngặt, vì việc có những gói không cần thiết được cài đặt sẽ là bất lợi cho hiệu quả của hệ thống. Chiến lược này được áp dụng trước

Trang 107/232

Page 108: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

khi xây dựng một hệ thống sản xuất (một máy chủ web, máy chủ ứng dụng …) luôn bao gồm sự làm việc trước hết trong hệ thống phát triển, nơi mà các chiến thuật khác nhau có thể được diễn tập và được kiểm thử sao cho chúng ta có thể đưa ra các kết luận trước khi xây dựng hệ thống sản xuất.

Hệ thống đầu tiên của chúng ta rõ ràng sẽ là một hệ thống phát triển, cả vì chúng ta đã không nghĩ nó sẽ đề cập tới một nhu cầu đặc biệt nào, và vì đây là kinh nghiệm đầu tiên của chúng ta trong việc xây dựng một hệ thống, vì mục đích chính là có được tri thức. Chúng ta sẽ cài đặt và bỏ cài đặt một loạt các gói, kiểm thử các cấu hình khác nhau …, và tất nhiên điều này sẽ ảnh hưởng nghiêm trọng tới tính ổn định và hiệu quả của hệ thống. Vì thế, chúng tôi khuyến khích các sinh viên một khi họ đã hoàn tất phần này và có được ý tưởng tổng thể về những gì việc cài đặt một hệ thống có liên can, hãy cài đặt lại toàn bộ hệ thống một lần nữa từ đầu, để thích nghi nó một cách nghiêm túc cho những yêu cầu của riêng họ.

5.4. Cài đặt mạng với Debian Etch

Nhiều bước triển khai cài đặt mạng là y hệt như một cài đặt DVD-ROM, nên chúng ta sẽ nhấn mạnh và tập trung chỉ vào những khía cạnh khác với qui trình đã được mô tả ở trên.

5.4.1. Những đặc thù của cài đặt mạng

Sự khác biệt cơ bản giữa một cài đặt được thực hiện từ một tập các DVD-ROM và từ một mạng là vị trí các gói khi cài đặt chúng. Trong khi đối với một cài đặt được thực hiện từ các đĩa DVD-ROM thì chúng ta sẽ phải chèn ít nhất một trong số chúng vào ổ đĩa mỗi lần chúng ta cài đặt một gói mới sao cho chúng ta có thể lấy ra được những dữ liệu cần thiết từ đó, còn với một cài đặt mạng thì các gói được lấy từ xa, cho phép chúng ta trước hết, truy cập tới phiên bản mới nhất của chúng, và cập

nhật tất cả các gói mà chúng ta đã cài đặt với chỉ một dòng lệnh duy nhất (apt-get upgrade).

Cùng lúc, để triển khai một cài đặt mạng, chúng ta thường cần chỉ một CD-ROM hoặc duy nhất một DVD-ROM có chứa thông tin cần thiết cho việc khởi động một hệ điều hành cơ bản từ đó chúng ta có thể làm cho chương trình cài đặt chạy được (mà đã được đưa vào rồi trong đĩa CD-ROM/DVD-ROM, cùng với các module có thể là cần thiết cho việc thiết lập cấu hình truy cập mạng), và từ đây trở đi, phần còn lại của thông tin sẽ được lấy từ xa.

5.4.2. Những khía cạnh chung cho các phương pháp cài đặt khác nhau

Như đã lưu ý tới, nhiều bước chúng ta cần theo để triển khai một cài đặt mạng là tương tự như đối với việc triển khai một cài đặt có sử dụng các đĩa DVD-ROM. Vì thế, chúng ta có thể đưa ra chương trình cài đặt theo cách thức y hệt như ở trên ([5.3.1.] và [5.3.2.]) và bắt đầu đi theo cùng các bước để thiết lập cấu hình cài đặt cho ngôn ngữ, bàn phím, phân vùng đĩa cứng và kích hoạt các phân vùng ([5.3.3.], [5.3.5], [5.3.6.] và [5.3.7]).

Tới lúc này, thường thì nhân sẽ nhận được card mạng của chúng ta và, nếu không, chúng ta sẽ xử lý để thiết lập cấu hình cho module phù hợp để làm cho nó hoạt động. Trong nhiều trường hợp thì việc

thiết lập cấu hình, việc truyền các tham số có thể được thực hiện tự động thông qua modprobe, một chương trình có thể được khới xướng từ bản thân giao diện cài đặt sau khi chọn một module. Thực hiện xong điều này, chúng ta sẽ cần thiết lập cấu hình cho mạng (thông qua DHCP là thuận lợi nhất), chỉ định từ site mà chúng ta sẽ có được các nguồn, và từ đây trở đi, tuân theo các bước y hệt như với CD-ROM để hoàn tất cài đặt.

Trang 108/232

Page 109: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

5.4.3. Cài đặt module mạng

Đây là điểm mấu chốt cho việc triển khai cài đặt mạng, vì đây là nơi mà, nếu trình điều khiển của card mạng không được biên dịch trong nhân, thì chúng ta sẽ phải chọn mudule được yêu cầu để có được sự truy cập tới nó. Trước hết, chúng ta cần tìm ra liệu card mạng của chúng ta đã có được dò tìm ra chưa trong quá trình khởi động và liệu trình điều khiển tương ứng của nó đã được tải lên hay

chưa. Để làm việc này, chúng ta sẽ truy cập cửa sổ dòng lệnh thứ 2 (Alt+F2) và chạy lệnh dmesg. Bây giờ chúng ta cần tìm, từ các dòng khác nhau được lệnh này trả về, liệu có bất kỳ một tham chiếu nào tới card mạng của chúng ta hay không. Như một ví dụ, đối với một card RTL-8029 (Realtek Semiconductors) chúng ta sẽ có:

sofia@debian:~$ dmesg . . . ne2k-pci.c:v1.02 10/19/2000 D. Becker/P. Gortmaker

http://www.scyld.com/network/ne2k-pci.html PCI: Found IRQ 11 for device 00:0b.0

PCI: Sharing IRQ 11 with 00:07.2 eth0: RealTek RTL-8029 found at 0xe400, IRQ 11,

52:54:00:DB:FB:D4. . . .

Nếu tìm kiếm thành công, trước hết chúng ta cần xác định chúng ta có card mạng nào. Để làm điều này, điều tốt nhất là lấy tài liệu đi với nó hoặc xem kỹ nó bằng mắt. Nếu điều này là không thể, còn có các chiến lược khác để xác định card của chúng ta là gì, như việc nhấn Alt+F2 để truy cập cửa số

dòng lệnh và xem kỹ nội dung của tệp /proc/pci (bằng việc sử dụng cat, ví dụ thế), hoặc chúng ta có thể tham chiếu tới thông tin mà hệ điều hành khác chúng ta đã cài trên máy tính cũng có khả năng cung cấp được.

Một khi chúng ta biết dạng card mạng nào chúng ta có, thì chúng ta cần tìm module nào sẽ cho phép chúng ta truy cập tới card này. Chiến lược an toàn nhất cho mục đích này là sử dụng bất kỳ máy tìm kiếm nào, ví dụ, Google, gõ vào các từ khóa card của chúng ta, (tham chiếu của card NIC Linux module, ví dụ thế) và đọc một số trang chúng ta tìm thấy. Chúng ta cũng có thể đi tới các trang của các phát tán GNU/Linux chính và gõ vào tham chiếu card đó để tìm. Cách cuối cùng, chúng ta có thể đi tới tài liệu các module mạng của nhân, nơi nó chỉ định module tương ứng cho tất cả các card được hỗ trợ.

Cũng tốt để biết liệu nhà sản xuất đã phát triển module của riêng mình hay không. Việc tìm một module cho một card có thể là nhiệm vụ khá phức tạp, nó thậm chí có thể là không thể, vì có thể không có sự hỗ trợ cho card đó hoặc có thể các phương pháp tiên tiến là cần thiết để thiết lập cấu hình cho nó; vì lý do này, chúng tôi luôn khuyến cáo sử dụng các card có khả năng là tiêu chuẩn nhất có thể.

Một khi chúng ta đã tìm ra được module nào chúng ta cần, thì sau khi cài đặt nhân, chúng ta nên chọn gợi ý được đưa ra cho chúng ta từ thực đơn chính Cấu hình các Module Trình điều khiển Thiết bị (Confugure Device Driver Modules). Sau một màn hình cảnh báo, nhắc chúng ta rằng nhiều trình điều khiển đã được đưa vào trong nhân, chúng ta sẽ nhấn vào màn hình chọn module Chọn Chủng loại (Select Category), (chúng ta có thể truy cập giao diện này bất kỳ khi nào bằng việc chạy lệnh

modconf. Lệnh này phục vụ như một giao diện mặt tiền [front-end] cho việc quản trị các trình điều khiển đã được biên dịch theo một cách thức module hóa với nhân) và bằng việc sử dụng các con trỏ chúng ta sẽ chọn lựa chọn nhân/các trình điều khiển/mạng (kernel/drivers/net). Một khi nằm trong màn hình chọn các module card mạng rồi, hãy chọn các module Chọn Nhân/các trình điều khiển/mạng (Select Kernel/drivers/net), chúng ta sẽ chọn module chúng ta cần, một lần nữa sử dụng các con trỏ. Sau khi trả lời có (Yes) cho câu hỏi liệu chúng ta có thực sự muốn cài đặt module này

không, chúng ta có thể để autoprobe tự động thiết lập cấu hình module đó cho chúng ta, trừ phi

Trang 109/232

Page 110: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

chúng ta cần truyền một tham số đặc biệt cho module đó theo yêu cầu. Sau vài giây, chúng ta sẽ có một thông điệp nói cho chúng ta liệu module đó đã được cài đặt đúng hay chưa.

5.4.4. Cấu hình mạng

Một khi chúng ta biết rằng card mạng hoạt động rồi, thì từ thực đơn chính cài đặt chúng ta sẽ đi theo bước được đề xuất Cấu hình Mạng (Configure the Network) để thiết lập cấu hình mạng. Trước hết, chúng ta sẽ cần thiết lập cấu hình tên máy chủ - host name (trước khi được Debian gợi ý, ví dụ thế), mà không đưa vào miền. Tiếp sau, chúng ta sẽ cần đưa vào địa chỉ IP, mặt nạ mạng, cổng gateway, tên miền và các máy chủ DNS (cho tới 3, cách nhau bằng các dấu trống).

5.4.5. Cấu hình apt

Một khi chúng ta đã thiết lập cấu hình mạng, thì các bước tiếp sau chúng ta nên theo là y hệt những bước với cài đặt CD-ROM, cho tới khi chúng ta có Cấu hình Apt (Apt Configuration). Tại thời điểm này, thay vì chọn lựa chọn CD-ROM, chúng ta sẽ chọn lựa chọn mạng phù hợp nhất. Vì các mục đích thực tế, là y hệt để chọn giao thức HTTP như FTP. Sau khi chọn chúng ta sẽ được hỏi liệu chúng ta có muốn sử dụng các gói dạng không phải của Mỹ không (non-US) hay không, về nguyên tắc, trừ phi có những vấn đề về pháp lý, còn không thì chúng ta sẽ chọn có.

Về câu trả lời cho câu hỏi sau đây, việc tham chiếu tới sử dụng các gói không tự do, các sinh viên được phép tiến hành những lựa chọn của riêng họ theo những nguyên tắc đạo đức của riêng họ. Tiếp

theo, chúng ta sẽ được hỏi về tình trạng các site chứa các bản sao (mirror) để từ đó apt sẽ lấy được các gói; chúng ta luôn nên chọn một site truy cập được tốt nhất, mà có xu hướng sẽ là một site gần chúng ta nhất về địa lý. Khi đã chọn xong tình trạng, chúng ta sẽ được hỏi để chọn một máy chủ cụ

thể (ứng dụng netselect được thiết kế để tạo thuận lợi cho sự lựa chọn các máy chủ của các gói dựa vào các tiêu chí về tốc độ truy cập). Khi vấn đề này được giải quyết xong, chúng ta sẽ được chỉ ra màn hình cấu hình truy cập ủy quyền; nếu chúng ta không cần sử dụng dịch vụ này, thì chúng ta sẽ bỏ lại dòng trắng.

Điều quan trọng vì những lý do an ninh phải có được các gói sống còn từ các máy chủ an ninh. Vì lý do này, khuyến cáo lấy chúng đặc biệt từ http://www.debian.ort/security/. Đã hoàn tất được tất cả

các bước, thì apt sẽ kết nối với site mirror mà chúng ta đã chỉ định để thiết lập cấu hình cho cơ sở dữ liệu của mình. Từ đây trở đi, phần còn lại của việc cài đặt chúng ta sẽ tuân theo các bước y hệt như chúng ta đã làm với cài đặt bằng CD-ROM.

5.5. Kết luận

Trong hội thảo này chúng ta đã học được cách cài đặt GNU/Linux trên máy tính của chúng ta. Dù bây giờ hệ thống của chúng ta là rất cơ bản, thì mục đích của hội thảo hoàn toàn đã được thỏa mãn, vì chúng ta đã đưa ra công việc cơ bản để bắt đầu tận dụng tính mềm dẻo và sức mạnh của hệ điều hành này. Trong hội thảo tiếp sau chúng ta sẽ học cách thiết lập cấu hình cho hệ thống và cách cài đặt các ứng dụng mới sao cho chúng ta có thể tùy biến được nó và trang bị cho nó với tất cả các công cụ mà chúng ta thấy là cần thiết để đáp ứng các nhu cầu của chúng ta.

Trang 110/232

Page 111: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

6. Các cấu hình cơ bản

6.1. Hệ thống đăng nhập

Nếu chúng ta còn chưa thiết lập cấu hình cho môi trường đồ họa, thì khi chúng ta khởi động một hệ thống GNU/Linux, một màn hình sẽ xuất hiện hỏi người sử dụng tự xác định bản thân anh hoặc chị ta trước khi bắt đầu sử dụng hệ thống. Trên thực tế, hầu hết các phát tán đều đưa ra vài cửa sổ dòng lệnh để làm việc cùng một lúc được mà chúng ta có thể truy cập thông qua Alt+F1, Alt+F2 …

Điều này cho phép chúng ta làm việc cùng một lúc với vài tài khoản, có nhiều phiên làm việc mở ra để chạy các chương trình khác nhau... Chương trình đó có trách nhiệm quản lý từng trong số các

cửa sổ dòng lệnh là getty. Điều duy nhất mà chương trình này làm là mở một kết nối với thiết bị

phù hợp (trong trường hợp các cửa sổ dòng lệnh màn hình, thì đó là /dev/ttyX, trong đó X là số cửa sổ dòng lệnh) và để đưa ra ứng dụng đăng nhập. Cơ chế này trao cho chúng ta nhiều sự mềm

dẻo, vì bản thân chương trình getty cho phép giao tiếp với các thiết bị khác nhau có nghĩa là chúng ta có thể kết nối một cửa sổ dòng lệnh tới cổng nối tiếp của máy tính, kích hoạt một cửa sổ dòng lệnh bằng việc sử dụng một đường điện thoại và một modem …

Trước khi khởi xướng ứng dụng đăng nhập, một thông điệp chào mừng sẽ hiện ra trên màn hình.

Chúng ta có thể thiết lập cấu hình cho thông điệp này trong tệp /etc/issue, viết bất kỳ thứ gì chúng ta muốn. Trong cùng tệp này chúng ta cũng có thể chỉ ra một số biến hệ thống tham chiếu tới chúng như:

Bảng 6.1

\d ngày hiện hành

\s tên hệ điều hành

\l số cửa sổ dòng lệnh

\m kiến trúc máy tính

\n tên máy tính

\o tên miền

\r phiên bản của hệ điều hành

\t thời gian hiện hành

\u số người sử dụng tích cực trong hệ thống

Một khi chúng ta đã vào được hệ thống, thì chương trình login sẽ chăm sóc việc hiển thị thông điệp

trong ngày. Thông điệp này là những gì được viết trong tệp /etc/motd, mà chúng ta cũng có thể thay đổi. Cơ chế này là rất hữu ích để thông báo cho tất cả những người sử dụng về một sự kiện đặc biệt, cảnh báo cho họ về bất kỳ vấn đề gì … Nếu một người sử dụng muốn bỏ thông điệp này, anh

ta có thể làm vậy bằng việc tạo một tệp rỗng có tên là .hushlogin trong thư mục home của anh ta.

Trang 111/232

Page 112: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Sau khi hiển thị thông điệp này, qui trình đăng nhập đưa ra trình biên dịch (shell) được cấu hình cho người sử dụng này một cách mặc định. Điều đầu tiên các lệnh biên dịch sẽ làm là thực thi nội dung

của tệp .profile (mà nên được nằm trong thư mục home của người sử dụng). Tệp này phục vụ để chạy các chỉ dẫn được cấu hình mỗi lần người sử dụng vào hệ thống. Bổ sung thêm vào điều này

một ~/.profile, chúng ta cũng có /etc/profile, mà được thực hiện cho tất cả những người sử dụng hệ thống và sẽ được thiết lập cấu hình chung cho tất cả những người sử dụng với các lựa chọn

mà chúng ta muốn không cần phải đặt ra những chỉ dẫn theo từng người sử dụng .profile.

6.2. Khai thác bash

Dù tệp .profile được thực thi bất chấp trình biên dịch shell mà chúng ta sử dụng, các tệp .bashrc

hoặc .bashprofile chỉ có xu thế thực thi khi chúng ta sử dụng trình biên dịch hoặc bash shell đó

(dù nó có thể được thiết lập cấu hình từ .profile của người sử dụng), nơi mà sự thực thi lệnh này được gọi). Hãy nhìn vào một ít các chỉ dẫn mà chúng ta có thể thấy trong các dòng đó:

#BASIC CONFIGURATIONS mesg n umask 022 #PATH export PATH= /usr/local/sbin:/usr/local/bin:

/usr/ sbin:/usr/bin:/sbin:/bin:/usr/bin/X11 #PROMPT export PS1='\h:\w\$ ' #USER ALIAS

alias l='ls - - colour=auto' alias ll='ls - - color=auto -al' alias

rm='rm -i' alias cp='cp -i' alias mv='mv -i' alias v='vim'

Như chúng ta có thể thấy trong tệp này chúng ta có thể định nghĩa bất kỳ thứ gì chúng ta muốn. Hai chỉ dẫn đầu tiên của tệp bãi bỏ các thông điệp đến của người sử dụng và thiết lập cấu hình cho các

quyền mà các tệp mới chúng ta tạo sẽ có. Chỉ dẫn sau đây là định nghĩa về PATH. PATH là các thư mục nơi mà chúng ta có các lệnh, chương trình, ứng dụng …, mà chúng ta muốn có khả năng gọi từ bất kỳ nơi nào bên trong hệ thống tệp mà không phải viết đường dẫn đầy đủ [chúng ta tách bạch

từng thư mục PATH bằng dấu hai chấm (:)]. Khai báo sau là dấu nhắc hệ thống. Dấu nhắc là dòng xuất hiện trong trình biên dịch (shell) trước ký tự “#” (cho người sử dụng gốc root) hoặc “$” (cho tất cả những người sử dụng khác). Chúng ta có thể thiết lập cấu hình cho dấu nhắc này cho bản thân chúng ta khi chúng ta muốn sử dụng các biến hệ thống sau:

Bảng 6.2

\d ngày hệ thống

\h tên máy

\s trình biên dịch (shell) chúng ta sử dụng

\u tên người sử dụng

\v phiên bản của trình biên dịch bash

\w thư mục hiện hành

\! số lệnh theo lịch sử

\$ “#” xuất hiện nếu chúng ta là người sử dụng gốc root và “$” xuất hiện cho tất cả những người sử dụng khác.

Trang 112/232

Page 113: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Biến PATH

Nếu chúng ta muốn chạy các chương trình từ thư mục chúng ta đang đứng mà không phải đặt dấu “./” ở đằng

trước, thì chúng ta có thể thêm thứ đó vào khai báo của PATH. Nếu PATH không có chương trình mà chúng ta cần để chạy, thì chúng ta có thể chỉ định đầy đủ đường dẫn của nó trong dòng lệnh. Trong bất kỳ trường hợp

nào cũng không được khuyến cáo thêm “./” vào PATH vì nó có thể trở thành một lỗ hổng an ninh.

Cuối cùng, chúng ta có bí danh (alias) của người sử dụng. Bí danh2 là những thứ đồng nghĩa, thường cho các lệnh mà chúng ta sử dụng thường xuyên nhất (để tránh phải viết chúng đầy đủ). Ví dụ, trong một trong những bí danh mà chúng ta đã có trong ví dụ chúng ta đã xác

định khi chúng ta viết lls --colour=auto should execute.. Bằng cách này, chúng ta có thể sử dụng các lệnh dài mà không phải viết mọi thứ mọi lúc chúng ta sử dụng chúng.

Trong việc xác định cả PATH và dấu nhắc, chúng ta đã sử dụng lệnh

export. Lệnh này cho phép chúng ta xác định những gì chúng ta gọi một biến môi trường. Trình biên dịch shell sử dụng các biến đó để triển khai những hành động nhất định, tiết kiệm việc gõ nhất định các thông tin... Chúng ta có thể thấy tất cả các biến được khai báo bằng việc sử

dụng cùng y lệnh export. Với set và unset chúng ta cũng có thể điều khiển các thuộc tính khác của trình biên dịch lệnh.

Một số biến và thuộc tính mà trình biên dịch bash có một cách mặc định, là:

• PWD: thư mục hiện hành.

• BASH VERSION: phiên bản của trình biên dịch bash mà chúng ta đang sử dụng.

• RANDOM: tạo ra một số ngẫu nhiên mỗi lần chúng ta hiển thị nội dung của mình.

• SECONDS: số giây đã trôi qua kể từ khi chúng ta mở trình biên dịch shell.

• HOSTNAME: tên của hệ thống.

• DOSTYPE: dạng hệ điều hành mà chúng ta đang sử dụng.

• MACHTYPE: kiến trúc của máy tính.

• HOME: thư mục home của người sử dụng.

• HISTFILESIZE: kích cỡ của tệp lịch sử (số lệnh được lưu trữ)

• HISTCMD: số lệnh hiện hành trong lịch sử.

• HISTFILE: tệp lưu giữ lịch sử của các lệnh (nói chung, .bashhistory thư mục home của người sử dụng).

Bằng việc điều khiển các biến đó chúng ta có thể tùy biến trình biên dịch lệnh của chúng ta nhiều hơn khi tùy biến nó tốt hơn cho các nhu cầu và khẩu vị của chúng ta.

Trang 113/232

(2) Chúng ta có thể thấy tất cả

các bí danh được xác định từ

cùng một lệnh alias.

Lệnh echo

Với echo $VariableName chúng ta có thể thấy nội dung của các biến đó và các thuộc tính của chúng.

Page 114: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

6.3. Hệ thống khởi động

Dù với việc cài đặt hệ điều hành thì một hệ thống khởi động đã được thiết lập cấu hình và được cài đặt rồi, nên trong phần này chúng ta sẽ xem xét chi tiết hơn vào những lựa chọn nào chúng ta được chào và cách mà chúng ta có thể tùy biến chúng và thích nghi chúng cho các yêu cầu của chúng ta. Dù có nhiều, thì Lilo và Grub là những lựa chọn phổ biến nhất trong các môi trường GNU/Linux, nên chúng ta sẽ chỉ tập trung vào 2 thứ này.

Trước khi đi vào chi tiết về cấu hình của 2 chương trình này, chúng ta sẽ giải thích cách mà một hệ thống khởi động máy tính cá nhân PC tiêu chuẩn làm việc. Như chúng ta đã biết, chúng ta có thể thiết lập cấu hình cho sự tuần tự khởi động một máy tính từ BIOS hoặc EFI. Thông thường, sự tuần tự này có xu hướng bắt đầu tiếp tục tìm trong ổ đĩa với ổ CD/DVD và ổ cứng. Dù chúng ta có thể cài đặt Lilo hoặc Grub lên một đĩa hoặc vùng khởi động của một CD, thì thông thường nhất để cài đặt nó lên đĩa cứng sao cho không phải chèn đĩa mỗi lần chúng ta khởi động máy tính của chúng ta.

Khi hệ thống khởi động của máy tính tìm ổ đĩa, thứ đầu tiên nó sẽ xem xét là liệu MBR (Bản ghi Khởi động Chủ - Master Boot Record) của ổ đĩa đầu tiên (ổ chủ của kênh IDE đầu tiên hoặc đĩa đầu của kênh SCSI) có chứa bất kỳ lệnh hệ thống nào sẽ phải tải lên hay không. MBR là rãnh đầu tiên của đĩa cứng, nơi mà thông tin về các phân vùng được thiết lập cấu hình được lưu trữ, và một cách tùy ý, chương trình đó có trách nhiệm khởi tạo hệ điều hành. Nếu chương trình này không được tìm thấy ở đây, thì vùng khởi động của phân vùng tích cực của đĩa sẽ được xem xét. Bất kỳ khi nào chúng ta muốn cài đặt một chương trình trong hệ thống khởi động của máy tính thì chúng ta phải đặt nó vào một trong các vùng đó. Trong hình tiếp sau chúng ta có thể thấy toàn bộ qui trình này khi tuần tự khởi động trước hết là ổ đĩa và sau đó là đĩa:

Hình 6.1

Bất kỳ khi nào chúng ta cài đặt một hệ thống khởi động, chúng ta cần nhớ rằng trật tự trong đó tuần tự này được triển khai là quan trọng: nếu chúng ta cài đặt một hệ thống khởi động lên MBR và một

Trang 114/232

Page 115: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

hệ thống khởi động khác lên phân vùng tích cực, thì của MBR sẽ được chạy vì đây là vùng mà BIOS và EFI xem xét trước. Nếu chúng ta không có một phân vùng tích cực, thì chúng ta cần đặt một chương trình khởi động trong MBR. Trong tất cả các sự việc, được khuyến cáo nhất là luôn cài đặt chương trình đó lên MBR vì nó là thứ đầu tiên sẽ được xem xét. Dù chúng ta có thể có các hệ điều hành khác được cài đặt trên các đĩa khác, thì chúng ta nên cài đặt Lilo hoặc Grub lên một trong những vùng đó. Trong thiết lập cấu hình của chương trình chúng ta sẽ nói cho chương trình khởi động biết hệ điều hành chúng ta muốn tải lên nằm ở đâu.

Thông thường, trong các máy tính hiện đại thì tuần tự khởi động là: CD/DVD, đĩa cứng, USB, mạng...

6.3.1. Grub

Grub cho phép chúng ta nhiều cấu hình khác nhau để triển khai hầu hết mọi hành động với hệ thống khởi động của máy tính. Grub cũng phục vụ để cài đặt một chương trình trong vùng khởi động của máy tính mà chúng ta muốn.

Nó đưa ra nhiều khả năng làm cho nó rất linh hoạt: nó cung cấp một trình biên dịch nhỏ các lệnh khi chúng ta khởi động máy tính, trao cho chúng ta sự truy cập tới các tệp phân vùng của đĩa mà không phải tải bất kỳ hệ điều hành nào … Như trong trường hợp trước, trong phần này chúng ta sẽ chỉ xem xét cấu hình cơ bản của nó. Nếu chúng ta muốn đi sâu hơn về sử dụng nó, chúng ta có thể nghiên cứu sách chỉ dẫn của nó hoặc sách dạy cách làm HOWTO tương ứng.

Hệ thống khởi động Grub3 được tải lên trong 2 pha. Thông thường, với sự cài đặt gói, 2 tệp tương ứng với 2 pha đó được kết hợp với nhau. Khi chúng ta khởi động Grub nếu chúng ta không muốn được chỉ ra bất kỳ thực đơn nào cho việc chọn hệ điều hành mà chúng ta muốn tải lên, thì tất cả mọi thứ chúng ta phải làm là chạy chương trình Grub và chạy trong trình biên dịch các lệnh mà nó chỉ cho chúng ta:

Hệ thống khởi tạo

Hệ thống khởi tạo một hệ thống tương tự như GNU/Linux cho phép chúng ta, với cùng hệ thống tệp, để tải lên hàng loạt các nhân khác nhau. Bằng cách này, chúng ta có thể làm việc với các nhân khác nhau mà không phải cài đặt lại hệ thống từ đầu. Để thiết lập cấu hình cho nó, chúng ta sẽ chỉ cần chỉ định 2 vùng cục bộ, đặt nhân mà chúng ta sẽ sử dụng vào trong từng vùng đó.

$ install (hd0,0)/PATH/stage1 d (hd0) (hd0,0)/PATH/stage2

Lệnh này cài đặt Grub vào MBR của đĩa chủ (master) của kênh IDE đầu tiên. Cách thức tham chiếu tới các đĩa thay đổi rất ít so với cách mà nó được thực hiện trong GNU/Linux và với Lilo. Trong

hdX thì X, thay vì a, b, …, là 0, 1 … Đối với các phân vùng, chúng ta cũng bắt đầu với số a để đặt

tên cho đĩa đầu và không giống như hda1, chúng ta nên viết (hd0,0) và tiếp tục cho phần còn lại. Việc đọc chỉ dẫn theo cách này hãy xem cách mà tham số đầu tiên phục vụ để chỉ định nơi có tệp

của pha đầu tiên của Grub (chúng ta chỉ định phân vùng tương ứng, PATH của thư mục và stage1 của tệp). Nói chung, khi chúng ta cài đặt gói Grub chúng ta cũng bổ sung thêm 2 tệp đó cho từng

gói của các pha tải lên (chúng thường được thấy trong /usr/share/grub/i386-pc/). Tham số d

(hd0) chỉ rằng pha đầu của Grub sẽ được cài đặt trong MBR của đĩa đầu tiên. Lựa chọn cuối cùng chỉ nơi mà tệp đó nằm cho pha tải lên thứ 2, được pha đầu thực hiện.

Truyền các tham số tới nhân Linux

Với Grub chúng ta có thể truyền các tham số tới nhân Linux tại thời điểm khởi động. Điều này là rất hữu ích

Trang 115/232

(3) Grub (Trình tải khởi động

Lớn Thống nhất - Grand Unified Bootloader) là chương trình tải khởi động của dự án GNU.

Page 116: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

khi chúng ta muốn triển khai một hành động đặc biệt trong hệ thống; ví dụ, bằng việc truyền single hoặc 1 thì

hệ thống có thể khởi tạo ở mức chạy 1, với root=/dev/hda3 mà chúng ta có thể chỉ định cho gốc root của hệ thống tệp...

Với cấu hình này, khi chúng ta khởi động lại máy tính, trình biên dịch các lệnh của Grub sẽ xuất hiện một cách mặc định. Với nó chúng ta có thể điều khiển nhiều khía cạnh của đĩa, khởi động hệ điều hành mà chúng ta muốn … Nếu chúng ta muốn khởi động một hệ thống GNU/Linux thì chúng ta sẽ viết các lệnh sau:

$ kernel (hd0,0)/vmlinuz root=/dev/hda1 $ boot

Với cái đầu chúng ta đang chỉ định nơi mà ảnh của nhân nằm (với các tham số chúng ta muốn) và với cái thứ 2 chúng ta bắt đầu tiến trình tải lên hệ điều hành. Nếu chúng ta chọn một lựa chọn thực đơn sao cho chúng ta không phải viết các lệnh đó mỗi lần chúng ta khởi động máy tính, thì chúng ta có thể tạo ra một tệp thực đơn giống như tệp sau (các bình luận bắt đầu với “#”):

#Specification of the operating system to be loaded by #default. This number corresponds

to the order of the #systems on the sections local to the #operating systems. default 0

Trợ giúp cho Grub

Để xem tất cả các lệnh có sẵn trong trình biên dịch sheel của Grub, chúng ta có thể nhấn phím Tab. Trợ giúp cũng được đưa vào cho một tham chiếu đầy đủ của tất cả các lệnh.

#Let’s specify that it should wait 10 seconds before loading the system #configured by

default.

timeout 10 #Boot configuration for a GNU/Linux system title Debian GNU/Linux kernel

(hd0,0)/vmlinuz root=/dev/hda1 #Boot configuration for a Windows XP title Windows XP system

root (hd0,2) makeactive

Đề cài đặt4 Grub với thực đơn khởi động này, chúng ta phải chạy lệnh

y hệt như ở trên nhưng bổ sung thêm tham số p

(hd0,0)/PATH/menu.lst với đĩa, đường dẫn, và tệp thực đơn. Để bảo

vệ hệ thống khởi động chúng ta có thể đặt lệnh password trong phần tổng thể của tệp cấu hình. Bằng cách này, khi chúng ta muốn vào trình biên dịch shell của Grub từ thực đơn thì chúng ta được yêu cầu mật khẩu. Nếu chúng ta sử dụng lệnh này thì rất quan trọng là chỉ gốc root mới có thể đọc được tệp cấu hình này (dù trong trường hợp này cũng có lựa chọn đặt mật khẩu được mã hóa bằng MD5).

Cũng có dạng khởi động khác sử dụng một ảnh gọi là Đĩa RAM - RAM Disk (initrd). Dạng khởi động này phục vụ cho việc tạo cấu hình theo module của nhân Linux. Nó thường xuyên được sử dụng khi chúng ta cần một nhân với một số dạng cấu hình đặc biệt, để đưa vào các module trong cùng nhân, để tạo ra một ảnh khởi động cho một đĩa live CD, để có cùng ảnh cho tất cả các máy tính của một phòng thí nghiệm được lưu trữ chỉ trong một máy chủ duy nhất... Trong bất kỳ trường hợp nào, những cài đặt tiêu chuẩn của hệ điều hành hầu hết không bao giờ sử dụng dạng khởi động này. Nếu chúng ta muốn tạo một ảnh dạng này, chúng ta có thể thấy nhiều hơn trong sách chỉ dẫn

initrd và trong sách chỉ dẫn cho mkinitrd program.

Trang 116/232

(4) Cách khác để cài đặt grub

là sử dụng chương trình grub-

install.

Page 117: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

6.4. Truy cập các phân vùng và thiết bị khác

Các hệ thống dạng UNIX đối xử với tất cả các thiết bị của máy tính dường như chúng đều là các tệp. Điều này trao cho chúng ta nhiều sự mềm dẻo vì chúng ta có thể tận dụng được tất cả các cơ chế và chức năng mà chúng ta đã sử dụng với các tệp và áp dụng chúng vào cho

các thiết bị. Trong thư mục /dev/ chúng ta có tất cả các thiết bị mà hệ thống nhận được. Nếu hệ thống không nhận được một thiết bị một cách đúng đắn, hoặc nếu chúng ta mong muốn tạo ra một thiết bị đặc

biệt, thì lệnh mknod cho phép chúng ta triển khai dạng hoạt động này, dù điều quan trọng phải biết chính xác chúng ta muốn làm gì trước khi sử dụng nó, vì việc sử dụng sai có thể gây thiệt hại cho các phần của hệ thống.

Đối với những đơn vị lưu trữ, hệ thống đưa ra cho chúng ta một dạng hoạt động khác để truy cập các hệ thống tệp của mình, hoạt động kích hoạt (mount). Đối với hoạt động này, chúng ta sẽ sử dụng các lệnh

mount và umount, chúng sẽ kích hoạt và giải hoạt tất cả hệ thống tệp của một thiết bị/đơn vị đặc biệt

trong một thư mục hệ thống đang tồn tại. Cách cơ bản để sử dụng lệnh là mount directory device (thư mục thiết bị), trong đó device (thiết bị) có thể tham chiếu tới bất kỳ thiết bị nào trong kênh IDE

hoặc SCSI (/dev/hdXX, /dev/sdXX, ổ đĩa /dev/fdX, các băng từ sao lưu, các bộ nhớ USB, và

directory là vị trí thư mục nơi mà chúng ta sẽ kích hoạt cấu trúc tệp của thiết bị). Hữu ích nếu thư mục nơi chúng ta kích hoạt các thiết bị đó là rỗng, vì không có khả năng truy cập các thiết bị khi thư mục này được sử dụng như một điểm kích hoạt).

Để giải hoạt một trong các thiết bị, chúng ta có thể sử dụng lệnh umount directory (thư mục), trong đó thư mục phải là điểm kích hoạt được sử dụng. Nếu chúng ta kích hoạt từ trung gian trước khi chúng ta nói cho hệ thống, thì nó có thể cập nhật bộ nhớ tạm cache của hệ thống tệp của thiết bị. Cũng vậy, chúng ta không thể giải hoạt thiết bị nếu bất kỳ người sử dụng hoặc ứng dụng nào đang sử dụng bất kỳ trong số các tệp hoặc thư mục của nó (hệ thống có thể hiển thị một thông điệp lỗi nếu chúng ta cố thử điều này).

Lưu ý rằng chúng ta không đang chỉ định dạng hệ thống tệp được sử dụng trong đơn vị mà chúng ta đang kích hoạt tại bất kỳ điểm nào trong hoạt động đó; điều này có nghĩa là nó phải được xác định một cách tự động. Nếu chúng ta muốn chỉ định dạng hệ thống tệp bằng tay, thì chúng ta có thể sử

dụng lệnh mount với thuộc tính -ttype. trong đó type có thể là bất kỳ thứ gì trong bảng sau (xem

sách chỉ dẫn mount để có danh sách đầy đủ):

Bảng 6.3

Dạng Hệ thống

Ext GNU/Linux (các phiên bản của nhân trước phiên bản 2.1)

ext2 GNU/Linux (các phiên bản của nhân sau phiên bản 2.1)

ext3 GNU/Linux (các phiên bản của nhân sau phiên bản 2.2 hoặc 2.4)

swap Hệ thống hoán đổi Swap trong GNU/Linux

Trang 117/232

Các thư mục ổ đĩa và CD/DVD

Đối với ổ đĩa và CD/DVD, nhiều phát tán tạo một thư mục mặc định nơi chúng có

thể được kích hoạt (/floppy/

hoặc /mnt/floppy/ và

/CDROM/ hoặc /mnt/CD-ROM/).

Các thư mục /mnt/ và

/media/ cũng thường được cung cấp và trong đó chúng ta có thể tạo các thư mục cho những thiết bị khác mà chúng ta có trong hệ thống.

Page 118: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Dạng Hệ thống

sysv Các hệ thống dạng UNIX

minix MINIX

iso9660 Hệ thống tệp hầu hết các CD sử dụng

nfs Hệ thống tệp từ xa (Hệ thống tệp mạng – Network File System)

smbfs Hệ thống tệp từ xa trong các mạng Windows (Hệ thống tệp Samba)

ntfs Cây của WindowsNT

msdos MS-DOS

vfat Cây của Windows95

Kích hoạt và giải hoạt các hệ thống tệp

Mặc định, các quyền ưu tiên của siêu người sử dụng (superuser) là cần thiết để kích hoạt/giải hoạt các hệ thống

tệp. Những gì thường xảy ra là một người sử dụng được xác định như một người quản trị trong tệp sudoers sao

cho lệnh sudoer đứng trước đó có thể triển khai các nhiệm vụ, được tệp sudoers này cho phép.

Ngoài việc vào dạng hệ thống tệp được sử dụng từ đơn vị mà chúng ta muốn kích hoạt, chúng ta cũng chỉ ra những lựa chọn khác có thể rất hữu ích trong những tình huống nhất định (luôn được

đứng trước bằng -o và được tách bạch bằng dấu phẩy, nếu chúng ta muốn vào hơn một dạng):

Bảng 6.4

Ý nghĩa của lựa chọn Cho phép Không cho phép

Chạy các tệp nhị phân exec noexec

Sử dụng bit của SetUserId suid nosuid

Các tệp chỉ đọc ro rw

Hệ thống được đồng bộ (sử dụng bộ nhớ tạm của đĩa) sync async

Giải thích các khối hoặc ký tự đặc biệt dev nodev

Cho phép bất kỳ người sử dụng nào kích hoạt hoặc giải hoạt thiết bị user nouser

Hệ thống dạng hoán đổi swap sw

(Nếu chúng ta vào mặc định defaults, thì có thể sử dụng các lựa chọn rw, dev, exec, auto, nouser và async).

Trang 118/232

Page 119: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Hình sau đây chỉ một ví dụ về cách sử dụng lệnh này để kích hoạt một loạt các thiết bị khác nhau.

Hình 6.2

Ngoài các lệnh sẽ kích hoạt và giải hoạt các đơn vị, hệ điều hành còn cung cấp cho chúng ta cách

khác để làm điều y hệt và luôn giữ cấu hình y hệt cho từng đơn vị. Trong tệp /etc/fstab chúng ta có thể lưu giữ thông tin này sao cho mỗi dòng chỉ một đơn vị với thư mục kích hoạt tương ứng và các lựa chọn mà chúng ta muốn để thiết lập cấu hình. Cú pháp của từng dòng này sẽ là:

<dev> <dir> <typeSystem> <options> <dump> <order>

Trong trường đầu tiên, chúng ta phải chỉ định thiết bị chỉ như chúng ta đã làm với lệnh mount và trường thứ hai sẽ chứa thư mục trong đó chúng ta muốn kích hoạt đơn vị theo yêu cầu. Trong

typeSystem, chúng ta có thể chỉ định hệ thống tệp mà đơn vị đó sử dụng hoặc auto sao cho nó dò

tìm ra một cách tự động. Trong options, chúng ta có thể viết những thứ y hệt như chúng ta đã làm

khi sử dụng lệnh mount, được tách bạch bằng dấu phẩy, nếu chúng ta muốn đặt vào hơn một lựa

chọn. Một lựa chọn hữu ích trong trường này là cấu hình của auto hoặc noauto, với nó chúng ta có thể nói cho hệ thống tự động kích hoạt (hoặc không) đơn vị sẽ phải được khởi động lên. Trường

dump chỉ định liệu chúng ta có muốn làm các bản sao lưu (nhiều thông tin hơn trong sách chỉ dẫn

dump). Nếu chúng ta không sử dụng hệ thống này, thì chúng ta có thể vào số 0. Trường cuối cùng có

thể được sử dụng để chỉ định trật tự trong đó các đơn vị sẽ được kích hoạt. Nếu chúng ta vào 0, thì chúng ta chỉ định rằng trật tự là không quan trọng. Hệ thống tệp gốc root là thứ đầu tiên phải được

kích hoạt; vì thế, sẽ là 1 trong trường này.

Một khoản đầu vào mà chúng ta luôn thấy trong tệp này và có thể gây ngạc nhiên là thư mục

Trang 119/232

Page 120: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

/proc/, nó có một ý nghĩa đặc biệt. Trong thực tế, không có các tệp trong thư mục này; thay vào đó, chúng ta có giá trị của nhiều biến mà nhân của hệ thống sử dụng. Như trường hợp với hệ điều hành,

nơi mà nó phải có khả năng tham chiếu tới mọi thứ như một tệp, thì trong thư mục /proc/, chúng ta cũng có thể xác định các biến nội bộ nhất định của nhân, dường như chúng cũng là các tệp.

Dù thiết kế này cho việc kích hoạt các đơn vị trong cấu trúc có tôn ti trật tự của các thư mục là rất mạnh và đưa ra nhiều sự mềm dẻo, thì trong một số trường hợp quá là không thực tế. Ví dụ, mỗi lần chúng ta muốn sao chép một tệp vào một đĩa, chúng ta phải kích hoạt đơn vị đó, sao chép nó và giải hoạt nó trở lại. Tiếp theo, có một ít ứng dụng khác làm cho toàn bộ qui trình dễ dàng hơn và tiết kiệm cho chúng ta tiến

hành một số bước nhất định. Một trong số đó là mtools, nó là một gói với một loạt ứng dụng cho phép chúng ta sao chép các tệp đến và từ một đĩa một cách trực tiếp,

cũng như một ít công cụ thú vị khác. Cũng có một gói gọi là autofs, nó tự động dò tìm ra bất kỳ thiết bị nào được bổ sung thêm vào hệ thống và kích hoạt nó mà không cần người quản trị phải ghi bất kỳ lệnh bất kỳ nào cả.

6.5. Cấu hình thiết bị

Dù điều này không phải là vấn đề ban đầu trong GNU/Linux, hiện hành ngày càng nhiều nhà sản xuất cung cấp các trình điều khiển cho các thiết bị đặc biệt của họ cho GNU/Linux. Trước khi thử cấu hình cho chúng, chúng ta phải tìm kiếm thông tin về chúng trong các sách chỉ dẫn hệ thống thực tế, các module, Internet... để hỗ trợ cho chúng ta một số vấn đề khi chúng ta bắt đầu với chúng. Dù hầu hết các thiết bị hiện tại có các sách chỉ dẫn và hướng dẫn cách làm HOWTO hoặc các dạng tài liệu khác, thì điều quan trọng phải tìm ra liệu có bất kỳ dạng trình điều khiển nào có sẵn cho một thiết bị hay không trước khi mua một thiết bị mới.

Dù chúng ta sẽ chỉ đưa ra cách cấu hình cho một số thiết bị thường được sử dụng nhất trong các máy tính cá nhân trong phần này, thì tiến trình đó có thể khác nhau đáng kể từ phát tán này tới phát tán khác. Dù chúng ta sẽ chỉ xem một hệ thống sử dụng Debian GNU/Linux trong phần này, thì nếu chúng ta học cách mà tiến trình cơ bản này làm việc từ đầu, thì chúng ta sẽ không có các vấn đề hiểu biết về cấu hình được sử dụng trong các phát tán khác.

6.5.1. Bàn phím

Việc cấu hình đúng cho bàn phím là rất quan trọng để giải quyết bất kỳ vấn đề nào có thể nảy sinh với nó. Trước hết, chúng ta phải biết rằng, khi hệ thống khởi động, một bảng ký tự tương ứng với bảng được thiết lập cấu hình trong quá trình cài đặt sẽ được tải lên. Bảng ký tự này thường nằm

trong /etc/console/boottime.kmap.gz hoặc trong một số thư mục trong /etc/. Nếu chúng ta đã thay đổi bàn phím rồi, thì tất các điều chúng ta có thể phải làm là thay đổi tệp này bằng tệp tương ứng cho bàn phím mới và khởi động lại máy, khi bảng mới có thể được tải lên. Tất cả các bảng ký

tự đang tồn tại thường nằm trong thư mục /usr/share/keymaps/, được sắp xếp theo các kiến trúc của máy tính và theo quốc gia. Đặc biệt, bảng ký tự được sử dụng trong tiếng Tây Ban Nha với các máy tính dựa vào kiến trúc i386 và một bàn phím tiêu chuẩn, có thể thấy trong

i386/qwerty/es.kmap.gz.

Dù tất cả các bảng ký tự đó được nén ở định dạng gzip, chúng ta có thể giải nén chúng và thay đổi một số khoản đầu vào, để tùy biến chúng cho các nhu cầu của chúng ta. Trong từng dòng, chúng ta

Trang 120/232

Lệnh mount to

Lệnh mount to được sử dụng để kích hoạt tất cả các thiết bị có lựa chọn tự động bật (nó là thiết lập mặc định) cho tệp cấu hình này.

Page 121: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

sẽ tìm hướng dẫn keycode, nó chỉ ra rằng chúng ta đang xác định một phím, được chỉ ra ở dạng số sau lệnh (chúng ta có thể tìm ra số nào tương ứng với từng trong số các phím trên bàn phím bằng

việc sử dụng lệnh showkey). Sau khi thực hiện định nghĩa này, chúng ta cần xác định điều gì xảy ra khi phím đó được nhấn lên tự bản thân nó, hoặc với phím Shift …

Hãy xem một ví dụ:

keycode 53 = minus underscore control keycode 53 = Delete

Trong dòng đầu, chúng ta chỉ ký tự tương ứng khi chúng ta nhấn phím lên bản thân nó (minus [dấu

trừ]) hoặc với phím Shift ( underscore [gạch dưới chân]). Dòng thứ hai chỉ chức năng sẽ được thực hiện nếu chúng ta nhấn phím cùng với phím Ctrl (ký tự sau có thể bị loại bỏ). Tất cả thông tin bạn cần thiết lập cấu hình cho một tệp dạng này sẽ được tìm ra đúng trong sách chỉ dẫn được gọi là

keymaps, mà là hữu ích nếu vấn đề nảy sinh khi sử dụng các bàn phím đặc biệt hoặc các bàn phím được chế tạo tại các quốc gia khác. Nếu chúng ta không muốn khởi động lại máy khi thay đổi tệp

bảng mã này, thì chúng ta hãy sử dụng lệnh loadkeys ( dumpkeys chỉ cho chúng ta các bàn phím được cấu hình).

Phông chữ của cửa sổ dòng lệnh

Sử dụng chương trình consolechars, chúng ta có thể tải phông chữ chúng ta muốn trong cửa sổ dòng lệnh. Chúng ta cần phân biệt rõ ràng giữa một phông chữ và một bảng ký tự: bảng ký tự xác định ý nghĩa của từng phím, trong khi phông chữ chỉ đơn gian là thể hiện đồ họa mà chúng ta trao cho phím. Tất cả các cấu hình

phông chữ cho ký tự thường thấy trong etc/console-tools/config.

Khía cạnh khác có liên quan tới bàn phím là câu hỏi về hiện tượng biến âm sắc, các dấu trọng âm... Chúng ta có thể thiết lập cấu hình cho tất

cả mọi thứ bằng việc sử dụng tệp /etc/inputrc (tất cả các hướng dẫn

cho tệp này được chỉ định trong sách chỉ dẫn readline). Những gì có

thể hữu ích hơn là convert-meta, mà, nếu chúng ta vô hiệu hóa set

convert-meta off, cho phép chúng ta sử dụng các dấu trọng âm và hiện tượng biến âm sắc. Cuối cùng, cấu hình quan trọng khác (mà là gián tiếp có liên quan tới bàn phím) là các bản địa. Với các bản địa, chúng ta có thể thiết lập cấu hình vùng địa lý hoặc các vùng trong đó chúng ta đang ở sao cho chúng ta có thể sử dụng các phím đặc biệt của bàn phím, xem ngày tháng ở định dạng mà chúng ta quen … Cấu hình này sẽ được nhiều thư viện hệ thống sử dụng; điều này có nghĩa là cấu hình này sẽ được sử dụng cho nhiều lệnh và ứng dụng trong hệ thống để tùy biến thích nghi những chức năng nhất định cho bản địa của chúng ta. Chúng ta có thể thiết lập cấu hình điều

này trong /etc/locale.gen và chúng ta có thể sử dụng các lệnh locale-gen và locale để xem cấu hình hoặc cập nhật nó.

6.5.2. Card mạng (dạng Ethernet)

Để thiết lập cấu hình cho một card mạng mới (dạng Ethernet), điều đầu tiên chúng ta phải làm là bổ sung thêm module nhân cần thiết sao cho nó có thể nhận được đúng. Dù với một số card chúng ta có thể không triển khai bước này vì bản thân nhân được biên dịch rồi để nhận biết được hầu hết các card phổ biến, thì chúng ta phải chắc chắn (trước khi mua card) rằng trình điều khiển hoặc module cần thiết là sẵn có.

Trang 121/232

Tái thiết lập cấu hình cho bảng các phím và bản địa

Cách khác để tái thiết lập cấu hình bảng các phím và bạn địa

trong Debian là sử dụng apt-

reconfigure console-data

hoặc apt-reconfigure

locales một cách tương ứng.

Page 122: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Module card mạng

Chúng ta có thể tìm ra module nào card mạng của chúng ta cần bằng việc sử dụng lệnh discover -module

Ethernet. Nếu chúng ta muốn cấu hình cho nó sao cho nó luôn tải lên, thì chúng ta phải ghi đè lên nó trong

/etc/modules (nếu không, chúng ta có thể chèn nó bằng modprobe hoặc insmode).

Một khi hệ thống đã nhận được card, thì chúng ta có thể cấu hình cho nó theo chúng ta muốn.

Trong tệp /etc/network/interfaces, chúng ta có thể chỉ định toàn bộ cấu hình; chúng ta cũng sẽ có các cấu hình của tất cả các giao diện khác trong hệ thống ở trong tệp này. Một giao diện là một thiết bị (thực sự hoặc ảo) được kết nối tới mạng mà với nó thì hệ thống có thể giao tiếp với các máy tính khác, đưa ra những dịch vụ nhất định... Giao diện là cổng gateway mà hệ thống có thể sử dụng để giao tiếp. Tệp này sẽ được sử dụng để chỉ định các hướng dẫn cần thiết để làm cho thiết bị chạy.

Hãy xem nó với một ví dụ:

#loopback interface auto lo iface lo inet loopback #NIC auto eth0 iface eth0 inet static

address 192.168.0.10 netmask 255.255.255.0 network 192.168.0.0 #optional broadcast

192.168.0.255 #optional gateway 192.168.0.1 #optional

Khoản đầu tiên chúng ta sẽ thường thấy trong tệp này là giao diện truy ngược (loopback interface). Giao diện này không tương ứng với bất kỳ thiết bị hay card nào trong máy tính, nhưng là một cơ chế trong hệ điều hành làm cho nó có khả năng sử dụng các giao thức truyền thông trong nội bộ. Trong thực tế, nếu chúng ta triển khai các chức năng mạng mà không giao tiếp với bất kỳ máy tính nào khác, thì thậm chí không cần

phải có một card mạng được cài đặt. Chúng ta sẽ thấy chỉ dẫn auto trong tất cả các khoản vào, trước khi chỉ định cấu hình của thiết bị. Chỉ dẫn này chỉ ra rằng card có thể được kích hoạt tự động

khi hệ thống khởi động. Chỉ dẫn iface chỉ định dạng card và giao thức sẽ được sử dụng với nó

thông qua cú pháp sau: iface device familyProtocol methodConfiguration. Với các card

Ethernet, thiết bị sẽ là ethX, trong đó X sẽ là một số bắt đầu bằng 0, chỉ số lượng card được cài đặt trong máy tính. Họ của việc sử dụng giao thức truyền thông thường là bất kỳ thứ gì sau đây:

• Inet: IPv4, được sử dụng trong Internet và hầu hết các mạng cục bộ.

• Inet6: IPv6, phiên bản mới của IPv4, đang được triển khai dần dần.

• Ipx: Cho các mạng của Novell.

Cuối cùng, trường cuối cùng được sử dụng để chỉ cách card mạng được thiết lập cấu hình (địa chỉ, mạng trong đó nó có, cổng gateway phải được sử dụng …). Bảng sau đây chỉ những lựa chọn nào là

cho họ các giao thức inet:

iproute2

Từ phiên bản 2.2 của nhân Linux, có khả năng sử dụng một hạ tầng mạng mới gọi là iproute2. Chúng ta có thể sử dụng điều này để điều khiển tất cả các khía cạnh có liên quan tới các NIC và các bảng nội bộ của chúng ta mà hệ điều hành sử dụng để điều khiển mọi thứ có liên quan tới mạng.

Bảng 6.5

Trang 122/232

NIC

Các card mạng cũng được tham chiếu tới như là các NIC (Card Giao diện Mạng - Network Interface Cards).

Page 123: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Cấu hình Lựa chọn Mô tả

loopback Phương pháp xác định giao diện loopback (nó phải được sử dụng với lo).

staticinterface Phương pháp cho việc cấu hình một NIC với một địa chỉ IP tĩnh

address Địa chỉ IP của giao diện. Trường phải được điền thông tin.

netmask Mặt nạ của địa chỉ IP. Trường phải được điền thông tin.

broadcast Địa chỉ phát. Nếu điều này chưa được chỉ định, thì hệ thống sẽ tính nó tự động.

network Địa chỉ ID của mạng.

gateway Địa chỉ IP của cổng gateway mà chúng ta sử dụng cho giao diện này.

dhcp Phương pháp để cấu hình từ xa cho IP của tất cả các máy tính trong một mạng cục bộ (Giao thức cấu hình máy chủ động - Dynamic Host Configuration Protocol).

hostname IP của máy chủ DHCP.

leasehours Thời gian tính bằng giờ, mà IP được thuê (điều này được làm mới lại, một khi thời gian hết).

leasetime Thời gian tính bằng giây, mà IP được thuê

vendor Bộ xác định dạng máy chủ (thường là dhcpd)

client Bộ xác định dạng máy trạm (thường là dhcpd)

bootp Phương pháp cho việc cấu hình IP từ xa của tất cả các máy tính trong một mạng cục bộ (Giao thức khởi động BOOT). Hiện hành, DHCP là giao thức được sử dụng rộng rãi hơn cả.

bootfile Tệp sẽ được sử dụng khi khởi động.

server Địa chỉ IP của máy chủ BOOTP.

hwaddr Địa chỉ MAC của máy thủ BOOTP.

ppp Phương pháp được sử dụng với giao thức từ điểm này tới điểm kia, được sử dụng trong nhiều modem.

provider Nhà cung cấp dịch vụ.

Dù chúng ta sẽ không đi vào chi tiết hơn nơi mà các mạng máy tính được quan tâm tới trong phần này, thì điều quan trọng phải lưu ý rằng chúng ta có nhiều lệnh có sẵn cho việc điều khiển cấu hình

mạng của hệ điều hành. Được sử dụng rộng rãi nhất là ifconfig, với nó chúng ta có thể thấy các

thiết bị được cấu hình, ifdown và ifup, nó cho phép chúng ta biến giao diện mà chúng ta muốn bật

hoặc tắt và route chỉ cho chúng ta bảng định tuyến của hệ thống.

Trang 123/232

Page 124: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

6.5.3. Card Wifi

Một mạng cục bộ không dây (wireless LAN), cũng được biết tới như là WiFi, là một công nghệ dựa vào tiêu chuẩn IEEE 802.11. Những định nghĩa chung nhất là những sửa đổi bổ sung b, a và ga của giao thức gốc ban đầu. Các tiêu chuẩn 802.11b và 802.11g sử dụng băng phổ 2.4 GHz, mà có nghĩa rằng chúng có thể can thiệp với những thiết bị khác sử dụng cùng băng phổ đó, như các điện thoại không dây. Tiêu chuẩn 802.11a sử dụng băng phổ 5 GHz.

Sử dụng các phổ tần số radio được các chính phủ điều chỉnh mạnh mẽ. Hầu hết các thiết bị card WLAN không thể được phân phối như mã mở. Một phần của thiết bị xác định các tần số của sóng radio thường được phân phối như là phần dẻo, mà, về nguyên tắc, có nghĩa là nó không thể được sửa đổi.

Các mạng giao tiếp không dây đang ngày càng trở nên phổ biến, trong các thiết đặt trong nước cũng như trong các mạng vật lý của cơ quan. Những điểm truy cập đó làm cho có khả năng kết nối bất kỳ máy tính nào trong vùng lân cận tới mạng đó, có sử dụng các thẻ WiFi (bất chấp chúng là PCI, PCMCIA, được tích hợp trong bo mạch chủ hoặc trong một bộ thích nghi USB). Điều này đơn giản hóa nhiều cho việc đi dây trong các tòa nhà.

Đối với hệ thống GNU/Linux để dò tìm và cấu hình một card không dây phù hợp, chúng ta phải thêm các module cần thiết vào nhân của hệ thống, mà trong nhiều trường hợp đã được biên dịch rồi trong nhân y hệt. Nếu chúng ta không có bất kỳ dây cáp Ethernet nào khác được cài đặt, thì nó sẽ

được tham chiếu tới như là eth0, hoặc eth1 nếu chúng ta đã có một dây cáp... Tại thời điểm này, điều duy nhất chúng ta còn phải làm sao cho card sẽ kết nối được tới điểm truy cập sẽ là phải soạn

thảo tệp /etc/network/interfaces và bổ sung thêm cấu hình được yêu cầu vào sao cho một địa chỉ IP có thể được chỉ định. Về bản chất tự nhiên, giao diện của hệ thống này có thể được đối xử như bất kỳ giao diện nào khác, có sử dụng các cơ chế tường lửa của hệ thống, với các ứng dụng

iproute2 … Chúng ta bây giờ sẽ xem xét một ví dụ cấu hình của card eth1, nó là WiFi:

# wireless network auto eth1 iface eth1 inet dhcp wireless_essid miwifi wireless_channel 6

wireless_mode managed wireless_keymode open wireless_key1 millavehexadecimal wireless_key2

s:millaveascii wireless_defaultkey 1

Nếu chúng ta xem xét khoản đầu vào trong sách chỉ dẫn cho lệnh, thì chúng ta sẽ thấy ý nghĩa của từng khoản của các lệnh ở trước.

6.5.4. Các modem

Ứng dụng pppconfig thường được sử dụng để thiết lập cấu hình cho một modem; ứng dụng ghi các tệp cấu hình cần thiết cho daemon của hệ thống PPP, nó là chương trình có nhiệm vụ thiết lập kết nối Internet.

Bất kỳ khi nào sử dụng pppconfig (hoặc các ứng dụng tương tự), một loạt các bước phải được thực hiện, như được giải thích bên dưới:

1. Tên của nhà cung cấp: nhà cung cấp là công ty mà chúng ta đã có hợp đồng dịch vụ kết nối Internet. Tên này có thể được sử dụng để xác định từng kết nối chúng ta thiết lập cấu hình một cách riêng rẽ.

2. Cấu hình các máy chủ tên: Khi chúng ta thiết lập hợp đồng với nhà cung cấp của chúng ta, chúng ta thường được trao (các) địa chỉ IP của các máy chủ tên sẽ phải được sử dụng. Nếu

Trang 124/232

Các gói ppp và pppconfig

Các gói bao gồm các chương trình theo yêu cầu cho một modem để kết nối tới Internet

thường được gọi là ppp và

pppconfig.

Page 125: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

chúng ta có những địa chỉ IP đó, thì chúng ta phải chỉ định rằng chúng ta đang sử dụng một cấu hình tĩnh, sau đó chúng ta sẽ được yêu cầu cho các IP đó. Chúng ta sẽ chỉ chọn một cấu hình động khi nhà cung cấp của chúng ta nói cho chúng ta rằng cấu hình DNS là động. Với lựa chọn thứ 3, nó nói cho chúng ta rằng DNS sẽ được đối xử bằng biện pháp khác, chúng ta có thể

sử dụng cấu hình tệp /etc/resolv.conf.

3. Phương pháp xác thực: phương pháp xác thực sẽ là PAP hoặc CHAP. Thông thường, các nhà cung cấp thường sử dụng PAP (Giao thức Xác thực Điểm ngang hàng - Peer Authentication Protocol), dù chúng ta sẽ tìm ra về điều này nếu nó không làm việc vì bất kỳ lý do gì.

4. Tên và mật khẩu người sử dụng: đây là thông tin các nhà cung cấp trao cho chúng ta sao cho chúng ta có thể kết nối và truy cập các dịch vụ của họ.

5. Tốc độ modem: phụ thuộc vào modem chúng ta có, chúng ta có thể truy cập Internet ở một tốc độ lớn hơn hoặc nhỏ hơn. Hiện hành, tốc độ của tất cả các modem là 115200 bps, có nghĩa là hầu hết điều được khuyến cáo là hãy để giá trị ở 115200. Nếu chúng ta cho một modem chậm hơn, thì điều này thường được dò tìm ra và giá trị đó được tự động thiết lập cấu hình khi kết nối.

6. Quay số dạng xung (pulse) hoặc tiếng (tone): hầu hết các điện thoại bây giờ làm việc với quay số dạng tiếng, dù hệ thống quay số cũ dạng xung vẫn còn được sử dụng tại một số vùng hẻo lánh.

7. Số điện thoại: số này cũng sẽ được nhà cung cấp dịch vụ Internet đưa ra.

8. Cổng giao tiếp: cổng giao tiếp là cổng chúng ta kết nối modem qua đó. Nếu chúng ta yêu cầu hệ thống dò tìm modem một cách tự động, thì nó sẽ kiểm tra tất cả các cổng và thiết lập

cấu hình cho chúng một cách tự động. Nếu không, chúng ta có thể vào /dev/ttySX, trong đó

X là 0 cho COM1, 1 cho COM2 …

Tất cả các cấu hình đó thường được lưu trong các tệp nằm trong thư mục /etc/ppp/. Dù cũng có khả năng sửa các tệp đó và thay đổi những chỉ dẫn một cách tự động, được khuyến cáo sử dụng một ứng dụng tự động, vì việc thiết lập cấu hình cho các tệp đó khá là phức tạp. Để thiết lập kết nối với

nhà cung cấp của chúng ta, chúng ta phải khởi tạo daemon bằng cách chạy /etc/init.d/pppstart.

Để dừng, chúng ta có thể sử dụng /etc/init.d/ppp stop.

6.5.5. ADSL và PPPoE

Đường thuê bao số không đối xứng ADSL (Asymmetric Digital Subscriber Line) là một công nghệ giao tiếp làm cho có khả năng truyền các dữ liệu thông qua các cáp điện thoại và truyền hình. Giao tiếp không đối xứng ngụ ý rằng tốc độ theo thời gian tải về và tải lên là khác nhau. Thường thì, tốc độ tải lên là thấp hơn.

ADSL sử dụng một modem cáp hoặc một bộ tập trung phụ thuộc vào phương pháp được nhà cung cấp dịch vụ Internet triển khai. Cả 2 phương pháp đều kết nối các thiết bị tương ứng tới giao diện

Ethernet của máy tính (thường thì, giao diện đầu, là eth0 và đôi khi tới một cổng USB).

Cấu hình lý tưởng cho giao diện Ethernet có thể là trong chế độ DHCP, với cáp của modem cung cấp địa chỉ IP, DNS … khi điều này có nghĩa rằng mọi điều thiết lập cho tự bản thân nó tự động.

Trang 125/232

Giám sát

Với pppconfig, chúng ta có một thực đơn cho phép chúng ta thêm, sửa hoặc xóa các kết nối. Các bước chúng ta chỉ ra ở đây tương ứng với sự tạo ra một kết nối mới.

Page 126: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

PPPoE (Giao thức Điểm - Điểm qua Ethernet [Point-to-Point Protocol over Ethernet]) là một giao thức rất tương tự PPP mà sử dụng một giao diện Ethernet thay vì một modem. Dạng giao thức này từng được một số nhà cung cấp dịch vụ Internet ADSL sử dụng.

Kết nối ADSL thường là một phần của dịch vụ điện thoại. Các tín hiệu (các tín hiệu điện thoại và ADSL) được chia thành một thiết bị gọi là bộ tách (splitter), nó tách chúng thành các dải tần số tương ứng của chúng. Tín hiệu ADSL sau đó đi vào một thiết bị được gọi là một bộ trung tâm được kết nối tới giao diện Ethernet của máy tính với một cáp đôi xoắn, với các đầu kết nối RJ45 hoặc tới một trong các cổng USB của máy tính.

6.5.6. Card âm thanh

Card âm thanh cần một module nhân hệ thống được chèn vào để làm việc phù hợp. Nếu chúng ta đã

cài đặt ứng dụng discover, thì chúng ta có thể phát hiện module nào tương ứng cho card âm thanh

của chúng ta bằng việc sử dụng lệnh discover --modulesound. Chúng ta cũng có thể xác định các

nhà sản xuất và con chip bằng việc sử dụng lệnh lspci | grep audio.

Để cài đặt module đó, chúng ta có thể sử dụng các lệnh insmod hoặc

modprobe, và nếu chúng ta muốn để cho nó được thiết lập cấu hình

vĩnh viễn, thì chúng ta sẽ viết nó vào trong tệp /etc/modules. Dù chúng ta có thể sử dụng rồi card âm thanh phù hợp một khi module tương ứng đã được đưa vào, thì nó thường cũng là phổ biến để cài đặt hạ tầng ALSA (Kiến trúc Âm thanh Linux Tiên tiến - Advanced Linux Sound Architecture). Thông thường, hầu hết các phát tán có kiến trúc này là mặc định; tuy nhiên, nếu không phải vậy, thì có thể nó được cài đặt với gói tương ứng.

Đối với một người sử dụng bình thường có khả năng sử dụng các thiết bị âm thanh, điều cần thiết

đối với người sử dụng đó sẽ là một thành viên của nhóm audio.

addgroup audio user

Điều này sẽ có nghĩa là user sẽ được thêm vào danh sách các thành viên của nhóm người sử dụng

audio trong cấu hình tệp /etc/group.

6.5.7. Máy in

Các máy in có thể được thiết lập cấu hình bằng việc sử dụng nhiều ứng dụng khác nhau trong

GNU/Linux. Dù lpd (Daemon Máy in Dòng - Line Printer Daemon) từng là một trong những chương trình quản lý máy in đầu tiên xuất hiện trong các hệ thống dạng UNIX, thì hiện có khá nhiều chương trình dễ dàng thiết lập cấu hình và quản lý. Chúng ta sẽ thảo luận một số trong những chương trình được sử dụng rộng rãi nhất bên dưới:

• lpd: một trong những daemon in đầu tiên cho các hệ thống dạng UNIX. Nó phải được thiết lập cấu hình bằng tay.

• Ipr: Phiên bản BSD của lpd. Rất được khuyến cáo sử dụng một số dạng bộ lọc tự động như

magicfilter hoặc apsfilter để thiết lập cấu hình cho các máy in. Dạng bộ lọc này tự động dò tìm ra dạng tệp sẽ được in và chuẩn bị việc in phù hợp (nó sử dụng một bộ lọc gọi là IFHP).

Trang 126/232

ALSA

ALSA là một dự án đã phát triển nhiều phần mềm có liên quan tới các ứng dụng xử lý âm thanh, các module mới cho nhân Linux.

Page 127: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

• Lprng: các ứng dụng dựa vào lpr với ưu điểm kết hợp được một công cụ thiết lập cấu hình

gọi là lprngtool, nó làm cho có khả năng thiết lập cấu hình cho máy in dễ dàng với giao diện đồ họa.

• gnulpr: Phiên bản GNU của hệ thống in lpr. Nó cũng kết hợp các công cụ thiết lập cấu hình bằng đồ họa, các công cụ quản lý dịch vụ...

• CUPS: viết tắt của Common UNIX Printing Systmes - Các hệ thống In Chung của UNIX; tập

hợp các ứng dụng này là tương thích với các lệnh lpr và cũng có thể được sử dụng trong các mạng Windows. Nó sử dụng một tập hợp các bộ lọc của riêng nó và hỗ trợ hầu hết các máy in trên thị trường.

Dù tất cả các ứng dụng đó có các phương pháp cấu hình riêng của chúng, thì tất cả đều sử dụng tệp

/etc/printcap để lưu giữ nó. Nói chung, chúng cũng sử dụng một số dạng daemon sao cho hệ thống in sẽ hoạt động được. Daemon có thể được thiết lập cấu hình sao cho máy tính được kết nối tới máy in đó phục vụ như máy chủ in. Theo cách này, những máy tính khác nhau trong cùng một mạng sẽ có khả năng sử dụng cùng một máy in, làm tiết kiệm được các tài nguyên. Đối với các máy trạm in, các chương trình y hệt có thể được sử dụng, chỉ định, trong khi thiết lập cấu hình, mà máy in là ở xa (địa chỉ IP của máy chủ in và hàng đợi in sẽ thường được yêu cầu).

Nếu chúng ta muốn thiết lập cấu hình cho máy chủ in cho các mạng Windows hoặc thiết lập cấu hình cho một máy in của một máy chủ Windows từ một máy trạm GNU/Linux, chúng ta phải sử dụng các

dạng chương trình khác. Samba là một tập hợp các ứng dụng GNU/Linux sử dụng các giao thức của các mạng Windows. Dù có nhiều chức năng hơn ngoài những chức năng thiết lập cấu hình một máy chủ hoặc máy trạm in, để sử dụng các máy in trong Windows chúng ta cần sử dụng tập hợp các

ứng dụng này hoặc những ứng dụng được CUPS cung cấp.

Thiết lập cấu hình an ninh cho máy chủ in

Khi thiết lập cấu hình cho một máy chủ in, điều quan trọng phải xác định máy/người sử dụng nào được phép sử dụng máy in đó. Nếu không, một người sử dụng chống đối có thể lợi dụng chỗ bị tổn thương và lợi dụng các tài nguyên của chúng ta, in hết giấy của máy in...

Trang 127/232

Swat

(Công cụ Quản trị Web của Samba) là một công cụ rất hữu ích cho việc thiết lập cấu hình cho một máy chủ samba.

Page 128: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

7. Daemons và các mức chạy

7.1. Daemons

Như chúng ta đã biết, GNU/Linux cho phép chúng ta chạy bao nhiêu tiến trình tùy ý cùng một lúc, bằng việc chia sẻ thời gian CPU như nhau giữa các tiến trình đó. Trên thực tế, cơ chế cho việc điều hành các tiến trình cũng phải tính tới những gì được biết như là các ngắt. Ngắt là một tín hiệu với được tới nhân của hệ thống từ bất kỳ thiết bị nào mà chúng ta đã cài đặt lên máy tính của chúng ta. Các ngắt thường được kết nối tới một tiến trình nhất định, có nghĩa là nhân phải đánh thức tiến trình đó theo yêu cầu (nếu nó đang không chạy) và tái định tuyến ngắt đó sao cho nó xử lý tiến trình đó một cách phù hợp. Ví dụ về một ngắt là khi chúng ta nhấn phím trên bàn phím hoặc di chuột; khi chúng ta làm thế, thì thiết bị sẽ gửi một tín hiệu phải được tái định tuyến tới đúng ứng dụng sao cho nó được đối xử một cách đúng đắn.

Để điều hành đúng tất cả các ngắt nảy sinh, nhân không thường xuyên nghe các thiết bị trong hệ thống, mà chờ các tín hiệu của chúng. Thay vào đó, hệ thống chạy các hoạt động của các tiến trình trong một hàng đợi thực hiện và chỉ khi ngắt nảy sinh, thì hệ thống can dự vào với thiết bị đã sinh ra ngắt đó. Điều này diễn ra theo cách thức như vậy nhờ vào những khác biệt lớn về tốc độ các thiết bị và CPU của hệ thống. Cách thức mà các ngắt được đối xử là cơ bản cho bất kỳ hệ điều hành nào, vì cơ chế này, cùng với các cơ chế khác, là cơ chế làm cho có khả năng để chạy bao nhiêu tiến trình tùy ý chúng ta muốn và, ngay khi ngắt tới, đánh thức các tiến trình đang chờ nó.

Daemon (giám sát đĩa và sự thực thi - Disk and Excution Monitor) là một tiến trình mà, thông thường, chúng ta đã tải vào bộ nhớ, chờ một số tín hiệu (từ một ngắt trong một thiết bị hoặc bản thân nhân) để đánh thức và thực thi các chức năng được yêu cầu xử lý nó. Dù định nghĩa này cũng có thể áp dụng cho các tiến trình khác trong hệ thống (được người sử dụng hoặc bản thân hệ thống khởi tạo), một daemon cũng có xu hướng chạy theo cách thức này (dù nó không chạy trong một số trường hợp đặc biệt nhất định). Theo cách này, các daemon mà chúng ta đã tải lên không tiếp nhận CPU khi chúng không thực sự cần thiết và chúng ta có thể luôn làm việc được trên máy tính mà không có vấn đề gì bất kể việc chúng ta đã tải lên bao nhiêu tiến trình vào bộ nhớ.

Shell scripts của các daemon

Shell scripts của các daemon không gì hơn là một công cụ tạo thuận lợi cho toàn bộ tiến trình khởi động, tiến trình tắt máy... Trong một số trường hợp, chúng ta cũng có thể sử dụng các cơ chế và tổ chức của các daemon để thực thi những hoạt động nhất định mà chúng ta có quan tâm (viết một shell script thực thi khi một mức chạy xác định được đưa vào).

Dù một daemon sẽ là một tiến trình như bất kỳ tiến trình nào khác chạy ở nền, thì cách mà trong đó chúng ta tổ chức và ứng xử với chúng là khác nhau đối với phần còn lại của các lệnh và chương trình trong hệ thống. Thông thường, tất cả các daemon có một shell script nằm trong thư mục

/etc/init.d/ làm cho có khả năng để khởi động nó, dừng nó hoặc xem tình trạng chạy của nó. Để triển khai một trong những tác vụ đó, chúng ta phải chạy shell script tương ứng với daemon mà chúng ta muốn làm việc, bằng cách chỉ định một số các thông số sau đây:

• start: để khởi động daemon. Nếu nó đang chạy rồi, thì một thông điệp báo lỗi sẽ xuất hiện.

• stop: để dừng daemon. Nếu nó còn chưa chạy, thì một thông điệp báo lỗi sẽ xuất hiện.

Trang 128/232

Page 129: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

• restart: để khởi động lại daemon. Nó được sử dụng để đọc lại các tệp cấu hình.

• reload: dù không phải tất cả các daemon cho phép điều này, thì tham số này có thể được sử dụng để tải lại các tệp cấu hình, mà không phải dừng nó.

Hình 7.1

Hầu hết các script đó sử dụng một chương trình gọi là startstop-daemon được hệ điều hành cung cấp và được sử dụng cho việc điều hành các tiến trình đó. Khi chúng ta đang điều hành một máy chủ, thì chúng ta thường xuyên sẽ phải thiết kế các daemon của chúng ta để triển khai một tác vụ nhất định. Thư mục chứa tất cả các shell script của các daemon cũng thường

chứa một ví dụ của một shell script (/etc/init.d/skeleton) sao cho chúng ta có thể sử dụng nó khi chúng ta cần thiết lập một shell script mới còn chưa có trong phát tán. Chúng thường được lập trình như sau:

#!/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin: /usr/sbin:/usr/bin

DAEMON=/usr/sbin/daemon NAME=daemon DESC="some daemon" test -x $DAEMON || exit 0 set -e

case "$1" in start) echo -n "Starting $DESC: $NAME" start-stop-daemon --start --quiet

--pidfile \ /var/run/$NAME.pid --exec $DAEMON echo "." ;; stop) echo -n "Stopping $DESC:

$NAME " start-stop-daemon --stop --quiet --pidfile \ /var/run/$NAME.pid --exec $DAEMON

echo "." ;; restart|force-reload) echo -n "Restarting $DESC: $NAME" start-stop-daemon

--stop --quiet --pidfile \ /var/run/$NAME.pid --exec $DAEMON sleep 1 start-stop-daemon

--start --quiet --pidfile \ /var/run/$NAME.pid --exec $DAEMON echo "." ;; *)

N=/etc/init.d/$NAME echo " Usage: $N {start|stop| \ restart|force-reload}" >&2

exit 1 ;; esac exit 0

Trang 129/232

Page 130: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Chạy một daemon

Để chạy một daemon, chúng ta phải gọi nó với đường dẫn đầy đủ của nó /etc/init.d/ nameDaemon (tên-

của-Daemon) và vào tham gố theo yêu cầu. Một số phát tán có lệnh service, làm cho có khả năng làm điều y hệt mà không phải chỉ định đường dẫn hoàn chỉnh.

Như chúng ta đã thấy, trong các biến được khai báo ở đầu của shell script, chúng ta phải chỉ định

PATH nào là cần thiết cho việc xử lý daemon đó, chương trình mà chúng ta sẽ chạy (DAEMON), tên mà

chúng ta sẽ trao cho nó (NAME, mà phải là y hệt như tên của shell script) và mô tả của nó (DESC). Điều duy nhất là phần mã nhận diện này làm việc khi khởi động daemon là sẽ ghi một tệp vào trong

thư mục /var/run/ với PID của tiến trình đó. Khi nó dừng, thì PID này sẽ được tìm kiếm và tín hiệu dừng sẽ được gửi tới tiến trình tương ứng. Thông thường, chúng ta sẽ thấy các shell script được chuẩn bị cho việc triển khai nhiều hành động với daemon mà chúng ta sẽ điều khiển, dù, ít nhất, chúng phải tất cả cùng có cấu trúc này.

Lập trình các daemon

Dù các daemon là các chương trình như bất kỳ chương trình nào khác, thì việc lập trình chúng là thứ gì đó khác với việc lập trình các ứng dụng cho người sử dụng vì chúng ta cần đưa vào các chức năng cho việc treo chúng và nhờ chúng chờ các tín hiệu để đánh thức chúng dậy …

7.2. Các mức chạy

Các daemon mà chúng ta có chạy tại một thời điểm xác định, chỉ cho chúng ta các dịch vụ mà hệ điều hành đang đưa ra và/hoặc nhận. Thực tế là chúng ta có thể có quá nhiều daemon khác nhau đồng nghĩa là chúng ta cần tổ chức chúng cho phù hợp. Chúng ta hiểu một mức chạy (hoặc một mức thực thi) như là sự thực thi các daemon nhất định nào đó, mà, tới lượt chúng, đưa ra các dịch vụ nhất định. Khi cài đặt một máy chủ, thường phải thiết kế một cấu hình sao cho các dịch vụ nhất định có thể được đưa ra ở những thời điểm nhất định và không ở vào những thời điểm khác. Để cho phép dạng chức năng này, hệ điều hành đưa ra cho chúng ta các mức chạy khác nhau mà chúng ta có thể áp dụng cho các nhu cầu của chúng ta.

Dù chúng ta có thể thiết lập cấu hình cho số các mức chạy mà chúng ta muốn và các chức năng của từng mức chạy đó, thì các hệ thống dạng UNIX thường đưa ra cho chúng ta 6 mức chạy khác nhau với các thuộc tính sau đây:

Bảng 7.1

Mức chạy Chức năng

0 Mức chạy 0 được cấu hình để dừng hệ thống.

1 Mức này được gọi là người sử dụng duy nhất, khi nó chỉ cho phép người sử dụng gốc root vào hệ thống. Chỉ một số lượng tối thiểu các daemon được khởi tạo và nó được sử dụng cho việc duy trì các tác vụ.

2-5 Các mức chạy từ 2 tới 5 được cấu hình theo các yêu cầu của từng tiến trình cài đặt. Khi cài đặt hệ thống, tất cả chúng đều như nhau, theo mặc định. Những mức đó còn được gọi là các mức đa người sử dụng, theo mặc định, chúng cho phép hơn một người sử dụng làm việc với hệ thống.

6 Mức chạy cuối cùng này được chuẩn bị cho việc khởi động lại hệ thống. Nó rất tương tự với mức chạy 0 nhưng nó có chức năng khởi động lại.

Lệnh cần thiết để thay đổi mức chạy là init (chúng ta vào mức chạy mà chúng ta muốn như một

Trang 130/232

Page 131: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

tham số) và runlevel (mức chạy) có thể được sử dụng để xem mức chạy hiện hành của chúng ta.

Điều duy nhất là các lệnh halt, reboot, shutdown hoặc poweroff thực hiện là để gọi mức chạy 0 hoặc 6 sau khi thực hiện một hoạt động nhất định (xem sách chỉ dẫn để có thêm thông tin). Chỉ người sử dụng home của hệ thống có thể sử dụng tất cả các lệnh đó.

Cách thức ở đó những daemon được tổ chức trong từng mức chạy là rất đơn giản. Mỗi mức chạy có

một thư mục đặt tại /etc/rcX.d/ trong đó X là số của mức. Trong các thư mục đó, chúng ta sẽ thấy

các liên kết biểu tượng tới các shell script của các daemon nằm trong /etc/init.d/, mà chúng ta có thể sử dụng để nói cho hệ thống liệu chúng ta có muốn khởi động hay dừng daemon mà chúng chỉ tới hay không. Tên của bản thân liên kết xác định hoạt động mà chúng ta sẽ thực hiện: nếu liên kết bắt đầu với một ký tự s (khởi động [start]) - chúng ta nói cho hệ thống rằng chúng ta muốn khởi động daemon, trong khi nếu nó bắt đầu bằng một ký tự k (giết [kill]) - chúng ta nói cho hệ thống rằng chúng ta muốn dừng hoặc giết nó. Nếu tên không bắt đầu bằng các ký tự đó, thì hệ thống sẽ không làm gì cả. Sau ký tự đó, một số với 2 chữ số, giữa 00 và 99, phải được đưa vào, để chỉ ra trật tự trong đó chúng phải khởi động hoặc dừng. Trật tự này là quan trọng, vì một số daemon cần các daemon khác phải chạy trước khi chúng có thể khởi động được.

Khi thay đổi mức chạy, hệ thống sẽ xem xét các daemon của thư mục tương ứng và sẽ bắt đầu, trước hết, bằng việc dừng các daemon được chỉ định và sau đó sẽ khởi động những daemon khác.

Điều duy nhất chúng ta làm ở đây là gọi daemon đó bằng việc đưa vào các tham số start hoặc stop sao cho nếu chúng ta dừng bất kỳ daemon nào đang không chạy khi đó, thì sẽ không có vấn đề gì vì bản thân shell script có tính tới điều này. Điều này có thể được sử dụng để thay đổi mức chạy mà không tính tới mức trước đó mà chúng ta đã nằm trong. Bảng sau đây chỉ ra một ví dụ về cách thiết lập cho 3 mức chạy:

Bảng 7.2

Mức chạy 2 Các daemon đang chạy

K50sshdK51apache-sslK52tftpdK53telnet

S10sysklogdS12kerneldS20dhcpdS50proftpdS90apache

sysklogd

kerneld

dhcpd

proftpd

apache

Mức chạy 3

K50dhcpdK51proftpdK52apacheK53tftpdK53telnet

S10sysklogdS12kerneldS20sshdS50apache-ssl

sysklog

kerneld

sshd

apache-ssl

Mức chạy 4

K50dhcpdK51proftpdK52apacheK53tftpdK53telnet

S10syslogdS12kerneldS20tftpdS50telnet

sysklogd

kerneld

tftpd

telnet

Tệp /etc/inittab gồm tất cả các định nghĩa của các cấu hình các mức chạy: mức chạy mặc định, số các bảng điều khiển sẵn sàng cho từng mức chạy đó. Mỗi dòng của tệp là một chỉ lệnh với cú

Trang 131/232

Page 132: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

pháp: <id> :<runlevels> : <action> : <process>. Trường đầu tiên là mã nhận diện của lệnh; trường tiếp sau chỉ mức chạy trong đó chỉ lệnh đó là hợp lệ, hoạt động mà chúng ta sẽ thực hiện và tiến trình mà sẽ được khởi động. Ví dụ sau giải thích cách thiết lập cấu hình cho các chỉ lệnh đó:

# The default runlevel (in this case, 2) id:2:initdefault: # Scripts to be run when the

system boots up (before # entering the default runlevel) si::sysinit:/etc/init.d/rcS #

Program

that is called up when entering runlevel # single user (the wait operation indicates that the

# process is launched and nothing else happens) ~~:S:wait:/sbin/sulogin # Configuration of

the

different runlevels # available in the system l0:0:wait:/etc/init.d/rc 0

l1:1:wait:/etc/init.d/rc

1 l2:2:wait:/etc/init.d/rc 2 l3:3:wait:/etc/init.d/rc 3 l4:4:wait:/etc/init.d/rc 4

l5:5:wait:/etc/init.d/rc 5 l6:6:wait:/etc/init.d/rc 6 # Command that runs when pressing

Ctrl+Alt+Del ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now # Definition of the consoles

open

on each # runlevel (the respawn action indicates # that when the process finishes running #

getty

will launch again) 1:2345:respawn:/sbin/getty 38400 tty1 2:23:respawn:/sbin/getty 38400 tty2

3:23:respawn:/sbin/getty 38400 tty3 4:23:respawn:/sbin/getty 38400 tty4

5:23:respawn:/sbin/getty

38400 tty5 6:23:respawn:/sbin/getty 38400 tty6

Quan sát thấy

Chúng ta cũng có thể sử dụng tệp này để thiết lập cấu hình cho một cửa sổ dòng lệnh giao tiếp với hệ thống

thông qua một modem và máy tính khác với chỉ lệnh T1:23:respawn:/ sbin/mgetty -x0 -s 57600 ttyS1. Theo cách này, chúng ta có thể có một bảng điều khiển của hệ thống trong một cửa sổ dòng lệnh khác, giao tiếp với một đường điện thoại.

Như chúng ta thấy, tệp này được sử dụng để thiết lập cấu hình cho mọi điều có liên quan tới các mức chạy theo một cách thức rất mềm dẻo, nó có nghĩa rằng chúng ta có thể thay đổi bất kỳ thứ gì chúng ta muốn, để áp dụng nó tốt hơn cho các nhu cầu của chúng ta. Hãy lưu ý rằng, dù chúng ta đang xác định mức chạy mặc định ở đây, thì chúng ta cũng có thể chỉ định nó khi khởi động hệ thống với Grub. Điều này là rất hữu dụng, ví dụ, khi chúng ta có những vấn đề nghiêm trọng trong hệ thống mà chúng ta không thể giải quyết được một cách thỏa đáng; nếu chúng ta khởi động với

mức chạy đầu tiên (vào số 1 hoặc single trong Grub), thì chỉ những chức năng cơ bản nhất sẽ tải lên và chúng ta sẽ có khả năng truy cập hệ thống để sửa bất kỳ thứ gì cần thiết.

7.3 Khởi động hệ thống

Tiến trình cha của tất cả các tiến trình khác là init. Tiến trình này có trách nhiệm khởi động những tiến trình khác mà sẵn sàng trong mức chạy được thiết lập cấu hình. Tuy nhiên, trước khi vào mức

chạy này, tất cả các shell script của /etc/rcS.d/ (được thiết lập cấu hình trong /etc/inittab), mà có thể là các daemon giống những daemon của các mức chạy khác hoặc đơn giản là các shell script cần thiết cho hệ thống (tải bảng ký tự, tải các module của nhân...), sẽ chạy. Nếu chúng ta muốn loại bỏ bất kỳ thứ gì trong số chúng, thì chúng ta phải biết chính xác những gì chúng ta đang làm, khi chúng thường là cơ bản đối với hệ điều hành để làm việc một cách đúng đắn. Một khi những daemon đó đã được khởi tạo (hoặc các shell script), thì chúng ta vào một mức chạy được cấu hình

Trang 132/232

Page 133: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

theo mặc định, dừng và bắt đầu các daemon được chỉ định ở đó. Một khi chúng ta đã học được cách mà tất cả điều này được tổ chức, thì chúng ta có thể bắt đầu áp dụng tiến trình khởi động hệ thống vào cho các nhu cầu của chúng ta bằng việc tạo ra và đặt các daemon mà chúng ta muốn vào bất kỳ vị trí nào chúng ta đã thảo luận.

7.4 Các daemon cơ bản

Phụ thuộc vào phát tán GNU/Linux chúng ta sử dụng, tiến trình cài đặt y hệt sẽ thiết lập cấu hình cho những daemon nhất định rồi. Dù vậy, tất cả các phát tán có xu hướng kết hợp daemon cho hệ thống lưu ký và hệ thống lưu ký cho việc chạy thường xuyên và có độ trễ của các ứng dụng (dù các cấu hình của chúng có thể khác nhau đôi chút). Trong phần này, chúng ta sẽ xem xét cách mà 3 daemon cơ bản làm việc và cách mà chúng ta có thể thiết lập cấu hình cho chúng. Điều quan trọng phải biết cách điều hành các daemon cơ bản đó vì chúng có thể giúp chúng ta nhiều với một số các tác vụ quản trị của chúng ta.

7.4.1. Các lưu ký hệ thống (sysklogd)

Các lưu ký hệ thống là các tệp có khả năng theo dõi mà một daemon của hệ điều hành sinh ra sao cho bất kỳ hành động nào được thực hiện trong hệ thống cũng có thể được theo dõi ngược trở lại.

Daemon có trách nhiệm cho các tác vụ đó là sysklogd, nó được thiết lập cấu hình trong

/etc/syslog.conf. Mỗi dòng trong tệp này cấu tạo từ một qui định với 2 trường: bộ chọn và hành động. Bộ chọn được sử dụng để thiết lập cấu hình cho dịch vụ mà chúng ta muốn lưu ký và mức ưu tiên. Hành động được sử dụng để chỉ ra nơi đâu chúng ta muốn tái định tuyến cho các lưu ký đó (tới một tệp, một bảng điều khiển...). Bảng sau đây chỉ ra các lựa chọn là hợp lệ cho các trường đó.

Thông thường, tất cả các tệp lưu ký của hệ thống được lưu giữ trong

thư mục /var/log/. Mặc dù hầu hết các tệp lưu ký ở định dạng văn bản thô và chúng ta có thể thấy chúng với bất kỳ trình soạn thảo nào, thì cũng sẽ có một số tệp lưu ký mà không lưu các dữ liệu theo định

dạng này. Thông thường, chúng là các tệp /var/log/wtmp và

/var/log/btmp, chúng là những lưu ký các khoản của người sử dụng nhập vào trong hệ thống và các khoản không hợp lệ, một cách tương

ứng. Để thấy các tệp đó, chúng ta có thể sử dụng các lệnh last và

lastb. Nếu chúng ta có những lưu ký được thiết lập cấu hình đó trong bất kỳ tệp nào khác, thì chúng ta cũng có thể thấy được chúng bằng

cách vào thuộc tính tệp -f với lệnh last.

Bảng 7.3

Bộ chọn

Dịch vụ Ý nghĩa Ưu tiên Ý nghĩa

authpriv Các thông điệp cho phép hoặc các khía cạnh an ninh. emerg Hệ thống không dùng được

cron Daemon crond và atd. alert Hành động phải được thực hiện ngay lập tức.

daemon Các daemon của hệ thống không có lựa chọn lưu ký. crit Các điều kiện sống còn

ftp Daemon của máy chủ FTP (Giao thức truyền tệp [File Transfer Protocol]).

err Các điều kiện lỗi.

Trang 133/232

klogd

Nhân của hệ thống cũng đưa ra daemon để quản lý các lưu

ký của nó gọi là klogd.

lastlog

Chúng ta cũng có thể thấy các lưu ký các khoản của người sử dụng mới nhất bằng việc sử

dụng lệnh lastlog.

Page 134: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Bộ chọn

Dịch vụ Ý nghĩa Ưu tiên Ý nghĩa

kern Các thông điệp của nhân hệ thống warning Các điều kiện khẩn cấp.

lpr Các thông điệp của hệ thống phụ in ấn notice Các lưu ý thông thường nhưng quan trọng

mail Các thông điệp hệ thống phụ thư (nếu chúng ta đã thiết lập cấu hình cho nó)

info Các thông điệp thông tin

news Các thông điệp hệ thống phụ tin tức (nếu chúng ta đã thiết lập cấu hình cho nó)

debug Các thông điệp gỡ rối lỗi.

syslog Các lưu ký do bản thân daemon syslogd sinh ra

user Các lưu ký của các ứng dụng mức người sử dụng

uucp Các thông điệp được hệ thống UUCP sinh ra (Giao thức sao chép Unix-sang-Unix [Unix-to-Unix Copy Protocol])

local0~7 Để dành cho sử dụng cục bộ

Các dịch vụ và ưu tiên có thể được kết hợp theo ý muốn của chúng ta

Bảng 7.4

Hành động

Đến Giải thích

Tệp thông thường

Đường dẫn hoàn chỉnh của tệp được chỉ định. Nếu chúng ta đặt một dấu gạch ngang (-) ở trước, thì không cần thiết đối với tệp phải được đồng bộ mỗi lần chúng ta ghi lên nó (dù lưu ký sẽ bị mất nếu mất điện).

Đường có tên Hệ thống này làm cho có khả năng tái định tuyến các thông điệp tới một đường được tạo ra trước khi

khởi tạo daemon sysklogd với lệnh mkfifo. Nó được chỉ định bằng việc đặt một ký tự dòng thẳng đứng (|) ở đằng trước tên tệp. Rất hữu dụng đối với các hoạt động gỡ rối lỗi chương trình.

Bảng điều khiển Bằng việc chỉ định /dev/tty trong đó X là số bảng điều khiển hoặc /dev/console, các lưu ký sẽ được tái định tuyến tới màn hình được chỉ định.

Máy ở xa Để chỉ định rằng các lưu ký phải được tái định tuyến tới một máy ở xa, chúng ta phải đặt trước tên của máy ở xa với một biểu tượng @.

Người sử dụng Nếu chúng ta chỉ định tên của người sử dụng hoặc những người sử dụng (cách nhau bằng dấu phẩy), thì các lưu ký tương ứng sẽ được tái định tuyến tới họ.

Người sử dụng trực tuyến

Với một dấu sao (*) chúng ta sẽ chỉ định rằng các lưu ký phải được tái định tuyến tới tất cả những người sử dụng đang ở trong hệ thống khi lưu ký nảy sinh. Điều này được sử dụng để cảnh báo cho những người sử dụng rằng một số hành động sống còn đã xảy ra trong hệ thống.

(Các hành động có thể được đặt vào tất cả các bộ chọn mà chúng ta có thể muốn).

Cách cư xử này của các tệp lưu ký đưa ra nhiều sự mềm dẻo nếu chúng ta muốn thiết lập cấu hình cho chúng khi chúng ta cài đặt một máy chủ, nó là tác vụ rất quan trọng nếu chúng ta cần kiểm soát các khía cạnh mà hầu hết làm chúng ta quan tâm trong hệ thống. Tuy nhiên, nếu chúng ta phải lưu tất cả các lưu ký được sinh ra trong một máy chủ, thì chúng ta có thể nhất định kết thúc bằng việc làm bão hòa đĩa vì kích thước các tệp đó tăng. Để tránh điều này, có một hệ thống xoay vòng các lưu ký, bao gồm việc nén thường xuyên các tệp đó và chỉ lưu những tệp nào từng có cho một giai đoạn nhất định. Dù chúng thường được nén mỗi lần trong tuần và chỉ những tệp lưu ký ngược về một hoặc hai tháng trước sẽ được lưu giữ, thì chúng ta cũng có thể thiết lập cấu hình cho tất cả điều

Trang 134/232

Page 135: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

này bằng việc sử dụng tệp /etc/logrotate.conf. Các lưu ký của các máy chủ và/hoặc các ứng dụng nhất định cũng có thể được thiết lập cấu hình rõ ràng sao cho chúng có thể được kiểm soát một cách đúng đắn. Cấu hình được cá nhân hóa của các lưu ký đối với các ứng dụng thường nằm

trong /etc/logrotate.d/. Về cục bộ, hệ thống sử dụng một số chương trình để điều hành toàn bộ hệ thống lưu ký này theo cách thức tốt hơn. Chúng ta có thể sử dụng trình ghi lưu ký để ghi vào hệ

thống lưu ký của hệ thống. savelog và logrotate cũng có thể được sử dụng để lưu và, như một lựa chọn, nén một số tệp lưu ký mà chúng ta có (với cái sau, chúng ta có thể thiết lập cấu hình cho nhiều lựa chọn hơn so với cái trước). Những lệnh đó cũng có thể được sử dụng để tạo ra những tệp lưu ký của riêng chúng ta hoặc, nếu cần, điều hành các tệp lưu ký hệ thống bằng tay (để có thêm thông tin về cách ứng xử và điều hành các tệp đó, xin xem các sách chỉ dẫn).

Quan sát thấy

Nếu chúng ta muốn thiết lập cấu hình trong hệ thống sao cho chúng ta có thể thấy được tất cả các lưu ký được

sinh ra, thì chúng ta có thể bổ sung thêm dòng *.* /dev/ttySX (trong đó X là bảng điều khiển nơi mà chúng

ta muốn thấy các lưu ký đó) tới tệp /etc/syslog.conf và khởi động lại daemon sysklogd.

Các khía cạnh pháp lý của quản trị

Phụ thuộc vào máy chủ chúng ta đang quản trị, chúng ta phải tính tới hiệu lực pháp lý (theo quốc gia), mà, trong một số trường hợp, đòi hỏi rằng chúng ta giữ lại các tệp có chứa một số dạng lưu ý cho một khoảng thời gian nhất định.

7.4.2. Thực thi thường xuyên (cron)

Nhiều tác vụ quản trị của một máy chủ phải được thực hiện thường xuyên. Cũng có nhiều hành động, như việc cập nhật các lưu ký hoặc các cơ sở dữ liệu nội bộ sử dụng các lệnh nhất định, chúng cần phải được thực hiện thường xuyên đối với hệ thống để làm việc đúng đắn. Vì lý do này, điều rất quan trọng đối với hệ điều hành phải cung cấp cho chúng ta một số dạng công cụ cho việc thiết lập cấu hình cho tất cả các thực thi thường xuyên đó một cách có hiệu quả.

Daemon cron là một công cụ điều hành toàn bộ hệ thống cho tất cả các thực thi thường xuyên đó.

Nó được tổ chức rất đơn giản: tệp /etc/crontab là nơi mà cấu hình nội bộ của daemon này được

lưu giữ; các thư mục /etc/cron.daily/, /etc/cron.weekly/ và /etc/monthly/, có các shell script của các chương trình sẽ chạy hàng ngày, tuần hoặc tháng, một cách tương ứng. Cũng còn có

/etc/cron.d/, nơi mà chúng ta có thể đặt các tệp trong một định dạng đặc biệt cho việc thiết lập cấu hình cho sự thực thi của các chương trình nhất định theo một cách thức mềm dẻo hơn.

Thiết lập cấu hình cho cron

Nhiều ứng dụng của hệ thống đòi hỏi một số dạng cập nhật thường xuyên, thường được thiết lập cấu hình bằng

việc sử dụng cron. Nếu máy tính được bật suốt ngày, thì điều quan trọng phải thiết lập cấu hình cho cron một cách đúng phù hợp, sao cho các hoạt động diễn ra tại một thời điểm mà chúng ta biết máy tính sẽ được bật.

Thường thì chúng ta sẽ thấy các chỉ lệnh sau đây trong /etc/crontab:

SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin: /sbin:/bin:/usr/sbin:/usr/bin #m h dom

mon dow user command 25 6 * * * root test -e /usr/sbin/anacron || run-parts --report

/etc/cron.daily 47 6 * * 7 root test -e /usr/sbin/anacron || run-parts --report

/etc/cron.weekly 52 6 1 * * root test -e /usr/sbin/anacron || run-parts --report

/etc/cron.monthly

Trang 135/232

Page 136: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Định nghĩa của các biến SHELL và PATH, chúng được sử dụng để nói

cho daemon dịch các lệnh sẽ được sử dụng và đường dẫn PATH sẽ thế

nào. 3 dòng sau được hình thành từ các trường: <minute> <hour>

<dayMonth> <month> <dayWeek> <user> <command>. 5 trường đầu chỉ khi nào lệnh tương ứng sẽ chạy (chúng phải mạch lạc) và trường thứ 6 chỉ tài khoản của người sử dụng sẽ được sử dụng để chạy lệnh được chỉ định trong trường cuối cùng. Lưu ý cách trong tệp cấu hình, các lệnh mà chạy một lần trong ngày, một lần trong tuần và một lần trong tháng, có trách nhiệm khởi tạo các shell script nằm trong các thư mục

được chỉ định. Nếu chương trình anacron tồn tại, thì chúng sẽ chạy với

nó; còn nếu không, thì run-parts sẽ được sử dụng, mà, trong khi nó

không có nhiều chức năng như anacron, cũng có thể được sử dụng để chạy tất cả các shell script nằm trong một thư mục nhất định. Cấu hình này là cấu hình cho phép chúng ta có toàn bộ cấu trúc thư mục mà chúng ta đã thảo luận ở trên. Nếu chúng ta muốn, chúng ta có thể thay đổi các chỉ lệnh của tệp này để thích nghi được chúng cho các nhu cầu của chúng ta.

Dù chúng ta cũng có thể sử dụng tệp cấu hình y hệt này cho việc đưa vào các lệnh của riêng chúng ta, sẽ là tốt hơn để sử dụng cấu trúc các thư mục được bản thân daemon đưa ra. Điều duy nhất không xuất hiện

trong cấu hình này là /etc/cron.d/, daemon tính tới một cách tự động rồi. Chúng ta có thể đặt các tệp với cú pháp chính xác y hệt nhau như

/etc/crontab trong thư mục này sao cho để đặt lịch được cho các thực thi được cá nhân hóa. Điều này có nghĩa là chúng ta có toàn bộ sự mềm dẻo. Trong khi được khuyến cáo sử dụng toàn bộ cấu trúc này cho các tác vụ quản trị thường xuyên trong hệ thống, thì chính khi những người sử dụng thiết lập cấu hình cho một số tác vụ thường xuyên, thường xuyên hơn sẽ sử dụng các tệp đặc biệt

cho từng tác vụ. Lệnh crontab có thể được sử dụng để vào các tham số -u USER -e và tệp cấu hình đặc biệt cho người sử dụng được chỉ định sẽ được soạn thảo. Các tệp của người sử dụng đặc biệt sẽ

được lưu trong thư mục /var/spool/cron/crontabs/ (trên thực tế, tệp /etc/crontab là y hệt như tệp đặc biệt của người sử dụng gốc root).

Để hạn chế những người sử dụng nào mà có thể sử dụng daemon này,

chúng ta có thể sửa các tệp /etc/cron.allow và /etc/ cron.deny, nơi mà chúng ta có thể chỉ định, một cách tương ứng, danh sách những

người sử dụng mà chúng ta cho phép sử dụng cron và những người mà chúng ta sẽ không cho phép.

7.4.3. Các thực thi trễ (at và batch)

Dù cron làm cho có khả năng đối với các hoạt động nhất định diễn ra

thường xuyên, theo mỗi chu kỳ thời gian nhất định, thì daemon atd lại làm cho có khả năng để thực thi một lệnh hoặc chạy một ứng dụng tại một thời điểm nhất định. Khi xảy ra với daemon trước đó, chúng ta có

Trang 136/232

Chương trình anacron

Nếu chúng ta cài đặt GNU/Linux lên một máy tính không được bật cả ngày, thì được khuyến cáo cài đặt

chương trình anacron vì nó sẽ chạy các script được thiết lập

cấu hình với cron một cách phù hợp (thậm chí nếu trong những thời điểm khác so với mong đợi).

Cấu hình của các thực thi thường xuyên

Nếu chúng ta sử dụng tệp

/etc/crontab để thiết lập cấu hình cho những thực thi thường xuyên của riêng chúng ta, thì mỗi lần chúng ta sửa đổi nó, chúng ta phải khởi

động lại daemon cron. Điều này sẽ không cần thiết nếu chúng ta sử dụng cấu trúc thư mục của nó.

Quan sát thấy

Lệnh crontab, được sử dụng khi lưu tệp, kiểm tra cú pháp cho đúng.

Tải hệ thống

Tải hệ thống là một tham số nói cho chúng ta số hoạt động đang diễn ra trong máy tính. Chúng ta có thể sử dụng lệnh

top để thấy tải này trong một định dạng tương tác.

Page 137: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

thể thiết lập cấu hình cho những người sử dụng nào có thể sử dụng nó hay không, bằng việc sử

dụng các tệp /etc/at.allow và etc/at.deny. Trong trường hợp này, chúng ta không có một tệp cấu

hình rõ ràng cho daemon, nên chính lệnh at mà chúng ta sử dụng để chỉ định thời điểm tại đó chúng

ta muốn một hoạt động nhất định với cú pháp để xảy ra: at f file TIME (tệp thời gian). Thường thì, tệp đó là một chương trình hoặc shell script được tạo ra từ cùng y hệt người sử dụng đó, nơi mà các chỉ lệnh cần phải được thực thi, được viết. Việc chỉ định TIME có thể là một thủ tục rất phức

tạp, khi mà nó có thể xác định một giờ (HOUR) với định dạng hh:mm, một thời điểm sau thời điểm

thực thi với + XX minutes ... (tất cả các định dạng có khả năng được chỉ định trong sách chỉ dẫn

tương ứng). Với atq chúng ta có thể thấy các hoạt động bị trễ và atrm có thể được sử dụng để xóa bất kỳ hoạt động nào trong hàng đợi. Cuối cùng, nếu chúng ta muốn chạy tất cả các công việc trong

hàng đợi at, thì chúng ta có thể sử dụng lệnh atrun. Điều này cho phép chúng ta vào tham số -l

LOADAVERAGE trong đó LOADAVERAGE phải là một số chỉ ra thời điểm tại đó các lệnh bị trễ có thể thực

thi khi hệ thống đang tải lên. Điều này liên kết trực tiếp với lệnh batch, nó làm chính xác điều y hệt

như at và tuân theo cú pháp y hệt, nhưng với nó chúng ta cần phải chỉ định thời gian thực thi chính xác. Các hoạt động được thiết lập cấu hình trong hàng đợi này sẽ được kết thúc khi tải hệ thống xuống dưới 1.5.

Cơ chế của hàng đợi chạy

Toàn bộ hệ thống của at và batch làm việc với các cơ chế hàng đợi thực thi (mỗi cơ chế cho từng lệnh). Dù chúng ta có thể thiết lập cấu hình xa hơn cho hệ thống, thường thì, chúng sẽ là đủ để triển khai bất kỳ dạng thực thi có độ trễ nào trong hệ thống.

Theo cách này, khi chúng ta cần chạy một lệnh đặc thù tại một thời điểm nhất định, thì chúng ta cần

sử dụng lệnh at, trong khi, đối với các hoạt động khác mà chúng ta muốn thực hiện mà không cần

có chúng làm việc theo cách thông thường của máy tính, thì chúng ta phải sử dụng lệnh batch. Các

thư mục /var/spool/cron/atjobs/ và /var/spool/cron/atspool/ là nơi mà các tệp tương ứng với tất cả các tác vụ có độ trễ được lưu giữ.

Trang 137/232

Page 138: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

8. Cài đặt các ứng dụng

8.1. Giới thiệu

Việc quản lý và điều hành các gói là một khía cạnh cơ bản của bất kỳ phát tán GNU/Linux nào. Một gói là một hoặc nhiều chương trình, thư viện hoặc các thành phần phần mềm được đánh đống vào một tệp duy nhất, nó được chuẩn bị để được cài đặt và được tích hợp vào trong hệ điều hành. Khi thiết kế bất kỳ phát tán nào, điều rất quan trọng phải đưa ra được các công cụ cần thiết cho việc cài đặt và quản lý các gói một cách đúng đắn. Các công cụ cũng sẽ được đưa ra, đặc biệt cho các lập trình viên phần mềm, sao cho các gói mới khác có thể tạo ra được. Những gói đó thường bao gồm những thứ thực thi được của chương trình và những phụ thuộc của nó và các xung đột với các ứng dụng khác. Khi một gói được cài đặt, các phụ thuộc chỉ ra liệu các chương trình khác có cần cho ứng dụng để làm việc đúng hay không, trong khi những xung đột sẽ nói cho chúng ta về bất kỳ sự không tương thích nào giữa các chương trình đã được cài đặt và các chương trình mà chúng ta muốn cài đặt. Các hệ thống gói được thiết kế sao cho những ứng dụng mới có thể được cài đặt dễ dàng, khi mà một số thư viện sẽ được nhiều hơn một chương trình sử dụng và có thể không có ý nghĩa khi có các ứng dụng sử dụng chúng lại cài đặt chúng một lần nữa.

Hiện hành, hầu hết các phát tán sử dụng một trong 2 định dạng gói được sử dụng rộng rãi nhất trong

thế giới GNU/Linux: deb hoặc rpm. Mặt khác, các gói deb là những gói mà phát tán Debian

GNU/Linux sử dụng trong phát tán của mình, trong khi rpm (trình Quản lý Gói của RedHat - RedHat Package Manager) là bẩm sinh đối với RedHat. Các phát tán dựa vào một trong 2 thứ trên thường áp dụng hệ thống gói tương ứng, khi mà đa số lớn các chương trình được đóng gói bằng việc sử dụng các định dạng đó. Mặt khác, các chương trình với một giấy phép GPL hoặc tương tự, cũng thường được phân phối với mã nguồn của chúng (được đóng gói và được nén với một số định dạng tiêu chuẩn, như tar). Chúng ta cũng có thể cài đặt chương trình trong hệ điều hành của chúng ta bằng việc sử dụng mã nguồn này, bằng việc biên dịch nó và đặt những thứ thực thi được vào vị trí tương ứng.

Trong phần này, chúng ta sẽ xem xét cách mà hệ thống gói của phát tán Debian5 được tổ chức nhờ vào số lượng lớn các công cụ được cung cấp và sự mềm dẻo của cấu hình của nó. Trong phần cuối, chúng ta sẽ học cách cài đặt một chương trình có sử dụng mã nguồn của nó, khi mà trong một số trường hợp chúng ta có lẽ thấy rằng chương trình mà chúng ta cần không được đóng gói. Phương pháp cài đặt này từng là một phương pháp mà luôn được sử dụng trước khi các hệ thống đóng gói đầu tiên xuất hiện, nó đã được tạo ra để làm cho toàn bộ qui trình này được dễ dàng hơn.

8.2. Hệ thống đóng gói Debian

Các ứng dụng được sử dụng để điều khiển hệ thống đóng gói Debian GNU/Linux về cơ bản là một

trong 2 dạng: Công cụ Đóng gói Tiên tiến (Advanced Packaging Tool) apt và Gói Debian (Debian

Package) dpkg programs. Tập hợp các ứng dụng apt được sử dụng để thiết lập cấu hình từ những nơi mà chúng ta lấy các gói đó và các gói chúng ta muốn và tập hợp đó giải quyết được bất kỳ sự

phụ thuộc và xung đột nào với các gói khác. Các chương trình dpkg có thể được sử dụng để cài đặt

Trang 138/232

(5) Debian GNU/Linux từng

là phát tán đầu tiên tạo ra một hệ thống gói.

Page 139: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

các gói, thiết lập cấu hình cho chúng, tìm ra những gói nào đã được cài đặt... Có những ứng dụng

khác, như dselect hoặc aptitude, chúng có thể được sử dụng để điều khiển các chương trình apt

và dpkg, đưa ra, trong một môi trường duy nhất, các công cụ tương tác. Mô hình sau đây chỉ ra sơ đồ đó:

Hình 8.1

Các chương trình mà mục đích cuối cùng là cài đặt các ứng dụng thì là các chương trình dpkg.

Những chương trình đó giải nén tệp .deb và cài đặt chương trình. Các ứng dụng apt giúp chúng ta định vị các phiên bản mới nhất của các chương trình mà chúng ta cần. sao chép các tệp từ các nguồn từ đó chúng ta đã trích lọc chúng (FTP, CD-RÓM, Internet...) tới đĩa và kiểm tra bất kỳ sự phụ thuộc và xung đột nào giữa các gói cũ và mới sao cho chúng có thể được cài đặt một cách đúng

đắn. Các ứng dụng apt chính là như sau:

• apt-config: ứng dụng này được sử dụng để thiết lập cấu hình cho một số lựa chọn apt (kiến trúc hệ thống của chúng ta, thư mục nơi mà chúng ta lưu các tệp, …).

• apt-setup: ứng dụng này được sử dụng để thiết lập cấu hình cho các nguồn của các gói (từ đó chúng ta có được chúng).

• Apt-cache: quản lý bộ nhớ cache của các gói (thư mục nơi mà các tệp .deb được lưu giữ trước khi chúng được cài đặt).

• Apt-cdrom: ứng dụng cho việc quản lý các CD-ROM chứa các gói.

• Apt-get: việc cập nhật, cài đặt hoặc tải về các gói.

Toàn bộ cấu hình của apt nằm trong thư mục /etc/apt/. Tệp /etc/apt/sources.list là nơi cấu

Trang 139/232

Page 140: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

hình của các nguồn (các gốc ban đầu) của các gói được lưu giữ. Từ những nguồn này, một danh sách các gói có sẵn được sinh ra, mà chúng ta có thể tư vấn và cài đặt bất kỳ khi nào chúng ta muốn. Thông thường, định dạng của tệp này sử dụng cú pháp sau:

deb http://site.http.org/debian distribution section1 section2 section3 deb-src

http://site.http.org/debian distribution section1 section2 section3

Các chương trình dpkg

Dù các ứng dụng apt cũng có thể được sử dụng để cài đặt các gói, điều duy nhất mà chúng làm là gọi các

chương trình gọi là dpkg.

Trường đầu tiên trong từng dòng chỉ ra dạng tệp mà chúng ta đang

tham chiếu tới: các tệp nhị phân (deb) hoặc mã nguồn (deb-src). Tiếp sau, chúng ta sẽ thấy tham chiếu tới nguồn của các gói, có thể là một

CD-ROM, một địa chỉ Internet... Trường phân phối nói cho apt phiên bản nào của Debian GNU/Linux chúng ta đang sử dụng. Trường này là quan trọng vì mỗi phiên bản của phát tán có các gói của riêng nó. Chúng ta có thể sử dụng các trường cuối cùng để chỉ định các dạng gói nào chúng ta muốn sử dụng.

Nếu chúng ta đã thay đổi tệp này bằng tay, thì chúng ta có thể sử dụng lệnh apt-get update để cập nhật tất cả các gói sẵn có trong hệ thống. Để chèn các gói của một CD-ROM vào trong danh sách

các gói có sẵn, chúng ta có thể sử dụng aptcdrom add, với nó chúng ta có thể khai thác CD được chèn vào và cập nhật danh sách các gói trong hệ thống. Nếu bất kỳ nguồn nào từng có chứa các gói

y hệt như nhau, thì trong cài đặt, bản thân ứng dụng apt sẽ dò tìm ra gói nào trong số các gói đó là gần đây nhất hoặc gói nào có thể mất ít thời gian để tải về nhất và sau đó tải nó về từ nguồn tương

ứng. Bổ sung thêm, chúng ta có thể sử dụng chương trình netselect để thiết lập cấu hình cho toàn bộ hệ thống tải về một cách chi tiết hơn.

Lựa chọn rất thú vị khác mà hầu hết các phát tán đưa ra là việc cập nhật các gói trong đó bất kỳ chỗ bị tổn thương hoặc lỗi nào từng bị phát hiện. Với Debian, tất cả điều chúng ta phải làm là bổ sung

dòng sau vào trong tệp /etc/apt/sources.list:

deb http://security.debian.org/ stable/updates main contrib non-free

Khi các gói sống còn được dò tìm ra, chúng được đặt trong nguồn này, sao cho bằng việc chạy apt-

get update, chúng ta có thể tìm ra những cập nhật mới nào phải được thực hiện trong hệ thống và các gói được yêu cầu có thể được cài đặt lại.

Dù các chương trình dpkg có thể được sử dụng để thay đổi bất kỳ khía cạnh nào của các gói được cài đặt trong hệ thống, hãy tạo các gói mới, sửa đổi các gói được cài đặt …, chúng ta sẽ chỉ xem xét các gói quan trọng nhất ở mức của người sử dụng trong quá trình này, sao cho chúng ta có thể triển

khai tất cả các hoạt động cơ bản. Các chương trình dpkg chính là như sau:

• dpkg-divert: có thể được sử dụng để thiết lập chỗ nơi mà chúng ta sẽ cài đặt một số gói cài đặt trong hệ thống. Rất hữu dụng cho việc tránh các vấn đề với các phụ thuộc.

• dpkg-reconfigure: bản thân gói deb rất thường bao gồm một số cơ chế để thiết lập cấu hình cho một số các lựa chọn ứng dụng một cách tương tác. Với ứng dụng này, chúng ta có thể tái

Trang 140/232

Các gói từ mã nguồn

Các hệ thống gói cũng làm cho có khả năng tạo ra các gói với mã nguồn của các ứng dụng. Nếu tất cả điều chúng ta muốn làm là sử dụng ứng dụng, thì không cần thiết phải tải về các gói mã nguồn.

Page 141: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

cấu hình gói mà chúng ta muốn bằng việc sử dụng các cơ chế y hệt được sử dụng trong khi cài đặt.

• dpkg-scanpackages: chương trình này có thể được sử dụng để quét một thư mục nhất định

của hệ thống mà có chứa các tệp .deb, sao cho một tệp đánh chỉ số được sinh ra. Chúng ta

có thể sử dụng tệp đánh chỉ số này để đưa vào thư mục như một nguồn apt khác. Rất hữu dụng khi chúng ta tải các chương trình không chính thức của phát tán về.

• Dpkg-scansources: đây là một ứng dụng với các chức năng y hệt như ứng dụng trên nhưng cho các gói mã nguồn.

• dpkg-split: chương trình này được sử dụng để đưa ra và hợp nhất một gói trong một loạt các tệp khác nhau.

Với các chương trình đó, chúng ta có thể điều khiển các gói của chúng ta theo bất kỳ cách gì chúng

ta muốn. Ứng dụng chính, dpkg, là ứng dụng mà cho phép chúng ta cài đặt, liệt kê hoặc xóa các gói

trong hệ thống. Để liệt kê các gói có sẵn, chúng ta có thể đưa vào tham số -l mà sẽ chỉ ra một danh sách hoàn chỉnh các gói và tình trạng cài đặt của chúng (được cài đặt, được cài đặt nhưng chưa được thiết lập cấu hình). Nếu chúng ta muốn thấy tất cả các thông tin của một gói nhất định, chúng

ta có thể sử dụng tham số -p theo sau là tên của gói, nó có thể chỉ ra tất cả các phụ thuộc, các xung đột với các gói khác, số phiên bản, mô tả...

Để cài đặt các gói mới, chúng ta có thể sử dụng tham số -i theo sau tên tệp. Nếu có các vấn đề với các phụ thuộc, chúng ta có thể bỏ qua

chúng bằng --ignoredepends=X, trong đó X chỉ sự phụ thuộc, dù chúng ta phải rất cẩn thận với cách thức trong đó chúng ta sử dụng tham số này vì, khi chúng ta bỏ qua các phụ thuộc, thì chương trình được cài đặt có lẽ không làm việc đúng chính xác. Nếu tất cả điều

chúng ta muốn làm là giải nén tệp .deb để thấy nó có chứa gì, chúng ta cũng có thể sử dụng -x. Để

xóa các gói, chúng ta phải vào -r, theo sau là tên gói, nó có thể xóa chúng khỏi hệ thống, nhưng lưu

các tệp cấu hình lại (chúng ta có thể sử dụng -P để xóa mọi thứ).

Tham số rất thú vị khác là --force-things X (trong đó X là một trong những lựa chọn sau), mà có thể giúp chúng ta nếu bất kỳ tình huống nào sau đây phát sinh:

• auto-select: cái này tự động chọn các gói phải được cài đặt hoặc bỏ cài đặt với gói mới mà chúng ta chọn.

• Downgrade: cái này cài đặt gói thậm chí nếu có những phiên bản gần đây hơn của nó.

• Remove-essential: dù gói được xem là cơ bản cho hệ thống, thì cái này sẽ xóa nó.

• depends: cái này không tính tới các phụ thuộc, nhưng cân nhắc chúng như các cảnh báo.

• Depends-version: cái này không tính tới các phụ thuộc của phiên bản các gói.

• conflicts: cái này cài đặt gói, thậm chí nếu nó xung đột với bất kỳ gói nào khác trong hệ thống.

• ...

Trang 141/232

Tiện ích dpkg

Với dpkg, chúng ta cũng có thể sử dụng các mẫu template để chọn, cài đặt, xóa … các gói trong hệ thống.

Page 142: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Dù tất cả các chương trình chúng ta đã thảo luận trong phần này có nhiều lựa chọn và có nhiều chương trình nữa, thì những chương trình chúng ta đã mô tả sẽ là đủ (với hệ thống gói của phát tán mà chúng ta đang sử dụng) để triển khai hầu hết bất kỳ tác vụ nào cần thiết. Dù chúng ta đã nhắc rồi

rằng các chương trình như dselect hoặc aptitude có thể được sử dụng để triển khai các thủ tục cài đặt và xóa trong các gói, thì điều quan trọng để học về các lệnh phù hợp khác vì chúng có thể rất hữu dụng cho việc thực hiện các hoạt động nhất định hoặc tự động hóa các qui trình chọn và cài đặt.

8.3. Biên dịch các chương trình mới

Khi quản trị bất kỳ máy chủ nào, chúng ta có thể sẽ thấy rằng trong một số trường hợp chúng ta phải sử dụng một số chương trình mà phát tán của chúng ta không có hoặc chúng ta cần phiên bản mới nhất của một máy chủ ứng dụng mà còn chưa được đóng gói phù hợp... Trong các trường hợp đó, chúng ta luôn có thể tải về mã nguồn của chương trình và biên dịch nó bằng tay. Điều quan trọng để hiểu sự khác biệt giữa việc biên dịch một chương trình để có được thứ có khả năng thực thi được của nó và việc tải về trực tiếp tệp nhị phân. Khi chúng ta biên dịch một chương trình, điều này sử dụng các thư viện có sẵn trong hệ thống, trong khi nếu chúng ta tải nó về trực tiếp, thì những gì có thể xảy ra nhiều nhất là nó sẽ không làm việc đúng đắn vì nó sẽ cố gắng sử dụng thư viện y hệt mà không là y hệt chính xác như cái được cài đặt trong hệ thống. Vì lý do này, điều được khuyến cáo nhiều nhất phải làm khi chúng ta cần cài đặt một chương trình mới và chúng ta không có gói tương ứng, là biên dịch lại nó.

Khi chúng ta tải các nguồn của một ứng dụng về, chúng ta sẽ có được một tệp từng được đóng gói

và được nén với tar và gzip hoặc thứ gì đó tương tự. Sẽ thường có một tệp bổ sung vào gọi là

README (Hãy đọc tôi), nó giải thích từng bước phải được thực hiện để biên dịch chương trình một cách đúng đắn. Dù việc đọc nó được khuyến cáo, thì trong hầu hết các trường hợp quá trình cài đặt là y hệt.

Điều đầu tiên chúng ta phải làm để biên dịch chương trình mới đó là giải nén nó và trích tách nó khỏi gói đó. Một khi chúng ta đã làm xong điều này, thì chúng ta sẽ có mã nguồn được cấu trúc trong nhiều thư mục khác nhau. Trong gốc root của nó, chúng ta có thể thấy (hoặc không) một tệp

gọi là Makefile. Tệp này nói cho trình biên dịch các thư viện nào được sử dụng, cách mà các tệp

mã nguồn phải được biên dịch … Nếu chúng ta có tệp Makefile đó, thì chúng ta có thể biên dịch

chương trình được rồi bằng việc chạy make. Không cần thiết vào bất kỳ tham số nào vì, một cách

mặc định, nó tìm kiếm tệp makefile và thực hiện các hành động được chỉ định trong đó. Nếu quá trình đó không có thông điệp lỗi nào, thì chúng ta sau đó có thể chuyển thứ có khả năng thực thi được sinh ra đó để đặt nó vào một trong các thư mục của của đường dẫn được thiết lập cấu hình

PATH; bằng việc làm này, chúng ta sẽ không phải viết đường dẫn hoàn chỉnh mỗi lần chúng ta muốn

chạy nó. Nhiều tệp makefiles cũng đưa ra được các chỉ lệnh sao cho chúng ta không phải triển khai

bước cuối cùng. Thông thường, bằng việc chạy make install, chương trình y hệt sẽ có trách nhiệm đặt các tệp nhị phân và các tệp tài liệu, nếu áp dụng được, vào đúng chỗ. Cuối cùng, nếu chúng ta không muốn lưu mã nguồn của chương trình, thì chúng ta có thể xóa tất cả các nội dung của các thư mục mà chúng ta đã tạo ra.

Biên dịch một chương trình

Khi chúng ta biên dịch một chương trình, chúng ta sẽ hầu hết có khả năng phải có các nguồn hoặc các đầu đề của các thư viện sẽ được sử dụng trong hệ thống được cài đặt. Thông thường, các gói đó thường có cùng tên như thư viện, nhưng với một bổ sung “-dev” (nghĩa là viết tắt của phát triển) ở cuối.

Trang 142/232

Page 143: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Thời gian biên dịch

Quá trình biên dịch cho một chương trình có thể mất từ vài giây tới vài giờ, phụ thuộc vào ứng dụng theo yêu cầu. Ví dụ, việc biên dịch nhân Linux sẽ mất đâu đó khoảng từ 5-10 phút tới 2 giờ (phụ thuộc vào phiên bản nhân và sức mạnh của máy tính theo yêu cầu).

Nếu chương trình không kết hợp tệp makefile, thì nó thường đưa vào một số dạng shell script sao cho tệp đó có thể được sinh ra một cách tự động (thông thường, script này thường được gọi là

configure). Khi chúng ta chạy shell script này, thì hệ thống sẽ được kiểm tra để đảm bảo rằng tất cả các thư viện cần thiết cho một sự biên dịch đúng đắn đã được cài đặt và một thông điệp cảnh báo sẽ được sinh ra nếu bất kỳ thư viện nào không hiện diện. Một khi shell script này đã chạy đúng, thì

chúng ta sẽ có một makefile, nó có nghĩa rằng tiến trình mà chúng ta sẽ tuân theo sau đó được mô tả như ở trên. Hình sau đây chỉ cách mà tiến trình đó xảy ra.

Hình 8.2

Trang 143/232

Page 144: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Dù hầu hết mã nguồn của các chương trình được tổ chức như chúng ta đã giải thích ở đây, thì chúng ta có thể đi qua các dạng cài đặt khác. Có một số dạng kết hợp các thực đơn, các môi trường X hoặc các phương pháp khác thân thiện với người sử dụng hơn. Gần đây, có một số ứng dụng làm cho có khả năng triển khai toàn bộ qui trình cài đặt bằng việc tải mã nguồn về trực tiếp từ Internet.

Trang 144/232

Page 145: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

9. Hội thảo về các cấu hình cơ bản

9.1. Giới thiệu

Trong hội thảo 2, chúng ta đã học cách cài đặt một hệ thống cơ bản sao cho, trên cơ sở đó, chúng ta bắt đầu lắp ráp được một hệ thống được tùy chỉnh cho các nhu cầu của chúng ta. Đây sẽ là chủ đề của 2 hội thảo cuối. Trong hội thảo thứ nhất, sau khi chỉ định những khía cạnh nhất định có liên quan tới thiết lập cấu hình cho hệ thống cài đặt gói, chúng ta sẽ thiết lập các nền tảng cần thiết cho việc cài đặt các ứng dụng theo yêu cầu. Chúng ta sau đó sẽ học cách sử dụng các công cụ khác nhau mà Debian cung cấp cho việc quản lý gói, nói cách khác, cách cài đặt, bỏ cài đặt, cập nhật... các ứng dụng và chúng ta sẽ thiết lập cấu hình cho một số ứng dụng thường được sử dụng nhất, cần thiết trong hầu hết các hệ thống dạng UNIX. Hội thảo cuối cùng sẽ đề cập tới hệ thống đồ họa. Trong hội thảo đó, chúng ta sẽ học cách cài đặt, thiết lập cấu hình và tùy chỉnh nó cho những nhu cầu của chúng ta và, cuối cùng, cách cài đặt và sử dụng các ứng dụng làm cho hệ thống có khả năng làm việc được.

9.2. Trình tải khởi động (Bootloader)

Trước hết, chúng ta phải chắc chắn chúng ta cài đặt một hệ thống tải khởi động có khả năng quản lý tất cả các hệ điều hành có thể mà chúng ta đã cài đặt lên máy tính của chúng ta mà không có bất kỳ vấn đề nào. Câu hỏi này từng được đề cập rồi một cách sơ bộ trong hội thảo trước, trong quá trình cài đặt. Nếu chúng ta đã cài đặt rồi trình tải khởi động và đã kiểm tra là nó làm việc đúng, thì chúng ta có thể đi tiếp tới phần tiếp sau; tuy nhiên nếu điều này có vấn đề, nói cách khác, nếu chúng ta cần sao lưu đĩa chúng ta đã tạo ra trong quá trình cài đặt mỗi lần chúng ta muốn khởi động hệ điều hành của chúng ta, thì đã tới lúc để cài đặt một hệ thống quản lý khởi động hoặc trình tải khởi động vào ổ cứng để tránh thủ tục rườm rà phải sử dụng đĩa mỗi lần chúng ta khởi động hệ thống. Trong mọi trường hợp, luôn nằm trong mối quan tâm của chúng ta để cài đặt một trình tải khởi động, khi mà nó sẽ cho phép chúng ta khởi động các nhân khác nhau, và nhiều việc khác nữa.

Như chúng ta đã giải thích, có các trình tải khởi động khác nhau, bao gồm Lilo và Grub. Grub là một trình tải khởi động mạnh từ dự án GNU, mà được biết đến là có khả năng quản lý quá trình khởi động của bất kỳ hệ điều hành nào mà chúng ta cài đặt đúng lên máy tính của chúng ta; dù vậy, việc sử dụng và thiết lập cấu hình cho trình tải khởi động này là thứ gì đó phức tạp.

Trong mọi trường hợp, nếu chúng ta không có một trình tải khởi động và chúng ta muốn cài đặt một cái, thì điều đầu tiên chúng ta phải làm là khởi động hệ điều hành mà chúng ta có và kiểm tra xem

liệu ứng dụng đó được cài đặt hay chưa; để làm điều này, chúng ta có thể sử dụng lệnh man cho ứng dụng đó, ví dụ thế.

9.2.1. Cài đặt Grub

Hiện hành, Grub là trình tải khởi động mặc định. Trong mọi trường hợp, nếu chúng ta cần cài lại nó, thì chúng ta nên đọc phần tiếp sau để học về hệ thống quản lý gói, cấu hình của nó và cách sử dụng nó; hoặc, đơn giản, nếu chúng ta đã vào được các nội dung của tất cả các đĩa CD/DVD trong cơ sở dữ liệu khi cài đặt hoặc chúng ta đã quyết định triển khai cài đặt có sử dụng Internet, thì chúng ta sẽ chạy dòng sau:

Trang 145/232

Page 146: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

brau:~# apt-get install grub grub-doc

Nếu chúng ta không muốn cài gói tài liệu, thì chúng ta có thể làm mờ tham số cuối từ dòng ở trên.

Một cách khuyến cáo làm việc với Grub, là hãy sử dụng, trước khi viết vào MRB, các kiểm thử chúng ta nghĩ có thể phù hợp cho đĩa và kiểm tra xem nó có làm việc đúng hay không khi khởi động

từ nó. Để làm điều này, chúng ta phải sao chép các tệp cần thiết trong /boot/:

brau:~# cp /usr/lib/grub/i386-pc/stage* /boot/ brau:~# cp

/usr/share/doc/grub/examples/menu.lst

/boot/

Một khi chúng ta đã làm xong điều này, chúng ta sẽ sửa tệp cấu hình của Grub, /boot/menu.lst, và chúng ta sẽ chỉnh nó cho các nhu cầu của chúng ta. Hoạt động này có thể là thứ gì đó phức tạp vì, trong số nhiều yếu tố khác, là sự thay đổi thuật ngữ ở những nơi mà các đĩa cứng được quan tâm; vì

thế, để xác định thiết bị trong đó một tệp nhất định hiện diện, chúng ta có thể sử dụng lệnh find,

một khi chúng ta đã vào được chế độ lệnh của Grub, bằng việc sử dụng grub. Vì thế, ví dụ, nếu chúng ta muốn tìm kiếm một tệp, vị trí an ninh của nó chúng ta sẽ phải chỉ định trong tệp cấu hình

của Grub, như /vmlinuz, chúng ta nên xử lý như sau:

brau:~# grub GRUB version 0.91 (640K lower / 3072K upper memory) [ Minimal BASH-like line

editing is supported. For the first word, TAB lists possible command completions. Anywhere

else TAB lists the possible completions of a device/filename. ] grub> find /vmlinuz (hd2,0)

Grub có nhiều lệnh hơn nữa, để có một danh sách một số lệnh, đơn giản hãy nhấn phím Tab trong dòng lệnh để có được thứ sau:

grub> Possible commands are: blocklist boot cat chainloader cmp color configfile deb ug

device displayapm displaymem embed find fstest geometry halt help hide impsp robe initrd

install ioprobe kernel lock makeactive map md5crypt module moduleno unzip partnew parttype

password pause quit read reboot root rootnoverify savede fault serial setkey setup terminal

testload testvbe unhide uppermem vbeprobe grub>

Để có được trợ giúp về bất kỳ lệnh nhất định nào, tất cả điều chúng ta phải làm là vào help trên bàn

phím theo sau tên của lệnh. Một cách làm việc tốt trong tệp cấu hình của Grub, /boot/menu.lst là mở một phiên mới trong một cửa số dòng lệnh tty khác và dần dần sửa tệp đó khi chúng ta đang làm việc với giao diện lệnh của Grub.

Một khi chúng ta đã hoàn tất sửa đổi tệp cấu hình, và đã đưa một đĩa trống vào trong ổ đĩa, thì chúng ta sẽ sử dụng bàn phím để gõ trong lệnh đó, thay X bằng số của đĩa cứng, và Y bằng phân vùng tương ứng với dòng lệnh sau:

grub> install (hdX,Y)/boot/stage1 d (fd0) (hdX,Y)/boot/stage2 p (hdX,Y)/boot/menu.lst

Với dòng trước, chúng ta đã truyền thông tin của MRB (stage1), Grub và giao diện dòng lệnh của

nó (stage2) và thực đơn khởi động (/boot/menu.lst) mà chúng ta đã thiết lập cấu hình trong tệp

cho đĩa (fd0). Chúng ta sau đó sẽ có khả năng khởi động lại máy, khởi động bằng việc sử dụng đĩa mà chúng ta vừa tạo ra và kiểm tra xem liệu cấu hình của chúng ta có đúng hay không.

Rất thú vị để có một đĩa mềm Grub, vì, khi sử dụng giao diện dòng lệnh, chúng ta có thể thử khởi động các hệ điều hành khác được cài đặt trong máy tính một cách trực tiếp, sao cho để thực hiện các

Trang 146/232

Page 147: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

kiểm thử để gỡ rối cho các nội dung của tệp /boot/menu.lst. Như một ví dụ, thủ tục mà phải được

tuân theo để khởi động một hệ thống của Microsoft được cài đặt như một (hd0,0) được giải thích ở đây và chúng ta sau đó sẽ thảo luận về các lệnh cần thiết để khởi động một hệ thống GNU/Linux

được cài đặt như là (hd1,0):

Đối với một hệ thống của Microsoft:

grub> rootnoverify (hd0,0) grub> makeactive grub> chainloader +1 grub> boot

Đối với một hệ thống GNU/Linux:

grub> kernel (hd1,0)/vmlinuz root=/dev/hdc1 grub> boot

Một khi chúng ta có được trình tải khởi động mà chúng ta muốn triển khai trong đĩa mềm của chúng ta, thì tất cả điều chúng ta phải làm là truyền cấu hình y hệt đó tới MBR của đĩa cứng khởi động; bằng việc sử dụng y hệt dòng lệnh của đĩa mềm, chúng ta sẽ gõ vào:

grub> install (hdX,Y)/boot/stage1 d (hd0,0) \ (hdX,Y)/boot/stage2 p (hdX,Y)/boot/menu.lst

Như chúng ta đã thấy, việc sử dụng Grub là thứ gì đó phức tạp, nó giải thích vì sao chúng tôi nghĩ

rất được khuyến cáo phải đọc các tệp chỉ dẫn man và các tài liệu đã được cài đặt với gói Grub-doc, mà cũng có thể được thấy tại http://www.gnu.org/software/grub/sto, trước khi định cài đặt và thiết lập cấu hình cho nó.

9.3. Hệ thống gói

Bây giờ chúng ta sẽ phân tích và học cách sử dụng hệ thống gói Debian, có thể là cứng cỏi và đáng tin cậy nhất đối với các hệ thống gói đang tồn tại trên thế giới của GNU.

Trong các phần sau, chúng tôi sẽ học cách thiết lập cấu hình cho cơ sở dữ liệu của nó, cách sử dụng nó, cài đặt các gói khác nhau, cập nhật nó … Thường có nhiều cách thức khác nhau để đạt được cùng kết quả. Một số phương pháp đó sẽ được giải thích ở đây, với 2 chủ đề chính: cái đầu là cho các độc giả có khả năng để chọn chủ đề nào họ muốn sử dụng, và cái thứ 2 là cho các độc giả để biết luôn có hơn một giải pháp cho cùng một vấn đề, trong trường hợp có bất kỳ phương pháp nào không làm việc.

Hoạt động

9.1 Để có sự hiểu biết toàn diện về cách mà hệ thống gói của Debian làm việc, chúng tôi khuyến cáo đọc: • APT HOWTO: http://www.de.debian.org/doc/manuals/apt-howto/index.en.html• http://www.de.debian.org/doc/manuals/ debian-faq/ch-pkg basics.en.html

• http://www.de.debian.org/doc/manuals/ debian-faq/ch-pkgtools.en.html

• Sách chỉ dẫn về: apt, apt-cache, apt-get, sources.list, dpkg và dselect.

Để làm cho việc đọc được dễ dàng hơn, chúng ta có thể chờ cho tới khi chúng ta đã thiết lập cấu hình cho máy in và học được cách in sách chỉ dẫn.

9.3.1. /etc/apt/sources.list

Tệp /etc/apt/sources.list là cốt lõi của cấu hình hệ thống gói của Debian. Vì nó là một tệp văn bản, giống như hầu hết các tệp cấu hình trong các hệ thống dạng UNIX, nên chúng ta có thể sửa đổi nó bằng tay hoặc sử dụng một số công cụ mà hệ thống có cho mục đích này. Nội dung của tệp này sẽ phụ thuộc ở mức độ nào đó vào tốc độ của kết nối Internet, giả thiết chúng ta có một kết nối. Tuy

Trang 147/232

Page 148: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

nhiên, chúng ta không bao giờ quên chạy lệnh sau như là gốc root, một khi chúng ta đã sửa tệp đó:

brau:/etc/apt# apt-get update

Nếu chúng ta sao nhãng làm điều này, thì cơ sở dữ liệu của hệ thống gói có thể không được cập nhật và vì thế, không sự thay đổi nào chúng ta đã làm có thể có được bất kỳ tác động nào. Trong một cài đặt trong đó các gói có được từ xa, thì lệnh này phải được chạy thường xuyên, sao cho cơ sở dữ liệu

luôn được cập nhật; vì lý do này, không phải là ý tưởng tồi để đưa nó vào trong cron system.

Mỗi dòng của tệp này tham chiếu tới một nguồn các gói và các trường được tách biệt nhau bằng

một dấu trống. Trước hết, chúng ta phải chỉ định xem liệu nguồn đó là các gói nhị phân deb hay nếu

nó là mã nguồn deb-src. Trường thứ 2 được sử dụng để chỉ cách mà những gói đó được truy cập:

CD-ROMs, http, ftp … theo sau địa chỉ đó. Các trường còn lại tham chiếu tới dạng các gói mà chúng ta muốn truy cập bằng việc sử dụng dòng này.

Trong trường hợp lý tưởng nhất, chúng ta sẽ có một kết nối nhanh tới Internet. Điều này sẽ có khả năng cho phép chúng ta triển khai cài đặt hệ thống cơ bản bằng việc sử dụng Internet, cũng như cung cấp cho chúng ta những phiên bản mới nhất của các gói. Bổ sung thêm, cách làm việc thuận tiện nhất với các gói, thậm chí đối với chúng ta là không phải lo lắng về việc chèn đĩa CD đúng để triển khai công việc cài đặt.

Tuy nhiên, những gì chúng ta phải làm, trước khi làm bất kỳ thứ gì, là phải đảm bảo rằng nội dung

của /etc/apt/sources.list là đúng, ví dụ:

deb http://ftp2.de.debian.org/debian/ stable main non-free contrib deb-src

http://ftp2.de.debian.org/debian/ stable main non-free \ contrib deb

http://non-us.debian.org/debian-non-US stable/non-US main \ contrib non-free deb-src

http://non-us.debian.org/debian-non-US stable/non-US main \ contrib non-free deb

http://security.debian.org/ stable/updates main contrib non-free

Tất cả các địa chỉ được đưa ra ở trên là chính thức; nói cách khác, chúng được Debian thừa nhận. Ngoài các nguồn đó ra, chúng ta cũng có thể sử dụng các gói không chính thức, chỉ vì chúng là không chính thức không có nghĩa là chất lượng của chúng không đủ tốt để đưa chúng vào trong tệp cấu hình. Một địa chỉ tốt nơi mà thông tin về vị trí của các gói có thể thấy là http://www.aptget.org.

Một khi chúng ta đã sửa và lưu tệp đó, chúng ta nên chạy lệnh apt-get update; sau một lát, trong lúc hệ thống gói nhận biết được cơ sở dữ liệu của nó và hiển thị các truy cập khác nhau được thực hiện trên màn hình, chúng ta sẽ có được sự truy cập tới các gói mới.

Nếu chúng ta không có một kết nối Internet hoặc một kết nối mà chúng ta có lại quá chậm, thì chúng ta sẽ không ngại sử dụng tập hợp các đĩa CD/DVD của phát tán để cài đặt các gói khác. Nếu chúng ta không chèn các CD và DVD vào trong quá trình cài đặt cho tới thời điểm đó, thì bây giờ là

lúc để làm thế. Chúng ta sẽ chèn đĩa CD-ROM/DVD đầu tiên vào ổ đọc và sử dụng lệnh apt-cdrom

add để đưa nội dung của nó vào trong cơ sở dữ liệu.

brau:/etc/apt# apt-cdrom add Using CD-ROM mount point /CD-ROM/ . . . Repeat this process for

the rest of the CD in your set.

Đạt được tới điểm này, chúng ta sẽ lặp lại y hệt tiến trình cho từng và mỗi đĩa CD/DVD của phát tán. Có khả năng, chúng ta có thể sử dụng một số thủ tục để kết hợp các dữ liệu từ các đĩa CD/DVD không chính thức. Một khi chúng ta đã thiết lập được cấu hình cho kết nối Internet của chúng ta, nếu cần, chúng ta có thể đưa vào các nguồn của các gói truy cập ở xa. Để làm điều này, chúng ta sẽ

Trang 148/232

Page 149: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

sửa tệp gọi là /etc/apt/sources.list và sau đó chạy apt-get update, để có được các gói mới.

9.3.2. apts sẵn sàng

apt là viết tắt từ chữ Công cụ đóng Gói Tiên tiên (Advanced Package Tool), mà, như chúng ta đã thảo luận trong nhiều trường hợp, là hệ thống cơ bản có trách nhiệm quản trị các gói của các phát

tán dựa vào Debian. apt về cơ bản đưa ra cho chúng ta 2 công cụ: apt-get và apt-cache. Lệnh đầu tiên chỉ có thể được người sử dụng gốc root của hệ thống sử dụng, là công cụ quản lý gói: việc cài đặt, bỏ cài đặt, cập nhật …; trong khi, lệnh thứ 2, là lệnh được sử dụng để tìm thông tin trong cơ sở dữ liệu, dù nó có liên quan tới các gói được cài đặt hay các gói còn chưa được cài đặt, có thể được những người sử dụng khác sử dụng. Để quản lý dễ dàng hơn các gói, các ứng dụng khác đã được

phát triển; chúng chạy ở một mức trên apt, như mức giữa dpkg hoặc mức giao diện mặt tiền (front-

end) aptitude. Nhưng trước khi xem xét các hệ thống quản lý gói khác nhau, chúng ta nên học một số khái niệm về các hệ thống đó và cách mà hệ thống đó và hệ thống quản lý có liên quan tới nhau.

Các dạng gói, theo ưu tiên của chúng

Trong hệ thống gói, có 5 dạng gói khác nhau, được xác định theo mức độ phụ thuộc vào bản thân hệ thống. Theo thứ tự ưu tiên giảm dần, chúng được phân loại như sau:

• Required (Được yêu cầu). Chúng là các gói cơ bản cho bản thân hệ thống để làm việc đúng.

• Important (Quan trọng). Chúng là các gói hiện diện trong bất kỳ hệ thống dạng UNIX nào.

• Standard (Tiêu chuẩn). Có các gói được thấy phố biến trong một hệ thống GNU/Linux. Thường thì, chúng là các ứng dụng nhỏ, không là cơ bản cho hệ thống.

• Optional (Tùy chọn). Có những gói có thể có hoặc không trong một hệ thống GNU/Linux. Trong số chúng, nhóm này bao gồm tất cả các gói tham chiếu tới hệ thống đồ họa, khi mà nó không được xem là cơ bản. Trong thực tế, trong nhiều máy chủ, môi trường đồ họa bị bỏ ra, với quan điểm làm tăng các mức hiệu năng của hệ thống.

• Extra (Phụ thêm). Chúng là các gói hoặc thể hiện những xung đột với các gói với một mức ưu tiên cao hơn hoặc đòi hỏi các cấu hình đặc biệt mà trả về không thích hợp cho việc tích hợp chúng như là các gói tùy chọn.

Chúng ta có thể xác định nhóm nào một gói đặc thù thuộc về, bằng việc sử dụng, ví dụ, câu apt-

ache show <tên của gói> và kiểm tra các nội dung của trường ưu tiên (Priority).

Mức độ phụ thuộc giữa

• depends (phụ thuộc). Gói mà chúng ta muốn cài đặt phụ thuộc vào những gói đó và, do đó,

nếu chúng ta muốn gói này làm việc đúng, chúng ta phải cho phép apt cài đặt phần còn lại của chúng.

• recommends (khuyến cáo). Người có trách nhiệm duy trì gói đã quyết định rằng những người sử dụng đó sắp cài đặt gói này cũng sẽ thường sử dụng các gói được khuyến cáo.

• suggests (gợi ý). Các gói được gợi ý là để làm cho có khả năng có được một hiệu năng tốt hơn so với thứ có được từ gói mà chúng ta đã định cài đặt.

Trang 149/232

Page 150: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

• conflicts (xung đột). Gói mà chúng ta sẽ cài đặt sẽ không làm việc đúng nếu các gói khác của chúng được cài đặt trong hệ thống.

• replaces (thay thế). Cài đặt gói này có nghĩa là việc bỏ cài đặt các gói khác.

• provides (cung cấp). Gói mà chúng ta sẽ cài kết hợp tất cả các nội dung của các gói được nêu ở trên.

Chúng ta có thể xác định các phụ thuộc của một gói với, ví dụ, câu apt-cache depends <tên gói>.

Các hành động được thực hiện trong các gói

Sử dụng các cờ dpkg hoặc dselect, chúng ta sẽ có được thông tin về những gì người sử dụng định làm với các gói đó.

• Unknown. Chưa từng có tham chiếu nào được thực hiện đối với gói theo yêu cầu.

• install. Gói phải được cài đặt hoặc cập nhật.

• remove. Gói sẽ được bỏ cài đặt, nhưng không xóa các tệp cấu hình của nó (mà thường nằm

trong /etc/).

• purge. Gói sẽ được bỏ cài đặt hoàn toàn, và các tệp cấu hình được xóa.

• hold. Cái này được sử dụng để chỉ rằng không hoạt động nào sẽ được thực hiện trong gói này (nói cách khác, phiên bản và cấu hình của nó sẽ được duy trì cho tới khi một hoạt động như vậy được ra lệnh chắc chắn).

Tình trạng cài đặt gói

Trong hệ thống gói, chúng ta sẽ thấy:

• installed (được cài đặt). Gói được cài đặt và thiết lập cấu hình đúng.

• half-installed (được cài đặt một nửa). Cài đặt gói đã bắt đầu nhưng, vì một số lý do nó đã không được hoàn tất.

• not-installed (không được cài đặt). Gói không được cài đặt trong hệ thống.

• unpacked (không được đóng gói). Gói được mở gói, nhưng không được thiết lập cấu hình.

• config-files (cấu hình - các tệp). Chỉ các tệp cấu hình gói theo yêu cầu có trong hệ thống.

apt-cache

Như chúng tôi đã lưu ý, apt-cache là một lệnh được sử dụng để phân tích hệ thống gói và, vì thế, khi nó không tiềm tàng nguy hiểm đối với hệ thống, thì tất cả những người sử dụng có thể truy cập nó. Các tham số thường được sử dụng nhất cho lệnh này là như sau:

• search pattern (tìm kiếm mẫu). Cái này tìm kiếm cơ sở dữ liệu cho các gói mà tên của chúng gồm mẫu hoặc các gói có chứa mẫu từ trong mô tả của chúng (nếu kết quả là một danh sách rất dài, biết rằng các mẫu là rất phổ biến, thì chúng ta có thể sử dụng các đường

(pipe) và grep

• show package (trình bày gói). Đưa ra thông tin về gói.

Trang 150/232

Page 151: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

• policy package (gói chính sách). Đưa ra thông tin về tình trạng cài đặt, số phiên bản và hiệu đính của gói, cũng như bản gốc của nó.

• depends package (các phụ thuộc gói). Cái này liệt kê các phụ thuộc gói.

• show package (trình bày gói). Nó chỉ các phụ thuộc trực tiếp và ngược trở lại của gói.

apt-get

apt-get là lệnh được sử dụng để quản lý các gói của hệ thống. Điều này giải thích vì sao nó có thể chỉ được người sử dụng gốc root của hệ thống sử dụng. Các tham số thường được sử dụng nhất cho lệnh này là như sau:

• install package (cài đặt gói). Cái này cài đặt gói. Nếu cái này phụ thuộc vào các gói

không tìm thấy được trong hệ thống, thì apt sẽ báo cáo điều này cho chúng ta và sẽ hỏi liệu chúng ta có muốn cài đặt các gói mà cái gói chúng ta muốn cài đặt phụ thuộc vào và chưa được cài đặt, cùng một lúc; thường thì, mối quan tâm của chúng ta tuân theo tư vấn được

apt cung cấp.

• update (cập nhật). Cái này cập nhật cơ sở dữ liệu apt. Lệnh này phải chạy mỗi lần tệp được

sửa đổi. /etc/apt/sources.list.

• upgrade (nâng cấp). Ép việc nâng cấp các gói được cài đặt vào phiên bản mới nhất đang có.

• remove package (loại bỏ gói). Cái này xóa gói nhưng không xóa các tệp cấu hình, trong trường hợp bất kỳ sự cài đặt lại nào cũng cần phải được thực hiện.

• remove -purge package (loại bỏ - thanh lọc gói). Cái này xóa gói hoàn toàn, bao gồm cả các tệp cấu hình tương ứng.

• clean (làm sạch). Cái này loại bỏ các bản sao của các gói đã hết hạn từng được lần lượt cài đặt dần; trong tiến trình này, một bản sao gói được mở được lưu giữ một cách tự động trong

/var/cache/apt/archives bất kỳ khi nào một gói được cài đặt. Đây là một lệnh rất hữu dụng cho việc giải phóng không gian trên ổ đĩa mà các tệp chiếm giữ mà, rất có thể, sẽ không bao giờ được sử dụng lại.

• autoclean (tự động làm sạch). Cái này loại bỏ tất cả các bản sao các gói không được mở gói, bất chấp ngày tháng hết hạn.

9.3.3. dpkg

dpkg là viết tắt của trình Quản lý Gói Debian (Debian Package Manager) và nó từng được hiểu như

là một cơ sở của apt. Các tham số được sử dụng phổ biến nhất là như sau:

• -l. Để liệt kê các gói trong cơ sở dữ liệu và tình trạng cài đặt của chúng (lựa chọn này thường được kết hợp với grep).

• -L package. Để liệt kê các tệp có trong gói.

• -r package. Cái này có cùng tác dụng như apt-get remove package.

Trang 151/232

Page 152: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

• -P package. Cái này có cùng tác dụng như apt-get remove -purge package.

• -p package. Cái này có cùng tác dụng như apt-get show package.

• -s package. Mô tả tình trạng cài đặt gói.

• -S file. Tìm kiếm các gói mà tệp thuộc về.

9.3.4. dselect

dselect là một giao diện đồ họa người sử dụng GUI (Graphical User Interface) chạy trong apt. Để

vào nó, tất cả điều chúng ta phải làm là gõ vào lệnh dselect và, bằng việc sử dụng thực đơn giao diện, đi chọn các gói khác mà chúng ta muốn vận hành và chỉ định dạng hoạt động mà chúng ta muốn triển khai.

9.3.5. aptitude

aptitude là GUI khác chạy trên apt, Nó không được cài đặt một cách mặc định, nghĩa là chúng ta phải cài đặt nó trước khi chúng ta có thể sử dụng nó.

brau:/etc/apt# apt-get install aptitude

Một khi nó được cài đặt, thì chúng ta có thể khởi động nó bằng việc sử dụng lệnh aptitude và chúng ta sẽ ngay lập tức thấy rằng việc sử dụng nó chỉ đơn giản như hoặc thậm chí còn đơn giản

hơn việc sử dụng dselect, vì nó có thực đơn kéo thả có thể được gọi lên bằng việc nhấn phím F10.

9.4. locals: cấu hình vùng miền

Dù có thể xảy ra rằng bàn phím của chúng ta đang làm việc đúng, như khi chúng ta có thể sử dụng các dấu trọng âm, các hiện tượng biến âm sắc và các ký tự khác không phải tiếng Anh, như khi chúng ta tùy biến thích nghi hệ thống cho các nhu cầu của chúng ta, và đặc biệt khi chúng ta muốn cài đặt giao diện đồ họa và làm cho các ứng dụng chạy trong nó, như khi chúng ta sẽ có trong thảo luận tiếp sau, chúng ta sẽ quan sát thấy rằng điều này không phải thế. Tại thời điểm này, chúng ta có thể xử lý để thiết lập cấu hình cho các khía cạnh đó đúng sao cho không phải làm thế sau này.

Trước hết, chúng ta nên kiểm tra xem liệu gói locales đã có được cài đặt hay chưa:

brau:/# dpkg -l| grep locales ii locales 2.2.5-11.2 GNU C Library: National Language (locale)

results in

Nếu không có dòng cuối đó, thì chúng ta phải xử lý để cài đặt và thiết lập cấu hình cho gói đó:

brau:/# apt-get install locales

Và nếu có nó rồi, thì chúng ta nên gõ vào dòng sau để thiết lập cấu hình lại cho nó:

brau:/# dpkg-reconfigure locales

Trong số nhiều lựa chọn mà chúng ta đưa ra, chúng ta chọn [*] es ES UTF8, nói cách khác, chúng ta

nhấn mạnh lựa chọn và nhấn thanh ký tự trống (space bar). Chúng ta sử dụng phím Tab để tới OK và nhấn phím Enter. Trong màn hình tiếp sau, chúng ta chọn C. Quay về trong dòng lệnh đó, chúng ta

Trang 152/232

Page 153: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

sửa tệp /etc/environment sao cho nó nằm lại như sau:

LC_ALL=es_ES LANGUAGE=en_US LC_TYPE=es_ES LC_MESSAGES=UTF8 LANG=C

Để làm cho sự thay đổi có hiệu lực, tất cả điều chúng ta phải làm là gõ vào lệnh locale-gen và chúng ta sẽ ra khỏi tất cả các phiên mà chúng ta có thể đã mở để tải lên cấu hình mới.

9.5. Tệp khởi động chính, /etc/inittab

Dù tiến trình cho việc khởi động một hệ thống GNU/Linux là phức tạp, thì phần này chỉ làm việc trong một trong những tệp chính của tiến

trình này: /etc/inittab. Trong tiến trình khởi động, tệp này chỉ ra, trong số các yếu tố khác, mức chạy ở đó chúng ta sẽ bắt đầu và xác định các tiến trình sẽ khởi tạo tự động trong lúc khởi động thủ tục. Để biết mức chạy nào chúng ta đang ở trong, tất cả điều chúng ta phải làm

là gõ vào lệnh runlevel. Để thay đổi mức chạy, về home, chúng ta sử

dụng lệnh init <mức chạy đích>.

Thú vị để mở tệp này và làm quen với các nội dung của nó, khi mà điều này sẽ đưa ra cho chúng ta một sự hiểu biết tốt hơn về tiến trình cho việc khởi động một hệ thống GNU/Linux.

9.6. Lắp các thiết bị, /etc/fstab

/etc/fstab là tệp chứa thông tin về các phân vùng và thiết bị sẽ được thiết lập tự động trong quá trình khởi động và những thứ có thể được thiết lập sau đó, cũng như thông tin về việc ai sẽ được phép triển khai các thủ tục đó. Chúng ta bây giờ sẽ chỉ ra các nội dung có khả năng của tệp này và phân tích chúng.

# /etc/fstab: static file system information. # # <file system> <mount point> <type>

<options> <dump> <pass> /dev/hdg1 / ext3 errors=remount-ro 0 1 /dev/hdg2

none swap sw 0 0 proc /proc proc defaults 0 0 /dev/fd0 /floppy auto user,noauto 0 0 /dev/hdg5

/usr ext3 defaults 0 2 /dev/hdg6 /var ext3 defaults 0 2 /dev/hdg7 /home ext3 defaults 0 2

/dev/CD-ROM /CD-ROM iso9660 ro,user,noauto 0 0 /dev/hdc1 /mnt/hdc1 ntfs ro,user,noauto,

gid=windows,umask=0007,utf8 0 0 /dev/hde1 /mnt/hde1 ntfs ro,user,noauto,gid=windows,

umask=0007,utf8 0 0 /dev/hde5 /mnt/hde5 ntfs ro,user,noauto,gid=windows, umask=0007,utf8 0 0

/dev/hde6 /mnt/hde6 vfat utf8,user,noauto 0 0 /dev/hde7 /mnt/hde7 vfat utf8,user,noauto 0 0

Các dòng đầu được tự động sinh ra bằng tiến trình cài đặt và trong số chúng, chúng ta có thể thấy cách mà các thư mục khác được phân bổ bên trong cấu trúc GNU/Linux. Có thể dòng sẽ hầu hết

làm chúng ta chú ý sẽ là proc /proc proc defaults 0 0, nó có trách nhiệm thiết lập thư mục ảo

proc, mà chúng ta đã thảo luận rồi trong hội thảo đầu tiên.

Các dòng thú vị nhất là các dòng như /dev/hdc1 /mnt/hdc1 ntfs

utf8,ro,noauto,user,gid=windows,umask=0007,utf8 0 0. Chúng chỉ định điểm gốc ban đầu và điểm lắp ráp các phân vùng thuộc về hệ điều hành Windows2000; nói cách khác, nó có dạng NTFS. Chúng ta không thể ghi vào các phân vùng đó từ GNU/Linux, dù chúng ta có thể đọc được các nội

dung; điều này được phản ánh trong các lựa chọn ro,noauto,user,gid=windows,

umask=0007,utf8 (điều cơ bản không để lại bất kỳ khoảng trống nào trong các lựa chọn, khi ký tự

Trang 153/232

Đọc thêm

Để biết thêm về locales, chúng tôi khuyến cáo tới thăm website http://www.uniulm.de/ss-masch/locale/.

Page 154: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

này là ký tự được sử dụng để chia tách các trường trong tệp này). Nội dung đầu chỉ ra rằng đây là phân vùng chỉ đọc; nội dung thứ 2, rằng nó sẽ không được thiết lập một cách tự động trong quá trình khởi động hệ thống; nội dung thứ 3 chỉ ra rằng phân vùng này có thể được bất kỳ người sử dụng nào thiết lập; nội dung thứ 4 chỉ ra rằng chỉ các thành viên thuộc về nhóm Windows sẽ có khả

năng truy cập được nó (như được xác định trong tệp /etc/group); lựa chọn sát cuối cùng thiết lập lớp đệm của thiết lập và nội dung cuối cùng, bảng mã sẽ được sử dụng.

Các dòng cuối của tệp trước sẽ được sử dụng để kích hoạt các phân vùng FAT32, mà có khả năng ghi từ GNU/Linux lên đó. Vì lý do này, là ý tưởng tốt để luôn có một phân vùng nhỏ với dạng định dạng này, vì nó sẽ có khả năng truy cập được cả từ GNU/Linux và từ Windows. Dù đúng là có khả năng để kích hoạt một hệ thống tệp từ dòng lệnh, như, ví dụ, có thể xảy ra nếu chúng ta kích hoạt CD-ROM,

brau:/etc/apt# mount /dev/CD-ROM /CD-ROM -t iso9660 ro

thì vẫn là tiện lợi hơn nhiều để có thông tin được đưa vào trong tệp /etc/fstab, khi điều này sẽ cho phép chúng ta làm điều y hệt một cách đơn giản bằng việc gõ vào:

brau:/etc/apt# mount /CD-ROM

9.7. Cấu hình thiết bị

Đã đề cập tới những điều cơ bản của quản trị gói, chúng ta có thể giải quyết được nhiệm vụ bắt đầu thiết lập cấu hình cho hệ thống sao cho để chỉnh sửa nó cho các nhu cầu đặc thù của chúng ta. Tiến trình đó về cơ bản bao gồm 2 phần: thiết lập cấu hình cho các thiết bị phần cứng khác nhau mà chúng ta đã cài đặt lên máy tính, và cài đặt phần mềm mà chúng ta sẽ sử dụng.

Việc thiết lập cấu hình phần cứng của hệ thống thường là phần đòi hỏi nỗ lực nhiều nhất, nói chung, vì mỗi máy tính sẽ có các thiết bị khác nhau và vì thế mỗi máy tính có thể là một thế giới trong bản thân nó. Thông thường, trong các hệ thống GNU/Linux, chúng ta có thể thiết lập cấu hình cho bất kỳ thiết bị nào, tuy nhiên thường thì là, dù điều này sẽ ít nhiều phức tạp và phụ thuộc vào cách mà các thiết bị được chuẩn hóa ra sao. Tuy nhiên, cũng đúng rằng chúng là những tiến trình mà trong đó chúng ta có thể học được nhiều nhất, như, thường là, việc thiết lập cấu hình cho một thiết bị đòi hỏi các tác vụ nhất định trước đó, như việc tìm ra chính xác dạng thiết bị nào chúng ta có, đọc được tất cả các tài liệu về các dạng thiết bị được đưa vào trong các hệ thống GNU/Linux, cách mà thiết bị theo yêu cầu tích hợp với hệ thống …

Biết rằng không phải tất cả các nhà sản xuất phần cứng hỗ trợ các hệ thống GNU/Linux, và có một số thậm chí không cung cấp thông tin cần thiết để các lập trình viên của cộng đồng GNU/Linux có thể viết mã cần thiết cho việc tích hợp các thiết bị đó vào hệ điều hành, vì vậy, được khuyến cáo rằng, bất kỳ khi nào mua phần cứng mới, chúng ta sẽ tìm ra chính xác sản phẩm nào chúng ta cần (thông tin này thường sẽ chính xác hơn nhiều so với thường được bản thân các nhà cung cấp của bản thân các phần cứng đó đưa ra, mà, đôi lúc, chúng thậm chí là không có), liệu nó có được hỗ trợ đầy đủ hay không, thông tin nào chúng ta cần để tích hợp sản phẩm mới vào hệ thống của chúng ta … Nói chung, khi mua phần cứng mới, điều sẽ được cân nhắc là mức độ tiêu chuẩn hóa và chất lượng của sản phẩm. Ở nhưng nơi mà sự tiêu chuẩn hóa là cần tới, thì sản phẩm càng được tiêu chuẩn hóa bao nhiêu, thì số người sử dụng mà nó có, vì thế, càng nhiều khả năng nó được hỗ trợ đầy đủ hơn bấy nhiêu. Ở những nơi mà chất lượng sản phẩm cần quan tâm, ít năm trước, các nhà sản xuất phần cứng đã bắt đầu thay thế các chức năng có thể được triển khai với phần cứng bằng các chức năng được các phần mềm triển khai để giảm chi phí (ví dụ nổi tiếng nhất của thực tiễn này có thể là các modem được biết tới như là các winmodem). Kết quả là, một mặt, giảm hiệu năng của

Trang 154/232

Page 155: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

hệ thống, khi mà nó đòi hỏi gánh nặng lên CPU với những tác vụ mới, nhiều trong số đó đã thậm chí không được thiết kế để triển khai, và, mặt khác, do nhu cầu phải có phần mềm thay thế được cho các phần cứng bị loại bỏ và điều đó, thường là, đã chỉ được phát triển cho các dạng hệ điều hành nhất định; vì lý do này, được khuyến cáo tránh bất kỳ sản phẩm nào mà được thiết kế đặc biệt chỉ cho một hệ điều hành đặc biệt.

Qua từng phần đề cập tới thiết lập cấu hình hệ thống, chúng ta sẽ thảo luận một số khía cạnh của các thiết bị khác nhau mà chúng ta có thể sẽ trải qua và các vấn đề tiềm ẩn.

Trước khi chúng ta bắt đầu thiết lập cấu hình cho các thiết bị khác nhau trong hệ thống, chúng ta

phải nhớ một số chiến lược có thể là hữu ích cho mục đích này. Trước hết, lệnh lspci có thể được sử dụng để lấy được nhiều thông tin về cách mà các thiết bị được hệ thống nhận biết trong quá trình

khởi động. Nếu thông tin này là không đủ, thì chúng ta có thể luôn cần tới thư mục ảo /proc/, nơi mà tất cả các thông tin về phần cứng hệ thống, cùng với những yếu tố khác, sẽ được ghi nhận. Có

khả năng, các tệp lưu ký, nằm trong /var/log/ có thể rất hữu dụng (một phương pháp thú vị cho

việc xem xét cách mà các nội dung của các tệp đó tiến hóa là sử dụng lệnh tail với tham số -f và

tái định tuyến đầu ra của nó tới một tty mà chúng ta đang chưa sử dụng; như một ví dụ, tail –f

/var/log/messages > / dev/tty10.

9.7.1. Thiết lập cấu hình cho chuột

Như trường hợp trong hội thảo về KNOPPIX, daemon sẽ có trách nhiệm quản trị chuột sẽ là gpm. Chúng ta sẽ cài đặt gói đó:

brau:/etc/apt# apt-get install gpm

Khi kết thúc cài đặt, một script sẽ khởi động tự động để giúp chúng ta thiết lập cấu hình cho chuột; Các tham số chúng ta phải đưa vào là cơ bản y hệt những tham số mà chúng ta đã đưa vào trong hội thảo về KNOPPIX, nhưng nếu bất kỳ thứ gì đó hỏng, thì chúng ta luôn có thể khởi tạo lại chương

trình cấu hình bằng việc sử dụng lệnh gpmconfig (thường thì, cấu hình -m /dev/ psaux -t ps2 sẽ

là hợp lệ cho hầu hết các chuột PS2 với 3 núm). Cấu hình mà gpm sẽ sử dụng mỗi lần hệ thống được

khởi động được lưu trong /etc/gpm.conf. Hữu dụng cho chuột khi có 3 núm, vì các chức năng sẽ được chỉ định cho cả 3 núm đó, đặc biệt trong các môi trường đồ họa. Vì lý do này, nếu chúng ta có chuột mà chỉ có 2 núm, thì chúng ta có thể nhấn cả 2 núm cùng một lúc, cho các chức năng mà núm thứ 3 có thể thường làm.

Khởi động và dừng gpm

Như chúng ta vừa nhắc tới, chương trình có trách nhiệm quản trị cách mà chuột làm việc là một daemon. Vì thế, chúng ta sẽ hành động như có thể với bất kỳ daemon thông thường nào khác để khởi tạo hoặc dừng nó. Phần này sẽ đưa ra một ví dụ về cách khởi tạo hoặc dừng các daemon.

Cả việc khởi động và dừng một daemon được thực hiện bằng việc sử dụng một script nằm trong

/etc/init.d/. Thông thường, nếu chúng ta gọi tới script này mà không vào bất kỳ tham số nào, thì nó sẽ chỉ cho chúng ta một dòng trợ giúp sẽ hỗ trợ được cho chúng ta bằng việc nói cho chúng ta

cách sử dụng nó. Vì thế hãy xử lý để dừng daemon gpm:

brau:/etc/init.d# ./gpm stop Stopping mouse interface server: gpm

Sử dụng ps aux, chúng ta có thể kiểm tra xem liệu, một cách có hiệu quả, không có tiến trình nào

Trang 155/232

Page 156: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

khác gọi gpm chạy, và ngoài ra, chúng ta có thể thấy rằng nếu chúng ta di chuột, thì không có gì xảy ra trên màn hình. Bây giờ chúng ta có thể xử lý để khởi động nó:

brau:/etc/init.d# ./gpm stop Starting mouse interface server: gpm

Bây giờ, khi chúng ta di chuột, chúng ta sẽ thấy mũi tên xuất hiện trên màn hình. Bây giờ, hãy để chúng ta xử lý để phân tích xem liệu daemon này sẽ khởi tạo tự động hay không khi chúng ta khởi

động máy tính. Tệp /etc/inittab sẽ nói cho chúng ta mức chạy trong đó hệ điều hành sẽ khởi động: mặc định nó sẽ là 2; vì thế, trong tệp này, chúng ta sẽ thấy một dòng tương tự như sau đây:

# The default runlevel. id:2:initdefault:

Vì thế hãy để chúng ta kiểm tra xem liệu thư mục /etc/rc2.d/ có chứa một liên kết biểu tượng tới

/etc/init.d/gpm hay không:

brau:/etc/init.d# ls -l ../rc2.d/ | grep gpm lrwxrwxrwx 1 root root 13 feb 21 13:03

S20gpm -> ../init.d/gpm

Nếu liên kết biểu tượng này không có, và chúng ta muốn gpm khởi tạo tự động trong quá trình khởi

động, thì chúng ta nên tạo ra nó bằng tay bằng việc sử dụng ls –s. Nếu, mặt khác, liên kết đó có và

chúng ta không muốn gpm khởi tạo trong quá trình khởi động, thì tất cả điều chúng ta có thể phải làm là xóa liên kết biểu tượng đó; tuy nhiên, không được khuyến cáo xóa các script khỏi

/etc/init.d, khi mà chúng rất hữu dụng cho việc khởi động và dừng các daemon.

9.7.2. Thiết lập cấu hình cho các modem

Như đối với tất cả các phần cứng khác, các modem có thể được thiết lập cấu hình hoàn toàn bằng tay, nhưng thực tế này thường đang bị lãng quên, qua thời gian, các công cụ đủ mạnh và tin cậy đã được phát triển, chúng có thể giúp chúng ta tránh những tác vụ nặng nhọc khi cấu hình các modem

bằng tay. Một trong những công cụ đó là pppconfig, nó là công cụ mà chúng ta gợi ý ở đây để thiết lập cấu hình cho modem của chúng ta.

Tuy nhiên, trước khi chúng ta bắt đầu thiết lập cấu hình cho modem của chúng ta, chúng ta phải công bố rằng không phải tất cả các thiết bị được nói tới hoặc được bán thực sự là các modem như vậy. Như chúng ta đã thảo luận, nhiều nhà sản xuất, để giảm chi phí của họ, đã bắt đầu thay thế các thành phần vật lý bằng phần mềm, và về lịch sử, các modem từng có lẽ là các thiết bị đầu tiên phải cam chịu từ thực tiễn này. Chúng ta phải đặc biệt thận trọng với các modem trong, như trong thực tế, rất ít các modem trong đó kết hợp được với tất cả các phần cứng mà các thiết bị đó đáng phải có. Các modem thực tế được nhận biết dễ dàng bằng sự khác biệt về giá cả so với các modem rởm. Vì lý do này, nhiều thiết bị đó đã bị giảm xuống chỉ còn là những nô lệ của các phần mềm.

Vì lý do đó, thường được khuyến cáo rằng chúng ta sử dụng các modem ngoài, bất kỳ khi nào có thể. Bất chấp việc liệu chúng ta có một modem thực sự hay không, thì chúng tôi khuyến cáo đọc

http://www.tldp.org/HOWTO/Modem-HOWTO.html. Biết rằng chúng ta sẽ sử dụng pppconfig để thiết lập cấu hình cho modem của chúng ta, trừ phi chúng ta đã cài đặt nó trong thủ tục cài đặt hệ thống (bạn có thể kiểm tra điều này bằng việc cố gắng khởi động ứng dụng một cách đúng đắn, nói

Trang 156/232

Tham khảo

Để có thêm thông tin về các thiết bị đó và cách mà chúng tích hợp trong GNU/Linux, hãy viếng thăm các website: http://www.tldp.org/HOWTO/Winmodems-and-Linux-HOWTO.html, http://www.tldp.org/HOWTO/Linmodem-HOWTO.html, http://www.idir.net/gromitkc/winmodem.html.

Page 157: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

cách khác, vào pppconfig trên bàn phím hoặc sử dụng dpkg -l | grep pppconfig), điều đầu tiên chúng ta phải làm là cài đặt ứng dụng: Bibliography

brau:˜# apt-get install ppp pppconfig

Một khi chúng ta đang ở trong màn hình chính của giao diện cài đặt, chúng ta phải chọn Tạo một kết nối (Create a connection) và trong màn hình tiếp sau, chúng ta sẽ vào tên mà chúng ta sẽ tham chiếu tới cấu hình này, khi nó có khả năng thiết lập cấu hình và quản lý hơn một kết nối.

Sau khi chỉ định tên cho cấu hình mới, chúng ta phải thiết lập cấu hình truy cập DNS: chúng ta có thể chọn lựa chọn mặc định, chỉ định DNS tĩnh, hoặc một chỉ định DNS động, nếu chúng ta chắc chắn rằng nhà cung cấp dịch vụ (ISP) của chúng ta sẽ cung cấp cho chúng ta các địa chỉ DNS trong quá trình kết nối đó. Nếu chúng ta chọn lựa chọn mặc định, thì chúng ta sẽ được yêu cầu vào các địa chỉ IP của DNS mà chúng ta muốn sử dụng và chúng sẽ được lưu trong tệp tên của cấu hình

/etc/ppp/resolv/nameofconfiguration.

Trong màn hình tiếp sau, chúng ta phải chọn phương pháp xác thực cho việc thiết lập cấu hình đó.

Thường thì, trừ phi trường hợp của chúng ta là ngoại lệ, chúng ta sẽ chọn lựa chọn đầu, PAP. Tiếp đến, chúng ta sẽ vào tên và mật khẩu của người sử dụng cho kết nối đó và chọn tốc độ kết nối; tốc

độ mặc định là 115200, và với hầu hết các kết nối, điều này sẽ làm việc mà không có vấn đề gì.

Sau khi chỉ định liệu đường điện thoại của chúng ta là dựa vào quay số (dial-based) hay tiếng (tone-based) (hiện hành, hầu hết là tiếng), chúng ta phải vào số mà sẽ reo chuông, mà ISP của chúng ta có thể đã trao cho chúng ta.

Tới được điểm này, pppconfig sẽ hỏi chúng ta liệu chúng ta có muốn modem tự động được dò tìm ra hay không. Với modem làm việc, chúng ta có thể để bản thân chương trình dò ra cổng mà modem được kết nối tới, hoặc chúng ta có thể tự làm bằng tay (luôn ghi nhớ sự phù hợp: cổng nối

tiếp đầu, COM1, /dev/ttyS0, cổng nối tiếp thứ 2, COM2, /dev/ttyS1, …).

Một khi chúng ta đã vào được ttyS mà modem được kết nối tới, thì chúng ta sẽ truy cập tới một màn hình tóm tắt các dữ liệu chúng ta đã vào, nó cũng cho phép chúng ta thiết lập các lựa chọn cao cấp nhất định (chúng thường là không cần thiết). Nếu các dữ liệu là đúng, thì chúng ta có thể chọn lựa

chọn Kết thúc ghi các tệp và quay về màn hình chính Finished Write files and return to main

menu, và sau khi khẳng định hoạt động đó, để trở về thực đơn chính của giao diện, nếu chúng ta không muốn thiết lập cấu hình cho kết nối khác, thì chúng ta nên chọn lựa chọn Thoát Ra khỏi tiện

ích này Quit Exit this utility, để trở về dòng lệnh. Một khi quay về với dòng lệnh, có thể kiểm

tra liệu các dữ liệu đã được lưu giữ đúng chưa trong /etc/ppp/peers/nameofconfiguration. Đối với những người sử dụng các kết nối PPP, cũng có thể thú vị để cài đặt gói pppstatus để giám sát giao thông qua kết nối đó, cùng với những yếu tố khác.

Việc thiết lập và kết thúc một kết nối pon, poff

Để thiết lập một kết nối, tất cả điều chúng ta phải làm là gõ trong lệnh Pon theo sau tên của kết nối mà chúng ta muốn sử dụng; nếu chúng ta đã thiết lập cấu hình cho một kết nối rồi, thì sẽ không cần

thiết phải chỉ định tên của nó. Về nguyên tắc, nếu sử dụng nó không bị hạn chế, thì Pon có thể được bất kỳ người sử dụng nào chạy.

Để kết thúc kết nối, tất cả điều chúng ta phải làm là chạy lệnh Poff.

Trang 157/232

Page 158: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

9.7.3. Thiết lập cấu hình cho các modem DSL

Như chúng ta đã làm trong phần trước cho việc thiết lập cấu hình cho các modem truyền thống, ở đây chúng ta sẽ sử dụng một công cụ cho việc thiết lập cấu hình cho các modem DSL: pppoeconf. Nhưng trước khi bắt đầu, chúng tôi khuyến cáo đọc http://www.tldp.org/HOWTO/DSL-HOWTO.

Giao thức điểm – điểm qua Ethernet PPPoE (Point-to-Point Protocol over Ethernet), là một giao thức rất tương tự như PPP mà sử dụng một giao diện Ethernet thay vì một modem. Dạng giao thức này từng được một số nhà cung cấp dịch vụ Internet ADSL áp dụng.

Kết nối ADSL thường là một phần của dịch vụ điện thoại. Các tín hiệu (các tín hiệu điện thoại và ADSL) được phân chia trong một thiết bị gọi là bộ chia (splitter), nó chia tách chúng thành các dải tần số tương ứng của chúng. Tín hiệu ADSL sau đó đi vào trong một thiết bị gọi là một bộ tập trung (concentrator) được kết nới tới giao diện Ethernet của máy tính bằng cáp đôi xoắn với các đầu nối RJ45. Để thiết lập cấu hình cho kết nối:

# apt-get install pppoeconf

Khi chạy pppoeconf, công cụ đó sẽ quét tất cả các giao diện mạng cho tới khi nó tìm thấy một giao diện truy cập được bộ tập trung. Chúng ta sẽ chọn thiết lập cấu hình cho PPPoE trong giao diện này.

Trong trường Vào tên người sử dụng ENTER USERNAME, chúng ta gõ vào tên của người sử dụng mà

nhà cung cấp đã chỉ định cho chúng ta và sau đó là mật khẩu. Trong trường Sử dụng DNS điểm USE

PEER DNS, chúng ta sẽ chọn lựa chọn sửa đổi tự động, /etc/resolv.conf. Chúng ta chọn để có PPPoE chạy khi khởi động và sau đó chọn kết nối. Sau một vài giây bạn sẽ thấy thứ gì đó tương tự như điều này trên màn hình,

Every 2s: /sbin/ifconfig ppp0 Sun May 13 12:11:56 2007 ppp0 Link encap:Point-to-Point

Protocol inet addr:200.89.50.138 P-t-P:10.52.0.3 Mask:255.255.255.255 UP POINTOPOINT

RUNNING NOARP MULTICAST MTU:1492 Metric:1 RX packets:5 errors:0 dropped:0 overruns:0

frame:0 TX packets:7 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:3

RX bytes:190 (190.0 b) TX bytes:199 (199.0 b)

9.7.4. Thiết lập cấu hình cho các card mạng

Nếu, vì bất kỳ lý do gì, chúng ta không thiết lập cấu hình được cho card mạng trong quá trình cài đặt, thì bây giờ là lúc làm việc đó. Dù thực tế thì tất cả các card mạng được hỗ trợ trong các hệ thống GNU/Linux, vì chúng là các thành phần chủ chốt cho hệ điều hành hướng mạng, thì một lần nữa, chúng tôi muốn khuyến cáo sử dụng phần cứng được tiêu chuẩn hóa nhất có thể, để tránh những phức tạp khi nói về việc thiết lập cấu hình cho hệ thống. Có khả năng là card của chúng ta có ở 2 dạng: dạng đầu khi trình điều khiển của nó được biên dịch trực tiếp từ bản thân nhân, và dạng thứ 2 là trình điều khiển được biên dịch theo một cách thức module hóa sao cho nó có thể được tải lên sau đó. Cách dễ dàng nhất để tìm ra liệu trình điều khiển của card mạng của chúng ta đã được

biên dịch trong bản thân nhân hay chưa là bằng việc phân tích thông điệp trả về của lệnh dmesg, như chúng ta đã làm trong phần 5.4.3.

Nếu, sau khi phân tích đầu ra của lệnh dmesg một cách chi tiết, chúng ta đi tới được kết luận rằng

trình điều khiển cho card của chúng ta còn chưa được tải lên, thì chúng ta có thể chạy lệnh modconf, nó tải các module đó vào trong nhân đã được nó biên dịch, và kiểm tra xem liệu trình điều khiển

cho card đó có xuất hiện trong phần kernel/drivers/net hay chưa. Nếu đây đúng là vấn đề, thì tất

Trang 158/232

Page 159: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

cả điều chúng ta phải làm là chọn nó để tải nó vào trong nhân.

Nếu card mạng của chúng ta không được hỗ trợ một cách mặc định, thì chúng ta phải dùng tới phương kế biên dịch lại nhân.

Một khi chúng ta đã hoàn thành việc này, chúng ta phải soạn thảo tệp /etc/network/interfaces để vào các tham số tương ứng với card mạng của chúng ta. Một cấu hình có khả năng là:

# /etc/network/interfaces -configuration file for ifup(8), #ifdown(8) # The loopback

interface

auto lo iface lo inet loopback # The first network card this entry was created during the

#Debian installation (network, broadcast and gateway are #optional) auto eth0 iface eth0 inet

static address 158.109.69.132 netmask 255.255.0.0 network 158.109.0.0 broadcast

158.109.255.255

gateway 158.109.0.3

Chúng tôi khuyến cáo đọc http://www.tldp.org/HOWTO/NetworkingOverview-HOWTO.html, cũng như http://www.fokus.gmd.de/linux/HOWTO/Net-HOWTO và sách chỉ dẫn man trong các giao diện. Nếu chúng ta không có card mạng và cần triển khai kiểm thử, thì chúng ta luôn có thể tính tới

module dummy; trong trường hợp này, thiết bị, thay vì được gọi là eth0, có thể được gọi là dummy0.

Nếu chúng ta muốn thiết lập cấu hình cho hơn một card mạng trong cùng một máy tính (mà rất thường thấy khi sử dụng các cổng gateway, cũng như trong các trường hợp khác), cần thiết phải vào các tham số tương ứng với nhân trong quá trình khởi động để tránh các xung đột giữa các thiết bị.

Khởi động và dừng các dịch vụ mạng: ifup, ifdown

Tất cả các dịch vụ mạng (các dịch vụ của /etc/network/interfaces) có thể được khởi tạo lại bằng

việc sử dụng script /etc/init.d/networking với tham số restart. ifup, nó khởi động các dịch vụ

mạng của một giao diện đặc thù, và ifdown sẽ làm dừng chúng. Vì thế, đối với cấu hình được nêu ở trên, nếu chúng ta muốn dừng và khởi động lại các dịch vụ của eth0, thì chúng ta có thể xử lý như

sau (lệnh ifconfig có thể được sử dụng để kiểm tra các kết quả):

brau:~# ifconfig eth0 Link encap:Ethernet HWaddr 00:01:02:B4:3A:61 inet addr:158.109.69.132

Bcast:158.109.255.255 Mask:255.255.0.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX

packets:36409683 errors:0 dropped:0 overruns:221 frame:0 TX packets:35938 errors:0 dropped:0

overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:1489273710 (1.3 GiB) TX

bytes:20116974 (19.1 MiB) Interrupt:5 Base address:0x9400 lo Link encap:Local Loopback inet

addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:823 errors:0

dropped:0 overruns:0 frame:0 TX packets:823 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:0 RX bytes:3169619 (3.0 MiB) TX bytes:3169619 (3.0 MiB) brau:~#

ifdown eth0 brau:~# ifconfig lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0

UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:823 errors:0 dropped:0 overruns:0 frame:0

TX packets:823 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX

bytes:3169619 (3.0 MiB) TX bytes:3169619 (3.0 MiB) brau:~# ifup eth0 brau:~# ifconfig eth0

Link encap:Ethernet HWaddr 00:01:02:B4:3A:61 inet addr:158.109.69.132 Bcast:158.109.255.255

Mask:255.255.0.0 UP BROADC AST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:36420981

errors:0

dropped:0 overruns:221 frame:0 TX packets:35965 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:100 RX bytes:1490867554 (1.3 GiB) TX bytes:20118868 (19.1 MiB)

Trang 159/232

Page 160: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Interrupt:5 Base address:0x9400 lo Link encap:Local Loopback inet addr:127.0.0.1

Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:823 errors:0 dropped:0

overruns:0 frame:0 TX packets:823 errors:0 dropped:0 overruns:0 carrier:0 collisions:0

txqueuelen:0 RX bytes:3169619 (3.0 MiB) TX bytes:3169619 (3.0 MiB)

Card mạng không dây

Nếu bạn có một card mạng không dây, bạn có thể kiểm tra liên kết sau: http://ftp.cl.debian.org/man-es/wlan.html.

9.7.5. Thiết lập cấu hình cho các máy in

Thiết lập cấu hình được cho máy in có thể rất hữu dụng, khi nó sẽ cho phép chúng ta, cùng với

những điều khác, in ra các tệp man, các tệp cấu hình … sao cho chúng ta có thể nghiên cứu chúng tốt hơn ở dạng trên giấy.

Việc in ấn trong Linux dựa vào một hệ thống hàng đợi được một daemon điều khiển mà nó chạy khi khởi động. Các máy in có thể được kết nối đúng tới cổng song song hoặc kết nối USB của máy tính (máy in cục bộ) hoặc được kết nối tới mạng (máy in mạng).

Ở những nơi mà dạng máy in ưa thích được kết nối, trong một môi trường ở nhà, thì điều tốt nhất có

thể sẽ là sử dụng cổng song song (/dev/lpX, thường là /dev/lp0) sao cho để đảm bảo rằng máy in không phụ thuộc vào phần mềm của nó, như hầu hết các máy in mới đang xuất hiện trên thị trường, đặc biệt những máy in mà kết nối thông qua cổng USB, là những máy in được thiết kế đặc biệt cho một hệ điều hành xác định. Các máy in đó được biết một cách phổ biến như là các winprinters (các máy in chỉ dành cho Windows) (và chúng là tương tự với những gì chúng ta gọi là winmodem). Trong một môi trường chuyên nghiệp, điều tốt nhất có thể là có một máy in kết hợp được giao diện mạng của riêng nó, làm cho nó, đơn giản, thành một nút khác trong mạng. Để có thêm thông tin về các máy in và cách mà chúng tích hợp trong các hệ điều hành GNU/Linux, chúng tôi khuyến cáo viếng thăm site http://www.linuxprinting.org, nơi bạn sẽ thấy một danh sách vô số các máy in sẵn sàng trên thị trường và thông tin về mức độ chúng được hỗ trợ.

Hệ thống In Unix Phổ biến CUPS (Common Unix Printing System) là một hệ thống in theo module sử dụng Giao thức In Internet IPP (Internet Printing Protocol) để điều hành các hàng đợi. Đây là một hệ thống hiện đại và phức tạp, nó có thể được sử dụng trong một môi trường máy để bàn như

GNOME hoặc KDE. Hơn nữa, nó đi với lựa chọn duy trì hệ thống truyền thống lpr của các dòng lệnh BSD.

Cấu trúc chung của một hệ thống in trong GNU/Linux là cấu trúc máy khách - máy chủ phục vụ (client – server). Máy chủ, CUPS, là một máy chủ dạng daemon và chúng ta vì thế sẽ ứng xử với nó

như vậy. Tệp cấu hình của máy chủ là /etc/cups/cupsd.conf. Trong tệp này, chúng ta sẽ có khả năng thiết lập cấu hình cho bao nhiêu máy tính tùy ý chúng ta.

Để cài đặt hệ thống CUPS, chúng ta phải chạy lệnh:

# apt-get install cupsys cupsys-client cupsys-bsd printconf foomatic-filters-ppds

Gói cuối cùng này có các Định nghĩa Máy in Postscript PPDs (Postscript Printer Definitions) của Adobe, nó được CUPS sử dụng để xác định các máy in.

CUPS-PDF là một máy in ảo cho việc in ấn các tài liệu tới một tệp PDF. Để cài đặt nó trong hệ thống của chúng ta, chúng ta có thể chạy lệnh:

Trang 160/232

Page 161: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

# apt-get install cups-pdf

Trong CUPS, có 2 cách thiết lập cấu hình cho các máy in. Một trong số đó là từ tiện ích được môi trường đồ họa cho máy tính để bàn GNOME hoặc KDE cung cấp. Cách kia là từ website. Trong cả 2 cách, chúng ta cần các quyền ưu tiên của người quản trị để thiết lập cấu hình cho các máy in.

In các tệp văn bản

Các trình định dạng (Formatters) là các chương trình được sử dụng, chủ yếu, để ghi chép lại các tệp trong định dạng văn bản tới định dạng PostScript (ngôn ngữ Postscript, về lịch sử, từng được triển khai rộng rãi hơn trong lĩnh vực in ấn). Các chương trình đó có thể rất hữu ích, khi chúng cho phép chúng ta in các lệnh trợ giúp, các tệp cấu hình … ra giấy, sao cho chúng dễ dàng hơn để đọc. Một

trong những chương trình đó là enscrip (cũng được đóng gói với cùng tên: chương trình này mạnh hơn so với chương trình trước). Một vài dòng được đưa ra bên dưới như một ví dụ về cách mà chúng ta có thể sử dụng nó:

man man | mpage -2 -o |lpr

Sử dụng dòng này, chúng ta tái định tuyến đầu ra của sách chỉ dẫn man tới mpage, định dạng nó sao

cho có 2 cột mỗi bảng, không có các lề, và tái định tuyến đầu ra của nó tới máy in trạm lpr:

endscript /etc/fstab -B -fTimes-Roman7 -r

Với dòng này, chúng ta sẽ in ra các nội dung của tệp /etc/fstab mà không có đầu đề, bằng việc sử dụng phông chữ Times - Roman, cỡ 7 và định dạng rộng.

9.7.6. Thiết lập cấu hình cho card âm thanh

Vì số lượng lớn các card âm thanh có trong thị trường, hầu như không có khả năng cung cấp một mô tả cách mà tất cả chúng sẽ được thiết lập cấu hình. Chúng tôi khuyến cáo đọc http://www.tldp.org/HOWTO/Sound-HOWTO/ và tới thăm website của các dự án âm thanh quan trọng nhất tại GNU/Linux: http://www.opensound.com/ và http://www.alsa-project.org/.

Kiến trúc Âm thanh Linux Cao cấp ALSA (Advanced Linux Sound Architecture) là một dự án làm việc theo một giấy phép GNU, để cung cấp cho Linux các thiết bị âm thanh và MIDI.

Chúng ta bây giờ sẽ thảo luận cách mà chúng ta nên xử lý nếu chúng ta cần thiết lập cấu hình cho một card âm thanh khá phổ biến: SoundBlasterPCI (chipset ES1371). Đối với các dạng card này,

lệnh lspci sẽ chỉ cho chúng ta một dòng giống như sau:

00:0d.0 Multimedia audio controller: Ensoniq 5880 AudioPCI (rev 02)

Trước hết, chúng ta sẽ tải module tương ứng tới card âm thanh này, bằng việc sử dụng lệnh

modconf, kernel/drivers/ sound, es1371.

Sau đó, chúng ta sẽ tạo nhóm audio trong /etc/group và chúng ta sẽ đưa vào tất cả những người sử dụng sẽ yêu cầu truy cập tới thiết bị âm thanh đó trong nhóm (nếu chúng ta muốn tất cả những người sử dụng đó có được sự truy cập tới nó, thì chúng ta có thể bỏ qua bước này và đưa ra tất cả

các quyền cho các tệp /dev/dsp và /dev/mixer; và sau đó liên kết các tệp /dev/dsp và /dev/mixer tới nhóm mới mà chúng ta đã tạo ra.

Với điều này, chúng ta sẽ cài đặt được card âm thanh. Chúng ta bây giờ có thể kiểm tra xem điều này có đúng là trường hợp của việc chỉ cho một tệp âm thanh một cách trực tiếp tới /dev/dsp, như

Trang 161/232

Page 162: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

được gợi ý trong http://www.tldp.org/HOWTO/Sound-HOWTO/ hay bằng việc sử dụng các ứng dụng âm thanh chạy trong tệp này. Chúng ta sẽ phải chờ cho tới khi chúng ta có môi trường đồ họa được thiết lập cấu hình, trước khi chúng ta có thể cài đặt nó.

9.8. Kết luận

Trong hội thảo này, chúng ta đã học được cách làm việc với hệ thống gói Debian, nó là cơ bản, khi mà nó cho phép chúng ta học cách cài đặt, bỏ cài đặt và quản lý chung các ứng dụng. Chúng ta cũng học được cách thiết lập cấu hình cho các thiết bị phần cứng khác nhau, với điều này, một điểm cơ bản là: GNU/Linux không đơn giản như các hệ điều hành khác, khi nó đòi hỏi, nói chung, tri thức sâu hơn về thiết bị thực tế cũng như bản thân hệ thống. Nhưng, để bù đắp cho khía cạnh này, chúng ta có thể đảm bảo rằng một khi thiết bị được thiết lập cấu hình, thì nó sẽ làm việc đúng và chúng ta sẽ không phải lo lắng về nó một lần nữa. Và chúng ta sẽ không quên rằng chúng ta thậm chí còn chưa thiết lập cấu hình cho môi trường đồ họa. Dù vậy, để khuyến khích những người trong các bạn mà có thể đang bắt đầu nghĩ tới việc đi tiếp vào thế giới GNU/Linux có thể không phải là một ý tưởng tốt, một ý định tồi và một sự lãng phí thời gian, chúng tôi muốn trích một đoạn từ cuốn sách Debian GNU/Linux 2.1 của Mario Camou, John Goerzen và Aaron Van CouWenberghe, phần I, chương 1, Vì sao Linux là tốt hơn:

“Windows NT, tuy nhiên, được học để nói ngôn ngữ của Internet chỉ một ít năm trước. Nó còn chưa được bất kỳ sự tưởng tượng căng thẳng nào tỉnh chỉnh, mà đầy bệnh tật với các lỗi và sự không ổn định. Các doanh nghiệp cần một giải pháp mà họ có thể đặt lên trực tuyến và mong đợi giữ lại được 100% thời gian sẵn sàng, nhưng Windows NT không thể đáp ứng được nhu cầu này. Đối ngược lại, một công việc phổ biến nhất của người quản trị một Windows NT là phá sự phục hồi; anh ta lãng phí quá nhiều thời gian thực hiện công việc nặng nhọc, như việc khởi động các máy chủ mà đã bị sập [...]”.

Aaron Van CouWenberghe.

Trang 162/232

Page 163: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

10. Kiến trúc X-Window

10.1. X-Window là gì?

X-Window là một kiến trúc cửa sổ được thiết kế vào giữa những năm 1980 để cung cấp một môi trường đồ họa trong các máy trạm. Không giống như các môi trường cửa sổ khác, kiến trúc của X-Window đã được thiết kế để độc lập với nền tảng, sao cho nó có thể được cài đặt trong bất kỳ máy tính nào làm việc được trên một hệ thống dạng UNIX. Dù kiến trúc cửa sổ của X-Window có một lịch sử rộng lớn trong đó các dạng giấy phép khác nhau, những triển khai khác nhau và nhiều đội các lập trình viên khác nhau đã tham gia vào, thì hiện nay nó sử dụng chủ yếu triển khai được dự án X.Org phát triển. X.Org là một triển khai mã mở của Hệ thống X Window được sinh ra như một rẽ nhánh của dự án XFree86.

X-Window được thiết kế với một kiến trúc máy trạm/ máy chủ phục vụ (client/server). Dạng kiến trúc này có nghĩa là phần mềm được cấu trúc trong 2 phần hoàn toàn độc lập với nhau (máy trạm và máy chủ phục vụ), chúng giao tiếp bằng việc sử dụng một liên kết giao tiếp. Dù điều này có nghĩa là thiết kế và lập trình là khá phức tạp hơn, thì kiến trúc đó đã đưa ra được tính mềm dẻo hoàn toàn theo nghĩa là máy trạm và máy chủ phục vụ có thể nằm ở những nơi khác nhau và sử dụng các nền tảng và/hoặc các hệ điều hành khác nhau. Hơn nữa, chúng ta có thể tận dụng được cùng y hệt máy trạm ở một mức độ lớn hơn nhiều, khi mà máy trạm sẽ có khả năng cung cấp dịch vụ cho hơn một máy chủ phục vụ tại một thời điểm. Theo cách này, các máy tính chủ phục vụ có thể làm việc với một môi trường đồ họa và các tài nguyên của máy trạm. Về bản chất tự nhiên, kiến trúc này cũng cho phép chúng ta làm việc với X-Window một cách cục bộ trên máy nơi mà máy chủ hiện diện, dù điều này không phải là cơ bản.

Kiến trúc của Windows

Kiến trúc của Windows (hay hệ thống Windows) là một môi trường đồ họa cho phép chúng ta có các ứng dụng khác nhau nằm trong các vùng màn hình khác nhau, thường bị hạn chế bởi một số dạng cửa sổ. Các môi trường đó thường đưa ra các cơ chế cho việc di chuyển và điều hành các cửa sổ đó sao cho công việc là tương tác và dễ dàng hơn để thực hiện.

Các thành phần tạo nên X-Window gồm: máy trạm, máy chủ dịch vụ và kết nối giao tiếp. Máy trạm và máy chủ dịch vụ được thiết kế để độc lập với nền tảng và liên kết giao tiếp được thiết kế để độc lập với giao thức mạng.

Hệ quả là, chúng ta có thể sử dụng X-Window trong bất kỳ dạng kịch bản nào: ví dụ, chúng ta có thể để máy chủ dịch vụ được cài đặt trong một máy tính với Windows, kết nối tới một máy trạm với GNU/Linux và sử dụng Internet như một kênh giao tiếp (giao thức IPv4). Dù việc thiết lập cấu hình cho mỗi thành phần (đặc biệt là máy trạm) là phụ thuộc, theo một cách thức nhất định, vào nền tảng trong đó nó được cài đặt, thì liên kết giao tiếp làm cho có khả năng tách bạch các thành phần và trao cho chúng ngôn ngữ riêng của chúng sao cho chúng hiểu được lẫn nhau.

Liên kết này sử dụng giao thức riêng của nó gọi là Giao thức Kiểm soát Quản lý Hiển thị X - XDMCP (X Display Manager Control Protocol), nó là ở một mức cao hơn so với mức của mạng giao tiếp được sử dụng (giải thích vì sao nó độc lập với mạng).

Trang 163/232

Page 164: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Hình 10.1

Trong kiến trúc này, máy chủ phục vụ được lập trình để đăng ký các sự kiện xảy ra như là một kết quả của các thiết bị đầu vào, như bàn phím, chuột … và báo cáo chúng cho máy trạm. Máy trạm xử lý các sự kiện đó và trả lời cho máy trạm, chỉ ra các kết quả tại các thiết bị đầu ra (thường là màn hình). Dù ấn tượng ban đầu về thiết kế này có lẽ đưa ra là thời gian trả lời phải là rất chậm, thì giao thức XDMCP về cơ bản được thiết kế để cung cấp một liên kết nhanh giữa máy trạm và máy chủ dịch vụ, sao cho chúng ta có thể thực sự làm việc được một cách tương tác. Chỉ những kịch bản trong đó chúng ta có thể lưu ý được sự bất tiện này là trong các kết nối từ xa có sử dụng các mạng giao tiếp chậm.

Để tóm tắt, các đặc tính và chức năng của từng thành phần của X-Window là như sau:

Bảng 10.1

Máy trạm Quản lý các máy chủ dịch vụ khác nhau tại cùng một thời điểm.

Phụ thuộc vào nền tảng.

Xử lý các ứng dụng.

Máy chủ dịch vụ Kiểm soát hiển thị của người sử dụng.

Độc lập với nền tảng.

Xử lý các thiết bị đầu vào.

Liên kết giao tiếp Được thiết kế để làm việc một cách tương tác.

Được thiết kế để giảm tới tối thiểu giao thông trong mạng.

Trong suốt (độc lập với mạng).

Khi mà các card màn hình được phát triển, ngày càng nhiều các ứng dụng và trò chơi đã bắt đầu cần việc xử lý 2D hoặc 3D nhanh hơn. Dù kiến trúc của các cửa sổ của X-Window đưa ra nhiều ưu điểm, khi mà chúng ta cần sử dụng các dạng ứng dụng đó, thì thiết kế máy trạm / máy chủ dịch vụ không phải là phù hợp nhất, khi mà chúng ta không tận dụng được ưu thế của tất cả các hoạt động xử lý 2D và 3D nhanh cực kỳ mà card video được cài đặt trên máy chủ dịch vụ đưa ra. Để giải quyết vấn đề này, một công nghệ mới được gọi là Hạ tầng Trả về Trực tiếp - DRI (Direct Rendering

Trang 164/232

Page 165: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Infrastructure) đã xuất hiện vào năm 1998; nó làm cho có khả năng tận dụng được ưu thế của các chip xử lý của các card để lưu giữ công việc của máy trạm X-Window. Theo cách này, chúng ta tiếp tục có được tất cả ưu thế của X-Window và tận dụng được các yếu tố đặc thù của các card video.

Không giống như các hệ điều hành khác nơi mà môi trường đồ họa được tích hợp sâu sắc với phần còn lại của các chức năng, kiến trúc X-Window hoàn toàn độc lập với hệ điều hành và không giới hạn chúng ta vào bất kỳ Giao diện Đồ họa Người sử dụng GUI (Graphic User Interface) nào. Trên thực tế, kiến trúc đó chỉ cung cấp cho chúng ta các công cụ đồ họa mức thấp để điều khiển đầu ra của màn hình. Các công cụ đó được đưa vào trong thư viện Xlib và chủ yếu gồm các chức năng cho việc tạo và điều khiển các cửa sổ, các hoạt động với các phông chữ ký tự, dò tìm các sự kiện của người sử dụng và các hoạt động đồ họa. Với những chức năng đó, chúng ta có thể đưa ra cho các ứng dụng của chúng ta một cảm nhận mà chúng ta muốn, tạo ra các GUI mới... Trên thực tế, điều này đã tạo ra công việc bổ sung cho các lập trình viên đầu tiên của các ứng dụng trong X-Window, khi họ bây giờ, ngoài việc lập trình ứng dụng, phải phát triển các thư viện của riêng họ để tạo ra các thực đơn, các biểu tượng... Vì X-Window tiếp tục phát triển, những gì chúng ta gọi là các bộ công cụ, là những thư viện thường được triển khai với Xlib và cung cấp một GUI đặc biệt, đã bắt đầu xuất hiện.

Theo cách này, khi chúng ta thiết kế một ứng dụng, chúng ta có thể sử dụng một số bộ công cụ, chúng đưa ra được các công cụ tiêu chuẩn cho việc tạo các thực đơn, các núm, cho việc quản lý các hoạt động cắt - dán … và chúng ta có thể tập trung vào việc lập trình bản thân ứng dụng. Việc không xác định một cảm nhận đặc biệt còn là những chìa khóa khác cho thành công của kiến trúc X-Window, khi mà mỗi nhà sản xuất phần mềm hoặc lập trình viên phần mềm có khả năng thiết kế thứ của riêng họ, thiết lập nó khác với tất cả những thứ khác.

Dù có nhiều bộ công cụ khác nhau, thì hình sau đây chỉ ra một số phổ biến nhất từng được sử dụng trong suốt lịch sử của X-Window:

Hình 10.2

Trang 165/232

Cảm nhận (look and feel)

Cảm nhận là thiết kế được sử dụng cho các núm, các thanh trượt, các thực đơn …, trong một giao diện đồ họa của ứng dụng.

Page 166: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Trình quản lý cửa số window manager là một máy chủ X-Window có trách nhiệm quản lý tất cả các cửa sổ, các môi trường đồ họa cho máy tính để bàn, các màn hình ảo … Về bản chất tự nhiên, tất cả các ứng dụng có thể làm việc với bất kỳ trình quản lý cửa sổ nào, khi mà tất cả điều nó làm là quản lý cửa sổ nơi mà chương trình đó hiện diện. Dù việc lập trình một trình quản lý cửa sổ rất khác với việc lập trình một ứng dụng, thì các bộ công cụ đặc biệt cung cấp một sự cảm nhận đặc biệt thường được sử dụng. Hiện hành, có hàng tá các trình quản lý cửa sổ khác nhau (wmaker, sawmill, olvwm …), và bản thân những người sử dụng có thể chọn cái nào mà họ thích nhất.

Dạng phần mềm khác được kết nối mạnh mẽ tới X-Window là dạng có trách nhiệm về cung cấp một môi trường tạo ra các ứng dụng, môi trường đồ họa cho máy để bàn, các công cụ quản trị hệ thống … Phần mềm phổ biến nhất hiện đang tồn tại là Môi trường Đồ họa Máy để bàn K – KDE (K Desktop Environment) và Môi trường Mô hình Đối tượng GNU - GNOME (GNU Object Model Environment). Cả 2 đưa ra một bộ công cụ đặc thù, một môi trường cho máy để bàn với nhiều chức năng và cấu hình rất khác nhau và một danh sách các ứng dụng được tích hợp đang được phát triển liên tục. Hầu hết các phát tán GNU/Linux và UNIX đưa ra một trong hai môi trường đó cho máy để bàn khi chúng rất thân thiện với người sử dụng và đưa ra các công cụ và phần mềm của riêng chúng, có chất lượng cao và giúp cho người sử dụng thiết lập cấu hình cho hệ thống và máy để bàn của riêng họ ở một mức độ rộng lớn. Hai môi trường đó có thể làm việc với bất kỳ trình quản lý cửa sổ nào với một loạt các tính năng cơ bản. Các hình sau đây chỉ ra diện mạo của 2 môi trường đó:

Hình 10.3

Trang 166/232

Page 167: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Hình 10.4

Cuối cùng, một ứng dụng khác được sử dụng trong X-Window là trình quản lý phiên, bao gồm một loạt các chương trình làm cho có khả năng lưu cấu hình một phiên làm việc của người sử dụng sao cho các ứng dụng đã được thiết lập cấu hình sẽ tải lên bất kỳ khi nào X-Window được khởi tạo lại. Thông thường, những công cụ đó được cung cấp tự động trong các môi trường tích hợp; nếu không

phải thế, thì chúng ta có thể cần tới môi trường được bản thân X-Window cung cấp: xsm.

Hoạt động

10.1 Đọc lịch sử của X-Window trong bài: http://www.linux-mag.com/2001-12/xfree86 01.html.

Hoạt động

10.2 Xem một số ví dụ của trình quản lý cửa sổ và các môi trường đồ họa cho máy để bàn đang hiện diện tại http://www.xwinman.org.

10.2. Cấu hình

Hầu hết các card video trên thị trường hiện đang được hỗ trợ, nhưng đôi khi, khi một card mới xuất hiện trên thị trường, nó cần vài tuần hoặc tháng trước khi nó được hỗ trợ trong X-Window. Trong mọi trường hợp, số lượng các nhà sản xuất hỗ trợ cho GNU/Linnux đang tăng dần, và trong một số trường hợp, họ đang cung cấp rồi các trình điều khiển của riêng họ cho hệ điều hành này. Dù vậy, trước khi mua một card video, điều quan trọng phải kiểm tra xem có một số dạng trình điều khiển mà thích hợp cho phát tán chúng ta đang sử dụng. Để cài dặt XOrg lên máy tính, chúng ta trước hết phải tải về các gói chứa các công cụ và phần mềm cơ bản cho máy trạm và máy chủ. Thông thường,

những gói đó được gọi là xorg, xserver-xorg,... và chúng đi với nhiều sự phụ thuộc nguồn và một số tiện ích cơ bản để làm việc trong X-Window. Một khi chúng ta đã cài đặt những gói đó, chúng ta

Trang 167/232

Page 168: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

phải thiết lập cấu hình cho các thiết bị chúng ta có một cách đúng đắn phù hợp, sao cho chúng ta có thể khởi động đúng với máy chủ và máy trạm X-Window. Phụ thuộc vào phát tán mà chúng ta đang sử dụng, chúng ta có thể sử dụng chương trình này hay chương trình kia hoặc, trong những trường hợp nhất định, bản thân sự cài đặt gói đưa ra một ứng dụng thiết lập cấu hình nhỏ. Tuy nhiên, cấu hình này phải luôn tuân theo các bước nhất định, mà chúng ta sẽ mô tả bên dưới, được phân loại theo dạng thiết bị được thiết lập cấu hình:

• Card video

– Trình điều khiển (Driver): Các họ card video khác nhau đi với các vi xử lý đặc thù và sử dụng các chức năng được xác định để triển khai các hoạt động của chúng. Điều này giải thích vì sao chúng ta phải tìm ra trình điều khiển phù hợp cho card của chúng ta. Nếu chúng ta không biết cái nào là phù hợp, thì chúng ta có thể cài đặt một số dạng ứng dụng tự động dò tìm ra phần cứng; nếu chúng ta đã sử dụng, ví dụ, lệnh discover, thì chúng ta có khả năng nói trình điều khiển nào card của chúng ta có thể

cần với lệnh discover --xdriver video.

– Tên nhận diện (Identifier): Tên nhận diện card có thể là bất kỳ tên nào chúng ta muốn sử dụng để tham chiếu tới card của chúng ta. Tên nhận diện này được sử dụng trong nội bộ để tham chiếu đúng tới các card chúng ta đã cài đặt trong hệ thống.

– Lượng bộ nhớ (Amountofmemory): Phụ thuộc vào lượng bộ nhớ của card, chúng ta sẽ có khả năng khởi tạo các hình đồ họa với độ phân giải cao hơn hoặc thấp hơn và với các mức sâu về màu cao hơn hoặc thấp hơn. Dù không cơ bản để đưa vào lượng này (hệ thống sẽ tự động dò tìm ra), thì được khuyến cáo chỉ định nó trong cấu hình.

– Sử dụng khung bộ nhớ tạm (framebuffer) của nhân: khung bộ nhớ tạm của nhân là một trình điều khiển đặc biệt của Linux, làm cho có khả năng thực hiện những hoạt động nhất định trong X-Window. Dù không bắt buộc phải sử dụng nó, thì nó thường được sử dụng sao cho máy chủ X-Window có thể giao tiếp trực tiếp với nhân của hệ thống. Trong mọi trường hợp, nếu nó tạo ra bất kỳ vấn đề gì, thì chúng ta có thể luôn vô hiệu hóa được nó.

• Bàn phím

– Qui định XKB: đối với máy chủ X-Window để điều khiển được bàn phím đúng, nó cần biết những qui định nào áp dụng cho nó. Đối với các bàn phím PC tiêu chuẩn nhất, thì qui định “xfree86” được sử dụng và qui định của “mặt trời” (sun) thường được sử dụng cho các máy trạm của hãng Sun.

– Mẫu bàn phím: mẫu bàn phím thường được xác định bằng một số phím đi theo. Các bàn phím máy tính cá nhân PC tiêu chuẩn có các phím thực đơn và logo thường có 104 phím (chúng ta xác định chúng bằng tên “PC104”). Các bàn phím không có các phím đó được xác định như là các bàn phím với 101 phím (“PC101”).

– Trình bày bàn phím: Trong phần này, chúng ta phải xác định quốc gia gốc của bàn phím đang sử dụng tiêu chuẩn ISO 3166. Mã cho bàn phím Tây Ban Nha là “es”, bàn phím cho Pháp là “fr”...

– Các lựa chọn bàn phím: lựa chọn cho việc cá nhân hóa một số phím trên bàn phím.

Trang 168/232

Page 169: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

• Chuột

– Cổng: Cổng chuột là kết nối sử dụng để giao tiếp với máy tính. Khi chúng ta mua một chuột, nó sẽ luôn chỉ định liệu nó là dạng PS/2, dạng nối tiếp, USB hay … Nếu

chuột là dạng PS/2, thì cổng sẽ là /dev/psaux; đối với chuột nối tiếp thì cổng sẽ là

/dev/ttyS0 (COM1), /dev/ttyS1 (COM2) và cứ như thế, một cách tuần tự.

– Dạng: Một danh sách thường được đưa ra, sao cho chúng ta có thể chỉ định dạng chuột, từ đó chúng ta phải chọn một loại với mẫu và nhà sản xuất tương tự nhất đối với chuột của chúng ta. Thông thường, một khi chúng ta biết được mẫu của chuột, thì chúng ta có thể chọn được lựa chọn đúng.

– Mẫu 3 núm: Nếu chuột của chúng ta chỉ có 2 núm, chúng ta cũng có thể có khả năng mô phỏng núm thứ 3 (núm ở giữa) bằng việc nhấn 2 núm cùng một lúc. Nếu chuột của chúng ta không có núm ở giữa, thì chúng ta nên kích hoạt lựa chọn này, vì một số chương trình X-Window cần một chuột có 3 núm.

• Màn hình

– Tên nhận diện (Identifier): Như đối với card video, tên nhận diện màn hình được sử dụng sao cho hệ thống có thể tham chiếu tới nó trong nội bộ. Chúng ta có thể chỉ định bất kỳ tên nào chúng ta muốn cho màn hình.

– Các màn hình dạng LCD: trong hầu hết các qui trình thiết lập cấu hình, chúng ta sẽ được hỏi liệu màn hình của chúng ta có là dạng màn hình LCD hay không (màn hình TFT). Điều quan trọng phải trả lời câu hỏi này đúng vì cách mà một màn hình này hay khác được sử dụng là khác nhau một cách tương ứng.

– Các tính năng: khi thiết lập cấu hình cho các tính năng, chúng ta sẽ được hỏi về độ phân giải tối đa của màn hình, tốc độ làm tươi... Dù ít nhiều các câu hỏi dạng này sẽ nảy sinh phụ thuộc vào chương trình được sử dụng để thiết lập cấu hình cho X-Window, thì điều quan trọng phải có thông tin màn hình sẵn sàng và để trả lời cho các câu hỏi đúng để tận dụng được tất cả các tính năng.

– Các độ phân giải có sẵn: tại thời điểm này, chúng ta phải vào độ phân giải mà ở đó chúng ta muốn màn hình hoạt động khi chúng ta khởi động X-Window. Cũng là bình thường cho hệ thống để hỏi chúng ta xác định độ sâu của màu mà chúng ta muốn sử dụng một cách mặc định; điều được khuyến cáo nhất là hãy sử dụng một độ sâu màu cao (16 hoặc 24 bit) sao cho chúng ta có thể thấy được tất cả các màu một cách sắc sảo. Một khi chúng ta đã trả lời cho các câu hỏi đó, thì có lẽ ít nhiều phụ thuộc vào chương trình chúng ta sử dụng, toàn bộ cấu hình sẽ được lưu giữ trong tệp

/etc/X11/XF86Config-4.

Tất cả các phần khác mà chúng ta đã xem được tổ chức trong tệp này và nếu chúng ta xem sách chỉ dẫn, thì chúng ta sẽ thấy rằng chúng ta có rất nhiều khả năng hơn nữa được đưa ra cho chúng ta với sự mềm dẻo hoàn toàn cho việc cấu hình X-Window của chúng ta theo cách mà chúng ta muốn. Để kiểm tra xem liệu chúng có thực sự làm việc hay

không, chúng ta có thể chạy x, tại điểm đó một màn hình với các ô rất nhỏ màu đen và trắng sẽ xuất hiện và chuột sẽ xuất hiện như một dấu

Trang 169/232

xsession

Khi chúng ta sử dụng startx

hoặc xinit, các lệnh của

tệp /etc/X11/Xsession sẽ chạy. Nếu thư mục gốc home của người sử dụng mà khởi tạo lên X-Window có chứa

một tệp .xsession, thì nó sẽ là các lệnh trong tệp này mà sẽ chạy, thay vì các tệp trong tệp khác.

Page 170: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

“X” (để ra khỏi màn hình này, hãy nhấn tổ hợp phím Ctrl+Alt+Backspace).

Nếu chúng ta đã cài đặt một số dạng trình quản lý cửa sổ, thì những gì chúng ta sẽ thường làm khi

khởi động X-Window là hãy sử dụng một trong các shell script xinit hoặc startx. Chúng sẽ khởi tạo trình quản lý cửa sổ được thiết lập cấu hình và sẽ triển khai một số hành động khác theo yêu cầu để khởi động X-Window lên một cách đúng đắn. Một khi màn hình là ở chế độ đồ họa, thì chúng ta có thể thay đổi độ phân giải bằng việc sử dụng các tổ hợp phím Ctrl+Alt++ và Ctrl+Atl+-, hoặc quay về với bảng điều khiển văn bản với Ctrl+Alt+F1, Ctrl+Alt+F2 … (với Ctrl+Alt+F7, chúng ta có thể trở về môi trường đồ họa).

Một tính năng quan trọng khác trong cấu hình của X-Window là cấu hình của Xwrappers. Xwrappers cho phép chúng ta kiểm soát những người sử dụng nào có thể khởi động các phiên làm việc với X-Window với các giá trị khác nhau:

• console: bất kỳ người sử dụng nào trong bảng điều khiển có thể khởi tạo X-Window.

• Rootonly: chỉ gốc root có thể khởi tạo X-Window.

• anybody: bất kỳ người sử dụng nào của hệ thống cũng có thể khởi tạo X-Window (thậm chí nếu họ không được kết nối một cách cục bộ).

Điều này là rất hữu dụng, đặc biệt cho việc quản trị một máy chủ trong đó những người sử dụng thường không được phép làm việc với môi trường đồ họa vì lượng tài nguyên mà máy chủ này tiêu dùng.

10.3. Trình quản lý hiển thị X

Trong phần trước, chúng ta đã thấy cách thiết lập cấu hình cho X-Window một cách cục bộ. Như chúng ta đã lưu ý thông qua phần đó, kiến trúc của hệ thống cửa sổ của X-Window cho phép máy trạm và máy chủ được cài đặt trong các máy tính khác nhau. Để thiết lập cấu hình cho máy tính của chúng ta sao cho nó triển khai được các chức năng của một máy trạm X-Window, chúng ta phải cài đặt một số dạng trình quản lý hiển thị X. Những chương trình này mở ra một cổng giao tiếp với nó các máy trạm có thể giao tiếp được với máy trạm và làm việc với X-Window từ xa. Dù có nhiều chương trình dạng này, thì một trong những chương trình đầu tiên xuất hiện và trong đó nhiều

chương trình khác dựa vào là xdm.

Các trình quản lý hiển thị X có thể làm việc cả cục bộ và từ xa. Cùng với những chức năng khác, chúng chỉ ra màn hình (trong một môi trường đồ họa) sao cho những người sử dụng có thể xác định được bản thân mình với sự đăng nhập và mật khẩu của họ. Chúng làm việc như bất kỳ daemon nào khác của hệ thống, sao cho chúng ta có thể thiết lập cấu hình cho chúng để khởi động và dừng khi chúng ta muốn (bằng việc sử dụng các mức chạy mà hệ thống đưa ra). Chúng ta phải nhớ rằng nếu chúng ta thiết lập cấu hình cho nó làm việc một cách cục bộ, thì khi chúng ta khởi động hệ thống, chúng ta thấy bản thân chúng ta trong màn hình đăng nhập đồ họa và không với bảng điều khiển mà chúng ta đã quen (dù chúng sẽ vẫn sẵn sàng). Với thiết lập cấu hình này, chúng ta sẽ không còn có

khả năng sử dụng startx hoặc xinit để khởi động X-Window, vì nó sẽ chạy một cách mặc định.

Khi chúng ta cài đặt , thì tất cả các tệp cấu hình của nó sẽ được đặt trong thư mục /etc/X11/xdm. Chúng ta bây giờ sẽ đề cập tới từng thứ mà các tệp đó chứa:

Trang 170/232

Page 171: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Bảng 10.2

xdm-config Địa điểm của các tệp cấu hình của xdm.

xdm.options Các lựa chọn cấu hình toàn cầu.

Xaccess Định nghĩa thiết bị ở xa mà chúng ta không còn truy cập được nữa.

Xservers Các máy chủ cục bộ của xdm.

Xresources Cấu hình của màn hình đăng nhập: màu, các nguồn, kích cỡ...

Xsetup Script sẽ chạy khi chúng ta khởi động xdm.

Xstartup Script sẽ chạy khi một người sử dụng vào X-Window. Thường sẽ có các hành động

có liên quan tới xdm.

Xsetup Script sẽ chạy khi chúng ta vào một phiên làm việc của người sử dụng. Thường có những hành động nhất định cho những người sử dụng, mặc dù sự thực thi của các

tệp thường được gọi tới /etc/X11/Xsession.

Xreset Script sẽ chạy khi các phiên làm việc của người sử dụng kết thúc.

Chúng ta sẽ thấy cấu hình của các máy chủ cục bộ trong tệp Xservers. Nếu chúng ta muốn vô hiệu hóa máy chủ cục bộ, thì chúng ta có thể bình luận tất cả các dòng trong tệp đó. Theo cách này, thậm chí nếu chúng ta đã có một máy trạm X-Window được cài đặt, theo mặc định, thì nó có thể không khởi động trong máy cục bộ. Mặt khác, nếu chúng ta mong muốn cài đặt hơn một máy, thì chúng ta có thể soạn sửa tệp đó và bổ sung thêm các lệnh như sau:

0 local /usr/X11R6/bin/X :0 vt7 :1 local /usr/X11R6/bin/X :1 vt8

Hai lệnh đó chỉ ra rằng chúng ta muốn có 2 cài đặt của X-Window, một cài đặt trong bảng điều

khiển 7 (vt7) và một cài đặt trong bảng điều khiển 8 (vt8), có khả năng truy cập được bằng các tổ hợp phím Ctrl+Alt+F7 và Ctrl+Alt+F8 một cách tương ứng. Hãy để chúng ta kiểm tra cách mà mỗi

lệnh đưa vào :0 hoặc :1, phụ thuộc vào cài đặt X-Window được tham chiếu tới. Mặc định, chúng ta sẽ luôn sử dụng 0, nhưng chúng ta phải tham chiếu tới nó theo cách này nếu chúng ta muốn có hơn một máy chủ cục bộ. Ở cuối của mỗi dòng, chúng ta có thể bổ sung các tham số đặc biệt cho từng

máy chủ X-Window (chúng ta sẽ thấy tất cả các tham số có khả năng trong man X), như độ sâu của màu mà chúng ta muốn cho từng máy, độ phân giải màn hình... Theo cách này, có thể làm việc với các phiên làm việc mở khác nhau của X-Window, như chúng ta đã làm với các bảng điều khiển.

An ninh của X-Window

Nếu tệp Xaccess gồm một dòng với ký tự “*”, thì điều này chỉ rằng chúng ta sẽ cho phép bất kỳ máy chủ nào kết nối với X-Window của máy chủ đó. Bằng việc sử dụng X-Window từ xa mà không có bất kỳ dạng mã hóa nào cũng có thể tạo ra một lỗ hổng an ninh, mà nó giải thích vì sao rất đáng khuyến cáo rằng những người sử dụng thông báo cho bản thân mình một cách đúng đắn phù hợp tại thời điểm này, trước khi sử dụng nó.

Thông thường, thiết lập mặc định của xdm không cho phép các kết nối ở xa vì những lý do an ninh.

Nếu chúng ta muốn kích hoạt những kết nối đó, thì chúng ta có thể soạn sửa tệp Xaccess và, bằng việc sử dụng cú pháp được chỉ định, hãy bổ sung các máy chủ tới những gì chúng ta muốn cung cấp

cho dịch vụ này. Chúng ta cũng nên bình luận trên dòng DisplayManager.requestPort: 0 của tệp

xdm-config, mà, theo mặc định, vô hiệu hóa tất cả các kết nối nó nhận được. Khi đã thực hiện xong

những thay đổi đó, nếu chúng ta khởi động lại daemon của xdm, máy trạm có thể được chuẩn bị rồi để phục vụ X-Window cho bất kỳ máy chủ nào đã yêu cầu nó.

Trang 171/232

Page 172: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Đối với các máy trong đó chúng ta chỉ muốn cài đặt máy chủ X-Window, thì chúng ta phải cài đặt X-Window chỉ như chúng ta đã thấy

trong phần trước và sử dụng lệnh X -query IP, trong đó IP sẽ là của máy trạm đó. Theo đúng cách y như vậy như khi chúng ta đã có hơn một máy chủ X-Window trong một máy cục bộ, nếu chúng ta đã có cài đặt X-Window khác rồi đang chạy trên máy đó, chúng ta có thể phải sử

dụng lệnh X -query IP :1 cho cài đặt thứ hai, :2, cho cài đặt thứ ba, và cứ thế tương tự.

Trang 172/232

Xnest

Xnest là một máy chủ X-Window cho phép chúng ta mở một cài đặt khác của X-Window trong một cửa sổ.

Page 173: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

11. Hội thảo về X-Window

11.1. Giới thiệu

Trong hội thảo lần 2, chúng ta đã thảo luận các khía cạnh cơ bản cho việc điều hành và quản lý các gói cho đúng và chúng ta đã học cách thiết lập cấu hình cho một số thiết bị. Dù vậy, do tính phức tạp của nó, chúng ta đã chưa đề cập tới cấu hình của card video, hoặc, có lẽ, việc cài đặt môi trường đồ họa X. Vì tính phức tạp của cấu trúc và cấu hình của nó, chúng ta đã quyết định dành riêng một hội thảo cho Hệ thống X-Window. Trong hội thảo này, chúng ta sẽ học cách cài đặt, thiết lập cấu hình và cá nhân hóa hệ thống này. Nhưng chúng ta sẽ không cố đưa ra một sự xem xét toàn diện của toàn bộ hệ thống, vì làm như vậy có lẽ là không có khả năng vì nhiều lý do khác nhau. Những gì chúng ta sẽ làm là cung cấp một số tri thức cơ bản sao cho mỗi người sẽ có khả năng thiết lập cấu hình cho hệ thống của riêng họ, phụ thuộc vào dạng card video mà họ có và những ưu tiên và ý thích cá nhân của họ. Ở cuối của hội thảo, chúng ta sẽ có khả năng cài đặt một môi trường X và biết cách tận dụng sức mạnh không thể tin nổi của nó.

Hoạt động

11.1 Vì tính phức tạp của hệ thống X, là hữu dụng để đọc các tài liệu sau để có được ý tưởng về các khái niệm cơ bản, trước khi làm việc trong hệ thống. Bổ sung thêm, những tài liệu đó sẽ đưa ra tri thức bổ sung mà chúng ta sẽ có khả năng đưa vào thực tiễn trong quá trình tiến hành hội thảo.

a) XWindow-Overview-HOWTO. Đây là một tài liệu đơn giản có thể đọc để tiêu hóa được những khái niệm cơ bản có liên quan tới hệ thống.

b) XWindow-User-HOWTO. Đây là một tài liệu với những nội dung cao cấp hơn so với tài liệu ở trên, nhưng cũng rất hữu ích.

11.2. Cài đặt và thiết lập cấu hình của máy chủ X

Như chúng ta đã lưu ý, Hệ thống X-Window là một hệ thống rất phức tạp, nó tích hợp rất nhiều thư viện và ứng dụng, một số trong số đó là cơ bản để làm việc với nó, dù hầu hết chỉ phải được cài đặt nếu chúng ta thực sự cần tới chúng, vì sự cần thiết đặc biệt của chúng ta. Đây là một lý do giải thích vì sao, trong Debian, hệ thống này được phân tán trong nhiều gói khác nhau, mà chúng ta chỉ cài đặt một số gói trong số đó khi chúng ta cần.

11.2.1. Các chiến lược khác nhau cho việc cài đặt các gói

Vì thực tế là có những sự phụ thuộc mạnh giữa các gói khác nhau, nên chúng ta có thể tận dụng được điều này sao cho hệ thống quản lý gói thực tế cài đặt được tất cả các gói được tin tưởng là cần thiết cho một ứng dụng mức cao để làm việc, trong đó nó sẽ thấy, một cách rõ ràng, tất cả các gói cơ

bản của hệ thống. Hệ quả là, chúng ta có thể sử dụng dselect hoặc apt-get để cài đặt một trong các ứng dụng đó. Nhưng đây không phải là một chiến lược tốt, vì nó liên quan tới sự mất kiểm soát các gói mà chúng ta đang cài đặt và nó cũng có thể có nghĩa là một số gói cơ bản bị bỏ qua, vì không tham chiếu nào được thực hiện đối với chúng khi các phụ thuộc đã được tính toán, vì bất kỳ lý do gì. Vì thế, chúng tôi khuyến cáo xây dựng hệ thống từng bước một, sao cho chúng ta biết được những gói nào đang được cài đặt trong từng giai đoạn và hiểu được vì sao.

Trang 173/232

Page 174: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

11.2.2. Cài đặt các gói cơ bản

Chipset và thiết bị

Bước đầu tiên là phải xác định chipset của card video và thiết bị hỗ trợ cho nó. Hãy chạy lệnh lspci

trong một cửa sổ dòng lệnh và tìm kiếm các từ VGA compatible controller:. Thông tin mà bình thường tuân theo tên nhận diện ít nhất đối với nhãn hiệu của card video và có thể là thiết bị mà bạn sẽ cần. Ví dụ,

$lspci 01:03.0 VGA compatible controller: ATI Technologies Inc ES1000 (rev 02)

Cột đầu tiên chỉ số lượng các PCI bus mà card được kết nối tới ở định dạng <bus>:<slot>:<func>.

Bằng việc chạy

$lspci -n -s bb:ss.f

chúng ta xác định được các số PCI bus đối với nhà cung cấp vendor và mã thiết bị device ID của card.

Ví dụ

$lspci -n -s 01:03.0 01:03.0 0300: 1002:515e (rev 02)

Nhà cung cấp vendor và mã thiết bị device ID có định dạng vvvv:dddd theo số hệ 16 hexadecimal.

Trong trường hợp này, nhà cung cấp vendor và mã thiết bị device ID của card là 1002:515e.

Với thông tin này, chúng ta tìm các card video (http://www.calel.org/pcidevices/xorg-device-

list.html) cho thiết bị mà chúng ta cần sử dụng. Trong trường hợp này, thiết bị đó là radeon.

Chúng ta cũng cần biết tốc độ quét của màn hình theo chiều dọc và chiều ngang. Sự quét thường được thấy trong phần các đặc tả của sách chỉ dẫn màn hình. Những dữ liệu đó là rất quan trọng và các giá trị không đúng có thể gây ra cho màn hình dừng làm việc đúng đắn và thậm chí có thể gây ra thiệt hại.

Cài đặt X.org

Từ trình biên dịch các lệnh, từ tài khoản gốc root, chúng ta gõ vào:

#apt-get install xorg

Đây là một siêu gói mà, khi sử dụng hệ thống các phụ thuộc, sẽ cài đặt một tập hợp các gói X11, như máy chủ X.Org, một tập hợp các công cụ và phông chữ cơ bản.

Chúng ta bây giờ sẽ đi qua sự thiết lập cấu hình từng bước một của gói xserver-xorg, triển khai với

debconf. Nếu chúng ta làm thứ gì đó sai, thì chúng ta có thể hoàn lại nó bằng tổ hợp phím “Ctrl+C” và thiết lập cấu hình lại cho nó bằng

#dpkg-reconfigure xserver-xorg

Thiết bị X

Chúng ta sẽ chọn thiết bị phù hợp nhất cho card video từ danh sách, tuân theo với cách mà chúng ta đã xác định chipset ở đầu. Ví dụ:

Chúng ta sau đó sẽ đặt ra một cái tên, như là tên mặc định, ví dụ là card video chung Generic

Trang 174/232

Page 175: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Video Card.

Sau đó chúng ta xác định card trong PCI bus, ví dụ là PCI:1:0:0.

Nó hầu hết luôn được dò tìm ra một cách tự động. Chúng ta sẽ để lại một lượng bộ nhớ trống sao cho máy chủ tự động dò tìm ra nó được. Chúng ta sẽ chọn không sử dụng thiết bị khung bộ nhớ tạm (“framebuffer”) của nhân.

Bàn phím

Chúng ta sẽ thiết lập nó sao cho bàn phím không tự động được dò tìm ra. Chúng ta chọn ngôn ngữ

mặc định của bàn phím (mặc định là Mỹ us, es dành cho Tây Ban Nha). Chúng ta chọn các qui định

bàn phím xorg (mặc định). Chúng ta chọn dạng bàn phím (mặc định là pc104). Các lựa chọn khác là

pc101, pc102, pc105. Hai lựa chọn cuối là cho các bàn phím châu Âu. Chúng ta để phương án và các lựa chọn bàn phím (variant and options of the keyboard) là trống.

Chuột

Chúng ta chọn thiết bị chuột, ví dụ, /dev/input/mice.

Nếu chuột được kết nối tới một cổng giao tiếp nối tiếp, thì /dev/ttyS0 tương ứng với cổng COM1,

/dev/ttyS1 tới cổng COM2 … Cái /dev/psaux là dành cho chuột dạng PS/2 và /dev/input/mice là dành cho chuột dạng USB.

Chúng ta chọn giao thức của chuột, ví dụ, ImPS/2.

Chúng ta chọn lựa chọn cho việc mô phỏng chuột 3 núm.

Các module

Chúng ta chọn các module mặc định

Đường dẫn tệp

Chúng ta chọn cấu hình mặc định của phần các tệp "Files".

Màn hình

Chúng ta chọn dò tìm màn hình một cách tự động. Chúng ta sau đó sẽ đặt ra một cái tên, như theo

mặc định, ví dụ màn hình chung Generic Monitor.

Bằng việc sử dụng thanh spacebar, chúng ta chọn các độ phân giải mà card video và màn hình hỗ trợ, thường là 1280x1024 hoặc 1024x768. Chúng ta chọn chế độ cao cấp cho việc cấu hình màn hình. Chúng ta vào tốc độ quét ngang và sau đó tốc độ quét dọc. Những giá trị hoặc dãy đó thường được thấy trong phần các đặc tả kỹ thuật của sách chỉ dẫn màn hình. Nếu chúng ta không có thông tin này, thì tốt nhất là hãy vào dải cao hơn, như 28-100 cho tốc độ quét ngang và 40-100 cho tốc độ quét dọc. Chúng ta chọn độ sâu màu, thường là 24 bit.

Chạy các script

Sau khi giải nén cho các gói, các script cấu hình của vài trong số chúng sẽ chạy một cách tự động. Luôn có khả năng ngắt sự thực thi của các script đó bằng việc nhấn tổ hợp phím Ctrl+C, và sau đó khởi động lại tiến trình, bằng việc chạy lệnh trước đó.

Trang 175/232

Page 176: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

11.3. Thiết lập cấu hình cho X

Tệp /etc/X11/xorg.conf có chứa cấu hình của X.Org và được chia thành các phần sau:

Files # Path of the Module files # Dynamic modules InputDevice # Description of the

peripheral devices Device # Description of the video devices Monitor # Description of the

Monitor Screen # Configuration of the ServerLayout screen # Global DRI scheme # Configuration

specific to DRI

Mỗi phần bắt đầu với lệnh Section theo sau là tên của phần đó trong dấu ngoặc kép và kết thúc với

EndSection. Có các lệnh là đặc thù cho từng phần. Chúng ta sẽ xử lý từng bước một, không nhất thiết theo trật tự của tệp, mô tả các phần và giải thích ý nghĩa của từng lệnh, sao cho chúng ta sau đó

có thể sửa đổi cấu hình bằng việc sử dụng một trình soạn thảo văn bản (ví dụ như nano) với những tham số phù hợp cho phần cứng đó.

Để tiến hành những thay đổi cho /etc/X11/xorg.conf có hiệu quả. chúng ta phải khởi động lại trình quản lý hiển thị bằng việc sử dụng

#/etc/init.d/gdm restart

11.3.1. Phần “Thiết bị” (Device)

Phần này xác định và thiết lập cấu hình cho thiết bị card video.

Khoản đầu vào của tên nhận diện đơn giản là tên để xác định từng phần.

Section "Device" Identifier "Generic Video Card" Driver "sis" BusID "PCI:1:0:0" EndSection

Khoản trình điều khiển Driver chỉ định thiết bị. Trong ví dụ này, thiết bị sis hỗ trợ nhiều dạng card video bằng chipset SiS. Các thiết bị phổ biến khác là: cirrus, ati, r128 (ATI Rage 128), radeon (ATI Radeon), s3virge, savage, trident, tseng. Chúng ta có thể sử dụng phương pháp được mô tả ở đầu để xác định dạng thiết bị nào chúng ta đang sử dụng.

Khoản BusID xác định card video trong PCI bus, mà chúng ta có thể xác định bằng lspci.

11.3.2. Phần “Màn hình” (Monitor)

Phần này xác định màn hình.

Section "Monitor" Identifier "Generic Monitor" Option "DPMS" HorizSync 28-100 VertRefresh

40-100 EndSection

Khoản tên nhận diện là tương tự như ở phần thiết bị "Device". Có thể có các phần màn hình

"Monitor" khác nhau trong tệp, mỗi phần với một tên nhận diện khác nhau. Điều này là thuận tiện nếu, ví dụ, chúng ta có các màn hình khác nhau, như một cái ở nhà và một cách ở nơi làm việc. Theo cách này, chúng ta có thể dễ dàng xác định được một cấu hình khi máy tính ở nhà và cái khác khi ở nơi làm việc.

Khoản HorizSync chỉ định tốc độ quét ngang của màn hình theo đơn vị kHz. Nó có thể là tốc độ cố

định [31.5], nhiều tốc độ cố định [31.5,35.2], một dải [30-64], hoặc nhiều dải [15-25,30-64].

Khoản VertRefresh chỉ định tốc độ quét dọc theo đơn vị Hz và các giá trị có định dạng y hệt như

Trang 176/232

Page 177: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

của HorizSync.

11.3.3. Phần “Màn hình” (Screen)

Phần này xác định màn hình, kết hợp cấu hình của thiết bị và màn hình.

Section "Screen" Identifier "Default Screan" Device "Generic Video Card" Monitor

"Generic Monitor" DefaultDepth 24 Subsection "Display" Depth 1 Modes "1024x768"

"800x600" "640x480" EndSubsection Subsection "Display" Depth 4 Modes "1024x768"

"800x600" "640x480" EndSubsection Subsection "Display" Depth 8 Modes "1024x768"

"800x600" "640x480" EndSubsection Subsection "Display" Depth 15 Modes "1024x768"

"800x600" "640x480" EndSubsection Subsection "Display" Depth 16 Modes "1024x768"

"800x600" EndSubsection Subsection "Display" Depth 24 Modes "1024x768" EndSubsection

EndSection

Chúng ta sẽ lưu ý rằng các khoản thiết bị Device và màn hình Monitor có giá trị y hệt như khoản

tên nhận diện Identifier trong các phần thiết bị "Device" và màn hình "Monitor". Điều này có nghĩa là cấu hình của các phần khác nhau được liên kết với nhau.

Khoản độ sâu mặc định DefaultDepth chỉ định độ sâu màu mặc định, trong ví dụ này là 24 bit. Có

thể có những phần con khác nhau của sự hiển thị "Display". Khoản độ sâu Depth chỉ định độ sâu

màu của phần con đó. Các giá trị có khả năng là 8 (256 màu), 16 (64K màu) và 24 bit. Điều này có

nghĩa là độ sâu mặc định Default-Depth sẽ chỉ định phần con mặc định của hiển thị "Display".

Khoản chế độ Modes chỉ định các độ phân giải. Một độ phân giải ["640x480"] hoặc danh sách các

độ phân giải ["1600x1200" "1280x960" "1152x864" "1024x768" "800x600" "640x480"], có thể được chỉ định. Thông thường, cái đầu tiên trong danh sách được sử dụng, nếu nó được hỗ trợ; nếu không, thì là cái tiếp sau, và cứ như thế.

Thông thường, độ sâu màu càng lớn bao nhiêu, thì độ phân giải cực đại càng bé bấy nhiêu sẽ sẵn sàng. Chúng ta có thể giảm độ sâu màu nếu hình ảnh trên màn hình là tồi đối với một độ phân giải nhất định, hoặc chúng ta có thể duy trì độ sâu bằng cách giảm độ phân giải đó.

11.3.4. Phần thiết bị đầu vào (“InputDevice”)

Phần này thiết lập cấu hình cho các thiết bị ngoại vi như bàn phím, chuột, chuột vê (trackpad), màn hình cảm biến... Các thiết bị đầu vào phổ biến nhất là các bàn phím và chuột; rõ ràng mỗi thứ là tách bạch nhau.

Cấu hình cho bàn phím:

Section "InputDevice" Identifier "Generic Keyboard" Driver "kbd" Option "CoreKeyboard"

Option "XkbRules" "xorg" Option "XkbModel" "pc105" Option "XkbLayout" "es" EndSection

Tất cả các bàn phím có một thiết bị chung gọi là kbd. Khoản lựa chọn bàn phím cốt lõi Option

"CoreKeyboard" chỉ ra rằng bàn phím được phần đó xác định là bàn phím chính. Khoản lựa chọn

Option "XkbModel" chỉ định dạng bàn phím. Các giá trị phổ biến nhất là "pc101", "pc102",

"pc104", "pc105" hoặc "microsoft" cho bàn phím gốc của Microsoft. Khoản lựa chọn Option

Trang 177/232

Page 178: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

"XkbLayout" xác định ngôn ngữ bàn phím: "es" cho bàn phím tiếng Tây Ban Nha và "us" cho bàn phím tiếng Anh.

Cấu hình cho chuột:

Section "InputDevice" Identifier "Configured Mouse" Driver "mouse" Option "CorePointer"

Option "Device" "/dev/input/mice" Option "Protocol" "ImPS/2" Option "Emulate3Buttons"

"true" Option "Buttons" "5" Option "ZAxisMapping" "4 5" EndSection

Thiết bị chuột phổ biến sẽ hỗ trợ 4 dạng chuột: nối tiếp, Bus, PS/2 và USB. Trong ví dụ đầu, chúng ta thiết lập cấu hình cho một chuột USB thông minh - USB IntelliMouse (với bánh xe).

Khoản lựa chọn con trỏ cốt lõi Option "CorePointer" xác định rằng chuột được phần đó xác định là chuột chính.

Khoản lựa chọn thiết bị Option "Device" chỉ định đơn vị thiết bị chuột. Một số ví dụ là

/dev/ttyS0 (nối tiếp), /dev/psaux (PS/2) và /dev/input/mice(USB). Thông thường, sẽ có một

liên kết biểu tượng /dev/mouse chỉ tới thiết bị này.

Khoản lựa chọn giao thức Option "Protocol" xác định dạng chuột. Các giao thức khác là:

"MouseMan" "Mousesystems" "IntelliMouse" "ExplorerPS/2" "ThinkingMouse" "ThinkingMousePS/2"

"NetScrollPS/2" "NetMousePS/2" "GlidePoint" "GlidePointPS/2" "MouseManPlusPS/2"

Các chuột nối tiếp cũ với 2 hoặc 3 núm thường được giao thức "Microsoft" hoặc "MouseMan" hỗ

trợ. Các chuột nối tiếp với một bánh xe được giao thức "IntelliMouse" hỗ trợ và các chuột PS/2

được "ImPS/2" hỗ trợ. Giao thức tự động "auto" đôi khi hỗ trợ nếu phần cứng có khả năng tự động dò tìm ra chuột.

Khoản lựa chọn các núm mô phỏng Option "Emulate3Buttons" sẽ mô phỏng núm ở giữa nếu chúng ta nhấn cả 2 núm trái và phải cùng một lúc. Chúng ta cũng có thể sử dụng hệ thống này trong các chuột với các núm thứ 3.

11.3.5. Phần trình bày máy chủ (“ServerLayout”)

Phần này có liên quan tới màn hình với các thiết bị ngoại vi.

Section "ServerLayout" Identifier "Default Layout" Screen "Default Screen" InputDevice

"Generic Keyboard" InputDevice "Configured Mouse" EndSection

Chúng ta nên đặc biệt lưu ý cách mà phần này kết hợp mọi thứ bằng việc sử dụng các tên nhận diện

của từng phần được xác định với Identifier.

11.3.6. Phần “DRI”

Một số card hiện đại có những gì được gọi là hạ tầng hoàn lại trực tiếp - DRI (Direct Rendering

Infrastructure). Để sử dụng điều này, bạn phải tải lên các module "glx" và "dri" trong phần các

module "Modules" section.

Phần DRI, mặc định, là

Trang 178/232

Page 179: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Section "DRI" Mode 0666 EndSection

Dù các card không hỗ trợ DRI có thể làm cho X bị treo.

11.3.7. Phần các tệp (“Files”)

Phần này xác định đường dẫn tệp cần thiết cho X. Đặc biệt, nó xác định đường dẫn và các phông

chữ trong "FontPath" entries.

11.3.8. Khởi động máy chủ

Đã tới lúc kiểm tra xem liệu tệp cấu hình máy chủ có đúng hay không và, hệ quả là, liệu máy chủ có khởi động được như mong muốn hay không. Để làm điều này, tất cả điều chúng ta phải làm là chạy

lệnh startx.

Nếu mọi thứ làm việc đúng, thì sau một lúc, một khối trộn xám với một chữ thập ở giữa sẽ xuất hiện trên màn hình của bạn. Điều này đại diện cho một bước lớn về phía trước, khi việc thiết lập cấu hình cho máy chủ để khởi động là điều khó khăn nhất đối với môi trường X. Bây giờ chỉ còn là câu hỏi về thời gian theo yêu cầu để kết thúc việc trao cho môi trường này sự trình bày mà chúng ta muốn nó có. Nếu chúng ta di chuột, thì chữ thập sẽ dịch chuyển và chúng ta có thể khai thác một số khả năng nhiều hơn trong môi trường đồ họa sơ bộ này bằng việc nhấn các núm chuột giữa và trái. Để thoát khỏi màn hình này và tiếp tục thiết lập cấu hình cho hệ thống, chúng ta phải nhấn núm

chuột trái, nhấn vào Yes, reallyquit của lựa chọn thoát Exit, hoặc đơn giản nhấn tổ hợp phím Ctrl+Alt+Backspace cùng một lúc.

Nếu, mặt khác, chúng ta trở về với bảng điều khiển số sau một lát, thì điều này có nghĩa rằng máy chủ đã không có khả năng để khởi động đúng đắn. Chúng ta bây giờ sẽ nghiên cứu tệp lưu ký

(/var/log/Xorg.0.log) một cách chi tiết và cố dò tìm ra các nguồn gây lỗi có khả năng. Phổ biến nhất thường là: lựa chọn tồi về trình điều khiển sẽ được tải lên (nếu chúng ta để lại tiến trình lựa chọn cho script, thì chúng ta phải kiểm tra trang được lưu ý ở trên để đảm bảo rằng trình điều khiển

mà script đã chọn là đúng), trong lệnh UseFBDev thì lựa chọn đúng true đã được chọn, trong khi nó

sẽ là sai false, các độ phân giải hoặc tốc độ quét là cao hơn so với được các card đang được sử dụng mong đợi...

Tới được điểm này rồi, chúng ta có thể sử dụng lệnh sau đây để tránh vào chế độ đồ họa mỗi lần chúng ta khởi động máy tính.

brau:~# rm /etc/rc2.d/S99xdm

Điều này sẽ hữu dụng, trong khi chúng ta còn chưa thiết lập cấu hình cho môi trường này xong hoàn toàn. Một khi chúng ta đã kết thúc, mọi việc sẽ phụ thuộc vào từng người sử dụng cá nhân liệu có hay không việc họ khởi động máy tính trong chế độ đồ họa. Để làm điều này, tất cả điều chúng ta phải làm là tạo ra liên kết biểu tượng mà chúng ta đã xóa một lần, bằng việc sử dụng lệnh trước đó:

brau:~# cd /etc/rc2.d brau:/etc/rc2.d# ln -s ../init.d/xdm S99xdm

11.3.9. Tệp lưu ký

Dù tiến trình khởi động máy chủ đã thành công, nó sẽ không làm chúng ta dừng việc phân tích các

nội dung tệp lưu ký chính của hệ thống X, /var/log/Xorg.0.log, khi mà điều này sẽ giúp chúng ta

Trang 179/232

Page 180: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

giải quyết bất kỳ lỗi nhỏ nào còn chưa làm đứt đoạn tiến trình khởi động của máy chủ, nhưng có thể làm giảm hiệu năng của nó. Một số ví dụ điển hình của chúng là: xóa dòng của tệp cấu hình tham chiếu tới các phông chữ Cyrillic, nếu chúng ta sẽ không bao giờ sử dụng chúng, khi chúng ta thậm chí không cài đặt chúng; xóa mọi thứ tham chiếu tới chuột chung (Generic Mouse) khỏi chính tệp đó, khi làm cho nó không tương thích với chuột mà chúng ta đã thiết lập cấu hình...

11.4. Các trình quản lý cửa sổ

Các trình quản lý cửa sổ là các chương trình máy trạm (trong thực tế, chúng được gọi là các siêu máy trạm (metaclients), có trách nhiệm quản lý các cửa sổ khác nhau chạy trong môi trường đồ họa và sự trình bày của chúng, cũng như việc khởi tạo các máy trạm khác (các ứng dụng). Tới giai đoạn

này, chúng ta đã có một trình quản lý cửa sổ được cài đặt, twm, khi mà một cài đặt hoàn chỉnh một hệ thống X đòi hỏi ít nhất một trình quản lý cửa sổ, thậm chí nếu nó không phải là một phần của

máy chủ đó, để mà chạy trên đó. Như chúng ta đã thấy, twm là rất sơ khai, có nghĩa là nó có thể là mối quan tâm của chúng ta để cài đặt một trong những thứ phức tạp hơn, như WindowMaker, BlackBox, qvwm... Chúng ta sẽ cài đặt một số trong số đó và sẽ thử chúng. Mục đích cuối cùng, tuân thủ với triết lý của GNU, là đối với mỗi người sử dụng để kết thúc bằng việc sử dụng phần mềm mà họ muốn. Một cách có hiệu quả, điều này có nghĩa là, một khi các sinh viên đã học được về các trình quản lý cửa sổ nhất định nào đó, thì tự họ sẽ có khả năng chọn cái nào họ muốn sử dụng. Rõ ràng, có khả năng để có nhiều hơn một trình quản lý cửa sổ được cài đặt, dù chỉ một có thể chạy trong từng phiên làm việc. (Tuy nhiên, chúng ta có thể, như một ví dụ về tính mềm dẻo của hệ thống X, có 2 trình quản lý cửa sổ cùng chạy trên cùng một máy tính, mỗi cái trong một cửa sổ dòng lệnh khác nhau).

Trước hết, chúng ta sẽ cài đặt, như một ví dụ, qvwm. Vậy là, như chúng ta sẽ thấy khi chúng ta khởi động nó, một trình quản lý cửa sổ mô phỏng một môi trường chúng ta có khả năng quen thuộc. Để làm điều này, tất cả điều chúng ta phải làm là chạy lệnh:

brau:~# apt-get install qvwm

Tới thời điểm này, chúng ta sẽ có 2 trình quản lý cửa sổ được cài đặt: twm và qvwm. Để chạy một trong 2 trình quản lý đó, tất cả điều chúng ta phải làm là chỉ ra đường dẫn hoàn chỉnh vị trí của trình

quản lý mà chúng ta muốn sử dụng, sau lệnh startx (chúng ta nên nhớ rằng lệnh whereis có thể rất hữu dụng nếu chúng ta cần định vị tệp đó). Vì thế, để chạy trình quản lý cửa sổ mà chúng ta muốn cài đặt, tất cả điều chúng ta phải chạy là:

brau:~# startx /usr/bin/X11/qvwm

Để sử dụng twm, chúng ta phải chỉ định đường dẫn đầy đủ, như sau:

brau:~# startx /usr/bin/X11/twm

Khi phải chỉ định trình quản lý cửa sổ nào chúng ta muốn sử dụng, một khi chúng ta đã quyết định được một trình cụ thể, có thể là khá vất vả. Để chỉ định trình quản lý cửa sổ nào sẽ được sử dụng

nếu sau lệnh startx, không trình cụ thể nào được chỉ định, thì chúng ta sẽ tạo tệp .xsession trong thư mục gốc root của người sử dụng với các nội dung sau, trong trường hợp chúng ta cần trình quản

lý cửa sổ mặc định sẽ là twm, ví dụ:

#˜/.xsession exec twm

Trang 180/232

Page 181: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Nếu chúng ta muốn qvwm sẽ là trình quản lý cửa sổ mặc định, thì chúng ta có thể đơn giản thay đổi

twm thành qvwm. Việc chạy các tiến trình khác nhau có liên quan trong khi khởi động môi trường đồ họa và các tệp cấu hình mà sẽ được đọc trong tiến trình đó được xác định một cách chắc chắn. Một cách có hiệu quả, nếu chúng ta tạo ra tệp trước đó, thì những gì chúng ta đã làm được là sửa một trong các tệp mới nhất (các tệp trong thư mục gốc root của người sử dụng) mà được đọc trước khi vào được môi trường đồ họa. Tệp này, vì thế, cho phép chúng ta sửa đổi một số khía cạnh được xác

định một cách mặc định trong hệ thống và được xác định trong các tệp trong /etc/X11 và các thư mục con của chúng. Để kết thúc phần này, chúng ta sẽ cài đặt một trình quản lý cửa sổ được sử dụng rất rộng rãi trong thế giới GNU/Linux và nổi tiếng về tính linh hoạt và thực tế là nó tiêu tốn rất ít tài nguyên: WindowMaker:

brau:~# apt-get install wmaker

Chúng ta đã cài đặt rồi 3 trình quản lý cửa sổ, và chúng ta chắc chắn sẽ cài đặt nhiều hơn nữa. Ngoài phương pháp được mô tả ở trên cho việc thiết lập trước cái nào chúng ta muốn chạy một cách

mặc định, chúng ta cũng có thể sử dụng thực đơn của lệnh update-alternatives để thiết lập nó:

brau:~# update-alternatives x-window-manager

Đọc thêm

Chúng ta có thể thúc giục các sinh viên trở nên quen hơn một chút với trình quản lý cửa sổ và thăm website của nó để có được nhiều thông tin hơn tại: http://www.windowmaker.org.

11.5. Trình quản lý phiên X

Các trình quản lý phiên là những chương trình có thể chạy trong một phiên đồ họa và cho phép

chúng ta thiết lập và sửa đổi các tham số của nó. xms là trình quản lý phiên mặc định khi cài đặt mà chúng ta đã làm từ máy chủ đồ họa. Chúng ta có thể khởi tạo nó từ một máy đầu cuối X (để khởi tạo một khoản X - xterm, chúng ta sẽ nhấn núm chuột giữa và chọn Programs/Xshells/Xterm), bằng

việc sử dụng lệnh xms. Đã khởi tạo xong xms bằng việc sử dụng Checkpoint, chúng ta có thể lưu cấu hình của phiên hiện hành (về cơ bản tham chiếu tới các ứng dụng mà chúng ta đang chạy), quản lý các tiến trình đang chạy bằng việc sử dụng Danh sách các máy trạm - Client List, kiểm tra lưu ký

của phiên hoặc đóng phiên trong khi lưu giữ cấu hình hiện hành. Ngoài xsm, có những trình quản lý phiên khác. Chúng có xu hướng trở thành một phần khác của các trình quản lý môi trường đồ họa máy để bàn, và mức độ tích hợp là thật cao nên việc nhận thức được các hành động của chúng có thể thực sự khó khăn. Một ví dụ điển hình về điều này là câu hỏi chúng ta được hỏi về việc liệu chúng ta có muốn lưu phiên khi chúng ta đóng KDE hay không.

11.6. Trình quản lý hiển thị X

Khi chúng ta kết thúc cài đặt Xserver, chúng ta được gợi ý xóa liên kết biểu tượng

/etc/rc2.d/S99xdm để tránh, khi khởi động lại hệ thống để vào được mức chạy 2 để có xdm, nó là viết tắt của trình quản lý hiển thị X, chạy một lần nữa. Đây là trình quản lý hiển thị mặc định mà hệ thống X-Window cài đặt. Các trình quản lý hiển thị là các chương trình có trách nhiệm quản lý những người sử dụng nào có thể vào được môi trường đồ họa và từ đâu và bằng cách nào. Để khởi tạo nó, chúng ta sẽ xử lý như chúng ta có thể với bất kỳ daemon nào khác:

brau:?# /etc/init.d/xdm start

Trang 181/232

Page 182: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Để dừng nó, chúng ta cũng có thể sử dụng thủ tục y hệt như chúng ta định tuân thủ với bất kỳ daemon nào khác, với ngoại lệ là chúng ta có thể phải nhấn tổ hợp phím Ctrl+Atl+F1, để ra khỏi môi trường đồ họa và sử dụng tty1, ví dụ thế, thay vì sử dụng tổ hợp được sử dụng để thay đổi ttys trong các môi trường chữ số.

brau:?# /etc/init.d/xdm stop

Như chúng ta đã thấy, trình quản lý hiển thị yêu cầu chúng ta đăng nhập và mật khẩu, chúng là y hệt như những thứ chúng ta sử dụng để truy cập hệ thống với ttys, trừ phi chúng ta đã ép buộc một số dạng hạn chế. Sau khi chúng ta đã xác thực tài khoản của chúng ta, thì chúng ta vào chế độ đồ họa

theo hệt cách thức chúng ta đã làm bằng việc sử dụng lệnh startx. Sự khác biệt là, khi chúng ta kết

thúc phiên đồ họa, thì máy chủ sẽ không dừng, mà tiếp tục chạy xdm.

Một trong những sự không thuận tiện của xdm là nó không cho phép chúng ta chọn trình quản lý cửa

sổ nào chúng ta muốn làm việc với. Nhưng có những trình quản lý hiển thị khác, như wdm (của

WindowMaker), gmd (của dự án GNOME) hoặc kdm (của dự án KDE), mà cho phép điều này.

Chúng ta có thể cài đặt wdm, để thấy sự trình bày của nó và để biết được một trình hiển thị khác:

brau:?# apt-get install wdm

Khi script sau cài đặt chạy, chúng ta sẽ được hỏi trình quản lý hiển thị nào chúng ta muốn sử dụng,

xdm, mà chúng ta đã cài đặt rồi, hay wdm. Chúng ta sẽ chọn cái sau để tạo ra liên kết theo yêu cầu để

khởi tạo trình quản lý hiển thị wdm trong quá trình khởi động hệ thống (Nếu tệp /etc/rc2.d/S99xdm tồn tại, thì tốt hơn hãy xóa nó để tránh các thông điệp cảnh báo khi hệ thống khởi động). Nếu chúng ta không muốn bất kỳ trình quản lý hiển thị nào khởi động một cách tự động khi chúng ta khởi động hệ thống, thì tất cả điều chúng ta phải làm là xóa các liên kết được yêu cầu, nói cách khác, tệp

/etc/rc2.d/wdm.

Một khi một phiên X đã bắt đầu từ trình quản lý hiển thị, nói cách khác, một khi chúng ta đã khởi

tạo trình tạo cửa sổ tương ứng, thì có thể sẽ thú vị để chạy lệnh pstree để xem các phụ thuộc và các mối quan hệ giữa các tiến trình khác nhau mà đang chạy tại thời điểm đó, cùng với thông tin mà

chúng ta có được từ dòng ps aux.

11.7. Các trình quản lý môi trường đồ họa máy để bàn

Sự xuất hiện của các bộ công cụ khác nhau, cùng với sự phát triển của các dự án khác nhau mà đã phát triển hoặc đã sử dụng các thư viện cho giao diện đồ họa, đã tạo ra các dự án có mục tiêu thống nhất tất cả các hoạt động đó. Tại thời điểm này, một khái niệm mới đã xuất hiện trong môi trường X: trình quản lý môi trường đồ họa máy để bàn. Các trình quản lý bàn làm việc là các dự án được thiết kế để đưa ra những nền tảng cho sự thống nhất và tiêu chuẩn hóa trình bày và các chính sách trong các ứng dụng lập trình và phát triển. Một trong những thứ đầu tiên xuất hiện từng là trình Quản lý Bàn làm việc Chung - CDE (Common Desktop Manager), dù 2 dự án quan trọng nhất hiện đang tồn tại trong lĩnh vực này là: GNOME và KDE, mà chúng ta sẽ đề cập tới một cách riêng rẽ trong các phần riêng biệt, vì mức độ triển khai và phát triển cao của chúng. Tuy nhiên, trước đó chúng ta có thể gọi một số trình quản lý môi trường đồ họa máy để bàn khác như: GNUStep, ROX, GTK+Xfce or UDE.

Trang 182/232

Page 183: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

11.7.1. GNOME

GNOME là một dự án, là một phần của GNU, nó được đặc trưng bởi thực tế là nó hoàn toàn không cần một trình quản lý cửa sổ đặc thù nào, dù được khuyến cáo để sử dụng một trình quản lý để đảm bảo rằng nó làm việc đúng đắn (một trình quản lý cửa sổ tuân thủ GNOME) như: IceWM hoặc Sawfish. Dù vậy, để đảm bảo những ưu tiên và sự tự do của người sử dụng, bảng kiểm soát (control panel) của GNOME luôn có một bộ chọn trình quản lý cửa sổ cho phép chúng ta chọn trình quản lý cửa sổ nào chúng ta muốn sử dụng. GNOME dựa vào bộ công cụ Gtk, các thư viện thực tế được phát triển trong dự án, được biết như là các thư viện gnome-libs đặc thù.

Giống như tất cả các trình quản lý môi trường đồ họa máy để bàn, GNOME có bảng điều khiển riêng của nó, cho việc quản lý các tệp của Nautilus và bảng kiểm soát của nó, GNOME Control Panel. Để triển khai một cài đặt cơ bản của GNOME, chúng ta sẽ cài đặt gói sau cùng với các phụ thuộc của nó:

brau:~# apt-get install gnome-session

Như chúng ta đã lưu ý, dù GNOME không đòi hỏi những người sử dụng phải sử dụng bất kỳ trình quản lý cửa sổ đặc thù nào, thì được khuyến cáo rằng một trình được sử dụng nên là một trình quản lý cửa sổ tuân thủ GNOME. Chúng ta bây giờ sẽ cài đặt Sawfish, nó từng được phát triển chỉ để làm thỏa mãn yêu cầu này. Chúng ta sẽ cài đặt gói đó và tất cả các phụ thuộc của nó.

brau:~# apt-get install sawfish-gnome

Hệ quả là, bây giờ chúng ta có một trình tạo cửa sổ khác được cài đặt. Chúng ta sẽ dừng trình quản lý hiển thị và khởi tạo lại nó sao cho trình tạo cửa sổ mới này được tích hợp vào trong nó (GNOME

cũng có trình quản lý hiển thị của riêng nó, gdm, mà chúng ta có thể cài đặt nếu chúng ta muốn). Chúng ta bây giờ có 2 lựa chọn cho việc đạt được mục đích của chúng ta, đó là: chạy GNOME. Lựa

chọn đầu là để khởi tạo Sawfish, từ trình quản lý hiển thị hoặc bằng việc sử dụng startx và, một

khi trong chương trình, khởi tạo gnome-session từ một máy đầu cuối X. Lựa chọn thứ 2 gồm việc triển khai hoạt động y hệt nhưng theo cách khác; nói cách khác, khởi tạo GNOME với cùng các thủ

tục như với Sawfish, và sau đó khởi tạo sawfish từ một máy đầu cuối X. Chúng tôi khuyến cáo xử lý như sau nếu chúng ta muốn Sawfish sẽ chạy lần sau khi chúng ta khởi động GNOME (trình quản lý phiên của bản thân GNOME sẽ có trách nhiệm triển khai và ghi lưu ký những thay đổi nào mà cần thiết cho điều này xảy ra).

Một khi bản thân chúng ta đã làm quen được với GNOME, thì những gì chúng ta có thể làm là cài

đặt các gói y hệt mà có thể là hữu dụng, đặc biệt là gnome-help và gnome-terminal; cái đầu cho chúng ta một giao diện nơi mà chúng ta có thể đọc được các sách chỉ dẫn (mans), các tệp văn bản trong một môi trường đồ họa, còn cái thứ 2 cài đặt xterm của riêng GNOME.

11.7.2. KDE

Không giống như GNOME, KDE cần tới một trình quản lý cửa sổ, là kwm, dựa vào bộ công cụ Qt và

các thư viện thực tế kdelibs. Nó cũng có bảng khởi tạo (launcher panel) của riêng nó: kpanel, trình

quản lý tệp của riêng nó: Konqueror và tiện ích cấu hình của riêng nó: Control Panel. Rõ ràng, KDE có thể được cài đặt trong cùng hệ thống y hệt mà trong đó chúng ta đã cài đặt GNOME và

thậm chí có các ứng dụng thuộc về một trình quản lý hiển thị (kdm) cùng với rất nhiều ứng dụng. Một lần nữa, chúng tôi khuyến cáo các độc giả viếng thăm các website tương ứng để học về các khả

Trang 183/232

Page 184: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

năng của chúng: http://www.kde.org. Cũng vậy, chúng ta có thể chạy dòng sau đây để thấy cách mà KDE tích hợp trong Debian:

brau:~# apt-cache search kde

Các gói KDE cơ bản là trong gói kdebase. Vì thế, đây sẽ là cái đầu tiên mà chúng ta cài đặt:

brau:~# apt-get install kdebase

Một lần nữa, chúng ta phải khởi động lại trình quản lý cửa sổ của chúng ta để truy cập được vào trình quản lý môi trường đồ họa máy để bàn vừa được cài đặt xong. Một khi chúng ta đã làm xong điều này, thì chúng ta có thể xử lý để cài đặt trình quản lý tệp, gói được gọi là Konqueror. Bằng việc

sử dụng gọi kde-i18n-es, chúng ta có thể cài đặt các tệp được yêu cầu cho KDE để làm việc trong tiếng Tây Ban Nha.

Tới thời điểm này, mỗi người sử dụng sẽ có khả năng cài đặt các gói khác nhau của dự án mà họ muốn. Như chúng ta đã thấy, để thiết lập trước trình tạo cửa sổ mặc định, chúng ta sẽ sử dụng thực

đơn của lệnh update-alternatives để chọn trình quản lý phiên:

brau:~# update-alternatives x-session-manager

11.8. Cá nhân hóa một số khía cạnh

Thiết kế của môi trường đồ họa X là nhờ vào mục tiêu đầy tham vọng của việc có được hiệu năng tốt nhất có thể từ phần cứng có sẵn, bằng việc sử dụng các tài nguyên ít nhất có thể, trong khi cung cấp được tính mềm dẻo nhất có thể. Cấu trúc của máy trạm/ máy chủ phục vụ trong đó hệ thống này dựa vào làm cho có khả năng đạt được những mục tiêu đó, và những khó khăn có thể mà những người sử dụng có kinh nghiệm sẽ vượt qua sẽ biến mất nhanh chóng với một chút thực tế, cho phép nhiều ưu điểm mà thiết kế này đưa ra được nở rộ. Mục đích của phần này chỉ là để cung cấp một ý tưởng thoáng qua về sức mạnh của hệ thống này, nó hoàn toàn là bằng chứng khi làm việc trong một mạng, dù nó bằng cách nào đó bị phủ bóng khi làm việc ttrong một hệ thống đứng riêng rẽ một mình, như hệ thống mà khóa học này dựa vào. Trong mọi trường hợp, chúng ta sẽ thảo luận một số khải niệm có thể là hữu dụng khi làm việc trong một mạng.

11.8.1. Cá nhân hóa các khía cạnh bản địa

Thông thường, các tệp cấu hình nằm trong thư mục /etc/X11/ hoặc trong một trong những thư mục con của nó. Mỗi người sử dụng có thể cá nhân hóa và xác định lại các tham số cấu hình và bổ sung thêm những tham số mới bằng việc tạo ra hoặc soạn sửa các tệp trong thư mục gốc home của họ có cùng tên như những thứ của một cấu hình chung, nhưng với một dấu chấm “.” đứng trước. Sẽ có khả năng xác định lại hoặc thiết lập tất cả các tham số mà không đòi hỏi các quyền của siêu người sử dụng (superuser), khi các tệp của home sẽ được xử lý sau các tệp cấu hình chung, và các tham số sẽ luôn lấy các giá trị mới nhất được chỉ định cho chúng.

Xsession

/etc/X11/Xsession là một script chạy khi một người sử dụng khởi tạo một phiên. Script này là một script điều hành toàn bộ tiến trình khởi tạo một phiên cho tới khi chúng ta có thể bắt đầu làm việc được, và cũng có trách nhiệm quản lý các thông điệp lỗi có thể nảy sinh trong tiến trình này, nó

được lưu ký lại trong $HOME/.xsession-errors.

Trang 184/232

Page 185: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Trong $HOME/.xsession, chúng ta có thể cá nhân hóa tiến trình khởi tạo cho một người sử dụng đặc

biệt. Vì thế, nếu chúng ta muốn trình quản lý cửa sổ sẽ là một hộp đen blackbox, và chúng ta muốn

bbkeys sẽ khởi tạo tự động ở phần nền khi chúng ta bắt đầu phiên, thì điều này sẽ bao gồm các dòng sau đây:

bbkeys blackbox

Xresources

Trong tệp $HOME/.Xresources, chúng ta có thể cá nhân hóa sự hiển thị của các ứng dụng khác nhau.

Cú pháp là application*parameter: value. Vì thế, nếu chúng ta muốn đảo ngược các màu của

ứng dụng xterm, thì chúng ta sẽ bổ sung dòng sau đây vào tệp đó:

Xterm*reverseVideo: true

Lệnh xrdb có trách nhiệm quản lý cơ sở dữ liệu của Xresources. Bằng việc sử dụng xrdb -query, chúng ta có thể học được về tất cả các thuộc tính được thiết lập và giá trị của chúng, và, bằng việc

sử dụng tham số -display, chúng ta sẽ có được một danh sách tất cả các tham số mà lệnh đó chấp nhận. Nếu chúng ta vào vị trí của một tệp như là một tham số, thì điều này sẽ đọc tất cả các định nghĩa tham số từ đây.

Xmodmap

Máy chủ đồ họa sử dụng bảng mã ký tự để chuyển đổi các tín hiệu từ bàn phím (độc lập với máy chủ) sang các ký hiệu hệ thống (phụ thuộc máy chủ). Bảng chuyển đổi được sử dụng sẽ được chọn trong quá trình thiết lập cấu hình bàn phím. Một ví dụ về cách mà nó có thể được sử dụng như sau:

brau:~# xmosmap -e "keycode 127 = Delete" brau:~# xmosmap -e "keycode 22 = BackSpace"

Các tham số -pk, xmodmap sẽ trả về tất cả các nội dung của bảng chuyển đổi đang được sử dụng.

11.8.2. Cá nhân hóa các khía cạnh của mạng

Các khía cạnh được thảo luận ở đây cũng là thú vị cho một hệ thống đứng riêng một mình, vì, giống như toàn bộ hệ điều hành, hệ thống X luôn sử dụng một thiết kế hướng mạng.

$DISPLAY

Biến $DISPLAY có thể được sử dụng để nói cho máy trạm là máy chủ nào nó nên giao tiếp với. Cú

pháp của nó là như sau: hostname:display number.screen number. Vì thế, nếu chúng ta đã xác định máy đầu cuối đồ họa khác cho hệ thống X, thì bổ sung thêm dòng sau đây vào

/etc/X11/xdm/Xservers:

:1 local /usr/X11R6/bin/X vt8

chúng ta có thể khởi tạo một ứng dụng đồ họa từ một xterm của máy đầu cuối đồ họa này tới máy đầu cuối đồ họa khác bằng việc xác định biến phù hợp. Vì những lý do đó, nếu chúng ta muốn khởi

tạo xeyes từ máy đầu cuối đồ họa đầu tiên, bằng việc sử dụng xterm, và để hiển thị nó trong máy đầu cuối đồ họa thứ 2, thì chúng ta có thể xử lý như sau:

Trang 185/232

Chỉ định các ký hiệu

Những lệnh đó đã được sử dụng từ lâu vì sự đầu tư của những chỉ định ký hiệu trong các bảng chuyển đổi; tuy nhiên, bây giờ vấn đề này đã được giải quyết.

Page 186: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

brau:~$ set DISPLAY :0.1; export DISPLAY brau:~$ xeyes

Nếu chúng ta vào một phiên đồ họa, mở một xterm, thay đổi người sử dụng đang sử dụng lệnh su và cố gắng khởi tạo một ứng dụng đồ họa, thì chúng ta sẽ nhận được một thông điệp lỗi nói rằng một kết nối có thể được thiết lập với máy chủ. Một chiến lược để tránh vấn đề này là sử dụng tham

số -p để xuất toàn bộ tập hợp các biến số môi trường, vì thế tránh được việc từ chối của máy chủ đối với yêu cầu kết nối của chúng ta. Thực tiễn này có thể rất hữu dụng cho việc khởi tạo các chương trình thiết lập cấu hình đòi hỏi các quyền của gốc root, khi mà điều này sẽ cho phép chúng ta tránh phải vào môi trường đồ họa như một người sử dụng gốc root (một thực tế không thật được khuyến cáo và rằng, dù được phép một cách mặc định, thì nó thường bị hạn chế bằng tay).

xhost và xauth

Lệnh xhost làm cho có khả năng thiết lập những máy tính nào có thể truy cập được máy chủ đồ họa từ xa, nói cách khác, máy tính trạm nào có thể khởi tạo được một ứng dụng có thể được hiển thị

trong máy chủ. Cú pháp của nó như sau: xhost +hostname. Nếu chúng ta không chỉ định một tên máy chủ (hostname), thì bất kỳ máy nào cũng sẽ có khả năng khởi tạo các ứng dụng trên máy chủ.

Mặc định, không kết nối nào được phép từ bất kỳ máy từ xa nào. Lệnh xauth có thể được sử dụng để xác định những người sử dụng nào có thể khởi tạo các ứng dụng trong máy chủ đồ họa. Hệ quả là, việc sử dụng 2 lệnh đó cùng nhau cho phép chúng ta thiết lập chính sách an ninh trong việc truy

cập máy chủ X, theo một cách thức khá hợp lý. xhost+ cho các hệ thống đứng riêng một mình.

11.9. Thiết lập cấu hình cho các máy in

Việc thiết lập cấu hình cho các máy in có thể dễ dàng hơn từ môi trường đồ họa. Có rất nhiều ứng dụng có thể được sử dụng để thiết lập cấu hình cho hệ thống in ấn bẩm sinh và những ứng dụng khác thay thế cho hệ thống này, cũng thường được sử dụng trong cấu trúc máy trạm - máy chủ phục vụ. Để cài đặt hệ thống in ấn chung của Linux – CUPS (Common Linux Printing System), chúng ta

sẽ phải cài đặt gói máy chủ in, cupsys; và được khuyến cáo phải cài đặt, cùng với gói này, gói máy

trạm in, cupsys-client. Chúng ta cũng cài đặt gói gọi là cupsysbsd sao cho chúng ta có được các lệnh thường thấy trong hệ thống in ấn BSD. Ví dụ, chúng ta có thể cài đặt hệ thống in ấn bằng việc sử dụng lệnh:

# apt-get install cupsys cupsys-client cupsys-bsd printconf \ foomatic-filters-ppds

Gói cuối cùng gồm các định nghĩa máy in Postscript - PPDs (Postscript Printer Definitions) của Adobe, nó được CUPS sử dụng để xác định các máy in.

Trong GNOME chúng ta có thể đi tới “Hệ thống/Quản trị/Máy in” (“System/Administration/Printers”). Chúng ta nháy đúp vào Máy in Mới (New Printer), vào mật khẩu của gốc root và đi theo các bước để xác định máy in, phụ thuộc vào việc liệu máy in đó là cục bộ hay mạng. Bước thứ 2 gồm việc tìm ra tên các nhà sản xuất và mẫu của máy in. Một khi chúng ta đã xác định được máy in, chúng ta sẽ nhấn vào nó bằng việc xử dụng núm chuột phải và đi tới Các thuộc tính (Properties). Sau đó chúng ta nhấn vào lựa chọn Trở thành quản trị viên (Become the administrator) và sửa cấu hình nếu cần thiết.

Tuần tự sau đây các hình ảnh chỉ ra tiến trình cho việc cài đặt một máy in bằng việc sử dụng hỗ trợ

của gnome-cups:

Trang 186/232

Page 187: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Hình 11.1

Hình 11.2

Hình 11.3

Trang 187/232

Page 188: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Một khi chúng ta đã cài đặt xong máy in, một cửa sổ sẽ xuất hiện; cửa sổ này tương ứng với công

cụ gnome-cups:

Hình 11.4

Nếu máy in sử dụng hệ thống HP JetDirect, thì tốt hơn hãy cài đặt gói hplip.

# apt-get install hplip

và sử dụng công cụ hp-setup để xác định máy in.

Cách khác để thiết lập cấu hình cho một máy in bằng việc sử dụng CUPS là thông qua website của dịch vụ CUPS. Tất cả điều chúng ta phải làm là mở trình duyệt của chúng ta và vào URL: http://localhost:630, nó là cổng mà máy chủ của chúng ta đang nghe.

Các hình màn hình sau đây chỉ sự xuất hiện của tiện ích quản trị này:

Hình 11.5

Trang 188/232

Page 189: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Hình 11.6

11.10. OpenOffice

Trong phần này, dù chủ đề là không nằm trong phạm vi của các mục tiêu chính của khóa học này, chúng ta sẽ trình bày một bộ phần mềm văn phòng, nó có thể cực kỳ hữu dụng cho những người trong chúng ta mà quen làm việc với phần mềm dạng này. OpenOffice là một dự án có nguồn gốc từ StarOffice, của Sun MicroSystems. Chúng ta phải chỉ ra rằng dự án này là đa nền tảng và rằng nó có thể vì thế được triển khai trong các hệ điều hành khác không phải là dạng Unix.

Để cài đặt bộ phần mềm này, chúng ta có thể sử dụng lệnh sau đây (tất cả trên một dòng):

brau:~# apt-get install openoffice.org openoffice.org-base openoffice.org-calc

openoffice.org-common openoffice.org-core openoffice.org-draw openoffice.org- evolution

openoffice.org-gnome openoffice.org-gtk openoffice.org-help-en openoffice.org-help-es

openoffice.org-impress openoffice.org-java-common openoffice.org-l10n-es

openoffice.org-math openoffice.org-writer

Tất cả điều chúng ta phải làm trong quá trình cài đặt (nó sẽ được triển khai trong một môi trường đồ họa) là nhớ rằng chúng ta phải cài đặt nó cho mạng. Theo cách này, nó sẽ chỉ là cần thiết cho thư mục gốc home của từng người sử dụng để có một thư mục nhỏ, trong đó các cấu hình được cá nhân hóa của họ được lưu giữ.

Một khi chúng ta đã cài đặt chương trình này lần đầu, thì mỗi người sử dụng phải chạy chương trình sau đây để tạo ra thư mục của riêng mình:

/usr/lib/openoffice/program/setup

Trang 189/232

Page 190: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Một khi chúng ta đã thực hiện xong điều này và chúng ta đã trả lời một ít câu hỏi, thì lệnh

openoffice sẽ mở bộ phần mềm văn phòng đó.

Hiện tại phiên bản OpenOffice trong Debian Etch là 2.0.4.

11.11. Kết luận

Với hội thảo này, chúng ta đi tới kết thúc tư liệu để dạy học của module 2 cho các Giáo viên. Trong hội thảo này, chúng ta đã học được cách cài đặt môi trường đồ họa trong hệ thống, mà, như chúng ta đã thấy khi này, không phải là phần cơ bản bên trong hệ điều hành. Nhưng bằng chứng là nó rất hữu dụng trong nhiều trường hợp và nhiều người nói rằng hệ điều hành mà chúng ta đã nghiên cứu trong module này có thể là một lựa chọn thay thế nghiêm túc cho các hệ thống khác. Vì tất cả những lý do đó, chúng tôi, các tác giả, muốn bày tỏ sự thuyết phục hoàn toàn của chúng tôi rằng GNU/Linux là một hệ điều hành khác thường, không chỉ vì giao diện đồ họa của nó, mà có lẽ là những gì hầu hết lôi cuối sự chú ý của chúng tôi khi chúng tôi lần đầu tiên xem xét hệ thống này, là do nhiều không thể đếm được các yếu tố khác, đối với chúng thì chúng tôi có thể nhấn mạnh tới triết lý đằng sau hệ thống này, độ tin cậy của nó, khả năng áp dụng, sức mạnh, các mức an ninh tiềm tàng của nó... Chúng tôi bị thuyết phục rằng hệ điều hành này là một sự đầu tư cho tương lai, từ đó chúng tôi chỉ có thể mong đợi những phát triển tích cực, dù nó đã được chứng minh rằng đây là một đối thủ cạnh tranh nghiêm túc trong thế giới các hệ điều hành. Chúng tôi hy vọng rằng chúng tôi đã cung cấp được đủ tri thức và truyền đi được lòng nhiệt thành cần thiết cho các độc giả để bắt đầu con đường của riêng họ trong thế giới GNU/Linux, cũng như biết được cách để mở ra các cánh cửa tới một cộng đồng trong đó mỗi người đều được chào đón và tôn trọng.

Trang 190/232

Page 191: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Các phụ lụcPID_00148394

Trang 191/232

Page 192: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Bản quyền © 2010, FUOC. Quyền được trao để sao chép, phân phối và/hoặc sửa đổi tài liệu này theo những điều khoản của Giấy phép Tài liệu Tự do GNU, phiên bản 1.2 hoặc bất kỳ phiên bản nào sau này được Quỹ Phần mềm Tự do xuất bản; với các phần không bất biến, không các văn bản bìa trước, và không các văn bản bìa sau. Một bản sao giấy phép này được đưa vào trong phần có đầu đề “Giấy phép Tài liệu Tự do GNU”.

Copyright © 2010, FUOC. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".

Trang 192/232

Page 193: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Phụ lục A. Các bảng lệnh

A.1. Hệ thống tệp

CÚ PHÁP CỦA LỆNH KẾT QUẢ VÀ CÁC THAM SỐ HỮU DỤNG

ls [mẫu]ls [pattern]

Các danh sách các nội dung của một thư mục nhất định→ “-a” hiển thị tất cả các nội dung, bao gồm cả những nội dung bắt đầu bằng “.”→ “-l” hiển thị toàn bộ thông tin có liên quan tới các nội dung→ “-h” đi sau “-l” hiển thị kích cỡ các tệp trong các đơn vị KB, MB, GB→ “-S” sắp xếp các danh sách theo kích cỡ→ “-w” hiển thị danh sách theo các cột→ “-R” hiển thị danh sách theo kiểu đệ qui, đi qua tất cả các thư mục con→ “-- màu” tô màu văn bản của danh sách theo dạng tệp

cd [đường dẫn]cd [path]

Thay đổi tới thư mục được chỉ định. Một cách mặc định, nó thay đổi tới thư mục gốc home của người sử dụng.

pwd Hiển thị đường dẫn đầy đủ tới thư mục hiện hành.

find [các tham số] [đường dẫn]find [parameters] [path]

Tìm kiếm một tệp hoặc thư mục được chỉ định.→ “-iname pattern” tìm kiếm đệ qui mẫu từ thư mục hiện hành→ “-ilname pattern” tương tự như “-iname” & không phân biệt chữ hoa chữ thường→ “-maxdepth numLevels” tìm kiếm xuống mức sâu được chỉ định.→ “-uid UID” ép vào việc trùng khớp UID→ “-gid GID” ép vào việc trùng khớp GID

Ln đường dẫn [Tên-liên-kết-mới]ln path [New Linkname]

Tạo một liên kết tới một tệp hoặc thư mục. Nếu đây không phải là một liên kết biểu tượng, thì một bản sao chính xác sẽ được tạo ra và được sửa đổi cho bất kỳ việc cập nhật nào (liên kết cứng).→ “-s” tạo một liên kết biểu tượng

Hình A.1

A.2. Chức năng trợ giúp hệ thống

CÚ PHÁP CỦA LỆNH KẾT QUẢ VÀ CÁC THAM SỐ HỮU DỤNG

man [số_phần] lệnhman [section_number] command

Hiển thị các nội dung chỉ dẫn của các lệnh theo từng trang một

info command Một nguồn trợ giúp khác, đôi khi nó bổ sung cho các nội dung chỉ dẫn lệnh và đôi khi khác nó là những tài liệu duy nhất được duy trì.

từ khóa thích hợpapropos keyword

Tìm tất cả các lệnh có chứa từ khóa theo mô tả của sách chỉ dẫn được xây dựng sẵn.

Hình A.2

Trang 193/232

Page 194: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

A.3. Các quyền của tệp

CÚ PHÁP CỦA LỆNH KẾT QUẢ VÀ CÁC THAM SỐ HỮU DỤNG

chmod chế-độ tệpchmod mode file

Thiết lập các quyền cho tệp và/hoặc thư mục→ “-R” thay đổi được thực hiện theo đệ qui, nghĩa là tác động tới tất cả các tệp và thư mục bên trong thư mục được chỉ định

chown chủ sở hữu [.nhóm] tệpchown owner [.group] file

Thiết lập người chủ sở hữu và nhóm của tệp và/hoặc thư mục (nếu được chỉ định)→ “-R” lệnh được chạy một cách đệ qui

chgrp nhóm tệpchgrp group file

Thiết lập nhóm mà các tệp hoặc các thư mục thuộc về nhóm đó→ “-R” lệnh được chạy một cách đệ qui

umask mode Thiết lập các quyền cho tất cả các tệp được tạo ra từ thời điểm lệnh được chạy.

Hình A.3

A.4. Sao chép và xóa các tệp

CÚ PHÁP CỦA LỆNH KẾT QUẢ VÀ CÁC THAM SỐ HỮU DỤNG

rm tên-(các)-tệp rm filename(s)

Xóa các tệp và/hoặc thư mục được chỉ định→ “-f” loại bỏ các thông điệp khẳng định→ “-R” loại bỏ một cách đệ qui các tệp trong thư mục được chỉ định→ “-i” nhắc rm nhắc người sử dụng khẳng định trước khi xóa mỗi tệp và thư mục

rmdir directory Xóa các thư mục rỗng

cp nguồn đíchcp source target

Sao chép các tệp từ điểm nguồn tới điểm đích được chỉ định → “-f” không nhắc khẳng định→ “-i” nhắc khẳng định trước khi sao chép mỗi tệp→ “-l” tạo các liên kết thay vì việc sao chép các tệp thực sự→ “-R” hành động đệ qui việc sao chép toàn bộ các nội dung của các thư mục con→ “-s” tạo các liên kết biểu tượng thay vì việc sao chép các tệp thực sự

mv nguồn đíchmv source target

Di chuyển các tệp từ điểm nguồn được thỉ định tới điểm đích được chỉ định→ “-f” không nhắc khẳng định→ “-i” nhắc khẳng định trước khi di chuyển từng tệp

Hình A.4

A.5. Tắt hoặc khởi động lại

CÚ PHÁP CỦA LỆNH KẾT QUẢ VÀ CÁC THAM SỐ HỮU DỤNG

logout Thoát khỏi trình biên dịch shell và quay về để đăng nhập

halt Khởi động tiến trình dừng hệ thống (máy tính không bao giờ nên bị tắt điện trước khi chữ Power Down (Tắt điện) xuất hiện.

reboot Khởi động lại hệ thống, là khởi động sự dừng hệ thống và thiết lập lại máy tính

Hình A.5

Trang 194/232

Page 195: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

A.6. Các hoạt động với các tệp

CÚ PHÁP CỦA LỆNH KẾT QUẢ VÀ CÁC THAM SỐ HỮU DỤNG

cat [file] Hiển thị các nội dung của tệp hoặc ghi lại sự gõ bàn phím khi không có tệp nào được chỉ định→ “-n” số các dòng được hiển thị

less file Hiện thị các nội dung tệp theo từng trang. Các lựa chọn được liệt kê bên dưới KHÔNG phải là các tham số lệnh mà là các phím truy cập trực tiếp hoặc nhanh“→/pattern” để tìm kiếm một mẫu (pattern) được chỉ định bên trong trang, sử dụng các phím “n” và “N” để đi tới chỗ sau hoặc trước đó một cách tương ứng.→ END để đi tới cuối tệp→ HOME để đi tới đầu tệp→ PAGE DOWN để đi sang trang tiếp sau→ PAGE UP để đi tới trang trước đó→ ENTER để đi tới dòng tiếp sau→ SPACE để đi tới trang tiếp sau

more file Hiện thị các nội dung của tệp tương tự như lệnh less với một số hạn chế (nó không đưa ra lựa chọn đi ngược lại, ví dụ thế).

grep [pattern] file Tìm các dòng khớp với mẫu rồi hiển thị chúng→ “-b” hiển thị số byte của từng dòng được tìm thấy → “-c” không hiển thị các dòng, nhưng đếm chúng và trả về con số→ “-e pattern” hữu dụng khi mẫu pattern bắt đầu với ký tự “-” → “-i” tìm kiếm không phân biệt chữ hoa chữ thường→ “-n” hiển thị số lượng dòng→ “-v” nghịch đảo các kết quả tìm kiếm

cut file Hiển thị các trường của tệp→ “-d character” thiết lập ký tự giới hạn trường → “-f field number” thiết lập trường để hiển thị→ “-b listBytes” của trường được chọn, khi chỉ các byte được chỉ định tách bạch nhau bằng dấu phẩy sẽ được hiển thị

wc file Hiển thị các trường của tệp→ “-c” hiển thị chỉ các byte→ “-l” hiển thị chỉ các dòng→ “-l” hiển thị chỉ số các từ

diff file1 file2 Hiển thị những khác biệt giữa tệp 1 và tệp 2→ “-B” bỏ qua các dòng trống → “-i” không phân biệt chữ hoa chữ thường→ “-w” bỏ qua các ký tự trống

Hình A.6

Trang 195/232

Page 196: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

A.7. Nén tệp và các bản sao chụp có an ninh

CÚ PHÁP CỦA LỆNH KẾT QUẢ VÀ CÁC THAM SỐ HỮU DỤNG

tar option(s) archive_name file_name(s)

Nối nhiều tệp và thư mục vào trong một tệp tarball duy nhất (với phần mở rộng .tar)→ “-cf” tạo một tệp tarball từ các tệp được chỉ định trong thư mục hiện hành→ “-cvf” nối dài lựa chọn bằng các kết quả y hệt như tham số ở trên để hiển thị danh sách các tệp được đưa vào trong lưu trữ → “-cvzf” y hệt như trên nhưng kết quả là một lưu trữ được nén bằng gzip → “-x” trích xuất các nội dung từ một tệp tarball→ “-xvzf” trích xuất và giải nén lưu trữ đồng thời hiển thị các kết quả của tiến trình (các tệp bị nén sẽ được nối thêm bằng các phần mở rộng tệp “.tar.gz”) hoặc “.tgz”

cpio Sao lưu

gzip file Nén tệp và nối thêm phần mở rộng “.gz” vào tên tệp → “-d” giải nén tệp

gunzip file Giải nén tệp

zip archive_name source_file(s) Nén tất cả các tệp nguồn vào trong một lưu trữ .zip→ “-e” mã hóa lưu trữ bằng một mật khẩu được đưa vào trong cửa sổ dòng lệnh để trả lời cho một lời nhắc

unzip archive_name Giản nén lưu trữ .zip

Hình A.7

A.8. Các hoạt động của đĩa

CÚ PHÁP CỦA LỆNH KẾT QUẢ VÀ CÁC THAM SỐ HỮU DỤNG

df Hiển thị không gian tổng, được sử dụng và tự do của các phân vùng được kích hoạt → “-h” hiển thị dữ liệu theo đơn vị byte, KB, MB, GB→ “-m” hiển thị dữ liệu theo đơn vị MB

du [file] Hiển thị các khối mà tệp chiếm giữ→ “-block size=SIZE” thiết lập kích cỡ khối block mong muốn → “-h” hiển thị dữ liệu theo đơn vị byte, KB, MB, GB

mkfs Tạo một hệ thống tệp mới. Việc đọc và hiểu sách chỉ dẫn của lệnh được khuyến cáo, đưa ra bản chất tự nhiên của lệnh đó.

dumpe2fs device Hiển thị thông tin hệ thống tệp của thiết bị

sync Đồng bộ bộ nhớ tạm cache và các tệp của đĩa cứng

badblocks device Tìm kiếm các khối bị hỏng trong thiết bị→ “-s” hiển thị tiến trình quét bằng việc ghi ra số lượng các khối block khi chúng được kiểm tra.

Hình A.8

Trang 196/232

Page 197: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

A.9. Người sử dụng và nhóm

CÚ PHÁP CỦA LỆNH KẾT QUẢ VÀ CÁC THAM SỐ HỮU DỤNG

whoami Hiển thị tên người sử dụng còn hiệu lực của người sử dụng hiện hành

groups Hiển thị các nhóm mà người sử dụng đó là thành viên

who Hiển thị một danh sách tất cả những người sử dụng hiện đang đăng nhập vào→ “-T” nói liệu sự nhận các thông điệp có được phép cho từng người sử dụng

w [user_name] Hiển thị thông tin được mở rộng về những người sử dụng hiện hành trong hệ thống. Mặc định, nó hiển thị thông tin về tất cả những người sử dụng hiện đã đăng nhập

write user_name [console] Được sử dụng để gửi đi một thông điệp tới người sử dụng được chỉ định. Để xác định bảng điều khiển (console), các lệnh “who” hoặc “w” có thể được sử dụng.

talk user_name [console] Mở một phiên chat với người sử dụng được chỉ định nếu anh hay chị ta chấp nhận

mesg [y-n] Khi được sử dụng không có các tham số, nó hiển thị liệu sự nhận thông điệp có hoạt động hay không. Tham số “y” trả về sự nhận là có, “n” là không.

adduser [user_name] Tạo một người sử dụng mởi trong hệ thống

userdel user_name Xóa người sử dụng được chỉ định khỏi hệ thống

addgrou [group_name] Tạo một nhóm mới

groupdel group_name Xóa nhóm được chỉ định khỏi hệ thống

Hình A.9

A.10. Quản lý các tiến trình

CÚ PHÁP CỦA LỆNH KẾT QUẢ VÀ CÁC THAM SỐ HỮU DỤNG

ps Hiển thị một ảnh chụp các tiến trình hiện hành→ “-A” hiển thị tất cả các tiến trình hiện đang chạy trong hệ thống (tương tự như “-e”)→ “-H” hiển thị tôn ti trật tự các tiến trình→ “-I” hiển thị thông tin chi tiết về các tiến trình

top Hiển thị các tiến trình đang chạy một cách tương tác.

kill PID(s) Gửi một tín hiệu kết thúc tiến trình→ “-9” đảm bảo sự thực thi của tín hiệu kết thúc

killall program_name(s) Kết thúc tất cả các tiến trình có liên quan tới chương trình mà các tên của nó được đưa ra như là các đối số.

nice [command] Khi không lệnh nào được chỉ định, thì nó hiển thị mức ưu tiên mặc định. Khi lệnh và ưu tiên mong muốn được chỉ định, nó chỉnh lệnh theo ưu tiên được chỉ định đó.→ “-n new_level” chạy lệnh với ưu tiên được chỉ định

renice priority PID Thay đổi ưu tiên của PID được chỉ định

at time Đặt lịch cho công việc sẽ được chạy một lần tại thời điểm được chỉ định.→ “-f command” chỉ định lệnh sẽ được chạy.

atq Liệt kê tất cả các công việc được đặt lịch trong khi chờ đợi để được chạy.

atrm process_number Loại bỏ một tiến trình khỏi hàng đợi. Số tiến trình là số được trả về bằng lệnh “atq”

batch Chạy các lệnh hoặc tiến trình khi mức tải của hệ thống là thấp→ “-f command” chỉ định lệnh được chạy

Hình A.10

Trang 197/232

Page 198: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Phụ lục B. Trình soạn thảo vi

B.1. Giới thiệu

Biết cách sử dụng một trình soạn thảo văn bản là cơ bản cho những người sử dụng muốn soạn thảo hoặc sửa đổi các tệp hệ thống. Dù có hàng trăm trình soạn thảo khác nhau, thì trình soạn thảo vi luôn là trình soạn thảo mặc định trong các hệ thống như UNIX. Dù trình soạn thảo vi có thể ban đầu trông giống một trình soạn thảo rất đơn giản, thì khi chúng ta quen với các lệnh của nó, chúng ta sẽ thấy rằng nó có rất nhiều tiện ích làm cho nó cực kỳ dễ dàng điều khiển các tệp. Dù có những trình soạn thảo khác hữu dụng hơn cho các nhiệm vụ đòi hỏi sự chịu khó dài lâu (như việc lập trình), thì hầu hết các quản trị viên hệ thống đều sử dụng trình soạn thảo vi cho nhiều tác vụ quản trị. Thực tế đây là một trình soạn thảo (có nghĩa là nó có thể được sử dụng trong bảng điều khiển hệ thống) và thực tế là nó sẵn sàng cho tất cả các hệ thống làm cho trình soạn thảo vi trở thành trình soạn thảo lý tưởng trong các môi trường UNIX. Để gọi vi, chúng ta có thể sử dụng bất kỳ phương pháp nào được chỉ ra trong bảng dưới đây:

vi file Sửa tệp trong chế độ toàn màn hình

vi-r file Phục hồi lại phiên bản tệp được lưu giữ lần mới nhất (cho các trường hợp ở đó trình soạn thảo tồn tại không đúng và một tệp hoán đổi còn được để lại).

vi + file Soạn thảo tệp và đặt con trỏ vào dòng cuối cùng

vi + line_number file Soạn thảo tệp và đặt con trỏ vào dòng được chỉ định

vi file-1 … file_N Soạn thảo tất cả các tệp được chỉ định. Để lưu một tệp đúng lúc thì chúng ta nên gõ “:n” vào dòng lệnh. Nếu chúng ta gõ “:n:” thì những sửa đổi sẽ không được lưu.

vi+/string file Soạn thảo tệp và đặt con trỏ vào chỗ đầu tiên có chuỗi đó

Hình B.1

B.2. Các chế độ của trình soạn thảo vi

Trình soạn thảo vi có thể được sử dụng theo 2 cách: chế độ thông thường và chế độ chèn. Trong chế độ thông thường, mọi điều chúng ta viết sẽ được trình soạn thảo biên dịch để triển khai các hành động đặc thù, trong khi chế độ chèn được sử dụng để sửa đổi các nội dung của tệp. Khi chúng ta mở vi, chế độ mặc định là chế độ thông thường. Để thay đổi sang chế độ chèn, chúng ta có thể sử dụng bất kỳ phím nào trong bảng sau đây:

a Nối thêm văn bản vào sau vị trí hiện hành của con trỏ

i Chèn văn bản vào trước vị trí hiện hành được chọn của con trỏ

A Nối thêm văn bản vào cuối của dòng hiện hành

I Chèn văn bản vào đầu của dòng hiện hành

R Chuyển sang chế độ thay thế để thay thế các ký tự

o Bổ sung một dòng mới vào bên dưới dòng hiện hành và chuyển sang chế độ chèn

O Bổ sung một dòng mới vào bên trên dòng hiện hành và chuyển sang chế độ chèn

Hình B.2

Chúng ta có thể sử dụng phím Esc để trở về chế độ thông thường. Trong chế độ chèn, thứ duy nhất chúng ta có thể làm là viết văn bản, xóa nó hoặc dịch chuyển quanh văn bản bằng việc sử dụng các

Trang 198/232

Vim

Trong GNU/Linux, sử dụng vim (Vi IMproved) phổ biến hơn, nó là 99.9% tương thích với vi nhưng bổ sung thêm một ít chức năng nữa.

Page 199: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

phím PgDn và PgUp. Chúng ta có thể triển khai tất cả các dạng hoạt động trong chế độ thông thường. Bảng sau đây chỉ ra một số hoạt động phổ biến nhất.

DỊCH CHUYỂN ĐỐI VỚI TỆP

j Dòng tiếp theo

k Dòng trước đó

l Ký tự tiếp theo

h Ký tự trước đó

[[ Đầu tệp

]] Cuối tệp

nG Đi tới dòng n

G Đi tới cuối tệp

ENTER Dòng tiếp theo

CTRL+F Màn hình tiếp theo

CTRL+B Màn hình trước đó

CTRL+D Nửa màn hình tiếp theo

CTRL+U Nửa màn hình trước đó

Hình B.3

LÀM VIỆC VỚI TỆP

w Lưu tệp

:w file_name Lưu tệp với tên tệp được chỉ định

:wq Lưu tệp và thoát ra khỏi trình soạn thảo

:x Lưu tệp và thoát ra khỏi trình soạn thảo

zz Lưu tệp và thoát ra khỏi trình soạn thảo

:q Thoát ra nếu tệp còn chưa được sửa đổi

:q! Thoát ra khỏi trình soạn thảo mà không lưu lại những thay đổi

:e file Soạn thảo tệp được chỉ định nếu không có những thay đổi trong tệp hiện hành

:e! file Soạn thảo tệp được chỉ định mà không lưu bất kỳ thay đổi nào trong tệp hiện hành

:r file Nối thêm tệp được chỉ định vào dòng hiện hành

:Nr file Nối thêm tệp được chỉ định vào dòng N

:sh Chạy một shell mà không thoát khỏi trình soạn thảo, để thoát khỏi shell thì phải gõ vào “exit”

:N, Mw! Lưu từ dòng N tới dòng M và bỏ qua phần còn lại

:N, M>>file Nối thêm văn bản từ dòng N tới dòng M vào tệp được chỉ định

:= Hiển thị dòng hiện hành

CTRL+G Hiển thị tình trạng tệp

Hình B.4

Trang 199/232

Page 200: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

SAO CHÉP, XÓA, CẮT, TÌM KIẾM VÀ THAY THẾ

yy Sao chép dòng hiện hành

Nyy Sao chép N dòng từ vị trí của con trỏ

p Dán các dòng được sao chép vào bên dưới dòng hiện hành

P Dán các dòng được sao chép vào bên trên dòng hiện hành

x Xóa ký tự bên dưới con trỏ

dw Xóa từ bên dưới con trỏ

dd Xóa dòng hiện hành

D Xóa các ký tự từ vị trí con trỏ cho tới cuối dòng

/string Tìm kiếm tiến lên chuỗi từ vị trí hiện hành. Để tiếp tục tìm kiếm, “n” và “N” có thể được sử dụng để tìm kiếm lùi hoặc tiến một cách tương ứng.

?string Tìm kiếm lùi đối với chuỗi từ vị trí hiện hành

:set ic Tìm kiếm, bỏ qua chữ hoa chữ thường

:set noic Tìm kiếm có phân biệt chữ hoa chữ thường

:g/HELLO/s/GOODBYE Thay thế tất cả các chỗ có “HELLO” bằng “GOODBYE”.

Hình B.5

Chúng ta sẽ thấy các lệnh chúng ta viết, chúng sẽ chạy khi chúng ta nhấn phím Enter, trong dòng bên dưới của trình soạn thảo. Bổ sung thêm, hầu hết các lệnh đó có thể được lặp đi lặp lại: tất cả

điều chúng ta phải làm là viết số lần chúng ta muốn chúng chạy trước lệnh đó. Ví dụ, dd sẽ xóa

dòng hiện hành; Nếu chúng ta đã sử dụng 3dd thay vì dòng hiện hành, thì 3 dòng sau có thể sẽ bị xóa.

Trang 200/232

Page 201: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Phụ lục C. Qui trình cài đặt Fedora 7

C.1. Giới thiệu

Mục tiêu của phụ lục này là để cung cấp một ý tưởng chung về các bước cơ bản phải được thực hiện để cài đặt Fedora 7. Chúng ta giả thiết rằng các độc giả có tri thức cơ bản thông qua module này và rằng họ quen với việc cài đặt Debian Etch. Tri thức về lý thuyết mà một người phải có để cài đặt dù là bất kỳ hệ thống nào là y hệt nhau trên thực tế; Vì vậy, phụ lục này chỉ tập trung vào việc đặt tri thức về lý thuyết vào thực tiễn và chúng ta sẽ chỉ nhấn mạnh tới những khác biệt giữa 2 tiến trình cài đặt đó.

C.2. Bắt đầu cài đặt

Vì phát tán này rất mới, chỉ phiên bản cài đặt tiếng Anh là có sẵn lúc này, nó giải thích vì sao các ảnh chụp màn hình đều là tiếng Anh, nhưng tiến trình cài đặt là y hệt trong bất kỳ ngôn ngữ nào.

Điều đầu tiên chúng ta phải làm là tải ảnh DVD ISO về và khởi động máy tính, nói cho nó khởi động từ DVD. Chúng ta phải sử dụng dấu nhắc khởi động để chỉ ra rằng chúng ta muốn triển khai một cài đặt hoặc cập nhật một hệ thống đang tồn tại.

Hình C.1

Chúng ta sau đó sẽ nhấn vào đúng ngôn ngữ và nhấn Tiếp (Next):

Trang 201/232

Page 202: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Hình C.2

Chúng ta sau đó sẽ thiết lập trình bày bàn phím:

Hình C.3

Trang 202/232

Page 203: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

C.3. Phân vùng đĩa cứng

Hệ thống cài đặt sau đó sẽ đề xuất việc phân vùng ổ đĩa cứng một cách mặc định. Như một sự lựa chọn, chúng ta có thể chọn sử dụng Disk Druid để tự triển khai hoạt động này. Lựa chọn này là được khuyến cáo, vì chương trình là dễ sử dụng và nó sẽ giúp chúng ta cấu trúc cho phân vùng phù hợp với các nhu cầu của chúng ta. Nếu chúng ta có một phân vùng hoán đổi rồi, thậm chí nếu nó là từ một hệ thống khác, thì chúng ta sẽ không phải tạo ra một phân vùng hoán đổi mới cho cài đặt này, khi mà chúng ta có thể sử dụng phân vùng hoán đổi đang tồn tại, vì chỉ những thông tin tạm thời được lưu giữ trong các phân vùng hoán đổi.

Chúng ta sau đó sẽ thấy một màn hình với trình bày được đề xuất cho phân vùng đó như sau:

Hình C.4

C.4. Cấu hình mạng

Trang 203/232

Page 204: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Hình C.5

C.5. Chọn vùng thời gian

Một bản đồ sau đó sẽ xuất hiện, trên đó chúng ta có thể chỉ định vị trí địa lý bằng chuột.

Hình C.6

Trang 204/232

Page 205: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Chúng ta sau đó sẽ được hỏi để thiết lập mật khẩu cho người sử dụng gốc root:

Hình C.7

C.6. Chọn phần mềm chúng ta muốn cài đặt

Chúng ta phải chọn các họ ứng dụng mà chúng ta muốn cài đặt và, trong số đó, những ứng dụng nào chúng ta muốn cài đặt vào trong hệ thống của chúng ta. Một lần nữa, chúng ta có thể thúc giục những người sử dụng kiềm chế việc cài đặt vô số các ứng dụng, vì chúng rõ ràng sẽ có tác động tiêu cực lên hiệu năng của hệ thống; chúng ta chỉ nên cài đặt phần còn lại của các ứng dụng, khi nhu cầu nảy sinh. Được khuyến cáo để phần hệ thống đồ họa nếu nó sẽ được sử dụng.

Trang 205/232

Page 206: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Hình C.8

Hình C.9

Một khi tiến trình lựa chọn kết thúc, chúng ta sẽ tiến hành cài đặt toàn bộ hệ thống: định dạng các phân vùng, thiết lập cấu hình cho các thiết bị và cài đặt các gói bằng việc sử dụng thông tin được cung cấp. Nếu chúng ta không có đủ chỗ trên đĩa cứng để cài đặt tất cả các ứng dụng, thì chúng ta

Trang 206/232

Page 207: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

sẽ được chỉ dẫn quay ngược về màn hình cấu hình nơi mà chúng ta hoặc sẽ bỏ chọn một số ứng dụng hoặc sẽ phân bổ nhiều không gian trống hơn cho phân vùng phù hợp (điều này thường nằm trong thư mục /home, nó là nơi hầu hết các dữ liệu cho việc tái phân vùng cho đĩa được đặt và chúng ta sẽ phải khởi động lại tiến trình cài đặt).

Hình C.10

Hình C.11

Trang 207/232

Page 208: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

C.7. Cài đặt trình tải khởi động (bootloader)

Khi mà tiến trình truyền dữ liệu kết thúc, tiến trình tiền cài đặt sẽ tự động chạy và trình tải khởi động sẽ được cài đặt, nếu có thể được, và một khi những tiến trình đó tự động được diễn ra, thì chúng ta sẽ được hỏi liệu chúng ta có muốn tạo ra một đĩa khởi động hay không, nó sau đó sẽ được sử dụng để khởi động bất kỳ sự cài đặt mới nào, liệu chúng ta còn chưa cài đặt trình tải khởi động hoặc chúng ta còn chưa thiết lập cấu hình cho nó dù nó đã được cài đặt đúng rồi hay không.

Hình C.12

Hình C.13

Trang 208/232

Page 209: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

C.8. Khởi động hệ thống lần đầu tiên

Hình C.14

Trước khi khởi động đầy đủ lần đầu tiên, chúng ta sẽ phải sử dụng một tác nhân thiết lập để thiết lập cấu hình cho các yếu tố như: tường lửa, SELinux (một tính năng an ninh của Fedora), ngày tháng, card âm thanh và tài khoản người sử dụng hệ thống mới:

Hình C.15

Trang 209/232

Page 210: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Hình C.16

Sau khi khởi động lại máy tính, chúng ta sẽ được hỏi để vào tên và mật khẩu của người sử dụng, trước khi chúng ta có thể vào được hệ thống:

Hình C.17

Trang 210/232

Page 211: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Hình C.18

Chúng tôi khuyến cáo đọc website của dự án Fedora để học cách hệ thống gói làm việc và sao cho bạn có thể kiểm tra được tất cả tài liệu có sẵn.

Trang 211/232

Page 212: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Phụ lục D. Các công cụ quản trị

D.1. Giới thiệu

Khi quản trị một hệ thống GNU/Linux, cần thiết phải quen với một dải lớn các chương trình và ứng dụng khác nhau. Dù tuyệt đối cơ bản để đọc tất cả các tài liệu có liên quan tới bất kỳ ứng dụng nào chúng ta muốn cài đặt trước khi cài đặt nó, thì trong một số trường hợp, những cấu hình đó có thể rất, rất phức tạp. Vì lý do đó, các công cụ quản trị nhất định đã và đang xuất hiện trong những năm qua, chúng trực giác và thân thiện hơn với người sử dụng và cho phép chúng ta điều hành được nhiều ứng dụng và dịch vụ theo một cách thức dễ dàng hơn.

Thông thường, những công cụ quản trị toàn cầu đó kết hợp cơ chế cho việc thiết lập cấu hình và quản lý các khía cạnh cơ bản của các tệp hệ thống và cấu hình đối với các ứng dụng mà chúng ta sử dụng. Dù thú vị để biết rằng các công cụ đó đang tồn tại, thì chúng ta cũng không nên dựa vào chúng khi thiết lập toàn bộ cấu hình của một máy chủ, vì nhiều lý do. Trước hết, chúng ta cần nhớ rằng các chương trình đó không phải lúc nào cũng luôn tính tới tất cả các khả năng có sẵn đối với các máy chủ đó. Điều này có thể có nghĩa rằng chúng ta có thể bỏ sót một số lựa chọn là quan trọng đối với các nhu cầu của chúng ta mà không được thiết lập cấu hình một cách đúng đắn phù hợp, rằng chúng ta có thể không tính tới một số hệ thống an ninh … Thứ 2 là, chúng ta không nên quên rằng, dù môi trường cấu hình có thể thân thiện hơn và, thường là, dễ dàng hơn để sử dụng và quản lý, thì chúng ta nên nhận thức được về những gì thực sự đang xảy ra khi chúng ta kích hoạt các lựa chọn của các chương trình và dịch vụ khác nhau mà chúng ta đang thiết lập cấu hình. Dù môi trường đó rất là trực quan, thì điều này không có nghĩa là chúng ta không nên biết từng lựa chọn chính xác có nghĩa gì. Nếu chúng ta không có được tri thức rộng lớn về dịch vụ mà chúng ta đang quản lý, thì rất dễ tạo ra lỗi và sẽ làm cho hệ thống làm việc không đúng, các chỗ bị tổn thương về an ninh... Cuối cùng, một lý do khác cho việc không sử dụng các ứng dụng đó là hệ thống có thể hỏng hoặc có các lỗi ở một số chỗ, có nghĩa rằng chúng ta không thể sử dụng chúng; chúng ta cũng có thể phải quản trị một hệ thống đơn giản không có các ứng dụng đó. Nếu chúng ta không biết một số chi tiết về các tệp cấu hình của các ứng dụng đó mà chúng ta sử dụng, thì chúng ta sẽ không có cách gì để làm việc với bất kỳ vấn đề nhỏ nào nảy sinh.

An ninh của các công cụ quản trị

Khi chúng ta cài đặt một số công cụ quản trị chung, điều quan trọng phải giới hạn việc sử dụng nó và đảm bảo rằng nó chỉ có thể được tài khoản người sử dụng gốc root của hệ thống truy cập được; nếu không, bất kỳ người sử dụng nào khác cũng có thể sửa đổi một số khía cạnh của hệ thống. Hơn nữa, chúng ta cũng nên rất cảnh giác với bất kỳ chỗ bị tổn thương về an ninh nào có khả năng xuất hiện trong chúng, vì chúng phải quản lý các chương trình được cài đặt trong hệ thống, hầu hết các công cụ đó có thể chạy được với các quyền của người sử dụng gốc root, với các mối nguy hiểm mà việc này có liên quan.

Vì tất cả các lý do đó, các công cụ nên được sử dụng rất cẩn trọng và từ những người biết chính xác những gì chúng đang sửa đổi. Trong một số trường hợp, chúng có thể rất hữu dụng đối với chúng ta để xem cách mà một số dạng cấu hình phức tạp sẽ được triển khai hoặc để dò tìm ra bất kỳ lỗi nào chúng ta đã tạo ra. Chúng ta nên sử dụng chúng như những công cụ bổ sung, hỗ trợ cho các tác vụ quản trị của chúng ta, nhưng không bao giờ chỉ dựa vào mỗi chúng.

Tất cả các phát tán GNU/Linux thường kết hợp các công cụ quản trị tự động của chúng. Tính năng này rõ ràng khác biệt đối với các phát tán GNU/Linux khác nhau. Trong SuSE, ví dụ, có một ứng dụng gọi là Yast2, nó cho phép chúng ta triển khai hầu hết bất kỳ hoạt động nào mà thiết lập cấu hình cho hệ thống; RedHat kết hợp rất nhiều chương trình khác nhau cho việc thiết lập cấu hình cho mạng, các daemon, các máy chủ ứng dụng...; khi cài đặt một gói trong Debian, chúng ta có khả

Trang 212/232

Page 213: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

năng khởi động một cấu hình dựa vào các câu trả lời mà chúng ta đưa ra qua một loạt các màn hình hội thoại khác nhau; một số ứng dụng có các script của riêng chúng, làm cho có khả năng có được các cấu hình tiêu chuẩn nhanh hơn... Dù vậy, nếu chúng ta biết những ứng dụng đó thực sự đang làm gì và các tệp nào có chứa các cấu hình của chúng, thì sẽ dễ dàng hơn nhiều để giải quyết được bất kỳ vấn đề gì nảy sinh với hệ thống. Ngoài các công cụ đó ra, công cụ nào là độc nhất vô nhị đối với phát tán mà chúng ta đang sử dụng, có những công cụ khác mà chúng ta có thể cài đặt trong hầu hết các phát tán đang tồn tại. Dù có hàng tá các công cụ và mỗi người quản trị viên phải chọn một công cụ mà họ ưa thích nhất hoặc phù hợp nhất cho các nhu cầu của họ, thì chúng ta cũng sẽ thảo

luận về một số trong số các công cụ phổ biến và linh hoạt nhất trong phụ lục này, linuxconf và

webmin.

D.2. Linuxconf

Ứng dụng quản trị chung linuxconf dựa vào một môi trường thực đơn văn bản mà chúng ta có thể sử dụng từ bất kỳ bảng điều khiển nào trong hệ thống. Hình sau đây chỉ ra thực đơn chính đó:

Hình D.1

Trang 213/232

Page 214: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Như trên hình chỉ ra, linuxconf chia các hoạt động của nó thành các phần sau:

• Cấu hình (Config): đây là phần chính trong linuxconf, nơi mà chúng ta có thể thiết lập cấu hình cho hầu hết các khía cạnh hệ thống, như mạng, những người sử dụng, các thiết bị ngoại vi được cài đặt... Các hình sau đây chỉ cách mà cấu hình mạng và các màn hình hội thoại của người sử dụng làm việc:

Hình D.2

• Kiểm soát (Control): phần này được sử dụng để triển khai các hành động cụ thể trong hệ thống, như kích hoạt hoặc giải hoạt các đơn vị, thay đổi ngày giờ của hệ thống, cá nhân hóa các thực đơn... Hình sau đây chỉ ra một số hành động có thể được thực hiện có trong thực đơn kiểm soát:

Trang 214/232

Page 215: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Hình D.3

• Tình trạng (Status): nếu chúng ta muốn xem xét các lưu ký hoặc tình trạng của bất kỳ khía cạnh nào của hệ thống, thì chúng ta có thể sử dụng các thực đơn trong phần này. Nhiều lệnh cơ bản của hệ thống cho việc xem xét tình trạng của đĩa, lượng bộ nhớ được sử dụng … sẽ được sử dụng trong chúng.

• Các tác vụ (Tasks): các hội thoại cấu hình khác để khởi động đúng cách một modem, mạng...

Cách khác để sử dụng chương trình này là như một trình duyệt web. Mặc định, truy cập mạng là không sẵn sàng cho trình duyệt và vì thế, trước khi sử dụng nó chúng ta sẽ phải kích hoạt nó bằng

việc sử dụng thực đơn Networking, Linuxconf network access và kích hoạt lựa chọn truy cập

mạng Enable network access option. Nếu chúng ta mở trình duyệt và đi tới

http://localhost:98/ thì chúng ta có các lựa chọn thực đơn và các màn hình hội thoại y hệt của

linuxconf ở định dạng html. Mặc định, chúng ta sẽ chỉ có sự truy cập tới dịch vụ này từ cùng một máy y hệt, dù được khuyến cáo chỉ kích hoạt nó khi chúng ta muốn sử dụng nó.

Cuối cùng, một dự án khác có liên quan tới linuxconf là gnome-linuxconf, nó có các chức năng y hệt như được mô tả ở trên, nhưng có thể được sử dụng trong các hệ thống X.

Hình sau đây chỉ nó giống thế nào:

Trang 215/232

Page 216: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Hình D.4

D.3. Webmin

Như cái tên chỉ ra, webmin là một công cụ để triển khai một cấu hình bằng việc sử dụng Internet. Nó được thiết kế tốt và hầu hết các phương pháp cấu hình được nghĩ ra một cách cẩn thận. Khi được sử dụng đúng, thì nó có thể là một công cụ rất hữu dụng. Mặc định, khi nó được cài đặt thì nó sẽ mở cổng 10000 (https://localhost:10000) sao cho chúng ta sẽ có khả năng truy cập nó bằng việc sử dụng bất kỳ trình duyệt nào mà chúng ta muốn. Trước khi chúng ta có thể bắt đầu sử dụng công cụ đó, chúng ta sẽ được hỏi về mật khẩu của người quản trị hệ thống, dù nó cũng có một hệ thống rất hữu dụng cho việc quản trị người sử dụng thực tế mà với nó chúng ta có thể chỉ định các hành động có thể được từng người sử dụng thực hiện. Lựa chọn này là rất thú vị vì nó cho phép chúng ta thiết lập cấu hình cho nhiều hơn một tài khoản của người quản trị hệ thống, tạo ra các tài khoản được chuyên biệt hóa phù hợp với các tác vụ mà mỗi người sử dụng cần để thực hiện.

Chúng ta bây giờ sẽ đưa ra một loạt các ảnh màn hình của các phần khác nhau, cung cấp một ý tưởng về ứng dụng sẽ trông giống cái gì:

• Quản trị người sử dụng hệ thống:

Trang 216/232

Page 217: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Hình D.5

• Thiết lập cấu hình cho tiến trình khởi động hệ thống:

Hình D.6

Trang 217/232

Page 218: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

• Thông tin trên đĩa:

Hình D.7

• Trình duyệt tệp:

Hình D.8

Trang 218/232

Page 219: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Giấy phép Tài liệu Tự do GNU

Giấy phép Tài liệu Tự do GNU

Phiên bản 1.2, tháng 11/2002

Bản quyền © 2000, 2001, 2002 Quỹ Phần mềm Tự do, 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

Mỗi người được phép sao chép và phân phối các bản sao giống y nguyên bản gốc của tài liệu giấy phép này, nhưng việc thay đổi giấy phép là không được phép. 0. LỜI NÓI ĐẦU

Mục đích của Giấy phép này là để làm ra một sách chỉ dẫn, sách, hoặc tài liệu về chức năng và hữu dụng khác “tự do” theo nghĩa của sự tự do: để đảm bảo cho mỗi người sự tự do có hiệu quả để sao chép và phân phối nó, có hoặc không có việc sửa đổi nó, hoặc một cách thương mại hoặc không thương mại. Thứ 2, Giấy phép này giữ lại cho tác giả và người xuất bản một con đường để có được sự tin cậy cho công việc của họ, trong khi không được coi là có trách nhiệm cho những sửa đổi được thực hiện bởi những người khác.

Giấy phép này là một dạng “copyleft”, mà nó có nghĩa là những công việc dẫn xuất của tài liệu này phải bản thân chúng là tự do theo cùng nghĩa này. Những bổ trợ cho Giấy phép Công cộng Chung GNU (GNU GPL), mà là một giấy phép copyleft được thiết kế cho PMTD. Chúng tôi đã thiết kế Giấy phép này để sử dụng nó cho những sách chỉ dẫn cho PMTD, vì PMTD cần tài liệu tự do: một chương trình tự do phải đi với các sách chỉ dẫn cung cấp cùng những quyền tự do y hệt mà phần mềm có. Nhưng Giấy phép này không bị hạn chế đối với các sách chỉ dẫn phần mềm; nó có thể được sử dụng cho bất kỳ công việc văn bản nào, bất chấp vấn đề về chủ đề hoặc bất chấp nó được xuất bản như một sách được in. Chúng tôi khuyến cáo Giấy phép này một cách thực tế cho các công việc mà mục đích của chúng là chỉ dẫn hoặc tham chiếu.

1. TÍNH CÓ THỂ ÁP DỤNG ĐƯỢC VÀ NHỮNG ĐỊNH NGHĨA

Giấy phép này áp dụng cho bất kỳ sách chỉ dẫn hoặc công việc nào khác, trong bất kỳ vật trung gian nào, mà chứa một lưu ý được đặt bởi người giữa bản quyền nói nó có thể được phân phối theo những điều khoản của Giấy phép này. Một lưu ý như vậy trao một giấy phép toàn cầu, miễn phí bản quyền, không hạn chế về thời gian, để sử dụng công việc đó theo những điều kiện được nêu ở đây. “Tài liệu”, bên dưới, tham chiếu tới bất kỳ sách hướng dẫn hoặc công việc nào như vậy. Bất kỳ thành viên nào của công chúng là một người nhận được giấy phép, và được gọi như là “Bạn'. Bạn chấp nhận giấy phép nếu bạn sao chép, sửa đổi hoặc phân phối công việc theo một cách đòi hỏi quyền theo luật bản quyền.

Một “Phiên bản Được sửa đổi” của một Tài liệu có nghĩa là bất kỳ công việc nào chứa Tài liệu hoặc một phần của nó, hoặc được sao chép y nguyên, hoặc với những sửa đổi và/hoặc được dịch sang ngôn ngữ khác.

Một “Phần Hai” là một phụ lục được đặt tên hoặc một phần vấn đề trước của Tài liệu mà nó hoàn toàn làm việc với mối quan hệ của những người xuất bản hoặc các tác giả của Tài liệu đối với toàn bộ mục đích của Tài liệu (hoặc các vấn đề có liên quan) và không chứa đựng gì có thể rơi trực tiếp vào bên trong mục đích toàn bộ đó. (Vì thế, nếu Tài liệu là một phần của một cuốn sách về toán

Trang 219/232

Page 220: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

học, thì một Phần Hai có thể không giải thích gì về toán học). Mối quan hệ có thể là một vấn đề kết nối lịch sử với mục đích hoặc với những vấn đề có liên quan, hoặc quan điểm về pháp lý, thương mại, triết học, đạo đức hoặc chính trị về chúng.

“Những Phần Không đổi” là những Phần hai nhất định nào đó mà những đầu đề của nó được chỉ định, như là những gì của các Phần Không đổi, trong lưu ý mà nói rằng Tài liệu được tung ra theo Giấy phép này. Nếu một phần không hợp với định nghĩa ở trên của Phần Hai thì nó không được phép được chỉ định như Phần Không đổi. Tài liệu có thể không chứa các Phần Không đổi nào. Nếu Tài liệu không xác định bất kỳ các Phần Không đổi nào thì nó là không có.

“Văn bản Bìa” là những đoạn văn bản ngắn nhất định nào đó mà chúng được liệt kê, như Văn bản Bìa Trước hoặc Văn bản Bìa Sau, trong một lưu ý mà nó nói rằng Tài liệu được tung ra theo Giấy phép này. Một Văn bản Bìa Trước có thể nhiều nhất 5 từ, và một Văn bản Bìa Sau có thể nhiều nhất 25 tử.

Một bản sao “Minh bạch” của Tài liệu có nghĩa là một bản sao mà máy có thể đọc được, được đại diện trong một định dạng mà đặc tả của nó là sẵn sàng cho công chúng nói chung, mà nó phù hợp cho việc rà soát lại tài liệu một cách trung thực với những trình soạn thảo văn bản thông thường hoặc (đối với các ảnh được cấu tạo từ các điểm pixel) các chương trình đồ họa thông thường hoặc (đối với các bản vẽ) một số trình vẽ sẵn có một cách rộng rãi, và nó phù hợp cho đầu vào tới các trình định dạng văn bản hoặc cho việc dịch tự động đối với một loạt các định dạng phù hợp cho đầu vào tới các trình định dạng văn bản. Một bản sao được làm trong một định dạng tệp Minh bạch khác mà sự đánh dấu của nó, hoặc không có việc đánh dấu, được sắp xếp để cản trở hoặc làm nản lòng đối với sự sửa đổi tiếp theo bởi những người đọc không là Minh bạch. Một định dạng ảnh là không Minh bạch nếu sử dụng được cho bất kỳ số lượng có thực nào đó của văn bản. Một bản sao là không “Minh bạch” được gọi là “Tù mù”.

Những ví dụ về những định dạng phù hợp cho các bản sao Minh bạch bao gồm các mã ASCII mà không có đánh dấu, định dạng đầu vào của Texinfo, định dạng đầu vào của LaTeX, SGML hoặc XML có sử dụng một DTD sẵn sàng một cách công khai, và đơn giản tuân thủ chuẩn HTML, PostScript hoặc PDF được thiết kế cho sự sửa đổi của con người. Những ví dụ về các định dạng ảnh minh bạch bao gồm PNG, XCF và JPG. Những định dạng Tù mù bao gồm các định dạng sở hữu độc quyền mà có thể đọc được và soạn thảo được chỉ bởi các trình soạn thảo văn bản sở hữu độc quyền, SGML hoặc hoặc XML mà đối với chúng DTD và/hoặc các công cụ xử lý sẽ thường không sẵn sàng, và HTML được tạo ra bởi máy, PostScript hoặc PDF được tạo ra bởi một số trình soạn thảo văn bản chỉ cho những mục đích của đầu ra.

“Trang Tiêu đề” có nghĩa là, đối với một cuốn sách được in, bản thân trang tiêu đề, cộng với các trang tiếp sau là cần thiết để giữ, một cách hợp pháp, tư liệu mà Giấy phép này đòi hỏi phải xuất hiện trên trang tiêu đề. Đối với những công việc ở các định dạng mà không có bất kỳ trang tiêu đề nào như vậy, thì “Trang Tiêu đề” có nghĩa là văn bản gần sự xuất hiện nổi bật nhất của tiêu đề công việc, đứng trước cả bắt đầu của phần thân của văn bản.

Một phần “Tiêu đề XYZ” có nghĩa là một đơn vị phụ được đặt tên của Tài liệu mà tiêu đề của nó hoặc là chính xác là XYZ hoặc có chứa XYZ trong ngoặc kép đi theo văn bản mà dịch XYZ sang ngôn ngữ khác. (Ở đây XYZ đứng cho một tên phần đặc biệt được nhắc tới ở bên dưới, như là “Sự thừa nhận”, “Những cống hiến”, “Những xác nhận”, hoặc “Lịch sử”). Để “Giữ lại Tiêu đề” của một phần như vậy khi bạn sửa đổi Tài liệu có nghĩa là nó vẫn còn là một phần “Tiêu đề XYZ” theo định nghĩa này.

Tài liệu có thể đưa vào những Khước từ Đảm bảo bên cạnh lưu ý mà nói rằng Giấy phép này áp

Trang 220/232

Page 221: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

dụng cho Tài liệu. Những Khước từ Đảm bảo này được cho là sẽ được đưa vào bằng tham chiếu trong Giấy phép này, nhưng chỉ về việc khước từ những đảm bảo: bất kỳ ngụ ý nào khác mà những Khước từ Đảm bảo này có thể có được tránh và không có tác động nào đối với ý nghĩa của Giấy phép này.

2. VIỆC SAO CHÉP Y NGUYÊN

Bạn có thể sao chép và phân phối Tài liệu trong bất kỳ vật trung gian nào, hoặc một cách thương mại hoặc không thương mại, miễn là Giấy phép này, những lưu ý về bản quyền, và lưu ý của giấy phép nói Giấy phép này áp dụng cho Tài liệu được tái sản xuất trong tất cả các bản sao, và rằng bạn bổ sung những điều kiện không khác hơn bất kể những thứ gì của Giấy phép này. Bạn có thể không sử dụng những phương tiện kỹ thuật để cản trở hoặc kiểm soát việc đọc hoặc sao chép tiếp tục của các bản sao mà bạn làm hoặc phân phối. Tuy nhiên, bạn có thể chấp nhận sự đền bù trong sự trao đổi cho những bản sao. Nếu bạn phân phối một số lượng đủ lớn các bản sao thì bạn cũng phải tuân theo những điều kiện trong phần 3. Bạn cũng có thể cho vay các bản sao, theo cùng y hệt các điều kiện được nêu ở trên, và bạn có thể hiển thị các bản sao một cách công khai.

3. VIỆC SAO CHÉP THEO SỐ LƯỢNG

Nếu bạn xuất bản các bản sao in được (hoặc các bản sao trong các vật chứa mà thường đã in các bìa) của Tài liệu, số lượng hơn 100, và lưu ý của giấy phép của Tài liệu đòi hỏi các Văn bản Bìa, thì bạn phải bao quanh các bản sao trong các bìa mà nó chứa, rõ ràng và hợp pháp, tất cả các Văn bản Bìa. Các Văn bản Bìa Trước ở bìa trước, và các Văn bản Bìa Sau ở bìa sau. Cả 2 bìa cũng phải phải xác định rõ ràng và hợp pháp bạn như người xuất bản của các bản sao này. Bìa trước phải thể hiện toàn bộ tiêu đề với tất cả các từ của tiêu đề một cách nổi bật và dễ nhìn một cách như nhau. Bạn có thể bổ sung tư liệu khác trên các bìa. Việc sao chép với những thay đổi có giới hạn đối với các bìa, cùng với việc chúng giữ lại tiêu đề của Tài liệu và làm thỏa mãn những điều kiện này, có thể được đối xử như việc sao chép y nguyên theo những lưu ý khác. Nếu các văn bản được yêu cầu cho những trang bìa là quá to không rõ ràng, thì bạn phải đặt những văn bản đầu được liệt kê (càng rõ ràng bao nhiều càng tốt có thể) lên bìa thực tế, và tiếp tục phần còn lại trên những trang tiếp sau.

Nếu bạn xuất bản hoặc phân phối các bản sao Tù mù của Tài liệu số lượng lớn hơn 100, thì bạn phải hoặc đưa vào một bản sao Minh bạch mà máy đọc được cùng với từng bản sao Tù mù, hoặc nói trong hoặc với mỗi bản sao Tù mù một vị trí mạng máy tính mà từ đó mọi người sử dụng mạng thông thường truy cập được tới để tải về bằng việc sử dụng các giao thức mạng tiêu chuẩn công cộng cho một bản sao Minh bạch đầy đủ của Tài liệu, tự do của tư liệu được bổ sung. Nếu bạn sử dụng lựa chọn sau, thì bạn phải tiến hành các bước thận trọng hợp lý, khi bạn bắt đầu sự phân phối các bản sao Tù mù theo số lượng, để đảm bảo rằng bản sao Minh bạch này sẽ vẫn giữ truy cập được như thế tại vị trí đã được nói cho tới khi ít nhất 1 năm sau lần cuối cùng bạn phân phối một bản sao Tù mù (trực tiếp hoặc thông qua các đại lý hoặc những nhà bán lẻ của bạn) đối với xuất bản phẩm đó cho công chúng.

Được yêu cầu, nhưng không đòi hỏi, rằng bạn liên hệ tới các tác giả của Tài liệu trước khi việc phần phối bất kỳ số lượng lớn nào các bản sao, để cho họ một cơ hội cung cấp cho bạn với một phiên bản cập nhật của Tài liệu.

Trang 221/232

Page 222: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

4. NHỮNG SỬA ĐỔI

Bạn có thể sao chép và phân phối một Phiên bản được Sửa đổi của Tài liệu theo những điều kiện của các phần 2 và 3 ở trên, miễn là bạn tung ra Phiên bản được Sửa đổi chính xác theo Giấy phép này, với việc Phiên bản được Sửa đổi này làm tròn vai trò của Tài liệu, vì thế việc cấp phép phân phối và sửa đổi của Phiên bản được Sửa đổi cho bất kỳ ai có một bản sao của nó. Hơn nữa, bạn phải làm những thứ này trong Phiên bản được Sửa đổi:

• A. Sử dụng trong Trang Tiêu đề (và trên các bìa, nếu có) một tiêu đề phân biệt được với những thứ của Tài liệu, và với những thứ của các phiên bản trước (mà nên, nếu đã có, được liệt kê trong phần Lịch sử của Tài liệu). Bạn có thể sử dụng cùng y hệt tiêu đề như một phiên bản trước nếu người xuất bản ban đầu của phiên bản đó trao quyền.

• B. Liệt kê trên Trang Tiêu đề, như các tác giả, một hoặc nhiều người hoặc các thực thể có trách nhiệm về quyền tác giả của những sửa đổi trong Phiên bản được Sửa đổi, cùng với ít nhất 5 tác giả chính của Tài liệu (tất cả đối với các tác giả chính, nếu nó là nhỏ hơn 5), trừ phi họ đưa ra cho bạn từ yêu cầu này.

• C. Tuyên bố trên trang Tiêu đề tên của nhà xuất bản của Phiên bản được Sửa đổi, như là người xuất bản.

• D. Giữ lại tất cả các lưu ý về bản quyền của Tài liệu.

• E. Bổ sung một lưu ý phù hợp về bản quyền cho những sửa đổi của bạn ngay cạnh những lưu ý về bản quyền khác.

• F. Đưa vào, ngay lập tức sau những lưu ý về bản quyền, một lưu ý về giấy phép trao quyền công khai để sử dụng Phiên bản được Sửa đổi theo những điều khoản của Giấy phép này, ở dạng được chỉ ra trong Phụ lục bên dưới.

• G. Giữ lại trong lưu ý giấy phép đó những danh sách đầy đủ của những Phần Không đổi và những Văn bản Bìa được yêu cầu đưa ra trong lưu ý giấy phép của Tài liệu.

• H. Đưa vào một bản sao chưa bị sửa của Giấy phép này.

• I. Giữ lại phần Tựa đề “Lịch sử”, Giữ lại Tiêu đề của nó, và bổ sung cho nó một khoản nói ít nhất tiêu đề, năm, các tác giả mới, và người xuất bản của Phiên bản được Sửa đổi như được đưa ra trên Trang Tiêu đề. Nếu không có phần Tiêu đề “Lịch sử” trong Tài liệu, hãy tạo ra một phần để nói tiêu đề, năm, các tác giả, và nhà xuất bản của Tài liệu như được đưa ra trên Trang Tiêu đề, rồi bổ sung một khoản mô tả Phiên bản được Sửa đổi như được nêu trong câu trước.

• J. Giữ lại vị trí của mạng, nếu có, đưa ra trong Tài liệu cho việc truy cập công khai tới một bản sao Minh bạch của Tài liệu, và cũng như vậy các vị trí của mạng được đưa ra trong Tài liệu cho các phiên bản trước mà nó được dựa vào. Những chỗ này có thể được đặt trong phần “Lịch sử”. Bạn có thể bỏ qua một vị trí mạng cho một công việc mà đã được xuất bản ít nhất 4 năm trước bản thân Tài liệu này, hoặc nếu người xuất bản gốc của phiên bản mà nó tham chiếu tới cho phép.

• K. Đối với bất kỳ phần nào có Tiêu đề “Những Thừa nhận” hoặc “Những Cống hiến”, hãy Giữ Tiêu đề của phần này, và hãy giữ trong phần này tất cả bản chất và giọng điệu của những thừa nhận của mỗi nhà đóng góp và/hoặc những cống hiến được đưa ra ở đây.

Trang 222/232

Page 223: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

• L. Giữ lại tất cả các Phần Không đổi của Tài liệu, còn chưa bị sửa trong văn bản của chúng và trong các tiêu đề của chúng. Các số phần hoặc tương đương không được coi là một phần của các tiêu đề các phần.

• M. Hãy xóa đi bất kỳ phần có Tiêu đề “những Xác nhận” nào. Một phần như vậy có thể không được đưa vào trong Phiên bản được sửa đổi.

• N. Không đặt lại đầu đề cho bất kỳ phần đang tồn tại nào để có Tiêu đề “những Xác nhận” hoặc mâu thuẫn theo tiêu đề với bất kỳ Phần Không đổi nào.

• O. Giữ lại bất kỳ những Khước từ Đảm bảo nào.

Nếu Phiên bản được Sửa đổi đưa vào các phần của các vấn đề trước hoặc các phụ lục mới mà chúng được coi là các Phần Hai và không chứa tư liệu được sao chép từ Tài liệu, thì bạn có thể tùy theo lựa chọn của bạn chỉ định một số hoặc tất cả nhưng phần này như là không thay đổi. Để làm điều này, hãy bổ sung các tiêu đề của chúng vào danh sách của các Phần Không đổi trong lưu ý về giấy phép của Phiên bản được Sửa đổi. Những tiêu đề này phải phân biệt được với bất kỳ tiêu đề nào của các phần khác.

Bạn có thể bổ sung một phần có Tiêu đề “Những Xác nhận”, miễn là nó không chứa gì cả ngoài những xác nhận của Phiên bản được Sửa đổi của bạn bởi một loạt các bên - ví dụ vậy, những tuyên bố của các bên rà soát lại hoặc văn bản đã được phê chuẩn bởi một tổ chức như định nghĩa có căn cứ của một chuẩn.

Bạn có thể bổ sung một đoạn tới 5 từ như một Văn bản Bìa Trước, và một đoạn tới 25 từ như một Văn bản Bìa Sau, vào cuối của danh sách của các Văn bản Bìa trong Phiên bản được Sửa đổi. Chỉ một đoạn của Văn bản Bìa Trước và một đoạn của Văn bản Bìa Sau có thể được bổ sung của (hoặc qua những dàn xếp được thực hiện bởi) bất kỳ một thực thể nào. Nếu Tài liệu đã đưa vào một văn bản bìa cho cùng bìa đó, được bổ sung trước đó bởi bạn hoặc bởi sự dàn xếp được thực hiện bởi cùng thực thể mà bạn thay mặt để hành động, thì bạn có thể không bổ sung thêm văn bản khác nữa; nhưng bạn có thể thay thế văn bản cũ, theo quyền dứt khoát từ người xuất bản trước mà đã bổ sung văn bản cũ đó.

(Những) tác giả và (những) người xuất bản của Tài liệu bằng Giấy phép này không trao quyền để sử dụng các tên của họ cho thiên hạ biết vì hoặc để đòi hoặc ngụ ý xác nhận về bất kỳ Phiên bản được Sửa đổi nào.

5. VIỆC PHỐI HỢP CÁC TÀI LIỆU

Bạn có thể phối hợp Tài liệu này với các tài liệu khác được tung ra theo Giấy phép này, theo những điều khoản được xác định trong phần 4 ở trên cho những phiên bản được sửa đổi, miễn là bạn đưa vào sự phối hợp này cho tất cả các Phần Không đổi của tất cả các tài liệu gốc ban đầu, chưa bị sửa đổi, và liệt kê chúng tất cả như các Phần Không sửa của công việc phối hợp của bạn trong lưu ý giấy phép của nó, và rằng bạn giữ lại tất cả những Khước từ Đảm bảo của họ.

Công việc phối hợp chỉ cần chứa một bản sao của Giấy phép này, và nhiều Phần Không đổi y hệt có thể được thay thế bằng một bản sao duy nhất. Nếu có nhiều Phần Không đổi với cùng tên mà khác nội dung, hãy tạo ra tiêu đề duy nhất cho từng phần như vậy bằng việc bổ sung ở cuối của nó, trong các dấu ngoặc đơn, tên của tác giả hoặc nhà xuất bản gốc của phần đó nếu biết, hoặc một số duy nhất. Hãy thực hiện sự chỉnh y hệt cho các tiêu đề của các phần trong danh sách của các Phần

Trang 223/232

Page 224: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Không đổi trong lưu ý giấy phép của công việc phối hợp.

Trong sự phối hợp, bạn phải phối hợp bất kỳ phần nào có Tiêu đề “Lịch sử” trong các tài liệu gốc khác nhau, tạo nên một phần có Tiêu đề “Lịch sử”; cũng như vậy hãy phối hợp bất kỳ phần nào có Tiêu đề “Những Thừa nhận”, và bất kỳ phần nào có Tiêu đề “Những Cống hiến”. Bạn phải xóa tất cả các phần có Tiêu đề “những Xác nhận”.

6. CÁC BỘ SƯU TẬP CỦA CÁC TÀI LIỆU

Bạn có thể tạo ra một bộ sưu tập cấu tạo từ Tài liệu và các tài liệu khác được tung ra theo Giấy phép này, và thay thế các bản sao riêng rẽ của Giấy phép này trong một loạt tài liệu bằng một bản sao duy nhất mà nó được đưa vào trong bộ sưu tập, miễn là bạn tuân theo các qui định của Giấy phép này về việc sao chép y nguyên của mỗi tài liệu với toàn bộ sự tôn trọng.

Bạn có thể trích dẫn một tài liệu duy nhất từ một bộ sưu tập như vậy, và phân phối nó một cách độc lập theo Giấy phép này, miễn là bạn chèn vào một bản sao của Giấy phép này vào trong tài liệu trích xuất đó, và tuân theo Giấy phép này với tất cả sự tôn trọng về việc sao chép y nguyên của tài liệu đó.

7. SỰ TẬP HỢP BÊN TRONG CÁC CÔNG VIỆC ĐỘC LẬP

Một sự biên tập của Tài liệu hoặc những dẫn xuất của nó với những tài liệu hoặc công việc riêng rẽ và độc lập khác, trong hoặc trên một số lượng của một lưu trữ hoặc vật chứa phân phối, được gọi là một “sự tập hợp” nếu bản quyền tạo ra từ sự biên tập này không được sử dụng để giới hạn các quyền pháp lý của những người sử dụng sự biên dịch đó vượt ra ngoài những gì các công việc riêng rẽ đó cho phép. Khi Tài liệu là sự tập hợp mà bản thân chúng không phải là những công việc dẫn xuất của Tài liệu.

Nếu yêu cầu Văn bản Bìa có thể được thay thế của phần 3 là áp dụng được cho các bản sao này của Tài liệu, thì sau đó nếu Tài liệu là ít hơn một nửa của toàn bộ sự tập hợp, thì các Văn bản Bìa của Tài liệu có thể được thay thế trên các tờ bìa mà chúng gộp Tài liệu này bên trong sự tập hợp, hoặc tương đương bằng điện tử của các tờ bìa nếu Tài liệu ở dạng điện tử. Nếu không chúng phải xuất hiện trong các tờ bìa được in mà chúng gộp toàn bộ sự tập hợp này.

8. BẢN DỊCH

Bản dịch được coi là một dạng sửa đổi, nên bạn có thể phân phối các bản dịch của Tài liệu theo những điều khoản của phần 4. Việc thay thế các Phần Không sửa bằng những bản dịch yêu cầu quyền đặc biệt từ những người giữ bản quyền của chúng, nhưng bạn có thể đưa những bản dịch của một số hoặt tất cả các Phần Không sửa bổ sung vào cho các phiên bản gốc của các Phần Không sửa đó. Bạn có thể đưa vào một bản dịch của Giấy phép này, và tất cả những lưu ý về giấy phép trong Tài liệu, và bất kỳ những Khước từ Đảm bảo nào, miễn là bạn cũng đưa vào phiên bản gốc tiếng Anh của Giấy phép và các phiên bản gốc của những lưu ý và những khước từ. Trong trường hợp của một sự không giống nhau giữa bản dịch và phiên bản gốc của Giấy phép này hoặc một lưu ý hoặc sự khước từ, thì phiên bản gốc sẽ thắng thế.

Nếu một phần trong tài liệu có Tiêu đề “Những Thừa nhận”, “Những Cống hiến”, hoặc “Lịch sử”, thì yêu cầu (phần 4) phải Giữ lại Tiêu đề của nó (phần 1) sẽ thường yêu cầu việc thay đổi tiêu đề có

Trang 224/232

Page 225: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

thực này.

9. KẾT THÚC

Bạn có thể không sao chép, sửa đổi, cấp giấy phép phụ, hoặc phân phối Tài liệu này trừ phi như được cung cấp một cách chính xác theo Giấy phép này. Bất kỳ dự định nào khác để sao chép, sửa đổi, cấp phép phụ hoặc phân phối Tài liệu này sẽ không có hiệu lực, và sẽ tự động kết thúc các quyền của bạn theo Giấy phép này. Tuy nhiên, các bên mà đã nhận được các bản sao, hoặc các quyền, từ bạn theo Giấy phép này sẽ không bị kết thúc các giấy phép của họ miễn là những bên như vậy giữ nguyên sự tuân thủ đầy đủ.

10. NHỮNG RÀ SOÁT LẠI TRONG TƯƠNG LAI CỦA GIẤY PHÉP NÀY

FSF có thể xuất bản các phiên bản mới, được rà soát lại của Giấy phép Tài liệu Tự do GNU theo thời gian. Những phiên bản mới như vậy sẽ là tương tự theo tinh thần đối với phiên bản hiện hành, nhưng có thể khác về chi tiết để giải quyết những vấn đề hoặc những mối quan tâm mới. Xem http://www.gnu.org/copyleft/.

Mỗi phiên bản của Giấy phép này được đưa ra với một số phiên bản khác biệt. Nếu Tài liệu này chỉ định rằng một phiên bản được đánh số đặc biệt nào đó của Giấy phép này “hoặc bất kỳ phiên bản nào sau đó” áp dụng cho nó, thì bạn có lựa chọn tuân theo những điều khoản và điều kiện hoặc của phiên bản được chỉ định đó hoặc của bất kỳ phiên bản nào sau này mà đã được xuất bản (chứ không phải một bản phác thảo) bởi FSF. Nếu Tài liệu này không chỉ định một số phiên bản của Giấy phép này, bạn có thể chọn bất kỳ phiên bản nào từ trước tới nay được xuất bản (không phải một bản phác thảo) bởi FSF.

Làm thế nào để sử dụng Giấy phép này cho các tài liệu của bạn

Để sử dụng Giấy phép này trong một tài liệu mà bạn đã viết, bao gồm một bản sao của Giấy phép này trong tài liệu và đặt bản quyền sau và những lưu ý của giấy phép chỉ sang trang tiêu đề:

Bản quyền © NĂM TÊN CỦA BẠN. Quyền được trao để sao chép, phân phối và/hoặc sửa đổi tài liệu này theo những điều khoản của Giấy phép Tài liệu Tự do GNU, Phiên bản 1.2 hoặc bất kỳ phiên bản nào sau này được xuất bản bởi Quỹ Phần mềm Tự do; không có các Phần Không sửa, không các Văn bản Bìa Trước, và không các Văn bản Bìa Sau. Một bản sao của giấy phép này được đưa vào trong phần có tiêu đề “Giấy phép Tài liệu Tự do GNU”.

Nếu bạn có các Phần Không sửa, các Văn bản Bìa Trước và các Văn bản Bìa Sau, hãy thay thế bằng các dòng Văn bản với điều này:

với các Phần Không sửa đang được LIỆT KÊ CÁC TIÊU ĐỀ CỦA CHÚNG, với các Văn bản Bìa Trước đang được LIỆT KÊ, và với các Văn bản Bìa Sau đang được LIỆT KÊ.

Nếu bạn có các Phần Không sửa mà không có các Văn bản Bìa, hoặc một số sự kết hợp khác của 3 thứ này, thì hãy sát nhập chúng theo 2 giải pháp thay thế để phù hợp với hoàn cảnh.

Nếu tài liệu của bạn chứa các ví dụ không bình thường về mã chương trình, thì chúng tôi khuyến cáo đưa ra những ví dụ này song song theo lựa chọn của bạn đối với giấy phép PMTD, như Giấy phép Công cộng Chung GNU, để cho phép sử dụng chúng trong PMTD.

Trang 225/232

Page 226: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

GNU FREE DOCUMENTATION LICENSE

GNU Free Documentation License

Version 1.2, November 2002

Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

0.PREAMBLE

The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.

This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.

We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.

1.APPLICABILITY AND DEFINITIONS

This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law.

A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.

A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.

The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify

Trang 226/232

Page 227: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

any Invariant Sections then there are none.

The "Cover Texts" are certain short passages of text that are listed, as Front Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.

A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque".

Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only.

The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.

A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition.

The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.

2.VERBATIMCOPYING

You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.

You may also lend copies, under the same conditions stated above, and you may publicly display copies.

Trang 227/232

Page 228: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

3.COPYINGINQUANTITY

If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.

If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computernetwork location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.

It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.

4.MODIFICATIONS

You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:

• A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.

• B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement.

• C. State on the Title page the name of the publisher of the Modified Version, as the publisher.

• D. Preserve all the copyright notices of the Document.

• E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.

Trang 228/232

Page 229: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

• F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.

• G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice.

• H. Include an unaltered copy of this License.

• I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.

• J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.

• K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.

• L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.

• M. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version.

• N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section.

• O. Preserve any Warranty Disclaimers.

If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.

You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties - for example, statements of peer review or that the text has been approved by an organisation as the authoritative definition of a standard.

You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the

Trang 229/232

Page 230: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

previous publisher that added the old one.

The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.

5.COMBINING DOCUMENTS

You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers.

The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.

In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements."

6.COLLECTIONSOFDOCUMENTS

You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.

You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.

7.AGGREGATION WITH INDEPENDENT WORKS

A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document.

If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.

8.TRANSLATION

Translation is considered a kind of modification, so you may distribute translations of the Document

Trang 230/232

Page 231: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail.

If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.

9.TERMINATION

You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.

10.FUTURE REVISIONS OF THIS LICENSE

The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.

Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.

Trang 231/232

Page 232: Cơ bản GNU/Linux (FTA: Basic GNU/Linux)

GNUFDL • PID_00148369 GNU/Linux cơ bản

Trang 232/232