tài liệu mã nguồn mở 01 intro-all

8
2/26/2014 1 Chương 1: Giới thiệu phần 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

Upload: thuyet-nguyen

Post on 21-Mar-2017

2 views

Category:

Software


1 download

TRANSCRIPT

Page 1: tài liệu Mã nguồn mở 01 intro-all

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

Page 2: tài liệu Mã nguồn mở 01 intro-all

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

Page 3: tài liệu Mã nguồn mở 01 intro-all

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

Page 4: tài liệu Mã nguồn mở 01 intro-all

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

Page 5: tài liệu Mã nguồn mở 01 intro-all

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.

Page 6: tài liệu Mã nguồn mở 01 intro-all

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

Page 7: tài liệu Mã nguồn mở 01 intro-all

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

Page 8: tài liệu Mã nguồn mở 01 intro-all

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