6.11 Настройка с помощью sysctl во FreeBSD


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 (ложь)).
6.11.1 Переменные sysctl(8) только для чтения
Предоставил 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.local. Значения по умолчанию хранятся в файле /boot/defaults/loader.conf.

Решение проблемы, приведенной выше, потребует помещения строки hw.pci.allow_unsupported_io_range=1 в вышеупомянутый файл. Теперь cardbus(4) будет работать нормально.

Обновлено: 12.03.2015