Lịch sử Unix và Linux từ 1969 đến nay
Tìm hiểu Unix từ Bell Labs năm 1969, licensing của AT&T, BSD, vụ kiện năm 1992 và lý do Linux thay BSD trong server room.
Lịch sử Unix và Linux, nói ngắn gọn
Lịch sử Unix và Linux là một tranh luận kéo dài về việc ai được phép sở hữu mã nguồn. Unix bắt đầu tại Bell Labs vào năm 1969. Linux bắt đầu ở Helsinki vào năm 1991 và không dùng bất kỳ mã nguồn nào của Unix ban đầu. Thứ được truyền từ Unix sang Linux là một thiết kế và một tập hợp các giao diện đã được công bố: file, process, pipe và shell để kết hợp các chương trình nhỏ. Unix lan rộng trong các trường đại học vào thập niên 1970 vì một thỏa thuận chống độc quyền năm 1956 cấm AT&T (American Telephone and Telegraph) bán phần mềm, nên Bell Labs thay vào đó cấp phép mã nguồn với chi phí thấp. Unix có mặt ở khắp nơi nhưng không thuộc về ai bên ngoài AT&T, và các cuộc tranh chấp về licensing sau đó đã quyết định hệ thống Unix-like miễn phí nào cuối cùng chạy trên server của bạn.
1969: một chiếc PDP-7 cũ và những ý tưởng còn tồn tại
Bell Labs rút khỏi dự án Multics vào năm 1969. Multics (multiplexed information and computing service) là một hệ thống time-sharing lớn được xây dựng cùng MIT và General Electric. Labs cho rằng hệ thống này quá lớn để hoàn thiện. Ken Thompson giữ lại những ý tưởng ông thích và bỏ phần còn lại, rồi viết một hệ thống time-sharing nhỏ trên một máy tính mini PDP-7 bị loại bỏ. Dennis Ritchie tham gia cùng ông. Cái tên Unix là một trò đùa nhằm châm biếm Multics.
Năm 1970, hệ thống được chuyển sang PDP-11 mà Labs mua cho các nhân viên đánh máy của bộ phận bằng sáng chế, vì một công cụ xử lý văn bản dễ xin cấp kinh phí hơn một operating system. Máy đó có 24 KB bộ nhớ lõi, được chia cho system và các chương trình người dùng. Sự cố cấp kinh phí này giải thích vì sao manual Unix đầu tiên, đề ngày tháng 11 năm 1971, là một tập tài liệu đã định dạng, và cũng giải thích vì sao bạn vẫn gõ man 5 crontab. Số section trong manual đó chính là số section trong manual của bạn.
Hai thay đổi đã khiến thiết kế này tồn tại lâu dài. Pipe xuất hiện trong Version 3 vào năm 1973, vì Doug McIlroy đã nhiều năm lập luận rằng các chương trình phải có thể nối đầu này với đầu kia. Thompson thêm toán tử | để output của một chương trình trở thành input của chương trình tiếp theo. Sau đó, Version 4, ra mắt vào cuối năm 1973, được viết lại bằng C. Một operating system được viết bằng ngôn ngữ portable có thể chuyển sang phần cứng mà nó chưa từng được viết cho, nhờ đó Unix tồn tại lâu hơn mọi loại máy mà nó khởi đầu trên đó.
Vì sao Unix lan rộng: AT&T không được phép bán nó
Một sắc lệnh chấp thuận năm 1956 đã khép lại vụ kiện chống độc quyền đối với AT&T. AT&T giữ độc quyền điện thoại và chấp nhận một giới hạn để đổi lại: công ty không được kinh doanh ngoài lĩnh vực viễn thông. Software là một trong những lĩnh vực đó. Vì vậy, khi các trường đại học yêu cầu Unix, Bell Labs không thể bán nó như một sản phẩm. Bell Labs cấp phép source với một khoản phí tượng trưng, không có hỗ trợ và không có bảo hành.
Tác động rất lớn và không nằm trong kế hoạch của AT&T. Unix Sixth Edition, được phát hành năm 1975, đến được hàng trăm khoa khoa học máy tính cùng toàn bộ source. John Lions tại University of New South Wales đã in source của kernel đó kèm phần chú giải từng dòng và dùng nó để giảng dạy. Cả một thế hệ học cách hệ điều hành hoạt động bằng cách đọc một hệ điều hành thực tế.
Sau đó, license thay đổi. License của Seventh Edition năm 1979 cấm sử dụng source trong lớp học, nên phần chú giải của Lions được lưu hành dưới dạng các bản photocopy của những bản photocopy. Đây là bản chất của toàn bộ câu chuyện. Unix có mặt ở khắp nơi nhưng đồng thời không tự do, vì vậy mọi cải tiến do bất kỳ ai thực hiện đều trở thành cải tiến cho code độc quyền của người khác.
Berkeley: những phần của Unix mà bạn thực sự gõ
Ken Thompson làm việc tại University of California, Berkeley trong năm học 1975 đến 1976, rồi để lại một nhóm Unix hoạt động rất tích cực. Computer Systems Research Group (CSRG) của Berkeley phát hành các tape chứa những cải tiến riêng, và các tape đó trở thành BSD, Berkeley Software Distribution. Bill Joy viết phần lớn công việc ban đầu: 1BSD vào năm 1978, rồi 2BSD vào năm 1979, kèm theo editor vi và C shell.
C shell là nguồn gốc của !! và !$. Bash kế thừa cú pháp đó. Vì vậy, hơn bốn mươi năm sau, bash vẫn khiến người dùng bất ngờ khi họ gõ dấu chấm than bên trong dấu ngoặc kép.
DARPA (US Defense Advanced Research Projects Agency) sau đó tài trợ cho Berkeley để đưa các giao thức Internet mới vào Unix. 4.2BSD, phát hành vào tháng 8 năm 1983, tích hợp TCP/IP (transmission control protocol over internet protocol) và socket application programming interface. Mọi network service trên server của bạn vẫn gọi socket(), bind(), listen() và accept() theo đúng thứ tự đó, vì Berkeley đã chọn các tên này vào năm 1983.
Một chi tiết đã quyết định thập kỷ tiếp theo. Một BSD tape không phải là một hệ thống hoàn chỉnh. Nó là một tập hợp phần bổ sung cho Unix của AT&T, và bạn cần có AT&T source license hợp lệ để chạy nó hợp pháp. Berkeley thay thế các phần của AT&T bằng code riêng trong nhiều năm, từng file một. Việc thay thế đó có thực sự hoàn chỉnh hay không là vấn đề sau này được đưa ra tòa.
1984: tan rã, rồi đến các cuộc chiến Unix
Bell System bị chia tách vào ngày 1 tháng 1 năm 1984. Cùng lúc đó, sắc lệnh chấp thuận từng ngăn AT&T kinh doanh phần mềm cũng chấm dứt hiệu lực. AT&T giờ có thể bán Unix như một sản phẩm, và họ đã làm vậy. Giấy phép source thương mại trở nên đắt đỏ, nên Unix không còn là thứ giá rẻ mà một trường đại học cấp cho sinh viên.
Các vendor đã fork Unix từ trước đó. Mỗi công ty sản xuất workstation đều phát hành Unix riêng trên phần cứng riêng. Vì vậy, đến cuối những năm 1980, một chương trình viết cho hệ thống này phải được port sang hệ thống khác. Ngành công nghiệp chia thành 2 phe tiêu chuẩn vào năm 1988: Open Software Foundation ở một phía và Unix International ở phía kia. Hai phe dành nhiều năm phát hành các hệ thống không tương thích trong khi tranh luận Unix của bên nào mới là Unix thực sự.
POSIX (portable operating system interface) ra đời từ mớ hỗn độn đó. IEEE 1003.1 được công bố vào năm 1988. Tiêu chuẩn này ghi rõ một hệ thống giống Unix phải hoạt động như thế nào: system call, hành vi của shell, các tiện ích tiêu chuẩn và interface của C library. Điều này quan trọng hơn vẻ bề ngoài, vì tiêu chuẩn là một đặc tả và không license nào bao phủ nó. Ba năm sau, một sinh viên đã viết một kernel dựa trên các tài liệu đó.
Minix và khoảng trống mà nó để lại
Andrew Tanenbaum phát hành Minix vào năm 1987 như một hệ thống dùng để giảng dạy trong giáo trình hệ điều hành của ông. Minix là một hệ thống nhỏ giống Unix, mã nguồn đi kèm sách và có thể chạy trên những PC giá rẻ mà sinh viên thực sự sở hữu. Sinh viên được phép đọc mã nguồn trong lớp học, trong khi Seventh Edition Unix thì không còn cho phép như vậy.
Minix được cố ý giữ ở quy mô nhỏ vì mọi thành phần của nó phải có thể giải thích trong một cuốn sách. Tanenbaum cũng từ chối các bản vá có thể biến nó thành một hệ thống dùng trong production. Giấy phép của Minix cũng không phải giấy phép miễn phí: bạn phải mua sách, và bạn không có quyền tự quyết định việc phân phối lại phiên bản Minix đã sửa đổi. Vì vậy, đến năm 1991, một sinh viên có thể đọc một kernel giống Unix đang hoạt động, nhưng không thể xây dựng thứ gì có thể tồn tại lâu dài trên đó.
GNU có mọi thứ ngoại trừ kernel
Richard Stallman công bố dự án GNU vào tháng 9 năm 1983, với mục tiêu xây dựng một hệ thống hoàn chỉnh tương thích Unix và tự do. Đến năm 1991, GNU đã tạo ra hầu hết các thành phần bao quanh kernel: trình biên dịch GCC, thư viện C của GNU, các tiện ích nhị phân và bash — shell do Brian Fox viết vào năm 1989, cũng là shell mà server của bạn vẫn khởi động cho bạn. GNU kernel, Hurd, là thành phần liên tục bị trì hoãn.
GNU General Public License phiên bản 2 được công bố vào tháng 6 năm 1991. Quy định của giấy phép này rất ngắn gọn. Bạn được phép sử dụng và sửa đổi mã, nhưng nếu phân phối kết quả, bạn phải phân phối source theo cùng các điều khoản. Quy định đó sẽ trở thành điểm then chốt của câu chuyện này sau hai section.
Tháng 8 năm 1991: bài đăng lên comp.os.minix
Ngày 25 tháng 8 năm 1991, một sinh viên ở Helsinki đã đăng bài lên nhóm Usenet comp.os.minix:
Hello everybody out there using minix -
I'm doing a (free) operating system (just a hobby, won't be big and
professional like gnu) for 386(486) AT clones.Version 0.01 được phát hành vào tháng 9 năm 1991. Nó không dùng chung code với Unix hay Minix. Đây là một kernel mới cho 386, được phát triển trên một máy chạy Minix, viết theo các giao diện POSIX và kết hợp với những công cụ GNU đã tồn tại. Vào tháng 1 năm 1992, Tanenbaum nói với Torvalds rằng kernel nguyên khối là một thiết kế lỗi thời. Về mặt thiết kế, ông có lý ở một điểm quan trọng. Nhưng Torvalds đang trả lời một câu hỏi khác: hệ thống nào chạy tốt trên chiếc máy tính giá rẻ duy nhất mà một sinh viên sở hữu.
Vào tháng 2 năm 1992, version 0.12 được cấp lại giấy phép theo GPL. Sau này Torvalds gọi đó là quyết định đúng đắn nhất của mình. Giấy phép Linux ban đầu cấm mọi giao dịch tiền bạc, điều này sẽ ngăn các nhà cung cấp CD và các công ty hỗ trợ xuất hiện sau đó. GPL cho phép hoạt động thương mại, đồng thời buộc mọi thay đổi được phân phối phải quay lại cùng một cây code dùng chung.
Vụ kiện: tháng 4/1992 đến tháng 2/1994
Berkeley phát hành Networking Release 2 (Net/2) vào tháng 6/1991: gần như một hệ thống BSD hoàn chỉnh, đã loại bỏ các file có nguồn gốc từ AT&T. Sáu file kernel bị thiếu. Bill và Lynne Jolitz đã viết các bản thay thế và phát hành 386BSD 0.0 vào tháng 3/1992, sau đó phát hành 386BSD 0.1 vào ngày 14 tháng 7/1992. Khi đó đã có một hệ thống BSD miễn phí, hoàn chỉnh và trưởng thành cho 386, trong lúc Linux vẫn chỉ là một kernel phục vụ sở thích cá nhân. Berkeley Software Design, Inc. (BSDi) bán một bản thương mại có hỗ trợ với tên BSD/386 và quảng cáo sản phẩm bằng số điện thoại 1-800-ITS-UNIX.
Tháng 4/1992, Unix System Laboratories (USL), công ty con của AT&T khi đó sở hữu Unix, kiện BSDi tại tòa án liên bang ở New Jersey về bí mật thương mại và trademark Unix. Sau đó, đơn kiện được sửa đổi để bổ sung Regents of the University of California. Năm 1993, University kiện ngược tại California, lập luận rằng AT&T đã phân phối code của Berkeley bên trong System V mà không ghi công theo yêu cầu trong license của chính AT&T.
Năm 1993, trọng tâm pháp lý của vụ việc bắt đầu sụp đổ. Thẩm phán Dickinson Debevoise từ chối lệnh cấm sơ bộ mà USL yêu cầu, vì cho rằng yêu cầu bản quyền của USL đối với code 32V cũ có thể không hợp lệ. AT&T đã phân phối code đó trong nhiều năm mà không có thông báo bản quyền. Giữa năm 1993, Novell mua USL từ AT&T và ban quản lý Novell muốn kết thúc tranh chấp. Vụ kiện được dàn xếp vào tháng 2/1994. Trong khoảng 18,000 file của bản phân phối Berkeley, ba file bị xóa và khoảng bảy mươi file được bổ sung thông báo bản quyền của USL.
Berkeley phát hành 4.4BSD-Lite vào tháng 6/1994 và bản này không còn vấn đề pháp lý. FreeBSD và NetBSD, cả hai được thành lập năm 1993 trên code Net/2 đang tranh chấp, sau đó phải xây dựng lại hệ thống trên nền tảng mới. Công việc này chiếm phần lớn thời gian còn lại của năm 1994. Linux 1.0 được phát hành vào tháng 3/1994, trong lúc quá trình xây dựng lại đó đang diễn ra.
Vì sao Linux chiếm lĩnh máy chủ thay vì BSD?
Vụ kiện là câu trả lời phổ biến, và đó là một phần của câu trả lời. Từ tháng 4 năm 1992 đến tháng 2 năm 1994, bất kỳ ai chọn một Unix miễn phí cho sản phẩm đều phải cân nhắc giữa một khiếu kiện đang diễn ra từ luật sư của AT&T và một kernel do một sinh viên Phần Lan viết mà không ai có thể kiện. Đây chính là giai đoạn web xuất hiện và những bản phân phối Linux đầu tiên ra đời: Slackware vào tháng 7 năm 1993, Debian vào tháng 8 năm 1993, sau đó là Red Hat và SUSE.
Bốn yếu tố khác cũng quan trọng không kém vụ kiện.
- Phần cứng. Linux nhắm đến PC 386 phổ thông ngay từ dòng code đầu tiên, và đó là loại phần cứng ngày càng rẻ. Trọng tâm của BSD là VAX và workstation, còn bản port cho 386 là một nỗ lực bên ngoài do hai người thực hiện.
- Giấy phép. GPL yêu cầu công ty phát hành kernel đã sửa đổi phải công bố các thay đổi, vì vậy công việc của các vendor được đưa trở lại một cây mã nguồn chung. Giấy phép BSD cho phép công ty giữ các thay đổi ở chế độ riêng tư, và các công ty đã thực sự làm như vậy.
- Mô hình phát triển. Torvalds nhanh chóng merge patch từ những người xa lạ và liên tục phát hành bản mới. 386BSD phát hành chậm đến mức chính người dùng của nó đã fork dự án hai lần trong năm 1993, thành NetBSD và FreeBSD, rồi một lần nữa thành OpenBSD vào năm 1995.
- Đà phát triển. Developer thường chọn nơi đã có những developer khác, và driver sẽ được viết cho hệ thống có nhiều người dùng nhất.
Cần nhìn thẳng vào câu hỏi kỹ thuật. Năm 1994, BSD là hệ thống hoàn thiện hơn, có base nhất quán, lịch sử được ghi chép rõ ràng và code networking mà Linux phải mất nhiều năm để bắt kịp. Không ai chọn Linux năm 1994 vì nó tốt hơn. Họ chọn nó vì nó có sẵn, không bị ràng buộc pháp lý, chạy trên phần cứng họ đã sở hữu và được cải thiện mỗi tuần.
BSD đã giữ lại những gì và hiện được chạy ở đâu
BSD vẫn tiếp tục phát triển. Điều BSD mất đi là vị trí mặc định. Bằng chứng rõ nhất nằm ngay trên máy của bạn: dự án OpenBSD viết OpenSSH vào năm 1999, và ngày nay OpenSSH là SSH server trên gần như mọi hệ thống Linux được phát hành. Vì vậy, những thói quen về SSH key đáng học là giống nhau trên cả hai họ hệ điều hành.
Netflix phân phối video từ các appliance FreeBSD. Junos, hệ điều hành trên các router Juniper, sử dụng FreeBSD bên dưới. Phần mềm hệ thống của PlayStation bắt nguồn từ FreeBSD. macOS và iOS của Apple chứa mã BSD trong kernel và trên toàn bộ userland. Giấy phép tự do, vốn khiến BSD mất cây mã nguồn server dùng chung, lại đưa mã BSD vào rất nhiều phần cứng không hề nhắc đến BSD.
Nếu bạn chọn hệ điều hành hôm nay, câu hỏi mang tính thực tế chứ không phải lịch sử. So sánh Linux và FreeBSD làm server chủ yếu xoay quanh ZFS, jail, ports tree và mức độ phần mềm bên thứ ba giả định Linux là nền tảng bên dưới. FreeBSD 15 làm server là một hệ thống hiện tại, vẫn được duy trì, không phải hiện vật trong bảo tàng. Còn Linux so với Windows Server là một câu hỏi riêng, với câu trả lời phụ thuộc vào stack ứng dụng của bạn.
Thiết kế từ năm 1969 mà bạn vẫn dùng trên VPS ngày nay
Mỗi thành phần dưới đây đều lâu đời hơn phần lớn người đang sử dụng nó.
- Pipe.
who | wc -lđếm số người dùng đã đăng nhập vì Version 3 Unix vào năm 1973 cho phép output của một chương trình trở thành input của chương trình khác. - Các section của manual.
man 1 lsvàman 5 crontabdùng cách đánh số từ manual tháng 11 năm 1971. - Cách phân tách filesystem.
/usrtồn tại vì disk root trên PDP-11 đó bị đầy vào năm 1971, nên các developer đã chuyển file sang disk pack thứ hai. Các distribution sau đó đã bỏ cách phân tách này: chạyls -ld /bintrên Ubuntu 24.04 hoặc Debian 13 sẽ nhận được symbolic link trỏ đếnusr/bin. - Các socket call. Berkeley viết chúng cho 4.2BSD vào năm 1983, và mọi network daemon vẫn sử dụng chúng.
- POSIX. Một script
#!/bin/shviết theo standard sẽ chạy không thay đổi trên Linux, FreeBSD, macOS và Solaris, vì standard này là thứ mà tất cả các hệ điều hành đó đã triển khai.
Khi thuê một virtual private server và đăng nhập, bạn đang nhập lệnh qua một interface được thiết kế cho một máy có 24 KB memory và một patent department cần phục vụ. Interface này tồn tại vì nó được công bố, tranh luận, standardise, rồi được những người chưa từng được phép xem source code ban đầu triển khai lại từ đầu.
FAQ
Linux có chứa mã Unix nguyên gốc nào không?
Không. Linus Torvalds đã viết kernel từ đầu từ năm 1991, nhắm đến các interface POSIX thay vì bất kỳ mã nguồn nào của AT&T. Unix kế thừa về mặt thiết kế và interface đã được công bố: file, process, pipe và tên system call. Các công cụ GNU xung quanh kernel cũng được viết từ đầu, bắt đầu từ năm 1983. Tính độc lập đó là lý do vụ kiện của AT&T về mã BSD không ảnh hưởng đến Linux.
Vụ kiện của AT&T chống BSD diễn ra khi nào và có hủy diệt BSD không?
USL, công ty con của AT&T sở hữu Unix, đã kiện BSDi vào tháng 4 năm 1992 và sau đó bổ sung University of California vào danh sách bị đơn. Năm 1993, thẩm phán từ chối lệnh cấm sơ bộ vì cho rằng yêu cầu bản quyền đối với mã 32V cũ nhiều khả năng không có cơ sở. Novell mua USL vào giữa năm 1993 và dàn xếp vụ việc vào tháng 2 năm 1994. Ba file trong khoảng 18,000 file bị xóa, và khoảng bảy mươi file được thêm thông báo bản quyền mới. Vụ việc không hủy diệt BSD. Nó khiến việc áp dụng BSD bị đình trệ trong hai năm, đúng lúc thế giới đang chọn một Unix tự do.
Vì sao Linux chiếm lĩnh server thay vì BSD?
Sự chắc chắn về pháp lý là một lý do: trong suốt năm 1992 và 1993, Linux không vướng vụ kiện nào còn BSD thì có. Các lý do khác gồm việc nhắm đến 386 ngay từ đầu, GPL đưa các thay đổi của vendor trở lại một cây mã nguồn duy nhất, và quy trình merge đủ nhanh để giữ người đóng góp, trong khi 386BSD fork thành ba nhánh. Ưu thế kỹ thuật không phải yếu tố quyết định, vì năm 1994 BSD là hệ thống hoàn thiện hơn.
FreeBSD hiện nay vẫn đáng dùng chứ?
Có, vì những lý do cụ thể: ZFS được tích hợp với base system, jail là một mô hình isolation trưởng thành, base system được phát triển như một khối thống nhất, và tài liệu vẫn chính xác. Cái giá phải trả là công sức xử lý compatibility, vì phần lớn phần mềm server bên thứ ba, công cụ container và hỗ trợ từ vendor đều giả định Linux. Hãy chọn FreeBSD khi khả năng xử lý storage và networking của nó xứng đáng với chi phí đó, thay vì chỉ vì trung thành với dòng Unix cũ hơn.