Лекция 14. Архитектура и принципы построения ОС Linux. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Лекция 14. Архитектура и принципы построения ОС Linux.



Лекция 14. Архитектура и принципы построения ОС Linux.

 

 

1. Основные архитектурные компоненты Linux: ядро, shell, X Window.

2. Файловая структура Linux: каталоги и файлы; управление файлами и файловыми системами.

3. Система команд в Linux. Конвейеры команд. Перенаправление ввода-вывода.

4. Конфигурирование ядра Linux.

 

Файловая структура Linux: каталоги и файлы; управление файлами и файловыми системами

 

В ОС Linux все файлы организованы в каталоги, которые, в свою очередь, иерархически соединены друг с другом, образуя одну общую файловую структуру. При обращении к файлу необходимо указывать не только его имя, но и место, которое он занимает в этой файловой структуре. Можно создавать любое количество новых каталогов, добавляя их к файловой структуре. Команды для работы с файлами:

find; cp; mv; ln, - позволяет находить файлы, копировать их и перемещать из одного каталога в другой. В совокупности все эти элементы и образуют файловую структуру ОС Linux.

Файлы в ОС Linux.

Имя файла может содержать любые буквы, знаки подчеркивания и цифры. Можно включать в имена точки и запятые. При этом имя файла не должно начинаться ни с цифры, ни с точки (за исключением некоторых особых случаев). Символы: / \? * (косая черта, вопросительный знак, звездочка), – зарезервированы в системе в качестве специальных и в именах файлов использоваться не должны. Максимальная длина имени файла 256 символов. Имя файла может включать и расширение. Для отделения расширения от собственно имени файла служит точка.

Типы файлов.

Все файлы в ОС Linux имеют один и тот же формат байтовый поток. Это позволяет системе Linux распространять файловую концепцию на все компоненты данных. Каталоги и устройства классифицируются как файлы. Рассматривая такую организацию как файлы, Linux позволяет упростить организацию данных и обмен ими. Данные, записанные в файле, можно посылать непосредственно в устройство.

Каталоги, сами по себе являются файлами, но имеют собственную внутреннюю организацию. Файл каталога содержит информацию о каталоге, организованную в специальные структуры. Поскольку все эти различные компоненты рассматриваются как файлы, можно сказать, что они представляют собой различные типы файлов. Байт ориентированное устройство – один тип файла, каталог другой тип файла. Независимо от конкретной реализации ОС Linux существуют четыре стандартных типа файлов: обычные; файлы каталогов; байт-ориентированные файлы устройств; блок-ориентированные файлы устройств.

Все обычные файлы имеют один формат, байтовый поток, но могут использоваться по-разному. Наиболее существенное различие имеет место между двоичными и текстовыми файлами. Пример двоичного файла – программный код после его компиляции. Текстовые файлы можно классифицировать по направлению использования.

Файловая структура.

Файлы в ОС Linux организованы в иерархическую систему каталогов. Из-за сходства такую структуру называют древовидной структурой. Если быть более точным, то эта структура скорее похожа на куст, перевернутый вверх ногами. Ствола здесь нет. Вниз от корня отходят ветви. Каждая ветвь отходит только от одной, а от нее самой может отходить множество ветвей до самого нижнего уровня. В этом смысле файловую структуру скорее, можно назвать «родители-потомки». Аналогичным образом любой каталог является подкаталогом другого каталога, каждый подкаталог может содержать множество подкаталогов, но сам должен быть потомком только одного родительского каталога.

Иерархическая структура изображена на рис. 2.

Рис. 2.

 

Вверху находится корневой каталог (обозначается символом «косая черта») от которого ответвляется другие каталоги.

Файловая структура Linux разветвляется на несколько каталогов, начиная с корневого, / - root. В корневом каталоге имеется несколько системных каталогов, которые содержат файлы и программы, относящиеся к самой ОС Linux. Корневой каталог, кроме того, содержит каталог home, который может содержать начальные каталоги всех пользователей системы.

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

Путевые имена.

Имя, которое присваивается каталогу или файлу при его создании, не является полными. Полным именем файла или каталога является его путевое имя. Иерархические связи, существующие между каталогами, образуют пути, и эти пути используются для указания каталога или файла и обращения к нему. На рис. 6 показан путь от корневого каталога / к конечному каталогу.

Рис.3.

 

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

Путевые имена могут быть абсолютными и относительными. Абсолютное имя – это имя или каталог, начинающееся символом корневого каталога. Относительное путевое имя начинается символом рабочего каталога и представляет собой обозначение пути к файлу относительно рабочего каталога.

Системные каталоги.

Корневой каталог являющийся каталогом файловой структуры Linux, содержит ряд системных каталогов. Системные каталоги содержат файлы и программы, сужающие для управления системой и ее сопровождение. Основные системные каталоги следующие (рис.4).

Рис. 4.

/root – служит начальной структурной единицей файловой системы;

/bin - содержит стандартные системные утилиты;

/lib – содержит библиотеки языков программирования;

/dev - содержит драйверы устройств;

/home - содержит исходные каталоги пользователей;

/sbin - содержит стандартные инструменты администрирования;

/usr - содержит дополнительные системные программы и инструменты администрирования;

/var - содержит файлы протоколов (log files) и буферные файлы принтеров (print spools). Обычно он монтируется с ограничением размера на Web-серверах, поскольку в противном случае log-файлы легко "затопят" все свободное пространство в разделе;

/spool – содержит буферные файлы (например, генерируемые при печати и пересылке по сети);

/etc - содержит администраторские и конфигурационные файлы. Находившиеся ранее здесь командные утилиты должны быть перенесены в разделы /bin и /sbin.

 

 

Система команд в Linux

 

 

В ОС Linux команда – это любой выполняемый файл. Командой является любой файл, предназначенный для выполнения, а не для хранения данных или конфигурационных параметров.

Чтобы выполнить команду, ее нужно ввести в командной строке:

$ команда опции аргументы

Если файл команды не находится в текущем каталоге, то необходимо ввести команду с указанием полного пути:

$ /usr/bin/command

 

Каждому пользователю, вошедшему в систему, предоставляется путь по умолчанию. Узнать его можно с помощью команды:

$ echo $РАТН

Результат ее выполнения может выглядеть так:

$ /usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/mj/bin

 

Стандартный ввод-вывод

 

 

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

Вывод информации о файлах.

Команда ls –l имя_файла позволяет получить подробную информацию о файле (рис.5).

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

Конфигурирование ядра Linux

 

Проверка пакетов исходных текстов

Для рекомпиляции ядра необходимы его исходные тексты. В Red Hat исходные тексты ядра размещаются в одном rpm-пакете, но по умолчанию не устанавливаются. Имя этого пакета:

kernel-source-2.4.2-2.1386.rpm

Кроме исходных текстов, для рекомпиляции ядра нужен компилятор, состоящий из двух компонентов:

утилита make;

собственно компилятор языка С - gсс или egcs.

Создание резервной копии текущего ядра проводится в три этапа:

1. Создание резервной копии исходных текстов ядра, что позволяет восстановить его при повреждении конфигурации.

2. Создание резервной копии самого ядра как заведомо работающего средства запуска системы.

3. Создание новой записи для загрузчика операционной системы, по которой можно будет загрузиться с резервной копии ядра.

Создание резервной копии исходных текстов производится путем копирования каталога с исходными кодами ядра на диск. Восстановление производится копированием в обратном направлении.

При рекомпиляции ядра прежнее ядро записывается в файл с расширением.old. Однако эту копию ядра пока нельзя использовать для загрузки системы. Этим объясняется необходимость выполнения перечисленных выше операций.

Загрузчик операционной системы типа LILO, обычно применяемый для загрузки Linux, конфигурируется установкой ссылки на файл ядра в корневой файловой системе.

После создания резервной копии ядра в файл /etc/lilo.conf нужно добавить еще одну запись, позволяющую запустить Linux с прежним ядром:

открыть файл /etc/lilo. conf в текстовом редакторе;

найти в файле /etc/lilo. conf раздел со ссылкой на образ ядра системы;

создать копию всего раздела;

поменять в копии две позиции:

имя файла ядра заменить на имя его резервной копии (вместе с расширением);

заменить метку раздела чем-либо, наподобие linux. original (исходный Linux) или linux-previous (прежний Linux).

строки, начинающиеся с initrd, заменить на соответствующие резервные, например, initrd-2.4.2-2. orig. Img;

записать изменения в файл /etc/lilo. conf.

ввести команду /sbin/lilo, чтобы ввести новую запись в загрузчик. При выполнении команды lilo на экран выводятся метки образов, вводимых в загрузчик операционной системы.

При следующей перезагрузке системы на экране появится идентификатор нового ядра в графической подсказке загрузчика LILO.

Конфигурирование нового ядра

При конфигурировании решается, какие функции включать в ядро, какие не включать и т.д. Можно выбирать между конфигурированием старого ядра и установкой/конфигурирование нового. Например, используя Red Hat Linux 7.1, можно изменить конфигурацию существующего ядра 2.4.2, задав новые параметры. Можно также загрузить и установить новое ядро версии 2.4.4. Несмотря на то, что детали конфигурирования в этих двух случаях различны, используемые утилиты и сама методика конфигурирования совпадают.

В Linux есть три отдельные конфигурационные утилиты, каждая из которых имеет свои особенности.

Утилита с интерфейсом командной строки. Пользователь последовательно отвечает на вопросы о функциях, которые необходимо включить в ядро. Эта утилита удобна для специалистов, умеющих работать с ядром, и для тех, у кого есть сценарии конфигурирования для этой утилиты.

Утилита с меню текстового режима. Многоуровневое меню этой утилиты позволяет устанавливать и переустанавливать параметры ядра в любом порядке.

Утилита с графическим интерфейсом. Это наиболее привлекательная утилита, но она запускается только в графической системе X Window.

Перечисленные утилиты создают один и тот же конфигурационный файл, используемый утилитой make при полной или частичной компиляции ядра.

Параметры ядра

Просматривая параметры в любой конфигурационной программе (командной строки, с текстовым или графическим интерфейсом), необходимо четко представлять влияние этих параметров на работу ядра.

Идентификация параметров в каждой программе своя, но во всех трех представлен один и тот же их набор. Параметры подразделяются на две основные группы:

модульные;

немодульные.

Если программный блок, соответствующий данному параметру, не загружается как модуль ядра, он может быть одним из двух:

[*] составной частью ядра;

[ ] несоставной частью ядра.

Символы в квадратных скобках (вместе со скобками) соответствуют отметкам параметров в меню конфигурационных программ (кроме утилиты командной строки).

Для модульных параметров возможны три варианта установки (в соответствии с их представлением в меню конфигурационных утилит):

<> не включается в ядро и не создается в виде модуля, который можно загрузить позже:

<*> включается в ядро, так что нет надобности загружать его позже в виде модуля:

<М> Включается как модуль, но не как составная часть ядра. Блок можно устанавливать или удалять из ядра в любой момент.

Иногда значение какого-либо параметра не удается поменять до установки другого параметра. Например, установить поддержку определенного устройства SCSI можно только после общего разрешения поддержки этих устройств.

Когда в системе будут установлены необходимые средства (утилита make и компилятор gсс) и исходные тексты, можно запустить одну из конфигурационных утилит и приступить к конфигурированию ядра.

 

Конфигуратор с графическим интерфейсом

Запуск конфигурационной утилиты с графическим интерфейсом выполняется в следующей последовательности.

Запустить систему X Windows (с любыми графической средой и рабочим столом).

Открыть окно эмулятора терминала (окно командной строки).

Как и при запуске предыдущей утилиты, на экране промелькнет несколько сообщений о компиляции утилиты, и через несколько минут откроется ее главное окно.

 

Рис. 8. Утилита конфигурирования ядра с графическим интерфейсом: меню-кнопки установки значений параметров

 

Графическая утилита не слишком отличается от утилиты menuconf ig. Здесь параметры также разбиты на категории; после щелчка на определенной категории открывается диалоговое окно со списком параметров, каждому из которых можно установить значение, определяющее, что соответствующее средство должно задействоваться как составляющая часть ядра, как загружаемый модуль или не задействоваться вообще. Такое диалоговое окно показано на рис.

 

Рис. 9. В диалоговых окнах, подобных этому, устанавливаются конфигурационные параметры ядра

 

Ядро 2.4.2 в Red Hat Linux по умолчанию поддерживает симметричную мультипроцессорную архитектуру. Необходимо установить для соответствующей опции значение n, если в вашем компьютере всего один процессор.

Справа от каждого параметра находится кнопка Help (Справка).

Большое преимущество графической конфигурационной утилиты (особенно его оценят те, кто впервые конфигурирует ядро) – отражение в меню зависимости между различными параметрами. Например, в разделе Block Devices (Блочные устройства) нельзя установить поддержку систем RAID, встроенную в ядро, пока не будет включен параметр Multiple Device Driver Support (Поддержка драйверов для нескольких устройств).

Если в утилите menuconfig зависимость параметров друг от друга показана отступами имен параметров в меню, то в графической утилите установка неразрешенных сочетаний параметров просто невозможна. Работа с графической утилитой помогает понять зависимости между различными модулями.

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

Save and Exit (Выход с сохранением). Создание файла конфигурации ядра и завершение работы утилиты.

Quit Without Saving (Выход без сохранения). Завершение работы утилиты без создания файла конфигурации ядра.

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

Load Configuration From File (Загрузка конфигурации). Загрузка конфигурационного файла, созданного ранее.

Store Configuration To File (Запись конфигурации). Запись конфигурационных данных в файл с указанным именем (для дальнейшего использования или передачи коллеге). Это не влияет на необходимость выполнения команды Save and Exit, создающей конфигурационный файл для рекомпиляции ядра.

Компиляция и запуск нового ядра

После завершения конфигурирования нужно проверить наличие нового конфигурационного файла (.config), расположенного в каталоге /usr/src/linux-2.4.2 (в зависимости от номера версии). Если конфигурационный файл.config на месте, можно использовать команду make для рекомпиляции ядра.

Обычно рекомпиляция ядра длится от 15 минут до нескольких часов. Это зависит от скорости процессора, объема оперативной памяти и ряда других факторов, поэтому все команды, вводимые при компиляции, удобно объединить в одну, через точку с запятой, чтобы они выполнялись последовательно.

Запуск процесса рекомпиляции

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

Для рекомпиляции системы введятся следующие команды.

# make dep; make clean; make bzlmage; make modules; make modules__install

Каждую команду make можно вводить отдельно, после завершения предыдущей.

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

Теперь можно создать загрузочный диск для нового ядра с помощью команды

# make bzdisk

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

После выполнения команд компиляции ядра и возврата к командной строке создается новое ядро. Чтобы загрузить систему с новым ядром, его необходимо переместить в стандартный каталог, из которого оно будет запускаться. Это делается вводом команды

# ср /usr/src/linux-2.4.2/arch/i386/boot/bzlmage /boot/vmlinuz-2.4.2-2

В завершение, для обновления карты загрузки выполните команду lilo:

# /sbin/lilo

В имени копируемого образа ядра можно указать номер версии. Важно, чтобы имя этого файла совпадало с именем, указанным в файле /etc/lilo.conf.

Тестирование нового ядра

После перемещения файла нового ядра в стандартный каталог (указанный в файле lilo. conf) систему можно перезагрузить с этим ядром.

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

Сравнение объемов старого и нового ядер. Следует проверить объем памяти, занимаемый операционной системой, введя команду free.

Установка файловой системы или попытка доступа к устройству без загрузки модуля ядра для его поддержки (если поддержка данного устройства встроена в ядро).

Использование сетевых ресурсов (например, алиасов IP), отсутствовавших в прежнем ядре.

Может понадобиться проверка временной метки файла текущего ядра. Для этого введите команду uname. Это позволяет убедиться в том, что в данный момент система работает с рекомпилированным ядром. Метка времени и даты ядра должна совпадать со временем его рекомпиляции.

#uname -v

#1 Tue Mar 9 13:27:39 EST 2001

Если ответ команды uname свидетельствует о том, что система загружена не с новым ядром, разберитесь с системным загрузчиком LILO. Проверьте, правильно ли указано имя загружаемого ядра в файле /etc/lilo.conf.

 

Лекция 14. Архитектура и принципы построения ОС Linux.

 

 

1. Основные архитектурные компоненты Linux: ядро, shell, X Window.

2. Файловая структура Linux: каталоги и файлы; управление файлами и файловыми системами.

3. Система команд в Linux. Конвейеры команд. Перенаправление ввода-вывода.

4. Конфигурирование ядра Linux.

 



Поделиться:


Последнее изменение этой страницы: 2016-04-08; просмотров: 1876; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.19.31.73 (0.073 с.)