Использование rc во FreeBSD 5.X и последующих версиях



Во FreeBSD недавно была интегрирована из NetBSD система rc.d, используемая для старта системы. Многие из файлов в каталоге /etc/rc.d предназначены для основных сервисов, они могут управляться параметрами start, stop, и restart. Например, sshd(8) может быть перезапущен следующей командой:

# /etc/rc.d/sshd restart

Эта процедура похожа для других сервисов. Конечно, сервисы обычно запускаются автоматически при загрузке системы, как указано в rc.conf(5). Например, включение даемона Network Address Translation при запуске выполняется простым добавлением следующей строки в /etc/rc.conf:

natd_enable="YES"

Если natd_enable="NO" уже присутствует, просто измените NO на YES. Скрипты rc автоматически загрузят все другие зависимые сервисы, как описано ниже.

Поскольку система rc.d в основном предназначена для запуска/отключения сервисов во время запуска/отключения системы, стандартные параметры start, stop и restart будут работать только если установлена соответствующая переменная в /etc/rc.conf. Например, команда выше sshd restart будет работать только если переменная sshd_enable в файле /etc/rc.conf установлена в YES. Для выполнения скриптов независимо от установок в /etc/rc.conf, параметры start, stop или restart необходимо задавать с префиксом ''force''. Например, для перезапуска sshd независимо от установок в /etc/rc.conf, выполните следующую команду:

# /etc/rc.d/sshd forcerestart

Проверить состояние переменной в файле /etc/rc.conf легко: запустите соответствующий скрипт из rc.d с параметром rcvar. Проверка переменной для sshd выполняется следующей командой:

# /etc/rc.d/sshd rcvar

# sshd

$sshd_enable=YES

Замечание: Вторая строка (# sshd) это вывод команды sshd, а не консоль root.

Чтобы определить, запущен ли сервис, существует параметр status. Например для проверки того, запущен ли sshd, выполните:

# /etc/rc.d/sshd status

sshd is running as pid 433.

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

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

Starting background file system checks in 60 seconds.

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

Функционирование многих сервисов системы зависит от корректной работы других сервисов. Например, NIS и другие основанные на RPC сервисы могут не запуститься, пока не загрузится rpcbind (portmapper). Для разрешения этой проблемы, в начале каждого скрипта в комментарии включаются информация о зависимостях и другие метаданные. Программа rcorder(8) используется для разбора этих комментариев во время старта системы для определения порядка, в котором должны вызываться системные сервисы в соответствии с зависимостями. В начало каждого стартового файла должны быть включены следующие строки:

• PROVIDE: Задает имя сервиса, предоставляемого этим файлом.

• REQUIRE: Список сервисов, необходимых этому сервису. Этот файл будет запущен после указанных сервисов.

• BEFORE: Список сервисов, зависящих от этого сервиса. Этот файл будет запущен до указанных сервисов.

Используя этот метод, администратор может легко контролировать системные сервисы без использования ''уровней запуска'', как в некоторых других операционных системах UNIX.

Дополнительную информацию о системе rc.d можно найти на страницах справочника rc(8) и rc.subr(8).

Настройка карт сетевых интерфейсов

В наши дни мы не представляем себе компьютера без сетевого подключения. Добавление и настройка сетевой карты это обычная задача любого администратора FreeBSD.

Поиск подходящего драйвера

В первую очередь определите тип используемой карты (PCI или ISA), модель карты и используемый в ней чип. FreeBSD поддерживает многие PCI и ISA карты. Обратитесь к Списку поддерживаемого оборудования вашего релиза чтобы узнать, поддерживается ли карта.

Как только вы убедились, что карта поддерживается, потребуется определить подходящий драйвер. В файлах /usr/src/sys/conf/NOTES и /usr/src/sys/arch/conf/NOTES находится список драйверов сетевых интерфейсов с информацией о поддерживаемых чипсетах/картах. Если вы сомневаетесь в том, какой драйвер подойдет, прочтите страницу справочника к драйверу. Страница справочника содержит больше информации о поддерживаемом оборудовании и даже о проблемах, которые могут возникнуть.

Если ваша карта широко распространена, вам скорее всего не потребуется долго искать драйвер. Драйверы для широко распространенных карт представлены в ядре GENERIC, так что ваша карта должна определиться при загрузке, примерно так:

dc0: <82c169 PNIC 10/100BaseTX> port 0xa000-0xa0ff mem 0xd3800000-0xd38

000ff irq 15 at device 11.0 on pci0

dc0: Ethernet address: 00:a0:cc:da:da:da

miibus0: <MII bus> on dc0

ukphy0: <Generic IEEE 802.3u media interface> on miibus0

ukphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto

dc1: <82c169 PNIC 10/100BaseTX> port 0x9800-0x98ff mem 0xd3000000-0xd30

000ff irq 11 at device 12.0 on pci0

dc1: Ethernet address: 00:a0:cc:da:da:db

miibus1: <MII bus> on dc1

ukphy1: <Generic IEEE 802.3u media interface> on miibus1

ukphy1: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto

В этом примере две карты используют имеющийся в системе драйвер dc(4).

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

• Простейший способ — просто загрузить модуль ядра сетевой карты с помощью kldload(8). Не все драйверы доступны в виде модулей; например, модули отсутствуют для ISA карт.

• Вместо этого, вы можете статически включить поддержку карты, скомпилировав собственное ядро. Информацию о том, какие параметры нужно включать в ядро, можно получить из /usr/src/sys/conf/NOTES, /usr/src/sys/arch/conf/NOTES и страницы справочника драйвера сетевой карты. За более подробной информацией о сборке собственного ядра обращайтесь к Гл. 8. Если карта была обнаружена вашим ядром (GENERIC) во время загрузки, собирать ядро не потребуется.

Настройка сетевой карты

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

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

% ifconfig

dc0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500

   inet 192.168.1.3 netmask 0xffffff00 broadcast 192.168.1.255

     ether 00:a0:cc:da:da:da

   media: Ethernet autoselect (100baseTX <full-duplex>)

   status: active

dc1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500

   inet 10.0.0.1 netmask 0xffffff00 broadcast 10.0.0.255

   ether 00:a0:cc:da:da:db

   media: Ethernet 10baseT/UTP

   status: no carrier

lp0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500

lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384

   inet 127.0.0.1 netmask 0xff000000

tun0: flags=8010<POINTOPOINT,MULTICAST> mtu 1500

Замечание: Старые версии FreeBSD могут потребовать запуска ifconfig(8) с параметром -a, за более подробным описанием синтаксиса ifconfig(8) обращайтесь к странице справочника. Учтите также, что строки, относящиеся к IPv6 (inet6 и т.п.) убраны из этого примера.

В этом примере были показаны следующие устройства:

• dc0: первый Ethernet интерфейс

• dc1: второй Ethernet интерфейс

• lp0: интерфейс параллельного порта

• lo0: устройство loopback

• tun0: туннельное устройство, используемое ppp

Для присвоения имени сетевой карте FreeBSD использует имя драйвера и порядковый номер, в котором карта обнаруживается при инициализации устройств. Например, sis2 это третья сетевая карта, использующая драйвер sis(4).

В этом примере, устройство dc0 включено и работает. Ключевые признаки таковы:

1. UP означает, что карта настроена и готова.

2. У карты есть интернет (inet) адрес (в данном случае 192.168.1.3).

3. Установлена маска подсети (netmask; 0xffffff00, то же, что и 255.255.255.0).

4. Широковещательный адрес (в данном случае, 192.168.1.255).

5. Значение MAC адреса карты (ether) 00:a0:cc:da:da:da

6. Выбор физической среды передачи данных в режиме автовыбора (media: Ethernet autoselect (100baseTX <full-duplex>)). Мы видим, что dc1 была настроена для работы с 10baseT/UTP. За более подробной информацией о доступных драйверу типах среды обращайтесь к странице справочника.

7. Статус соединения (status) active, т.е. несущая обнаружена. Для dc1, мы видим status: no carrier. Это нормально, когда Ethernet кабель не подключен к карте.

Если ifconfig(8) показывает примерно следующее:

dc0: flags=8843<BROADCAST,SIMPLEX,MULTICAST> mtu 1500

           ether 00:a0:cc:da:da:da

это означает, что карта не была настроена.

Для настройки карты вам потребуются привилегии пользователя root. Настройка сетевой карты может быть выполнена из командной строки с помощью ifconfig(8), но вам потребуется делать это после каждой перезагрузки системы. Подходящее место для настройки сетевых карт это файл /etc/rc.conf.

Откройте /etc/rc.conf в текстовом редакторе. Вам потребуется добавить строку для каждой сетевой карты, имеющейся в системе, например, в нашем случае, было добавлено две строки:

ifconfig_dc0="inet 192.168.1.3 netmask 255.255.255.0"

ifconfig_dc1="inet 10.0.0.1 netmask 255.255.255.0 media 10baseT/UTP"

Замените dc0, dc1, и так далее на соответствующие имена ваших карт, подставьте соответствующие адреса. Обратитесь к страницам справочника сетевой карты и ifconfig(8), за подробной информацией о доступных опциях и к странице справочника rc.conf(5) за дополнительной информацией о синтаксисе /etc/rc.conf.

Если вы настроили сетевую карту в процессе установки системы, некоторые строки, касающиеся сетевой карты, могут уже присутствовать. Внимательно проверьте /etc/rc.conf перед добавлением каких-либо строк.

Отредактируйте также файл /etc/hosts для добавления имен и IP адресов различных компьютеров сети, если их еще там нет. За дополнительной информацией обращайтесь к man.hosts.5; и к /usr/share/examples/etc/hosts.


Дата добавления: 2018-10-26; просмотров: 169; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!