sysctl(8) - это
интерфейс, позволяющий вам вносить изменения в работающую систему FreeBSD. Эти изменения
могут касаться многих опций стека TCP/IP и виртуальной памяти и могут облегчить опытному
администратору жизнь. Более пяти тысяч системных переменных могут быть прочитаны и
записаны с помощью sysctl(8).
По своей сути, sysctl(8) выполняет
две функции: чтение и изменение настроек системы.
Для просмотра всех доступных для чтения переменных::
% sysctl -a
Чтобы прочитать определённую переменную, например, kern.maxproc, введите:
% sysctl kern.maxproc
kern.maxproc: 1044
Для присвоения значения переменной, используйте выражение вида переменная=значение:
# sysctl kern.maxfiles=5000
kern.maxfiles: 2088 -> 5000
Изменяемые с помощью sysctl переменные обычно принимают значения либо строкового, либо
целого, либо булевого типа. Переменные булевого типа могут принимать два значения (1 (истина) и 0 (ложь)).
Если вы хотите устанавливать некоторые переменные автоматически при каждой загрузке
компьютера, добавьте их в файл /etc/sysctl.conf. За
дополнительной информацией обращайтесь к странице справочника sysctl.conf(5) и к Разд. 11.10.4.
Предоставил Tom Rhodes.
В некоторых случаях желательно изменить переменные sysctl(8) только для
чтения. Хотя это не рекомендуется, иногда другого способа решить проблему нет.
Например, на некоторых моделях лэптопов диапазон памяти устройства cardbus(4) не
определяется и выдается приблизительно такая ошибка:
cbb0: Could not map register memory
device_probe_and_attach: cbb0 attach returned 12
Ситуации, похожие на эту, требуют изменения некоторых значений sysctl(8), модификация
которых запрещена. Для разрешения этой ситуации пользователь может поместить sysctl(8) ``OID'' в
файл /boot/loader.conf. Значения по умолчанию хранятся в файле
/boot/defaults/loader.conf.
Решение проблемы, приведенной выше, потребует помещения строки hw.pci.allow_unsupported_io_range=1 в вышеупомянутый файл. Теперь cardbus(4) будет
работать нормально.