Tất cả các lệnh Unix được viết lại trong Linux?


Câu trả lời:


93

Có vẻ như bạn đang nhầm lẫn hai phần rất khác nhau của HĐH. Điều đó có thể hiểu được, bởi vì chúng thường được gọi là thay thế cho nhau, nhưng về mặt kỹ thuật không chính xác, vì vậy câu hỏi của bạn dựa trên tiền đề bị lỗi. Để khám phá đầy đủ và hy vọng trả lời câu hỏi mà bạn có thể muốn hỏi, một bài học lịch sử ngắn là cần thiết.

Đầu tiên, có UNIX. Về cơ bản, trở lại vào thời đó, UNIX có nghĩa là Hệ thống UNIX AT & T , xuất hiện đầu tiên. Nhưng AT & T UNIX đã trở thành không miễn phí, vì vậy Richard Stallman đã bắt đầu dự án GNU để viết một hệ thống Unix miễn phí . Do đó, tên Gnu không phải là Unix , viết tắt GNU. Kế hoạch cho GNU đã được công khai vào năm 1983 và sự phát triển bắt đầu vào năm 1984 .

Đến đầu những năm 1990, GNU đã thực hiện lại hầu hết các tiện ích UNIX từ đầu. Wikipedia liệt kê một vài thành phần của hệ thống tổng thể không được viết lại (TeX, Hệ thống cửa sổ X và hạt nhân Mach được đề cập như các ví dụ về các thành phần không được viết lại), nhưng chủ yếu, các công cụ người dùng đã được viết lại từ đầu để đáp ứng mục tiêu tránh sử dụng lại bất kỳ mã AT & T (hay đúng hơn là không miễn phí), cũng như mở rộng khả năng của chúng bằng cách thêm các tùy chọn dòng lệnh. Kết quả là, các tiện ích GNU thường mạnh hơn các công cụ mà chúng lấy cảm hứng ban đầu.

Vào thời điểm đó, GNU vẫn còn thiếu một thành phần quan trọng: một hạt nhân hệ điều hành , mà sẽ cho phép tất cả mọi thứ để làm việc cùng nhau trên một máy tính thực tế không chạy một số hệ điều hành khác. Năm 1991, Linus Torvalds bắt đầu thực hiện một dự án đồ chơi mà cuối cùng được biết đến với tên Linux. Về cơ bản, đây là một dự án trường học để tìm hiểu về CPU Intel 80386 32 bit mới , và khởi đầu cực kỳ đơn giản, nhưng cuối cùng bắt đầu biến thành một hạt nhân hệ điều hành thực sự có thể sử dụng được. Nhưng nó không có phần mềm người dùng nào; Bản thân Linux không cung cấp shell, không có phương tiện khởi động hệ thống nào ngoài khởi tạo kernel, không có trình soạn thảo văn bản, không có giao diện đồ họa, không có gì. Hạt nhân giống như một động cơ xe hơi; cần thiết để tạo ra một chiếc xe hữu ích, nhưng vô dụng (đối với một chiếc xe hữu ích, bạn cần những thứ như bánh xe, hộp số, tay lái, một nơi nào đó để người lái ngồi, bình xăng hoặc kho năng lượng khác, v.v.). Hạt nhân Linux cuối cùng đã được phân phối theo Giấy phép Công cộng GNU, giống như phần mềm GNU .

Thế là mọi người bắt đầu ghép đôi hai người. Bạn sẽ có được một vùng người dùng giống như Unix, cùng với một hạt nhân dựa trên các ý tưởng từ Unix (bao gồm sự tương đồng gần với POSIX ), hoàn chỉnh với mã nguồn mà bạn có thể hack đi theo cách bạn muốn, và nó không tốn bất cứ thứ gì . Đặc biệt là trước khi các bản phân phối Linux trở nên phổ biến, phải mất một chút mày mò để làm cho mọi thứ hoạt động, nhưng nó đã được hoàn thành đủ để có thể sử dụng được phần nào bởi những người sẵn sàng dành thời gian cho nó.

Ngày nay, GNU cung cấp một kernel của riêng họ. Có thể bạn chưa từng nghe về nó, nhưng nó được gọi là GNU Hurd . Nhưng Hurd đã không xuất hiện vào đầu những năm 1990, khi Linux bắt đầu có sức hút giữa những người có sở thích và tinker, do đó, đó là sự kết hợp giữa nhân Linux và vùng người dùng GNU chủ yếu được các nhà phát triển chú ý nhất.

Ngoài ra, ngày nay, nhiều hệ thống Unix cài đặt hoặc cho phép người quản trị cài đặt dễ dàng, các phần của vùng người dùng GNU. Bạn có thể thấy những thứ như GNU bash, Bộ sưu tập trình biên dịch GNU, thư viện GNU C (vanilla hoặc đã vá), v.v., trên một hệ thống không phải là GNU.

Để làm cho vấn đề trở nên tồi tệ hơn, một số hệ thống sử dụng nhân Linux nhưng không có vùng người dùng GNU nào cả. Đối với một ví dụ được sử dụng rộng rãi về điều này, hãy xem xét HĐH Android , về cơ bản là nhân Linux kết hợp với vùng người dùng tùy chỉnh.

Điều này rất quan trọng vì nó làm mờ đáng kể ranh giới giữa GNU, Linux và các Unix khác nhau ( chỉ có một UNIX , nhưng có nhiều Unix và các HĐH giống Unix hơn ). Khi bạn hỏi về Linux, bạn thực sự rất hay hỏi về hệ thống GNU / Linux. Nhưng hãy xem xét Debian GNU / kFreeBSD , chạy một vùng người dùng GNU trên hạt nhân FreeBSD, hoàn toàn không sử dụng Linux. Hoặc ví dụ Solaris, trên đó bạn có thể dễ dàng cài đặt các gói GNU khác nhau, bao gồm cả coreutils . Tôi nghĩ rằng Mac OS X cũng có các phần của vùng người dùng GNU. Hoặc xem xét các Android đã đề cập ở trên.

Cuối cùng, một hệ thống GNU có thể sử dụng có thể chạy mã không phải GNU và hệ thống không phải GNU có thể chạy mã GNU, nhưng các tiện ích GNU không chứa mã không phải GNU.


1
Lần trước tôi đã sử dụng FreeBSD (nhiều năm trước), nó không sử dụng nhiều công cụ GNU, nhưng bộ riêng của nó - ví dụ BSD tạo ra thay vì GNU make.
Revierpost

5
@reinierpost OSX rất giống nhau - một bản cài đặt đơn giản chứa hầu hết các phiên bản BSD của mọi thứ, nhưng lõi core GNU và những thứ tương tự có sẵn dễ dàng thông qua MacPorts và các phiên bản khác. XCode sử dụng LLVM, nhưng cũng gcc. Thật phức tạp :)
MattDMo

1
@reinierpost làm cho không quá tệ để thay thế. Các trình biên dịch C là tham gia nhiều hơn một chút. Ít nhất FreeBSD 8.0 sử dụng GCC làm trình biên dịch mặc định ; cụ thể là phiên bản 4.2.1. "Các vấn đề cấp phép" được đề cập đến việc ngăn chặn tích hợp các phiên bản mới hơn vào hệ thống cơ sở có lẽ là về việc chuyển đổi từ GPL2 + sang GPL3 +, nhưng tôi không chắc chắn.
CVn

3
@ hunter2 Có vẻ như không cần thiết, dựa trên số phiếu bầu cho đến nay. ;) Tôi cũng không định viết một lịch sử đầy đủ. Minix đóng vai trò quan trọng như một hệ thống bootstrap và phát triển Linux trước khi Linux tự lưu trữ, nhưng ít có ảnh hưởng đến, ví dụ như mối quan hệ giữa Linux, GNU và UNIX ban đầu, liên quan nhiều hơn đến câu hỏi.
một CVn

3
@ hunter2 Nếu chúng ta đi theo con đường đó, thì điều hoàn toàn đúng là UNIX chắc chắn cũng không đến trước. Nhưng với mục đích trả lời câu hỏi, điều này có vẻ gần đúng. Câu trả lời một câu sẽ giống như "về cơ bản mọi thứ UNIX trừ TeX và X mà bạn tìm thấy trên hệ thống Linux đã được viết lại như một phần của GNU" nhưng tôi nghĩ bối cảnh bổ sung thêm giá trị, ngay cả khi nó làm cho câu trả lời dài hơn đáng kể cần thiết - và câu trả lời vẫn còn thiếu rất nhiều để bao quát mọi chi tiết.
một CVn
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.