diff --git a/ru_RU.KOI8-R/books/handbook/boot/chapter.sgml b/ru_RU.KOI8-R/books/handbook/boot/chapter.sgml
index 25dcfbc969..332019aa0e 100644
--- a/ru_RU.KOI8-R/books/handbook/boot/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/boot/chapter.sgml
@@ -1,839 +1,843 @@
АндрейЗахватовПеревод на русский язык: Процесс загрузки FreeBSDОписаниезагрузканачальная загрузкаПроцесс включения компьютера и загрузки операционной системы
называется процессом первоначальной загрузки, или просто
загрузкой. Процесс загрузки FreeBSD предоставляет большие
возможности по гибкой настройке того, что происходит при запуске системы,
позволяя вам выбирать из различных операционных систем, установленных на
одном и том же компьютере, или даже из различных версий той же самой
операционной системы или установленного ядра.Эта глава подробно описывает параметры, которые вы можете изменить
для настройки процесса загрузки FreeBSD. Под этим подразумевается все,
что происходит до начала работы ядра FreeBSD, обнаружения устройств и
запуска &man.init.8;. Если вы не совсем уверены, то это происходит,
когда выводимый текст меняет цвет с ярко-белого на серый.После чтения этой главы вы будете знать:Из каких частей состоит система начальной загрузки FreeBSD, и
как эти части взаимодействуют.Параметры, которые вы можете передать компонентам начальной
загрузки FreeBSD для управления этим процессом.Основы работы &man.device.hints.5;Только для x86Эта глава описывает процесс загрузки FreeBSD только для систем
на основе архитектуры Intel x86.Проблема загрузкиВключение компьютера и запуск операционной системы приводят к
интересной дилемме. По определению до запуска операционной системы
компьютер не умеет ничего. В том числе и не знает, как запускать программы
с диска. Так что компьютер не может запустить программу с диска без
операционной системы, но программы операционной системы находятся на
диске, но как запустить операционную систему?Эта проблема имеет параллели с одной проблемой из книги
Приключения барона Мюнхаузена. Герой провалился в
болото, и вытащил сам себя, ухватив за волосы и потянув. В эпоху начала
компьютеризации термин начальная загрузка
применялся к механизму, используемому для загрузки операционной системы,
и затем был сокращен до просто загрузки.На оборудовании архитектуры x86 за загрузку операционной системы
отвечает BIOS (Basic Input/Output System). Для этого BIOS ищет на
жестком диске MBR (Master Boot Record), которая должна располагаться в
определенном месте на диске. BIOS может загрузить и запустить MBR, и
предполагается, что MBR может взять на себя остальную работу, связанную с
загрузкой операционной системой.BIOS
- Basic Input/Output System
+
+
+
+ Basic Input/Output System
+ BIOSЕсли на вашем диске установлена только одна операционная система, то
стандартной MBR будет достаточно. Такая MBR выполняет поиск на диске
первого загрузочного слайса, после чего запускает с этого слайса код
загрузки оставшейся части операционной системы.Если на ваших дисках установлено несколько операционных систем, то
вы можете установить другую MBR, ту, что может выдать список различных
операционных систем и позволит вам выбрать одну из них для загрузки.
FreeBSD поставляется с одной из такой MBR, которую можно установить;
другие производители операционных систем также предоставляют свои
MBR.Оставшаяся часть системы начальной загрузки FreeBSD разделяется на
три этапа. Первый этап запускается из MBR, и он знает достаточно для
перевода компьютера в особое состояние и загрузки второго этапа. Второй
этап может делать несколько больше до запуска третьего этапа. Третий
этап заканчивает работу по загрузке операционной системы. Работа
разделена на эти три этапа, потому что стандарты ПК ограничивают размеры
программ, которые могут быть запущены на первом и втором этапах.
Последовательное выполнение работ позволяет FreeBSD получить более гибкий
загрузчик.ядроinitЗатем стартует ядро, которое начинает опознавать устройства и
выполняет их инициализацию. После завершения процесса своей загрузки,
ядро передает управление пользовательскому процессу с именем
&man.init.8;, который выполняет проверку дисков на возможность
использования. Затем &man.init.8; запускает пользовательский процесс
настройки ресурсов, который монтирует файловые системы, выполняет
настройку сетевых адаптеров для работы в сети и вообще осуществляет
запуск всех процессов, обычно выполняемых в системе FreeBSD при
загрузке.MBR и первый, второй и третий этапы загрузкиMBR, /boot/boot0Master Boot Record (MBR)MBR для FreeBSD находится в /boot/boot0. Это
копия MBR, так как настоящая MBR должна
располагаться в специальном месте диска, вне области FreeBSD.boot0 очень прост, так как программа
в MBR может иметь размер, не превышающий 512
байт. Если вы установили MBR FreeBSD и несколько операционных
систем на ваш жесткий диск, то во время загрузки вы увидите нечто
похожее на следующее:Образец экрана boot0F1 DOS
F2 FreeBSD
F3 Linux
F4 ??
F5 Drive 1
Default: F2Известно, что другие операционные системы, в частности,
&windows; 95, записывают поверх существующей MBR свою собственную.
Если так случилось в вашем случае, или же вы хотите заменить
существующую MBR на MBR от FreeBSD, то воспользуйтесь следующей
командой:&prompt.root; fdisk -B -b /boot/boot0 deviceЗдесь device является устройством, с
которого вы загружаетесь, таким, как ad0 в
случае первого диска IDE, ad2 в случае первого
диска IDE на втором контроллере IDE, da0 для
первого диска SCSI и так далее.Однако если вы используете Linux и предпочитаете, чтобы процесс
загрузки управлялся через LILO, вы можете
отредактировать файл /etc/lilo.conf для FreeBSD
или выбрать
в процессе установки FreeBSD. Если вы установили менеджер загрузки
FreeBSD, то вы можете снова загрузить Linux и изменить конфигурационный
файл /etc/lilo.conf для
LILO, добавив следующий параметр:other=/dev/hdXY
table=/dev/hdb
loader=/boot/chain.b
label=FreeBSDкоторый позволит загружать FreeBSD и Linux посредством
LILO. В нашем примере мы используем
XY для обозначения номера диска и раздела.
Если вы используете диск SCSI, то вам может
потребоваться заменить /dev/hdXY на что-то
типа /dev/sdXY, где снова используется
обозначение XY. Строка
может быть опущена, если обе
операционные системы располагаются на одном и том же диске. Вы можете
теперь запустить /sbin/lilo -v для того, чтобы ваши
изменения были восприняты системой, что должно быть подтверждено
сообщениями на экране.Этап первый, /boot/boot1, и этап второй,
/boot/boot2Концептуально первый и второй этапы загрузки являются частями одной
и той же программы, в той же самой области диска. Из-за ограничений на
объем дискового пространства они были разделены на две, но вы всегда
должны устанавливать их вместе.Они располагаются в загрузочном секторе загрузочного слайса,
то есть там, где boot0 или
любая другая программа из MBR ожидает найти
программу, которую следует запустить для продолжение процесса загрузки.
Файлы в каталоге /boot являются копиями реальных
файлов, которые хранятся вне файловой системы FreeBSD.boot1 очень прост, так как он тоже может иметь
размер, не превышающий 512 байт, и знает достаточно о метке
диска FreeBSD, хранящей информацию о слайсе, для того,
чтобы найти и запустить boot2.boot2 устроен несколько более сложно, и умеет
работать с файловой системой FreeBSD в объёме, достаточном для
нахождения в ней файлов, и может предоставлять простой интерфейс для
выбора и передачи управления ядру или загрузчику.Так как загрузчик устроен
гораздо более сложно, и дает удобный и простой способ настройки
процесса загрузки, boot2 обычно запускает его,
однако раньше его задачей был запуск непосредственно самого
ядра.Образец экрана boot2
>> FreeBSD/i386 BOOT
Default: 0:ad(0,a)/kernel
boot:
Если вам когда-либо понадобится заменить установленные
boot1 и boot2, то используйте
утилиту &man.disklabel.8;:&prompt.root; disklabel -B disksliceЗдесь diskslice являются диском и
слайсом, с которых вы загружаетесь, такие, как
ad0s1 в случае первого слайса на первом диске
IDE.Режим Dangerously DedicatedЕсли вы используете только имя диска, к примеру,
ad0, в команде &man.disklabel.8; вы
создадите диск в режиме эксклюзивного использования, без слайсов.
- Это, скорее всего, вовсе н то, что вы хотите сделать, так что дважды
+ Это, скорее всего, вовсе не то, что вы хотите сделать, так что дважды
проверьте параметры команды &man.disklabel.8;, прежде, чем нажать
Return.Третий этап, /boot/loaderзагрузчикПередача управления загрузчику является последним, третьим этапом в
процессе начальной загрузки, а сам загрузчик находится в файловой
системе, обычно как /boot/loader.Загрузчик являет собой удобный в использовании инструмент для
настройки при помощи простого набора команд, управляемого более мощным
интерпретатором с более сложным набором команд.Процесс работы загрузчикаВо время инициализации загрузчик пытается произвести поиск
консоли, дисков и определить, с какого диска он был запущен.
Соответствующим образом он задаёт значения переменных и запускает
интерпретатор, которому могут передаваться пользовательские команды
как из скрипта, так и в интерактивном режиме.загрузчикконфигурация загрузчикаЗатем загрузчик читает файл
/boot/loader.rc, который по умолчанию использует
файл /boot/defaults/loader.conf, устанавливающий
подходящие значения по умолчанию для переменных и читает файл
/boot/loader.conf для изменения в этих
переменных. Затем с этими переменными работает
loader.rc, загружающий выбранные модули и
ядро.И наконец, по умолчанию загрузчик выдерживает 10-секундную паузу,
ожидая нажатия клавиши, и загружает ядро, если этого не произошло.
Если ожидание было прервано, пользователю выдается
- приглашение, которое воспринимает простой набор команд, в помощью
+ приглашение, которое воспринимает простой набор команд, с помощью
которых пользователь может изменить значения переменных, выгрузить
все модули, загрузить модули и окончательно продолжить процесс
загрузки или перезагрузить машину.Встроенные команды загрузчикаДалее следуют наиболее часто используемые команды загрузчика.
Полное описание всех имеющихся команд можно найти на странице
справки о команде &man.loader.8;.autoboot секундыПродолжает загрузку ядра, если не будет прерван в течение
указанного в секундах промежутка времени. Он выводит счетчик,
и по умолчанию выдерживается интервал в 10 секунд.boot
-параметрыимя ядраПродолжить процесс загрузки указанного ядра, если оно было
указано, и с указанными параметрами, если они были
указаны.boot-confПовторно провести тот же самый процесс автоматической
настройки модулей на основе переменных, что был произведен при
загрузке. Это имеет смысл, если до этого вы выполнили команду
unload, изменили некоторые переменные,
например, наиболее часто меняемую kernel.help
темаВывод сообщений подсказки из файла
/boot/loader.help. Если в качестве темы
указано слово index, то выводится список
имеющихся тем.include имя файла
…Выполнить файл с указанным именем. Файл считывается и
его содержимое интерпретируется строчка за строчкой. Ошибка
приводит к немедленному прекращению выполнения команды
include.load типимя файлаЗагружает ядро, модуль ядра или файл указанного типа с
указанным именем. Все аргументы после имени файла передаются в
файл.ls маршрутВыводит список файлов по указанному маршруту или в корневом
каталоге, если маршрут не был указан. Если указан параметр
, будут выводиться и размеры файлов.lsdev Выводится список всех устройств, с которых могут быть
загружены модули. Если указан параметр ,
выводится дополнительная информация.lsmod Выводит список загруженных модулей. Если указан параметр
, то выводится дополнительная
информация.more имя файлаВывод указанного файла с паузой при выводе каждой строки
LINES.rebootВыполнить немедленную перезагрузку машины.set переменнаяset
переменная=значениеЗадает значения переменных окружения загрузчика.unloadУдаление из памяти всех загруженных модулей.Примеры использования загрузчикаВот несколько примеров практического использования
загрузчика:однопользовательский режимЧтобы просто загрузить ваше ядро обычным образом, но в
однопользовательском режиме:boot -sДля выгрузки обычных ядра и модулей, а потом просто загрузить
ваше старое (или другое) ядро:kernel.oldunloadload kernel.oldВы можете использовать kernel.GENERIC
для обозначения стандартного ядра, поставляемого на установочном
диске, или kernel.old для обращения к ранее
установленному ядру (после того, как, например, вы обновили или
отконфигурировали новое ядро).Для загрузки ваших обычных модулей с другим ядром
используйте такие команды:unloadset kernel="kernel.old"boot-confДля загрузки скрипта конфигурации ядра (автоматизированный
скрипт, который выполняет то, что вы обычно делаете в
конфигураторе ядра во время загрузки):load -t userconfig_script /boot/kernel.confВзаимодействие с ядром во время загрузкиядровзаимодействия во время загрузкиКак только ядро окажется загруженным при помощи загрузчика (обычный способ) или boot2 (минуя загрузчик), оно проверяет
флаги загрузки, если они есть, и действует соответствующим
образом.ядрофлаги загрузкиФлаги загрузки ядраВот наиболее часто используемые флаги загрузки:во время инициализации ядра запрашивать устройство для
его монтирования в качестве корневой файловой системы.загрузка с компакт-диска.запустить UserConfig для конфигурации ядра во время
загрузкипосле загрузки перейти в однопользовательский режимво время запуска ядра выводить более подробную
информациюЕсть и другие флаги загрузки, обратитесь к странице
справочника по &man.boot.8; для выяснения подробной информации по
ним.TomRhodesТекст предоставил device.hintsХинты устройствЭта функция присутствует только во FreeBSD 5.0 и последующих
версиях, но не в более ранних.Во время начального запуска системы загрузчик &man.loader.8;
производит чтение файла &man.device.hints.5;. В этом файле
хранится необходимая для загрузки ядра информация, задаваемая в виде
переменных, которую иногда называют хинтами для устройств (device
hints). Эти хинты устройств используются
драйверами устройств для их конфигурации.Хинты для устройств могут быть также заданы в приглашении начального загрузчика Стадии 3. Переменные
могут быть добавлены при помощи команды set, удалены
посредством unset и просмотрены командой
show. В этот момент могут быть также переопределены
переменные, заданные в файле /boot/device.hints.
Хинты для устройств, введённые в начальном загрузчике, не сохраняются, и
при следующей перезагрузке будут утеряны.После загрузки системы для выдачи значений всех переменных можно
воспользоваться командой &man.kenv.1;.Синтаксически в файле /boot/device.hints в
каждой строке определяется по
одной переменной, в качестве метки начала комментария используется
стандартный символ #. Строки строятся следующим
образом:hint.driver.unit.keyword="value"Синтаксис для начального загрузчика Стадии 3 таков:set hint.driver.unit.keyword=valuedriver определяет имя драйвера устройства,
unit соответствует порядковому номеру модуля
устройства, а keyword является ключевым словом хинта.
В качестве ключевых слов могут применяться следующие опции:at: задаёт шину, к которой подключено
устройство.port: задаёт начальный адрес используемого
диапазона ввода/вывода (I/O).irq: задаёт используемый номер запроса на
прерывание.drq: задаёт номер канала DMA.maddr: задаёт физический адрес памяти,
занимаемый устройством.flags: устанавливает различные битовые флаги
для устройства.disabled: если установлено в значение
1, то устройство не используется.Драйверы устройств могут поддерживать (и даже требовать) другие
хинты, здесь не перечисленные, поэтому рекомендуется просматривать
справочные страницы по этим драйверам. Для получения дополнительной
информации обратитесь к страницам справки по
&man.device.hints.5;, &man.kenv.1;, &man.loader.conf.5; и
&man.loader.8;.initInit: инициализация управления процессамиПосле того, как ядро завершит загрузку, оно передает управление
пользовательскому процессу &man.init.8;, который расположен
в файле /sbin/init или в файле, маршрут к которому
указан в переменной init_pathзагрузчика.Процесс автоматической перезагрузкиПроцесс автоматической перезагрузки проверяет целостность
имеющихся файловых систем. Если это не так, и утилита
&man.fsck.8; не может исправить положение, то
&man.init.8; переводит систему в однопользовательский режим для того,
чтобы системный администратор сам разобрался с возникающими
проблемами.Однопользовательский режимоднопользовательский режимконсольВ этот режим можно перейти во время процесса автоматической перезагрузки,
при ручной загрузке с параметром
или заданием переменной boot_single для программы
loader.Этот режим может быть также вызван запуском программы
&man.shutdown.8; без параметров перезагрузки
() или останова () из
многопользовательского
режима.Если режим доступа к системной консоли console
установлен в файле /etc/ttys в
insecure, то система выведет запрос на ввод пароля
пользователя root перед переходом в
однопользовательский режим.Незащищённая консоль в /etc/ttys# name getty type status comments
#
# Если консоль помечена как "insecure", то init будет запрашивать пароль
# пользователя root при переходе в однопользовательский режим.
console none unknown off insecureОбозначение консоли как insecure означает,
что вы считаете физический доступ к консоли незащищённым, и хотите,
чтобы только тот, кто знает пароль пользователя
root, мог воспользоваться однопользовательским
режимом, но это не значит, что вы хотите работать с консолью
небезопасным способом. Таким образом, если вы хотите добиться
защищённости, указывайте insecure, а
не secure.Многопользовательский режиммногопользовательский режимЕсли &man.init.8; определит, что ваши файловые системы
находятся в полном порядке, или после того, как пользователь выйдет
из однопользовательского
режима, система перейдет в многопользовательский режим, работа
в котором начинается с настройки ресурсов системы.файлы rcНастройка ресурсов (rc)Система настройки ресурсов считывает настройки, применяемые по
умолчанию, из файла /etc/defaults/rc.conf, а
настройки, специфичные для конкретной системы, из
/etc/rc.conf, после чего осуществляется
монтирование файловых систем, перечисленных в файле
/etc/fstab, запуск сетевых служб, различных
системных даемонов и, наконец, выполнение скриптов запуска
дополнительно установленных пакетов.Страница справочника по &man.rc.8; является хорошим источником
- информации о системе настройки ресурсов. так же, как и
+ информации о системе настройки ресурсов, так же, как и
самостоятельное изучение скриптов.Процесс остановки системыshutdownВо время контролируемого процесса остановки системы через утилиту
&man.shutdown.8; программа &man.init.8; будет
пытаться запустить скрипт /etc/rc.shutdown, после
чего будет посылать всем процессам сигнал TERM, а
затем и KILL тем процессам, которые ещё не завершили
свою работу.Для выключения машины с FreeBSD на аппаратных платформах и системах,
которые поддерживают управление электропитанием, просто воспользуйтесь
командой shutdown -p now для немедленного отключения
электропитания. Чтобы просто перезагрузить систему FreeBSD,
воспользуйтесь командой shutdown -r now. Для запуска
команды &man.shutdown.8; вам необходимо быть пользователем
root или членом группы
operator. Кроме того, можно также
воспользоваться командами &man.halt.8; и &man.reboot.8;, пожалуйста,
обратитесь к соответствующим страницам справки и справочной странице по
команде &man.shutdown.8; для получения дополнительной информации.Для управления электропитанием требуется наличие поддержки
&man.acpi.4; в ядре или в виде загруженного модуля при использовании
FreeBSD 5.X, а для FreeBSD 4.X необходима поддержка
&man.apm.4;.
diff --git a/ru_RU.KOI8-R/books/handbook/config/chapter.sgml b/ru_RU.KOI8-R/books/handbook/config/chapter.sgml
index d533592e1c..70659213e9 100644
--- a/ru_RU.KOI8-R/books/handbook/config/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/config/chapter.sgml
@@ -1,3006 +1,3092 @@
ChernLeeНаписал MikeSmithОсновывается на учебнике, написанном MattDillonи на tuning(7), написанном АндрейМельникПеревод на русский язык: ДенисПеплинВалерийКравчукНастройка и оптимизацияВведениенастройка системыоптимизация системыОдин из важных аспектов &os; это настройка системы.
Правильная настройка системы поможет избежать головной боли при
последующих обновлениях. Эта глава описывает большую часть процесса
настройки &os;, включая некоторые параметры, которые можно
установить для оптимизации системы &os;.После прочтения этой главы вы узнаете:Как эффективно работать с файловыми системами и разделами
подкачки.Основы настройки rc.conf и системы запуска
приложений /usr/local/etc/rc.d.Как настроить и протестировать сетевую карту.Как настроить виртуальные хосты на сетевых устройствах.Как использовать различные файлы конфигурации в
/etc.Как оптимизировать &os;, используя переменные
sysctl.Как увеличить скорость работы дисков и изменить ограничения,
накладываемые ядром.Перед прочтением этой главы вам следует:Понять основы &unix; и &os; ().Ознакомиться с основами конфигурации/компиляции ядра
().Начальное конфигурированиеРазделы дискаразделы диска/etc/var/usrОсновы построения разделовВо время разметки жёсткого диска с помощью &man.disklabel.8;
или &man.sysinstall.8;, важно помнить, что скорость чтения и записи
данных уменьшается от внешних к внутренним трекам
диска. Самые маленькие и самые
- часто используемые файловые системы (корневую и раздел подкачки)
+ часто используемые файловые системы (корневая и раздел подкачки)
должны быть расположены в начале
диска, в то время как самые большие, такие, как
/usr, в конце. Самым оптимальным считается
следующий порядок расположения файловых систем: root, swap,
/var, /usr.Размер файловой системы /var определяется
предназначением машины. /var
используется для хранения почтовых ящиков, очередей печати и
лог файлов. Размер почтовых ящиков и лог файлов может расти
неограниченно в зависимости от количества пользователей
системы и от того, как долго хранятся лог-файлы. Большинству
пользователей никогда не потребуется гигабайт, но помните, что
/var/tmp должен быть достаточно большим для
пакетов.В разделе /usr содержит большинство
- файлов, необходимых для поддержки системы, &man.ports.7;
- (порты, рекомендуется) и исходные тексты (опционально).
+ файлов, необходимых для поддержки системы, порты
+ (&man.ports.7;, рекомендуется) и исходные тексты (опционально).
Оба эти каталога опциональны при установке. Для этого
раздела рекомендуется как минимум 2 гигабайта.При установке размера разделов, не забудьте принять во внимание
рост размера требуемого системе дискового пространства.
Переполнение одного раздела даже при наличии свободного места на
другом может вызвать затруднения.Многие пользователи обнаружили, что размер разделов,
предлагаемый &man.sysinstall.8;'ом по умолчанию, иногда
меньше подходящего для разделов /var и
/. Тщательно планируйте размер разделов и
не жалейте места.Раздел подкачкиразмер раздела подкачкираздел подкачкиКак правило, размер раздела подкачки должен быть равен
удвоенному размеру оперативной памяти. Например, если на машине
установлено 128 мегабайт памяти, раздел
подкачки должен быть 256 мегабайт. Системы с меньшим
количеством памяти могут работать лучше с большим объёмом
раздела подкачки. Не рекомендуется устанавливать размер
раздела подкачки меньше 256 мегабайт, необходимо также
принять во внимание возможное наращивание объема установленной
на машине памяти.
Алгоритмы кэширования VM настроены на максимальное быстродействие, когда
размер раздела подкачки равен как минимум удвоенному размеру
памяти. Заниженный размер раздела подкачки может привести к
неэффективной работе постраничного сканирования VM и вызвать
проблемы при увеличении объёма памяти.На больших системах с несколькими SCSI дисками (или несколькими
IDE дисками, находящимися на разных контроллерах),
рекомендуется создавать раздел подкачки на каждом диске (до четырёх
дисков). Разделы подкачки должны быть примерно
одного размера. Ядро не накладывает ограничений на размер раздела
подкачки, но внутренние структуры позволяют иметь общий размер
разделов подкачки, равный наибольшему, умноженному на четыре.
Выделение под разделы подкачки примерно одинакового места позволить
ядру оптимально расположить разделы подкачки. Установка
размера подкачки больше требуемого нормальна, даже если этот
объем не используется. В этих условиях может быть проще
восстановиться после зависания программы перед тем, как
возникнет необходимость перезагрузки.Зачем нужны разделы?Некоторые пользователи считают, что лучше использовать
один большой раздел, но есть несколько причин, по которым этого
лучше не делать. Во-первых, у
каждого раздела свои характеристики, и отделяя их, можно
выполнить соответствующие настройки. Например, корневая и
файловая система и /usr в основном
предназначены для чтения, без большого объема записи.
В то же время множество операций чтения и записи
выполняется в /var
и /var/tmp.При правильном размещении и выборе размера разделов
системы, фрагментация в более маленьких разделах, куда часто
записываются данные, не перенесётся на остальные разделы.
Размещение самых часто используемых разделов ближе к началу диска
увеличит скорость ввода/вывода там, где она нужна больше всего.
Хотя производительность важна и для больших дисков,
передвижение их ближе к концу диска не повлечёт
значительного уменьшения быстродействия по сравнению с перемещением
ближе к концу диска /var.
И, наконец, разделы существуют и из соображений
безопасности. Наличие маленького аккуратного корневого раздела,
доступного только для чтения даёт значительные шансы на "выживание"
после краха системы.Основные настройкиrc файлыrc.confОсновные настройки системы располагаются в
/etc/rc.conf. Этот файл вмещает широкий спектр
конфигурационной информации, используемой при загрузке системы.
Имя этого файла прямо отражает его назначение, это файл настройки
для файлов rc*.Администратор должен сделать записи в
- rc.conf чтобы переопределить строки по умолчанию из
+ rc.conf, чтобы переопределить строки по умолчанию из
/etc/defaults/rc.conf. Файлы по умолчанию нельзя
- копировать в /etc - они вмещают значения по
+ копировать в /etc — они вмещают значения по
умолчанию, а не примеры значений. Все специфичные для данной системы
изменения должны быть сделаны в файле
rc.conf.Существует несколько методов для отделения общей конфигурации для
группы систем от конкретной для данной системы в целях уменьшения объема
работы администратора. Рекомендуемый метод
- - прописать общую конфигурацию в отдельный файл, например, в
+ — прописать общую конфигурацию в отдельный файл, например, в
/etc/rc.conf.site, и включить его название в
/etc/rc.conf, который вмещает только специфичную
для данной системы информацию.Поскольку rc.conf читается
&man.sh.1;, есть тривиальный способ сделать это. Например:rc.conf: . rc.conf.site
hostname="node15.example.com"
network_interfaces="fxp0 lo0"
ifconfig_fxp0="inet 10.1.1.1"rc.conf.site: defaultrouter="10.1.1.254"
saver="daemon"
blanktime="100"Файл rc.conf.site может быть распространён
на все системы, используя rsync или подобную ей
программу, в то время, как rc.conf должен остаться
только на одной машине.Обновление системы с помощью &man.sysinstall.8;
или make world не повлекут за собой перезапись
rc.conf. Вся информация в этом файле
сохранится.Настройка приложенийОбычно, установленные приложения имеют свои конфигурационные файлы,
со своим собственным синтаксисом. Важно хранить эти файлы отдельно от
файлов основной системы, чтобы их можно было легко администрировать с
помощью средств управления пакетами./usr/local/etcОбычно эти файлы устанавливаются в
/usr/local/etc. В случае, если приложению нужно
большое количество конфигурационных файлов, для их хранения будет
создан подкаталог.Обычно, вместе с установкой портов и пакетов, устанавливаются и
примеры конфигурационных файлов. Обычно они имеют расширение
.default. Если не существует конфигурационных файлов
для этого приложения, они будут созданы путём копирования
.default файлов.Например, /usr/local/etc/apache:-rw-r--r-- 1 root wheel 2184 May 20 1998 access.conf
-rw-r--r-- 1 root wheel 2184 May 20 1998 access.conf.default
-rw-r--r-- 1 root wheel 9555 May 20 1998 httpd.conf
-rw-r--r-- 1 root wheel 9555 May 20 1998 httpd.conf.default
-rw-r--r-- 1 root wheel 12205 May 20 1998 magic
-rw-r--r-- 1 root wheel 12205 May 20 1998 magic.default
-rw-r--r-- 1 root wheel 2700 May 20 1998 mime.types
-rw-r--r-- 1 root wheel 2700 May 20 1998 mime.types.default
-rw-r--r-- 1 root wheel 7980 May 20 1998 srm.conf
-rw-r--r-- 1 root wheel 7933 May 20 1998 srm.conf.defaultРазмеры файлов показывают, что только файл
srm.conf был изменён. При следующем обновлении
Apache этот файл уже не будет
перезаписан.TomRhodesПредоставил Запуск сервисовсервисыМногие пользователи предпочитают устанавливать программы сторонних
производителей в &os; из набора портов. В подобных случаях
может потребоваться сконфигурировать программы так, чтобы они
запускались при инициализации системы. Сервисы, такие как
mail/postfix или
www/apache13, —
это лишь два примера множества программных пакетов, которые
можно запускать при инициализации системы. В этом разделе
описывается процедура, предназначенная для запуска программ
сторонних разработчиков.Большинство входящих в &os; сервисов, таких как &man.cron.8;,
запускается с помощью стартовых скриптов системы. Эти скрипты
могут различаться в зависимости от версии &os; или ее производителя;
однако важнее всего учитывать, что их начальную конфигурацию
можно задать с помощью простых стартовых скриптов.До появления rcNG приложения должны были помещать
простой стартовый скрипт в
каталог /usr/local/etc/rc.d,
который затем читался скриптами инициализации системы. Эти скрипты
затем выполнялись в ходе последующих стадий запуска системы.Хотя много разработчиков потратили часы на попытки внедрить
старый стиль конфигурирования в новую систему, остаётся фактом,
что для некоторых утилит сторонних производителей по-прежнему
необходим скрипт, помещённый в указанный выше каталог. Незначительные
различия в скриптах зависят от того, используется ли rcNG. До
версии &os; 5.1 использовались скрипты в старом стиле,
и почти во всех случаях скрипты в новом стиле должны подойти так же
хорошо.Хотя каждый скрипт должен соответствовать некоторым минимальным
требованиям, в большинстве случаев эти требования не зависят от версии
&os;. Каждый скрипт должен иметь в конце расширение
.sh и каждый скрипт должен быть выполняемым.
Последнее требование может быть выполнено путем установки командой
chmod уникальных прав доступа
755. Также, как минимум, должна быть опция
start для запуска приложения и опция
stop для его остановки.Простейший стартовый скрипт, пожалуй, будет похож на
следующий:#!/bin/sh
echo -n ' utility'
case "$1" in
start)
/usr/local/bin/utility
;;
stop)
kill -9 `cat /var/run/utility.pid`
;;
*)
echo "Usage: `basename $0` {start|stop}" >&2
exit 64
;;
esac
exit 0Этот скрипт поддерживает опции stop и
start для приложения, которое мы здесь называем
- просто — utility. Для этого приложения
- затем можно поместить следующую строку в файл /etc/rc.conf:
-
- utility_enable="YES"
+ просто — utility.
А можно запускать его и вручную, с помощью команды:&prompt.root; /usr/local/etc/rc.d/utility.sh startХотя и не все программы сторонних производителей требуют
добавления строки в файл rc.conf, практически
каждый день очередной новый порт меняется так, чтобы поддерживать
подобную конфигурацию. Поищите в результатах, выдаваемых после
установки более детальную информацию по конкретному приложению.
Некоторые программы сторонних производителей будут включать стартовые
скрипты, позволяющие использовать приложение с rcNG; но это мы еще
обсудим в следующем разделе.Расширенное конфигурирование приложенияТеперь, когда &os; включает rcNG, конфигурирование запуска
приложений стало более оптимальным; фактически, оно стало более
тщательным. С помощью ключевых слов, рассмотренных в разделе
rcNG, приложения теперь
можно настроить для запуска после других заданных сервисов,
например, DNS; можно разрешить передачу
дополнительных флагов через rc.conf вместо
жесткого задания флагов в стартовых скриптах, и т.д. Простой
скрипт может иметь следующий вид:#!/bin/sh
#
# PROVIDE: utility
# REQUIRE: DAEMON
# BEFORE: LOGIN
# KEYWORD: FreeBSD shutdown
#
# НЕ МЕНЯЙТЕ ЗДЕСЬ ЭТИ СТАНДАРТНЫЕ ЗНАЧЕНИЯ
# ЗАДАВАЙТЕ ИХ В ФАЙЛЕ /etc/rc.conf
#
utility_enable=${utility_enable-"NO"}
utility_flags=${utility_flags-""}
utility_pidfile=${utility_pidfile-"/var/run/utility.pid"}
. /etc/rc.subr
name="utility"
rcvar=`set_rcvar`
command="/usr/local/sbin/utility"
load_rc_config $name
pidfile="${utility_pidfile}"
start_cmd="echo \"Starting ${name}.\"; /usr/bin/nice -5 ${command} ${utility_flags} ${command_args}"
run_rc_command "$1"Этот скрипт будет гарантировать, что указанное приложение
utility будет запущено перед сервисом
login, но после сервиса
daemon. Он также предоставляет метод
для создания и отслеживания файла идентификатора процесса,
PID.
+ Для этого приложения затем можно поместить следующую
+ строку в файл /etc/rc.conf:
+
+ utility_enable="YES"
+
Этот новый метод также позволяет легко работать с аргументами
командной строки, включать стандартные функции из файла
/etc/rc.subr, обеспечивает совместимость
с утилитой &man.rcorder.8; и упрощает конфигурирование с помощью
файла rc.conf. По сути, этот сценарий
можно даже поместить в каталог
/etc/rc.d. Это, однако,
потенциально может сбить с толку утилиту &man.mergemaster.8;
при обновлениях программного обеспечения.Использование сервисов для запуска сервисовДругие сервисы, такие как даемоны сервера
POP3, IMAP, и т.п. могут
быть запущены с помощью &man.inetd.8;. Для этого необходимо
установить сервисную утилиту из набора портов и добавить
соответствующую строчку конфигурации в файл
/etc/inetd.conf или раскомментировать
подходящую строку конфигурации из уже имеющихся. Работа с даемоном
- inetd и его конфигурирование подробно описано
+ inetd и его конфигурирование подробно описаны
в разделе inetd.В некоторых случаях использование для запуска системных
служб даемона &man.cron.8; может оказаться более приемлемым. Этот
подход имеет несколько преимуществ, поскольку даемон
cron запускает эти процессы от имени
владельца файла crontab. Это позволяет
обычным пользователям запускать и поддерживать некоторые
приложения.Утилита cron поддерживает уникальную
возможность, @reboot, — это значение
можно использовать вместо спецификации времени. В результате,
задание будет выполнено при запуске &man.cron.8;, обычно —
в ходе инициализации системы.TomRhodesПредоставил Настройка утилиты croncronнастройкаОдна из наиболее полезных утилит &os; это &man.cron.8;. Утилита
cron работает в фоновом режиме и постоянно проверяет
файл /etc/crontab. Утилита cron
проверяет также каталог /var/cron/tabs в поиске
- новый файлов crontab. Файлы
+ новых файлов crontab. Файлы
crontab содержат информацию об определенных
функциях, которые cron выполняет в указанное
время.Утилита cron использует два разных типа
конфигурационных файлов, системный и пользовательский.
Все различие между этими двумя форматами заключается в
шестом поле. В системном файле шестое поля это имя пользователя,
с правами которого будет запущена команда. Это позволяет запускать
команды из системного crontab от любого пользователя. В
пользовательском файле шестое поле указывает запускаемую команду, и
все команды запускаются от пользователя, который создал crontab;
это важно для безопасности.Пользовательские crontab позволяют индивидуальным пользователям
планировать задачи без привилегий суперпользователя
(root). Команды из
crontab пользователя запускаются с привилегиями этого
пользователя.Пользователь root может использовать
собственный crontab, как и любой другой пользователь. Он будет
отличаться от системного crontab /etc/crontab.
Поскольку существует системный crontab, обычно не требуется
создавать пользовательский crontab для
root.Давайте заглянем в файл /etc/crontab
(системный crontab):# /etc/crontab - root's crontab for &os;
#
# $&os;: src/etc/crontab,v 1.32 2002/11/22 16:13:39 tom Exp $
#
#
SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
HOME=/var/log
#
#
#minute hour mday month wday who command
#
#
*/5 * * * * root /usr/libexec/atrun Как и в большинстве файлов настройки FreeBSD, символы #
означают комментарии. Комментарии нужны для напоминания о том,
что означает строка и зачем она добавлена. Комментарии не могут
находиться на той же строке, что и команда, или они будут
восприняты как часть команды; располагайте их на новой строке.
Пустые строки игнорируются.Сначала должны быть заданы переменные окружения. Знак равно
(=) используется для задания переменных
окружения, в этом примере SHELL, PATH,
и HOME. Если переменная для оболочки не задана,
cron использует оболочку по умолчанию,
sh. Если не задана переменная
PATH, значение по умолчанию не устанавливается и
пути к файлам должны быть полными. Если не задана переменная
HOME, cron будет использовать
домашний каталог соответствующего пользователя.В строке всего семь полей. Их значения
minute, hour,
mday, month,
wday, who (кто), и
command. Значение полей почти очевидно.
minute это время в минутах, когда будет запущена
команда. hour означает то же самое для часов.
mday означает день месяца.
month, это то же самое, что час и минута,
но для месяцев. Параметр wday это день
недели. Все эти поля должны быть в
числовом формате, время в двадцатичетырехчасовом исчислении.
Поле who имеет специальное значение, и
присутствует только в файле /etc/crontab.
Это поле определяет пользователя, с правами которого должна быть
запущена команда. Когда пользователь устанавливает собственный
файл crontab, он не указывает этот параметр.
Последний параметр command. Он указывает команду, которая должна
быть запущена.Последняя строка определяет параметры, описанные выше. Здесь
задано значение */5, и несколько символов
*. Эти символы * означают
первый-последний, и могут быть интерпретированы как
каждый. Таким образом, для этой строки
соответствующая команда atrun вызывается
под пользователем root каждые пять минут
независимо от дня или месяца. За дополнительной информацией по
команде atrun обращайтесь к странице справочника
&man.atrun.8;.Команды могут принимать любое количество параметров; однако
команды, состоящие из нескольких строк, должны быть объединены
символом \.Этот формат одинаков для каждого файла crontab,
за исключением одной детали. Шестое поле, где указано имя пользователя,
присутствует только в файле /etc/crontab. Это
поле должно быть исключено из crontab файлов
пользователей.Установка crontabВы не должны использовать процедуру, описанную здесь, для
установки системного crontab. Просто используйте свой
любимый текстовый редактор: утилита cron
узнает о том, что файл изменился и сразу начнет использовать
обновленную версию. Обратитесь к этой
части FAQ за дальнейшей информацией.Для установки готового crontab пользователя,
сначала создайте в вашем любимом редакторе файл соответствующего
формата, а затем воспользуйтесь утилитой
crontab. Обычно она запускается
так:&prompt.user; crontab crontab-fileВ этом примере, crontab-file это имя файла
crontab, который только что был создан.Существует также параметр для просмотра установленных файлов
crontab: задайте crontab
параметр .Для пользователей, составляющих crontab вручную, без временного
файла, существует параметр crontab -e.
Она вызовет редактор с пустым файлом. Когда файл будет сохранен,
crontab автоматически установит его.Если позднее вы захотите полностью удалить свой
crontab, используйте
crontab с параметром .TomRhodesПредоставил Использование rc в FreeBSD 5.XrcNGВ &os; недавно была интегрирована из NetBSD система
rc.d, используемая для старта системы.
Многие из файлов в каталоге /etc/rc.d
предназначены для основных сервисов, они могут управляться
параметрами ,
, и
. Например, &man.sshd.8; может быть
перезапущен следующей командой:&prompt.root; /etc/rc.d/sshd restartЭта процедура похожа для других сервисов. Конечно, сервисы
обычно запускаются автоматически, как указано в &man.rc.conf.5;.
Например, включение даемона Network Address Translation
при запуске выполняется простым добавлением следующей строки
в /etc/rc.conf:natd_enable="YES"Если уже присутствует,
просто измените на .
Скрипты rc автоматически загрузят все другие зависимые
сервисы, как описано ниже.Поскольку система rc.d в основном предназначена
для запуска/отключения сервисов во время запуска/отключения
системы, стандартные параметры ,
и будут работать
только если установлена соответствующая переменная в
/etc/rc.conf. Например, команда выше
sshd restart будет работать только если
переменная sshd_enable в файле
- /etc/rc.confустановлена в .
+ /etc/rc.conf установлена в .
Для выполнения скриптов независимо от установок в
/etc/rc.conf, параметры ,
или необходимо
задавать с префиксом force. Например, для
перезапуска sshd независимо от установок в
/etc/rc.conf, выполните следующую
команду:&prompt.root; /etc/rc.d/sshd forcerestartПроверить состояние переменной в файле
/etc/rc.conf легко: запустите соответствующий
скрипт из rc.d с параметром
. Проверка переменной для
sshd выполняется следующей командой:&prompt.root; /etc/rc.d/sshd rcvar
# sshd
$sshd_enable=YESВторая строка (# sshd) это вывод
команды sshd, а не консоль
root.Чтобы определить, запущен ли сервис, существует параметр
. Например для проверки того, запущен ли
sshd, выполните:&prompt.root; /etc/rc.d/sshd status
sshd is running as pid 433.Возможна также перегрузка () сервиса.
Скрипт, запущенный с этим параметром, попытается отправить сервису
сигнал, вызывающий перезагрузку файлов настройки. В большинстве
случаев это означает отправку сервису сигнала
SIGHUP.Структура rcNG используется не только для
сетевых серверов, она отвечает также за большую часть инициализации
системы.
Рассмотрим, к примеру, файл bgfsck. Во время
выполнения этот скрипт выводит следующее сообщение:Starting background file system checks in 60 seconds.Следовательно, этот файл используется для фоновой проверки файловых
систем, которая выполняется только в процессе инициализации
системы.Функционирование многих сервисов системы зависит от корректной
работы других сервисов. Например, NIS и другие основанные на
RPC сервисы могут не запуститься, пока не загрузится
rpcbind (portmapper). Для разрешения этой
проблемы, в начале каждого скрипта в комментарии включаются
информация о зависимостях и другие метаданные. Программа
- &man.rcorder.8; для разбора этих комментариев во время старта
+ &man.rcorder.8; используется для разбора этих комментариев во время старта
системы для определения порядка, в котором должны вызываться
системные сервисы в соответствии с зависимостями. В начало
каждого стартового файла должны быть включены следующие
строки:PROVIDE: Задает имя сервиса, предоставляемого этим файлом.REQUIRE: Список сервисов, необходимых этому сервису. Этот
файл будет запущен после указанных
сервисов.BEFORE: Список сервисов, зависящих от этого сервиса. Этот
файл будет запущен до указанных
сервисов.KEYWORD: &os; или NetBSD. Используется для функций,
зависящих от версии *BSD.Используя этот метод, администратор может легко контролировать
системные сервисы без использования уровней запуска,
как в некоторых других операционных системах &unix;.Дополнительную информацию о системе rc.d
&os; 5.X можно найти на страницах справочника &man.rc.8; и
- and &man.rc.subr.8;.
+ &man.rc.subr.8;.
MarcFonvieilleПредоставил Настройка карт сетевых интерфейсов
- настройка сетевой карты
+
+ сетевые карты
+ настройка
+ В наши дни мы не представляем себе компьютера без сетевого
подключения. Добавление и настройка сетевой карты это
обычная задача любого администратора &os;.Поиск подходящего драйвера
- настройка сетевой карты
- поиск драйвера
+ сетевые карты
+ драйверВ первую очередь определите тип используемой карты (PCI или ISA),
модель карты и используемый в ней чип. &os; поддерживает
многие PCI и ISA карты. Обратитесь к Списку поддерживаемого
оборудования вашего релиза чтобы узнать, поддерживается ли
карта.Как только вы убедились, что карта поддерживается, потребуется
- определить подходящий драйвер. В файле
- /usr/src/sys/i386/conf/LINT находится список
+ определить подходящий драйвер. В файлах
+ /usr/src/sys/conf/NOTES и
+ /usr/src/sys/arch/conf/NOTES
+ находится список
драйверов сетевых интерфейсов с информацией о поддерживаемых
чипсетах/картах. Если вы сомневаетесь в том, какой драйвер
подойдет, прочтите страницу справочника к драйверу.
Страница справочника содержит больше информации о поддерживаемом
оборудовании и даже о проблемах, которые могут возникнуть.
+
+ NOTES не существует в
+ &os; 4.X. Вместо него, проверьте файл
+ LINT на предмет информации о различных
+ сетевых интерфейсах. В
+ находится более подробная информация о различиях
+ NOTES и
+ LINT.
+
+
Если ваша карта широко распространена, вам скорее всего
не потребуется долго искать драйвер. Драйверы для
широко распространенных карт представлены в ядре
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В этом примере две карты используют имеющийся в системе
драйвер &man.dc.4;.
- Для использования сетевой карты потребуется загрузить
- подходящий драйвер. Это можно сделать двумя способами.
- Самый простой способ это загрузка модуля ядра для
- сетевой карты с помощью &man.kldload.8;. Не для каждой
- сетевой карты есть модуль (например ISA карты и карты,
- использующие драйвер &man.ed.4;). В качестве альтернативы,
- вы можете статически добавить поддержку сетевой карты
- в ядро. Проверьте /usr/src/sys/i386/conf/LINT
- и страницу справочника драйвера, чтобы узнать, что добавить
- в файл конфигурации ядра. За дополнительной информацией о
- пересборке ядра обращайтесь к .
- Если ваша карта была обнаружена ядром (GENERIC)
- во время загрузки, собирать новое ядро не потребуется.
+ Если драйвер вашей сетевой карты отсутствует в
+ GENERIC, для ее использования потребуется
+ загрузить подходящий драйвер. Это может быть сделано одним
+ из двух способов:
+
+
+
+ Простейший способ — просто загрузить модуль
+ ядра сетевой карты с помощью &man.kldload.8;. Не все
+ драйверы доступны в виде модулей; например, модули
+ отсутствуют для ISA карт.
+
+
+
+ Вместо этого, вы можете статически включить поддержку карты,
+ скомпилировав собственное ядро. Информацию о том, какие
+ параметры нужно включать в ядро, можно получить из
+ /usr/src/sys/conf/NOTES,
+ /usr/src/sys/arch/conf/NOTES
+ и страницы справочника драйвера сетевой карты.
+ За более подробной информацией о сборке собственного ядра
+ обращайтесь к . Если карта
+ была обнаружена вашим ядром (GENERIC)
+ во время загрузки, собирать ядро не потребуется.
+
+ Настройка сетевой карты
- настройка сетевой карты
+ сетевые картынастройкаКак только для сетевой карты загружен подходящий драйвер,
ее потребуется настроить. Как и многое другое, сетевая
карта может быть настроена во время установки с помощью
sysinstall.Для вывода информации о настройке сетевых интерфейсов системы,
введите следующую команду:&prompt.user; 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Старые версии &os; могут потребовать запуска
&man.ifconfig.8; с параметром , за
более подробным описанием синтаксиса &man.ifconfig.8;
обращайтесь к странице справочника. Учтите также, что
строки, относящиеся к IPv6 (inet6 и т.п.)
убраны из этого примера.В этом примере были показаны следующие устройства:dc0: первый Ethernet
интерфейсdc1: второй Ethernet
интерфейсlp0: интерфейс параллельного
портаlo0: устройство loopbacktun0: туннельное устройство,
используемое pppДля присвоения имени сетевой карте &os; использует имя
драйвера и порядковый номер, в котором карта обнаруживается
при инициализации устройств. Например, sis2
это третья сетевая карта, использующая драйвер &man.sis.4;.В этом примере, устройство dc0 включено
и работает. Ключевые признаки таковы:UP означает, что карта настроена и
готова.У карты есть интернет (inet)
адрес (в данном случае
192.168.1.3).Установлена маска подсети (netmask;
0xffffff00, то же, что и
255.255.255.0).Широковещательный адрес (в данном случае,
192.168.1.255).Значение MAC адреса карты (ether)
00:a0:cc:da:da:daВыбор физической среды передачи данных в режиме автовыбора
(media: Ethernet autoselect (100baseTX
<full-duplex>)). Мы видим, что
dc1 была настроена для работы с
10baseT/UTP. За более подробной
информацией о доступных драйверу типах среды обращайтесь
к странице справочника.Статус соединения (status)
active, т.е. несущая обнаружена.
Для dc1, мы видим
status: no carrier. Это нормально, когда
Ethernet кабель не подключен к карте.Если &man.ifconfig.8; показывает примерно следующее:dc0: flags=8843<BROADCAST,SIMPLEX,MULTICAST> mtu 1500
ether 00:a0:cc:da:da:daэто означает, что карта не была настроена.Для настройки карты вам потребуются привилегии пользователя
root. Настройка сетевой карты может быть
выполнена из командной строки с помощью &man.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, и так далее на соответствующие
имена ваших карт, подставьте соответствующие адреса.
Обратитесь к страницам справочника сетевой карты и
&man.ifconfig.8;, за подробной информацией о доступных
опциях и к странице справочника &man.rc.conf.5; за дополнительной
информацией о синтаксисе /etc/rc.conf.Если вы настроили сетевую карту в процессе установки системы,
некоторые строки, касающиеся сетевой карты, могут уже присутствовать.
Внимательно проверьте /etc/rc.conf перед
добавлением каких-либо строк.Отредактируйте также файл /etc/hosts
для добавления имен и IP адресов различных компьютеров сети,
если их еще там нет. За дополнительной информацией обращайтесь
к man.hosts.5;
и к /usr/share/examples/etc/hosts.Тестирование и решение проблемКак только вы внесете необходимые изменения в
/etc/rc.conf, перегрузите компьютер.
Изменения настроек интерфейсов будут применены, кроме того
будет проверена правильность настроек.Как только система перезагрузится, проверьте сетевые
интерфейсы.Проверка Ethernet карты
- настройка сетевой карты
- тестирование карты
+ сетевые карты
+ тестированиеДля проверки правильности настройки сетевой карты,
попробуйте выполнить ping для самого интерфейса, а затем
для другой машины в локальной сети.Сначала проверьте локальный интерфейс:&prompt.user; ping -c5 192.168.1.3
PING 192.168.1.3 (192.168.1.3): 56 data bytes
64 bytes from 192.168.1.3: icmp_seq=0 ttl=64 time=0.082 ms
64 bytes from 192.168.1.3: icmp_seq=1 ttl=64 time=0.074 ms
64 bytes from 192.168.1.3: icmp_seq=2 ttl=64 time=0.076 ms
64 bytes from 192.168.1.3: icmp_seq=3 ttl=64 time=0.108 ms
64 bytes from 192.168.1.3: icmp_seq=4 ttl=64 time=0.076 ms
--- 192.168.1.3 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.074/0.083/0.108/0.013 msЗатем проверьте другую машину в локальной сети:&prompt.user; ping -c5 192.168.1.2
PING 192.168.1.2 (192.168.1.2): 56 data bytes
64 bytes from 192.168.1.2: icmp_seq=0 ttl=64 time=0.726 ms
64 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=0.766 ms
64 bytes from 192.168.1.2: icmp_seq=2 ttl=64 time=0.700 ms
64 bytes from 192.168.1.2: icmp_seq=3 ttl=64 time=0.747 ms
64 bytes from 192.168.1.2: icmp_seq=4 ttl=64 time=0.704 ms
--- 192.168.1.2 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.700/0.729/0.766/0.025 msВы можете также использовать имя машины вместо
192.168.1.2, если настроен файл
/etc/hosts.Решение проблем
- настройка сетевой карты
+ сетевые картырешение проблемРешение проблем с аппаратным и программным обеспечением всегда
вызывает сложности, которые можно уменьшить, проверив сначала
самые простые варианты. Подключен ли сетевой кабель? Правильно ли
настроены сетевые сервисы? Правильно ли настроен брандмауэр?
Поддерживается ли используемая карта в &os;? Всегда проверяйте
информацию об оборудовании перед отправкой сообщения об ошибке.
Обновите &os; до последней версии STABLE. Просмотрите
архивы списков рассылки, или поищите информацию в интернет.Если карта работает, но производительность низка, может помочь
чтение страницы справочника &man.tuning.7;. Проверьте также
настройки сети, поскольку неправильные настройки могут стать причиной
низкой скорости соединения.Некоторые пользователи встречаются с несколькими
device timeouts, что нормально для некоторых
сетевых карт. Если это продолжается и надоедает, убедитесь, что
устройство не конфликтует с другим устройством. Внимательно
проверьте подключение кабеля. Возможно также, что вам просто надо
установить другую карту.Время от времени, пользователи видят несколько ошибок
watchdog timeout. Первое, что требуется сделать,
это проверить сетевой кабель. Многие карты требуют поддержки
Bus Mastering слотом PCI. На некоторых старых материнских платах,
только один PCI слот имеет такую поддержку (обычно слот 0).
Сверьтесь с документацией на сетевую карту и материнскую плату,
чтобы определить, может ли это быть проблемой.Сообщение No route to host появляются, если
система не в состоянии доставить пакеты к хосту назначения.
Это может случиться, если не определен маршрут по умолчанию,
или кабель не подключен. Проверьте вывод команды netstat
-rn и убедитесь, что к соответствующему хосту
есть работающий маршрут. Если это не так, прочтите .Сообщения ping: sendto: Permission denied
зачастую появляются при неправильно настроенном брандмауэре.
Если ipfw включен в ядре, но правила не
определены, правило по умолчанию блокирует весь трафик,
даже запросы ping! Прочтите с более подробной информацией.
- Иногда карты недостаточна, или ниже среднего. В этих случаях
+ Иногда скорость карты недостаточна, или ниже среднего. В этих случаях
лучше всего изменить режим выбора типа подключения с
autoselect на правильный тип.
Обычно это работает для большинства оборудования, но не может
решить проблему во всех случаях. Проверьте еще раз настройки сети
- и прочтите страницу руководства &man.tuning.7;.
+ и прочтите страницу справочника &man.tuning.7;.Настройка виртуальных сервероввиртуальные серверасинонимы ipОчень часто &os; используется для размещения сайтов, когда
один сервер работает в сети как несколько серверов. Это достигается
присвоением нескольких сетевых адресов одному интерфейсу.У сетевого интерфейса всегда есть один настоящий
адрес, хотя он может иметь любое количество синонимов
(alias). Эти синонимы обычно добавляются путём помещения
соответствующих записей в /etc/rc.conf.Синоним для интерфейса fxp0 выглядит
следующим образом:ifconfig_fxp0_alias0="inet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx"Заметьте, что записи синонимов должны начинаться с
alias0 и идти далее в определенном порядке
(например, _alias1, _alias2,
и т.д.). Конфигурационный процесс остановится на первом по порядку
отсутствующем числе.Определение маски подсети для синонима очень важно, но к счастью,
так же просто. Для каждого интерфейса должен быть один адрес с
истинной маской подсети. Любой другой адрес в сети должен иметь
маску подсети, состоящую из всех единичек (что выражается как
255.255.255.255 или как
0xffffffff).Например, рассмотрим случай, когда интерфейс
fxp0 подключён к двум сетям, к сети
10.1.1.0 с маской подсети
255.255.255.0 и к сети
202.0.75.16 с маской
255.255.255.240. Мы хотим,
чтобы система была видна по IP, начиная с
10.1.1.1 по
10.1.1.5 и с
202.0.75.17 по
202.0.75.20. Как было сказано выше,
только первый адрес в заданном диапазоне (в данном случае,
10.0.1.1 и
202.0.75.17) должен иметь реальную
маску сети; все остальные (с 10.1.1.2
по 10.1.1.5 и с
202.0.75.18 по
202.0.75.20) должны быть
сконфигурированы с маской сети
255.255.255.255.Для этого должны быть внесены следующие записи: ifconfig_fxp0="inet 10.1.1.1 netmask 255.255.255.0"
ifconfig_fxp0_alias0="inet 10.1.1.2 netmask 255.255.255.255"
ifconfig_fxp0_alias1="inet 10.1.1.3 netmask 255.255.255.255"
ifconfig_fxp0_alias2="inet 10.1.1.4 netmask 255.255.255.255"
ifconfig_fxp0_alias3="inet 10.1.1.5 netmask 255.255.255.255"
ifconfig_fxp0_alias4="inet 202.0.75.17 netmask 255.255.255.240"
ifconfig_fxp0_alias5="inet 202.0.75.18 netmask 255.255.255.255"
ifconfig_fxp0_alias6="inet 202.0.75.19 netmask 255.255.255.255"
ifconfig_fxp0_alias7="inet 202.0.75.20 netmask 255.255.255.255"Файлы настройкиКаталог /etc
- Во FreeBSD определён ряд директорий, предназначенных для
+ Во FreeBSD определён ряд каталогов, предназначенных для
хранения конфигурационных файлов. Это:/etcОсновные файлы конфигурации системы. Тут размещены
системно–зависимые данные./etc/defaultsВерсии системных конфигурационных файлов по
умолчанию./etc/mail
- Дополнительные конфигурационные файлы &man.sendmail.8;
- остальные конфигурационные файлы MTA.
+ Дополнительные конфигурационные файлы &man.sendmail.8;,
+ другие конфигурационные файлы MTA.
/etc/pppНастройка для user- и kernel-ppp программ.
/etc/namedbОсновное место расположения данных &man.named.8;.
Обычно named.conf и файлы зон
расположены здесь./usr/local/etcКонфигурационные файлы установленных приложений. Могут
содержать подкаталоги приложений./usr/local/etc/rc.dСкрипты запуска/остановки установленных приложений./var/dbАвтоматически генерируемые системно-специфичные файлы
баз данных, такие как база данных пакетов, и так
далееИмена хостовhostnameDNS/etc/resolv.confresolv.conf/etc/resolv.conf определяет, как
ресолвер (resolver) &os; получает доступ к Системе Доменных
Имён (DNS).Основные записи resolv.conf:
nameserverIP адрес сервера имён. Сервера опрашиваются в порядке
- описания. Максимальное количество адресов - три.
+ описания. Максимальное количество адресов — три.
searchСписок доменов для поиска с помощью hostname lookup.
Обычно определяется доменом, в котором находится
компьютер.domainДомен, в котором находится компьютер.Типичный вид resolv.conf:search example.com
nameserver 147.11.1.11
nameserver 147.11.100.30Опции search и
domain нельзя использовать
совместно.Если вы используете DHCP, &man.dhclient.8; обычно перезаписывает
resolv.conf информацией, полученной от серверов
DHCP./etc/hostshosts
- /etc/hosts - простая текстовая база
+ /etc/hosts — простая текстовая база
данных, напоминающая старый Интернет. Она работает совместно с
DNS и NIS, сопоставляя доменные имена IP адресу.
- Отдельные компьютеры, соединённые с помощью локальной сети могут
+ Отдельные компьютеры, соединённые с помощью локальной сети, могут
быть записаны тут вместо &man.named.8; сервера с целью упрощения.
Кроме того, /etc/hosts используется для
записи IP адресов и соответствующих им доменов, избавляя от
внешнего трафика, используемого для запросов к DNS серверам.# $&os;$
#
# Host Database
# This file should contain the addresses and aliases
# for local hosts that share this file.
# In the presence of the domain name service or NIS, this file may
# not be consulted at all; see /etc/nsswitch.conf for the resolution order.
#
#
::1 localhost localhost.my.domain myname.my.domain
127.0.0.1 localhost localhost.my.domain myname.my.domain
#
# Imaginary network.
#10.0.0.2 myname.my.domain myname
#10.0.0.3 myfriend.my.domain myfriend
#
# According to RFC 1918, you can use the following IP networks for
# private nets which will never be connected to the Internet:
#
# 10.0.0.0 - 10.255.255.255
# 172.16.0.0 - 172.31.255.255
# 192.168.0.0 - 192.168.255.255
#
# In case you want to be able to connect to the Internet, you need
# real official assigned numbers. PLEASE PLEASE PLEASE do not try
# to invent your own network numbers but instead get one from your
# network provider (if any) or from the Internet Registry (ftp to
# rs.internic.net, directory `/templates').
#Формат /etc/hosts:[IP адрес в Интернете] [имя компьютера] [alias1] [alias2] ...Например:10.0.0.1 myRealHostname.example.com myRealHostname foobar1 foobar2За дополнительной информацией обращайтесь к &man.hosts.5;.Настройка лог файловлог файлыsyslog.confsyslog.confsyslog.conf is является файлом конфигурации
для &man.syslogd.8;. В нём указываются, типы сообщений
генерируемые syslog, и лог файлы, в которые они
записываются.# $&os;$
#
# Spaces ARE valid field separators in this file. However,
# other *nix-like systems still insist on using tabs as field
# separators. If you are sharing this file between systems, you
# may want to use only tabs as field separators here.
# Consult the syslog.conf(5) manual page.
*.err;kern.debug;auth.notice;mail.crit /dev/console
*.notice;kern.debug;lpr.info;mail.crit;news.err /var/log/messages
security.* /var/log/security
mail.info /var/log/maillog
lpr.info /var/log/lpd-errs
cron.* /var/log/cron
*.err root
*.notice;news.err root
*.alert root
*.emerg *
# uncomment this to log all writes to /dev/console to /var/log/console.log
#console.info /var/log/console.log
# uncomment this to enable logging of all log messages to /var/log/all.log
#*.* /var/log/all.log
# uncomment this to enable logging to a remote log host named loghost
#*.* @loghost
# uncomment these if you're running inn
# news.crit /var/log/news/news.crit
# news.err /var/log/news/news.err
# news.notice /var/log/news/news.notice
!startslip
*.* /var/log/slip.log
!ppp
*.* /var/log/ppp.logЗа более полной информацией обратитесь
к &man.syslog.conf.5;.newsyslog.confnewsyslog.conf
- newsyslog.conf - конфигурационный файл
+ newsyslog.conf — конфигурационный файл
&man.newsyslog.8;, программы, обычно контролируемой &man.cron.8;.
&man.newsyslog.8; определяет, когда лог-файлы нуждаются в
архивировании и перегруппировке.
logfile перемещается в
logfile.0, logfile.0
перемещается в logfile.1, и так далее.
Другое именование получится при архивировании с помощью
&man.gzip.1;: logfile.0.gz,
logfile.1.gz, и т.д.newsyslog.conf показывает, какие лог файлы
должны быть проинспектированы, сколько их должно быть сохранено, и когда
они должны быть пересмотрены. Лог файлы могут быть перегруппированы
и/или заархивированы, когда они либо достигнут определённого
размера, либо при достижении определённых даты/времени.# configuration file for newsyslog
# $&os;$
#
# filename [owner:group] mode count size when [ZB] [/pid_file] [sig_num]
/var/log/cron 600 3 100 * Z
/var/log/amd.log 644 7 100 * Z
/var/log/kerberos.log 644 7 100 * Z
/var/log/lpd-errs 644 7 100 * Z
/var/log/maillog 644 7 * @T00 Z
/var/log/sendmail.st 644 10 * 168 B
/var/log/messages 644 5 100 * Z
/var/log/all.log 600 7 * @T00 Z
/var/log/slip.log 600 3 100 * Z
/var/log/ppp.log 600 3 100 * Z
/var/log/security 600 10 100 * Z
/var/log/wtmp 644 3 * @01T05 B
/var/log/daily.log 640 7 * @T00 Z
/var/log/weekly.log 640 5 1 $W6D0 Z
/var/log/monthly.log 640 12 * $M1D0 Z
/var/log/console.log 640 5 100 * ZЗа дополнительной информацией обращайтесь к
&man.newsyslog.8;.sysctl.confsysctl.confsysctlsysctl.conf очень похож на
rc.conf. Значения устанавливаются в виде
variable=value. Указанные значения устанавливаются
после перевода системы в многопользовательский режим. Однако не все
переменные могут быть установлены в этом режиме.
- Пример sysctl.conf настроенной для выключения
- нотирования фатальных ошибок и разрешения Linux-программам определять,
- что они запускаются под &os;:
+ Пример sysctl.conf, настроенного для выключения
+ протоколирования фатальных ошибок программ и разрешения
+ Linux-программам определять, что они запускаются под &os;:kern.logsigexit=0 # Do not log fatal signal exits (e.g. sig 11)
compat.linux.osname=&os;
compat.linux.osrelease=4.3-STABLEНастройка с помощью sysctlsysctlнастройкас помощью sysctl
- &man.sysctl.8; - это интерфейс, позволяющий вам вносить изменения
- в работающую систему &os;. Эти изменения могут касаться многих опций стека
- TCP/IP и виртуальной памяти и могут облегчить опытному администратору
- жизнь. Более пяти тысяч системных переменных могут быть прочитаны и
+ &man.sysctl.8; — это интерфейс, позволяющий вам вносить изменения
+ в работающую систему &os;. Эти изменения касаются многих опций стека
+ TCP/IP и виртуальной памяти; опытный системный администратор
+ может использовать их для существенного увеличения производительности.
+ Более пяти тысяч системных переменных могут быть прочитаны и
записаны с помощью &man.sysctl.8;.По своей сути, &man.sysctl.8; выполняет две функции: чтение
и изменение настроек системы.
- Для просмотра всех доступных для чтения переменных::
+ Для просмотра всех доступных для чтения переменных:&prompt.user; sysctl -aЧтобы прочитать определённую переменную, например,
kern.maxproc, введите:&prompt.user; sysctl kern.maxproc
kern.maxproc: 1044Для присвоения значения переменной, используйте выражение вида
переменная=значение:&prompt.root; sysctl kern.maxfiles=5000
kern.maxfiles: 2088 -> 5000Изменяемые с помощью sysctl переменные обычно принимают значения
либо строкового, либо целого, либо булевого типа. Переменные булевого
типа могут принимать два значения (1 (истина) и
0 (ложь)).Если вы хотите устанавливать некоторые переменные автоматически
при каждой загрузке компьютера, добавьте их в файл
/etc/sysctl.conf. За дополнительной
информацией обращайтесь к странице справочника &man.sysctl.conf.5;
и к .TomRhodesПредоставил Переменные &man.sysctl.8; только для чтенияВ некоторых случаях желательно изменить переменные
&man.sysctl.8; только для чтения. Хотя это не рекомендуется,
иногда другого способа решить проблему нет.Например, на некоторых моделях лэптопов диапазон памяти устройства
&man.cardbus.4; не определяется и выдается приблизительно такая
ошибка:cbb0: Could not map register memory
device_probe_and_attach: cbb0 attach returned 12Ситуации, похожие на эту, требуют изменения некоторых значений
&man.sysctl.8;, модификация которых запрещена. Для разрешения этой
ситуации пользователь может поместить &man.sysctl.8; OID
в файл /boot/loader.conf. Значения по
умолчанию хранятся в файле
/boot/defaults/loader.conf.Решение проблемы, приведенной выше, потребует помещения строки
в вышеупомянутый
файл. Теперь &man.cardbus.4; будет работать нормально.Оптимизация дисковПеременные Sysctlvfs.vmiodirenablevfs.vmiodirenableЗначением переменной vfs.vmiodirenable
может быть установлено в 0 (выключено) или 1 (включено); по
умолчанию 1. Эта переменная отвечает за метод кэширования
каталогов. Размер большинства каталогов невелик. Они могут
поместиться в одном фрагменте (обычно 1K), и могут занимать
ещё меньше места (обычно 512 байт) в кэше буфера.
При отключении этой переменной (при установке значения 0)
буфер прокэширует только заданное число
каталогов даже если у вас много памяти. При включении (при
установке значения 1) эта переменная
sysctl позволит использовать страничное кэширование VM,
делая доступным для кэширования каталогов
весь объём памяти. Однако,
минимальный объём памяти, используемой для
кэширования каталогов стал равен объёму страницы (обычно 4 K)
вместо 512 байт. Мы рекомендуем оставлять эту опцию включенной,
если ваш компьютер исполняет программы, манипулирующие значительным
количеством файлов. Примером таких программ могут быть кэширующие
прокси-серверы, большие почтовые серверы и серверы новостей. Обычно
включение этой опции не понижает производительности, однако лучше
поэкспериментировать, чтобы узнать оптимальное значение для вашей
машины.vfs.write_behindvfs.write_behindПеременная sysctl vfs.write_behind по
умолчанию установлена в 1 (включено). Она
указывает системе выполнять запись на носитель по кластерам,
что обычно делается для больших файлов. Идея в том, чтобы
избежать заполнения кэша неполными буферами, когда это не
увеличивает производительность. Однако, это может заблокировать
процессы и в некоторых случаях вам может понадобиться отключить
этот параметр.vfs.hirunningspacevfs.hirunningspaceПеременная sysctl vfs.hirunningspace
определяет число запросов записи на диск, которые могут
быть поставлены в очередь. Значение по умолчанию обычно подходит,
но на компьютерах с большим количеством дисков вы можете
увеличить его до четырех или пяти мегабайт.
Учтите, что установка слишком большого значения (превышающего
размер буфера записи) может привести к очень значительному
падению общей производительности. Не делайте это значение
произвольно большим! Большие значения могут привести к
задержкам чтения, выполняемого в то же времяЕсть много других переменных sysctl, относящихся к кэшированию
в буфер и страничному кэшированию VM. Мы не рекомендуем изменять
эти значения. Начиная &os; 4.3, система VM делает отличную
работу по автоматической самонастройке.vm.swap_idle_enabledvm.swap_idle_enabledПеременная sysctl vm.swap_idle_enabled
полезна в больших многопользовательских системах, где есть
много пользователей, входящих и выходящих из системы, и
множество ожидающих процессов. Такие системы обычно генерируют
большое количество запросов на выделение памяти. Включение этой
переменной и настройка задержки выгрузки (swapout hysteresis,
в секундах) установкой переменных
vm.swap_idle_threshold1 и
vm.swap_idle_threshold2 позволит освобождать
страницы памяти, занятые ожидающими процессами, более быстро,
чем при нормальном алгоритме выгрузки. Это помогает даемону
выгрузки страниц. Не включайте этот параметр, пока он на самом
деле вам не понадобится, поскольку его действие в сущности
заключается в более ранней выгрузке страниц из памяти; это
повышает нагрузку на подкачку и диск. В малых системах
эффект от включения этого параметра предсказуем, но в больших
системах нагруженной на подкачкой этот параметр позволяет
системе VM проще загружать и выгружать процессы из памяти.hw.ata.wchw.ata.wcВо &os; 4.3 кэширование записи на IDE диски было отключено.
Это понижало производительность IDE дисков в тестах, но было
необходимо для лучшей сохранности данных. Проблема состоит в том,
что IDE диски неправильно указывают время завершения записи на диск.
При включенном кэшировании IDE диски могут не только записать данные
- в неправильном порядке – при большой нагрузке на диск некоторые
+ в неправильном порядке — при большой нагрузке на диск некоторые
блоки могут задержаться до бесконечности. Сбой, или отключение
питания могут могут стать причиной серьёзных повреждений в файловой
системе. Поэтому для безопасности системы значение по умолчанию
этого параметра было изменено. К сожалению, результатом этого стало
столь значительная потеря производительности, что после выхода
релиза значение этого параметра было возвращено в первоначальное
состояние. Вам следует проверить значение переменной sysctl
hw.ata.wc на вашей машине. Если кэширование
- выключено - вы можете включить его, установив значение переменной
+ выключено — вы можете включить его, установив значение переменной
ядра, равное 1. Это должно быть сделано при помощи загрузчика при
- загрузке. Если вы сделаете это позже - изменения не будут иметь
+ загрузке. Если вы сделаете это позже — изменения не будут иметь
силы.За более подробной информацией обращайтесь к &man.ata.4;.SCSI_DELAY
(kern.cam.scsi_delay)
- SCSI_DELAY
- kern.cam.scsi_delay
+ kern.cam.scsi_delay
+
+
+
+ опции ядра
+ SCSI_DELAYПараметр настройки ядра SCSI_DELAY может
использоваться для уменьшения времени загрузки системы.
Значение по умолчанию велико и может составлять более
15 секунд в процессе загрузки. Уменьшение
его до 5 секунд обычно работает (особенно
с современными дисками). В новых версиях &os; (5.0 и выше) должен
использоваться параметр kern.cam.scsi_delay,
настраиваемый во время загрузки. Этот параметр и параметр
настройки ядра принимают значения в
миллисекундах, а не в
секундах.Soft UpdatesSoft UpdatestunefsПрограмма &man.tunefs.8; используется для настройки файловой
системы. Эта программа может принимать большое количество параметров,
- но мы рассмотрим лишь один из них - включение и выключение
+ но мы рассмотрим лишь один из них — включение и выключение
Soft Updates, что может быть достигнуто следующим образом:&prompt.root; tunefs -n enable /filesystem
&prompt.root; tunefs -n disable /filesystemНельзя изменять файловую систему с помощью &man.tunefs.8; когда
она смонтирована. Самое подходящее время для включения "Soft Updates"
- перед монтированием разделов, в однопользовательском режиме.Начиная с &os; 4.5, можно включить Soft Updates
во время создания файловой системы, используя
&man.newfs.8; с параметром -U.Soft Updates существенно увеличивают скорость создания и удаления
файлов путём использования кэширования. Мы рекомендуем использовать Soft
Updates на всех ваших файловых системах. Однако у Soft Updates есть
и обратные стороны: во-первых, Soft Updates гарантирует целостность
файловой системы в случае сбоя, но может наблюдаться задержка в
несколько секунд (или даже минуту!) перед записью на жесткий диск.
- Если система зависнет - вы можете потерять
+ Если система зависнет — вы можете потерять
больше, чем, если бы вы не включили Soft Updates. Во-вторых,
Soft Updates задерживает освобождение блоков файловой системы.
Если ваша файловая система заполнена, выполнение значительного
- обновления, например.
+ обновления, например,
make installworld, может вызвать
переполнение.Дополнительная информация о Soft UpdatesSoft UpdatesдеталиЕсть два традиционных способа записи метаданных файловых систем
- на диск. (Пример метаданных: индексные дескрипторы и
- каталоги.)
+ на диск (пример метаданных: индексные дескрипторы и
+ каталоги).
Исторически, поведение по умолчанию заключается в синхронном
обновлении метаданных. Если каталог был изменен, система
ждет, пока изменение не будет физически записано на диск.
Содержимое файлов проходит через кэш и записывается на
диск асинхронно. Преимущество этого способа в его
надежности. При сбое во время обновления метаданные
остаются в нормальном состоянии. Файл либо создается целиком,
либо вообще не создается. Если блоки данных не были записаны
в файл из буфера во время сбоя, &man.fsck.8; сможет определить
это и восстановить файловую систему, установив длину файла в 0.
Кроме того, реализация этого способа проста и понятна.
Недостаток в том, что обновление метаданных занимает много
времени. Команда rm -r, например,
последовательно удаляет все файлы в каталоге, и каждое изменение
в каталоге (удаление файла) будет синхронно записано на диск.
Сюда включаются обновления самого каталога, таблицы индексных
дескрипторов, и возможно блоков, занятых файлом. Те же
соглашения работают при распаковке больших иерархий
(tar -x).Другой вариант это асинхронное обновление метаданных. Это
поведение по умолчанию для Linux/ext2fs и *BSD ufs с параметром
mount -o async. Все обновления метаданных
просто пропускаются через кэш буфера, как и содержимое файлов.
Преимущество этой реализации в том, что нет необходимости ждать
каждый раз, пока метаданные будут записаны на диск, поэтому
все операции с большим объемом обновления метаданных будут
- происходить гораздо быстрее чем при синхронном обновлении.
+ происходить гораздо быстрее, чем при синхронном обновлении.
Кроме того, реализация все еще проста и понятна, поэтому
риск появления ошибок в коде невелик. Недостаток в том,
- что нет никаких гарантий исправности файловой системы. Если во
- время во время обновления большого объема метаданных произойдет
+ что нет никаких гарантий исправности файловой системы. Если
+ во время обновления большого объема метаданных произойдет
сбой (например, отключение питания, или нажатие кнопки reset),
файловая система останется в непредсказуемом состоянии.
Нет возможности определить состояние файловой системы после
такого сбоя; блоки данных файла могут быть уже записаны на диск,
а обновления таблицы индексных дескрипторов нет. Невозможно
реализовать fsck, которая могла бы
исправить получившийся хаос (поскольку необходимой информации
нет на диске). Если файловая система была уничтожена во
время восстановления, единственный способ восстановления
— запустить &man.newfs.8; и воспользоваться
резервной копией.Обычное решение этой проблемы состояло в реализации
протоколировании проблемной области (dirty region
logging), известном как
журналирование, хотя этот термин
использовался неправильно и порой также применялся к другим
формам протоколирования транзакций. Обновление метаданных
как и прежде происходит синхронно, но в отдельную область
диска. Позже они перемещаются туда, где должны быть.
Поскольку область протоколирования это небольшая,
последовательная область диска, головкам жесткого диска
не приходится перемещаться на большие расстояния даже
во время значительных обновлений, поэтому такой способ
быстрее, чем синхронные обновления.
Кроме того, сложность реализации довольно ограничена, поэтому
риск внесения ошибок невелик. Недостаток в том, что
все обновления метаданных записываются дважды (один раз
в область протоколирования и один раз окончательно),
поэтому при обычной работе производительность может
понизиться. С другой стороны, в случае сбоя все
незаконченные действия с метаданными могут быть быстро
отменены, или завершены после загрузки системы,
поэтому система после сбоя загружается быстрее.Kirk McKusick, разработчик Berkeley FFS, решил эту проблему
с помощью Soft Updates: все незавершенные обновления метаданных
находятся в памяти и записываются на диск в упорядоченном
виде (упорядоченное обновления метаданных).
При значительных обновлениях метаданных более поздние обновления
присоединяются к предыдущим, если они все еще
находятся в памяти и еще не записаны на диск. Поэтому все
операции, скажем, над каталогом, обычно выполняются в памяти
перед записью обновления на диск (блоки данных сортируются
в соответствии с их положением, так что они не будут записаны
на диск до метаданных. При крахе операционной системы выполняется
откат: считается, что все операции, не записанные на
диск, никогда не происходили. Файловая система находится в
том состоянии, в котором она была за 30–60 секунд до сбоя.
Используемый алгоритм гарантирует, что все используемые ресурсы
маркированы соответствующим образом в своих областях: блоки и
- индексные дескрипторы. После сбоя могут остаться только ошибки,
+ индексные дескрипторы. После сбоя могут остаться только ошибки
выделения ресурсов, они помечаются как используемые,
хотя на самом деле свободны. &man.fsck.8;
разбирается в ситуации и освобождает более не используемые
ресурсы. После сбоя система может быть безопасно смонтирована
с опцией mount -f. Для освобождения ресурсов,
которые могут не использоваться, в дальнейшем потребуется
запустить &man.fsck.8;. Эта идея лежит в основе
background (фоновая) fsck: во время запуска системы
записывается только снимок файловой системы.
Все системы могут быть смонтированы в грязном
состоянии, и система загружается в многопользовательский режим.
Затем, фоновые fsck ставятся в очередь для
всех систем, где это требуется, чтобы освободить неиспользуемые
ресурсы. (Файловые системы, где не используются Soft Updates,
все еще требуют запуска fsck в обычном
режиме).Преимущество этого способа в том, что обновления метаданных
происходят почти так же быстро, как при асинхронных обновлениях
(т.е. быстрее, чем при журналировании,
когда метаданные записываются дважды). Недостаток в сложности
кода (подразумевающим больший риск появления ошибок в области,
где вероятность потери данных пользователя особенно высока) и
в более высоких требованиях к объему памяти. К тому же могут
возникнуть некоторые странные на первый взгляд ситуации.
После сбоя состояние файловой системы несколько более
старое. В ситуации, когда стандартный способ
синхронизации оставит несколько файлов нулевой длины после
выполнения fsck, в файловой системе с
Soft Updates их не останется вовсе, поскольку ни метаданные,
ни содержимое файлов не были записаны на диск. Дисковое
пространство не будет освобождено пока обновления не будут
записаны на диск, что может занять некоторое время после
выполнения rm. Это может повлечь проблемы
при установке большого количества файлов на файловую
систему, где не хватает места для помещения всех файлов
дважды.Изменение ограничений, накладываемых ядромоптимизацияпараметры ядраОграничения на Файлы/Процессыkern.maxfileskern.maxfilesЗначение kern.maxfiles может быть увеличено
или уменьшено в зависимости от потребностей вашей системы. Эта
переменная определяет максимальное число дескрипторов файлов. Когда
таблица дескрипторов файлов полна, в очереди системных сообщений
появится сообщение file: table is full. Это
сообщение может быть прочитано с помощью команды
dmesg.Каждый открытый файл, сокет или буфер использует дескриптор
файла. Широкомасштабному серверу может понадобиться много
тысяч дескрипторов файлов, в зависимости от количества программ,
одновременно выполняемых на сервере.Стандартное значение kern.maxfile определяется
переменной в вашем файле конфигурации
ядра. Значение kern.maxfiles увеличивается
пропорционально значению . При
компилировании ядра, нужно установить эту переменную согласно
потребностям вашей системы. Исходя из значения этой переменной,
ядро устанавливает значения большинства предопределённых
переменных. Даже если предполагается, что к компьютеру не будут
одновременно подсоединяться 256 пользователей, требуемые ресурсы
могут быть такими же, как у крупномасштабного сервера.Начиная с &os; 4.5, установка значения
в
0 в файле конфигурации ядра выберет подходящее
значение по умолчанию, основанное на объеме оперативной памяти
системы.kern.ipc.somaxconnkern.ipc.somaxconnПеременная sysctl kern.ipc.somaxconn
ограничивает размер очереди для приема новых TCP соединений.
Значение по умолчанию 128 слишком мало для
надежной обработки новых соединений для нагруженного web
сервера. Для такого сервера рекомендуется увеличить это значение
до 1024 или выше. Даемон сервиса может
сам ограничивать очередь приема новых соединений (например,
&man.sendmail.8;, или Apache), но
обычно в файле настройки даемона есть директива для настройки
длины очереди. Более длинная очередь также помогает избежать
атак Denial of Service (DoS).Сетевые ОграниченияОпция ядра NMBCLUSTERS обуславливает
количество Mbuf, доступных на машине. На сервере с большим трафиком
и маленьким Mbuf производительность будет пониженной. Каждый кластер
представлен двумя килобайтами памяти, поэтому значение 1024 означает
2 мегабайта памяти ядра, зарезервированной для сетевых буферов.
Для определения оптимального значения необходимо провести простые
вычисления. Если у вас веб сервер, который может обслуживать 1000
одновременных соединений, и каждое соединение съедает 16 K буфера
приема и 16 K буфера отправки, вам потребуется 32 MB памяти
под буферы. Хорошее правило — умножение этого значения на 2,
2x32 MB / 2 KB = 64 MB / 2 kB = 32768.
Мы рекомендуем значения между 4096 и 32768 для машин с большим объемом
памяти. Не указывайте произвольно большое значение параметра, это
может привести к падению системы при загрузке. Используйте
- &man.netstat.1; для определения количества
+ &man.netstat.1; с опцией для определения количества
используемых сетевых кластеров.Для настройки в процессе загрузки используйте в loader переменную
kern.ipc.nmbclusters. Только в старых версиях
&os; потребуется пересобрать ядро (&man.config.8;) с измененным
параметром NMBCLUSTERS.Для нагруженных серверов, интенсивно использующих системный
вызов &man.sendfile.2;, может потребоваться увеличения буферов
&man.sendfile.2; с помощью параметра конфигурации ядра
NSFBUFS, или изменения значения путем установки
переменной в /boot/loader.conf
(обратитесь к &man.loader.8; за подробностями). Общий
признак того, что параметр требуется изменить —
состояние процессов sfbufa.
Переменная sysctl kern.ipc.nsfbufs
установлена только для чтения. Этот параметр увеличивается
вместе с kern.maxusers, хотя может
потребоваться увеличить его отдельно.Даже если сокет помечен как неблокирующий, вызов
&man.sendfile.2; на неблокирующем сокете может вызвать блокирование
&man.sendfile.2;, пока не станет доступным достаточное количество
struct sf_buf.net.inet.ip.portrange.*net.inet.ip.portrange.*Переменные sysctl net.inet.ip.portrange.*
контролируют диапазоны номеров портов, автоматически привязываемых
к TCP и UDP сокетам. Есть три диапазона: нижний диапазон,
диапазон по умолчанию и верхний диапазон. Большинство сетевых
программ используют диапазон по умолчанию, контролируемый
net.inet.ip.portrange.first и
net.inet.ip.portrange.last, установленными
соответственно в 1024 и 5000. Диапазоны портов привязки
- используются исходящих соединений и при некоторых условиях
+ используются для исходящих соединений и при некоторых условиях
портов может не хватить. Это чаще всего происходит на
сильно загруженном прокси сервере. Диапазон портов не
становится проблемой при работе серверов, которые обрабатывают
в основном входящие соединения, или с небольшим количеством
исходящих соединений, например mail relay. Для ситуаций,
когда возможен недостаток портов, рекомендуется немного
увеличить net.inet.ip.portrange.last.
Может подойти значение 10000,
20000, или 30000.
Учтите также возможное влияние брандмауэра при
изменении диапазона портов. Некоторые могут блокировать
большие диапазоны портов (обычно с небольшими номерами)
и вынуждают использовать более высокие диапазоны для
исходящих соединений. По этой причине рекомендуется
настроить значение
net.inet.ip.portrange.first.TCP Bandwidth Delay ProductTCP Bandwidth Delay Product Limitingnet.inet.tcp.inflight_enableTCP Bandwidth Delay Product Limiting похоже на
TCP/Vegas в NetBSD. Оно может быть
включено установкой переменной sysctl
net.inet.tcp.inflight_enable в
1. Система попытается вычислить задержку
пакетов для каждого соединения и ограничить объем данных в
очереди сети до значения, требуемого для поддержания оптимальной
пропускной способности.Эта возможность полезна при передаче данных через модемы,
Gigabit Ethernet, или даже через высокоскоростные WAN соединения
(или любые другие соединения с большой задержкой передачи),
особенно если вы также используете изменение размера окна или
настроили большое окно передачи. Если вы включили этот параметр,
убедитесь также, что переменная
net.inet.tcp.inflight_debug установлена в
0 (отладка выключена), а для использования в
- реальных может понадобиться установка переменной
+ реальных задачах может понадобиться установка переменной
net.inet.tcp.inflight_min к значению
как минимум 6144. Но учтите, что установка
большого значения этой переменной может фактически отключить
ограничение в зависимости от вида соединения. Ограничение
уменьшает количество данных на определенном маршруте и
управляет очередью пакетов, как и уменьшает общее количество
данных в очереди локального интерфейса хоста. С меньшим
количеством пакетов в очереди двусторонние интерактивные
соединения, особенно на медленных линиях, могут проходить
быстрее. Но имейте ввиду, что эта функция работает только
при передаче данных (передача данных / сторона сервера).
Она не работает при получении данных (загрузке).Изменение значения переменной
net.inet.tcp.inflight_stabне рекомендуется. Этот параметр по умолчанию
равен 20, что означает добавление 2 пакетов к вычислению задержки
передачи. Дополнительное окно требуется для стабилизации
алгоритма и улучшения ответной реакции на изменение условий,
но также приводит к большему времени ping на медленных соединениях
(задержка все же гораздо меньше, чем без алгоритма inflight).
Вы можете попробовать уменьшить этот параметр до 15, 10 или 5;
а также уменьшить net.inet.tcp.inflight_min
(например, до 3500) для получения желаемого эффекта. Уменьшение
значений этих параметров может использоваться только как
крайняя мера.Увеличение объема подкачкиВне зависимости от того, что вы планировали, иногда
система ведет себя неожиданно. Если вам потребовался
дополнительный объем подкачки, его довольно просто добавить.
Есть три способа увеличения объема подкачки: добавить новый
жесткий диск, включить подкачку по NFS, или создать файл
подкачки на существующем разделе.Подкачка на новом жестком дискеЛучший способ добавить подкачку, конечно, использовать
еще один жесткий диск. Вы можете сделать это в любой
момент. Если такой способ подходит, прочтите еще раз
- информацию по пространству подкачки в разделе
+ информацию по пространству подкачки в
Руководства,
где рассказывается о наилучшем способе организации раздела
подкачки.Подкачка через NFSПодкачка через NFS рекомендуется только в том случае, если
в системе отсутствует жесткий диск. Подкачка через NFS
медленна и неэффективна в версиях &os; до 4.X. Она
довольно быстра и эффективна в 4.0-RELEASE и выше. Но даже
в новых версиях &os;, подкачка через NFS ограничена
скоростью сетевого подключения и к тому же дополнительно
нагружает NFS сервер.Файлы подкачкиВы можете создать файл определенного размера и использовать
его как файл подкачки. В нашем примере будет использован файл
/usr/swap0 размером 64MB. Конечно, вы
можете использовать любое имя.Создание файла подкачки в &os; 4.XУбедитесь, что ядре включен драйвер vnode. Он
- невключен в последних версиях
+ не включен в последних версиях
GENERIC.pseudo-device vn 1 #Vnode driver (turns a file into a device)Создайте устройство vn:&prompt.root; cd /dev
&prompt.root; sh MAKEDEV vn0Создайте файл подкачки (/usr/swap0):&prompt.root; dd if=/dev/zero of=/usr/swap0 bs=1024k count=64Установите подходящие права на (/usr/swap0):&prompt.root; chmod 0600 /usr/swap0Включите файл подкачки в /etc/rc.conf:swapfile="/usr/swap0" # Set to name of swapfile if aux swapfile desired.Перегрузите компьютер, или для включения подкачки прямо
сейчас выполните:&prompt.root; vnconfig -e /dev/vn0b /usr/swap0 swapСоздание файла подкачки в &os; 5.XУбедитесь, что в файле настройки ядра присутствует драйвер
виртуального диска (&man.md.4;). Он есть в ядре
GENERIC.device md # Memory "disks"Создайте файл подкачки (/usr/swap0):&prompt.root; dd if=/dev/zero of=/usr/swap0 bs=1024k count=64Установите подходящие права на (/usr/swap0):&prompt.root; chmod 0600 /usr/swap0Включите файл подкачки в /etc/rc.conf:swapfile="/usr/swap0" # Set to name of swapfile if aux swapfile desired.Перегрузите компьютер или для включения подкачки прямо сейчас
введите:&prompt.root; mdconfig -a -t vnode -f /usr/swap0 -u 0 && swapon /dev/md0HitenPandyaНаписал TomRhodesУправление питанием и ресурсамиОчень важно использовать аппаратные ресурсы эффективно.
До того, как появился ACPI, управление
потреблением питания и температурными характеристиками системы
было очень сложной для операционной системы задачей. Аппаратное
обеспечение контролировалось одним из видов встроенного интерфейса
BIOS, таким как: Plug and Play BIOS
(PNPBIOS), Advanced Power Management
(APM) и так далее. Управление питанием и ресурсами
это один из ключевых компонентов современной операционной системы.
Например, вам может потребоваться, чтобы операционная система
следила за температурными ограничениями и возможно, предупреждала
при неожиданном росте температуры.В этом разделе Руководства &os;, мы предоставим исчерпывающую
информацию о ACPI. В конце раздела есть ссылки
для дальнейшего чтения. Учтите, что ACPI есть
только в &os; 5.X и выше в качестве стандартного модуля ядра.
В &os; 4.9 ACPI можно включить добавлением
строки device acpica к файлу настройки ядра и
его пересборкой.Что такое ACPI?
+
+ ACPI
+
+
+
+ APM
+
+
Advanced Configuration and Power Interface
(ACPI) это стандарт, написанный объединением
поставщиков в целях предоставления стандартного интерфейса для
аппаратных ресурсов и управления питанием (отсюда и название).
Это ключевой элемент Operating System-directed
configuration and Power Management, т.е.: он предоставляет
операционной системе (OS) больше контроля и более
универсален. Современные системы вышли за пределы ограничений
существующих Plug and Play интерфейсов (таких как APM,
использовавшийся в &os; 4.X), до появления
ACPI. ACPI это прямой
наследник APM (Advanced Power Management).Недостатки Advanced Power Management (APM)Средства Advanced Power Management (APM)
управляют энергопотреблением системы в зависимости от
нагрузки. APM BIOS предоставляется поставщиком системы и
специфичен для данной аппаратной платформы. Драйвер APM
в OS обеспечивает доступ к APM Software Interface,
который позволяет управлять уровнями потребления питания.В APM имеется четыре основных проблемы. Во-первых, управление
энергопотреблением осуществляется через зависимый от поставщика
BIOS, и OS ничего не знает нем. Один пример: когда пользователь
устанавливает время ожидания для жесткого диска в APM BIOS,
и это время истекает, BIOS останавливает жесткий диск без согласования
с OS. Во-вторых, алгоритм APM встроен в BIOS, и все действия
происходят вне контроля OS. Это означает, что пользователи
могут решить проблемы с APM BIOS только путем перепрошивки
его ROM; это очень опасная процедура, и если она завершится
неудачно, система может оказаться в невосстановимом состоянии.
В-третьих, реализация технологии APM зависит от поставщика,
что означает дублирование усилий и если в BIOS одного
из поставщиков будет найдена и исправлена ошибка, ее могли
не исправить другие поставщики. Наконец, объем APM BIOS недостаточно
велик для реализации сложной политики управления питанием, или
такой политики, которая может хорошо адаптироваться к потребностям
компьютера.Plug and Play BIOS (PNPBIOS) был неудобен
во многих ситуациях. PNPBIOS это 16-битная технология,
поэтому OS требовалось использовать 16-битную эмуляцию для
взаимодействия с методами PNPBIOS.&os; драйвер APM документирован в странице
справочника &man.apm.4;.Настройка ACPI&man.loader.8; загружает драйвер acpi.ko по
умолчанию, его не надо встраивать в ядро.
Причина в том, что с модулями проще работать, например переключиться
на другой acpi.ko без пересборки ядра.
Преимущество в упрощении тестирования. Другая причина в том, что
запуск ACPI после старта системы не очень полезен
и при некоторых условиях может приводить к краху. Если вы
сомневаетесь, отключите ACPI совсем. Драйвер не
должен и не может быть выгружен, поскольку системная шина используется
для различных взаимодействий оборудования. ACPI
может быть выключен с помощью утилиты &man.acpiconf.8;. Фактически
большинство взаимодействий с ACPI может быть
выполнено через &man.acpiconf.8;. В основном это означает, что если в
выводе &man.dmesg.8; есть что-то об ACPI, он скорее
всего работает.ACPI и APM не могут
сосуществовать и должны использоваться раздельно. Каждый из них
прервет загрузку, если обнаружит загруженный драйвер
другого.В простейшей форме, ACPI может использоваться
для перевода системы в спящий режим с помощью &man.acpiconf.8;, с
флагом и параметром 1-5.
Большинству пользователей нужен только параметр 1.
Параметр 5 сделает мягкое
завершение работы, так же как и:&prompt.root; halt -pДоступны и другие параметры. Обратитесь к странице справочника
&man.acpiconf.8; за дополнительной информацией.NateLawsonНаписал PeterSchultzПри помощи TomRhodesИспользование и отладка &os; ACPIACPI это фундаментально новый способ
обнаружения устройств, управления энергопотреблением и предоставления
стандартизированного доступа к различному оборудованию,
ранее управлявшемуся BIOS. Был достигнут
определенный прогресс в приспособлении ACPI
к работе со всеми системами, но все еще встречаются ошибки
в байткоде ACPI Machine
Language (AML) некоторых материнских плат,
незавершенные участки кода в подсистемах ядра &os; и ошибки в
интерпретаторе &intel; ACPI-CA.Этот раздел предназначен для того, чтобы упростить ваше
содействие разработчикам &os; ACPI в
определении причин наблюдаемых вами проблем, выполнении отладки
и выработке решения. Спасибо за помощь и надеемся, что мы сможем
помочь в решении проблем вашей системы.Отправка отладочной информацииПеред отправкой сообщения об ошибке убедитесь, что
у вас последняя версия BIOS, и, если
доступна, последняя версия firmware встроенного
контроллера.Те из вас, кто желает составить сообщение о проблеме прямо
сейчас, могут воспользоваться адресом
freebsd-acpi@FreeBSD.org, отправив на него следующую
информацию:Описание неправильного поведения, включая тип системы, модель
и все, что приводит к появлению ошибки. Кроме того, сообщите
настолько точно, насколько возможно, когда появилась ошибка,
если ранее вы ее не видели.Вывод &man.dmesg.8; после boot
-v, включая все сообщения, появившиеся
при изучении ошибки.Вывод &man.dmesg.8; после boot
-v с выключенным ACPI,
если его отключение помогает решить проблему.Вывод sysctl hw.acpi. Это также хороший
способ получения списка возможностей системы.URL где можно найти ваш
ACPI Source Language
(ASL). Не отправляйте
ASL непосредственно в список рассылки,
поскольку он может быть очень большим. Копия
ASL может быть создана командой:&prompt.root; acpidump -t -d > name-system.asl(Замените вашим логином
name и производителем/моделью
system. Пример:
njl-FooCo6000.asl)Большинство разработчиков читают &a.current;,
но для уверенности, что проблему увидят, отправьте ее в
&a.acpi.name;. Будьте терпеливы, все мы заняты полный рабочий день где-то
еще. Если ваше сообщение не заметили сразу, мы возможно
попросим вас отправить PR (сообщение о проблеме)
через &man.send-pr.1;. При вводе PR,
включайте ту же информацию, что запрошена выше. Это поможет
нам отследить проблему и решить ее. Не отправляйте
PR без предварительной отправки письма в
&a.acpi.name;, поскольку мы используем PR в качестве
напоминаний о существующих проблемах, а не как механизм сообщений
об ошибках. Вероятно, о вашей проблеме кто-то уже сообщал
ранее.Общие сведения
+
+ ACPI
+
+
ACPI представлен во всех современных
компьютерах, соответствующих архитектурам ia32 (x86),
ia64 (Itanium) и amd64 (AMD). Полный стандарт включает множество
возможностей, в том числе управление производительностью
CPU, уровнем питания, температурой,
различными системами аккумуляторов, встроенными контроллерами
и опросом шины. В большинстве систем стандарт реализован не
полностью. Например, настольные системы обычно реализуют только
опрос шины, а портативные компьютеры кроме того могут поддерживать
управление охлаждением и энергопотреблением. Они также поддерживают
приостановку и последующий запуск системы различного уровня
сложности.ACPI-совместимые системы состоят из
различных компонентов. Производители BIOS
и чипсетов предоставляют различные жестко заданные таблицы,
(например, FADT), которые определяют
функции вроде карты APIC (используется для
SMP), регистры настройки и простые
значения параметров. Кроме того, предоставляется таблица
байткода (Differentiated System Description
Table, DSDT), определяющая древоподобное
пространство имен устройств и методов.Драйвер ACPI должен прочесть заданные
таблицы, реализовать интерпретатор для байткода, модифицировать
драйвера устройств и ядро для приема информации от подсистемы
ACPI. Для &os; &intel; предоставила
интерпретатор (ACPI-CA), тот же что для
Linux и NetBSD. Исходный код ACPI-CA
находится в каталоге
src/sys/contrib/dev/acpica.
Код для приспособления ACPI-CA к работе в
&os;, находится в src/sys/dev/acpica/Osd.
Наконец, драйвера, реализующие различные ACPI
устройства, находятся в
src/sys/dev/acpica.Часто встречающиеся проблемы
+
+ ACPI
+ проблемы
+
+
Для правильной работы ACPI все ее части должны
работать правильно. Вот некоторые часто встречающиеся проблемы, в порядке
частоты появления, и некоторые обходные пути или исправления.Приостановка/возобновление работыACPI поддерживает три состояния приостановки в
RAM (STR),
S1-S3, и одно состояние
приостановки на диск (STD), называемое
S4. S5 это
мягкое выключение и это нормальное состояние системы,
когда она подключена к сети, но не включена. S4
может быть реализован двумя различными путями.
S4BIOS это
BIOS-поддерживаемая приостановка на диск.
S4OS реализуется полностью
операционной системой.Начните с проверки переменных sysctl
hw.acpi,
относящихся к приостановке (suspend).
Вот результат для Thinkpad:hw.acpi.supported_sleep_state: S3 S4 S5
hw.acpi.s4bios: 0Это означает, что мы можем использовать acpiconf
-s для тестирования S3,
S4OS, и
S5. Если был единицей
(1), это означает поддержку
S4BIOS вместо
S4OS.При тестировании приостановки/возобновления работы, начните
с S1, если этот режим поддерживается.
Это состояние скорее всего поддерживается, поскольку не требует
слишком серьезной поддержки со стороны драйвера. Никто не
реализовал S2, который похож на
S1. Следующий режим для тестирования это
S3. Это наиболее глубокое STR
состояние, оно требует существенной поддержки со стороны
драйвера, чтобы правильно реинициализировать оборудование.
Если у вас возникли проблемы при выходе из этого состояния,
отправьте письмо в рассылку &a.acpi.name;, но не ждите, что
проблема будет обязательно решена, поскольку существует
множество драйверов/оборудования, нуждающихся в дальнейшем
тестировании и разработке.Для изоляции проблемы удалите из ядра столько драйверов,
сколько возможно. Если это работает, вы можете выяснить,
какой драйвер вызывает проблему путем загрузки драйверов
до тех пор, пока опять не произойдет сбой. Обычно бинарные
драйвера, такие как nvidia.ko,
драйвера дисплея X11 и
USB вызывают большинство проблем, а драйвера
Ethernet интерфейсов как правило работают отлично. Если вы
можете нормально загрузить/выгрузить драйвера, автоматизируйте
этот процесс, поместив соответствующие команды в
/etc/rc.suspend и
/etc/rc.resume. Это закомментированные
примеры выгрузки и загрузки драйверов. Попробуйте
установить параметр
в нуль (0), если ваш дисплей не включается
после возобновления
работы. Попробуйте установить большие или меньшие значения
для , чтобы проверить,
поможет ли это.Другой способ, который можно попробовать, это запуск
последнего дистрибутива Linux с поддержкой
- ACPI и протестировать поддержку
+ ACPI и тестирование поддержки
остановки/возобновления работы на том же оборудовании.
Если она работает на Linux, проблема скорее всего в
драйверах &os; и поиск драйвера, вызывающего проблему,
поможет разрешить ситуацию. Имейте ввиду, что разработчики
ACPI обычно не поддерживают другие
драйверы (звук, ATA, и т.п.), так что
все результаты работы по поиску проблемы возможно необходимо
отправить в список рассылки &a.current.name; и человеку,
поддерживающему драйвер. Если вы решитесь заняться
отладкой, поместите соответствующий код (&man.printf.3;)
в вызывающий проблему драйвер для обнаружения места, где
прерывается функция восстановления.Наконец, попробуйте отключить ACPI и
включить APM. Если приостановка/возобновление
работает с APM, вам возможно лучше подойдет
APM, особенно на старом оборудовании (до
2000). Включение корректной поддержки ACPI
поставщиками оборудования требует времени и вероятно в старом
оборудовании поддержка ACPI в
BIOS была некорректна.Система останавливается (временно или постоянно)Большинство систем останавливаются в результате потери
прерываний или шторма прерываний. В чипсетах
существует много проблем, связанных с тем, как
BIOS настраивает прерывания перед загрузкой,
правильностью таблицы APIC
(MADT), и маршрутизации
System Control Interrupt
(SCI).
+
+ шторм прерываний
+
+
Шторм прерываний может быть обнаружен по
потерянным прерываниям путем проверки вывода строки с
acpi0 команды vmstat -i.
Если счетчик увеличивается более, чем
несколько раз в секунду, это шторм прерываний.
Если система останавливается, попробуйте войти в
DDB
(CTRLALTESC на
консоли) и ввести show interrupts.
+
+ ACPI
+ отключение
+
+
Наиболее надежный способ избавиться от проблемы с прерываниями,
это отключение поддержки APIC с помощью
параметра loader.confhint.apic.0.disabled="1".ПаникаПаника, связанная с ACPI, случается довольно
редко и имеет наибольший приоритет исправления. Первый шаг
это изоляция действий, приводящих к панике (если это возможно)
и получение отладки. Следуйте инструкции по включению
options DDB и настройке последовательной консоли
(смотрите )
или настройке раздела &man.dump.8;. Вы можете получить отладочную
информацию DDB с помощью tr.
Если вы записываете отладку вручную, убедитесь, что переписали
как минимум пять (5) строк снизу и пять (5) строк сверху.Затем попробуйте изолировать проблему, загрузившись с
выключенным ACPI. Если это работает, вы можете
изолировать подсистему ACPI, используя
различные параметры .
Обратитесь к странице справочника &man.acpi.4; за примерами.Система включается после приостановки или завершения
работыВо-первых, попробуйте установить в &man.loader.conf.5; параметр
hw.acpi.disable_on_poweroff="0".
Это предотвращает отключение различных событий в
ACPI во время завершения работы.
В некоторых системах этот параметр необходимо установить
в 1 (по умолчанию) по тем же причинам. Обычно это
решает проблему, если система неожиданно включается после
приостановки или отключения питания.Другие проблемыЕсли вы наблюдаете другие проблемы с ACPI
(работа с внешним оборудованием, проблемы с обнаружением устройств,
и т.д.), отправьте описание проблемы в список рассылки;
однако, некоторые из этих проблем могут относиться к незавершенным
частям подсистемы ACPI, поэтому может
потребоваться время на их реализацию. Будьте терпеливы, и
подготовьтесь к тестированию исправлений, которые мы можем вам
выслать.ASL, acpidump, и
IASL
+
+ ACPI
+ ASL
+
+
Наиболее часто встречается проблема, связанная с предоставлением
поставщиками BIOS некорректного (или полностью
ошибочного!) байткода. Это обычно проявляется появлением
консольных сообщений ядра, подобных этому:ACPI-1287: *** Error: Method execution failed [\\_SB_.PCI0.LPC0.FIGD._STA] \\
(Node 0xc3f6d160), AE_NOT_FOUNDЗачастую вы можете разрешить эти проблемы путем обновления
BIOS до последней ревизии. Большинство консольных
сообщений безвредны, но если существуют другие проблемы, такие как
не работающий статус батареи, возможно существуют проблемы в
AML. Байткод, известный как
AML, компилируется из исходного текста на
языке ASL. AML находится
в таблице, известной как DSDT. Для получения
копии ASL, используйте &man.acpidump.8;.
Вы можете использовать оба параметра
(показывать содержимое постоянных таблиц) и
(дизассемблировать AML в ASL).
Обратитесь к разделу Отправка
отладочной информации за примером синтаксиса.Простейшая первая проверка, которую вы можете провести,
это перекомпиляция ASL для поиска ошибок.
Предупреждения обычно могут быть проигнорированы, но ошибки
обычно не позволяют ACPI работать правильно.
Для перекомпиляции ASL, выполните следующую
команду:&prompt.root; iasl your.aslИсправление ASL
+
+ ACPI
+ ASL
+
+
В дальней перспективе, наша задача состоит в том, чтобы
обеспечить поддержку ACPI практически для
каждой системы без вмешательства пользователя. Однако, на данный
момент мы все еще разрабатываем обходные пути для ошибок,
которые часто делают поставщики BIOS.
Интерпретатор µsoft; (acpi.sys и
acpiec.sys) не занимается проверкой
четкости соблюдения стандартов, поэтому многие поставщики
BIOS, проверяющие ACPI
только под &windows;, никогда не исправляют ASL.
Мы надеемся продолжать обнаружение и документацию нестандартных
поведений, позволяемых интерпретатором µsoft;, и воспроизводить
их, чтобы &os; могла работать без необходимости исправления
ASL пользователями. В качестве обходного пути
для обнаружения неправильного поведения, вы можете исправить
ASL вручную. Если исправления будут работать,
пожалуйста отправьте &man.diff.1; между старым и новым
ASL, чтобы мы могли реализовать обходной
путь для неправильного поведения ACPI-CA,
чтобы исправление вручную больше не требовалось.
+
+ ACPI
+ сообщения об ошибках
+
+
Вот список наиболее часто встречающихся проблем, их причин и
способы исправления:OS зависимостиНекоторые AML предполагают, что мир состоит
из различных версий &windows;. Вы можете настроить &os;, чтобы
она сообщала любое другое имя OS и посмотреть,
исправит ли это имеющуюся проблему. Простой способ указания
другого имени системы это установка переменной
/boot/loader.confhw.acpi.osname="Windows 2001"
или в другое подобное значение, имеющееся в
ASL.Отсутствие возврата значенияНекоторые методы не возвращают значение явно, как того
требует стандарт. Хотя ACPI-CA не обрабатывает
эту ситуацию, в &os; существует обходной путь, позволяющей ей
явно возвращать значение. Вы можете также добавить явные операторы
Return (возврат) там, где требуется, если знаете, что значение
должно быть возвращено. Для принудительного компилирования
ASL командой iasl, используйте
флаг .Перезапись AML по умолчаниюПосле настройки your.asl для
компиляции запустите:&prompt.root; iasl your.aslВы можете добавить флаг для создания
AML даже при наличии ошибок компиляции.
Помните, что некоторые ошибки (например, отсутствующие операторы
Return), автоматически обходятся интерпретатором.Файл DSDT.aml используется
iasl по умолчанию. Вы можете загрузить его
вместо ошибочной копии BIOS (которая
остается в постоянной памяти) путем редактирования
/boot/loader.conf:acpi_dsdt_load="YES"
acpi_dsdt_name="/boot/DSDT.aml"Убедитесь, что скопировали DSDT.aml в
каталог /boot.Получение отладочной информации
ACPI
+
+ ACPI
+ проблемы
+
+
+
+ ACPI
+ отладка
+
+
Возможности отладки драйвера ACPI очень
гибкие. Они позволяют вам указывать набор подсистем, а также
уровень отладки. Подсистемы, которые вы хотите отлаживать,
указываются как слои, и подразделяются на
компоненты ACPI-CA (ACPI_ALL_COMPONENTS)
и поддержку оборудования ACPI (ACPI_ALL_DRIVERS).
Уровень отладки варьируется от ACPI_LV_ERROR (только сообщать об
ошибках) до ACPI_LV_VERBOSE (все сообщения). Уровень отладки
представляет собой битовую маску, поэтому возможна одновременная
установка нескольких параметров, разделенных пробелами.
На практике, при использовании для получения отладочной информации
последовательной консоли, слишком большое количество информации
может переполнить буфер консоли. Полный список отдельных слоев
и уровней можно найти на странице справочника &man.acpi.4;.Вывод отладочной информации по умолчанию не включен.
Для его включения добавьте параметр
options ACPI_DEBUG к файлу настройки ядра, если
ACPI встроен в ядро. Вы можете добавить параметр
ACPI_DEBUG=1 в файл
/etc/make.conf для глобального включения
этого параметра. Если вы используете модуль
acpi.ko , его можно пересобрать
индивидуально:&prompt.root; cd /sys/modules/acpi/acpi
&& make clean && make
ACPI_DEBUG=1Установите acpi.ko в
/boot/kernel и добавьте
предпочитаемый уровень и слой к loader.conf.
Этот пример включает отладочные сообщения для всех компонентов
ACPI-CA и всех драйверов оборудования
ACPI (CPU,
LID и т.д.). Будут выводиться только сообщения
об ошибках, наименьший уровень отладки.debug.acpi.layer="ACPI_ALL_COMPONENTS ACPI_ALL_DRIVERS"
debug.acpi.level="ACPI_LV_ERROR"Если требуемая информация получается в результате определенного
события (скажем, приостановка и восстановление), вы можете
не изменять loader.conf и использовать
для указания слоя и уровня sysctl
после загрузки и подготовки системы к определенному событию.
Имена переменных sysctl те же, что и имена
параметров настройки в loader.conf.СсылкиДальнейшую информацию о ACPI можно найти
по следующим ссылкам:&a.acpi;Архивы списка рассылки ACPI
Старые архивы списка рассылки ACPI
Спецификация ACPI 2.0
Страницы справочника &os;: &man.acpi.4;,
&man.acpi.thermal.4;, &man.acpidump.8;, &man.iasl.8;,
&man.acpidb.8;
Ресурс по отладке DSDT.
(Использует в качестве примера Compaq, но обычно полезен.)
diff --git a/ru_RU.KOI8-R/books/handbook/users/chapter.sgml b/ru_RU.KOI8-R/books/handbook/users/chapter.sgml
index e3ca07ca9e..c8c459ef09 100644
--- a/ru_RU.KOI8-R/books/handbook/users/chapter.sgml
+++ b/ru_RU.KOI8-R/books/handbook/users/chapter.sgml
@@ -1,1163 +1,1162 @@
NeilBlakey-MilnerПредоставил ДенисПеплинПеревод на русский язык: Пользователи и основы управления учетными записямиКраткий обзорFreeBSD позволяет одновременную работу множества пользователей
на одном компьютере. Разумеется, только один пользователь может сидеть
за клавиатурой и перед экраном в один момент времени
Конечно, пока не используется множество терминалов, но мы
оставим эту тему для ., но любое количество пользователей может выполнять работу
через сеть. Для использования системы у каждого пользователя должна
быть учетная запись.После прочтения этой главы вы будете знать:Различия между разнообразными учетными записями в системе
FreeBSD.Как добавлять учетные записи пользователей.Как удалять учетные записи пользователей.Как изменять данные учетных записей пользователей, такие
как полное имя пользователя, или предпочитаемую оболочку.Как устанавливать ограничения на использование ресурсов,
например на использование памяти и времени CPU для учетных записей
или групп учетных записей.Как использовать группы для упрощения управлением учетными
записями.Перед прочтением этой главы вам потребуется:Понимание основ &unix; и FreeBSD ().ВведениеВесь доступ к системе осуществляется через учетные записи,
и все процессы запускаются пользователями, так что управление
пользователями и учетными записями в системах FreeBSD имеет
всеобъемлющее значение.С каждой учетной записью в системе FreeBSD связана определенная
идентификационная информация.Имя пользователяИмя пользователя в том виде, в каком оно вводится в
приглашение login:. Имена пользователей
должны быть уникальны в пределах одного компьютера; не может
быть двух пользователей с одинаковым именем пользователя.
Существует множество правил для создания правильных имен
пользователей, документированных в &man.passwd.5;; вы как
правило будете использовать имена пользователей, состоящие
из восьми или меньшего количества символов, все символы в
нижнем регистре.ПарольС каждой учетной записью связан пароль. Пароль может быть
пустым, в этом случае для доступа к системе не нужен пароль.
Обычно это очень плохая идея; у каждой учетной записи должен быть
пароль.ID пользователя (User ID, UID)The UID это номер, традиционно от 0 до
65535Возможно использование UID/GID вплоть до
4294967295, но эти ID могут вызвать серьезные проблемы с
программами, делающими предположения о значениях
ID., используемый для однозначной идентификации
пользователя в системе. Сама система FreeBSD для идентификации
пользователей использует UID — любая команда FreeBSD,
позволяющая вам указывать имя пользователя, первым делом
преобразует его к UID. Это означает, что вы можете создать
несколько учетных записей с различными именами пользователей,
но с одним UID. FreeBSD будет воспринимать эти учетные записи как
одного пользователя. Маловероятно, что вам когда-либо это
понадобится.ID группы (Group ID, GID)GID это номер, традиционно от 0 до
65535, используемый
для однозначной идентификации главной группы, к которой
принадлежит пользователь. Группы это механизм для контроля
доступа к ресурсам на основе GID пользователя вместо его UID.
Это может значительно уменьшить размер некоторых файлов настройки.
Кроме того, пользователь может быть включен более чем в одну
группу.Класс логинаКлассы логинов это расширение к механизму групп,
позволяющее системе более гибко управлять различными
пользователями.Время изменения пароляПо умолчанию FreeBSD не принуждает пользователей периодически
менять пароли. Вы можете включить эту функцию для определенных
пользователей, заставив некоторых или всех пользователей менять
пароли по прошествии определенного времени.Время истечения действия учетной записиПо умолчанию в FreeBSD время действия учетных записей не
ограничено. Если вы создаете учетные записи, продолжительность
- жизни которых ограничена, например в учетные записи для
+ жизни которых ограничена, например учетные записи для
студентов в школе, вы можете определить время истечения
действия учетной записи. После наступления этого времени
учетная запись не может использоваться для входа в систему,
хотя каталоги и файлы этой учетной записи останутся
нетронутыми.Полное имя пользователяИмя пользователя является уникальным идентификатором
учетной записи в FreeBSD, но недостаточно для сопоставления
с реальным именем пользователя. Эта информация может быть
добавлена в учетную запись.Домашний каталогДомашний каталог это полный путь к каталогу в системе, в
котором пользователь начнет работать после входа в систему.
По общепринятому соглашению все домашние каталоги пользователей
помещаются в
/home/username
или
/usr/home/username.
Пользователи хранят личные файлы в домашнем каталоге и в любых
подкаталогах, создаваемых внутри домашнего каталога.Оболочка пользователяОболочка необходима пользователям как средство взаимодействия
с системой по умолчанию. Существует множество различных видов
оболочек, опытные пользователи работают с собственными
настройками, которые могут быть отражены в установках их учетных
записей.Существует три основных типа учетных записей: суперпользователь, системные пользователи, и учетные записи пользователей.
Учетная запись суперпользователя, обычно называемая
root, используется для управления системой
без ограничения привилегий. Системные пользователи запускают
сервисы. Наконец, учетные записи пользователей необходимы обычным
людям для входа в систему, чтения почты, и так далее.Учетная запись суперпользователяучетные записисуперпользователь (root)Учетная запись суперпользователя, обычно называемая
root, существует в системе изначально
для целей системного администрирования, и не должна использоваться
для повседневных задач, таких как получение и отправка почты,
общее исследование системы или программирование.Причина в том, что суперпользователь, в отличие от обычных
пользователей, может работать без ограничений и неправильное
использование учетной записи суперпользователя может привести к
полному уничтожению системы. Учетные записи пользователей не
способны уничтожит систему вследствие ошибки, поэтому обычно
лучше использовать учетные записи обычных пользователей везде,
где это возможно, пока вам не потребуются дополнительные
привилегии для какой-то определенной задачи.Вы всегда должны дважды и трижды проверять команды, выполняемые
под учетной записью суперпользователя, поскольку даже один лишний
пробел или отсутствующий символ может привести к безвозвратной
потере данных.Таким образом, первое, что вам необходимо сделать после прочтения
этой главы, это создать непривилегированную учетную запись пользователя
для повседневного использования (если вы еще этого не сделали).
Это необходимо сделать независимо от того, работаете ли вы на
многопользовательском или однопользовательском компьютере.
Позже в этой главе мы обсудим как создать дополнительные учетные записи,
и как менять уровень привилегий между нормальным пользователем и
суперпользователем.Системные учетные записиучетные записисистемныеСистемные пользователи предназначены для запуска сервисов, таких
как DNS, почта, веб серверы и так далее. Это необходимо по соображениям
безопасности; если все сервисы работают от суперпользователя, они
могут действовать без ограничений.учетные записиdaemonучетные записиoperatorПримеры системных пользователей это daemon,
operator, bind (для
- Domain Name Service, DNS), и news. Зачастую
- системные администраторы создают httpd
- для запуска устанавливаемых веб серверов.
+ Domain Name Service, DNS), news и
+ www.
учетные записиnobodynobody это классический непривилегированный
системный пользователь. Тем не менее, необходимо помнить, что чем
больше сервисов используют nobody, тем больше
файлов и процессов ассоциировано с этим пользователем, и следовательно
тем больше прав появляется у этого пользователя.Учетные записи пользователейучетные записипользователейУчетные записи пользователей в основном означают доступ в систему
для обычных людей, и эти учетные записи отделяют пользователя и
его рабочую среду, предотвращая повреждение пользователем системы
или данных других пользователей, и позволяя пользователям
настраивать свою рабочую среду без влияния на других
пользователей.Каждая персона, получающая доступ к вашей системе, должна получить
уникальную учетную запись пользователя. Это позволит вам выяснить
кто что делает, предотвращая сбивание одним пользователем настроек
других пользователей, чтение чужой почты и так далее.Каждый пользователь может настраивать свою собственную рабочую
среду для приспособления системы под свои нужды с помощью альтернативных
оболочек, редакторов, привязки клавиш и настроек языка.Изменение учетных записейучетные записиизменениеВ среде &unix; существуют различные команды для работы с учетными
записями пользователей. Наиболее часто используемые команды приведены
в таблице, ниже находятся более детальные примеры их
использования.КомандаКраткое описание&man.adduser.8;Рекомендуемое приложение командной строки для добавления
новых пользователей.&man.rmuser.8;Рекомендуемое приложение командной строки для удаления
пользователей.&man.chpass.1;Гибкий инструмент для изменения информации в базе данных
пользователей.&man.passwd.1;Простой инструмент командной строки для изменения паролей
пользователей.&man.pw.8;Мощный и гибкий инструмент для изменения любой информации,
связанной с учетными записями пользователей.adduserучетные записидобавлениеadduser/usr/share/skelкаталог шаблоновskeleton directory&man.adduser.8; это простая программа для добавления новых
пользователей. Она создает записи в системных файлах
passwd и group.
Она также создает домашний каталог для нового пользователя,
копируя файлы настройки по умолчанию (dotfiles, файлы
имя который начинается с символа .) из
/usr/share/skel и опционально может отправлять
новому пользователю приветственное сообщение.В &os; 5.0, скрипт &man.adduser.8; был переписан с языка
Perl на язык shell, работающий в качестве оболочки к
&man.pw.8;, так что использование этого скрипта в &os; 4.X
немного отличается использования в &os; 5.X.Для создания файла настройки используйте
adduser -s -config_create.
С параметром &man.adduser.8;
не будет выводить информацию. Позже для изменения настроек
по умолчанию мы используем параметр .
Далее, мы настроим параметры &man.adduser.8; по умолчанию и
создадим нашу первую учетную запись пользователя, поскольку
повседневное использование root
неприемлемо.Настройка adduser и добавление
пользователя в &os; 4.X&prompt.root; adduser -v
Use option ``-silent'' if you don't want to see all warnings and questions.
Check /etc/shells
Check /etc/master.passwd
Check /etc/group
Enter your default shell: csh date no sh tcsh zsh [sh]: zsh
Your default shell is: zsh -> /usr/local/bin/zsh
Enter your default HOME partition: [/home]:
Copy dotfiles from: /usr/share/skel no [/usr/share/skel]:
Send message from file: /etc/adduser.message no
[/etc/adduser.message]: no
Do not send message
Use passwords (y/n) [y]: y
Write your changes to /etc/adduser.conf? (y/n) [n]: y
Ok, let's go.
Don't worry about mistakes. I will give you the chance later to correct any input.
Enter username [a-z0-9_-]: jru
Enter full name []: J. Random User
Enter shell csh date no sh tcsh zsh [zsh]:
Enter home directory (full path) [/home/jru]:
Uid [1001]:
Enter login class: default []:
Login group jru [jru]:
Login group is ``jru''. Invite jru into other groups: guest no
[no]: wheel
Enter password []:
Enter password again []:
Name: jru
Password: ****
Fullname: J. Random User
Uid: 1001
Gid: 1001 (jru)
Class:
Groups: jru wheel
HOME: /home/jru
Shell: /usr/local/bin/zsh
OK? (y/n) [y]: y
Added user ``jru''
Copy files from /usr/share/skel to /home/jru
Add another user? (y/n) [y]: n
Goodbye!
&prompt.root;В результате мы изменили оболочку по умолчанию на
zsh (дополнительная оболочка, находящаяся
в коллекции портов), и отключили отправку добавляемым пользователям
письма с приветствием. Затем мы сохранили настройки, создали
учетную запись для jru, и убедились, что
jru находится в группе
wheel (теперь этот пользователь может получить
привилегии root с помощью команды
&man.su.1;.)Пароль, который вы вводите, не отображается,
звездочки при вводе пароля также не отображаются.
- Убедитесь, что вы не ошиблись при вооде пароля.
+ Убедитесь, что вы не ошиблись при вводе пароля.
Теперь просто используйте &man.adduser.8; без аргументов,
и вам не потребуется изменять настройки по умолчанию. Если
программа будет запрашивать изменение настроек по умолчанию,
попробуйте параметр .Добавление пользователя в &os; 5.X&prompt.root; adduser
Username: jru
Full name: J. Random User
Uid (Leave empty for default):
Login group [jru]:
Login group is jru. Invite jru into other groups? []: wheel
Login class [default]:
Shell (sh csh tcsh zsh nologin) [sh]: zsh
Home directory [/home/jru]:
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a random password? (yes/no) [no]:
Enter password:
Enter password again:
Lock out the account after creation? [no]:
Username : jru
Password : ****
Full Name : J. Random User
Uid : 1001
Class :
Groups : jru wheel
Home : /home/jru
Shell : /usr/local/bin/zsh
Locked : no
OK? (yes/no): yes
adduser: INFO: Successfully added (jru) to the user database.
Add another user? (yes/no): no
Goodbye!
&prompt.root;rmuserrmuserучетные записиудалениеДля полного удаления пользователя из системы вы можете
использовать &man.rmuser.8;. Эта программа выполняет следующие
действия:Удаление записи пользователя из &man.crontab.1; (если
она присутствует).Удаляет задачи &man.at.1;, принадлежащие
пользователю.Уничтожает все процессы, принадлежащие пользователю.Удаляет пользователя из локального файла паролей.Удаляет домашний каталог пользователя (если он принадлежит
пользователю).Удаляет принадлежащую пользователю входящую почту из
/var/mail.Удаляет все файлы, принадлежащие пользователю, из каталогов
с временными файлами, например /tmp.Наконец, удаляет имя пользователя из всех групп, которым оно
принадлежит, в /etc/group.
Если после этого удаления группа остается пустой и
имя группы совпадает с именем пользователя, она удаляется;
Это необходимо для удаления пользовательских уникальных
групп, создаваемых &man.adduser.8;.&man.rmuser.8; не может использоваться для удаления учетной
записи суперпользователя, поскольку это почти всегда означает
разрушение системы.По умолчанию используется интерактивный режим, программа
пытается убедиться, что вы уверены в своих действиях.Интерактивное удаление учетной записи с помощью
rmuser&prompt.root; rmuser jru
Matching password entry:
jru:*:1001:1001::0:0:J. Random User:/home/jru:/usr/local/bin/zsh
Is this the entry you wish to remove? y
Remove user's home directory (/home/jru)? y
Updating password file, updating databases, done.
Updating group file: trusted (removing group jru -- personal group is empty) done.
Removing user's incoming mail file /var/mail/jru: done.
Removing files belonging to jru from /tmp: done.
Removing files belonging to jru from /var/tmp: done.
Removing files belonging to jru from /var/tmp/vi.recover: done.
&prompt.root;chpasschpass&man.chpass.1; изменяет информацию в базе данных пользователей:
пароли, оболочки, персональную информацию.Только системные администраторы с правами суперпользователя
могут изменять информацию и пароли других пользователей с помощью
&man.chpass.1;.При запуске без параметров (кроме опционального имени
пользователя), &man.chpass.1; вызывает редактор, содержащий
информацию о пользователе. Когда пользователь выходит из редактора,
база данных пользователей обновляется этой информацией.В &os; 5.X, после выхода из редактора будет запрошен
пароль (если вы не суперпользователь.Интерактивная работа с chpass
суперпользователя#Changing user database information for jru.
Login: jru
Password: *
Uid [#]: 1001
Gid [# or name]: 1001
Change [month day year]:
Expire [month day year]:
Class:
Home directory: /home/jru
Shell: /usr/local/bin/zsh
Full Name: J. Random User
Office Location:
Office Phone:
Home Phone:
Other information:Обычные пользователи могут изменять лишь небольшую часть этой
информации, и только для своей учетной записи.Интерактивная работа с chpass обычного
пользователя#Changing user database information for jru.
Shell: /usr/local/bin/zsh
Full Name: J. Random User
Office Location:
Office Phone:
Home Phone:
Other information:&man.chfn.1; и &man.chsh.1; это всего лишь ссылки на
&man.chpass.1;, как и &man.ypchpass.1;, &man.ypchfn.1; и
&man.ypchsh.1;. NIS поддерживается автоматически, так что
указание yp перед командой не обязательно.
Если это непонятно, не беспокойтесь, NIS будет рассмотрен в
.passwdpasswdучетные записиизменение пароля&man.passwd.1; это обычный способ изменения собственного пароля
пользователя, или пароля другого пользователя
суперпользователем.Для предотвращения случайного или неавторизованного изменения,
перед установкой нового пароля необходимо ввести старый.Изменение пароля&prompt.user; passwd
Changing local password for jru.
Old password:
New password:
Retype new password:
passwd: updating the database...
passwd: doneИзменение пароля другого пользователя
суперпользователем&prompt.root; passwd jru
Changing local password for jru.
New password:
Retype new password:
passwd: updating the database...
passwd: doneКак и с &man.chpass.1;, &man.yppasswd.1; это всего лишь
ссылка на &man.passwd.1;, так что NIS работает с обеими
командами.pwpw&man.pw.8; это утилита командной строки для создания, удаления,
модифицирования и отображения пользователей и групп. Она
функционирует как внешний интерфейс к системным файлам пользователей
и групп. У &man.pw.8; очень мощный набор параметров командной строки,
что делает это программу подходящей для использования в shell
скриптах, но новым пользователям она может показаться более сложной,
чем другие представленные здесь команды.Ограничение пользователейограничение пользователейучетные записиограничениеЕсли у вас есть пользователи, может появиться мысль о возможности
ограничения нагрузки на систему. FreeBSD предоставляет
администратору несколько способов ограничения объема
занимаемых пользователями системных ресурсов. Существует два вида
ограничений: дисковые квоты и другие ограничения ресурсов.квотыограничение пользователейквотыдисковые квотыДисковые квоты ограничивают объем пространства, занимаемого
пользователями, это способ быстрой проверки объема без вычисления
его каждый раз. Квоты обсуждаются в .Другие ограничения ресурсов включают способы ограничения
использования CPU, памяти и других ресурсов, которые могут потребляться
пользователем. Ограничения накладываются с помощью классов учетных
записей и обсуждаются в этом разделе./etc/login.confКлассы учетных записей определяются в
/etc/login.conf. Описание полной семантики
выходит за пределы обсуждаемого здесь материала, она детально
описана в странице справочника &man.login.conf.5;. Достаточно
сказать, что каждому пользователю присвоен класс
(default по умолчанию), и каждому классу присвоен
набор характеристик. Характеристика определяется в виде пары
имя=значение,
где имя это определенный идентификатор,
а значение это произвольная строка,
обрабатываемая в зависимости от имени. Настройка классов и
характеристик довольно проста и также описана в
&man.login.conf.5;.Система не читает настройки в
/etc/login.conf непосредственно, она обращается
к файлу базы данных /etc/login.conf.db.
Для создания /etc/login.conf.db из
/etc/login.conf, выполните следующую
команду:&prompt.root; cap_mkdb /etc/login.confОграничения на ресурсы отличаются от обычных характеристик:
во-первых, для каждого ограничения существует мягкое
(текущее) и жесткое ограничение. Мягкое ограничение
может настраиваться пользователем или приложением, но не может
превышать жесткое ограничение. Последнее может быть уменьшено
пользователем, но никогда не увеличено. Во-вторых, большинство
ограничений ресурсов применяются к процессам определенного пользователя,
а не к пользователю вообще. Обратите внимание, что эти различия
- реализуются специфической обработкой лимитов, а не реализацией
+ реализуются специфической обработкой ограничений, а не реализацией
структуры характеристик учетных записей (т.е. это не
настоящий специальный случай характеристик).Ниже приведен список наиболее часто используемых ограничений
на ресурсы (остальные, вместе с другими характеристиками
можно найти в &man.login.conf.5;).coredumpsizecoredumpsizeограничение пользователейcoredumpsizeОграничение на размер файла core, генерируемого программой,
по очевидным причинам подчиняющееся другим ограничениям
на используемое дисковое пространство (например,
filesize, или дисковые квоты).
Тем не менее, оно часто используется как менее строгий
метод контролирования потребления дискового пространства:
поскольку пользователь не создает файлы core самостоятельно,
и зачастую не удаляет их, установка этого параметра может
предохранить его от выхода за пределы дисковых квот, если
большая программа (например, emacs)
создаст core файл.cputimecputimeограничение пользователейcputimeЭто максимальное количество времени CPU, потребляемого
пользователем. Превысившие это время процессы будут уничтожены
ядром.
Это ограничение потребляемого
времени CPU, а не процентов использования
CPU, которые отображаются в некоторых полях &man.top.1;
и &man.ps.1;. Ограничения на них на время написания этого
материала невозможны и такие ограничения практически
бесполезны: компилятор — вполне законное приложение
— иногда может легко использовать почти 100%
CPU.filesizefilesizeограничение пользователейfilesizeЭто максимальный размер файла, который может обрабатываться
пользователем. В отличие от дисковых
квот, это ограничение применяется к отдельным файлам,
а не ко всему набору принадлежащих пользователю файлов.maxprocmaxprocограничение пользователейmaxprocЭто максимальное число процессов, которые могут быть
запущены пользователем. В это число включаются и консольные
и фоновые процессы. По очевидным причинам, они не могут быть
больше, чем системное ограничение, указываемое через
переменную &man.sysctl.8; kern.maxproc.
Имейте ввиду, что установка слишком жестких ограничений может
стать помехой работе пользователя: зачастую полезно входить
в систему с нескольких консолей или использовать каналы.
Некоторые задачи, такие как компиляция большой программы,
также порождают множество процессов (например, &man.make.1;,
&man.cc.1; и другие препроцессоры).memorylockedmemorylockedограничение пользователейmemorylockedЭто максимальный объем памяти, блокировка которого
может быть запрошена процессом (см. например
&man.mlock.2;). Некоторые критически важные для системы
программы, такие как &man.amd.8;, блокируют память так,
что при выгрузке они не создают системе дополнительных
проблем.memoryusememoryuseограничение пользователейmemoryuseЭто максимальный объем памяти, которая может быть занята
- процессами. Он включает основную и основную память и
+ процессами. Он включает основную память и
использование подкачки. Это ограничение не снимает все вопросы,
связанные с использованием памяти, но для начала это подходящее
ограничение.openfilesopenfilesограничение пользователейopenfilesЭто максимальное количество файлов, которые могут быть
открыты процессами. В FreeBSD, файлы также используются для
представления сокетов и каналов IPC; не устанавливайте слишком
маленькое значение. Ограничение этого параметра, устанавливаемое
для всей системы, определяется переменной &man.sysctl.8;
kern.maxfiles.sbsizesbsizeограничение пользователейsbsizeЭто ограничение потребляемого пользователем объема сетевой
памяти, т.е. mbufs. Оно было введено как ответ на старые
DoS атаки, при которых создавалось множество сокетов,
но обычно может быть использовано и для ограничения
сетевых соединений.stacksizestacksizeограничение пользователейstacksizeЭто максимальный размер, до которого может вырасти стек
процесса. Сам по себе этот параметр не может ограничить
размер используемой программой памяти, следовательно,
его необходимо использовать вместе с другими ограничениями.Существуют несколько других аспектов, которые необходимо учитывать
при установке ограничений ресурсов. Ниже приведены некоторые общие
подсказки, советы и различные комментарии.Процессам, загружаемым при старте системы скриптами
/etc/rc присваивается класс
daemon.Хотя /etc/login.conf, поставляемый с
системой, это хороший источник подходящих значений для большинства
ограничений, только вы, администратор, можете знать подходящие
значения для вашей системы. Установка слишком слабых ограничений
может повлечь злоупотребления системой, а установка слишком
сильных ограничений может стать помехой производительности.Пользователи X Window System (X11) возможно должны получить
больше ресурсов, чем другие пользователи. X11 сама по себе
потребляет много ресурсов, а также провоцирует пользователей
на одновременный запуск большего количества программ.Помните, что многие ограничения применяются к отдельным
процессам, а не к пользователю вообще. Например, установка
openfiles в 50 означает, что каждый
процесс, запущенный пользователем, может открывать до 50
файлов. Таким образом, общее количество файлов, которые могут
быть открыты пользователем, вычисляется как
openfiles, помноженное на
maxproc. Это также применимо к потребляемой
памяти.За дальнейшей информацией по ограничениям на ресурсы, классам
учетных записей и характеристикам, обращайтесь к соответствующим
страницам справочника.Персонализация пользователейЛокализация это окружение, настраиваемое системным администратором
или пользователем для работы с различными языками, наборами
символов, стандартами даты и времени, и так далее. Это обсуждается
в главе локализация.Группыгруппы/etc/groupsучетные записигруппыГруппа это просто список пользователей. Группа идентифицируется
по имени и GID (Group ID, идентификатор группы). В FreeBSD
(и большинстве других &unix;-подобных системах) ядро для определения
прав процесса использует два фактора: его ID пользователя и
список групп, которым он принадлежит. Когда вы слышите что-то о
group ID пользователя или процесса, это обычно означает
только первую группу из списка.Имена групп связываются с ID групп в файле
/etc/group. Это текстовый файл с четырьмя
разделенными двоеточием полями. Первое поле это имя группы,
второе это зашифрованный пароль, третье это ID группы, а четвертое
это разделенный запятыми список членов группы. Этот файл может
быть безопасно отредактирован вручную (предполагается, конечно,
что вы не сделаете синтаксических ошибок!). За более полным описанием
синтаксиса обратитесь к странице справочника &man.group.5;.Если вы не хотите редактировать /etc/group
вручную, используйте команду &man.pw.8; для добавления и
редактирования групп. Например, для добавления группы,
называемой teamtwo, и проверки ее существования
вы можете использовать:Добавление группы с использованием &man.pw.8;&prompt.root; pw groupadd teamtwo
&prompt.root; pw groupshow teamtwo
teamtwo:*:1100:Число 1100 это ID группы
teamtwo. На данный момент в,
teamtwo нет членов, и поэтому она практически
бесполезна. Давайте изменим эту ситуацию, добавив
jru в группу teamtwo.Добавление пользователя в группу с использованием
&man.pw.8;&prompt.root; pw groupmod teamtwo -M jru
&prompt.root; pw groupshow teamtwo
teamtwo:*:1100:jruАргумент к параметру это разделенный
запятыми список пользователей, являющихся членами группы. Из предыдущих
разделов мы знаем, что файл паролей также указывает группу для
каждого пользователя. Пользователь автоматически добавляется системой
к списку групп; пользователь не будет показан как член группы при
использовании &man.pw.8; , но эта
информация будет показана при использовании &man.id.1; или похожего
инструмента. Другими словами, с этим параметром программа &man.pw.8;
работает только с файлом /etc/group; она никогда
не будет пытаться получить дополнительную информацию из файла
/etc/passwd.Использование &man.id.1; для определения принадлежности к
группам&prompt.user; id jru
uid=1001(jru) gid=1001(jru) groups=1001(jru), 1100(teamtwo)Как вы можете видеть, jru является членом
групп jru и
teamtwo.За дальнейшей информацией о &man.pw.8;, обратитесь к ее странице
справочника, а за дополнительной информацией о формате файла
/etc/group к странице справочника
&man.group.5;.