Чи всі команди Unix були переписані в Linux?


Відповіді:


93

Схоже, ви плутаєте дві дуже різні частини ОС. Це зрозуміло, оскільки їх часто називають взаємозамінним, але технічно це неправильно, тому ваше запитання базується на несправній передумові. Для того щоб повністю вивчити та сподіватися відповісти на питання, яке ви, ймовірно, хочете задати, потрібен короткий урок історії.

По-перше, був UNIX. В основному, ще в ті часи UNIX мав на увазі систему AT&T UNIX , яка стала першою. Але AT&T UNIX став невільним, тому Річард Сталлман розпочав проект GNU написати систему Unix, яка була безкоштовною . Звідси назва Gnu не Unix , скорочено GNU. Плани щодо GNU були оприлюднені у 1983 році, а розвиток розпочався у 1984 році .

На початку 1990-х GNU з нової версії вдосконалив більшість утилітів UNIX. У Вікіпедії перераховано декілька компонентів загальної системи, які не були переписані (TeX, X Window System і Microkernel Mach згадуються як приклади компонентів, які не були переписані), але в основному інструменти користувальницької програми були переписані з нуля для того, щоб відповідати мета уникнути повторного використання будь-якого AT&T (а точніше, невільного) коду, а також розширення їх можливостей шляхом додавання параметрів командного рядка. Як результат, утиліти GNU регулярно були потужнішими, ніж інструменти, з яких вони черпали своє первісне натхнення.

В той момент, GNU ще відсутній один з найважливіших компонентів: лист на ядро операційної системи , яка дозволила б все разом працювати над фактичною комп'ютер не працює якийсь - або інший ОС. У 1991 році Лінус Торвальдс почав працювати над іграшковим проектом, який з часом став називатися Linux. Це, в основному, шкільний проект, щоб дізнатися про новий 32-розрядний процесор Intel 80386 , і почався надзвичайно просто, але в кінцевому підсумку почав перетворюватися на фактично придатне ядро ​​операційної системи. Але у нього не було програмного забезпечення для користувачів; Linux самостійно не забезпечує оболонки, ніяких засобів запуску системи, що не стосуються ініціалізації ядра, жодного текстового редактора, графічного інтерфейсу, нічого. Ядро - як двигун автомобіля; важливо зробити корисну машину, але марну самостійно (для корисного автомобіля потрібні такі речі, як колеса, трансмісія, кермо, десь, щоб водій сидів, паливний бак чи інший запас енергії тощо). Ядро Linux в кінцевому підсумку поширювалося за загальною публічною ліцензією GNU, такою ж, як і програмне забезпечення GNU .

Тож люди почали спарювати двоє. Ви отримаєте схожу з Unix користувальницьку землю разом із ядром, заснованим на ідеях від Unix (включаючи близьку схожість на POSIX ), у комплекті з вихідним кодом, який ви могли зламати на скільки завгодно, і це нічого не коштувало . Особливо, перш ніж розповсюдження дистрибутивів Linux було потрібно трохи повозитися, щоб роботи працювали, але він був готовий, щоб бути дещо корисним для тих, хто готовий витратити на це деякий час.

У ці дні GNU надає власне ядро. Ви, напевно, не чули про нього, але це називається GNU Hurd . Але Херда не було навколо на початку 1990-х, коли Linux почав набирати тяги серед любителів та майстрів, тому саме комбінація ядра Linux та більшості користувачів GNU отримала найбільшу увагу серед розробників.

Крім того, в наші дні багато систем Unix встановлюють або дозволяють адміністратору легко встановлювати частини користувальницької GNU. Ви можете побачити такі речі, як GNU bash, колекція компіляторів GNU, бібліотека GNU C (ванільна або виправлена) тощо, в інакшій системі, яка не є GNU.

Щоб зробити ще гірше, деякі системи використовують ядро ​​Linux, але зовсім не користувачу GNU. Для широко використовуваного прикладу цього розглянемо ОС Android , яка в основному є ядром Linux у поєднанні з користувацькою землею користувачів.

Це важливо, оскільки воно значно розмиває межу між GNU, Linux та різними Unixes ( є лише один UNIX , але є багато Unixes та ще більше Unix-подібних ОС ). Коли ви питаєте про Linux, ви насправді дуже часто запитуєте про систему GNU / Linux. Але розглянемо Debian GNU / kFreeBSD , який працює з GNU-користувачем на вершині ядра FreeBSD, і зовсім не використовує Linux. Або, наприклад, Solaris, на який ви можете легко встановити різні пакети GNU, включаючи, наприклад, coreutils . Я думаю, що Mac OS X також постачається з частинами країни GNU. Або розглянемо вищезгаданий Android.

Зрештою, використовувана система GNU може запускати не-GNU-код, а не-GNU-система може запускати код GNU, але утиліти GNU не містять не-GNU-коду.


1
Востаннє я використовував FreeBSD (роки тому), він не використовував багато інструментів GNU, а власний набір - наприклад, BSD make замість make GNU.
reinierpost

5
@reinierpost OSX дуже схожий - звичайна установка містить в основному BSD версії речей, але GNU coreutils тощо їм легко доступні через MacPorts та інші. XCode використовує LLVM, але також gcc. Це складно :)
MattDMo

1
@reinierpost зробити не так вже й погано. C компілятор трохи більше залучений. Принаймні FreeBSD 8.0 використовує GCC як свій компілятор за замовчуванням ; конкретно версія 4.2.1. "Проблеми з ліцензуванням", які стосуються запобігання інтеграції новіших версій у базову систему, ймовірно, стосуються переходу з GPL2 + на GPL3 +, але я, схоже, не впевнений.
CVn

3
@ hunter2 Здається, це не було потрібно, грунтуючись на підрахунках голосів до цих пір. ;) Я також не мав наміру написати повну історію. Мінікс відігравав важливу роль як розробка та завантажувальна система Linux до того, як Linux став самостійним хостингом, але мало вплинув, наприклад, на стосунки між Linux, GNU та оригінальним UNIX, що більше відповідає принципам питання.
CVn

3
@ hunter2 Якби ми пішли цим маршрутом, то абсолютно вірно, що і UNIX, звичайно, не був першим. Але для того, щоб відповісти на питання, це здавалося досить хорошим наближенням. Відповідь на одне речення була б чимось на кшталт "в основному все UNIX, за винятком TeX і X, які ви знайдете в системі Linux, було переписано як частина GNU", але я думаю, що додатковий контекст додає значення, навіть якби відповідь зробила це значно довше, ніж абсолютно необхідно - і відповідь все ще далеко не охоплює кожну деталь.
CVn
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.