Различия между 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 поставляются со стандартнымнабором инструментов для управления системой, например, SUSEs YaST, несуществует общего для Linux стандарта инструментальных средствсистемного администрирования. Доступны текстовые файлы и инструментыкомандной строки, но иногда их применение может быть неудобным. Каждаякоммерческая версия UNIX имеет свой собственный интерфейс управлениясистемой. С помощью этого интерфейса можно управлять элементами системыи изменять их. Ниже приведен пример Менеджера системногоадминистрирования [System Administration Manager (SAM)] для HP-UX.

Данный SAM содержит следующие модули:

  • Пользователи или группы, которыми надо управлять.
  • Параметры ядра, которые можно изменить.
  • Настройка сети.
  • Настройка и инициализация дисков.
  • Конфигурирование X server.

Качество этого пакета утилит великолепно, причем этот пакетутилит хорошо взаимодействует с текстовыми файлами. Аналога этогоинструмента для 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 основы ОС не изменятся очень сильно.