Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Учебное пособие 800521

.pdf
Скачиваний:
3
Добавлен:
01.05.2022
Размер:
4.21 Mб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФГБОУ ВО «Воронежский государственный технический университет»

Н. А. Рындин, К. А. Амоа

ОСНОВЫ АДМИНИСТРИРОВАНИЯ

LINUX И APACHE

Утверждено учебно-методическим советом университета в качестве учебного пособия

Воронеж 2018

1

УДК 381.3.06 (075.8) БКК 32.97я7

Р952

Рецензенты:

кафедра вычислительной математики и прикладных информационных технологий Воронежского государственного университета

(зав. кафедрой д-р техн. наук, проф. Т. М. Леденева); канд. техн. наук, доц. А. В. Питолин

Рындин, Н. А.

Основы администрирования Linux и Apache:

Р952 учеб. пособие / Н. А. Рындин,

К. А. Амоа. Воронеж:

ФГБОУ

ВО

«Воронежский

технический университет», 2018. 187 с. ISBN 978-5-7731-0652-4

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

Издание соответствует требованиям Федерального государственного образовательного стандарта высшего образования по направлению 09.04.02 «Информационные системы и технологии» (программы магистерской подготовки «Анализ и синтез информационных систем», «Разработка WEBориентированных информационных систем»), дисциплине «Основы администрирования Linux и Apache».

Ил. 35. Табл. 7. Библиогр.: 32 назв.

УДК 681.3.06(075.8) ББК 32.97я7

ISBN 978-5-7731-0652-4 © Рындин Н. А., Амоа К. А., 2018

© ФГБОУ ВО «Воронежский государственный технический университет», 2018

 

ВВЕДЕНИЕ

Linux - cемейство

операционных систем

на базе ядра Linux. Как

, системы на его основе

как правило создаются

в соответствии с

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

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

За счёт использования свободного программного обеспечения и привлечения волонтёров каждая из систем Linux обладает значительными программными возможностями, трудно реализуемыми в прочих моделях разработки.

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

Пособие предназначено для студентов магистратуры направления 09.04.02 «Информационные системы и технологии», обучающихся по программе «Разработка Webориентированных информационных систем».

3

1.ПРОЦЕССЫ ЗАГРУЗКИ ОПЕРАЦИОННОЙ

СИСТЕМЫ

1.1.Загрузчик операционной системы

Загрузчик

операционной

системы —

системное

программное

обеспечение,

обеспечивающее

загрузку

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

В данном учебном пособии, в качестве загрузчика операционных систем семейства Linux, будет рассмотрен загрузчик GRUB 2, как наиболее распространенный на момент написания данного пособия и является загрузчиком по умолчанию для многих популярных дистрибутивов, например

- Ubuntu (с версии 9.10).

GRUB 2 является продолжением проекта GRUB (GRand Unified Bootloader), переписанным разработчиками «с нуля», чтобы добиться переносимости и модульности.

Основными возможностями GRUB 2 являются:

-загрузка Linux, OpenSolaris, *BSD ядер и других Multiboot-совместимых ОС;

-передача управления другим загрузчикам, возможность загрузки Windows-систем;

-защита паролем пунктов меню;

-поддержка BOOTP и TFTP для сетевой загрузки;

-интерактивная командная строка загрузки;

-поддержка файловых систем: NTFS, ISO, UFS, UFS2, FFS, FAT16, FAT32, Minix, ext2/ext3/ext4, ReiserFS, JFS и XFS,

ичтение файлов конфигурации, ядер, initrd и других файлов прямо с файловой системы;

-поддержка загрузчика EFI, начиная с версии 1.98 (загрузка операционных систем семейства Mac OS);

-настройка интерфейса;

-модульная структура.

4

GRUB 2 имеет возможность работать как с таблицей разделов MBR (Master Boot Record) и BIOS (Basic Input/Output System), так и с GPT (GUID Partition Table) и UEFI (Unified Extensible Firmware Interface).

MBR и BIOS

Сама по себе таблица разделов на диске с разметкой MBR занимает 68 байт в конце начального сектора диска, последние два байта занимает «загрузочная» сигнатура 55AA. Оставшиеся 442 байта с начала сектора – и есть то место, в которое встраивается код загрузчика из образа boot.img.

Для встраивания образа загрузчика core.img на диск с MBR, используется промежуток между начальным сектором с MBR и самым первым (по расположению) разделом. Если ближайший к началу диска раздел начинается с сектора 63

или больше,

 

 

# fdisk -l /dev/sda

 

...

 

 

Device Boot

Start

End Blocks Id System

/dev/sda1

63

2120579 1060258+ 82 Linux swap /

Solaris

 

 

...

 

 

то в большинстве случаев этого места (31КБ) вполне достаточно для встраивания GRUB 2. Размер образа core.img зависит от размера модулей для чтения используемых таблицы разделов и ФС.

Однако, в некоторых более сложных случаях, размер образа может оказаться больше 31КБ, и тогда отступа в 63 сектора уже не хватит. Поэтому современные версии утилиты fdisk по-умолчанию предлагают создавать первый раздел с гораздо большим отступом (1МБ), начиная с 2048 сектора.

GPT и UEFI

Начальный сектор диска с разметкой GPT зарезервирован, как ни странно, для MBR, которая обычно используется для совместимости, но точно так же оставляет в секторе те же 442 байта, достаточные для встраивания кода

5

загрузчика из boot.img. Сама GPT располагается на следующих секторах.

В отличии от MBR, GPT предусматривает возможность создания на диске специального раздела для встраивания

BIOS-загрузчика. Раздел BIOS boot partition имеет GUID=21686148-6449-6e6f-744e656564454649, и может быть создан в утилите fdisk как раздел типа 4, или в gdisk как раздел типа EF02. Этот раздел не должен содержать никакой файловой системы, иначе она будет затёрта при установке загрузчика. Номер раздела может быть любым, расположение также практически любым. На больших дисках рекомендуется располагать BIOS boot partition в пределах первых 2ТБ, поскольку средства BIOS, скорей всего, не позволят прочесть более дальние сектора.

Если такой раздел на диске с GPT создан, программа установки GRUB 2 автоматически найдёт его и использует для встраивания стартового образа BIOS-версии загрузчика. Минимальные требования к размеру раздела те же, что и для просвета перед первым разделом в случае MBR – на это место должен поместиться образ core.img. Так как расположение BIOS boot partition не привязано к началу диска, создать его с размером порядка 1МБ будет несложно, и более чем достаточно в любом случае.

Установка загрузчика в варианте MBR и BIOS

Для установки GRUB 2 нужно выполнить команду от

root:

grub-install /dev/sda

где /dev/sda это устройство для установки загрузочных образов GRUB 2. Файлы загрузчика будут установлены в каталог /boot. Код GRUB (boot.img) будет встроен в начальный сектор, а загрузочный образ core.img – в просвет перед первым разделом MBR, или BIOS boot partition для GPT.

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

6

grub-install --recheck /dev/sda

Если требуется установить файлы загрузчика в другой каталог, его можно указать в опции --boot-directory . С этой опцией можно легко установить GRUB 2 на диск с другой системой (устанавливаемой или исправляемой), достаточно правильно указать текущий путь к смонтированному каталогу для установки и текущее имя устройства, примерно так:

grub-install --boot-directory=/mnt/boot /dev/sdb

Если нужно установить BIOS-версию загрузчика из-под системы, загруженной в режиме UEFI, требуется принудительно задать программе установки нужную сборку

GRUB 2:

grub-install --target=i386-pc /dev/sda

Генерация загрузочного образа для BIOS без установки Новые версии GRUB 2 генерируют загрузочный образ core.img, который может быть загружен не только кодом бутсектора, но и другими загрузчиками (GRUB2, GRUB Legacy, syslinux), в качестве ядра, совместимого со стандартом Multiboot. Например, другой экземпляр GRUB 2 может запустить его командой multiboot, а GRUB Legacy командой

kernel.

1.2.Пространство пользователя

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

На обычных настольных системах с операционной системой Linux обычно первым запускаемым приложением является /sbin/init. Однако это обязательно. Во встраиваемых системах редко требуется такая обширная инициализация, которую обеспечивает init (которая конфигурируется при помощи /etc/inittab). Во многих случаях можно запустить

7

простой shell-скрипт, который запускает необходимые встраиваемые приложения.

Традиционный механизм запуска и выключения системы, используемый в Linux-системах, носит название SysVinit. Как можно предположить по названию SysVinit, его концептуальные истоки лежат в версии UNIX под названием

Sys V (точнее, UNIX System V, Release 4 – SVR4), которая была выпущена в 1989 году. Инициализационная программа SysVinit читает файл /etc/inittab с целью идентификации набора сервисов, которые должны быть доступными в тот момент, когда система достигает своего состояния по умолчанию (уровень runlevel по умолчанию для системы) и команды, которую она должна выполнить для достижения этого состояния. В системах, использующих SysVinit, эта информация задается с помощью записей в файле /etc/inittab

Традиционные команды в файле /etc/inittab, связанные с запуском:

si::sysinit:/etc/init.d/rcS

id:5:initdefault: l5:5:wait:/etc/init.d/rc 5

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

При использовании механизма SysVinit каталог /etc/init.d содержит скрипты оболочки, которые запускают и останавливают все процессы системного уровня. Для каждого runlevel имеется собственный каталог, содержащий символьные ссылки на определенные скрипты оболочки в каталоге /etc/init.d, которые следует запускать или останавливать при входе в соответствующий уровень runlevel

8

или выходе из него. Третья строка в листинге 1 дает механизму SysVinit указание выполнять скрипты из этого каталога, ассоциированные с runlevel 5. Обычно это скрипты

/etc/rc5.d, /etc/init.d/rc5.d или /etc/rc.d/rc5.d — в зависимости от применяемого дистрибутива Linux.

Символьные ссылки в каталоге уровня runlevel начинаются с S или с K. S указывает, что данный скрипт должен исполняться с целью запуска ассоциированного с ним системного процесса при входе системы в указанный уровень runlevel; K указывает, что данный скрипт должен исполняться с целью завершения ассоциированного с ним системного процесса при выходе системы из этого уровня runlevel. Целочисленное значение, следующее за S или за K, определяет порядок, в котором эти скрипты следует исполнять при входе в соответствующий уровень runlevel или при выходе из него.

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

Самым известным из управляемых событиями механизмов запуска является Upstart — это механизм запуска по умолчанию, используемый в таких дистрибутивах Linux, как Ubuntu 9.10 и выше, RHEL6 (связанные дистрибутивы: (CentOS, Oracle Linux, Scientific Linux), Fedora 9-14, а также во многих других дистрибутивах Linux. Upstart обладает обратной совместимостью с runlevel-моделью SysVinit.

Механизм Upstart использует т.н. файлы конфигурации заданий (conf-файлы), которые описывают его реакцию на различные события — запуск, выключение, переходы между уровнями runlevel и т. д. Обычно эти файлы находятся в каталоге /etc/init, хотя по причинам обратной совместимости некоторые из них находятся в каталоге /etc/event.d. Все создаваемые вами новые conf-файлы в масштабе всей системы

9

должны размещаться в каталоге /etc/init. Как правило, conf- файлы имеют расширение conf. Это текстовые файлы, которые должны содержать как минимум следующую информацию.

События (одно или несколько), в ответ на наступление которых этот conf-файл должен выполнить определенное действие. Например, запись start on startup говорит о том, что файл задания должен быть выполнен при получении информации о событии startup, а запись stop on runlevel говорит о том, что файл задания должен остановиться при получении какой-либо информации о событии runlevel, например, об изменении уровня runlevel системы.

Раздел task или respawn, который содержит как минимум запись exec или раздел script с указанием команд, исполняемых в ответ на события, которыми инициируется этот conf-файл. Запись exec исполняет определенную команду, обычно двоичный файл, с определенным набором аргументов командной строки. Раздел script, известный как stanza-запись, содержит команды, исполняемые оболочкой, включая любые скрипты оболочки; она должны заканчиваться утверждением end script Механизм Upstart посредством ключевых слов task и respawn управляет двумя концептуальными классами заданий.

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

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

В разделе task conf-файла Upstart также можно использовать другие ключевые слова для идентификации устройств вывода, скриптов для исполнения перед основным разделом exec или script, скриптов для исполнения после завершения основных разделов exec или script и т. д. Раздел

10