RussianLDP Рейтинг@Mail.ru
WebMoney: 
WMZ Z294115950220 
WMR R409981405661 
WME E134003968233 
YandexMoney: 
41001198119846 
E-gold:
5128052

Глава 7. Установка скриптов загрузки

Содержание
Вступление
Как происходит загрузка с помощью этих скриптов?
Настройка скрипта setclock
Нужен ли мне скрипт loadkeys?
Настройка скрипта sysklogd
Настройка скрипта localnet
Создание файла /etc/hosts
Настройка скрипта network

Вступление

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

Как происходит загрузка с помощью этих скриптов?

Linux использует специальные возможности загрузки, называемые SysVinit. Они основаны на концепции уровней запуска (runlevels). Они могут сильно отличаться на различных системах, и я не могу сказать, что скрипты из <подставьте сюда имя любого дистрибутива> будут работать в LFS. У LFS свой подход к этим скриптам, но они также соответствуют стандартам.

SysVinit (с этого момента я буду называть его init) работает, используя схему уровней запуска. Всего есть семь (от 0 до 6) уровней запуска (точнее, есть больше уровней запуска, но они предназначены для специальных целей и обычно не используются). Документация по init содержит более полную информацию по этому вопросу, и каждый из них сообщает компьютеру, что ему делать при запуске соответствующего уровня. Уровень запуска по умолчанию 3. Вот описание разных уровней загрузки и их назначение:

0: выключение компьютера,
1: однопользовательский режим,
2: многопользовательский режим без поддержки сети,
3: многопользовательский режим с поддержкой сети,
4: зарезервирован или используется как 3,
5: тоже самое, что и 4, он обычно используется для графического входа в систему (например, xdm из X, xdm или kdm из KDE),
6: перезагрузка компьютера.

Для изменения уровня запуска используется команда init <runlevel>, где <runlevel> нужный уровень запуска. Например, для перезагрузки компьютера можно использовать команду init 6. Это и делает команда reboot, а команда halt является аналогом init 0.

Есть ряд каталогов в /etc/rc.d, которые выглядят как rc?.d, где ? является уровнем запуска, и rcsysinit.d, которые содержат ряд символических ссылок. Часть из них начинается с K, другие начинаются с S, затем идут две цифры уровня инициализации. K означает остановку (kill) сервиса, а S запуск (start). Число означает порядок, в котором запускаются скрипты, от 00 до 99: чем меньше номер, тем раньше вызывается скрипт. Когда init переключается на другой уровень загрузки, одни сервисы останавливаются, другие запускаются.

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

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

Вот описание параметров, которые можно передавать скриптам запуска:

  • start: Запуск сервиса.
  • stop: Остановка сервиса.
  • restart: Сервис останавливается и запускается заново.
  • reload: Это команда для обновления настроек сервиса. Она обычно вызывается после изменения конфигурационного файла скрипта, но сервису не нужно перезапускаться.
  • status: Показывает, запущен ли сервис, и какой у него PID.

Вы спокойно можете настраивать и изменять процесс загрузки (после установки системы LFS). Файлы, описываемые здесь, являются только примерами и, возможно, Вы сделаете их лучше.

Настройка скрипта setclock

Этот скрипт setclock считывает время с внутренних часов Вашего компьютера (также известных как часы CMOS или BIOS) и конвертирует его в локальное время, используя файл /etc/localtime (если внутренние часы установлены в GMT) или не делает этого (если они установлены в местное время). Нет способа автоматического определения того, установлены ли внутренние часы Вашего компьютера в GMT или нет, поэтому Вам надо будет это настроить самим.

Установите переменную UTC в 0 (нуль), если Ваши системные часы не установлены в GMT в нижеописанном файле.

Создайте файл /etc/sysconfig/clock запуском команды:

cat > /etc/sysconfig/clock << "EOF"
# Begin /etc/sysconfig/clock
UTC=1
# End /etc/sysconfig/clock
EOF

Вы можете теперь посмотреть очень хорошие советы по настройке времени в системе LFS на http://www.linuxfromscratch.org/hints/downloads/files/time.txt. Они содержат информацию по временным зонам, UTC и переменной окружения TZ.

Нужен ли мне скрипт loadkeys?

Если Вы решили компилировать файл раскладки клавиатуры внутри ядра в конце главы 6, то, строго говоря, нет надобности запускать скрипт loadkeys, поскольку ядро само установит нужную раскладку для Вас. Вы можете все равно запускать его, если хотите. Это может пригодиться, если Вы запускаете разные ядра и забыли или не хотите компилировать все ядра со встроеной раскладкой.

Если Вы решили, что Вам не нужен этот скрипт или просто не хотите его использовать, то удалите ссылку /etc/rc.d/rcsysinit.d/S70loadkeys.

Настройка скрипта sysklogd

Скрипт sysklogd вызывает программу syslogd с параметром -m 0. Этот параметр отключает периодическую отметку времени, которую syslogd по умолчанию пишет в лог-файл каждые 20 минут. Если Вы хотите использовать эту метку, то исправьте соответствующим образом скрипт sysklogd. Смотрите man syslogd для сбора более полной информации.

Настройка скрипта localnet

Часть скрипта localnet устанавливает имя системы. Для этого надо настроить файл /etc/sysconfig/network.

Создайте файл /etc/sysconfig/network и укажите имя системы запуском:

echo "HOSTNAME=lfs" > /etc/sysconfig/network

Здесь "lfs" надо заменить на желаемое имя компьютера для вызова. Вам не надо здесь вводить FQDN (Fully Qualified Domain Name, полное доменное имя). Эту информацию Вы позже укажете в файле /etc/hosts.

Создание файла /etc/hosts

Если Вы хотите настроить сетевую карту, надо определить IP-адреса, FQDN и возможные псевдонимы в файле /etc/hosts. Его синтаксис следующий:

<IP address> myhost.mydomain.org aliases

Вы должны убедиться, что IP-адреса в частной сети соответствуют допустимым. Корректными значениями являются:

Классы сетей
A            10.0.0.0
B            172.16.0.0 до 172.31.0.0
C            192.168.0.0 до 192.168.255.0

Корректным IP-адресом может быть 192.168.1.1. Корректным FQDN для этого IP может быть www.linuxfromscratch.org.

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

Если сетевая карта не будет настраиваться, создайте файл /etc/hosts запуском:

cat > /etc/hosts << "EOF"
# Begin /etc/hosts (no network card version)
127.0.0.1 <HOSTNAME>.mydomain.com <HOSTNAME> localhost
# End /etc/hosts (no network card version)
EOF

Если собираетесь настраивать сетевую карту, то создайте файл /etc/hosts запуском:

cat > /etc/hosts << "EOF"
# Begin /etc/hosts (network card version)
127.0.0.1 localhost.localdomain localhost
192.168.1.1 <HOSTNAME>.mydomain.org <HOSTNAME>
# End /etc/hosts (network card version)
EOF

Само собой, 192.168.1.1 и < HOSTNAME>.mydomain.org надо заменить на Ваши варианты (как Вам нравится, или как установил системный администратор).

Настройка скрипта network

Этот раздел нужен только в том случае, если Вы собираетесь настраивать сетевую карту.

Если у Вас таковая отсутствует, Вам не надо создавать файлы конфигурации сетевой карты. В этом случае вам надо удалить все ссылки network изо всех каталогов с уровнями запуска (/etc/rc.d/rc*.d).

Настройка шлюза по умолчанию

Если Вы подключены к локальной сети, то Вам надо установить шлюз по умолчанию для этой машины. Это делается добавлением соответствующих параметров в файл /etc/sysconfig/network запуском следующей команды:

cat >> /etc/sysconfig/network << "EOF"
GATEWAY=192.168.1.2
GATEWAY_IF=eth0
EOF

Значения GATEWAY и GATEWAY_IF надо заменить на соответствующие настройкам Вашей сети. GATEWAY содержит IP-адрес шлюза по умолчанию, а GATEWAY_IF содержит вид используемого шлюзом интерфейса.

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

Какие из интерфейсов будут запущены или остановлены скриптом network описывается в каталоге /etc/sysconfig/network-devices. Этот каталог содержит файлы вида ifconfig.xyz, где xyz является именем сетевого интерфейса (например, eth0 или eth0:1)

Если Вы решите переименовать или переместить каталог /etc/sysconfig/network-devices, Вам надо будет отредактировать соответствующим образом файл /etc/sysconfig/rc и обновить network_devices в соответствии с новыми путями.

Теперь Вам надо создать файлы в этом каталоге. Следующая команда создаст пример файла ifconfig.eth0:

cat > /etc/sysconfig/network-devices/ifconfig.eth0 << "EOF"
ONBOOT=yes
IP=192.168.1.1
NETMASK=255.255.255.0
BROADCAST=192.168.1.255
EOF

Само собой, значения переменных надо будет изменить на правильные для Вашей системы. Если переменная ONBOOT установлена в yes, скрипт network запустит этот интерфейс при загрузке системы. Если же будет установлено что-либо другое, то этот интерфейс будет проигнорирован скриптом.

Поиск

 

Найди своих коллег!