O Linux
Ответов на вопрос "А что же такое Linux?" можно найти множество.
Очень многие считают, что Linux - это только ядро*. Но
одно только ядро бесполезно для пользователя. Хотя ядро, несомненно, основа
ОС* Linux, пользователю все время приходится работать с прикладными
программами. Эти программы не менее важны, чем ядро*.
Поэтому Linux - это совокупность ядра* и основных прикладных
программ, которые обычно бывают установлены на каждом компьютере с этой операционной
системой. Объединение ядра* и прикладных программ в единое
целое проявляется и в названии системы: GNU/Linux. GNU
- это проект по созданию комплекса программ, подобного тому, что обычно сопровождает
Unix-подобную систему.
GNU/Linux был сделан по образу и подобию Unix - целого класса
операционных систем, имеющих общий корень. Для любого человека, ранее пользовавшегося
другой Unix-подобной системой, Linux не покажется чем-то особенным. Но Unix
сильно отличается от Windows, MacOS и даже MS-DOS, при создании второй версии
которой разработчиками было очень много позаимствовано из Unix (например, древовидная
структура каталогов, перенаправление ввода-вывода и т.д.). Таким образом, все,
что говорится о Linux по большей части применимо к любому Unix-у.
Сторонникам Linux часто предъявляются претензии, что при разговоре
о преимуществах Linux они перечисляют недостатки Windows. Но зачастую это бывает
неизбежно, поскольку все познается в сравнении, а большинство пользователей
компьютеров сейчас знакомы только с Windows. Итак, что же дает Linux?
-
Командная строка.
В MS-DOS и Windows командная строка неудобна в использовании,
что внушает отвращение к ней пользователям, а язык командных файлов сравнительно
беден. В Unix пользовательский интерфейс* командной
строки приближен к совершенству, в комплекте с системой идет множество полезных
утилит, которые можно использовать с командной строки, а скрипты*
позволяют автоматизировать множество задач. Работа с командной строки намного
эффективнее, чем работа на мышке. Несомненно, нужно помнить команды*,
ключи* и другие параметры команд, но основные команды
очень быстро запоминается, а по другим можно заглянуть в справочник. Многим
пользователям на самом деле нужно всего несколько команд. А для тех пользователей,
которые не хотят или не могут запомнить команды, системный администратор
может настроить Linux так, чтобы для этих пользователей все нужные им программы
запускались автоматически. Работа в командной строке не сложнее графического
интерфейса Windows, просто она другая. Может быть она менее наглядна, но
профессионалам она позволяет работать намного более эффективно. Даже графический
интерфейс Unix - X Window System (Иксы) не предполагает отказа от командной
строки и никогда ей не противопоставлялся, как в Windows. Многие графические
приложения могут управляться с командной строки, сочетая преимущества обоих
методов.
Под Linux существуют и программы типа Norton-а - Midnight
Commander например.
Для некоторых приложений (например, для программы электронной
почты) графика не является обязательной и это снижает их требования к системе.
Командная строка повышает эффективность работы профессиональных
пользователей, но ее использование не является обязательным.
-
"Понятность" системы.
Linux кажется "черным ящиком" только поначалу. С опытом приходит
понимание системы. Профессионалам часто бывает достаточно одного взгляда
на ранее не встречавшуюся им проблему для того, чтобы успешно разрешить
ее. Это происходит от того, что известны принципы работы системы, ее "генеральная
линия". Можно ткнуть пальцем в любой файл в любом каталоге и, при желании,
узнать зачем он нужен и почему находится именно в этом каталоге. По крайней
мере, как правило, бывает сразу понятно к какой программе этот файл относится.
Это понимание дает возможность избавляться от ненужных файлов без боязни,
что это сделает систему или какое-либо приложение неработоспособным. Можно
оставить только необходимые для какого-то конкретного приложения файлы и
запускать Linux с одной дискеты или использовать эту систему во встраиваемых
приложениях.
Linux предоставляет развитые возможности для диагностики
проблем, такие как лог-файлы*, утилита strace*
и встроенные во многие программы средства отладки. Эти же средства позволяют
составить представление о том, как работает та или иная программа, даже
если нет желания или возможности изучать ее исходные тексты.
Систематизация файлов тоже помогает разбираться в файловой
системе. Например, все программы, которые предназначены для запуска пользователем
находятся в каталоге bin, все конфигурационные файлы в etc, а библиотеки
в lib.
Все настройки программ находятся в простых текстовых файлах,
которые можно редактировать любым текстовым редактором. Формат настроечных
файлов, как правило, описан в документации или в самом конфигурационном
файле при помощи комментариев. Почти всегда можно оставить свои комментарии
на заметку. Стандартный текстовый формат конфигурационных и системных файлов
упрощает процедуры резервного копирования и клонирования системы.
Linux снижает затраты на администрирование системы за
счет своей предсказуемости, развитых средств диагностики и конфигурации
при помощи текстовых файлов.
-
Открытость исходных текстов системы.
Linux создавался добровольцами, которые модифицировали систему
под свои нужды. Открытость исходных текстов - ключевой момент в этом процессе.
Лицензия GPL* позволяет не только просматривать исходные
тексты ядра* и всех программ, но и модифицировать
их, и даже распространять модифицированные версии. С такой лицензией исчезает
зависимость пользователей от разработчиков ПО. Если группа разработчиков
какого-либо проекта бросит разработку, то их дело может продолжить другая
заинтересованная группа. Кажется, что большинству пользователей исходники
системы и ни к чему, поскольку они не умеют программировать, но очень часто
немножко поправить программу можно и без этого. А для фирмы иногда бывает
удобно нанять программиста или сделать заказ другой фирме для того, чтобы
они дополнили используемые ими программы необходимыми возможностями. Это
наверняка обойдется дешевле, чем разрабатывать ПО с нуля. Также имеется
возможность выбора фирмы, предоставляющей поддержку. Когда она не нужна
(если, скажем, есть свои специалисты), то за нее можно не платить, а если
нужна - есть выбор среди нескольких конкурирующих фирм.
Лицензия Linux защищает интересы конечных пользователей,
а не производителя ПО. Часто именно лицензия являются решающим аргументом
в пользу Linux.
-
Бесплатность и легальность.
Конечно в России все программное обеспечение бесплатное,
но иногда легальность использования ПО имеет значение.
-
Удобство программирования.
Продуманный интерфейс* прикладных
программ с ядром и библиотеками играет очень важную роль при создании приложений.
Он ускоряет разработку приложений, уменьшает их размер при той же функциональности
и повышает качество. API* Linux совместим с POSIX
(Portable Operating System Interface) - стандартом для Unix-систем.
Это воплощение опыта развития Unix, многих лет работы. Он проверен временем
и используется во множестве систем. Этот интерфейс стабилен, он не изменится
неожиданно кардинальным образом. Программы написанные под Linux как правило
достаточно легко переносятся в любую среду, которая поддерживает POSIX.
Linux включает в себя компилятор C и C++, Perl. Все это поставляется
с исходниками. Linux в основном написан на языке С, который является одной
из самых удачных разработок за всю историю компьютерной отрасли. GNU C,
по мнению многих программистов, является одним из лучших среди компиляторов
C.
Если какая-то часть программы может быть полезна для других
программ, то ее стараются выделить в библиотеку. Множество таких библиотек
распространяются через Интернет под лицензией GPL*. Лицензия
позволяет программистам использовать код, написанный другими людьми.
Простота интерфейсов Linux ведет к улучшению качества
программного обеспечения и к снижению затрат на его создание.
-
Удаленное управление.
Linux имеет очень развитые средства удаленного управления.
Причем управлять машиной под управлением Linux можно с любой другой системы,
где есть программа эмулятор терминала (в отличие, например, от Windows NT).
Если машина подключена в Интернет, то управлять ей можно практически с любой
другой машины, также подключенной в Интернет, быстрое подключение не требуется.
Удаленное управление рабочими станциями сокращает затраты на администрирование
сети, поскольку системному администратору не нужно даже вставать со стула
для того, чтобы, например, поставить какое-либо программное обеспечение
на все рабочие станции с Linux. Графическая среда поддерживает отображение
графики на другой машине и даже запуск разных приложений с разных систем
с отображением их на одном экране. При этом приложения сохраняют возможность
взаимодействовать между собой (например, имеют общий буфер обмена).
-
Многопользовательская работа.
Unix (и Linux) был изначально ориентирован на то, что одним
компьютером могут пользоваться одновременно несколько человек. Но даже если
компьютером обычно пользуется только один человек, такой подход все равно
помогает разделить пользовательские настройки от системных, т.е. тех, которые
относятся ко всем пользователям и к системе в целом. Такое разделение положительно
сказывается на устойчивости и безопасности системы. Приложения изначально
пишутся с учетом того, что ими может пользоваться несколько пользователей
сразу и, как правило, не требуют прав записи в системные каталоги. Все настройки
они сохраняют в собственном, т.н. "домашнем" каталоге пользователя. Каждый
пользователь может настроить систему в соответствии со своими предпочтениями
и это не вызовет проблем у других пользователей. Обычно работа ведется под
пользователем, у которого нет прав испортить что-то за пределами своего
каталога, а настройка системы производится под суперпользователем по мере
необходимости. Многопользовательский режим позволяет производить настройку
системы не прерывая работы пользователей.
Работа в системе под пользователем с ограниченными правами
позволяет предотвратить повреждение системы при неаккуратных действиях пользователя,
а отсутствие доступа на запись к системным каталогам не приносит неудобств.
-
Стабильность.
Возможность обновления системных библиотек, загрузки и выгрузки
драйверов устройств, обновление практически любых программ на ходу позволяют
месяцами обходиться без перезагрузки системы, а следовательно и без прерывания
функционирования сервисов и работы пользователей. Перезагрузка Linux требуется
только в случае upgrade машины или обновления ядра*.
В Linux, как и во всем созданном людьми, иногда проявляются
ошибки, но они крайне редко приводят с серьезному сбою системы и, благодаря
доступности исходных текстов, довольно быстро исправляются. Это же относится
и к проблемам безопасности, которые часто исправляются в течение нескольких
часов после их обнаружения.
-
Гибкая файловая система.
Файловая система Linux предусматривает такие средства, как
точки монтирования*, символьные*
и жесткие ссылки*. Это позволяет эффективно распределять
место на диске и решать проблемы, когда какая-либо программа требует файл
в определенном каталоге, а он на самом деле в системе находится в другом
месте.
У Linux не могут быть одни только достоинства, есть и недостатки:
-
Система все еще слишком сложна для непрофессиональных пользователей.
Этот недостаток не может быть решен за счет создания средств конфигурирования
системы с графическим или web-интерфейсом, поскольку разработчики прикладных
программ в большинстве не заинтересованы в таких конфигураторах. А разработчики
этих средств конфигурирования не могут успеть за развитием других частей
системы. Добавление элементов управления в программу-конфигуратор обходится
несравнимо дороже, чем добавление пары строчек в текстовый файл. Создание
документации может только частично сгладить проблему, так как прочтение
очень большого объема документации отнимает много времени. Да и разработчики
свободного ПО не очень рвутся документировать свои программы. Их можно понять,
они ведь программисты, а не писатели технической документации. Возможно
создание простых в установке дистрибутивов с приемлемыми для большинства
пользователей настройками "по умолчанию", но на всех не угодишь. Убивать
мощь Linux ради простоты конфигурирования недопустимо!
-
Разработка драйверов * устройств для
Linux пока отстает от Windows. Она затрудняется тем, что драйверы *
под Linux пишутся самими пользователями оборудования, вместо фирм-производителей.
Поддерживаются только самые популярные устройства. Для написания драйвера
под Linux от производителей требуется открыть детали интерфейса с их оборудованием
(не внутреннего устройства!). Многие производители считают, что это может
привести к разглашению их ноу-хау и нанести ущерб их бизнесу. Разработка
бинарных (без исходных текстов) драйверов для Linux затруднена, поскольку
модули * ядра *, в виде которых
обычно распространяются драйверы *, не предназначены
для переносимости между разными версиями Linux, а новые версии выходят очень
часто.
-
Разработчики популярного коммерческого ПО пока не торопятся
портировать * свои приложения под Linux. Они ожидают
момента, когда Linux наберет "критическую массу", т.е. пока расходы на портирование
не станут меньше доходов от продажи продукта пользователям Linux. Но, в
то же время, многие пользователи не спешат переходить на Linux, поскольку
под ним нет привычного им программного обеспечения. Но во-первых Linux быстро
набирает "массу", а во-вторых в конце концов конкуренция на рынке ПО делает
свое дело: производители ПО опасаются, что пользователи могут, не дожидаясь
завершения портирования их продукта под Linux, перейти на продукт конкурирующей
фирмы.
-
Linux разрабатывается интернациональной командой и их языком
общения является английский. Вся документация также создается на этом языке.
Только небольшая часть этой документации переведена на русский язык, что
создает трудности для пользователей, не читающих по-английски. Система слишком
сложна, чтобы в ней можно было разобраться без документации, а найти что-то
на русском языке на тему бывает очень трудно.
-
Различия между дистрибутивами Linux создает трудности при
поддержке. Стандартизация необходима, но дистрибутивы различаются и будут
различаться программами установки, процедурами установки ПО. К тому же производители
ПО нередко тестируют свои продукты только на одном дистрибутиве Linux -
на самом распространенном. Дистрибутивы, конечно, все совместимы между собой
(это все Linux!), но иногда бывают трудности, связанные с тем, что различаются
версии библиотек, ядра *, процедура начальной загрузки,
а иногда даже пути к каким-либо ключевым файлам. Все эти проблемы решаемые,
но лучше бы их не было.
Есть еще некоторые недостатки, но они носят частный характер
и будут исправлены по мере развития системы. Я старался обратить внимание на
такие недостатки, которые не имеют решения в ближайшей перспективе.
Ядро (kernel)
- основной модуль операционной системы, который выполняет всю "организаторскую
работу". Ядро предоставляет прикладным программам стандартизованный интерфейс*
для доступа к оборудованию и файловой системе, защищает процессы*
друг от друга и, в то же время, обеспечивает их взаимодействие.
ОС (OS) - операционная
система.
Интерфейс (interface)
- набор правил или процедур для взаимодействия между программами или программами
и оборудованием.
Пользовательский интерфейс
- способ взаимодействия пользователя с программами.
Процесс (process)
- выполняющаяся программа.
Скрипт (script)
- программа на языке shell (интерпретатора команд). Скрипты состоят из команд*.
.bat-файлы в MS-DOS - это скрипты.
Команда (command)
- предписание системе произвести какое-то действие. Обычно предполагает запуск
программы и начинается с имени этой программы. Пример: cp a.txt b.txt.
Ключи (options)
- один из видов параметров команд. Обычно начинается с символа '-'. Пример:
-i.
Лог-файл (log file)
- файл, в который записывается диагностические сообщения от программ, предупреждения
и ошибки. Исследуя потом содержимое этого файла часто можно понять причины возникновения
проблемы.
strace -
утилита, которая позволяет отслеживать системные вызовы, которые делает программа
в процессе своей работы. strace показывает какие файлы открываются, какие сетевые
соединения устанавливаются и множество другой полезной в некоторых случаях информации.
GPL
(GNU General Public License) - лицензия, под которой распространяется
ядро* Linux и большинство прикладных программ. Основное
положение этой лицензии гласит о том, что программы должны распространятся вместе
с их исходными текстами и все пользователи имеют право эти исходники модифицировать.
API (Application Programming
Interface) - интерфейс* прикладных программ
с ядром* или библиотеками.
Драйвер (driver)
- часть ядра, отвечающая за интерфейс ядра и прикладных программ с каким-то
конкретным типом оборудования.
Модуль (module)
- часть ядра*, которую можно присоединять и отсоединять
от ядра (тем самым загружая/выгружая из памяти) когда она не требуется. Модули
позволяют экономить память и увеличить гибкость системы. Драйверы устройств
для Linux обычно распространяются в виде модулей.
Портировать (port)
- переделка программного обеспечения таким образом, чтобы оно могло работать
в другой операционной системе.
Точка монтирования
(mountpoint) - каталог в файловой системе, куда при помощи операции
монтирования (mount) подключается другая файловая система с другого раздела,
физического устройства или c другой машины в сети. Смонтированная файловая система
подключается к уже смонтированным так, что она отображается в точку монтирования
и выглядит как подкаталог.
Символьная ссылка
(symlink) - специальный тип объекта в файловой системе, хранящий
в себе имя другого объекта, на который он ссылается. Почти все операции с символьной
ссылкой будут на самом деле автоматически осуществляться с объектом, на который
она ссылается. Если этого объекта не существует, то ссылка будет выглядеть "сломанной".
Жесткая ссылка (hardlink)
- это представление одного и того же файла в разных каталогах или под разными
именами. Поскольку это один и тот же файл, все изменения будут отражается в
его жестких ссылках. Между жесткими ссылками нет различия между ссылкой и объектом,
на который она показывает, как у символьной ссылки* и
файл с диска не будет удален до тех пор, пока не него останется хотя бы одна
жесткая ссылка. Жесткие ссылки можно создавать только в пределах одной файловой
системы.
Андрей Лерман www.lug.yar.ru
|
|