Tôi muốn biết những lệnh nào được viết lại cho Linux và những lệnh nào được giữ lại từ Unix?
Tôi muốn biết những lệnh nào được viết lại cho Linux và những lệnh nào được giữ lại từ Unix?
Câu trả lời:
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.