Яка різниця між Linux та Unix?

Linux запозичив ідеї у Unix, однак Linux не є Unix, хоча їхня схожість є очевидною. Розглянемо ключові відмінності між цими двома відомими операційними системами.

Чи однакові вони?

Linux — це безкоштовна операційна система з відкритим вихідним кодом. Unix, з іншого боку, є комерційним продуктом, який пропонується різними постачальниками, кожен з яких має свою версію, часто адаптовану до власного обладнання. Він є дорогим і має закритий вихідний код. Але чи виконують Linux та Unix, по суті, одні й ті ж завдання? Більш-менш, так і є.

Проте, нюанси є складнішими. Існують відмінності, що виходять за рамки технічних та архітектурних аспектів. Щоб зрозуміти фактори, які вплинули на формування Unix та Linux, важливо зануритися в їхню історію.

Витоки Unix

Unix існує вже понад 50 років. Її розробили в Digital Equipment Corporation (DEC) на мові асемблера для DEC PDP/7 як неофіційний проєкт в Bell Labs, що належала AT&T. Згодом її перенесли на комп’ютер DEC PDP/11/20, а потім вона поступово поширилася на інші комп’ютери Bell. Переписання на мову програмування C призвело до появи версії 4 Unix у 1973 році. Це стало важливим проривом, оскільки характеристики мови C і компілятора дозволили порівняно легко переносити Unix на нові комп’ютерні архітектури.

У 1973 році Кен Томпсон і Денніс Річі представили доповідь про Unix на конференції. В результаті, Bell засипали запитами на копії Unix. Оскільки продаж операційних систем не входив до дозволеної сфери діяльності AT&T, вони не могли розглядати Unix як комерційний продукт. Це призвело до того, що Unix почали розповсюджувати як вихідний код за ліцензією. Номінальна плата покривала витрати на доставку та пакування, а також «розумний гонорар». Unix постачався «як є», без технічної підтримки та виправлень помилок. Але користувачі отримували доступ до вихідного коду, що дозволяло їм вносити зміни.

Unix швидко набув популярності в академічних колах. У 1975 році Кен Томпсон провів відпустку від Bell в Каліфорнійському університеті, Берклі. Разом зі студентами-аспірантами він почав додавати нові можливості та покращувати їхню локальну копію Unix. Зростаючий інтерес до доповнень, розроблених у Берклі, призвів до першого випуску Berkeley Software Distribution (BSD). Це був набір програм і системних модифікацій, які можна було інтегрувати в існуючу систему Unix, але він не був окремою операційною системою. Наступні версії BSD стали цілісними системами Unix.

З’явилося два основних відгалуження Unix: лінія AT&T і лінія BSD. Всі інші варіанти Unix, такі як AIX, HP-UX та Oracle Solaris, є нащадками цих ліній. У 1984 році деякі обмеження для AT&T були зняті, що дозволило їм виробляти та продавати Unix.

З цього моменту Unix став комерційним продуктом.

Зародження Linux

Вважаючи комерціалізацію Unix подальшим обмеженням свобод користувачів комп’ютерів, Річард Столман вирішив створити операційну систему, засновану на свободі. Це передбачало свободу змінювати вихідний код, розповсюджувати модифіковані версії програмного забезпечення та використовувати його будь-яким способом, який користувач вважає за потрібне.

Нова операційна система повинна була повторювати функціональність Unix, не використовуючи жодного вихідного коду Unix. Столман назвав свою систему GNU та заснував Проєкт GNU у 1983 році для розробки цієї операційної системи. У 1985 році він заснував Фонд вільного програмного забезпечення для просування, фінансування та підтримки проєкту GNU.

У розробці GNU досягли значних успіхів у всіх областях операційної системи, крім ядра. Розробники проєкту працювали над мікроядром під назвою GNU Hurd, але прогрес був повільним. (Сьогодні проєкт все ще перебуває в розробці та наближається до випуску). Без ядра створення повноцінної операційної системи було неможливим.

У 1987 році Ендрю С. Таненбаум випустив операційну систему під назвою MINIX (mini-Unix) як навчальний посібник для студентів, які вивчали дизайн операційних систем. MINIX була функціональною операційною системою, схожою на Unix, але мала певні обмеження, особливо у файловій системі. Вихідний код повинен був бути достатньо малим, щоб його можна було вивчити протягом одного семестру. Частиною функціональності довелося пожертвувати.

Щоб глибше зрозуміти внутрішню роботу процесора Intel 80386 у своєму новому ПК, студент-інформатик Лінус Торвальдс написав простий код для перемикання завдань як навчальну вправу. Згодом цей код став прототипом ядра, що перетворилося на перше ядро Linux. Торвальдс був знайомий з MINIX. Фактично, його перше ядро було розроблено на MINIX з використанням компілятора GCC Річарда Столмана.

Торвальдс вирішив створити власну операційну систему, яка усунула б обмеження MINIX, розробленої для навчальних цілей. У 1991 році він зробив своє відоме оголошення в групі Usenet MINIX, запрошуючи відгуки та пропозиції щодо свого проєкту.

Linux насправді не є клоном Unix. Якби Linux був клоном Unix, він був би Unix. Linux лише схожий на Unix. Слово «клон» означає, що невелика частина оригіналу культивується для створення нової копії. Linux був розроблений з нуля, щоб мати вигляд Unix і задовольняти ті ж самі потреби. Це більше реплікант, ніж клон.

У будь-якому випадку, Linux став ядром, що шукало операційну систему, а GNU була операційною системою, що шукала ядро. Озираючись назад, те, що сталося потім, здається неминучим. І це змінило світ.

Хто займається розробкою?

Дистрибутив Linux — це результат об’єднання багатьох різних частин, розроблених у різних місцях. Ядро Linux, набір основних утиліт GNU та програми для користувача об’єднуються, щоб створити повноцінний дистрибутив. Хтось повинен здійснювати це об’єднання, підтримку та управління — так само, як хтось повинен розробляти ядро, програми та основні утиліти. Супроводжувачі дистрибутивів і спільноти кожного дистрибутива відіграють свою роль у створенні дистрибутива Linux, так само як і розробники ядра.

Linux є результатом розподілених спільних зусиль, які здійснюються неоплачуваними волонтерами, організаціями, такими як Canonical і Red Hat, а також окремими особами, спонсорованими індустрією.

Кожна комерційна версія Unix розробляється як єдине ціле з використанням внутрішніх або жорстко контрольованих зовнішніх ресурсів. Часто вони мають унікальне ядро та розроблені спеціально для апаратних платформ, що пропонуються кожним постачальником.

Безкоштовні та відкриті похідні від лінії BSD Unix, такі як FreeBSD, OpenBSD та DragonBSD, використовують комбінацію старого коду BSD та нового коду. Зараз це проєкти, які підтримуються спільнотами та керуються так само, як дистрибутиви Linux.

Стандарти та відповідність

В цілому, Linux не є повністю сумісним з Single Unix Specification (SUS), а також не є повністю відповідним стандарту POSIX. Він прагне відповідати обом стандартам, не стаючи їхнім рабом. Існували один або два винятки, наприклад, Inspur K-UX, китайський Linux, що відповідає стандарту POSIX.

Справжні Unix, такі як комерційні пропозиції, відповідають цим стандартам. Деякі похідні від BSD, включаючи всі версії macOS, крім однієї, відповідають стандарту POSIX. Такі назви варіантів, як AIX, HP-UX та Solaris, є торговими марками відповідних організацій.

Торгові марки та авторське право

Linux є зареєстрованою торговою маркою Лінуса Торвальдса. Linux Foundation керує торговою маркою від його імені. Ядро Linux та основні утиліти розповсюджуються під різними «копілефт» GNU General Public Licenses. Вихідний код є у вільному доступі.

Unix є зареєстрованою торговою маркою Open Group. Він захищений авторським правом, є власністю та має закритий вихідний код.

FreeBSD захищено авторським правом FreeBSD Project, вихідний код є доступним.

Відмінності у використанні

З точки зору користувацького досвіду, у командному рядку немає значних візуальних відмінностей. Завдяки стандартам POSIX і відповідності їм, програмне забезпечення, написане для Unix, можна скомпілювати для операційної системи Linux з мінімальними зусиллями для перенесення. Наприклад, у багатьох випадках скрипти оболонки можна використовувати в Linux без змін.

Деякі утиліти командного рядка мають дещо інші параметри, але в основному той самий набір інструментів доступний на обох платформах. Наприклад, IBM AIX має AIX Toolbox для Linux-додатків. Це дозволяє системному адміністратору встановлювати сотні пакетів GNU (наприклад, Bash, GCC тощо).

Різні версії Unix відрізняються графічними інтерфейсами користувача (GUI), як і Linux. Користувачу Linux, знайомому з GNOME або MATE, доведеться звикати до KDE або Xfce, але він швидко освоїться. Подібна ситуація з різними графічними інтерфейсами, доступними в Unix, такими як Motif, Common Desktop Environment та X Window System. Всі вони досить схожі, щоб будь-хто, хто знайомий з концепціями віконного середовища з діалоговими вікнами, меню та іконками, міг легко їх використовувати.

Більше відмінностей стає очевидним під час адміністрування систем. Наприклад, існують різні механізми ініціалізації. Похідні від System V Unix та лінії BSD мають різні системи ініціалізації. Вільні версії BSD підтримують схеми ініціалізації BSD. У дистрибутивах Linux за замовчуванням використовується система ініціалізації, похідна від Unix System V, або systemd.

Механіка проти автоматики

Якщо ви вмієте керувати одним, ви зможете керувати й іншим, хоча й з певними зупинками та стартами.

Якщо абстрагуватися від ціни, то відмінності у філософії, ліцензуванні, моделі розробки, організації спільноти, а також у типі та стилі управління є більш значущими, ніж відмінності в параметрах командного рядка між різними версіями, скажімо, grep.

Найбільші відмінності – це не ті, які ви бачите на екрані.