Перейти к тексту

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

При первом входе в developerWorks для Вас будет создан профиль. Выберите информацию отображаемую в Вашем профиле — скрыть или отобразить поля можно в любой момент.

Вся введенная информация защищена.

  • Закрыть [x]

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

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

Вся введенная информация защищена.

  • Закрыть [x]

Учебник для экзамена LPI 201: Запуск системы

Администрирование, средний уровень (LPIC-2) тема 202

Дэвид Мерц, автор, Gnosis Software, Inc.
Дэвид Мерц (David Mertz) - большой знаток в области открытых стандартов и только умеренно пугает многословием. С Дэвидом можно связаться по mertz@gnosis.cx его жизнь описывается более подробно на http://gnosis.cx/dW/. Предложения и комментарии по этой, предыдущей или будущей статьям приветствуются. Также вы можете посмотреть книгу Дэвида Text Processing in Python.

Описание:  Это второй из восьми учебников, с помощью которых David Mertz продолжает готовить вас к экзамену Linux Professional Institute® Администрирование, средний уровень (LPIC-2) 201. Здесь вы изучите этапы, которые система Linux™ проходит в процессе запуска, и их настройку.

Больше статей из этой серии

Дата:  31.08.2005
Уровень сложности:  средний

Активность:  4589 просмотров
Комментарии:  

Запуск системы и процессы загрузки

Что происходит, когда включается компьютер с ОС Linux?

Давайте разделим процесс загрузки ОС Linux на девять этапов, которые имеют место практически для любой конфигурации ОС Linux:

  1. Первый этап загрузки -- это считывание BOIS'ом компьютера или другими программно-аппаратными средствами MBR жесткого диска или другого загрузочного устройства (например, компакт-диска, гибкого диска или сетевого загрузочного устройства, etc.).

  2. Начинается работа загрузчика. Linux на архитектуре x86 обычно использует LILO или GRUB. Некоторые старые системы могут использовать loadlin чтобы загрузиться через вспомогательный DOS-раздел. В системах Power PC® это может быть BootX или yaboot. Вообще, загрузчик -- это простая программа, которая, тем не менее, знает, где искать ядро Linux, может выбрать, какую загружать из нескольких версий ядра или даже выбрать другую операционную систему на той же машине.

  3. Загрузка ядра Linux.

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

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

  5. Запускается процесс init, прародитель всех остальных процессов в ОС Linux.

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

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

    Одна из установок в файле /etc/inittab особенно важна. Это строка, похожая на:

    id:5:initdefault:

    Обычно она находится ближе к началу файла и устанавливает уровень запуска системы. Уровень запуска определяет, какие действия будут предприняты в оставшихся предписаниях файла /etc/inittab.

    Что происходит, когда сценарий /etc/inittab отработан? И особенно, какие именно файлы и директории принимают участие в процессе?

  7. Инициализация, независимая от уровня запуска. Существуют ряд действий, которые будут выполняться независимо от установленного уровня запуска. Эти шаги обозначены в /etc/inittab строками, похожими на:

    # System initialization.
    si::sysinit:/etc/rc.d/rc.sysinit

    В некоторых системах Linux (в основном в системах на основе Debian), вы скорее увидите строчки, более похожие на следующие:

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

    В последнем случае файл /etc/init.d/rcS -- это просто скрипт, который по очереди запускает скрипты /etc/rcS.d/[Ss]??*. С другой стороны, если в вашей системе используется /etc/rc.d/rc.sysinit, для выполнения инициализации достаточно одного длинного скрипта, содержащегося в этом файле.

  8. Инициализация, зависимая от уровня запуска. Фактически, вы можете определить столько действий, связанных с уровнем запуска, сколько захотите, и при этом каждое действие может относиться к одному или нескольким уровням запуска. Как правило, /etc/inittab будет содержать строки типа:

    l0:0:wait:/etc/rc.d/rc 0
    # ...
    l5:5:wait:/etc/rc.d/rc 5
    l6:6:wait:/etc/rc.d/rc 6

    В свою очередь, скрипт /etc/rc.d/rc будет управлять всеми файлами, названными /etc/rc$1.d/[KkSs]??*. В следующем примере можно увидеть, что в данной системе, стартующей с уровнем запуска 5, будут выполняться (по порядку):

    /etc/rc5.d/K15postgresql
    /etc/rc5.d/S01switchprofile
    /etc/rc5.d/S05harddrake
    ...
    /etc/rc5.d/S55sshd
    ...
    /etc/rc5.d/S99linuxconf
    /etc/rc5.d/S99local

    Файлы, начинающиеся с "K" или "k" являются убивающими (kill) скриптами, они завершают процессы или упорядочивают их действия (последствия). Файлы, которые начинаются с "S" или "s" -- это запускающие (startup) скрипты, они начинают новые процессы или подготавливают систему к работе с этим уровнем запуска. Большинство из них являются скриптами shell, и большая часть их будет ссылками (часто на /etc/init.d/).

    В то время когда система Linux стартует с определенным уровнем запуска, вы хотите зарегистрироваться в системе как пользователь. Чтобы авторизация прошла успешно, используется программа getty. Множество разновидностей программ на основе getty используется создателями дистрибутивов, типа agetty, mgetty, и mingetty. Но все они делают примерно и то же.



  9. Войдите в систему в приглашении. Уже знакомый нам /etc/inittab обычно запускает getty на одном или нескольких виртуальных экранах и делает это для нескольких уровней запуска. Уровни определены в строках типа:

    # Run gettys in standard runlevels
    1:2345:respawn:/sbin/mingetty tty1
    2:2345:respawn:/sbin/mingetty tty2
    3:2345:respawn:/sbin/mingetty tty3
    4:2345:respawn:/sbin/mingetty tty4
    5:2345:respawn:/sbin/mingetty tty5
    6:2345:respawn:/sbin/mingetty tty6

    Цифра в начале показывает, в каком виртуальном терминале будет работать программа getty; следующие несколько цифр -- это те уровни запуска, при которых это случится (например, запуск mingetty при каждом из уровней 2, 3, 4 и 5).

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


Понятие уровня запуска

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


Листинг 1. Уровни запуска
                    
# Default runlevel. The runlevels used by Mandrake Linux are:
#   0 - Halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you don't have networking)
#   3 - Full multiuser mode
#   4 - Unused
#   5 - X11
#   6 - Reboot (Do NOT set initdefault to this)

Это соглашение, как можно видеть, используется в дистрибутиве Mandrake Linux, но большинство дистрибутивов используют то же самое соглашение. Может так оказаться, что текстовые или встроенные дистрибутивы не используют некоторые из уровней запуска, но все равно ими будут зарезервированы эти же номера.


Конфигурационные строки в /etc/inittab

Вы видели множество строчек из файла /etc/inittab в примерах, но что же конкретно они означают? Каждая строка имеет формат:

id:runlevels:action:process

Поле id это короткое сокращение, обозначающее конфигурационную строчку. (1 - 4 буквы в свежих версиях init; 1 - 2 в более старых). Поле runlevels уже обсуждалось. Следующее поле action обозначает действие, предпринимаемое строкой. Некоторые действия могут быть "специальными," такие как:

ca::ctrlaltdel:/sbin/shutdown -t3 -r now

Эта строка устанавливает действие для последовательности клавиш Ctrl-Alt-Delete (независимо от уровня запуска). Но большинство действий просто запускает соответствующие процессы. Частичный список действий включает:

  • respawn: Процесс будет перезапущен всякий раз, когда завершится (как в случае с getty).
  • wait:Процесс будет начат однажды, когда будет введен указанный уровень запуска, и init будет ждать его завершения.
  • once: Процесс будет выполнен однажды, когда будет введен указанный уровень запуска.
  • boot: Процесс будет выполнен во время загрузки системы (но после sysinit). Уровень запуска не имеет значения.

2 из 6 | предыдущая | следующая

Комментарии



static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Linux
ArticleID=176292
TutorialTitle=Учебник для экзамена LPI 201: Запуск системы
publish-date=08312005
author1-email=mailto:mertz@gnosis.cx?subject=Program with SVG&cc=dwxed@us.ibm.com
author1-email-cc=

Теги

Help
Используйте форму поиска, чтобы найти любой контент с данным тегом в My developerWorks. Используйте ползунок, чтобы отразить больше или меньше тегов.

КнопкаПопулярные теги отображает самые распространенные теги для данной области контента (например: Java, Linux, WebSphere).

Кнопка Мои теги отображает Ваши теги для данной области контента (например: Java, Linux, WebSphere).

Используйте форму поиска, чтобы найти любой контент с данным тегом в My developerWorks. Кнопка Популярные теги отображает самые распространенные теги для данной области контента (например: Java, Linux, WebSphere). Кнопка Мои теги отображает Ваши теги для данной области контента (например: Java, Linux, WebSphere).