| ||||||||||||||||
![]() | ||||||||||||||||
| ||||||||||||||||
![]() | ||||||||||||||||
| ||||||||||||||||
![]() |
Из чего только сделаны Linux'ы Как это ни странно, вопрос, из чего состоит Linux как операционная система, почти не рассматривается в литературе. И во взглядах на него бытует две крайности. С одной стороны, Linux рассматривается как ядро операционной системы, и не более того. Однако никакое ядро, сколь бы совершенно оно ни было, само по себе не способно обеспечить решение самой простой пользовательской задачи. С другой стороны, в Linux (особенно в околокомпьютерной прессе) включается все, что можно обнаружить на многодисковых наборах, продаваемых под этим именем, вплоть до системы X Window, интегрированных сред типа KDE и GNOME, и их приложений. Однако сама по себе система X Window не имеет никакого отношения не только к Linux, но, в сущности, и к Unix-системам вообще (за исключением того, что способна работать под управлением любой из них). А интегрированные среды и оконные менеджеры – лишь дополнительные (хотя и необходимые) атрибуты оконной графической системы. Что же касается включаемых в дистрибутивы приложений – более чем на 90 процентов они суть общее достояние всех открытых и свободных операционных систем. Интересно, что вопрос об источниках и составных частях не возникает ни в отношении Windows любого рода, ни касаемо BSD-систем. Первые – едины и неделимы по своей сути, почему попытки их кастрации путем удаления Explorer'а, или, напротив, подмены управляющей графической среды по образу и подобию оконных менеджеров X Window, не приводят обычно к радующим глаз и сердце результатам. В BSD-системах, напротив, проводится четкая грань между неотъемлемыми компонентами системы (ядром, системными и прикладными утилитами, минимальным набором пользовательских приложений), объединяемыми, например, во FreeBSD понятием Distributions, и системой портов – то есть набором средств для установки и функционирования дополнительных приложений сторонних разработчиков, само название которой подчеркивает их определенную отчужденность от ОС как таковой. Более того, компоненты Distributions и порты распространяются, как правило, даже на разных условиях: первые – по т.н. BSD-лицензии, вторые – на условиях лицензии GPL и аналогичных, какие определили для них создатели. Приложения, включаемые в дистрибутивы BSD-систем в качестве портов (правда, в NetBSD таковых нет, весь дополнительный софт доступен только в виде прекомпилированных пакетов), сильно расширяют их функциональность. Однако и базовый набор, то есть собственно внутренние ресурсы ОС, не только обеспечивают запуск и функционирование ее, но и позволяют решать достаточно широкий круг пользовательских задач. Почему, собственно, даже без привлеченных средств любая из BSD-систем заслуживает звание ОС в собственном смысле слова. Посмотрим же, как с этой точки зрения выглядит Linux. Для чего зададимся вопросом: а что же необходимо ему для функционирования? Во-первых, это, разумеется, ядро и средства его поддержки: загрузчик, наборы стартовых сценариев, инструменты для поддержки файловой системы, утилиты, относимые к категории системных. Во-вторых – средства боевого обеспечения, сиречь командный интерпретатор и утилиты пользовательские. В третьих, средства тылового обеспечения – системные библиотеки. И, наконец, инструментарий для того, чтобы собрать воедино все перечисленное хозяйство – компилятор и сопутствующие ему средства (ассемблер, линкер и т.д.). С ядром Linux все ясно – это объективная реальность, данная нам в ощущениях Линуса Торвальдса. Все же прочие компоненты, хотя теоретически и могут варьировать по составу, давно определены традицией: это называемые средства, разработанные в рамках проекта GNU (из всех возможных переводов этого акронима адекватным мне кажется такой: "Гну – это вам не хрен собачий") и ему соплеменных. Теоретически рассуждая, реализации перечисленных компонентов могут быть различными. Однако в качестве канонического минимального набора для Linux можно рассматривать то, что включено в pure LFS или в основной набор BYO Linux. Нужно заметить, что оба набора представляют собой множества, пересекающееся более чем на 90%. Из каждого можно убавить лишь пару-тройку элементов, все остальные настолько тесно связаны взаимозависимостями, что их можно рассматривать как base Linux вообще. Рассмотрим их по порядку. Ядро и средства поддержки Относительно ядра говорить особенно нечего – в любой дистрибутив включается последняя (или последняя беспроблемная) его версия на момент сборки. Канонический источник ядра Linux – Взаимодействие с модулями ядра обеспечивает комплект modutils В качестве средств поддержки, как уже говорилось, рассматриваются, загрузчики, инструменты для работы с файловыми системами и прочие системные утилиты. Из загрузчиков заслуживают рассмотрения два варианта – классический Lilo Важнейшие утилиты поддержки Linux объединены в комплект, который так и называется – util-linux Средства поддержки файловой системы (систем) включают в себя утилиты для создания их (сиречь форматирования, в терминах DOS/Windows), проверки на целостность, тюнинга, резервного копирования и т.д. Для классической файловой системы Linux, ext2fs, такой набор носит название ext2fsprogs Комплект этот поддерживают также журналируемый вариант файловой системы Linux – ext3fs и, ограниченно, также и ReiserFS. Однако в принципе для нее, как и для другой журналируемой файловой системы – XFS, требуются собственные средства поддержки. В первом случае это будет reiserfsprogs, во втором – целый комплекс наборов:
Все эти средства могут быть получены (в виде исходников) с соответствующего раздела сайта SGI. Кроме этого, требуются средства для поддержки виртуальной файловой системы proc, обеспечивающей отображение процессов. Это – комплекты procinfo и procps. К этой же группе примыкает комплект psmisc, предназначенный для управления процессами. Еще один из инструментов поддержки – средства запуска и останова системы. Они объединены в комплект sysvinit. Он обеспечивает инициализацию процессов (init), осуществление уровней исполнения (runlevels), авторизацию пользователей и т.д. В принципе для старта полнофункциональной системы требуются и сценарии инициализации. В LFS они объединены в пакет bootscrips, включающий средства для запуска системных демонов. Непосредственное отношение к старту системы и авторизации имеет комплект shadow,предназначенный для управления пользовательскими паролями. и, возможно, средство для трансляции файловой системы devfs, буде возникнет желание таковую использовать; Далее, к средствам поддержки можно отнести программы для работы с консольным драйвером Linux. Таковых ныне используется две – kbd и Обе они включают в себя множество утилит, из которых для начала важнейшими являются программы для загрузки клавиатурных раскладок, экранных шрифтов и карт соответствия одного другому (loadkeys, setfont в kbd или consolechars в console-tools, mapscrn).
Последнее из средств обеспечения – служба консольной мыши, осуществляемая программой Средства боевого обеспечения В это понятие я включаю пользовательские утилиты, большая часть которых разработана в рамках проекта GNU. С одной стороны, они обеспечивают минимальную пользовательскую функциональность системы, с другой – играют служебную (но – совершенно незаменимую) роль в процессе ее сборки.
На первом месте здесь должно поставить командную оболочку – без нее никакие вообще действия становятся невозможными: ведь, кроме того что вся установка системы осуществляется (прямо или опосредованно) ее командами, интерпретатор команд необходим и для исполнения стартовых сценариев при загрузке системы.
Традиционно такой, как бы общесистемной, командной оболочкой в Linux является bash Оболочка bash обладает многими достоинствами, но ныне не является наиболее совершенной. Последний титул (в семействе shell-совместимых интерпретаторов, по крайней мере), я отдало бы оболочке Все исходники программ доступны в сети в архивированном виде, и потому первое, что понадобится для их установки – это архиваторы и компрессоры. Минимальный список первых ограничивается программой tar Далее следует группа наборов для для манипуляций с файлами. Первый из которых так и называется – fileutils
Назначение набора sh-utils – главным образом навигация по файловым системам и получение общесистемной информации. В его составе – команды basename, chroot, date, echo, env, printenv, pwd, su, tee и многие другие. К ним по смыслу тесно примыкает набор для поиска файлов – findutils. Главные команды в его составе:
К тому же блоку наборов можно отнести file – эта команда позволяет детализовать тип регулярного файла (исполнимого, текстового и т.д) по т.н. "магической последовательности" байтов в его начале. Следующий блок наборов предназначается для работы с контентом файлов (в первую очередь, разумеется, текстовых). Первым в нем следует поставить less, которая являет собой программу постраничного просмотра файлов. Далее – набор под значимым именем textutils. В его состав входят:
Два взаимодополняющих набора – diffutils и patch, первый из которых (в составе cmp, diff, diff3, sdiff) предназначен для сравнения файлов с фиксацией их различий, а второй – для внесения изменений в соответствие с этими самыми зафиксированными различиями. Совершенно незаменим набор grep. Входящие в его состав программы grep, fgrep и egrep предназначены для поиска текстовых фрагментов (шаблонов) в файлах. Наборы ed, gawk и sed предназначены для весьма сложной обработки текста, представляя собой, в сущности, потоковые (неинтерактивные) текстовые редакторы). Теоретически без них можно было бы обойтись, но они широко используются во всякого рода установочных сценариях, так что практически оказываются необходимыми. Аналогично и положение с комплектом groff, включающим множество средств сложного неинтерактивного форматирования текста. Их вполне можно было бы заменить более современными и простыми в обращении программами, однако компоненты комплекта оказываются необходимыми для функционирования систем документации, о которой речь пойдет чуть ниже. И последнее средство, имеющее некоторое отношение к текстам – gettext, инструментарий для организации интернациональной поддержки (т.н. NLS – National Languages Support). Сетевые возможности базовой системы обеспечиваются двумя наборами – netkit-base и Наконец, группа наборов, последняя по счету, но не по значению, – системы документации. Таковых в Linux широко используется две – традиционные для Unix man-страницы Средства тылового обеспечения В это понятие я включаю системные разделяемые библиотеки. Пользователю очень редко приходится иметь с ними дело непосредственно, но без них функционирование системы практически невозможно. Конечно, многие приложения могут быть связаны (и подчас действительно связываются) с разделяемыми библиотеками статически. Однако сборка собственной системы без них просто неосуществима. Главной общесистемной библиотекой в Linux является glibc. Кроме нее, для сборки (и работы) большинства консольных приложений требуется терминальная библиотека ncurses. И еще – требуется также инструментарий для связывания программ с библиотечными функциями libtool. Это – необходимый минимум, отдельные приложения могут потребовать и других библиотек, например, s-lang. Средства сборки Наконец, последнее (или, строго говоря, первое), необходимое для того, чтобы собрать все перечисленное выше воедино – это средства сборки. В первую голову – компилятор языка C, на котором написана большая часть ОС Linux и программ для нее gcc. Далее – средства обеспечения компиляции (линкер, ассемблер и т.д.), объединенные в два набора Вот из этого (хотя и не только из этого) сделаны Linux'ы. По крайней мере, дистрибутивы этой системы, претендующие на полнофункциональность. Причем из этого списка (насчитывающего, если исключить функциональные аналоги, чуть больше 50 позиций) убавить практически ничего не удается – по крайней мере, без существенного ущерба для возможностей. Но и это еще не все: чтобы превратить систему в минимально пригодную для практической работы, требуется добавить еще несколько компонентов.
Дополнительные приложения Первым из таких дополнительных компонентов идет текстовый редактор – без него трудно было бы хотя бы поправить конфигурационные файлы. В выборе такового возможно три подхода: минималистский, максималистский и промежуточный.
Для обеспечения минимальных возможностей редактирования подойдет любой максимально простой редактор – если не выходить за рамки проекта GNU, в этой роли может выступить nano При максималистском подходе предоставляется выбор среди двух монстров консольного мира – Промежуточный подход оправдан, если требуются достаточно мощные возможности обработки текстов (не столько исходных, сколько текстов просто). В этом случае целесообразно использование Текстовый редактор трудно представить без функций проверки орфографии, и потому следующий дополнительный компонент – ispell И последнее, хотя в наших условиях немаловажное – средства поддержки кириллицы. Для получения базового набора кириллических экранных шрифтов, клавиатурных раскладок и карт соответствия одного другом необходимым и достаточным видится комплект console-tools-cyrillic Ну а для реализации проверки русской орфографии в дополнение к оригинальному ispell предлагается известный словарь Лебедева – rus-ispell Наконец, самое последнее, что требуется для комфортной работы – звуковое сопровождение в виде проигрывателей компакт-дисков и mpeg-файлов. Первой цели успешно послужит (по крайней мере для начала) программа cdplay, второй – mpg123, не требующие каких-либо дополнительных библиотек. Итак, скачав из сети чуть больше полусотни файлов, мы получаем возможность построения собственной Linux-системы, пригодной для практического использования. Конечно, набор этот – весьма аскетичный, вполне достойный древних лакедемонян. Если возникнет желание, например, использования графического режима с его многочисленными приложениями, приведенный список придется многократно расширить. Однако это будет темой самостоятельных исследований. |
|
![]() | ||||||||||||||||
| ||||||||||||||||
![]() | ||||||||||||||||
|