Cả Linux và các biến thể BSD (Berkeley Software Distributions) đều miễn phí và mã nguồn mở, có nhiều điểm chung hơn khác biệt. Với điều này, bạn có thể tự hỏi: "Nếu chúng giống nhau đến vậy, tại sao cả hai cùng tồn tại? Có tốt hơn không nếu chỉ có một hệ điều hành để lựa chọn?"
Tôi có thể trả lời câu hỏi này bằng cách nhắc đến việc khác biệt của chúng cũng rất lớn. Lớn đến mức nếu muốn bao quát tất cả sẽ biến bài viết này thành một cuốn sách chứ không phải một bài viết đơn giản. Thay vào đó, tôi sẽ tập trung vào những điều cơ bản của cả hai hệ thống mã nguồn mở để bạn tự chọn lựa cái nào phù hợp hơn.
Linux So Với BSD
Linux về mặt kỹ thuật không được coi là một hệ điều hành. Thực tế, nó chỉ là một kernel (hạt nhân). Kernel là cốt lõi của bất kỳ hệ điều hành nào và nằm giữa phần mềm và phần cứng.
Điều này cho phép kernel giúp người dùng tận dụng các tài nguyên có sẵn trong hệ thống. Hệ điều hành được xây dựng dựa trên kernel.
Kernel So Với Hệ Điều Hành
Cả Linux và BSD đều là hệ điều hành giống Unix. Khi cài đặt Linux, bạn cài đặt một bản phân phối (distribution) được xây dựng sử dụng kernel Linux. Có khá nhiều bản phân phối để lựa chọn, như Ubuntu và Debian, tất cả đều dùng kernel Linux. Các chương trình khác nhau được nhúng vào kernel trước khi bản phân phối được đưa ra thị trường.
BSD, khác với Linux, là một hệ điều hành hoàn chỉnh. BSD cũng là một kernel, được dùng làm lõi của hệ điều hành. Các nhà phát triển BSD sẽ dùng kernel đó để thêm các loại chương trình khác nhau, cung cấp cho người dùng dưới dạng một bản phân phối hoàn chỉnh. Điều này có nghĩa là một hệ điều hành BSD, như FreeBSD hay NetBSD, là kernel cộng với các chương trình thêm vào và được phân phối như một gói đơn nhất, có thể tải xuống.
BSD sử dụng cái gọi là hệ thống ports (cổng). Hệ thống này cho phép cài đặt các gói phần mềm. Phần mềm được giữ ở dạng mã nguồn, nghĩa là máy tính của bạn sẽ cần biên dịch dữ liệu mỗi lần trước khi phần mềm chạy.
Một điểm sáng là các gói có thể được cài đặt ở trạng thái binary đã biên dịch sẵn, cho phép hệ thống bỏ qua bước biên dịch trước khi chạy.
Khác biệt cơ bản là các bản phân phối Linux đi kèm với các bộ chương trình và kho lưu trữ khác nhau, cho phép người dùng tải thêm các chương trình khác nhau tùy theo yêu cầu của bản phân phối.
Khi bạn cài đặt hệ điều hành BSD, bạn chỉ nhận được các chương trình mà BSD cung cấp. Điều này không đúng với các gói phần mềm vì chúng có sẵn cho cả hai như bạn sẽ khám phá.
Khác Biệt Về Giấy Phép (Licensing)
Hầu hết mọi người có thể không quan tâm nhưng sự khác biệt về giấy phép thực sự quan trọng. Linux sử dụng Giấy phép Công cộng GNU (GPL). Điều này có nghĩa là các nhà phát triển có thể sửa đổi hoặc thêm tính năng mới vào kernel Linux tùy ý. Điều kiện duy nhất là toàn bộ mã nguồn mới phát triển phải được phát hành công khai चाहे họ có muốn hay không.
BSD sử dụng giấy phép BSD riêng, cho phép nhà phát triển sửa đổi và thêm tính năng mới vào kernel hoặc bản phân phối BSD mà không cần phát hành mã nguồn. Điều này có nghĩa là một BSD mã nguồn mở có thể được khai báo là mã nguồn đóng nếu nhà phát triển chọn cách đó. Họ không có nghĩa vụ phát hành mã nguồn cho bất kỳ ai.
Khả Dụng & Tương Thích Phần Mềm
Đây là yếu tố ảnh hưởng trực tiếp đến sự phổ biến và khả năng thích nghi của hệ điều hành với công chúng. Khả năng của hệ điều hành tương thích với phần mềm hiện đại có thể là yếu tố quyết định cho hầu hết mọi người.
Đối với Linux, việc các nhà phát triển viết mã có sẵn cho người dùng dưới dạng gói binary đã biên dịch sẵn để cài đặt là dễ dàng hơn. Các gói có thể cài đặt bằng apt, yum và các trình quản lý gói tương tự. Bản chất mã nguồn mở của Linux là điều khiến điều này dễ dàng hơn.
Đối với người dùng BSD, nhiệm vụ không đơn giản như vậy. Người dùng sẽ phải tải mã nguồn cho các chương trình từ hàng nghìn ports có sẵn. Sau khi tải mã nguồn, họ phải biên dịch trên hệ thống của mình.
Điều này tạo ra phiền toái cho cả người dùng và nhà phát triển BSD, vì sự thiếu phổ biến בקרב người dùng chung có thể归因于 việc biên dịch mã nguồn thêm phiền toái. Các gói binary đã biên dịch sẵn có thể được xem là cách duy nhất để loại bỏ phiền toái nhưng vẫn thiếu hụt về sự có sẵn của chương trình ứng dụng.
Lựa Chọn
Linux毫无疑 ý là lựa chọn phổ biến hơn giữa các hệ điều hành mã nguồn mở dựa trên Unix. Nó có xu hướng nhận được hỗ trợ phần cứng nhanh hơn BSD và đối với hầu hết mục đích chung, cả hai hệ thống quá giống nhau đến mức không quan trọng.
Cả hai hệ thống đều có lợi thế riêng. Xét về FreeBSD, nhóm phát triển duy trì phiên bản riêng của họ cho nhiều công cụ phổ biến. Điều này cho phép họ tạo ra các biến thể công cụ riêng để dùng với hệ thống của mình. Các công cụ hệ thống Linux chủ yếu do bộ GNU cung cấp nên ít biến thể hơn.
BSD thiếu hụt nghiêm trọng ứng dụng. Điều này khiến các nhà phát triển cố gắng kiểm soát tình hình bằng cách tạo gói tương thích Linux, cho phép ứng dụng Linux chạy trên BSD. Các bản phân phối Linux không có vấn đề thực sự về ứng dụng vì có rất nhiều ứng dụng có sẵn cho công chúng.
Vấn đề thực sự nằm ở lập luận về mã nguồn tự do.
Nhà Phát Triển & Người Dùng So Với Hạn Chế
Giấy phép GPL của Linux thường nghiêm ngặt hơn với nhà phát triển, buộc phải phát hành toàn bộ mã nguồn đã sửa đổi. Nhà phát triển BSD thì không có hạn chế như vậy. Điều cần nhớ là công chúng không phải nhà phát triển nhận được gì từ tất cả điều này.
Nhà sản xuất có thể chọn BSD làm hệ điều hành khi tạo thiết bị mới thay vì Linux. Điều này cho phép họ giữ mã sửa đổi bí mật, vì dùng Linux sẽ đi kèm điều kiện phát hành mã nguồn công khai.
Các hạn chế do giấy phép Linux đặt ra cung cấp cho những người tìm ứng dụng cho hệ thống một sự đảm bảo rằng nếu có ứng dụng được tạo ra, họ sẽ có quyền truy cập. Giấy phép BSD cho phép nhà phát triển lựa chọn giữ kín các sửa đổi kernel và hệ thống, nghĩa là ngay cả khi có thứ gì được tạo ra, công chúng có thể không bao giờ biết đến sự tồn tại của nó.
Hệ thống BSD có uy tín về độ tin cậy tốt hơn Linux. Đây là một điểm cho BSD. Nó cũng có khả năng thực thi file binary Linux và sở hữu kho lưu trữ trung tâm. Cả hai điều Linux không được biết đến.
Cả hai đều là lựa chọn khả thi cho bất kỳ ai cần hệ điều hành dựa trên Unix. Vì sự tương đồng của chúng, khá khó để khuyến khích cái này hơn cái kia. Lựa chọn thực sự nằm ở nhà phát triển so với người dùng và yêu cầu trong một hệ điều hành mã nguồn mở mà người dùng tìm kiếm.