Hệ điều hành mã nguồn mở
TRƢỜNG ĐẠI HỌC SƢ PHẠM KỸ THUẬT HƢNG YÊN
KHOA CÔNG NGHỆ THÔNG TIN
ĐỀ CƢƠNG: HỆ ĐIỀU HÀNH MÃ NGUỒN MỞ
TÀI LIỆU LƯU HÀNH NỘI BỘ
Trang 1
Hệ điều hành mã nguồn mở
Trang 2
Hệ điều hành mã nguồn mở
Mục lục
1
Tổng quan về hệ điều hành mã nguồn mở .................................................................. 10
1.1
1.1.1
Cơ bản về hệ điều hành và các ứng dụng trên hệ điều hành Linux ................. 10
1.1.2
Quản trị tài nguyên người dùng trên Linux ................................................... 13
1.1.3
Phát triển ứng dụng trên hệ điều hành Linux................................................. 13
1.1.4
Quản lý dịch vụ và bảo mật .......................................................................... 14
1.1.5
Cấu hình dịch vụ mạng căn bản trên Linux ................................................... 14
1.1.6
Cài đặt cấu hình DHCP và DNS trên Linux .................................................. 14
1.1.7
Dịch vụ chia sẻ dữ liệu trên Linux ................................................................ 16
1.1.8
Dịch vụ quản lý tài nguyên tập chung trên Linux .......................................... 16
1.1.9
Cài đặt cấu hình webserver trên Linux .......................................................... 16
1.2
2
Những nội dung chính trong học phần................................................................. 10
Giới thiệu về linux .............................................................................................. 17
1.2.1
Lịch sử phát triển của linux và giới thiệu các phiên bản linux ....................... 17
1.2.2
Sự phát triển của Linux và các công nghệ liên quan ...................................... 18
1.2.3
Các bản phát hành của linux ......................................................................... 19
1.2.4
Ubuntu Desktop 12.04 ................................................................................. 21
1.2.5
CentOS 6.0 server ........................................................................................ 21
Cơ bản về hệ điều hành và các ứng dụng trên hệ điều hành linux ............................... 22
2.1
Cấu hình cơ bản trước khi cài đặt Linux .............................................................. 22
2.1.1
Giới thiệu trình tự cài đặt hệ điều hành ......................................................... 22
2.1.2
Quản trị các phân vùng chính trên Linux ...................................................... 23
2.1.3
Sự phân mảnh của hệ thống file .................................................................... 23
2.2
Linux kernel ....................................................................................................... 25
2.2.1
Giới thiệu ..................................................................................................... 25
2.2.2
Kernel modules ............................................................................................ 26
2.2.3
Các chức năng của kernel ............................................................................. 27
2.3
Gnu-gpl project (gnu general public license) ....................................................... 27
2.3.1
Gnu-gpl là gì? .............................................................................................. 27
2.3.2
Nội dung chính của GNU ............................................................................. 27
2.4
Cài đặt và sử dụng các ứng dụng văn phòng ........................................................ 28
2.5
Cài đặt các công cụ hỗ trợ người dùng truy xuất internet ..................................... 28
2.6
Cài đặt và sử dụng các công cụ hỗ trợ phát triển hệ thống ................................... 29
Trang 3
Hệ điều hành mã nguồn mở
3
Quản trị tài nguyên của người dùng trên Linux .......................................................... 30
3.1
3.1.1
Cấu trúc và trật tự của hệ thống tập tin ......................................................... 30
3.1.2
Các quyền trên tập tin và thư mục ................................................................ 32
3.1.3
Các thư mục chính trên hệ điều hành Linux.................................................. 34
3.2
Các kỹ năng thao tác với tập tin .......................................................................... 35
3.3
Các kỹ năng tìm kiếm ......................................................................................... 37
3.4
Quản trị người dùng và nhóm ............................................................................. 38
3.4.1
Giới thiệu về tài khoản trong linux ............................................................... 38
3.4.2
Thêm, xóa, sửa tài khoản người dùng ........................................................... 38
3.4.3
Thêm, sửa, xóa một tài khoản nhóm ............................................................. 40
3.5
4
Phân quyền thao tác với tài nguyên hệ thống....................................................... 40
3.5.1
Cách thức quản lý và bảo mật tài nguyên trên Linux .................................... 40
3.5.2
Các phương pháp phân quyền người dùng đối với tài nguyên hệ thống ......... 42
Phát triển ứng dụng trên môi trường Linux ................................................................ 43
4.1
Lập trình điều khiển trên hệ thống shell script ..................................................... 43
4.1.1
Tổng quan về lập trình Shell script ............................................................... 43
4.1.2
Một số ứng dụng trong lập trình Shell .......................................................... 43
4.2
Kỹ thuật lập trình C và C++ trên Linux ............................................................... 44
4.2.1
Tổng quan về lập trình C và C++ trên Linux ................................................ 44
4.2.2
Các trình biên dịch và thực thi ..................................................................... 45
4.3
5
Quản trị hệ thống tập tin ..................................................................................... 30
Lập trình winform trên Linux ............................................................................. 45
4.3.1
Giới thiệu về lập trình Java .......................................................................... 45
4.3.2
Các hướng phát triển cho lập trình ứng dụng trên Linux ............................... 46
4.3.3
Công cụ hỗ trợ phát triển ứng dụng .............................................................. 47
Quản lý dịch vụ và bảo mật ....................................................................................... 49
5.1
Cập nhật phần mềm trên Linux ........................................................................... 49
5.2
Quản lý Firewall và SELinux.............................................................................. 49
5.2.1
Quản lý firewall trên Linux. ......................................................................... 49
5.2.2
Quản lý hệ thống SELinux ........................................................................... 51
5.3
Quản lý các tác vụ khác trên Linux ..................................................................... 53
5.3.1
Quản lý dịch vụ (service) ............................................................................. 53
5.3.2
Duyệt web và download dữ liệu trên hệ thống server .................................... 53
5.3.3
Quản lý hệ thống soạn thảo trên Server ........................................................ 54
Trang 4
Hệ điều hành mã nguồn mở
5.3.4
6
Cấu hình dịch vụ mạng căn bản trên Linux ................................................................ 56
6.1
Cấu hình dịch vụ đồng bộ thời gian NTP............................................................. 56
6.2
Truy cập từ xa..................................................................................................... 56
6.2.1
Xinetd. ......................................................................................................... 56
6.2.2
Tập tin /etc/services. .................................................................................... 57
6.2.3
Khởi động xinetd. ........................................................................................ 58
6.3
Khái niệm telnet. .......................................................................................... 58
6.3.2
Cài đặt. ........................................................................................................ 58
6.3.3
Cấu hình. ..................................................................................................... 58
6.3.4
Bảo mật telnet. ............................................................................................. 59
SSH server (secure shell). ................................................................................... 60
6.4.1
Cài đặt ssh server trên server linux. .............................................................. 60
6.4.2
Các phương pháp khai thác SSH .................................................................. 60
Cài đặt và cấu hình dhcp server và dns server trên linux............................................. 63
7.1
Cài đặt và cấu hình dịch vụ dns (domain name system). ...................................... 63
7.1.1
Giới thiệu. .................................................................................................... 63
7.1.2
Cơ chế phân giải tên. .................................................................................... 63
7.1.3
Phân loại domain name server. ..................................................................... 65
7.1.4
Cài đặt bind bằng dòng lệnh. ........................................................................ 66
7.2
8
Telnet server. ...................................................................................................... 58
6.3.1
6.4
7
Lập lịch cho hệ thống ................................................................................... 55
Cài đặt và cấu hình dịch vụ dhcp server. ............................................................. 72
7.2.1
Giới thiệu. .................................................................................................... 72
7.2.2
Nguyên tắc hoạt động................................................................................... 73
7.2.3
Cài đặt. ........................................................................................................ 73
7.2.4
Tìm hiểu tập tin cấu hình dhcp.conf.............................................................. 73
7.2.5
Kích hoạt. .................................................................................................... 74
7.2.6
Cấu hình linux client sử dụng dhcp............................................................... 74
7.2.7
Cấu hình windows client sử dụng dhcp. ........................................................ 75
Dịch vụ chia sẻ dữ liệu .............................................................................................. 77
8.1
Cài đặt và cấu hình dịch vụ nfs (network file system). ......................................... 77
8.1.1
Giới thiệu. .................................................................................................... 77
8.1.2
Cài đặt dịch vụ nfs. ...................................................................................... 77
8.1.3
Cấu hình dịch vụ nfs. ................................................................................... 77
Trang 5
Hệ điều hành mã nguồn mở
8.2
9
8.2.1
Giới thiệu. ................................................................................................... 80
8.2.2
Cài đặt. ........................................................................................................ 84
8.2.3
Cấu hình. ..................................................................................................... 84
8.2.4
User của server vsftpd. ................................................................................. 85
8.2.5
Một số option quan trọng. ............................................................................ 85
8.2.6
Kích hoạt dịch vụ. ........................................................................................ 86
8.2.7
Kết nối tới ftp server. ................................................................................... 86
Dịch vụ quản lý tài nguyên tập chung ........................................................................ 88
9.1
Cài đặt và cấu hình dịch vụ samba. ..................................................................... 88
9.1.1
Giới thiệu. ................................................................................................... 88
9.1.2
Cài đặt. ........................................................................................................ 89
9.1.3
Cấu hình. ..................................................................................................... 89
9.1.4
Quản trị tài khoản samba.............................................................................. 93
9.2
Sử dụng dịch vụ smb. ......................................................................................... 94
9.3
Cài đặt và cấu hình dịch vụ samba-swat. ............................................................. 95
9.3.1
Giới thiệu. ................................................................................................... 95
9.3.2
Cài đặt samba-swat. ..................................................................................... 95
9.3.3
Tập tin cấu hình samba-swat. ....................................................................... 96
9.3.4
Khởi tạo swat và cấu hình samba cơ bản. ..................................................... 96
9.3.5
Cấu hình chia sẻ trên samba-swat. ................................................................ 98
9.3.6
Tạo các tài khoản trên samba-swat. .............................................................. 99
9.3.7
Xem tập tin cấu hình smb........................................................................... 100
9.3.8
Đổi port truy cập mặc định cho samba-swat. .............................................. 100
9.4
10
Cài đặt, cấu hình dịch vụ ftp server (file tranfer protocol).................................... 80
Cài đặt và triển khai hệ thống Domain sử dụng Samba ...................................... 100
Cài đặt và cấu hình dịch vụ webserver ................................................................... 103
10.1
Cài đặt và cấu hình dịch vụ dịch vụ wed server. .............................................. 104
10.1.1
Giới thiệu................................................................................................. 104
10.1.2
Cài đặt. .................................................................................................... 104
10.1.3
Cấu hình. ................................................................................................. 104
10.2
Cài đặt và cấu hình mysql và php. ................................................................... 111
10.3
Cấu hình một số hệ thống cơ bản với webserver.............................................. 112
10.3.1
Hệ thông Userdir ..................................................................................... 112
10.3.2
Cấu hình Virtual hosting .......................................................................... 113
Trang 6
Hệ điều hành mã nguồn mở
10.3.3
10.4
Cấu hình hệ thống bảo mật SSL ............................................................... 113
Cấu hình hệ thống webmail ............................................................................. 114
10.4.1
Cấu hình squirrelmail ............................................................................... 114
10.4.2
Cấu hình hệ thống roundcube ................................................................... 114
10.5
Cấu hình hệ thống Blog mã nguồn mở WordPress ........................................... 115
PHẦN THẢO LUẬN ............................................................................................ 116
11
Thảo luận 1: Khai thác ứng dụng trên hệ điều hành Linux ...................................... 116
12
Thảo luận 2: các phương pháp phân quyền và quản lý tài nguyên người dùng ........ 117
13
Thảo luận 3: các dịch vụ mạng cần thiết để triển khai mạng LAN theo mô hình doanh
118
14
Thảo luận 4: về các dịch vụ mạng nâng cao trong linux ......................................... 118
15
Thảo luận 5: Tổng hợp các phương pháp lựa chọn ứng dụng trên Linux ................. 119
nghiệp
PHẦN BÀI TẬP THỰC HÀNH ............................................................................ 121
16
Thực hành 1: Cài đặt hệ điều hành linux ................................................................ 121
17
Thực hành 2: Thao tác tài nguyên trên hệ điều hành Linux ..................................... 124
18
Thực hành 3: Lập trình Shell trên Linux ............................................................... 126
19
Thực hành 4: Phát triển ứng dụng trên Linux ......................................................... 127
20
Thực hành 5: Bảo mật hệ thống mạng Linux .......................................................... 129
21
Thực hành 6: Cài đặt và quản lý dịch vụ mạng trên Linux ...................................... 130
22
Thực hành 7: Cài đặt và cấu hình DHCP và DNS trên Linux.................................. 131
23
Thực hành 8: Triển khai dịch vụ chia sẻ dữ liệu và cài đặt dns server, dhcp ............ 132
24
Thực hành 9: triển khai hệ thống Samba trong mạng LAN ..................................... 136
25
Thực hành 10: cài đặt và cấu hình webserver ......................................................... 137
26
Thực hành 11: Cấu hình hệ thống server Linux (5 tiết) ........................................... 139
Trang 7
Hệ điều hành mã nguồn mở
DANH MỤC HÌNH ẢNH
Hình 1.2: Hệ điều hành Mint ......................................................................................................................19
Hình 1.3: Hệ điều hành Ubuntu ..................................................................................................................19
Hình 1.4: Hệ điều hành Ubuntu ..................................................................................................................20
Hình 15: Hệ điều hành Ubuntu ...................................................................................................................20
Hình 1.6: Hệ điều hành Ubuntu ..................................................................................................................20
Hình 1.7: Hệ điều hành Ubuntu ..................................................................................................................20
Hình 1.8: Giao diện đăng nhập Ubuntu 12.04..............................................................................................21
Hình 2.1: Giao diện công cụ văn phòng ......................................................................................................28
Hình 5.1: Quyền trên tập tin và thư mục. ....................................................................................................32
Hình 5.2: Quyền trên tập tin ẩn. ..................................................................................................................32
Hình 5.3: Cấu trúc mode của dòng lệnh Chmod. .........................................................................................33
Hình 5.4: Các giá trị Octal tương ứng với các quyền. ..................................................................................34
Hình 5.5: Các giá trị Octal thường dùng......................................................................................................34
Hình 5.6: Kết quả tìm kiếm ........................................................................................................................37
Hình 5.7: Mã hóa phân vùng ổ cứng ...........................................................................................................41
Hình 5.8: Mã hóa phân vùng ổ cứng ...........................................................................................................41
Hình 5.9: Mã hóa thư mục ..........................................................................................................................41
Hình 5.10: Dữ liệu mã hóa .........................................................................................................................42
Hình 5.11: Thay đổi Group. ........................................................................................................................42
Hình 7.1: Sử dụng Geany để lập trình C......................................................................................................45
Hình 10.1. Security policy and enforcement are independent using SELinux. ..............................................52
Hình 10.2. Layered Linux security process .................................................................................................53
Hình 10.3: Duyệt web bằng w3m................................................................................................................54
Hình 10.4: Duyệt web bằng w3m................................................................................................................54
Hình10.5: Duyệt web bằng w3m ................................................................................................................54
Hình 12.1: Phần mềm putty ........................................................................................................................60
Hình 12.2: Thẻ Windows............................................................................................................................61
Hình 12.3: Thẻ Proxy. ................................................................................................................................61
Hình 12.4: Đăng nhập từ xa. .......................................................................................................................62
Hình 14.1: Mô hình phân cấp DNS. ............................................................................................................63
Hình 14.2: Mô hình hoạt động của DNS. ....................................................................................................63
Hình 14.3: Cơ chế phân giải địa chỉ IP. .......................................................................................................64
Hình 14.4: Phân giải IP thành tên máy tính. ................................................................................................65
Hình 2.16: Cấu hình Linux client sử dụng DHCP. .......................................................................................75
Hình 14.5: Phương thức kết nối. .................................................................................................................75
Hình 14.6: Cấu hình địa chỉ Ip động. ..........................................................................................................76
Hình 16.1: Liệt kê danh sách các portmap. ..................................................................................................79
Hình 16.2: Sơ đồ kết nối Active. .................................................................................................................81
Hình 16.3: Sơ đồ kết nối Passive. ...............................................................................................................82
Hình 16.4: kết nối FTP server bằng trình duyệt IE.......................................................................................87
Hình 16.5: nhập thông tin tài khoản. ...........................................................................................................87
Hình 16.6: Sau khi login thành công. ..........................................................................................................87
Hình 19.1: Quá trình cài đặt dịch vụ samba. ................................................................................................89
Hình 19.2: Kiểm tra dịch vụ đã được cài đặt trên hệ thống. .........................................................................89
Hình 19.3: Đăng nhập samba swat với user root. .........................................................................................96
Hình 19.4: Giao diện chính của swat. ..........................................................................................................97
Hình 19.5: Phần global. ..............................................................................................................................97
Hình 19.6: Phần share. ...............................................................................................................................98
Hình 19.8: Tạo user cho samba. ..................................................................................................................99
Hình 21.1: Kiểm tra hoạt động của apache. ............................................................................................... 105
Hình 21.2: Kiểm tra số phiên bản. ............................................................................................................ 110
Trang 8
Hệ điều hành mã nguồn mở
Hình 21.3: Truy cập vào Mysql. ............................................................................................................... 110
Hình 21.4: Gọi trang default.php. ............................................................................................................. 111
Hình 21.5: Test hệ thống PHP .................................................................................................................. 112
Hình 21.6: Test thử hệ thống virtual hosting ............................................................................................. 113
Trang 9
Hệ điều hành mã nguồn mở
Bài 1. Tổng quan về hệ điều hành mã nguồn mở
1.1
Những nội dung chính trong học phần
1.1.1 Cơ bản về hệ điều hành và các ứng dụng trên hệ điều hành Linux
1.1.1.1. Cài đặt Linux.
Khi bắt đầu tìm hiểu Linux, không ít người phải bối rối vì có quá nhiều phiên bản Linux
của các tổ chức phân phối khác nhau (đến hơn 400 bản). Người dùng nên đọc các bài viết so sánh,
nhận xét để quyết định chọn bộ cài nào. Ví dụ, bạn có thể dựa trên một số tiêu chí như: mức độ
chuyên dụng (dùng cho mục đích chung cả server và client), số máy cài được (x86, x86_64 ...), số
người sử dụng và phát triển, số phần mềm hỗ trợ trực tiếp (có bộ cài trực tiếp không cần biên soạn
mã nguồn), thông tin trợ giúp, khả năng cập nhật và mức độ miễn phí. Nhưng dù dùng phiên bản
nào thì bạn cũng có thể tự tùy biến và chạy phần mềm trên các phiên bản khác. Nếu là lần đầu, tốt
nhất bạn nên chọn phiên bản nào dễ dùng nhất, ví dụ như Fedora Core.
Bạn có thể cài phiên bản SuSE, Fedora Core 5 hay Fedora Core 6... Về cơ bản, giao diện
hướng dẫn cài đặt rất thân thiện, có thể so sánh tương đương với Windows XP. Các bước chọn
đường dẫn, partition, format có thể gây bối rối một chút vì bạn đã quen với các định dạng và cách
tổ chức thư mục của Windows. Nhưng mọi thứ đều dễ dàng vượt qua sau một lúc mày mò.
Khi việc cài đặt kết thúc, khởi động lại máy tính có thể bạn chỉ thấy một màn hình đen sì. Đó là do
lỗi bản cài Linux không nhận dạng đúng độ phân giải và tần số quét của màn hình và phải chuyển
sang chế độ khởi động dạng text mode để chỉnh sửa lại file cấu hình bằng tay.
Khi chọn trình quản lý desktop GNOME, bạn sẽ thấy Linux không khác gì Windows XP
nếu so sánh về giao diện đồ hoạ, các icon, menu, cửa sổ...Khả năng tùy biến giao diện rất tốt vì bạn
có thể tự do lựa chọn số thanh taskbar cũng như các kiểu shortcut đặt trên nó, các hiệu ứng trong
suốt... Đồng thời, người dùng có thể chuyển qua lại giữa nhiều màn hình desktop trong một phiên
làm việc. Tính năng này rất tiện khi số cửa sổ mở ra quá nhiều khiến thanh taskbar không còn chỗ
chứa.
1.1.1.2. Các ứng dụng trong Linux
Bản Linux Ubuntu 12.04 có các phần mềm cơ bản tương đương với Windows XP từ trình
quản lý file, cửa sổ command, trình duyệt web, trình quản lý e-mail, Calendar, Project... đến các
tiện ích nhỏ như Calculator, Character Map, Paint, Notepad, Remote Desktop...
Trong đó, nổi bật là trình soạn thảo text cơ bản đi kèm là Gedit, như Notepad của Windows
XP nhưng nhiều tính năng hơn và có thể tương đương với Notepad++. Về trình duyệt web, khác
với Windows XP, trong bộ cài Linux có rất nhiều trình duyệt web đi kèm, thậm chí có cả trình
duyệt ở chế độ text mode tiện lợi trong trường hợp cần debug (gỡ lỗi) ở chế độ text mà vẫn cần vào
web. Bạn có thể chọn FireFox làm trình duyệt chính vì nó được dùng nhiều và khá an toàn.
Trong bộ cài đi kèm rất nhiều phần mềm nghe nhạc và xem phim nhưng tất cả đều không hỗ trợ
nghe mp3 và một số định dạng phim thường gặp. Fedora Core chỉ bao gồm các phần mềm mã
nguồn mở, không có các phần mềm miễn phí nhưng không có mã nguồn hoặc bị ràng buộc một số
điều kiện bản quyền. Với tư cách là người sử dụng, bạn có thể tìm trình nghe nhạc mp3 và xem các
định dạng phim phổ biến là Realplayer và VLC.
Về phần mềm chat, trên Linux có Gain, một chương trình mã mở chạy trên nhiều giao thức
phổ biến hiện nay như Yahoo, ICQ, MSN ... và có thể chat nhiều nick trên cùng giao thức hay trên
các giao thức khác nhau. Giao diện chương trình đẹp, dễ sử dụng, khá nhiều tính năng tiện dụng.
Trang 10
Hệ điều hành mã nguồn mở
Nhược điểm của Gain là chưa cho phép chat voice hay webcam. Hiện Yahoo và Skype cũng có
phiên bản cho Linux nhưng so với phiên bản trên Windows thì còn thiếu nhiều chức năng.
Về phần mềm nén và giải nén, trên Linux cũng có một chương trình cho phép nén và giải
nén các định dạng .zip, .tar ...với giao diện đồ họa dễ dùng. Nhưng trình giải nén của Linux không
giải nén được file .rar. Hiện có bản Winrar cho Linux nhưng làm việc ở chế độ command, khó sử
dụng và bất tiện. Bạn có thể tìm hiểu để biến nó thành một dạng như plugin cho trình giải nén của
Linux và có thể dễ dàng nén/giải nén/xem nội dung file .rar thông qua giao diện đồ họa và chuột.
Phần mềm soạn thảo văn bản, bảng tính và trình chiếu trên Linux có OpenOffice, tương đương với
OfficeXP của Microsoft nhưng chưa bằng được Office 2003 ở một số tính năng nhưng cũng có một
số chức năng mạnh như VBScript và Javascript cho phép lập trình. Các file .doc, .xsl, .ppt được
soạn bằng Office 2003 và font Arial và .VNTime có thể xem và chỉnh sửa tốt nhưng gặp phải vấn
đề về font chữ. Linux sử dụng True Type Font và có sẵn một số font Unicode nhưng tên font khác
với Windows khiến các file thử nghiệm không hiển thị đúng. Vấn đề được giải quyết đơn giản bằng
việc copy các file font trên Windows vào thư mục font của Linux. Nhưng OpenOffice Writer
(tương đương với Word) vẫn gặp phải lỗi chữ "ư" với font TCVN3, các file .xsl và .ppt thì không
bị lỗi này.
Phần mềm gõ tiếng Việt: Trên Linux có một số phần mềm cho phép gõ tiếng Việt như xUnikey và một số phần mềm khác. X-Unikey khi sử dụng gặp phải rất nhiều lỗi, có lúc không gõ
được tiếng Việt, có lúc còn làm hệ thống không thể input được ký tự nào. Bạn có thể tìm hiểu
Scim-m17n, chương trình mã mở cho phép gõ tất cả các ngôn ngữ trên thế giới, mỗi phương thức
gõ cần một file cấu hình. Người dùng thường quen gõ tiếng Việt theo kiểu TELEX nhưng file cấu
hình để gõ TELEX cho Scim chỉ có thể bỏ dấu ngay sau nguyên âm và nếu gõ sai dấu thì không thể
gõ lại dấu khác mà phải xóa đi gõ lại. Scim có thể gõ tốt trên nhiều chương trình như Gedit,
OpenOffice, Firefox và bạn có thể tìm hiểu để soạn lại file cấu hình cho phù hợp, cho phép bỏ dấu
ở bất cứ đâu của từ và có thể chuyển sang dấu khác mà không cần gõ lại từ.
Ngoài ra, có một số phần mềm giả lập môi trường Windows trên Linux để cho phép cài các
phần mềm Windows trên Linux. Ví dụ CrossOver, một phần mềm giả lập dựa trên phần mềm mã
mở Wine. Người dùng sẽ cài được Flashget (trình hỗ trợ download trên Windows) và DUMeter
(trình đo lưu lượng mạng trên Windows) nhưng có thể không cài được Winrar, GifMovieGear...
A, Ứng dụng văn phòng
Để có thể sử dụng Linux cho những công việc hàng ngày chúng ta cần có những công cụ
(phần mềm sử lý cho việc nhập liệu văn bản phục vụ cho hiển thị in ấn dữ liệu) phục vụ cho mục
đích văn phòng cho các mục đích: bộ công cụ văn bản word, công cụ bảng tính excel, công cụ trình
chiếu power point… Ở đây ta có thể sử dụng bộ công cụ LibreOffice. Bộ công cụ này cho phép
thao tác với những tệp văn bản tương đương với phần mềm Microsoft Office 2003. Ngoài ra
LibreOffice còn hỗ trợ đọc rất nhiều file mở rộng khác như các file của Office 2007-2010.
Không chỉ có LibreOffice có thể hỗ trợ tin văn phòng, chúng ta còn một số ứng dụng khác
như OpenOffice là bộ công cụ truyền thống của Linux trong sử lý tin văn phòng. Các công cụ khác
bao gồm AbiWord, công cụ online có google doc, Live microst, zoho…
Ngoài ra các công cụ khác cần cho mục đích văn phòng như công cụ hiển thị file PDF,
công cụ đồ họa, vẽ, chỉnh sửa hình ảnh. Chúng ta có các phần mềm tương ứng như Acrobat reader,
Gimp, showell, Paint…
B, Ứng dụng internet
Trang 11
Hệ điều hành mã nguồn mở
Một số ứng dụng phục vụ cho nhu cầu trao đổi thông tin trên internet như: firefox, chrome
hỗ trợ duyệt web và thao tác với các thành phần như ftp, ngoài ra chrome còn hỗ trợ các dữ liệu
trên Android.
Các phần mềm hỗ trợ trao đổi thông tin message như Pidgin, imo, skype, kopate, apathy…
giúp trao đổi thông tin trên internet hỗ trợ rất nhiều giao thức cho người dùng.
Công cụ hỗ trợ quản lý dữ liệu vào ra mạng internet là wireshark cho phép quản lý các
thông tin dữ liệu vào ra hệ thống, thông qua đó người dùng có thể quản lý được các điểm note gây
ra sự cố về mạng.
C, Ứng dụng cho người phát triển ứng dụng
Các ứng dụng phát triển phần mềm trên Linux cho phép xây dựng phần mềm tương đối
nhanh và hiệu quả như:
-
Netbean: là bộ công cụ mã nguồn mở được phát triển bởi oracle cho phép phát triển các
ứng dụng trên nhiều nền tảng như C, C++, Java, và phát triển các website trên JSP, PHP…
Là bộ công cụ cho phép thao tác trên hệ thống giao diện kéo thả hỗ trợ viết code rất thuận
tiện cho người dùng.
-
qt4: là bộ công cụ chuyên dành cho người phát triển C, C++ và ứng dụng trong các thiết bị
ngoại vi: Mobile, smartphone, android, IOS… và các thiết bị vi mạch điện tử. Hệ thống
cho phép thao tác trên giao diện đồ họa dễ xử lý và hỗ trợ code rất chuyên nghiệp.
-
java: Là nền tảng phát triển ứng dụng trên Java và cho phép cài đặt các ứng dụng phát triển
hệ thống như netbean, eclipse…
-
oracle develop: Là bộ công cụ phát triển phần mềm java trên hệ quản trị CSDL của hãng
bao gồm MySQL và Oracle. Nhìn chung đây là bộ công cụ có khối lượng lớn hỗ trợ nhiều
tool có sãn và tuy nhiên tốc độ thực thi chậm.
-
…
Với những hệ quản trị cơ sở được hỗ trợ như: Mysql, oracle, pregestSQL… cho phép
người dùng xây dựng các ứng dụng lớn trên nền tảng java, C, C++ và các ngôn ngữ lập trình khác.
Ngoài ra Linux còn rất hữu dụng với những ứng dụng mã nguồn mở như Joomla, dupal,
nuke, worldpress… Cho phép phát triển các website với tốc độ nhanh đem lại lợi ích về kinh tế.
D, Bộ ứng dụng giải trí đa phương tiện
Linux hỗ trợ một số công cụ cho phép nghe nhiều định dạng âm thanh, video như Mplayer,
VLC, KMP và các định dạng flash như Flashplayer…
Linux còn hỗ trợ các trình ghi đĩa CD như basose, K3P, Create DVD…
E, Các ứng dụng hỗ trợ quản trị hệ thống.
Thông thường hệ thống Linux dành cho công việc văn phòng đã hỗ trợ đầy đủ các giao
diện hệ thống cho việc quản trị. Chính vì vậy các ứng dụng hỗ trợ hệ thống ở đây được nhắc đên ở
đây như các ứng dụng hỗ trợ người quản trị trong việc điều chỉnh cũng như quản lý các phần mềm.
Một số công cụ chuyên dụng được dùng như: webamin, web usermin, direct min… Các công cụ
đều hỗ trợ điều khiển server từ xa thông qua giao diện web. Ngoài ra còn một số phần mềm bản
quyền như Cpanel, WHM…
Trang 12
Hệ điều hành mã nguồn mở
1.1.2 Quản trị tài nguyên người dùng trên Linux
Thực tế việc quản trị tài nguyên người dùng xuất phát từ nhu cầu quản lý các file, thiết bị
trên Linux. Các dữ liệu này được cấp phát cho từng đối tượng sử dụng với những quyền hạn nhất
định phục vụ quá trình thao tác của người dùng đó. Thông thường với mỗi một tài nguyên trên
Linux sẽ được quy định một người dùng sở hữu là Owner, và nhóm sở hữu là workgroup. Việc
phân định quyền thao tác giữa những đối tựng trên với tài nguyên file thư mục thì được gọi là quản
trị tài nguyên trên Linux.
Thông thường việc quản trị tài nguyên bao gồm các thành phần sau:
- Xác định loại tài nguyên, mức độ quan trọng của tài nguyên
- Xác định chủ sở hữu và những người được quyền tác động đến tài nguyên
- Sử dụng cơ chế phân quyền người dùng đối với tài nguyên thông qua lệnh Chmod
- Chuyển quyền sở hữu tài nguyên thông qua lệnh chowner.
Ngoài ra nếu muốn nhóm sử dụng tài nguyên chung nào đó thì cần phải có cơ chế chia sẻ
tài nguyên cho phép nhiều người sử dụng chung tài nguyên mà không cần phải thao tác trực tiếp
trên máy tính nội tại.
1.1.3 Phát triển ứng dụng trên hệ điều hành Linux
Trong bài học này chủ yếu sinh viên được làm quen với những ngôn ngữ lập trình trên
Linux cũng như những thư viện lập trình trên Linux. Thông qua việc tiếp cận này người học sẽ
từng bước làm quen với lập trình phát triển các hệ thống trên Linux.
- Lập trình shell script: Lập trình tác động vào hệ thống máy chủ cho phép thay đổi các
thông tin, tác động cài đặt, chỉnh sửa phần mềm bao gồm cả các phần mềm thông dụng như một số
phần mềm cài đặt tự động, phần mềm backup tự động hệ thống dữ liệu. Sinh viên tiếp cận với
nhiều hình thức bảo vệ dữ liệu.
- Lập trình C, C++: Sinh viên sẽ tiếp cận với việc lập trình trên các thư viện của linux đặc
biệt là thư viện tác động đến các hàm hệ thống. Việc lập trình trên Linux có nhiều sự khác biệt so
với lập trình trên hệ thống thư viện của windows. Nhiều hàm phép tính bị giới hạn do tính bảo mật,
nhiều thành phần dữ liệu bị giới hạn phạm vi thực hiện. Cách khai báo các hàm thư viện cũng hoàn
toàn khác so với windows. Với đặc thù sử dụng để lập trình điều khiển các thiết bị ngoại vi Linux
hỗ trợ rất nhiều hàm nhập xuất dữ liệu ra các cổng.
- Lập trình Java: là thế mạnh của Linux với những công cụ hỗ trợ và thư viện nguồn mở rất
nhiều. Lập trình java trên linux không bị giới hạn về bộ thư viện cũng như khả năng lập trình đồ
hoạ trên hệ thống.
Người dùng có thể cài được môi trường Java và phần mềm soạn mã Java (IntelliJ), server
JBoss, Tomcat trên Linux không khó khăn gì vì J2SDK và các phần mềm soạn Java thường có
phiên bản hỗ trợ cho nhiều hệ điều hành. Ngoài ra là Oracle 10g với một ít "mẹo" và MySQL.
Còn với .NET, trên Linux có Mono Framework, một khung thay thế .NET Framework của
Microsoft. Mục tiêu của Mono là thi hành tất cả các hàm và lớp của .NET Framework do đó các
chương trình viết bằng Visual Studio .NET của Microsoft, sau khi biên dịch sang file .exe có thể
chuyển sang Linux và chạy thông qua Mono, các file ASP.NET cũng có thể chạy được trên Linux
thông qua Mono. Mục tiêu là vậy nhưng hiện tại Mono chưa thi hành được đầy đủ .NET
Framework nên một số chương trình viết bằng Visual Studio vẫn không thể chạy trên mono. Do đó
Trang 13
Hệ điều hành mã nguồn mở
nếu phải làm dự án liên quan đến .NET thì bạn vẫn phải chuyển sang dùng Windows và Visual
Studio 2005.
1.1.4 Quản lý dịch vụ và bảo mật
Hiện tại có rất ít phần mềm diệt virus cho Linux vì mã độc tấn công Linux chưa phổ biến.
Nhìn chung, cả Linux và Windows đều không thể hoàn toàn chống lại các tấn công về bảo mật
cũng như virus nhưng hiện tại các tấn công nhằm vào Linux còn rất ít, không đáng kể nên người
dùng Linux hầu như không cần lo lắng nhiều đến vấn đề bảo mật cũng như virus, ít ra cũng không
"dính" mấy virus Yahoo Messenger một cách ngớ ngẩn.
1.1.5 Cấu hình dịch vụ mạng căn bản trên Linux
Một hệ điều hành hiện đại là hệ điều hành cho phép chúng ta có thể làm việc thường trực
online trên internet. Công nghệ của tương lai cho phép mọi người lưu trữ dữ liệu trên các hệ thống
điện toán đám mây từ đó giảm thiểu nguy cơ về việc mất, hỏng dữ liệu nhưng khi lưu trữ dữ liệu
trực tuyến cũng đem đến nhiều bất cập. Ở Việt Nam hệ thống cơ sở hạ tầng phục vụ internet còn
hạn chế. Dịch vụ bảo mật còn chưa tốt vì vậy mặc dù hỗ trợ internet rất mạnh song Linux ở Việt
Nam tạm thời không được sử dụng rộng dãi vì phần mềm còn hạn chế và hạ tầng cơ sở cũng như
con người còn chưa thực sự phát sinh nhu cầu.
Cấu hình mạng căn bản trên Linux quy tụ nhiều ứng dụng internet như cloud computing.
Dịch vụ truy xuất dữ liệu từ xa, dịch vụ mạng, dịch vụ chia sẻ đữ liệu, dịch vụ điều khiển từ xa…
1.1.6 Cài đặt cấu hình DHCP và DNS trên Linux
DHCP là viết tắt của Dynamic Host Configuration Protocol:
Giao thức Cấu hình Host Động DHCP được thiết kế làm giảm thời gian chỉnh cấu hình cho
mạng TCP/IP bằng cách tự động gán các địa chỉ IP cho khách hàng khi họ vào mạng.
DHCP tập trung việc quản lý địa chỉ IP ở các máy tính trung tâm chạy chương trình
DHCP. Mặc dù có thể gán địa chỉ IP vĩnh viễn cho bất cứ máy tính nào trên mạng, DHCP cho phép
Trang 14
Hệ điều hành mã nguồn mở
gán tự động. Để khách có thể nhận địa chỉ IP từ máy chủ DHCP, bạn khai báo cấu hình để khách
“nhận địa chỉ tự động từ một máy chủ”. Tùy chọn nầy xuất hiện trong vùng khai báo cấu hình
TCP/IP của đa số hệ điều hành. Một khi tùy chọn nầy được thiết lập, khách có thể “thuê” một địa
chỉ IP từ máy chủ DHCP bất cứ lúc nào. Phải có ít nhất một máy chủ DHCP trên mạng. Sau khi cài
đặt DHCP, bạn tạo một phạm vi DHCP (scope), là vùng chứa các địa chỉ IP trên máy chủ, và máy
chủ cung cấp địa chỉ IP trong vùng nầy.
DHCP là một thuận lới rất lớn đối với người điều hành mạng. Nó làm yên tâm về các vấn
đề cố hữu phát sinh khi phải khai báo cấu hình thủ công. Hãy xem bảng so sánh dưới đây để biết
DHCP làm nhẹ bớt công việc như thế nào:
DNS
DNS viết tắt từ Domain Name System (tạm dịch Hệ thống tên miền) là Hệ thống phân
giải tên được phát minh vào năm 1984 cho Internet và là một trong số các chuẩn công nghiệp của
các cổng bao gồm cả TCP/IP. DNS là chìa khóa chủ chốt của nhiều dịch vụ mạng như duyệt
Internet, mail server, web server...Có thể nói không có DNS, Internet sẽ mau chóng lụi tàn để bạn
có thể hình dung về mức độ quan trọng của DNS.
Các tài nguyên mạng được định danh bằng những địa chỉ IP dạng như 10.0.0.10 làm ví dụ.
Mỗi máy tính khi kết nối vào mạng Internet cũng được gán cho 1 địa chỉ IP riêng biệt không trùng
lẫn với bất kỳ máy tính nào khác trên thế giới. Tương tự vậy với website cũng có các địa chỉ IP
riêng biệt. Tuy nhiên, bạn đâu thể nhớ rõ con số 123.30.128.10 sẽ dẫn đến website trường
ĐHSPKT Hưng Yên Online thay vì gõ www.utehy.edu.vn. Đây là lúc DNS "trổ tài chuyển đổi"
(ánh xạ) các con số địa chỉ IP khô khan thành những ký tự ABC thân thiện hơn. Nhờ DNS nên bạn
không cần phải nhớ địa chỉ IP để vào website Tuổi Trẻ Online mà chỉ cần nhớ www.utehy.edu.vn.
Nói cách khác, DNS cũng giống như một danh bạ điện thoại cho Internet. Nếu bạn biết tên
của một người nhưng không biết số điện thoại hay ngược lại, bạn có thể tham khảo trong sổ danh
bạ dễ dàng.
Duyệt web nhanh hơn với Google Public DNS
Trang 15
Hệ điều hành mã nguồn mở
DNS khi triển khai sẽ sử dụng 2 thành phần: máy chủ DNS (DNS server) và máy trạm
DNS (DNS client). Cả 2 thành phần này hoạt động như là ứng dụng dịch vụ nền trên hệ thống.
1.1.7 Dịch vụ chia sẻ dữ liệu trên Linux
FTP thường chạy trên hai cổng, 20 và 21, và chỉ chạy riêng trên nền của TCP. Trình chủ
FTP lắng nghe các yêu cầu dịch vụ từ những kết nối vào máy của các trình khách FTP, trên cổng
21. Đường kết nối trên cổng 21 này tạo nên một dòng truyền điều khiển, cho phép các dòng lệnh
được chuyển qua trình chủ FTP. Để truyền tải tập tin qua lại giữa hai máy, chúng ta cần phải có
một kết nối khác. Tùy thuộc vào chế độ truyền tải được sử dụng, trình khách (ở chế độ năng động active mode) hoặc trình chủ (ở chế độ bị động -passive mode) đều có thể lắng nghe yêu cầu kết nối
đến từ đầu kia của mình. Trong trường hợp kết nối ở chế độ năng động, (trình chủ kết nối với trình
khách để truyền tải dữ liệu) , trình chủ phải trước tiên đóng kết vào cổng 20, trước khi liên lạc và
kết nối với trình khách. Trong chế độ bị động, hạn chế này được giải tỏa, và việc đóng kết trước là
một việc không cần phải làm.
1.1.8 Dịch vụ quản lý tài nguyên tập chung trên Linux
Giống như các dịch vụ thư mục khác, chẳng hạn như Novell Directory Services (NDS),
samba là một hệ thống chuẩn và tập trung, dùng để tự động hóa việc quản lý mạng dữ liệu người
dùng, bảo mật và các nguồn tài nguyên được phân phối, cho phép tương tác với các thư mục khác.
Thêm vào đó, samba được thiết kế đặc biệt cho các môi trường kết nối mạng được phân bổ theo
một kiểu nào đó.
Với người dùng hoặc quản trị viên, samba cung cấp một khung nhìn mang tính cấu trúc để
từ đó dễ dàng truy cập và quản lý tất cả các tài nguyên trong mạng.
1.1.9 Cài đặt cấu hình webserver trên Linux
Máy Web Server là máy chủ có dung lượng lớn, tốc độ cao, được dùng để lưu trữ thông tin
như một ngân hàng dữ liệu, chứa những website đã được thiết kế cùng với những thông tin liên
quan khác. (các mã Script, các chương trình, và các file Multimedia)
Trang 16
Hệ điều hành mã nguồn mở
Web Server có khả năng gửi đến máy khách những trang Web thông qua môi trường
Internet (hoặc Intranet) qua giao thức HTTP - giao thức được thiết kế để gửi các file đến trình
duyệt Web (Web Browser), và các giao thức khác.
Tất cả các Web Server đều có một địa chỉ IP (IP Address) hoặc cũng có thể có một Domain
Name. Giả sử khi bạn đánh vào thanh Address trên trình duyệt của bạn một dòng
sau đó gõ phím Enter bạn sẽ gửi một yêu cầu đến một Server có Domain
Name là www.abc.com. Server này sẽ tìm trang Web có tên là index.htm rồi gửi nó đến trình duyệt
của bạn.
Bất kỳ một máy tính nào cũng có thể trở thành một Web Server bởi việc cài đặt lên nó một
chương trình phần mềm Server Software và sau đó kết nối vào Internet.
Khi máy tính của bạn kết nối đến một Web Server và gửi đến yêu cầu truy cập các thông
tin từ một trang Web nào đó, Web Server Software sẽ nhận yêu cầu và gửi lại cho bạn những thông
tin mà bạn mong muốn.
Giống như những phần mềm khác mà bạn đã từng cài đặt trên máy tính của mình, Web
Server Software cũng chỉ là một ứng dụng phần mềm. Nó được cài đặt, và chạy trên máy tính dùng
làm Web Server, nhờ có chương trình này mà người sử dụng có thể truy cập đến các thông tin của
trang Web từ một máy tính khác ở trên mạng (Internet, Intranet).
Web Server Software còn có thể được tích hợp với CSDL (Database), hay điều khiển việc
kết nối vào CSDL để có thể truy cập và kết xuất thông tin từ CSDL lên các trang Web và truyền tải
chúng đến người dùng.
Server phải hoạt động liên tục 24/24 giờ, 7 ngày một tuần và 365 ngày một năm, để phục
vụ cho việc cung cấp thông tin trực tuyến. Vị trí đặt server đóng vai trò quan trọng trong chất lượng
và tốc độ lưu chuyển thông tin từ server và máy tính truy cập.
1.2
Giới thiệu về linux
1.2.1 Lịch sử phát triển của linux và giới thiệu các phiên bản linux
Linux là một HDH dạng UNIX (Unix-like Operating System) chạy trên máy PC với bộ
điều khiển trung tâm (CPU) Intel 80386 trở lên, hay các bộ vi xử lý trung tâm tương thích AMD,
Cyrix. Linux ngày nay còn có thể chạy trên các máy Macintosh hoặc SUN Sparc. Linux thỏa mãn
chuẩn POSIX.1.
Linux được viết lại toàn bộ từ con số không, tức là không sử dụng một dòng lệnh nào của
Unix để tránh vấn đề bản quyền của Unix. Tuy nhiên hoạt động của Linux hoàn toàn dựa trên
nguyên tắc của hệ điều hành Unix. Vì vậy nếu một người nắm được Linux, thì sẽ nắm được UNIX.
Nên chú ý rằng giữa các phiên bản Unix sự khác nhau cũng không kém gì giữa Unix và Linux.
Năm 1991 Linus Torvalds, sinh viên của đại học tổng hợp Helsinki, Phần lan, bắt đầu xem
xét Minix, một phiên bản của Unix làm ra với mục đích nghiên cứu cách tạo ra một hệ điều hành
Unix chạy trên máy PC với bộ vi xử lý Intel 80386.
Ngày 25/8/1991, Linus cho ra version 0.01 và thông báo trên comp.os.minix của Internet
về dự định của mình về Linux.
Ngày 1/1992, Linus cho ra version 0.12 với shell và C compiler. Linus không cần Minix
nữa để recompile HDH của mình. Linus đặt tên HDH của mình là Linux. Năm 1994, phiên bản
chính thức 1.0 được phát hành.
Trang 17
Hệ điều hành mã nguồn mở
Quá trình phát triển của Linux được tăng tốc bởi sự giúp đỡ của chương trình GNU
(GNU‟s Not Unix), đó là chương trình phát triển các Unix có khả năng chạy trên nhiều platform.
Đến hôm nay, cuối 2013, phiên bản mới nhất của Linux kernel là 3.10, có khả năng điều khiển các
máy đa bộ vi xử lý (hiện tại Linux hỗ trợ máy tính có tối đa 16 CPUs và các máy tính có xử lý đa
lõi) và rất nhiều các tính năng khác.
1.2.2 Sự phát triển của Linux và các công nghệ liên quan
Một trong những mục tiêu chính của hệ điều hành là giúp cho người sử dụng độc lập với
thiết bị. Trong Linux, các thiết bị phần cứng đều được xem như là các tập tin thông thường: chúng
có thể được mở, đóng, đọc, ghi, và sử dụng cùng những lời gọi hệ thống để thao tác. Mọi thiết bị
trong hệ thống đều được biểu diễn bởi các tập tin thiết bị, ví dụ đĩa IDE đầu tiên của hệ thống được
biểu diễn bởi /dev/had các đĩa Santa được biểu diễn bởi /dev/sda còn các ổ CD được biểu diễn là
/dev/scd.
Linux ánh xạ tập tin thiết bị vào các lời gọi hệ thống. Linux hỗ trợ ba loại thiết bị là: ký tự,
khối và mạng. Có nhiều chương trình điều khiển thiết bị khác nhau trong kernel của Linux nhưng
chúng cùng chia xẻ những thuộc tính chung:
Mã nguồn của kernel: chương trình điều khiển thiết bị là một phần của kernel và cũng như
những đoạn mã nguồn khác nếu nó bị lỗi nó có thể đe dọa nghiêm trọng đến hệ thống. Chương
trình điều khiển thiết bị cung cấp một giao tiếp chuẩn với kernel của Linux. Chúng sử dụng những
dịch vụ chuẩn từ kernel này.
Hầu hết các chương trình điều khiển thiết bị của Linux được nạp như những đơn thể của
kernel khi có yêu cầu và được gỡ ra khi đó nó không còn được sử dụng nữa. Khi khởi động hệ
thống mỗi chương trình điều khiển thiết bị được khởi tạo và nó sẽ tìm thiết bị phần cứng mà nó sẽ
điều khiển. Linux sử dụng cơ chế DMA và sử dụng một vector cấu trúc dma_chan để quản lý các
kênh DMA (mỗi kênh có một vector).
Mỗi lớp điều khiển thiết bị: ký tự, khối, mạng cung cấp những cơ chế giao tiếp chung với
kernel. Khi một thiết bị được khởi tạo, thanh ghi điều khiển thiết bị bên trong kernel của Linux
được thêm một entry trong vector chrdevs của cấu trúc devive_struct. Một định danh (id) được xác
định cho vector này và là cố định. Mỗi entry trong vector chrdevs, một device_struct gồm hai phần
tử: một con trỏ đến tên của thanh ghi điều khiển thiết bị và một con trỏ tới khối của tập tin thao tác.
Khối của tập tin thao tác này là địa chỉ của những thủ tục trong chương trình điều khiển thiết bị mà
chúng kiểm soát những thao tác như mở, đóng, đọc, ghi. Nội dung của /proc/devices cho các thiết
bị ký tự được lấy từ vector chrdevs.
Các thiết bị khối được truy xuất như những tập tin. Linux quản lý các thanh ghi thiết bị
khối bằng vector blkdevs, và tương tự như vector chrdevs mỗi entry của nó là các cấu trúc
device_struct nhưng có hai loại thiết bị khối: SCSI và IDE. Mỗi chương trình điều khiển thiết bị
khối phải cung cấp một giao tiếp với vùng đệm cũng như những thao tác tập tin thông thường. Cấu
trúc blk_dev_struct bao gồm địa chỉ của các thủ tục được yêu cầu và một con trỏ đến những cấu
trúc dữ liệu cần thiết, mỗi cấu trúc này sẽ đại diện cho một yêu cầu từ vùng đệm cho những điều
khiển đọc hoặc ghi một khối dữ liệu.
Trong Linux, mỗi thiết bị mạng là một thực thể có thể nhận hoặc gửi gói dữ liệu. Mỗi thiết
bị mạng được biểu diễn bằng một cấu trúc device. Các chương trình điều khiển thiết bị mạng sẽ ghi
nhận những thiết bị mà chúng sẽ điều khiển trong quá trình khởi tạo mạng lúc khởi động hệ thống.
Cấu trúc device chứa những thông tin về các thiết bị và địa chỉ của các hàm hỗ trợ những phương
thức và dịch vụ mạng khác nhau. Những hàm này chủ yếu tập trung vào việc chuyển dữ liệu sử
Trang 18
Hệ điều hành mã nguồn mở
dụng các thiết bị mạng. Các thiết bị sử dụng các cơ chế hỗ trợ mạng chuẩn để chuyển dữ liệu nhận
được cho lớp phương thức thích hợp. Tất cả các gói dữ liệu chuyển và nhận được biểu diễn bởi cấu
trúc sk_buff, đây là một cấu trúc linh động cho phép các tiêu đề (header) phương thức mạng có thể
dễ dàng thêm vào hoặc loại bỏ.
Cấu trúc device lưu những thông tin về thiết bị mạng: tên, thông tin về đường truyền, cờ
trạng thái giao tiếp (mô tả các thuộc tính và khả năng của các thiết bị mạng), thông tin về phương
thức, hàng đợi gói tin (đây là hàng đợi của các gói sk_buff chờ chuyển dữ liệu trên thiết bị mạng
đó), các hàm hỗ trợ (mỗi thiết bị cung cấp một tập hợp các thủ tục chuẩn được gọi bởi lớp phương
thức).
1.2.3 Các bản phát hành của linux
Linux được phát hành bởi nhiều tổ chức khác nhau, mỗi tổ chức như thể đều có một
chương trình kèm theo nhóm tập tin nòng cốt của Linux. Mỗi bản phát hành Linux đều dựa trên
một phiên bản chính nào đó. Ví dụ như Red Hat 9.2 dựa vào kernel 2.6.4. Với Red Hat, các Kernel
Linux được chứa trong hệ thống Red Hat Package Management và được cài đặt như là một phần
của hệ thống này. Open Linux của Caldera cũng như thế vì căn cứ trên bản phát hành Red Hat. Bản
phát hành HOWTO cũng cung cấp một danh sách chi tiết của các bản Linux.
Linux Mint
Hình 1.2: Hệ điều hành Mint
Linux Mint 14 phát hành vào tháng mười hai,
tên mã là 'Nadia' được đóng gói với một loạt các cải
tiến từ các phiên bản trước đây. Rất nhiều phần mềm
hữu ích được cài đặt sẵn, bao gồm phần mềm hỗ trợ
các trình điều khiển thiết bị khác nhau. Linux Mint khá
thân thiện với người dùng, hiệu quả sử dụng cao, trong
khi tại cùng một thời điểm đó, nó trở thành sự yêu
thích của các chuyên viên máy tính Linux có đầy kinh
nghiệm. Mint đã được tùy chỉnh màn hình desktop và
các menu, và nó có giao diện web.
Ubuntu
Phát hành mới nhất: Ubuntu 13.10
Hình 1.3: Hệ điều hành Ubuntu
Ubuntu là bản phân phối Linux, vào thời điểm
hiện tại nó đã chạm mốc 20 triệu người sử dụng trong
tám năm kể từ khi được biết đến. Nếu bạn là một người
mới sử dụng hệ điều hành mã nguồn mở Linux,
Ubuntu là hệ điều hành Linux hoàn hảo cho bạn để bắt
đầu tập làm quen. Nó cũng là một trong những đối thủ
hàng đầu như là một sự thay thế Windows.
Trang 19
Hệ điều hành mã nguồn mở
Mageia
Hình 1.4: Hệ điều hành Ubuntu
Hê điều hành Linux này đã chứng kiến sự tăng
trưởng mạnh mẽ kể từ năm ngoái. Nó là một phần của
Mandriva, khá là phổ biến. Nó có hầu hết các tính năng
phong phú của Linux với khả năng cơ bản, nhưng chưa
mạnh. Nó có thể chạy được trên bất kỳ máy tính nào và
thường được cấu hình cho các máy chủ. Những người
sáng lập và phát triển hệ điều hànhMageia luôn mong
muốn cung cấp miễn phí cho nhu cầu của tất cả người
sử dụng.
Fedora
Phiên bản mới nhất: Fedora 19
Fedora là một trong những hệ điều hành Linux
với lượng người dùng khổng lồ và có nhiều diễn đàn
hỗ trợ. Tính năng linh hoạt làm cho nó trở thành một
trong những sự lựa chọn tốt nhất. Fedora thích hợp cho
các doanh nghiệp.
Hình 15: Hệ điều hành Ubuntu
OpenSUSE
Phiên bản mới nhất: openSUSE 12.3
Hình 1.6: Hệ điều hành Ubuntu
openSUSE là cộng đồng mã nguồn mở được
tài trợ bởi Novell. Nhóm openSUSE có hai mục tiêu:
làm cho openSUSE Linux dễ dàng sử dụng cho bất cứ
người sử dụng nào và đơn giản hóa việc phát triển
cũng như đóng gói mã nguồn của openSUSE Linux để
làm cho nó thân thiện với lập trình viên. Bản phân phối
Linux này có số lượng các phần mềm và các công cụ
phong phú để bạn có thể dễ dàng sử dụng như:
SpiderOak lưu trữ đám mây, Mozilla Firefox để duyệt
web và mã nguồn mở email client Thunderbird.
Debian
Phiên bản mới nhất: Debian 6
Hình 1.7: Hệ điều hành Ubuntu
Hệ điều hành Debian được xây dựng với cam
kết hướng tới một tầm nhìn hệ thống điều hành miễn
phí và mã nguồn mở. Debian là nhân của Linux và đi
kèm với hơn 20.000 gói phần mềm ứng dụng được cài
đặt sẵn chỉ việc tải xuống, tất cả đều miễn phí. Bạn có
thể thực hiện các công việc như chỉnh sửa tài liệu, chơi
trò chơi, viết mã và nhiều hơn nữa với các công cụ
được cung cấp hoàn toàn miễn phí.
Trang 20
Hệ điều hành mã nguồn mở
1.2.4 Ubuntu Desktop 12.04
Phiên bản hỗ trợ lâu dài (LTS) mới nhất của hệ điều hành Ubuntu đã chính thức ra mắt
hôm 26/4/2012. Phiên bản 12.04 LTS với tên mã Precise Pangolin sẽ được hỗ trợ đến năm 2017.
Chữ P trong tên mã của Ubuntu 12.04 còn có
nghĩa là Performance (hiệu năng). Ubuntu 12.04 có
tốc độ nhanh nhất từ trước đến nay. Ngoài ra, Unity 5
mang lại trải nghiệm khác hẳn, các tính năng đều
được hoàn thiện tỉ mỉ trong bản chính thức này.
Hình 1.8: Giao diện đăng nhập
Ubuntu 12.04
Có vài sự thay đổi, chẳng hạn như
Rhythmbox bị Banshee thay thế nay đã quay trở lại.
Người dùng được trang bị các phiên bản mới nhất của
LibreOffice, trình duyệt Firefox, trình thư điện tử
Thunderbird... VLC phiên bản 2.0 vừa ra mắt gần đây
cũng được tích hợp trong Ubuntu 12.04.
Hình 1.9:Một vài hình ảnh của phiên bản 12.04 LTS
1.2.5 CentOS 6.0 server
Hệ điều hành CentOS là một trong số những hệ điều hành máy chủ được sử dụng trong hầu
hết các doanh nghiệp hiện nay. CentOS viết tắt từ cụm từ (Community Enterprise Operating
System) là một hệ điều hành mã nguồn mở được phát triển dựa trên nhân của Red Hat Enterprise
Linux, có thể tương thích hoàn toàn với các phần mềm chạy trên Red Hat.
Các tính năng của CentOS không thua gì phiên bản Red Hat Enterprise nhưng lại hoàn toàn
miễn phí, đó là lý do các nhà cung cấp Hosting, các quản trị mạng đều hay sử dụng CentOS là hệ
điều hành chính để cung cấp cho khách hàng, bởi các tính năng ổn định và mạnh mẽ của CentOS
mang lại.
Khi sử dụng CentOS để quản trị mạng các Bạn nên chọn phiên bản 5.5 trở lên bởi vì tính
tương thích cao, dễ cấu hình, hỗ trợ cài đặt online tốt.
Trang 21
Hệ điều hành mã nguồn mở
Bài 2. Cơ bản về hệ điều hành và các ứng dụng trên hệ điều hành linux
Cấu hình cơ bản trƣớc khi cài đặt Linux
2.1
2.1.1 Giới thiệu trình tự cài đặt hệ điều hành
Chuẩn bị
Chuẩn bị các thiết bị cần thiết cho việc cài đặt Linux bao gồm:
Nguồn cài đặt: Một LiveCD (DVD) chứa bộ cài Linux hoặc một USB khởi động chứa bộ
cài Linux. Công việc tạo USB chứa bộ cài Linux thường khá đơn giản dựa trên một file ISO với
phần mềm UnetBootin (Trên bản thân các hệ điều hành Linux đều chưa ứng dụng cho phép tạo bộ
cài trên USB).
Một bộ máy tính Pentium III với 256 MB RAM trở lên, có gắn một ổ đọc CD là đủ để sử
dụng đĩa Live CD Ubuntu. Bộ nhớ RAM càng lớn thì càng tốt do môi trường làm việc đồ họa
GNOME khá tốn về bộ nhớ. Máy tính không cần thiết phải gắn một ổ đĩa cứng. Tuy nhiên, nếu sau
này muốn cài hệ điều hành Ubuntu vào đĩa cứng, thì cần một ổ cứng với 5-10 GB trống. Mainboard
của máy tính phải hỗ trợ việc khởi động máy tính từ ổ đọc đĩa CD, đó là trường hợp của hầu như
tất cả các mainboard máy tình từ năm 2000 trở lại đây.
Khởi động Live CD
Để khởi động từ thiết bị đĩa CD hoặc USB thông thường ta sử dụng 1 trong 2 cách:
Thay đổi thông tin khởi động trong BiOS
Sử dụng phím tắt khởi động trong quá trình bặt máy tính
Cài đặt hệ thống vào đĩa cứng
Việc cài đặt hệ điều hành lên ổ cứng sẽ giúp cho hệ thống chạy có tốc độ cao hơn cải thiện
được hiệu năng sử dụng máy tính so với việc chạy hệ điều hành trên CDRom hoặc trên USB.
Bƣớc 1: Chọn ngôn ngữ
Hộp thoại thứ nhất cho phép bạn chọn được ngôn ngữ giao diện đồ họa của hệ thống. Nếu
bạn chọn tiếng Việt, sau khi đã cài xong, bạn sẽ vẫn chọn được giao diện người dùng bằng tiếng
anh, nếu bạn thích.
Bƣớc 2: Chọn mũi giờ địa phƣơng
Nếu bạn đã chọn ngôn ngữ là tiếng Việt, tiến trình cài đặt sẽ chọn mũi giờ của Việt Nam,
đại diện là TP Hồ Chí Minh. Nếu bạn thấy giờ của hệ thống không chính xác, bạn sẽ có cơ hội đổi
giờ sau khi đã cài đặt xong. Nếu bạn không đang sống ở Việt Nam, bạn có thể chọn mũi giờ địa
phương thích hợp trên bản đồ.
Bƣớc 3: Chọn bàn phím
Đối với lựa chọn ngôn ngữ là tiếng Việt, lựa chọn sơ đồ bàn phím theo kiểu Hoa Kỳ (USA)
là hợp lý bởi vì đây là loại bàn phím phổ biến nhất ở Việt Nam. Tuy nhiên nếu bạn đang dùng một
bàn phím loại khác, bạn có thể chọn bàn phím đó bằng cách nhấn vào “Lựa chọn riêng của bạn” và
tìm bàn phím thích hợp trong danh sách. Bạn cũng có thể gõ vài phím vào vùng thông tin cho hệ
thống tự động xác định loại bàn phím mà bạn đang dùng là loại bàn phím gì.
Bƣớc 4: Phân vùng ổ cứng
Trang 22
Hệ điều hành mã nguồn mở
Bạn phải giành tối thiểu 02 phân vùng trống để cài GNU/Linux: một phân vùng dành cho
hệ thống tập tin root “/” và một phân vùng để tạo ra một bộ nhớ đệm (swap area) cho hệ thống trên
ổ đĩa cứng. Tùy theo tình trạng sử dụng ổ cứng, trình cài đặt sẽ đề xuất nhiều giải pháp phân vùng
ổ đĩa cứng để cài hệ thống.
Bƣớc 5: Thiết lập tài khoản ngƣời dùng:
Bạn sử dụng màn hình hỗ trợ để thiết lập các thông tin liên quan đến người dùng hệ thống
bao gồm: Username, password, hình minh họa, họ tên người dùng, tên máy tính…
Bƣớc 6: Tiến hành cài đặt Ubuntu
Sau khi bạn đã lựa chọn xong hết các thông tin trong hệ thống bạn tiến hành cài đặt cho hệ
điều hành lên ổ cứng.
Chú ý rằng trong quá trình cài đặt bạn phải cẩn thận trong vấn đề chia ổ cứng. Nếu trên
máy tính của bạn đang tồn tại dữ liệu và một trong nhưng thao tác chia sai ổ cứng sẽ làm cho dữ
liệu trên máy tính của bạn bị xóa.
2.1.2 Quản trị các phân vùng chính trên Linux
Hệ thống Linux cần thiết ít nhất một phân vùng riêng. Phân vùng đó có thể chứa toàn bộ hệ
điều hành, tất cả các ứng dụng và tập tin cá nhân. Vùng nhớ “chuyển đổi” (swap area) là chứa hỗn
hợp cho hệ điều hành, cho phép hệ thống sử dụng bộ nhớ trên đĩa là “bộ nhớ ảo”. Bằng cách để chỗ
trao đổi trên phân vùng riêng.
Phần lớn người cũng lựa chọn cho hệ thống GNU/Linux có hơn số phân vùng tối thiểu. Có
hai lý do bạn có thể muốn chia hệ thống tập tin ra nhiều phân vùng nhỏ hơn. Lý do thứ nhất là sự
an toàn. Nếu cái gì xảy ra để hỏng hệ thống tập tin, thường chỉ một phân vùng riêng bị hại. Vì vậy
bạn cần phải phục hồi chỉ một phần của hệ thống. Bạn nên tạo tối thiểu một phân vùng riêng
thường được gọi như là “phân vùng gốc” (root partition), mà chứa những thành phần chủ yếu nhất
của hệ thống. Nếu phân vùng khác nào bị hỏng, bạn vẫn còn có khả năng khởi động vào
GNU/Linux trên phân vùng riêng này, để sửa chữa hệ thống. Phân vùng gốc này có thể tránh
trường hợp mà bạn cần phải cài đặt lại toàn bộ hệ thống.
Lý do thứ hai thường là quan trọng hơn trong trường hợp kinh doanh, nhưng nó thật sự phụ
thuộc vào cách sử dụng máy tính. Chẳng hạn máy phục vụ thư tín tràn ngập bởi thư rác có thể
chiếm dễ dàng toàn bộ phân vùng. Nếu bạn đã cấu hình vùng thư tín /var/mail là phân vùng riêng
trên máy phục vụ thư tín, phần lớn của hệ thống còn lại hoạt động được thậm chí nếu nó bị rác tràn.
Mặt không thuận lợi thật duy nhất khi sử dụng phân vùng thêm là thường khó biết trước
các nhu cầu của mình. Nếu bạn cấu hình phân vùng quá nhỏ, bạn sẽ phải hoặc cài đặt lại hệ thống,
hoặc cũng luôn chuyển các thứ ra để tạo chỗ trống trong phân vùng thấp nhỏ đó. Mặt khác, nếu bạn
cấu hình phân vùng quá lớn, bạn sẽ hoài phí sức chứa có thể được tận dụng trên vùng khác. Hiện
thời sức chứa trên đĩa là rẻ, nhưng ta không nên dùng lãng phí.
2.1.3 Sự phân mảnh của hệ thống file
Nhiều người dùng Windows, kể cả những người không có nhiều kinh nghiệm thì đều cho
rằng: chống phân mảnh định kỳ cho hệ thống file sẽ tăng tốc độ máy tính của mình. Cái mọi người
không biết là tại sao lại thế.
Nguyên nhân cụ thể như sau: một ổ đĩa cứng có nhiều sector trên nó, mỗi sector có thể
chứa nhiều mẩu dữ liệu. Những file, đặc biệt là những file lớn phải được lưu qua nhiều sector khác
nhau. Người dùng lưu nhiều loại file khác nhau trong ổ đĩa hệ thống. Mỗi một file trong đó sẽ được
Trang 23
Hệ điều hành mã nguồn mở
lưu trên một cụm sector liên tiếp. Sau đó, người dùng sửa đổi file lưu ban đầu, làm tăng kích thước
file. Hệ thống file sẽ cố gắng lưu những phần mới của file gần những phần ban đầu. Không may là,
nếu không đủ không gian liền kề, file phải được chia thành nhiều mẩu. Khi ổ đĩa cứng đọc file, đầu
dò phải bỏ qua khoảng giữa những vị trí vật lý khác nhau trên ổ cứng để đọc từng đoạn sector một.
Việc này làm chậm tốc độ đọc.
Chống phân mảnh là một xử lý tập trung để chuyển các bit của file xung quanh để giảm
phân mảnh, đảm bảo mỗi file được lưu liền mạch trên ổ đĩa.
Tuy nhiên, với những ổ đĩa trạng thái rắn thì lại khác. Những ổ này không có bộ phận cơ
học chuyển động và không nên thực hiện chống phân mảnh. Chống phân mảnh một ổ SSD thực tế
sẽ làm giảm tuổi thọ ổ. Và ở những phiên bản mới nhất của Windows, bạn không thực sự cần phải
lo lắng về chống phân mảnh hệ thống file. Windows sẽ tự động làm việc này.
Hệ thống file trong Windows hoạt động như thế nào?
Định dạng FAT cũ của Microsoft không cố sắp xếp file một cách thông minh. Định dạng
này xuất hiện mặc định lần cuối trên Windows 98 và ME, mặc dù nó vẫn còn sử dụng trên các ổ
USB hiện nay. Khi lưu một file vào hệ thống file kiểu FAT, máy sẽ lưu càng gần điểm bắt đầu của
đĩa nhất có thể. Khi lưu file thứ hai, nó lưu file ngay sau file đầu tiên và cứ như vậy. Khi những file
ban đầu tăng kích thước, chúng sẽ luôn bị phân mảnh. Không có không gian trống nào xung quanh
để chúng mở rộng ra.
Định dạng NTFS mới hơn của Microsoft xuất hiện trong Windows XP và 2000 thì thông
minh hơn một chút. Nó cấp nhiều không gian trống “đệm” xung quanh các file trên ổ, mặc dù vậy,
những hệ thống file NTFS vẫn trở nên phân mảnh theo thời gian.
Do phương thức hoạt động như vậy nên hệ thống file của Windows cần được chống phân
mảnh để đạt hiệu năng cao nhất. Microsoft đã xoa dịu vấn đề này bằng cách chạy chương trình
chống phân mảnh trên chế độ nền ở những bản Windows mới nhất.
Hệ thống file trong Linux hoạt động như thế nào?
Các hệ thống file ext2, ext3 và ext4 của Linux đặc biệt là ext4 được sử dụng cho Ubuntu
và hầu hết các bản phân phối Linux khác, cấp phát file một cách thông minh hơn. Thay vì để nhiều
file gần nhau trên ổ đĩa cứng, những hệ thống file Linux rải nhiều file khác nhau trên toàn bộ đĩa
cứng, để lại một lượng lớn không gian trống ở giữa chúng. Khi một file được chỉnh sửa và cần mở
rộng thì thường có nhiều không gian trống xung quanh cho file. Nếu hiện tượng phân mảnh xảy ra,
hệ thống file sẽ cố gắng di dời những file xung quanh để làm giảm phân mảnh tự động mà không
cần tiện ích chống phân mảnh.
Do cách hoạt động như vậy, hiện tượng phân mảnh sẽ xuất hiện nếu hệ thống file đầy. Nếu
đầy 95% (hoặc thậm chí là 80%), người dùng sẽ gặp hiện tượng phân mảnh. Tuy nhiên, hệ thống
file được thiết kế để tránh phân mảnh một cách tự nhiên.
Nếu gặp vấn đề với phân mảnh trên Linux, bạn có thể cần một ổ đĩa cứng lớn hơn. Nếu
thực sự cần chống phân mảnh hệ thống file, cách đơn giản và đáng tin cậy nhất là: Copy toàn bộ
file khỏi phân vùng, dọn dẹp phân vùng, sau đó copy file lại phân vùng. Hệ thống file sẽ cấp phát
file một cách thông minh khi copy chúng lại đĩa cứng. Đó cũng là lý do tại sao bạn copy dữ liệu
trên Linux thường có tốc độ khá chậm so với windows.
Trang 24
Hệ điều hành mã nguồn mở
2.2
Linux kernel
Linux kernel cung cấp một giao diện giữa các ứng dụng người dùng, hệ thống phần cứng
và tài nguyên. Một vài chức năng của Linux là:
Quản lý bộ nhớ.
Quản lý hệ thống file.
Xử lý các lỗi và ngắt.
Thực hiện các dịch vụ I/O.
Cấp phát tài nguyên hệ thống cho các người dùng
2.2.1 Giới thiệu
Về bản chất, có nhiều cách để xây dựng cấu trúc và biên dịch 1 bộ kernel nhất định từ đầu.
Nhìn chung, với hầu hết các kernel hiện nay, chúng ta có thể chia ra làm 3 loại: monolithic,
microkernel, và hybrid. Linux sử dụng kernel monolithic trong khi OS X (XNU) và Windows 7 sử
dụng kernel hybrid.
Microkernel: Microkernel có đầy đủ các tính năng cần thiết để quản lý bộ vi xử lý, bộ nhớ
và IPC. Có rất nhiều thứ khác trong máy tính có thể được nhìn thấy, tiếp xúc và quản lý trong chế
độ người dùng. Microkernel có tính linh hoạt khá cao, vì vậy bạn không phải lo lắng khi thay đổi 1
thiết bị nào đó, ví dụ như card màn hình, ổ cứng lưu trữ... hoặc thậm chí là cả hệ điều hành.
Microkernel với những thông số liên quan footprint rất nhỏ, tương tự với bộ nhớ và dung lượng lưu
trữ, chúng còn có tính bảo mật khá cao vì chỉ định rõ ràng những tiến trình nào hoạt động trong chế
độ user mode, mà không được cấp quyền như trong chế độ giám sát - supervisor mode.
Ƣu điểm:
Tính linh hoạt cao
Bảo mật
Sử dụng ít footprint cài đặt và lưu trữ
Nhƣợc điểm:
Phần cứng đôi khi “khó hiểu” hơn thông qua hệ thống driver
Phần cứng hoạt động dưới mức hiệu suất thông thường vì các trình điều khiển ở trong chế
độ user mode
Các tiến trình phải chờ đợi để được nhận thông tin
Các tiến trình không thể truy cập tới những ứng dụng khác mà không phải chờ đợi
Monolithic Kernel: Với Monolithic thì khác, chúng có chức năng bao quát rộng hơn so
với microkernel, không chỉ tham gia quản lý bộ vi xử lý, bộ nhớ, IRC, chúng còn can thiệp vào
trình điều khiển driver, tính năng điều phối file hệ thống, các giao tiếp qua lại giữa server...
Monolithic tốt hơn khi truy cập tới phần cứng và đa tác vụ, bởi vì nếu 1 chương trình muốn thu
thập thông tin từ bộ nhớ và các tiến trình khác, chúng cần có quyền truy cập trực tiếp và không
phải chờ đợi các tác vụ khác kết thúc. Nhưng đồng thời, chúng cũng là nguyên nhân gây ra sự bất
ổn vì nhiều chương trình chạy trong chế độ supervisor mode hơn, chỉ cần 1 sự cố nhỏ cũng khiến
cho cả hệ thống mất ổn định.
Ưu điểm:
Trang 25