История 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 AIXjfs, gpfs HP-UXhfs, vxfs Solarisufs, zfs Irixxfs
Большинство
коммерческих версий 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 содержит следующие модули: Пользователи или группы, которыми надо
управлять. Параметры ядра, которые можно изменить. Настройка сети.
Настройка и инициализация дисков. Конфигурирование 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 основы ОС не изменятся очень сильно.
|