tài liệu mã nguồn mở 01 intro-all
TRANSCRIPT
2/26/2014
1
Chương 1: Giới thiệu phần
mềm mã nguồn mở và Linux
Nội dung
1. Phần mềm mã nguồn mở
2. Linux
3. Các phần mềm mã nguồn mở khác
4. Các kho phần mềm mã nguồn mở
Linux và phần mềm mã nguồn mở 2
1. Phần mềm mã nguồn mở
I. Khái niệm phần mềm tự do-mã nguồn mở
II. Phần mềm sở hữu
III. Phần mềm tự do mã nguồn mở
IV.Nguồn lực phát triển phần mềm mã nguồn
mở
V. Quan hệ phần mềm tự do mã nguồn mở và
phần mềm sở hữu
Linux và phần mềm mã nguồn mở 3
I. Khái niệm về PM TD MNM: Các
thao tác trên phần mềm • Sản xuất phần mềm
• Sử dụng phần mềm – Cá nhân, công ty, thương mại, giáo dục, nghiên cứu
• Thay đổi, nâng cấp, cải tiến phần mềm – Reverse enginering
• Phân phối phần mềm – Bản thực hiện, mã nguồn
– Nguyên bản, nâng cấp, thay đổi
• ……
• Quản lý phần mềm – Cho phép/không cho phép thực hiện các thao tác trên phần mềm
Linux và phần mềm mã nguồn mở 4
Bản quyền phần mềm
• Tài liệu qui định việc sử dụng và phân phối
phần mềm
• Phần mềm sở hữu
– Phần mềm miễn phí/phần mềm chia sẻ
• Bản quyền phần mềm sở hữu
• Bản quyền phần mềm tự do và mã nguồn mở
– Phần mềm tự do
– Phần mềm mã nguồn mở
Linux và phần mềm mã nguồn mở 5
II. Phần mềm sở hữu
• Ràng buộc chặt chẽ đảm bảo quyền lợi của người làm ra phần mềm: COPY RIGHT
• Chặt chẽ về quyền phân phối và quản lý phần mềm
• Hạn chế quyền thay đổi và cải tiến
• Hạn chế việc phân tích ngược mã
• Ví dụ
– MS Excel EULA
– MathWork Mathlab
Linux và phần mềm mã nguồn mở 6
2/26/2014
2
MS Excel EULA
• Chỉ cho sử dụng trên một máy tính
• Không cho phép chia sẻ thông qua kết nối
• Fair/Unfair?
• Người sử dụng có 2 máy tính cài MS Excel
• 2 Người sử dụng có 2 máy tính cài MS Excel
Linux và phần mềm mã nguồn mở 7
Lỗ hổng bảo mật
• Phát hiện lỗ hổng bảo mật trong phần mềm sở
hữu?
• Thao tác
– Tự bịt lỗ hổng
– Thông báo cho nhà sản xuất
• Hợp lệ/không hợp lệ
Linux và phần mềm mã nguồn mở 8
Phần mềm sở hữu
• Thường chỉ cung cấp 1 phần quyền sử dụng
• Quyền sử dụng bổ sung cần trả tiền bổ sung
• Các quyền phân phối thường bị hạn chế
• Quyền thay đổi phần mềm không được cung cấp
• Quyền quản lý phần mềm có giá rất cao
Linux và phần mềm mã nguồn mở 9
III. Phần mềm tự do/mã nguồn mở
• Cung cấp tối đa các quyền trên phần mềm cho
số đông NSD- TỰ DO
• Để thực hiện việc thay đổi, nâng cấp và phân
phối lại, cung cấp mã nguồn cho NSD: MÃ
NGUỒN MỞ
• Hạn chế quyền quản lý để đảm bảo cung cấp
các quyền khác cho NSD (COPY LEFT)
Linux và phần mềm mã nguồn mở 10
Đặc điểm của PMTD- MNM
• Tự do phân phối
• Luôn kèm mã nguồn
• Cho phép thay đổi phần mềm
• Không cho phép thay đổi các ràng buộc bản quyền
• Có thể có ràng buộc về việc
– Tích hợp mã nguồn
– Đặt tên phiên bản
• Không phân biệt cá nhân/nhóm khác nhau
• Không phân biệt mục đích sử dụng
• Không hạn chế các phần mềm khác
• Trung lập về công nghệ Linux và phần mềm mã nguồn mở 11
Bản quyền của PMMNM
• PMMNM có bản quyền
• Có thể bị vi phạm
• Thể hiện đóng góp của các tác giả
• Khó khăn trong việc chuyển đổi bản quyền
• Quá nhiều người đóng góp
Linux và phần mềm mã nguồn mở 12
2/26/2014
3
IV. Nguồn lực phát triển phần mềm
MNM
• Tư vấn
• Đào tạo
• Hỗ trợ kỹ thuật
• Tài trợ/quảng cáo
• Thương mại hóa
– Một phần (2 phiên bản song song)
– Toàn bộ (đóng mã nguồn)
Linux và phần mềm mã nguồn mở 13
Dịch vụ do công ty Redhat cung
cấp
• Tư vấn
• Đào tạo và cấp chứng chỉ
• Hỗ trợ kỹ thuật cho các sản phẩm
• Quản lý kỹ thuật cho các sản phẩm
• Cung cấp các giải pháp mã nguồn mở
• Cung cấp các giải pháp cho tổ chức (mã nguồn mở?)
• Cung cấp các sản phẩm thương mại
Linux và phần mềm mã nguồn mở 14
Dịch vụ do công ty canonical cung
cấp
• http://www.canonical.com/services
• Đào tạo
• Phát triển
• Chứng chỉ
• Hỗ trợ kỹ thuật
• …..
Linux và phần mềm mã nguồn mở 15
V. So sánh phần mềm mở/không
mở
• PM MNM triệt tiêu thị trường PM?
– Có thể có thu nhập từ các dự án PM MNM
– PMMNM là bước trung gian cho PM TM
– Chia sẻ chi phí phát triển
– Không bị cản trở bởi động lực kinh tế (vd vá lỗi)
– Không sử dụng cơ chế ẩn
• PM MNM có thể phát triển
– Theo nhu cầu NSD
– Không bị giới hạn sự sáng tạo
– Cần sự hỗ trợ pháp lý
Linux và phần mềm mã nguồn mở 16
Ưu điểm
• Mở rộng thị trường
• Thiết lập các chuẩn công nghiệp
• Lôi kéo được các nhà phát triển
• Cập nhật sự phát triển về công nghệ
• Cung cấp các phần mềm tin cậy, ổn định, giá thành hạ
• Mềm dẻo, đổi mới, sáng tạo
• Không bị sức ép thương mại
Linux và phần mềm mã nguồn mở 17
Nhược điểm
• Khó thuyết phục NSD không là nhà phát triển
• Không có các dữ liệu về tính năng của phần
mềm
• Sản phẩm khó thương mại hóa
• 50-50 với hacker
Linux và phần mềm mã nguồn mở 18
2/26/2014
4
Nội dung
1. Phần mềm mã nguồn mở
2. Linux
3. Các phần mềm mã nguồn mở khác
4. Các kho phần mềm mã nguồn mở
Linux và phần mềm mã nguồn mở 19
2. Linux
Linux và phần mềm mã nguồn mở 20
2.1 MỞ ĐẦU
2.1.1 Lịch sử phát triển của Unix và Linux:
a.Vài dòng về lịch sử UNIX:
• Giữa năm 1960, AT&T Bell Laboratories và 1 số trung tâm khác Multics (Multiplexed Information and Computing Service) Không khả thi
• Ken Thompson, Dennis Ritchie … thuộc Bell Labs đã không bỏ cuộc. Thay vì xây dựng 1 HĐH làm nhiều việc 1 lúc như Multics, họ quyết định phát triển 1 HĐH đơn giản chỉ làm tốt 1 việc là chạy chương trình (run program)
• Peter Neumann đặt tên cho HĐH “đơn giản” này là Unix • Khoảng 1977 bản quyền của UNIX được giải phóng và HDH UNIX trở thành 1 thương phẩm.
• Hai dòng UNIX : System V của AT&T , Novell và Berkeley Software Distribution (BSD) của Đại học Berkeley.
2
b. CÁC PHIÊN BẢN CỦA LINUX
8/19/2009 LINUX-CH1- 2009 3
2.1.2. Lịch sử phát triển của Linux. Các bản phân phối (distribution) Linux
•IEEE đã thiết lập chuẩn "An Industry-Recognized Operating Systems Interface Standard based on the UNIX Operating System." Kết quả cho ra đời POSIX.1 (cho giao diện C ) và POSIX.2 (cho hệ thống lệnh trên Unix)
•Linux là một HDH dạng UNIX (Unix-like Operating System) chạy trên PC với 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.
8/19/2009 LINUX-CH1- 2009 4
• Năm 1991 Linus Torvalds bắt đầu xem xét Minix, một phiên bản của Unix 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.
•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.
•1994, phiên bản chính thức 1.0 được phát hành.
8/19/2009 LINUX-CH1- 2009 5
2/26/2014
5
Quá trình phát triển của Linux được tăng tốc
bởi sự giúp đỡ của dự án 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 cuối 2001, phiên bản mới
nhất của Linux kernel là 2.4.2-2, có khả năng điều
khiển các máy đa bộ vi xử lý và rất nhiều các tính
năng khác.
8/19/2009 LINUX-CH1- 2009 6
2.1.3 Vấn đề bản quyền
Các chương trình tuân theo GNU Copyleft or GPL (General Public License) có bản quyền như sau :
1. Tác giả vẫn là sở hữu của chương trình của mình.
2. Ai cũng được quyền bán copy của chương trình với giá bất kỳ mà không phải trả cho tác giả ban đầu.
3. Người sở hữu chương trình tạo điều kiện cho người khác sao chép chương trình nguồn để phát triển tiếp chương trình
8/19/2009 LINUX-CH1- 2009 7
2.1.4. Tại sao lại sử dụng LINUX ?
Linux rất ổn định. Trái với suy nghĩ “của rẻ là của ôi“, Linux từ những phiên bản đầu tiên cách đây 5-10 năm đã rất ổn định. Ngay cả server Linux phục vụ những mạng lớn (hàng trăm máy trạm) cũng hoạt động rất ổn định. a. Linux là miễn phí (free). Đối với chúng ta hôm nay không quan trọng vì ngay WindowsNT server cũng “free”. Nhưng trong tương lai, “free” là một thông số rất quan trọng để chọn Linux.
b. Linux đầy đủ. Tất cả những gì bạn thấy ở IBM, SCO, Sun … đều có ở Linux. C compiler, perl interpeter, shell , TCP/IP, proxy, firewall, tài liệu hướng dẫn ... đều rất đầy đủ và có chất lượng. Hệ thống các chương trình tiện ích cũng rất đầy đủ .
8/19/2009 8
d. Linux rất mềm dẻo trong cấu hình. Linux cho người sử dụng cấu hình rất linh động, ví dụ như độ phân dải màn hình Xwindow tùy ý, dễ dàng sửa đổi ngay cả kernel …Linux chạy trên nhiều máy khác nhau từ PC 386, 486 tự lắp cho đến SUN Sparc.
e. Linux được trợ giúp. Tài liệu giới thiệu Linux ngày càng nhiều, không thua kém bất cứ một HDH nào khác
f. Linux là HDH hoàn toàn 32-bit. Như các Unix khác, ngay từ đầu, Linux đã là một HDH 32 bits. Hiện nay đã có những phiên bản Linux 64 bits chạy trên máy Alpha Digital hay Ultra Sparc.
8/19/2009 LINUX-CH1- 2009 9
Linux và Windows
• Windows là hệ điều hành được thiết kế cho
single users.
• Unix là hệ điều hành được kế cho multi
users. Nhiều người cùng chạy một chương
trình trên một máy tính vào cùng một thời
điểm.
• Từ Windows 95, đã hỗ trợ multi user. Tuy
nhiên, Unix đã hỗ trợ multi user từ 1969.
Linux và Windows (2)
• Sự tách biệt giữa GUI và Kernel:
– GUI là thành phần chiếm nhiều memory nhất, và rất phức tạp, dễ bị lỗi.
– Với Windows, GUI và kernel là không thể tách rời => tiện lợi cho người dùng.
– Với Linux, GUI tách biệt với kernel. Người sử dụng có thể không sử dụng GUI, hoặc sử dụng những GUI khác nhau.
– Cho phép tùy biến, phù hợp với server, vốn không cần GUI, tiết kiệm được memory, và ít bị lỗi.
2/26/2014
6
Linux và Windows (3)
• Tất cả những cấu hình của Windows được
lưu trong registry. Khi muốn chỉnh sửa rất
phức tạp. Thường phải có phầm mềm third-
party.
• Cấu hình của Linux là file text, vì vậy dễ
dàng chỉnh sửa theo ý muốn. Có thể xóa bỏ
hoàn toàn những cấu hình cũ khi không cần
=> không có một chuẩn cấu hình. Mỗi dịch
vụ định nghĩa một chuẩn cấu hình riêng.
Linux kernel (nhân hệ điều hành
Linux) • Các thành phần cơ bản để có thể khai thác tài nguyên phần
cứng của máy tính
• 1994: 1.0
• 1999: 2.2.0
• 2001: 2.4
• 2003: 2.6.0
• 2009: 2.6.3
• Số đầu: phiên bản chính
• Số tiếp theo: phiên bản phụ – Số lẻ là bản thử nghiệm
– Số chẵn là bản bền vững
• Phần còn lại bổ sung bởi các nhà phân phối
Linux và phần mềm mã nguồn mở 32
Thành phần của Linux
• Nhân hệ điều hành
• Các drivers
• Các phần mềm hệ thống
• Các phần mềm ứng dụng
• X Windows
• Các phần mềm ứng dụng với giao diện đồ họa
Linux và phần mềm mã nguồn mở 33
Linux Kernel
• Nhân (kernel) được xem như là trái tim của hệ
điều hành. Nó được nạp vào RAM lúc khởi động
và duy trì hệ thống đến khi tắt máy.
• Hầu hết Linux kernel được xây dựng như một tập hợp của các module
• Các module cần thiết có thể được biên dịch vào hạt nhân trong lúc xây dựng nó.
30
- Giới thiệu chung về Linux Kernel
• Linux là hạt nhân động, nó có thể “nạp” hay
“giải phóng” các module trong lúc vận hành mà
không cần phải khởi động lại hệ thống.
• Dựa vào những đặc điểm trên ta có thể nói:
Linux có thể vận hành được rất nhiều thiết bị một
cách dễ dàng.
• VD: Để vận hành được thiết bị mới nhà phát triển
chỉ cần “port” module liên quan đến thiết bị để
kernel nhận dạng thiết bị mới.
31
- Một số thông tin về Linux kernel
Phiên bản Linux Kernel đầu tiên là 0.01 Được
ông Linux Torvalds công bố lần đầu tiên trên
Internet ngày 17/09/1991
Mã nguồn Linux kernel được phân phối tự do và miễn phí (www.kernel.org)
Hiện tại phiên bản mới nhất của Linux Kernel là 2.6.40
32
2/26/2014
7
- Mô hình Linux kernel
33
- Các thành phần của Kernel
Linux kernel bao gồm 5 subsytems chính:
-Quản lý các tiến trình (The Process Manager)
- Quản lý bộ nhớ (The Memory Manager)
- Hệ thống tập tin ảo (VFS)
-Giao tiếp mạng (Network Interface)
- Inter-Process Communication Interface.
Để vận hành được các phần trên , chương trình người dùng cần phải ra các lời gọi hệ thống “System call”.
34
Dựa vào cấu trúc bên trên ta thấy rõ hai nhiệm vụ chính của kernel là:
• Đáp ứng các nhu cầu cấp thấp (về phần cứng) cho chương trình
• Cung cấp môi trường vận hành cho các tiến trình (process) và luồng (thread).
35
Tính năng của Linux
• Mã nguồn mở
– Nguồn sáng tạo vô hạn?
• Hỗ trợ nhiều phần cứng
• Có các phân phối khác nhau
• Thừa kế các tính năng Unix
– Khả chuyển
– Đa NSD, đa nhiệm
– Một hệ thống file duy nhất
– Shell
– Các tính năng mạng
Linux và phần mềm mã nguồn mở 40
3. Bản phân phối Linux
Linux và phần mềm mã nguồn mở 41
Linux = Kernel (OS Basic Part)
Kernel
Software Packages
Installation tools
SW management tools
User in
terface
Distributor
Distribution
Developers
Linux và phần mềm mã nguồn mở 42
2/26/2014
8
Lựa chọn bản phân phối phù hợp
Linux và phần mềm mã nguồn mở 43
4. Các phần mềm mã nguồn mở
khác
Linux và phần mềm mã nguồn mở 44
• Trên Linux
– Webserver
– Mail server
– KDE, GNOME, …..
• Trên các hệ điều hành khác
– Open Office
– Gimp
– FireFox
– LaTeX