Відмінності між UNIX і Linux

Введення


Історія UNIX починається в 1969 р. Більшість сучасних UNIX-систем є комерційними версіями вихідних дистрибутивів UNIX. Solaris від Sun, HP-UX Hewlett-Packard, AIX від IBM є кращими представниками UNIX, які, крім того, мають свої власні унікальні елементи і свої власні фундаментальні рішення. Наприклад, Sun Solaris – це UNIX, але, крім того, вона містить багато інструментів і розширень, розроблених спеціально з розрахунку на робочі станції і сервери виробництва Sun.


Linux був розроблений у спробі створити безкоштовну альтернативу комерційним UNIX-середовищ. Його історія починається в 1991 або навіть у 1983 рр.., Коли був створений проект GNU, чиєю вихідної метою було надати безкоштовну альтернативу UNIX. Linux працює на набагато більшій кількості платформ, наприклад на Intel / AMD x86. Більшість ОС UNIX здатні працювати тільки на одній платформі.


У Linux і UNIX загальні історичні корені, але є й серйозні відмінності. Багато інструментів, утиліт, і безкоштовних додатків, які є стандартними для Linux, спочатку задумувалися як безкоштовна альтернатива програмами для UNIX. Linux часто надає підтримку безлічі опцій і додатків, запозичуючи кращу або найбільш популярну функціональність з UNIX.


Адміністратор або розробник, який звик працювати з Linux, система UNIX може здатися не дуже зручною для використання. З іншого боку, фундамент UNIX-подібної операційної системи (інструменти, файлова система, інтерфейси API) досить стандартизований. Проте деякі деталі систем можуть мати суттєві відмінності. Далі в статті будуть розглянуті ці відмінності.


Технічні відмінності


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


Розробка GNU / Linux, з іншого боку, не орієнтована на конкретні платформи та коло клієнтів і розробники GNU / Linux мають різні досвід і погляди. У Linux-співтоваристві не існує суворого стандартного набору інструментів або середовищ. Для вирішення цієї проблеми був запущений проект Linux Standards Base (LSB), але він виявився не настільки результативним, як хотілося б.


Ця недостатня стандартизованность призводить до значних неузгодженостями всередині Linux. Для деяких розробників можливість використовувати найкращі досягнення інших операційних систем є плюсом, проте не завжди зручно копіювання в Linux елементів UNIX, наприклад, коли імена пристроїв усередині Linux можуть бути взяті з AIX, тоді як інструменти для роботи з файловою системою орієнтовані на HP-UX. Несумісність такого роду зустрічаються також між різними дистрибутивами Linux. Наприклад, Gentoo і RedHat реалізують різні методи оновлень.


Для порівняння – кожен новий реліз UNIX-системи виходить з добре документованим описом нових особливостей і змін UNIX. Команди, інструменти та інші елементи рідко змінюються, і часто ті ж аргументи командного рядка для додатків залишаються незмінними протягом багатьох версій цього програмного забезпечення. Коли ж відбуваються значні зміни в цих елементах, постачальники комерційних UNIX-систем часто надають оболонку, необхідну для забезпечення сумісності з попередніми версіями цього інструменту.


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


Архітектура апаратного забезпечення


Більшість комерційних версій UNIX створені для одного або невеликої кількості архітектур апаратного забезпечення. HP-UX працює тільки на платформах PA-RISC і Itanium, Solaris – на SPARC і x86, а AIX призначений тільки для процесорів POWER.


Завдяки цим обмеженням, UNIX-виробники можуть відносно вільно модифікувати свій код для цих архітектур і використовувати будь-яку перевагу своєї архітектури. Оскільки вони чудово знають підтримувані ними пристрою, то їх драйвери працюють краще, і їм не потрібно враховувати обмеження BIOS, характерні для ПК.


Linux, з іншого боку, історично розроблявся для забезпечення максимальної сумісності. Linux доступний на різних архітектурах, а число пристроїв введення / виводу і іншої периферії, яка може використовуватися з цією ОС, майже безмежно. Розробники не можуть заздалегідь знати, яке конкретне обладнання буде встановлено в комп'ютері, і часто не можуть забезпечити його ефективне використання. Одним з прикладів є управління пам'яттю на Linux. Раніше Linux використовував сегментну модель пам'яті, спочатку розроблену для x86. Зараз він адаптований для використання сторінкової пам'яті, але все ще зберігає деякі вимоги до сегментної пам'яті, що викликає проблеми, якщо архітектура не підтримує сегментовану пам'ять. Це не є проблемою для UNIX-виробників. Вони точно знають, на якому обладнанні буде працювати їх UNIX.


Ядро


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


Постачальники комерційних UNIX-дистрибутивів випускають ядра тільки у вигляді виконуваного коду. Деякі релізи є монолітними, тоді як інші дозволяють відновити тільки який-небудь конкретний модуль ядра. Але в будь-якому випадку цей реліз надається тільки у формі виконуваного коду. Якщо необхідно оновлення, адміністратор повинен чекати, поки виробник випустить патч в бінарному коді, проте його може втішити те, що виробник виконає ретельну перевірку свого патча на зворотну сумісність.


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


Підтримка файлової системи


Однією з причин, завдяки якій Linux став досить потужною ОС, є його широка сумісність з іншими операційними системами. Одна з найбільш очевидних особливостей – це достаток файлових систем, які є доступними. Більшість комерційних версій UNIX підтримують два або три типу файлової системи. Linux, однак, підтримує більшість із сучасних файлових систем. Таблиця 1 показує, які файлові системи підтримуються ОС UNIX. Будь-яку з цих файлових систем можна змонтувати на Linux, хоча не всі з цих систем підтримують у повному обсязі читання і запис даних.


Таблиця 1. Файлові системи, які є стандартними для UNIX














AIX jfs, gpfs
HP-UX hfs, vxfs
Solaris ufs, zfs
Irix xfs

Більшість комерційних версій UNIX підтримують журналіруемие файлові системи. Наприклад, HP-UX, як стандартної файлової системи використовує hfs, але він також підтримує журналіруемую файлову систему vxfs. Solaris підтримує ufs і zfs. Журналіруемая файлова система є важливим компонентом будь-серверного середовища для підприємства. У Linux підтримка журналіруемих файлових систем була реалізована пізно, але тепер є кілька варіантів – від клонів комерційних файлових систем (xfs, jfs) до специфічних для Linux файлових систем (ext3, reiserfs).


Інші особливості файлових систем включають в себе підтримку квот, список контролю доступу до файлів, дзеркальне копіювання, знімки системи і зміна розмірів. В тій чи іншій формі вони підтримуються файловими системами Linux. Більшість з цих особливостей не є стандартними для Linux. Одні особливості можуть працювати на одній файловій системі, тоді як інші зажадають інший файлової системи. Деякі з цих особливостей просто недоступні на певних файлових системах Linux, а інші вимагають додаткової установки інструментів, наприклад, певної версії LVM або підтримку дискових масивів (software raid package). Історично так склалося, що в Linux сумісність програмних інтерфейсів і стандартних інструментів досягається за працею, тому безліч файлових систем реалізують ці особливості по-різному.


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


Доступність додатків


Більшість базових додатків однакові як на UNIX, так і на Linux. Наприклад, команди cp, ls, vi і cc доступні на UNIX і Linux, і дуже схожі, якщо не повністю ідентичні. Linux-версії цих інструментів засновані на GNU-версіях цих інструментів, тоді як версії цих інструментів для UNIX засновані на традиційних UNIX-інструментах. Ці інструменти для UNIX мають тривалу історію і рідко змінювалися.


Але це зовсім не означає, що комерційні версії UNIX не можуть використовуватися з GNU-інструментами. Фактично багато виробників комерційних UNIX ОС включають у свої дистрибутиви багато GNU-інструментів або пропонують їх як безкоштовний додаток. GNU-інструменти не просто стандартні інструментальні засоби. Деякі з таких безкоштовних утиліт не мають комерційних аналогів (emacs або Perl). Більшість виробників встановлювати ці програми, і вони або автоматично встановлюються разом з системою, або доступні в якості додаткового компонента.


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


Комерційні та / або із закритим вихідним кодом програми (CAD, фінансові програми, графічні редактори) можуть не мати аналогів для Linux. Хоча деякі виробники випускають версії своїх додатків для Linux, більшість виробників не поспішає робити цього, поки популярність Linux у користувачів не зросте.


З іншого боку, комерційні версії UNIX історично мають підтримку великої кількості програм рівня підприємства, наприклад, Oracle або SAP. Linux сильно програє через труднощі сертифікації великих додатків, тоді як комерційні версії UNIX не змінюються сильно від релізу до релізу. Linux може сильно змінитися не тільки з кожним новим дистрибутивом, але іноді і в проміжку між релізами одного і того ж дистрибутиву. Тому постачальника програмного забезпечення дуже важко зрозуміти, в який саме середовищі буде використовуватися їх застосування.


Системне адміністрування


Хоча деякі дистрибутиви Linux поставляються зі стандартним набором інструментів для управління системою, наприклад, SUSE "s YaST, не існує загального для Linux стандарту інструментальних засобів системного адміністрування. Доступні текстові файли й інструменти командного рядка, але іноді їх застосування може бути незручним. Кожна комерційна версія UNIX має свій власний інтерфейс управління системою. За допомогою цього інтерфейсу можна керувати елементами системи і змінювати їх. Нижче наведено приклад Менеджера системного адміністрування [System Administration Manager (SAM)] для HP-UX.


Даний SAM містить наступні модулі:


Якість цього пакету утиліт чудово, причому цей пакет утиліт добре взаємодіє з текстовими файлами. Аналога цього інструменту для Linux не існує. Навіть YaST в SUSE не володіє такою ж функціональністю.

Ще один аспект у UNIX та Linux, який, здається, змінюється майже з кожною версією ОС – розташування сценаріїв ініціалізації системи. На щастя, / sbin / init і / etc / inittab є стандартними каталогами. Але сценарії запуску системи знаходяться в різних каталогах. Таблиця 2 показує місця, де зберігаються сценарії ініціалізації системи для різних дистрибутивів UNIX і Linux.


Таблиця 2. Розташування сценаріїв ініціалізації системи для різних версій UNIX


























HP-UX /sbin/init.d
AIX /etc/rc.d/init.d
Irix /etc/init.d
Solaris /etc/init.d
Redhat /etc/rc.d/init.d
SUSE /etc/rc.d/init.d
Debian /etc/init.d
Slackware /etc/rc.d

З-за великої кількості дистрибутивів Linux і майже нескінченного числа доступних додатків (з урахуванням того, що версій цього додатка теж багато) для цієї ОС, управління програмами на Linux стає складним завданням. Вибір правильного інструменту залежить від того, з яким дистрибутивом ви працюєте. Далі незручності виникають через те, що деякі дистрибутиви використовують формат файлів Redhat Package Manager (RPM), у той час як їхні програми несумісні. Такий поділ призводить до появи величезної кількості опцій роботи з пакетами, і не завжди зрозуміло, яка система використовується в конкретній середовищі.


З іншого боку, комерційні дистрибутиви UNIX містять стандартні менеджери пакетів. Навіть при тому що існують різні версії додатків і специфічні формати для різних версій UNIX, середа управління додатками незмінна. Наприклад, Solaris використовує одні й ті ж інструменти управління пакетами додатків з моменту свого створення. І швидше за все засоби ідентифікації, додавання або видалення пакетів програм в Solaris будуть всі також незмінними.


Виробники комерційних дистрибутивів UNIX поставляють й апаратне забезпечення, для роботи на якому призначена їх ОС, тому в своїх ОС вони можуть впроваджувати будь-які нові пристрої, що набагато важче зробити для Linux. Наприклад, в останніх версіях Linux були спроби реалізувати підтримку компонентів з можливістю їх "гарячої заміни" (із змінним успіхом). Комерційні версії UNIX мають таку можливість вже багато років. Також в комерційних версіях UNIX краще, ніж в Linux, реалізований моніторинг за апаратним забезпеченням. Виробники можуть написати драйвери та впровадити їх у свою операційну систему, яка буде вести моніторинг стану системи, наприклад, число помилок пам'яті ECC, параметри енергоспоживання або будь-якого іншого компонента апаратного забезпечення. Підтримка такого роду для Linux очікується тільки у віддаленому майбутньому.


Апаратне забезпечення для комерційних UNIX-систем також має більш просунуті опції завантаження. Перш ніж операційна система завантажиться, існує багато можливостей налаштувати її завантаження, перевірити "Здоров'я" системи або налаштувати параметри апаратного забезпечення. BIOS стандартного персонального комп'ютера PC має меншу частину, якщо взагалі має, цих опцій.


Підтримка


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


При покупці комерційної версії UNIX виробники зазвичай надають технічну підтримку. Більшість користувачів Linux позбавлене підтримки компанії-виробника ОС. Вони можуть отримати підтримку тільки за допомогою електронної пошти, з форумів і від різних спільнот користувачів Linux. Однак ці групи призначені не тільки для користувачів Linux. Багато адміністратори комерційних операційних систем сімейства UNIX беруть участь у цих відкритих групах підтримки для того щоб мати можливість як надавати допомогу, так і, при необхідності, користуватися нею. Багато людей знаходять такі групи взаємодопомоги навіть більш корисними, ніж система підтримки, пропонована виробником ОС.


Висновок


Фундаментальні основи UNIX і Linux дуже схожі. Користувачеві або системного адміністратора перехід з Linux на UNIX додасть в роботу деякі незручності, але загалом перехід виявиться безболісним. Навіть якщо файлові системи і ядра у них будуть відрізнятися і для їх освоєння потрібно якийсь час, інструменти та API залишаються незмінними. В основному ці відмінності істотні не більш ніж відмінності між основними версіями UNIX. Усі гілки UNIX і Linux поступово розвиваються і будуть незначно відрізнятися один від одного, але через зрілості концепцій UNIX основи ОС не зміняться дуже сильно.


Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*