Thứ sáu, 27/10/2017 | 00:00 GMT+7

Sơ lược về lịch sử Linux


Giới thiệu

Trong cách sử dụng phổ biến, “Linux” thường dùng để chỉ một group các bản phân phối hệ điều hành được xây dựng xung quanh nhân Linux. Tuy nhiên, theo nghĩa chặt chẽ nhất, Linux chỉ đề cập đến sự hiện diện của chính kernel . Để xây dựng một hệ điều hành đầy đủ, các bản phân phối Linux thường bao gồm công cụ và thư viện từ dự án GNU và các nguồn khác. Gần đây, nhiều nhà phát triển đã sử dụng Linux để xây dựng và chạy các ứng dụng di động; nó cũng đóng một role quan trọng trong việc phát triển các thiết bị giá cả phải chăng như Chromebook, chạy hệ điều hành trên nhân. Trong môi trường điện toán cloud và server nói chung, Linux là một lựa chọn phổ biến vì một số lý do thực tế:

  • Các bản phân phối của nó vẫn hiện tại và được hỗ trợ bởi cộng đồng các nhà phát triển khác.
  • Nó có thể chạy trên nhiều loại phần cứng và sẽ cài đặt cùng với các hệ thống đã có từ trước (một đặc điểm hữu ích trong môi trường phát triển local ).
  • Nó hỗ trợ cài đặt phần mềm tập trung từ các repository sẵn có.
  • Yêu cầu tài nguyên của nó thấp.
  • Nó thường được quan tâm hàng đầu khi các nhà phát triển đang xây dựng hệ sinh thái ứng dụng và công cụ cho server , dẫn đến mức độ tương thích cao.
  • Nó duy trì các sửa đổi cần thiết đối với các hành vi của hệ điều hành.

Linux cũng bắt nguồn từ phong trào phần mềm open-souce và miễn phí, và kết quả là một số nhà phát triển chọn nó vì sự kết hợp của các lý do đạo đức và thực tế:

  • Đối với một số nhà phát triển, việc sử dụng Linux thể hiện commit về khả năng truy cập và quyền tự do ngôn luận.
  • Cộng đồng Linux cũng là một điểm thu hút đối với một số nhà phát triển: khi họ có câu hỏi, họ có thể tham khảo các tài nguyên do cộng đồng này tạo ra hoặc liên hệ trực tiếp với một trong nhiều nhà bảo trì tích cực.

Để hiểu role của Linux trong cộng đồng các nhà phát triển (và hơn thế nữa), bài viết này sẽ trình bày sơ lược lịch sử của Linux theo Unix và thảo luận về một số bản phân phối Linux phổ biến.

Gốc trong Unix

Linux có nguồn root từ Unix và Multics, hai dự án có chung mục tiêu phát triển một hệ điều hành đa user mạnh mẽ.

Sự khởi đầu của Unix

Unix đã phát triển từ quá trình lặp lại dự án Multics tại Trung tâm Nghiên cứu Khoa học Máy tính của Phòng thí nghiệm Bell. Các nhà phát triển làm việc trên Multics tại Bell Labs và các nơi khác quan tâm đến việc xây dựng một hệ điều hành nhiều user với bộ nhớ cấp đơn, liên kết động (trong đó một quy trình đang chạy có thể yêu cầu thêm một phân đoạn khác vào không gian địa chỉ của nó, cho phép nó thực thi mã của phân đoạn đó) và hệ thống file phân cấp.

Bell Labs đã ngừng tài trợ cho dự án Multics vào năm 1969, nhưng một group các nhà nghiên cứu, bao gồm Ken Thompson và Dennis Ritchie, vẫn tiếp tục làm việc với các nguyên tắc cốt lõi của dự án. Vào năm 1972-3, họ đã quyết định viết lại hệ thống bằng C, điều này làm cho Unix có tính di động duy nhất: không giống như các hệ điều hành hiện đại khác, nó có thể di chuyển từ và tồn tại lâu hơn phần cứng của nó.

Nghiên cứu và phát triển tại Bell Labs (sau này là AT&T) tiếp tục, với Phòng thí nghiệm Hệ thống Unix đang phát triển các version của Unix, hợp tác với Sun Microsystems, sẽ được các nhà cung cấp Unix thương mại áp dụng rộng rãi. Trong khi đó, nghiên cứu vẫn tiếp tục trong giới học thuật, đáng chú ý nhất là Group Nghiên cứu Hệ thống Máy tính tại Đại học California Berkeley. Group này đã production Berkeley Software Distribution (BSD), lấy cảm hứng từ một loạt hệ điều hành, nhiều hệ điều hành vẫn được sử dụng cho đến ngày nay.Hai bản phân phối BSD ghi dấu ấn lịch sử là NeXTStep, hệ điều hành được tiên phong bởi NeXT, đã trở thành nền tảng cho macOS, trong số các sản phẩm khác và MINIX, một hệ điều hành giáo dục đã hình thành cơ sở so sánh cho Linus Torvalds khi ông phát triển Linux.

Các tính năng chính của Unix

Unix được định hướng dựa trên các nguyên tắc về tính rõ ràng, tính di động và tính đồng thời.

  • Tính rõ ràng: Thiết kế module của Unix cho phép các chức năng chạy một cách hạn chế và xác định. Hệ thống file của nó là thống nhất và phân cấp, giúp đơn giản hóa việc thao tác dữ liệu. Không giống như một số người tiền nhiệm của nó, Unix thực hiện hàng trăm (chứ không phải hàng nghìn) lệnh gọi hệ thống, mỗi lệnh trong số đó được thiết kế để hướng tới mục tiêu đơn giản và rõ ràng.
  • Tính di động: Bằng cách viết Unix bằng C, group tại Bell Labs đã định vị Unix để sử dụng và chấp nhận trên quy mô rộng. C được thiết kế để có quyền truy cập cấp thấp vào bộ nhớ, hỗ trợ thời gian chạy tối thiểu và mối quan hệ hiệu quả giữa ngôn ngữ và lệnh máy. Cơ sở trong C nghĩa là Unix có thể thích ứng và dễ chạy trên nhiều loại phần cứng.
  • Đồng thời: Nhân Unix được điều chỉnh để hướng tới mục tiêu (được chia sẻ bởi dự án Multics) là duy trì nhiều user và quy trình làm việc. Không gian kernel vẫn khác biệt với không gian user trong Unix, cho phép nhiều ứng dụng chạy cùng một lúc.

Sự phát triển của Linux

Unix đã đặt ra những câu hỏi quan trọng cho các nhà phát triển, nhưng nó cũng vẫn là độc quyền trong những lần lặp lại đầu tiên. Do đó, chương tiếp theo của lịch sử của nó là câu chuyện về cách các nhà phát triển đã làm việc trong và chống lại nó để tạo ra các lựa chọn thay thế miễn phí và open-souce .

Thử nghiệm nguồn mở

Richard Stallman là nhân vật trung tâm trong số các nhà phát triển được truyền cảm hứng để tạo ra các lựa chọn thay thế không độc quyền cho Unix. Trong thời gian làm việc tại Phòng thí nghiệm Trí tuệ Nhân tạo của MIT, ông bắt đầu thực hiện dự án GNU (đệ quy cho “GNU's not Unix!”), Cuối cùng ông rời khỏi Phòng thí nghiệm vào năm 1984 để có thể phân phối các thành phần GNU dưới dạng phần mềm miễn phí. Nhân GNU, được gọi là GNU HURD, đã trở thành trọng tâm của Tổ chức Phần mềm Tự do (FSF) , được thành lập vào năm 1985 và hiện do Stallman đứng đầu.

Trong khi đó, một nhà phát triển khác đang nghiên cứu một giải pháp thay thế miễn phí cho Unix: Linus Torvalds, một sinh viên đại học Phần Lan. Sau khi thất vọng với việc cấp phép cho MINIX, Torvalds thông báo với một group user MINIX vào ngày 25 tháng 8 năm 1991 rằng anh ta đang phát triển hệ điều hành của riêng mình, giống như MINIX. Mặc dù ban đầu được phát triển trên MINIX bằng trình biên dịch GNU C, nhân Linux nhanh chóng trở thành một dự án độc đáo với cốt lõi là các nhà phát triển đã phát hành version 1.0 của nhân với Torvalds vào năm 1994.

Torvalds đã sử dụng mã GNU, bao gồm cả Trình biên dịch GNU C, với kernel của bạn , và điều vẫn đúng là nhiều bản phân phối Linux dựa trên các thành phần GNU. Stallman đã vận động hành lang để mở rộng thuật ngữ “Linux” thành “GNU / Linux”, mà ông cho rằng sẽ nắm bắt được cả role của dự án GNU trong sự phát triển của Linux và những lý tưởng cơ bản đã thúc đẩy dự án GNU và nhân Linux. Ngày nay, “Linux” thường được dùng để chỉ sự hiện diện của nhân Linux và các phần tử GNU. Đồng thời, các hệ thống nhúng trên nhiều thiết bị cầm tay và điện thoại thông minh thường sử dụng nhân Linux với ít hoặc không có thành phần GNU.

Các tính năng chính của Linux

Mặc dù nhân Linux kế thừa nhiều mục tiêu và thuộc tính từ Unix, nhưng nó khác với hệ thống trước đó theo những cách sau:

  • Thành phần cốt lõi của nó là nhân, được phát triển độc lập với các thành phần khác của hệ điều hành. Điều này nghĩa là Linux mượn các phần tử từ nhiều nguồn khác nhau (chẳng hạn như GNU) để tạo thành toàn bộ hệ điều hành.
  • Nó là miễn phí và open-souce . Được duy trì bởi cộng đồng các nhà phát triển, kernel được cấp phép theo Giấy phép Công cộng GNU (một nhánh của công việc của FSF trong Dự án GNU), và có sẵn để download và sửa đổi. GPL quy định rằng tác phẩm phái sinh phải duy trì các điều khoản cấp phép của phần mềm root .
  • Nó có một nhân nguyên khối, tương tự như Unix, nhưng nó có thể tự động tải và dỡ mã nhân theo yêu cầu.
  • Nó có hỗ trợ đa xử lý (SMP) đối xứng, không giống như triển khai Unix truyền thống. Điều này nghĩa là một hệ điều hành duy nhất có thể có quyền truy cập vào nhiều bộ xử lý, chúng dùng chung một bộ nhớ chính và quyền truy cập vào tất cả các thiết bị I / O.
  • Kernel của nó là ưu tiên, một điểm khác biệt so với Unix. Điều này nghĩa là bộ lập lịch có thể buộc chuyển đổi ngữ cảnh trên trình điều khiển hoặc một phần khác của kernel trong khi nó đang thực thi.
  • Kernel của nó không phân biệt giữa các stream và các quy trình bình thường.
  • Nó bao gồm Giao diện dòng lệnh (CLI) và cũng có thể bao gồm Giao diện user đồ họa (GUI).

Các nhà phát triển duy trì nhiều bản phân phối Linux phổ biến hiện nay. Trong số lâu đời nhất là Debian, một bản phân phối open-souce và miễn phí có 50.000 gói phần mềm. Debian đã truyền cảm hứng cho một bản phân phối phổ biến khác, Ubuntu, được tài trợ bởi Canonical Ltd. Ubuntu sử dụng công cụ quản lý gói và định dạng gói deb của Debian, và các nhà phát triển của Ubuntu đẩy các thay đổi ngược dòng lên Debian.

Mối quan hệ tương tự tồn tại giữa Red Hat, Fedora và CentOS. Red Hat đã tạo ra một bản phân phối Linux vào năm 1993, và mười năm sau đó, các nỗ lực của bạn chia thành Red Hat Enterprise Linux và Fedora, một hệ điều hành dựa trên cộng đồng sử dụng nhân Linux và các phần tử từ Dự án GNU. Red Hat cũng có mối quan hệ với Dự án CentOS, một bản phân phối Linux phổ biến khác cho các web server . Tuy nhiên, mối quan hệ này không bao gồm bảo trì trả phí. Giống như Debian, CentOS được duy trì bởi một cộng đồng các nhà phát triển.

Kết luận

Trong bài viết này, ta đã trình bày về nguồn root của Linux trong Unix và một số tính năng xác định của nó. Nếu bạn muốn tìm hiểu thêm về lịch sử của các biến thể Linux và Unix (bao gồm cả FreeBSD), một bước tốt có thể là loạt bài của ta về FreeBSD . Một lựa chọn khác có thể là xem xét loạt bài giới thiệu của ta về cách bắt đầu với Linux . Bạn cũng có thể xem phần giới thiệu này về cách bố trí hệ thống file trong Linux , phần thảo luận này về cách sử dụng findlocate để tìm kiếm file trên Linux VPS hoặc phần giới thiệu này về cụm từ thông dụng trên dòng lệnh .


Tags:

Các tin liên quan

Cách thiết lập Shiny Server trên Ubuntu 16.04
2017-10-25
Cách thiết lập server lưu trữ đối tượng bằng Minio trên Ubuntu 16.04
2017-08-30
Cách chạy server MongoDB an toàn với OpenVPN và Docker trên Ubuntu 16.04
2017-03-24
Kết xuất phía server cơ bản với Vue.js và Express
2017-03-14
Cách thiết lập server VPN IKEv2 với StrongSwan trên Ubuntu 16.04
2017-02-17
Cách cấu hình firewall Linux cho Docker Swarm trên CentOS 7
2017-01-11
Cách cấu hình firewall Linux cho Docker Swarm trên Ubuntu 16.04
2017-01-09
Cách cài đặt Linux, Nginx, MySQL, PHP (LEMP Stack) trên Debian 8
2016-12-20
Cách thiết lập xác thực Linux tập trung với FreeIPA trên CentOS 7
2016-12-15
Cách bảo vệ server của bạn chống lại lỗ hổng Linux COW bẩn
2016-10-31