Сага о POSIX-системах
(C) Алексей Федорчук, 2004

Содержание|Вперед

Преамбула

Здесь будет собрано все, что я знаю про Linux, FreeBSD и отчасти про другие системы, задумчиво именуемые Unix-подобными. Называют их также POSIX-совместимыми - и со временем я попытаюсь показать, почему второй термин является предпочтительным. Данное сочинение создается с целью популяризации и даже, не побоюсь этого слова, пропаганды POSIX-систем среди широких кругов компьютерной, околокомпьютерной и некомпьютерной общественности. Особое внимание к своему скорбному труду я хотел бы привлечь со стороны научных сотрудников постсоветского пространства, и в первую очередь - коллег-геологов.

Содержание

Зачем эта книга

Казалось бы, о Unix, Linux и BSD сотоварищи за последние годы написано множество книг, статей, сетевых материалов - нужно ли еще одно сочинение на заданную тему? Думается, что нужно, и по нескольким причинам.

Первая причина - в том, что явление Open Sources (то есть разработка программ с открытыми исходными текстами) вообще и любые его частные проявления (а Linux и BSD-системы таковыми являются) столь многогранно, что каждый автор, обращающийся к этой тематике, привносит в нее что-то новое (надеюсь, что ваш покорный слуга в своих писаниях не был исключением).

Вторая причина - Linux, BSD и прочие родственные им системы живут и развиваются, и написанное о них даже год назад могло если не устареть (срок полной моральной амортизации свободных программ много превосходит таковой для большинства программ проприетарных), то в некоторой степени потерять актуальность. И в любом случае будет требовать уточнений, дополнений, корректив, отражающих реальности текущего момента.

Третья причина - в том, что Linux-бум конца ушедшего тысячелетия в определенной мере оставил в тени других представителей семейства открытых POSIX-систем. В результате понятие Open Sources прочно контаминировалось с ОС Linux, а последняя - с такими вещами, изначально к Linux'у никакого отношения не имевшими, как оконная система X.

Четвертая, и, с моей субъективной точки, главная причина вытекает из третьей. И она такова: подавляющее большинство известных мне толстых книг, затрагивающих указанную тематику (не говоря уже о статьях и заметках, посвященных частным вопросам) опираются, явно или не явно, на опыт работы авторов с каким-либо конкретным дистрибутивом Linux или с одним из иных представителей Unix-клана. Попыток рассмотрения свободных POSIX-систем как целостности, без оглядки на конкретные реализации, весьма мало.

В настоящем сочинении я пытался максимально абстрагироваться от конкретных реализаций, воплощенных в том или ином дистрибутиве Linux или какой-либо BSD-системе. И потому в книге речь пойдет, в первую очередь, о том, что их всех объединяет. А в очередь вторую я хотел бы поговорить о тех аспектах, которые собственно и определяют своеобразие каждого POSIX-представителя как операционной системы.

Например, понятие Linux не сводится к тем наборам системных компонентов, утилит и приложений, распространяемых майнтайнерами под именем того ли иного дистрибутива, и не исчерпывается ими. Linux в современном его виде - именно системная целостность, что я и постараюсь продемонстрировать в ближайших главах.

Системная целостность Linux особенно наглядно, как ни странно, проявляется в сравнении с операционками BSD-клана. И потому они (вернее, один из их представителей, FreeBSD, с которой я более или менее знаком) будут постоянным фоном этого сочинения, выступая в качестве эталона самодостаточной операционной системы.

Книга основана на уже более чем пятилетнем практическом использовании свободных ОС семейства Unix - в первую очередь FreeBSD и пары-тройки дистрибутивов Linux, а также ознакомлении (разной степени поверхностности) со всеми прочими представителями BSD-клана и с полутора десятками представителей необъятного мира Linux-дистрибутивов.

Должен подчеркнуть, что по жизни я являюсь "чистым" пользователем, не имеющим опыта администрирования или разработки (и не обнаруживаю ни малейшего желания таковой приобретать). А потому и говорить буду только о том, что, по моему скромному мнению, необходимо знать пользователю, а также - о том, что ему может быть полезно или должно быть небезынтересно.

Большая часть обсуждаемых здесь вопросов в той или иной мере затрагивалась в моих прежних "бумажных" и онлайновых публикациях. Однако жизнь не стоит на месте, меняются системы, и мы меняемся с ними, как сказали бы древнеримские греки. И потому я сконцентрируюсь на тех аспектах, которые либо не были в силу различных причин (главная из которых - недостаточное тогда понимание) мной затронуты раньше, либо представления о которых сильно изменились, либо, наконец, на явлениях новых или существенно обновленных.

За последние годы Linux, исторически использовавшийся преимущественно в сфере разработки программного обеспечения и сетевых решениях, все более утверждается в роли операционной системы универсального, в том числе и так называемого домашнего, назначения. BSD-системы в этом ключе почти никогда не рассматриваются. Однако именно с позиций пользователя разницы между ними почти нет. По крайней мере, если говорить о FreeBSD, то она пригодна к настольному/домашнему применению ничуть не меньше, нежели Linux. И это я тоже попытаюсь продемонстрировать в данном сочинении.

Это сочинение ориентировано по большей части на пользователей, обладающих некоторым минимумом начальной подготовки (хотя и не обязательно имеющим опыт работы в Unix-подобных системах). Или, по крайней мере, желанием оную приобрести - возможно, в процессе чтения именно этой книги:-).

Начинающий пользователь POSIX-систем, как правило, обращается Linux. Причем именно к тем его разновидностям (т.е. дистрибутивам - без этого понятия никуда не денешься), которые обеспечивают ему наиболее комфортные условия миграции с системы, использовавшейся ранее (рискну предположить, что системой этой, в силу исторических причин, была та или иная версия Windows). Такие дистрибутивы, именуемые user-ориентированными (или user friendly), как правило, обладают красивыми и удобными графическими инсталляторами, развитыми средствами универсального конфигурирования системы, богатым наборами утилит для управления программными пакетами, и так далее. И потому их использование на первых порах помогает сломать психологический барьер между объектными интерфейсами и аскетичным на вид исконно Unix-инструментарием.

Однако довольно быстро к пользователю приходит понимание того, что Unix - это не Windows, а Windows - это не Unix. И эффективное использование любого представителя последнего семейства достигается совсем другими способами - на первый взгляд непривычными, но чрезвычайно мощными и, главное, универсальными. Однако user-ориентированные дистрибутивы, как правило, отнюдь не подталкивают пользователя к их изучению. Ибо графические инсталляторы и конфигураторы, облегчая, казалось бы, ему жизнь, затеняют при этом внутреннюю сущность явлений.

К тому же все эти средства установки, настройки и пакетного менеджмента в подавляющем большинстве дистрибутив-специфичны и подчас заимствуют из Windows дурную привычку существенно меняться от версии к версии. Навыки работы с таким инструментарием, приобретенные в одном Linux-дистрибутиве, окажутся мало полезны в другом (и тем более в какой-либо BSD-системе). В результате изначальная универсальность Unix-систем в значительной мере утрачивается. Ибо один из факторов, определивших популярность Unix - это практически полная неизменность приемов работы во времени - вот уже на протяжении более чем тридцати лет (это не значит, однако, что сами эти средства не совершенствовались) и их независимость от конкретной реализации системы. В итоге пользователь, освоивший традиционный Unix-инструментарий в рамках любой разновидности Linux, будет столь же свободно чувствовать себя не только в ином дистрибутиве этой ОС, но и в любой BSD-системе или каком-либо проприетарном представителе Unix-семейства.

Древние греки считали наиболее неприспособленными к жизни людей, не умеющих читать и плавать. Нравится это или нет, но компьютеры вошли в нашу жизнь прочно и бесповоротно. Так что теперь к списку необходимых умений следует прибавить навыки работы с компьютерами. А потому очень остро встает проблема компьютерного образования. Причем от решения эта проблема далека - нельзя же в самом деле рассматривать в качестве основ компьютерной грамотности минимальное натаскивание для работы в Windows и конкретной версии Word. Причем - именно натаскивание на уровне нескольких готовых рецептов: мне рассказывали страшную историю про то,как школьная учительница по информатике поставила ученику "двойку" за то, что он вышел из Windows через Alt+F4 (следовало - обязательно через меню Пуск и Выход).

И в сфере образования роль свободных Unix-клонов трудно переоценить. Причем - не только для тех, кто собирается выбрать специальность, хоть как-то связанную с компьютерами. Традиционные методы работы в Unix могут использовать представители любых профессий, именовавшихся при советской власти "творческими". Причем - подчас более эффективно, чем стандартные офисные приложения. Не нужно только впадать в другую крайность и объявлять Linux или, тем более, BSD, средством решения любых задач. Unix создавался для работы с текстами (любого рода) и обеспечения коммуникаций, и именно в этом он проявляет свою силу. Однако - разве не для работы с текстами и обеспечения коммуникаций использует компьютер подавляющее большинство людей в своей профессиональной деятельности?

О чем эта книга

Так что эта книга, помимо чистой познавательности, замахивается еще и на цели общего компьютерного образования. И ее сюжет подчинен логике знакомства пользователя с новой ОС - так, как этот процесс должен был бы проходить в идеальных условиях, скорректированных принудительной силой реальности.

А знакомство пользователя с любой POSIX-системой начинается с ее установки. Конечно, по меткому замечанию Виктора Вагнера (Как стать квалифицированным пользователем), это примерно то же самое, что начинать обучение вождению автомобиля с регулировки клапанов или переборки коробки передач. С точки зрения затрат сил и времени хорошо было бы учиться работать на системе установленной и настроенной специалистом. Однако такова объективная реальность - за редчайшим исключением начинающий пользователь Linux или FreeBSD вынужден для начала сам установить и настроить систему. Что, конечно, требуетзнаний и умений. Да вот только приобрести их он может, предварительно получивсистему в свое распоряжение - то есть установив ее и хоть как-то настроив. Эта "уловка 22 от Linux", по выражению Владимира Попова (Init...etc.), и составляет одно из главных препятствий для широкого распространения этой ОС (как и другихUnix-подобных систем),

Однако, с другой стороны, прорвавшись тем или иным образом (с помощью чтения руководств ли, или посредством user-ориентированного дистрибутива, руководствуясь ли советами знакомого или задавая вопросы в многочисленных форумах), пользователь приобретает незаменимый ничем объем знаний и навыков. И вспомним другую аналогию: обучение верховой езде (по крайней мере, в школах, заслуживающих этого названия, - да и в реальной жизни тоже) начинается именно с обучения чистке, седловке, взнуздыванию (хотя ковать лошадей новичка, пожалуй, заставлять сразу не будут).

Так вот, эта книга и призвана облегчить пользователю понимание процесса установки и настройки произвольной POSIX-системы, а также ее последующего использования. Однако сначала я не могу не остановиться на таком явлении, как программы с открытыми исходными текстами вообще (Open Sources), поскольку речь здесь будет идти исключительно об открытых и свободных представителях POSIX-семейства. Затем вас ожидает обещанное обоснование того, что Linux - это именно операционная система. а не что-либо другое. А заодно - рассмотрение вопроса, как собственно Linux соотносится с конкретными его реализациями, воплощенными в т.н. дистрибутивах. Ну и вопрос о соотношении Linux и свободных BSD-систем не будет обойден молчанием.

Дальнейшее изучение любого свободного Unix-клона, как уже было сказано, вынужденно происходит одновременно с установкой и настройкой этой системы. Этой логики я и постараюсь придерживаться в своем изложении. Однако здесь не будет описаний, работы инсталляторов и конфигураторов того или иного конкретного дистрибутива Linux или BSD. Вместо этого я постараюсь рассказать о внутренней сущности действий при установке любой POSIX-системы, о том, что обычно в user-ориентированных дистрибутивах Linux (а ведь именно с них, скорее всего, и начнет свое знакомство начинающий пользователь) остается за кадром графического интерфейса.

Для кого эта книга

Я адресую эту книгу самым широким народным массам. Основу которых, конечно, составят достаточно опытные компьютерные пользователи, не имеющие навыков работы в Unix-системах (но имеющие таковые - в некоторых других системах, которые не будем называть вслух). Те из них, кому стало тесно в "подоконном" мире, и кто в целях повышения эффективности своей работы (или просто движимый любопытством) хотел бы ознакомиться с миром POSIX-систем. А там, глядишь, и приобщиться к нему.

И потому вторая адресная категория читателей - уже приобщившиеся, но начинающие пользователи Linux или BSD, только приобретающие навыки работы в POSIX-системах. Я надеюсь, что мое сочинение поможет сократить для них срок адаптации и осознать тот факт, что Unix - это не Windows, и Windows - это не Unix.

В то же время я не теряю надежды, что к этому сочинению обратятся и совсем начинающие пользователи компьютера вообще, не затронутые еще тлетворным воздействием Windows. И мечта эта не столь уж утопична, как может показаться - ведь учится новому "с нуля" всегда легче, нежели переучиваться. Для чего достаточно иметь только толику любопытства и склонность к поиску и усвоению новой информации.

Наконец, я не исключаю вероятности, что эту книгу будут читать и, так сказать, действующие пользователи POSIX-систем, вне зависимости от сферы приложения их сил. Мне доводилось сталкиваться (и реально, и виртуально) с квалифицированными разработчиками или системными администраторами, имеющими, как ни странно, весьма неопределенное представление о пользовательских аспектах применяемых ими систем. Более того, многие из них просто искренне убеждены, что Linux или BSD народу (то бишь пользователям) - не нужны. Смею верить, что мое сочинение заронит сомнение в правоте их позиции.

И еще: я не хотел бы, чтобы все сказанное на этих страницах воспринималось как некое поучение гуру. Заявляю определенно: гуру (каковой термин я вообще отношу к категории ненормативной лексики - как и термин ученый) не являюсь и быть им не стремлюсь. Все написанное мной - написано для собственного удовольствия и на основании собственного опыта, полученного в ходе жизнедеятельности обычного пользователя.

В любом случае, я надеюсь, что эта книга покажется вам полезной по содержанию и, в первую очередь, интересной по форме. Однако ни того, ни другого гарантировать не могу и не хочу - вы тратите на нее трафик или время исключительно под свою ответственность.

Почему она такая

Для начала - почему для этой книги была выбрана онлайновая, а не традиционно бумажная форма? Ответ не сложен, и связан с одним из фундаментальных понятий Unix - рекурсией. В собственном смысле слова это - специальный программистский термин, и означает он определение функции через саму себя (что такое функция - надеюсь, станет понятным ближе к середине книги).

Однако в Unix-сообществе понятие рекурсии широко применяется в бытовом, так сказать, смысле. Известным чему примером является акроним проекта GNU - GNU is Not Unix.

Так вот, весь процесс изучения POSIX-систем пронизан рекурсией. Возьмем для примера три фундаментальных понятия мира Unix - понятие файла, процесса и пользователя, о которых будет говориться в части второй. Отношения между ними неизбежно определяются друг через друга: каждый файл принадлежит какому-либо пользователю в силу того, что он (файл) порожден процессом, запущенным этим пользователем (на самом деле все еще сложнее, но это пока не важно).

То есть: чтобы понять, что такое файл и его атрибуты, нужно предварительно разобраться в том, что такое процесс и атрибуты оного. Что, в свою очередь, невозможно без представления об атрибутах файла, исполняющего процесс, и атрибутах пользователя, запускающего этот процесс на исполнение. А если вспомнить, что для получения информации о файлах, процессах и пользователях необходимо использовать команды, каковые и сами представляют собой файлы с определенными атрибутами, и файлы же, атрибуты которых также существенны, используют в качестве своих аргументов, то становится ясным: пользователь, начинающий изучение POSIX-систем, сталкивается не с чем иным, как с рекурсией. Что в простонаречии именуется сказкой про белого бычка, а по научному - проблемой яйца и курицы. Ведь для того, чтобы осознать базовые понятия Unix, необходимо обладать навыками работы с командами, а чтобы понять, как используются команды, требуется знание базовых понятий.

Именно в такой рекурсивной связи и кроется, на мой взгляд, основная сложность изучения POSIX-систем для начинающего пользователя, и трудность написания книг, этому пользователю адресованных, - для авторов. И в рамках традиционных бумажных публикаций противоречие это неразрешимо. Ведь бумажная книга по определению - линейна, и читается, как правило, с начала и до конца (по крайней мере, авторам так хотелось бы). И как, при линейной структуре, прикажете обращаться с рекурсивным определением понятий? Отсылать (так и хочется сказать - посылать) читателя к еще непрочитанным главам, возможно, через многие сотни страниц? Этак он быстро мозоли на пальцах натрет - от листания...

В то же время эта трудность легко обходится при онлайновой публикации. Ведь в случае использования HTML (не говоря уже о SGML или XML) все рекурсивно определяемые понятия без труда можно связать между собой перекрестными ссылками, в результате чего читатель может переходить от разделов, описывающего базовые понятия, к разделам, посвященным принципам командного интерфейса, и обратно.

Поэтому я, после долгих размышлений, и отказался от создания очередной бумажной книги, решив ограничиться (по крайней мере, пока) чисто онлайновым вариантом. Дополнительное преимущество которого - возможность оперативного исправления неясностей и неточностей в описании, не говоря уже о неизбежных прямых ошибках. Обнаруживаемых как автором (а перечитывая свои сочинения, я всегда нахожу такие недоработки - почему и не люблю это делать:-)), так и его читателями.

Таким образом, можно сказать, что книга эта будет находиться в процессе перманентного создания и редактирования. И потому должен сразу предупредить: возможно, в первых ее разделах вы поначалу не увидите этих самых рекурсивно-перекрестных ссылок. Они будут появляться по ходу написания соответствующих разделов или хотя бы понимания их положения в общей структуре.

Неизменности структуры книги я также не гарантирую (вернее, почти гарантирую обратное). Это вытекает опять же из онлайновой природы сочинения. Уже первые его фрагменты, почти наудачу выхваченные из середины первой части и размещенные в свое время на Unix4All, вызвали достаточно большое количество откликов. Многие из которых заставили меня изменить первоначально задуманную последовательность глав. Вторая версия книги, фрагменты которой размещались уже на этом сайте, также потребовала реструктуризации. Так что повторение такой ситуации в будущем весьма вероятно.

Как она делалась

Излишне говорить о том, что все это сочинение, от первой до последней страницы, осуществлялось на машине, оснащенной исключительно свободными программами. В качестве операционной системы в разное время написания выступали дистрибутивы Linux - Gentoo, CRUX и Arch Linux. Тем не менее, большая часть книги сочинялась под управлением FreeBSD. На последней платформе в настоящий момент выполняется и текущая ее доводка. Этим я хочу в очередной раз подчеркнуть, что все POSIX-системы практически равноценны с точки зрения настольного использования.

Основным инструментом собственно сочинительства в разное время были текстовые редакторы joe (в консоли), nedit (в системе X с оконным менеджером fluxbox) и kate (в интегрированной среде KDE). Текст набирался непосредственно в html-формате с помощью макросов собственного изготовления. Поскольку в этой книге использованы кое-какие тексты из ранее мной написанного (как опубликованного, так и неопубликованного), проблема поиска необходимых фрагментов, их модификации и помещения куда следует решалась с помощью командных утилит, пришедших из мира классического Unix: (find, grep, cat, split, sed).

Иллюстративный материал подготовлен посредством графического пакета GIMP (скриншоты, растровая графика), "рисовалки" из комплекта OpenOffice (векторная графика) и модуля построения диаграмм из электронной таблицы OpenCalc (оттуда же). Периодически для тех же целей привлекались аналогичные инструменты из комплекта kdegraphics и KOffice, а также разного рода мелкие утилиты для работы с графикой (например, scr2png для FreeBSD).

По всему тексту я старался придерживаться следующих условных обозначений. Наименования клавиш и клавишных комбинаций, а также пунктов меню и прочих визуальных элементов интерфейса выделены тегом strong: Enter. Команды в командной строке, примеры их экранного фрагменты конфигурационных файлов, листинги сценариев выделяются тегом pre:

Так даются примеры команд,
примеры их экранного вывода,
конфигурационных файлов,
листинги сценариев

При этом команды предваряются символом приглашения командной строки, в качестве которого я принял $. Символ же # закреплен за комментариями в скриптах и конфигах. Разумеется, если синтаксис данного скрипта или конфига требует иного обозначения комментария (например, !) - будет использоваться именно он (с соответствующей оговоркой).

Команды, их опции и аргументы, упоминаемые в теле абзацев, обособляются тегом code: имя_команды.

Наконец, как уже говорилось, важную роль в структуре книги играют гиперссылки, как на соответствующие разделы внутри книги, так и на внешние источники. Они формлены традиционно, без всяких вытребенок. Внутренние ссылки обычно имеют такой вид: содержание этой книги. А внешние ссылки даются на название источника: Демониада, или его URL: unix.ginras.ru.

References...

Основу этого сочинения составили мои заметки для серии моих прежних сайтов - перечислять их было бы долго, да и большинство умерло естественной смертью. Здесь я должен оговориться - в случаях расхождений с ранее мной написанным (а они будут довольно часты - даже в пределах этого сайта), в качестве "истины текущего момента" должен рассматриваться именно настоящий текст.

В своих сочинениях я опирался на множество источников. В первую очередь это официальная документация ко всем упоминаемым по ходу дела программам в формате man и, реже, info, а также html-, xml и pdf-документация на сайтах различных проектов Open Sources.

Далее, я использовал бесчисленные on-line материалы с многочисленных русско- и англоязычных сайтов, посвященных тематике Unix, Linux и Open Sources. Перечислять их все не вижу ни малейшей возможности - конкретные ссылки будут даваться по мере изложения.

На протяжении последних 10 лет тема Open Sources, особенно Linux, занимает все большее место на страницах традиционной "бумажной" компьютерной прессы. Я по мере сил слежу за такими публикациями и при необходимости использую их в своей работе(библиографические ссылки также будут приводится по ходу дела).

Разумеется, не обошелся я и без чтения "толстых" книг по Unix и Linux. Из них наибольшее влияние на меня оказали:

Наконец, множество сведений я почерпнул в ходе переписки с моими многочисленными корреспондентами и в общении на различных форумах.

... и реверансы

Таким образом, для создания этой книги привлекались плоды работы множества людей. И потому, пользуясь случаем, я хотел бы выразить свою искреннюю признательность им всем - знакомым, очно, или заочно, и совсем незнакомым:

Прошу прощения, но полное поименное перечисление в этом реверансе заняло бы не один десяток страниц. Тем не менее, отдельные благодарности (не ищите скрытого смысла в порядке перечисления - он абсолютно случаен):

Особая благодарность: моей жене Лене, не чересчур уж сильно ругавшей меня за постоянное долбление по клавишам (в том числе и ранним утром, когда порядочные люди еще спят), и моим детям Оле и Вите, не перестающим удивлять меня своим восприятием компьютера вообще и открытых исходников в частности. Главное же, конечно, за сам факт их существования...

Все перечисленные (и не перечисленные) лица оказали в той или иной мере положительное влияние на данное сочинение. Тем не менее, написано оно мною, и я принимаю на себя всю полноту ответственности за его (несомненные) достоинства и (вполне возможные) недостатки.

Содержание|Вперед

Сайт управляется системой uCoz