Скачать

ОС Linux. Руководство системного администратора

====================================================================

Версия 0.3

Август 1995

Ларс Виржениус (Lars Wirzenius)


Содержание

Глава 1 Введение 4

1.1 Проект Документирования Системы Linux 6

Глава 2 Обзор Системы Linux 8

2.1 Различные составляющие операционной системы 8

2.2 Важные составляющие ядра 9

2.3 Основные функции UNIX системы 10

2.3.1 init 10

2.3.2 Подключение к системе с терминалов 11

2.3.3 Syslog 11

2.3.4 Периодическое выполнение команд: cron и at 11

2.3.5 Графический интерфейс пользователя 12

2.3.6 Работа с сетью 12

2.3.7 Подключение к системе через сеть 13

2.3.8 Сетевые файловые системы 13

2.3.9 Почта 14

2.3.10 Печать 14

2.4 Структура файловой системы 15

Глава 3 Запуск Системы и Перезагрузка 16

3.1 Обзор 16

3.2 Процесс запуска при близком рассмотрении 17

3.3 Завершение работы и выключение системы 20

3.4 Перезагрузка системы 23

3.5 Однопользовательский режим работы 23

3.6 Дискеты для экстенной загрузки 23

Глава 4 Использование Дисков и Других Устройств 25

4.1 Типы устройств 26

4.2 Жесткие диски 27

4.3 Гибкие диски 30

4.4 Форматирование 31

4.5 Дисковые разделы 34

4.5.1 MBR, загрузочные сектора и таблица разделов 35

4.5.2 Расширенные и логические разделы 35

4.5.3 Типы разделов 37

4.5.4 Разделение жесткого диска 38

4.5.5 Файлы устройств и разделы 39

4.6 Файловые системы 39

4.6.1 Что такое файловая система? 39

4.6.2 Типы файловых систем 41

4.6.3 Какую файловую систему устанавливать? 44

4.6.4 Установка файловой системы 44

4.6.5 Монтирование и демонтирование 46

4.6.6 Поддержка работоспособности файловых систем 50

4.7 Диски без файловых систем 52

4.8 Распределение дискового пространства 53

4.8.1 Схемы разделения дисков 53

4.8.2 Требования к дисковому пространству 54

4.8.3 Примеры распределения жесткого диска 55

4.8.4 Использование дополнительного дискового пространства 55

4.8.5 Методы сохранения дискового пространства 55

Глава 5 Обзор Структуры Каталогов 57

5.1 Введение 57

5.2 Файловая система root 59

5.2.1 Каталог /etc 60

5.2.2 Каталог /dev 62

5.3 Файловая система /usr 63

5.4 Файловая система /var 64

5.5 Файловая система /proc 65

Глава 6 Упpавление Памятью 68

6.1 Что такое виpтуальная память? 68

6.2 Создание swap области 69

6.3 Использование swap пpостpанства 70

6.4 Разделение swap областей с дpугими опеpационными 71

6.5 Размещение swap пpостpанства 72

6.6 Дисковый буфеp 73

Глава 7 Подключение и Выход из Системы 76

7.1 Подключение к системе чеpез теpминалы 76

7.2 Подключение к системе чеpез сеть 77

7.3 Что выполняет пpогpамма login 78

7.4 X и xdm 79

7.5 Контpоль доступа 79

7.6 Запуск оболочки 80


Глава 1 Введение

В этой книге рассматриваются аспекты системного

администрирования операционной системы Linux. В первую очередь

данное руководство предназначено для тех, кто практически ничего

не знает о системном администрировании, но ознакомлен с основами

работы с системой Linux, которые рассмотрены в книге "Руководство

Пользователя Системы Linux". В данном руководстве не уделяется

внимания проблемам, связанным с установкой системы (исчерпывающую

информацию можно получить из книги "Установка и Запуск Системы

Linux"). Во многих руководствах из серии LDP (Linux Documentation

Project) рассматриваются одни и те же вопросы с разных точек

зpения. Ниже содержится более подробная информация о руководствах

по системе Linux.

Что же называется системным администрированием? Это все то,

что требуется для поддержки работоспособности компьютерной системы

(например, создание резервных копий некоторых файлов, установка

новых программ, создание и удаление пользователей, проверка

целостности файловой системы и т.д.). Если сравнивать компьютер с

домом, то системное администрирование можно назвать содержанием

этого дома, включающее в себя уборку, устранение различных

неисправностей и т.д. Но системное администрирование не называют

содержанием, так как тогда это было бы слишком просто.

Руководство составлено таким образом, что главы не зависят

друг от друга и могут быть рассмотрены отдельно. Например, для

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

прочитать только одну главу. Это очень удобно и позволяет

использовать книгу в качестве справочного пособия, а также

избежать чтения всего руководства вместо нескольких разделов.

Однако, прежде всего это книга, а затем уже справочник.

Конечно, в этой книге не содержится всей необходимой

информации по системному администрированию, хотя много полезного

можно найти и в другой документации по системе Linux. В конце

концов, системный администратор это просто пользователь с

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

Также много полезной и важной информации можно узнать из

встроенных описаний к программам (при помощи команды 'man').

В то время как эта книга рассчитана на использование

операционной системы Linux, она может быть расмотрена и по

отношению к другим UNIX-подобным операционным системам. Так как

разные версии системы UNIX сильно различаются (особенно в вопросах

системного администрирования), то довольно сложно охватить весь

материал, касающийся каждой модификации. Даже рассмотрение всех

особенностей ОС Linux - сложная задача, так как она сейчас

находится в стадии развития. На данный момент не существует

официальной версии Linux, поэтому у разных людей она установлена

по разному. В книге указаны различия между такими системами и

рассмотрены некоторые альтернативы, где это возможно. Также в

книге содержится много информации, которая не каждому может

потребоваться. Такие моменты специально отмечены и могут быть

пропущены, если используется уже сконфигурированная система.

Также как и другие разработки, связанные с операционной

системой Linux, книга была написана на добровольных началах.

Однако, как и в любой добровольной работе, существует предел

предпринимаемым усилиям, а также знаниям и опыту автора. Это

означает, что данное руководство не обязательно также хорошо

написано, как если бы оно было написано на коммерческой основе.

Следует отметить, что в этой книге не полностью охвачены

многие проблемы, которые рассмотрены в других свободно

распространяемых руководствах и документациях. Особенно это

относится к описаниям к различным программам, например, к

особенностям использования mkfs(8). В данном руководстве описано

только назначение этой программы в объеме, необходимом для

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

имеются ссылки к другим руководствам и документациям, которые

обычно являются частью полного набора документации по системе

Linux.

У автора есть стремление развивать и улучшать эту разработку.

Просьба направлять все замечания (ошибки, новые идеи, информация о

различиях между различными версиями системы UNIX и т.д.) либо по

адресу электронной почты lars.wirzenius@helsinki.fi, либо обычной

почтой по адресу:

Lars Wirzenius / Linux docs

Hernesaarentie 15 A 2

00150 Helsinki

Finland

Автор хочет поблагадорить следующих людей, оказавших

поддержку при создании этой книги: Matt Welsh, Andy Oram, Olaf

Kirch, Adam Richter и других.

H.Peter Anvin, Remy Card, Theodore Ts'o и Stephen Tweedie

позволили использовать часть их работ в книге. Stephen Tweedie

также позволил использовать его сравнение файловых систем xia и

ext2.

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

Komarinski за публикацию в 1993 году его работ и других статей,

имеющих отношение к системному администрированию, в журнале Linux

Journal.

Автор выражает благодарность Erik Troan из Red Hat за

создание версии руководства в формате plain text, а также

следующим людям: Paul Caprioli, Ales Cepek, Marie-France

Declerfayt, Olaf Flebbe, Helmut Geyer, Larry Greenfield, Stephen

Harris, Jyrki Havia, Jim Haynes, York Lam, Timothy Andrew Lister,

Jim Lynch, Dan Poirier, Daniel Quinlam, Philippe Steindl.

1.1 Проект Документирования Системы Linux

Проект документирования системы Linux или LDP (Linux

Documentation Project), это свободная команда писателей,

корректоров и редакторов перед которыми стоит цель создания полной

документации по операционной системе Linux. Главным координатором

проекта является Matt Welsh, который был назначен Lars'ом

Wirzenius и Michael'ом K. Johnson.

Данное руководство является одним из набора распространяемых

руководств проекта LDP, который включает в себя "Руководство

Пользователя Системы Linux", "Руководство Системного

Администратора Системы Linux", "Руководство Сетевого

Администратора Системы Linux" и "Руководство Взломщика Ядра

Linux". Эти книги доступны в исходном формате LaTeX, .dvi формате

и в формате postscript через FTP:

ftp://sunsite.unc.edu/pub/Linux/docs/LDP

ftp://tsx-11.mit.edu/pub/linux/docs/guides

Для того, чтобы связаться с LDP, нужно послать письмо Matt'у

Welsh по указанному ниже адресу:

mdw@sunsite.unc.edu

Глава 2 Обзор Системы Linux

В этой главе дается обзор операционной системы Linux. Прежде

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

описание программ, реализующих эти функции. Цель главы - дать

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

более подробно позже.

2.1 Различные составляющие операционной системы

Любая UNIX-подобная операционная система состоит из ядра и

некоторых системных программ. Также существуют некоторые

прикладные программы для выполнения какой-либо задачи. Ядро

является сердцем операционной системы. Оно размещает файлы на

диске, запускает программы и переключает процессор и другое

оборудование между ними для обеспечения мультизадачности,

распределяет память и другие ресурсы между процессами,

обеспечивает обмен пакетами в сети и т.п. Ядро само по себе

выполняет только маленькую часть общей работы, но оно

предоставляет средства, обеспечивающие выполнение основных

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

аппаратным средствам предоставляя специальные средства для

обращения к периферии. Таким образом ядро позволяет контролировать

использовние аппаратных средств различными процессами и

обеспечивать некоторую защиту пользователей друг от друга.

Средства, предоставляемые ядром, используются через системные

вызовы (см. раздел 2 руководства для более подробной информации по

этому вопросу).

Системные программы используют средства, предоставляемые

ядром для обеспечения выполнения различных функций операционной

системы. Системные и все остальные программы выполняются 'на

поверхности ядра', в так называемом пользовательском режиме.

Существует некотоpая разница между системными и прикладными

программами. Прикладные программы предназначены для выполнения

какой-либо определенной задачи, в то время как системные программы

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

является прикладной программой, а программа telnet - системной,

хотя зачастую граница между ними довольно смутная.

Довольно часто операционная система содержит компиляторы и

соответствующие им библиотеки (GCC и C библиотеки для Linux), хотя

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

операционной системы. Документация, а иногда даже игры, могут

являться ее частью. Обычно состав операционной системы

определяется содержимым установочного диска или ленты, хотя дело

обстоит несколько сложнее, так как различные части операционной

системы разбросаны по разным FTP серверам во всем мире.

2.2 Важные составляющие ядра

Ядро системы Linux состоит из нескольких основных частей:

блок управления процессами, блок управления памятью, драйверы

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

другие небольшие процедуры.

Наиболее важные составляющие ядра (обеспечивающие

жизнеспособность системы) - это блок управления памятью и

процессами. Блок управления памятью обеспечивает распределение

областей памяти и swap-областей между процессами, составляющими

ядра и для кэш-буфера. Блок управления процессами создает новые

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

На самом нижнем уровне ядро содержит драйверы устройств для

каждого типа поддерживаемого оборудования. Существует довольно

большой набор различных драйверов, так как постоянно

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

одинаковых устройств, которые различаются только тем, как

происходит взаимодействие между самим устройством и драйвером.

Такое сходство позволяет использовать классы драйверов,

поддерживающих одинаковые операции. В каждом члене такого класса

используется однотипный интерфейс для ядра, но различные схемы

взаимодействия с устройством. Например, все драйверы жесткого

диска представляются для ядра абсолютно одинаково, то есть у них у

всех имеются такие операции как 'инициализация жесткого диска',

'чтение сектора N', 'запись сектора N'.

Некоторые функции, предоставляемые ядром, имеют одинаковые

свойства. Например, различные сетевые протоколы объединены в один

программный интерфейс - BSD socket библиотеку. Вот другой пример -

различные файловые системы, поддерживаемые системой Linux. Ядро

содержит виртуальную файловую систему (Virtual File System - VFS)

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

системы, а также драйвер для каждой поддерживаемой файловой

системы. При попытке доступа к какой-либо файловой системе запрос

проходит через VFS, откуда перенаправляется к соответствующему

драйверу файловой системы.

2.3 Основные функции UNIX системы

В этом разделе достаточно поверхностно рассматриваются

некоторые наиболее важные функции UNIX системы. Более подробно они

рассмотрены в следующих главах.

2.3.1 init

Единственную и самую важную функцую в UNIX системе

предоставляет пpоцесс init. Он запускается в любой UNIX системе

как самый первый процесс, а также завершает процедуpу загрузки

системы. При запуске init, продолжается процесс загрузки

(проверяются и устанавливаются файловые системы, запускаются

различные программы-демоны и т.д.).

Точный список того, что выполняется при запуске init, зависит

от версии программы. Обычно init предоставляет

однопользовательский режим, при котором никто не может

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

Некоторые версии используют понятие 'уровень запуска'. Например,

однопользовательский и многопользовательский режимы - это разные

уровни запуска. Также существуют дополнительные уровни, например

для запуска X-windows.

При работающей системе, две самые важные задачи программы

init - это удостоверится, что все программы-демоны getty работают

(т.е. имеется возможность подключения к системе) и адаптирование

orphan-процессов (т.е. процессов, чей родительский процесс был

уничтожен; в системе UNIX все процессы должны принадлежать одному

дереву процессов, поэтому orphan-процессы должны быть

адаптированы).

При завершении работы системы и перезапуске, init уничтожает

все оставшиеся процессы, демонтирует файловые системы и

останавливает процессор.

2.3.2 Подключение к системе с терминалов

Подключение к системе с терминалов (через последовательные

линии) и с главной консоли (если не запущены X) обеспечивается

программой getty. init запускает отдельный процесс getty для

каждого терминала. getty считавает имя пользователя и запускает

программу login, которая считывает пароль. Если имя и пароль

соответствуют одному пользователю, то login запускает оболочку.

При выходе из оболочки, то есть при выходе из системы, или при

завершении программы login в случае если имя пользователя и пароль

не подходят, init запускает новый процесс getty. Ядро не

контролирует подключения к системе, а только выполняет системные

программы.

2.3.3 Syslog

Иногда при работе ядра или различных системных программ

возникают ошибки, предупреждения и другие сообщения. Программа

syslog записывает все сообщения в файл так, что он может быть

впоследствии просмотрен. Syslog можно сконфигурировать так, что

сообщения будут сортироваться и записываться в разные файлы по

приоритету. Например, сообщения ядра часто направляются в

отдельный файл, так как эти сообщения наиболее важные и должны

регулярно просматриваться во избежание серьезных проблем.

2.3.4 Периодическое выполнение команд: cron и at

Как отдельныем пользователям, так и системному администратору

иногда требуется периодически запускать определенные команды.

Например, системному администратору может потребоваться

периодически запускать команду для очистки каталогов от временных

файлов (/tmp и /var/tmp), для предотвращения переполнения диска.

Для этого используется функция cron. У каждого пользователя

имеется файл crontab, в котором содержится список команд,

представленных к выполнению и количество раз, которое они должны

быть выполнены. Программа-демон crond обеспечивает своевременное

выполнение указанных команд.

Функция at идентична функции cron, только команда запускается

один раз в указанное время и запуск больше не повторяется.

2.3.5 Графический интерфейс пользователя

Как в системе UNIX так и в Linux, пользовательский интерфейс

не встраивается в ядро системы. Вместо этого он представляется

программами пользовательского уровня. Это применяется как к

текстовым, так и к графическим оболочкам.

Такой стандарт делает систему более гибкой, хотя и имеет свои

недостатки. Например, это легко позволяет создавать новые

интерфейсы для программ, что затрудняет изучение системы.

Первоначально используемой с системой Linux графической

оболочкой была система X Window System (сокращенно X). X не

реализует пользовательский интерфейс, а только оконную систему,

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

интерфейс. Три наиболее популярных версии графических интерфейсов

на основе X - это Athena, Motif и Open Look.

2.3.6 Работа с сетью

Сеть - это средство, позволяющее соединяться двум или более

компьютерам между собой.

UNIX-подобные операционные системы имеют широкий спектр

сетевых возможностей. Большинство базовых функций (файловые

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

реализованы посредством сети. Это может значительно облегчить

работу системного администратора, так как позволяет использовать

централизованное администрирование.

Однако, в этой книге поверхностно рассмотрены вопросы работы

с сетью. Для более подробной информации см. книгу "Руководство

Сетевого Администратора Системы Linux".

2.3.7 Подключение к системе через сеть

Подключение к системе через сеть работает несколько иначе,

чем обычное подключение. Существуют отдельные физические

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

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

к системе, существует отдельное виртуальное сетевое соединение и

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

запустить отдельный процесс getty для каждого возможного

виртуального соединения. Существуют также и другие способы

подключения к системе посредством сети. Например, telnet и rlogin

- основные службы в TCP/IP сетях.

При использовании сети для подключения к системе, кроме

большого количества процессов getty используется отдельная

программа-демон (при использовании как telnet так и login

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

попытки соединения с компьютером. Если опpеделяется попытка

соединения, то программа создает новый процесс - создает сама себя

для обработки этого соединения - а затем продолжает отслеживание

новых соединений. Создаваемый процесс идентичен программе getty.

2.3.8 Сетевые файловые системы

Одна из наиболее полезных функций, которая может быть

реализована с помощью сети, это разделение файлов через сетевую

файловую систему. Обычно используется система, называемая Network

File System или NFS, которая разработана корпорацией Sun.

При работе с сетевой файловой системой любые операции над

файлами, производимыми на локальном комьютере, передаются через

сеть на удаленную машину. При работе сетевой файловой системы

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

на компьютере, где она запущена. Таким образом разделение

информации посредством такой системы не требует внесения

каких-либо изменений в программу.

2.3.9 Почта

Электронная почта является самым важным средством связи между

компьютерами. Электронные письма хранятся в одном файле в

специальном формате. Для чтения и отправления писем применяются

специальные программы.

У каждого пользователя имеется отдельный "почтовый ящик"

(т.е. файл, где информация хранится в специальном формате), в

котром хранится приходящая почта. Если на комьютер приходит

письмо, то программа обработки почты находит файл почтового ящика

соответвующего пользователя и добавляет туда полученное письмо.

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

то письмо перенаправляется на этот компьютер, где проходит его

последующая обработка.

Почтовая система состоит из множества различных программ.

Доставка писем к локальным или удаленным почтовым ящикам

производится одной программой (например, sendmail или smail), в то

время как для обычной отправки или просмотра писем применяется

большое количетсво различных программ (например, Pine или elm).

Файлы почтовых ящиков обычно хранятся в каталоге /var/spool/mail.

2.3.10 Печать

В один момент времени принтером может пользоваться только

один пользователь. Поэтому для того, чтобы принтером могли

пользоваться сразу несколько пользователей, используется

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

принтеру. Все задания для принтера помещаются в буфеp. Когда

принтер заканчивает обработку одного задания, следуещее передается

к нему автоматически. Это значительно упрощает работу с принтером.

Программа обслуживания очереди к принтеру помещает

информацию, которая должна быть распечатана, на диск, то есть

текст располагается на диске, в то время как задание находится в

очереди. Это позволяет прикладным программам достаточно быстро

распечатывать тексты, помещая их в очередь, так как для

продолжения работы приложению не требуется дожидаться окончания

распечатки.

2.4 Структура файловой системы

Файловая система разделяется на несколько частей: файловая

система root, состоящая из каталогов /bin, /lib, /etc, /dev и

некоторых других, файловая система /usr, где хранятся различные

программы и данные не подлежащие изменению, файловая система /var,

где содержатся изменяемые файлы (такие как log файлы и др.) и

файловая система /home, которая состоит из личных каталогов

пользователей. Разделение может существенно отличатся от выше

указанного в зависимости от работы системного администратора и

конфигурации аппаратного обеспечения.

В главе 5 сруктура файловой системы рассматривается более

подробно (см. также Linux Filesystem Standard).

Глава 3 Запуск Системы и Перезагрузка

В этой главе описывается то, что происходит в системе Linux

при ее запуске и перезагрузке и как это правильно сделать.

3.1 Обзор

Процесс включения компьютера и загрузки операционной системы

называется запуском. Во время запуска сначала загружется небольшая

программа, называемая начальнам загрузчиком, которая в свою

очередь загружет в память и запускает операционную систему.

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

жестком диске или дискете. Потому как Linux это довольно сложная и

большая система, ее запуск производится в два этапа, хотя первично

загружаемый код должен быть достаточно маленьким (несколько сотен

байт).

На разных компьютерах начальная загрузка производится по

разному. На персональных компьютерах сначала считывется первый

сектор дискеты или жесткого диска (посредством процедур BIOS),

который назывется загрузочным сектором. В этом секторе находится

начальный загрузчик, который затем загружает операционную систему,

которая может быть расположена в другом месте на диске или

где-либо еще.

После загрузки Linux, инициализируются драйверы устройств, а

затем запускается init(8), который в свою очередь запускает другие

процессы, позволяющие подключаться к системе и обеспечивающие

нормальную работу. Этот этап рассмотрен ниже более подробно.

Для перезапуска системы сначала все процессы должны быть

завершены (т.е. закрыты все используемые ими файлы и др.), затем

демонтируются файловые системы и swap-области и, в конце концов,

на экран выдается сообщение о том, что питание может быть

отключено. Если же такая процедура не будет произведена, то могут

произойти серьезные сбои в последующей работе системы. Например,

информация, хранящаяся в кэш буфере файловой системы, будет

утеряна, нарушится целостность файловой системы и, следовательно,

она будет не пригодна к использованию.

3.2 Процесс запуска при близком рассмотрении

Linux может быть запущена как с дискет, так и с жесткого

диска. В книге "Установка и запуск Linux" подробно описан запуск

системы.

При включении компьютера, сначала BIOS производит

тестирование оборудования, а затем запуск операционной системы.

Сначала выбирается устройство, с которого будет производится

запуск (обычно первый дисковод, если в него вставлена дискета, в

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

порядок выбора может быть настроен) и считывается самый первый

сектор, который называется загрузочным. Его также называют MBR

(Master Boot Record), так как у жесткого диска может быть

несколько разделов и у кажодого может быть свой загрузочный

сектор.

В загрузочном секторе находится небольшая программа

(относительно небольшая чтобы она могла разместится в одном

секторе), которая загружает и запускает операционную систему. При

загрузке с дискеты, в загрузочном секторе находится код, который

обеспечивает только считывание ядра системы в определенную заранее

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

файловых систем. Ядро записано на дискете как последовательность

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

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

какая-нибудь файловая система, используя загpузчик LILO.

При загрузке с жесткого диска, код, расположенный в MBR,

проверяет таблицу разделов (также расположенную в MBR), определяет

активный раздел (раздел, используемый при загрузке), считывает

загрузочный сектор этого раздела и запускает считанный код. Код,

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

диска, выполняет те же функции, что и код, находящийся в

загрузочном секторе дискеты: он считывает ядро из выбранного

раздела, а затем запускает его. Однако здесь существует много

тонкостей, так как использование отдельного раздела диска только

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

загрузочном секторе раздела, не просто последовательно считывает

информацию с диска, а использует считывание по секторам.

Существует несколько способов решения этой проблемы, но наиболее

простым из них является использование LILO загрузчика (информацию

по установке и настройке LILO см. в документации по LILO).

При загрузке с использованием LILO обычно сразу же

загружается и запускается ядро, заданное по умолчанию, однако

можно сконфигурировать LILO так, чтобы можно было бы загрузить

одно из нескольких возможных ядер или даже другую операционную

систему (в добавление к Linux). Также можно указать требуемое ядро

или операционную сиситему во время загрузки. При нажатии клавиши

ALT, SHIFT или CTRL (после загрузки LILO) будет выдан запрос, где

можно указать ядро или систему. Однако при конфигурировании можно

установить опцию, при которой LILO будет всегда выдвать такой

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

ядро, установленное по умолчанию.

Существуют и другие загрузчики, подобные LILO, однако у него

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

так как он был написан специально для Linux. Например, имеется

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

изменения некоторых опций, встроенных в ядро. Среди подобных

загрузчиков (bootlin, bootactv и др.) LILO является наилучшим

выбором.

Загрузка системы как с жесткого диска, так и с дискет имеет

свои преимущества, хотя загрузка с жесткого диска считается лучше

и быстрее, так как она позволяет избежать неудобства, связанные со

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

удобна. Например, при установке системы или при повреждении

файловой системы.

После того, как ядро системы загружено в память (с жесткого

диска или с дискет) и запущено, выполняются приблизительно

следующие действия:

Так как ядро Linux установлено в запакованном виде, то прежде

всего оно само себя распаковывает. Это выполняет небольшая

программа, расположенная в самом начале кода.

Если на компьютере установлена видеоплата sVGA,

поддерживающая нестандартные текстовые режимы (такие как 100x40),

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

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

запрашивался системой во время загрузки. Режим также может быть

установлен при помощи LILO или rdev(8).

Затем ядро тестирует аппаратное обеспечение (жесткие диски,

дисководы, сетевые адаптеры и др.) и конфигурирует соответствующие

драйверы устройств. Во время этого процесса на экран выдаются

подсказывающие сообщения. Вот примерно то, что происходит во время

загрузки:

LILO boot:

Loading linux.

Console: colour EGA+ 80x25, 8 virtual consoles

Serial driver version 3.94 with no serial options enabled

tty00 at 0x03f8 (irq = 4) is a 16450

tty01 at 0x02f8 (irq = 3) is a 16450

lp_init: lp1 exists (0), using polling driver

Memory: 7332k/8192 available (300k kernel code, 384k reserved, 176k data)

Floppy drive(s): fd0 is 1.44M, fd1 is 1.2M

Loopback device init

Warning WD8013 board not found at i/o = 280

Math coprocessor using irq13 error reporting

Partition check:

hda: hda1 hda2 hda3

VFS: Mounted root (ext filesystem)

Linux version 0.99.pl9-1 (root@haven) 05/01/93 14:12:20

Хотя текст сообщений довольно сильно различается на разных

системах и зависит от аппаратного обеспечения, версии Linux и

конфигурации.

После этого, ядро пытается смонтиpовать файловую систему

root. Место, куда она будет смонтирована, устанавливается во время

компиляции или с помощью rdev или LILO. Тип файловой системы

определяется автоматически. Если система root не монтиpуется,

например по причине того, что ядро не содержит драйвер

соответствующей файловой системы, то система зависает.

Файловая система root обычно монтиpуется в режиме read-only

(это устанавливается таким же образом как и узел монтиpования).

Это делает возможным проверку файловой системы в то время как она

смонтиpована, хотя проверка файловой системы, установленной в

режиме read-write не рекомедуется.

Затем ядро запускает программу init(8) в фоновом режиме (она

расположена в каталоге /sbin/init) которая становится главным

процессом. init выполняет различные функции, требуемые при

установке системы.

В конце концов init запускает программу getty(8) для

виртуальных консолей и последовательных линий. Эта программа

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

и терминалов, подключенных через последовательные порты. init

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

После этого процесс запуска системы считается завершенным и

система готова к работе.

3.3 Завершение работы и выключение системы

При выключении системы Linux необходимо выполнять некоторые

процедуры. Если этого не сделать, то файловые системы и файлы

могут повредиться. Это происходит по причине наличия в Linux

дискового кэша, информация из которого записывается на диск только

через некоторые промежутки времени. Это значительно повышает

производительность системы, но также означает, что если просто

выключить питание компьютера, то в дисковом кэше может находится

большое количество информации и файловая система может быть

частично повреждена, так как на диск обычно сбрасывается только

часть информации.

Другой причиной для этого является мультизадачность системы,

где одновременно может выполняться несколько процессов и

выключение питания может быть гибельным для системы. Особенно это

касается компьютеров, на которых одновременно работает несколько

пользователей.

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

выключения системы - это shutdown(8) и halt(8), расположенные в

каталоге /sbin. Есть два обычных способа их применения.

Если система установлена на компьютере, где работает один

пользователь, то обычно завершают работу всех программ, работу

всех виртуальных консолей, входят в систему под пользователем root

(или остаются подключенными под этим пользователем, только в этом

случае нужно перейти в корневой каталог во избежание проблем с

демонтированием файловых систем), затем выполняется команда halt

или shutdown -h now (при желании можно установить задержку,

которая устанавливается заменой параметра now на знак '+' и числом

минут, по истечении которых будет завершена работа системы) или

просто halt.

Если на копьютере, на котором установлена система, работает

одновременно несколько пользователей, то возможно использование

команды shutdown в следующем формате:

shutdown -h +time message,

где time это время, по истечении которого работа системы будет

завершена, а message - сообщение, в котором объясняется причина

выключения. Напpимеp,

root# shutdown -h +10 'We will install a new disk. System should

> be back on-line in three hours.'

Выполнение этой команды предупредит каждого пользователя,

работающего в системе, что она будет выключена через 10 минут.

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

включая xterm.

Broadcast message from root (ttyp0) Wed Aug 2 01:03:25 1995...

We will install a new disk. System should

be back on-line in three hours.

The system is going DOWN for system halt in 10 minutes !!

Выдача сообщения автоматически повторяется несколько раз

перед прекращением работы системы и каждый раз с более коротким

интервалом. При использовании halt нельзя установить задержку,

поэтому эта программа редко применяется на многопользовательских

системах.

Замечание: файл /etc/inittab содержит команды, выполняющиеся

при выключении системы.

После запуска процесса прекращения работы системы,

демонтируются все файловые системы (кроме системы root),

завершается выполнение всех процессов и программ-демонов, затем

демонтируется файловая система root и вся работа завершается.

После этого выдается сообщение, в котором говорится, что можно

отключить питание. Только после этого питание компьютера может

быть отключено.

В некоторых случаях невозможно завершить этот процесс

соответствующим образом. Например, при повреждении кода ядра в

памяти, нарушается его работа или система зависает и просто нет

возможности ввести новую команду можно только надеяться, что

ничего не повредится и выключить питание. Если же неполадки не

такие серьезные (например вышла из строя клавиатура), а ядро и

программа update работают нормально, то наилучшим вариантом будет

подождать несколько минут, пока update(8) не сохранит на диске

информацию, хранящуюся в кэш-буфере и только после этого выключить

питание.

Некоторые выключают копьютер после трехкратного выполнения

команды sync(8), которая сбрасывает на диск содержимое буфера, и,

после прекращения обращения к диску, выключают компьютер. Если в

момент выключения работа всех программ была завершена, то эта

процедура почти идентична выполнению команды shutdown. Однако,

файловые системы не демонтируются, чт