Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Изучение Linux.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.5 Mб
Скачать

3.1Основные конфигурационные файлы

В обычной ситуации процесс init помимо запуска процессов getty выполняет 2 основных действия:

  • запускает скрипт /etc/init.d/rc;

  • запускает скрипт rc из того же каталога с опцией, равной уровню выполнения (обычно rc 3).

В файле /etc/init.d/rc содержатся команды инициализации системы, в том числе команды установки системных переменных, загрузки таблиц раскладки клавиатуры (командой loadkeys) и системного шрифта (команда consolechars), монтирования и проверки файловых систем, загрузки модулей, задания предпочитаемой графической оболочки и т.д.

Прежде чем рассматривать функции, выполняемые скриптом rc, надо сказать несколько слов о каталоге /etc/init.d. Этот каталог вообще играет важную роль в процессе загрузки, поскольку он содержит основные скрипты (программы на языке командного процессора shell), служащие для организации процесса загрузки.

Каталог /etc/init.d содержит следующий набор подкаталогов:

  • boot.d

  • rc0.d

  • rc1.d

  • rc2.d

  • rc3.d

  • rc4.d

  • rc5.d

  • rc6.d

  • init.d

Если вы просмотрите (например, с помощью команды ls -l) содержимое подкаталогов rcX.d, то увидите, что в этих подкаталогах содержатся не файлы, а только ссылки на файлы скриптов, находящиеся в других каталогах, а именно (за редким исключением), в каталоге /etc/rc.d/init.d. Названия этих ссылок имеют имена, начинающиеся либо с буквы K, либо с буквы S. Подкаталог init.d содержит по одному скрипту для каждой из возможных в системе служб (NFS, sendmail, httpd и т.п.).

Теперь вспомним, что процесс init после скрипта rc.sysinit запускает скрипт rc с опцией, равной заданному уровню выполнения. Этот скрипт предназначен в общем случае для перевода системы из одного уровня выполнения на другой. В процессе начальной загрузки этот скрипт переводит систему из однопользовательского режима на уровень, задаваемый по умолчанию. Общий алгоритм работы rc состоит в следующем. При переходе на уровень X сначала просматривается каталог rcX.d и для всех ссылок, которые начинаются на K, вызываются файлы, на которые идет ссылка, с опцией stop, т.е. осуществляется останов соответствующих служб (которые не должны работать на данном уровне выполнения). Затем запускаются службы, которые на данном уровне выполнения должны быть запущены. Это осуществляется путем последовательного просмотра ссылок, которые начинаются с символа S, и запуска соответствующих скриптов с опцией start. Из сказанного ясно, что буквы (символы) S и K, с которых начинаются имена ссылок в подкаталогах rcX.d, происходят от start и kill, соответственно. Заметим еще, что после S и K в именах ссылок стоят двузначные номера, которые служат для задания порядка запуска скриптов.

Главные скрипты располагаются в директории /etc/init.d. Они выполняют всю работу и все симлинки указывают на них. Симинки для запуска и остановки указывают на скрипт в директории /etc/rc.d/ с таким же именем. Поэтому скрипты могут быть вызваны с различными параметрами, например start, stop, restart, reload, status. Когда скрипту передается аргумент stop, то вызывается К симлинк. Когда скрипту передается аргумент start, то вызывается S симлинк.

Есть только одно исключение. симлинки начинающиеся с S в директориях rc0.d и rc6.d не могут быть запущены никогда. Они могут бать вызваны только с параметром stop для остановки чего либо. Логика состоит в том, что если вы перезапустили или остановили систему, вам не надо запускать что либо, а только остановить систему.

Одна из последних ссылок вида SXXname, используемых скриптом rc на уровнях 2–5, является ссылка на скрипт /etc/rc.d/rc.local. Как сказано в самом этом файле, этот скрипт выполняется после всех других скриптов в процессе инициализации системы, поэтому если вы хотите, чтобы в процессе загрузки были выполнены какие-то дополнительные команды или ваши персональные настройки, то их целесообразно поместить именно сюда.

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

Другие файлы, влияющие на процесс загрузки (SLES10)

Boot

Этот скрипт выполняет команды для старта системы независимо от выбранного уровня выполнения. Если система загружается впервые после установки, скрипт инициализирует начальную системную конфигурацию. Запускается демон blogd. Скрипт отвечает за установку времени, проверку файловых систем и запуск всех сценариев в /etc/init.d/boot.d с именем, которое начинает с S.

boot.local

Запускает дополнительные команды для выполнения до перехода на runlevel. Это напоминает назначение AUTOEXEC.BAT в системах DOS.

boot.setup

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

halt

Этот скрипт выполняется при переходе на runlevel 0 или 6. Выполняет действия для останова или перезагрузки. Отключение системы или перезагрузка, действие зависит от выбранного runlevel.

rc

Этот сценарий определяет список стартовых и стоповых скриптов для выполнения перехода на выбранный runlevel.

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

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

  • /etc/lilo.conf — файл, определяющий конфигурацию загрузчика lilo.Если используется загрузчик grub, то это файл /boot/grub/menu.lst ;

  • /etc/modprobe.conf или /etc/modules.conf)— файл, определяющий конфигурацию загружаемых модулей ядра (см. man-страницу по modules.conf);

  • /etc/fstab— содержит информацию, необходимую для автоматического монтирования файловых систем ;

  • /etc/passwd— различная регистрационная информация, включая пароли;

  • /etc/profile — глобальный файл профилей— устанавливает переменную $PATH и другие важнейшие переменные; заглянув в него, вы увидите, что в нем вызываются все файлы из подкаталога /etc/profile.d, в частности, файл, задающий параметры локализации системы;

  • /etc/bashrc — глобальный файл конфигурации bash, устанавливает синонимы (алиасы) и функции, и т.п.;

  • /etc/issue— содержит сообщение, выдаваемое на терминал перед входом в систему (перед запросом имени и пароля); однако редактировать этот файл с целью изменения текста сообщения не стоит, потому что сам он формируется инициализационным скриптом /etc/rc.d/rc.local;

  • /etc/motd— устанавливает сообщение, выдаваемое пользователю после входа в систему (после правильного ввода пароля);

  • /etc/redhat-release— содержит название и номер версии дистрибутива, используется скриптом rc.local.

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

Процессы при регистрации пользователя

Последовательность событий при полной регистрации выглядит так.

  1. Пользователь вводит регистрационное имя по приглашению login: процесса getty.

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

  3. login запрашивает пароль и сверяет имя и пароль с записанными в файле /etc/passwd.

  4. login выводит на экран из файла /etc/motd "сообщение дня".

  5. login запускает интерпретатор shell, указанный в бюджете пользователя иустанавливает переменную среды TERM.

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

О файлах запуска надо сказать несколько слов дополнительно. В домашнем каталоге пользователя находятся несколько личных файлов конфигурации. Если таких файлов в домашнем каталоге нет, то после входа в систему будут прочитаны глобальные файлы, содержащие значения "по умолчанию". Если в качестве оболочки используется Bourne-shell, выполняется файл .profile, если C-shell— .login и .cshrc, если Korn-shell— .profile и .kshrc (мы в дальнейшем рассматриваем только случай оболочки bash).

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

/home/your_home/.bashrc— устанавливает ваши алиасы (т.е. псевдонимы или альтернативные имена команд, удобные для упрощения ввода часто используемых команд, имеющих значительную длину из-за большого количества опций) и функции;

/home/your_home/.bash_profile или /home/your_home/.profile— устанавливает переменные среды и запускает ваши программы.

Если такие файлы существуют (заметим, что это скрытые файлы), они будут считаны после входа в систему, и команды, записанные в них, будут выполнены.

Если вы хотите, чтобы при входе пользователя в систему выполнялся какой-то скрипт, то можно вызов этого скрипта поместить в файл ~/.profile. Это может сделать и сам пользователь.

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

if test $USER = jim; then

echo 'Здравствуйте, уважаемый Jim!' fi