Конфигурационные файлы. Основные конфигурационные файлы Linux Конфигурационный файл GRUB

  • Recovery Mode

Введение

Как-то находясь в поиске как мне прикрутить конфигурационные ini файлы или json к моему сервачку перебирал варианты, но почему-то они были неудобны или слишком простые, или велосипеды. И хоть я люблю xml конфигурирование, но порою это чрезмерно огромные файлы и неудобно для небольшого количества настроек писать много текста. Раз задал другу вопрос по этой теме, он то мне и подкинул библиотеку. Напоминает она json в смеси с yaml.

Библиотека имеет два интерфейса: функциональный и объектный. Они очень похожи, так как объектный использует внутри функциональную реализацию, но имеют некоторые различия, рассмотренные в данном посте.

Настройка и подключение

Библиотека есть во многих репозиториях, поэтому установка простая:
$ sudo aptitude install libconfig8 libconfig8-dev libconfig++ libconfig++-dev

В исходниках С++ подключается одним лишь инклудом:
#include
или
#include
или для С
#include

Конфигурационный файл

Файл конфига представляет собой следующего вида структуру:
# Example application configuration file version = "1.0"; application: { window: { title = "My Application"; size = { w = 640; h = 480; }; pos = { x = 350; y = 250; }; }; list = (("abc", 123, true), 1.234, (/* an empty list */)); books = ({ title = "Treasure Island"; author = "Robert Louis Stevenson"; price = 29.95; qty = 5; }, { title = "Snow Crash"; author = "Neal Stephenson"; price = 9.99; qty = 8; }); misc: { pi = 3.141592654; bigint = 9223372036854775807L; columns = [ "Last Name", "First Name", "MI" ]; bitmask = 0x1FC3; }; };

Основными видами записей в конфиге являются такие типы:

Элемент (Setting)
Это минимальная значимая часть конфигурационной структуры и имеют вид ключ-значение:
name = value;
или
name: value
Группы (Groups)
Группы могут содержать любое число элементов, но каждый элемент должен содержать уникальный ключ в пределах группы. Записывается в фигурных скобках:
{ settings... }
Массивы (Arrays)
Содержат любое количество элементов, даже ноль, но все элементы состоят лишь из значений и должны иметь один и тот же скалярный тип в пределах массива. Записывает в квадратных скобках:
[ value, value ... ]
Списки (Lists)
Списки содержат ноль или более элементов скалярного типа, массивов, групп или списков. Записывается в круглых скобках:
(value, value ...)
Целочисленые значения (Integers)
Записываются обычным нам десятичным способом (±0-9) или шестнадцатиричном виде (0xA-f). Но целочисленные значения ограничены диапазоном -2147483648..2147483647 (32bit), но если нужны большие диапазоны, то в конце добавляется ’L’.
3578934 897893450934L
Дробные числа с плавающей запятой (floats)
Записывается тоже привычным нам способом
3.1415
Запись с экспонентой стандартная с "e".
Булевые значения (Boolean)
Значения записываются как ’true’ или ’false’ и регистронезависимо (без кавычек, конечно).
Строки (Strings)
Записываются в двойных кавычках как "Обычная длинная строка записанная для примера" .
Следующие варианты в итоге дадут то же значение строки:
"Обычная длинная строка" "записанная для примера"
"Обычная длинная строка" /* комментарий */ " записанная " // комментарий "для примера" .
Комментарии
В конфиге возможны три привычных в С++ вида:
  • # однострочный до конца строки
  • // тоже однострочный до конца строки
  • /*… */ многострочный комментарий включая переносы строк
Внешние подключения (Includes)
Это, в общем, самая вкусная вкусняшка.
# file: quote.cfg quote = "Criticism may not be agreeable, but it is necessary." " It fulfils the same function as pain in the human" " body. It calls attention to an unhealthy state of" " things.\n" "\t--Winston Churchill";
# file: test.cfg info: { name = "Winston Churchill"; @include "quote.cfg" country = "UK"; };

С API

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

Описание использованых функций ниже

#include #include #include /* Данный пример читает конфигурационный файл "example.cfg" и выводит его составляющие */ int main(int argc, char **argv) { /* используются свои типы. */ config_t cfg; config_setting_t *setting; const char *str; config_init(&cfg); /* обязательная инициализация */ /* Читаем файл. Если ошибка, то завершаем работу */ if(! config_read_file(&cfg, "example.cfg")) { fprintf(stderr, "%s:%d - %s\n", config_error_file(&cfg), config_error_line(&cfg), config_error_text(&cfg)); config_destroy(&cfg); return(EXIT_FAILURE); } /* Поиск некого значения "name". */ if(config_lookup_string(&cfg, "name", &str)) printf("Store name: %s\n\n", str); else fprintf(stderr, "No "name" setting in configuration file.\n"); /* Вывод списка книжек с полок. */ setting = config_lookup(&cfg, "inventory.books"); if(setting != NULL) { int count = config_setting_length(setting); int i; printf("%-30s %-30s %-6s %s\n", "TITLE", "AUTHOR", "PRICE", "QTY"); for(i = 0; i < count; ++i) { config_setting_t *book = config_setting_get_elem(setting, i); /* Выводим только те записи, если они имеют все нужные поля. */ const char *title, *author; double price; int qty; if(!(config_setting_lookup_string(book, "title", &title) && config_setting_lookup_string(book, "author", &author) && config_setting_lookup_float(book, "price", &price) && config_setting_lookup_int(book, "qty", &qty))) continue; printf("%-30s %-30s $%6.2f %3d\n", title, author, price, qty); } putchar("\n"); } /* Вывод всех фильмов с полки. */ setting = config_lookup(&cfg, "inventory.movies"); if(setting != NULL) { unsigned int count = config_setting_length(setting); unsigned int i; printf("%-30s %-10s %-6s %s\n", "TITLE", "MEDIA", "PRICE", "QTY"); for(i = 0; i < count; ++i) { config_setting_t *movie = config_setting_get_elem(setting, i); /* Вывод только тех медиа, у которых заполнены все поля. */ const char *title, *media; double price; int qty; if(!(config_setting_lookup_string(movie, "title", &title) && config_setting_lookup_string(movie, "media", &media) && config_setting_lookup_float(movie, "price", &price) && config_setting_lookup_int(movie, "qty", &qty))) continue; printf("%-30s %-10s $%6.2f %3d\n", title, media, price, qty); } putchar("\n"); } config_destroy(&cfg); /* Освободить память обязательно, если это не конец программы */ return(EXIT_SUCCESS); }

Небольшое описание функционала
Полное описание в документации .

config_t - тип файла конфигурации (это ещё не запись). Грубо говоря, основной контейнер.
config_setting_t - объект элемента конфигурации. В примере используется указатель, возвращаемый контейнером на искомый элемент.
int config_read_file (config_t * config, const char * filename) - функция читает конфигурационный файл filename в память и заполняет объект типа config_t . Можно не читать из файла, а сразу «скормить» строку в config_read_string() или отдать дескриптор файла в config_read()
int config_lookup_string (const config_t * config, const char * path, const char ** value) - ищет и возвращает значение в виде указателя на строку value , по заданному пути path внутри конфига config .
config_setting_t * config_lookup (const config_t * config, const char * path) - ищет запись внутри конфига по заданному внутреннему пути и возвращает её.
config_setting_t * config_setting_get_elem (const config_setting_t * setting, unsigned int index) - используется для массивов, списков чтобы возвращать из него элементы с таким-то номером по порядку
int config_setting_lookup_string (const config_setting_t * setting, const char * name, const char ** value) -
возвращает значение value дочернего элемента name относительно заданной записи setting
Когда же надо получить значение в конкретно заданной записи, то используются функции типа
int config_setting_get_int (const config_setting_t * setting)

C++ API

Тот же пример, но на С++. Полная документация на сайте

#include #include #include #include using namespace std; using namespace libconfig; // Пример, читающий конфигурационный файл "example.cfg" и выводит его записи int main(int argc, char **argv) { Config cfg; // Прочитать файл. Или выйти с ошибкой // Класс в С++ не возвращает ошибку, а кидает исключение try { cfg.readFile("example.cfg"); } catch(const FileIOException &fioex) { std::cerr << "I/O error while reading file." << std::endl; return(EXIT_FAILURE); } catch(const ParseException &pex) { std::cerr << "Parse error at " << pex.getFile() << ":" << pex.getLine() << " - " << pex.getError() << std::endl; return(EXIT_FAILURE); } // Получить некое название. try { string name = cfg.lookup("name"); cout << "Store name: " << name << endl << endl; } catch(const SettingNotFoundException &nfex) { cerr << "No "name" setting in configuration file." << endl; } const Setting& root = cfg.getRoot(); // Найти все книжки на полке. try { const Setting &books = root["inventory"]["books"]; int count = books.getLength(); cout << setw(30) << left << "TITLE" << " " << setw(30) << left << "AUTHOR" << " " << setw(6) << left << "PRICE" << " " << "QTY" << endl; for(int i = 0; i < count; ++i) { const Setting &book = books[i]; // Находим только те записи, что имеют все заполненные поля. string title, author; double price; int qty; if(!(book.lookupValue("title", title) && book.lookupValue("author", author) && book.lookupValue("price", price) && book.lookupValue("qty", qty))) continue; cout << setw(30) << left << title << " " << setw(30) << left << author << " " << "$" << setw(6) << right << price << " " << qty << endl; } cout << endl; } catch(const SettingNotFoundException &nfex) { // Ignore. } // Вывод всех фильмов с полки. try { const Setting &movies = root["inventory"]["movies"]; int count = movies.getLength(); cout << setw(30) << left << "TITLE" << " " << setw(10) << left << "MEDIA" << " " << setw(6) << left << "PRICE" << " " << "QTY" << endl; for(int i = 0; i < count; ++i) { const Setting &movie = movies[i]; // Вывод только тех, что содержат все поля. string title, media; double price; int qty; if(!(movie.lookupValue("title", title) && movie.lookupValue("media", media) && movie.lookupValue("price", price) && movie.lookupValue("qty", qty))) continue; cout << setw(30) << left << title << " " << setw(10) << left << media << " " << "$" << setw(6) << right << price << " " << qty << endl; } cout << endl; } catch(const SettingNotFoundException &nfex) { // Ignore. } return(EXIT_SUCCESS); }
Тут тот же принцип, что и в функциональном стиле, только перед получением данных из конфига необходимо получать корневой элемент cfg.getRoot(); и уже потом от него обращаться к остальным элементам. Так же надо быть внимательным к тому, что практически на все ошибки кидаются исключения

Заключение

Кроме считывания удобных конфигов, в API предоставлен так же функционал создания элементов конфига и его записи на носитель.

ЪБ РПМОЩН УРЙУЛПН БТИЙФЕЛФХТОП-ЪБЧЙУЙНЩИ РБТБНЕФТПЧ Й ХУФТПКУФЧ ПВТБФЙФЕУШ Л ЖБКМХ NOTES Ч ФПН ЦЕ ЛБФБМПЗЕ, ЮФП Й GENERIC . бТИЙФЕЛФХТОП ОЕЪБЧЙУЙНЩЕ РБТБНЕФТЩ ОБИПДСФУС Ч /usr/src/sys/conf/NOTES .

дЙТЕЛФЙЧБ include УФБМБ ДПУФХРОПК ДМС ЙУРПМШЪПЧБОЙС Ч ЛПОЖЙЗХТБГЙПООЩИ ЖБКМБИ. пОБ РПЪЧПМСЕФ ЧЛМАЮБФШ Ч ФЕЛХЭЙК ЛПОЖЙЗХТБГЙПООЩК ЖБКМ УПДЕТЦЙНПЕ ДТХЗПЗП ЖБКМБ, ФЕН УБНЩН ХРТПЭБС РТПГЕУУ ЧОЕУЕОЙС ОЕВПМШЫЙИ ЙЪНЕОЕОЙК Ч УХЭЕУФЧХАЭЙК ЖБКМ. оБРТЙНЕТ, ЕУМЙ ЧБН ОЕПВИПДЙНП ДПВБЧЙФШ ЧУЕЗП ОЕУЛПМШЛП ДПРПМОЙФЕМШОЩИ ПРГЙК ЙМЙ ДТБКЧЕТПЧ Ч СДТП GENERIC , ФП ЧБН РТЙДЕФУС РПДДЕТЦЙЧБФШ ФПМШЛП ТБЪОЙГХ Л ЖБКМХ GENERIC:

Include GENERIC ident MYKERNEL options IPFIREWALL options DUMMYNET options IPFIREWALL_DEFAULT_TO_ACCEPT options IPDIVERT

вПМШЫЙОУФЧП БДНЙОЙУФТБФПТПЧ ПГЕОСФ ЪОБЮЙФЕМШОЩЕ РТЕЙНХЭЕУФЧБ РЕТЕД УФБТЩН УРПУПВПН - ОБРЙУБОЙЕН ЛПОЖЙЗХТБГЙПООПЗП ЖБКМБ У ОХМС >>: ЧБЫ ЛПОЖЙЗХТБГЙПООЩК ЖБКМ ВХДЕФ ПФПВТБЦБФШ ФПМШЛП ЙЪНЕОЕОЙС ПФОПУЙФЕМШОП GENERIC . б РПУМЕ ПВОПЧМЕОЙК ЙУИПДОПЗП ЛПДБ, ОПЧЩЕ ЖХОЛГЙПОБМШОЩЕ ЧПЪНПЦОПУФЙ, РПСЧЙЧЫЙЕУС Ч GENERIC, ВХДХФ ДПВБЧМЕОЩ Й Ч ЧБЫХ ЛПОЖЙЗХТБГЙА, ЕУМЙ ФПМШЛП ОЕ РТЕРСФУФЧПЧБФШ ЬФПНХ ДЙТЕЛФЙЧБНЙ nooptions ЙМЙ nodevice . дБМЕЕ Ч ЬФПН ТБЪДЕМЕ ПРЙУЩЧБЕФУС ФЙРПЧПК ЛПОЖЙЗХТБГЙПООЩК ЖБКМ, ЕЗП ПРГЙЙ Й ХУФТПКУФЧБ, Б ФБЛЦЕ ЙИ ТПМЙ.

рТЙНЕЮБОЙЕ:

дМС УВПТЛЙ СДТБ УП ЧУЕНЙ ЧПЪНПЦОЩНЙ ПРГЙСНЙ (ПВЩЮОП ЙУРПМШЪХЕФУС ДМС ФЕУФЙТПЧБОЙС), ЧЩРПМОЙФЕ ПФ ЙНЕОЙ УХРЕТРПМШЪПЧБФЕМС (root) УМЕДХАЭХА ЛПНБОДХ:

# cd /usr/src/sys/ i386 /conf && make LINT

ьФП РТЙНЕТ ЛПОЖЙЗХТБГЙПООПЗП ЖБКМБ СДТБ GENERIC У ТБЪМЙЮОЩНЙ ДПРПМОЙФЕМШОЩНЙ ЛПННЕОФБТЙСНЙ, ЛПФПТЩЕ НПЗХФ РПОБДПВЙФШУС ДМС СУОПУФЙ. ьФПФ РТЙНЕТ ДПМЦЕО УПЧРБДБФШ У ЧБЫЕК ЛПРЙЕК Ч /usr/src/sys/ i386 /conf/GENERIC РТБЛФЙЮЕУЛЙ РПМОПУФША.

Machine i386

ьФП БТИЙФЕЛФХТБ НБЫЙОЩ. пОБ ДПМЦОБ ВЩФШ ПДОПК ЙЪ УМЕДХАЭЙИ: amd64 , i386 , ia64 , pc98 , powerpc , ЙМЙ sparc64 .

Cpu I486_CPU cpu I586_CPU cpu I686_CPU

ьФБ ПРГЙС ХЛБЪЩЧБЕФ ФЙР РТПГЕУУПТБ, ЛПФПТЩК ЙУРПМШЪХЕФУС Ч ЧБЫЕК УЙУФЕНЕ. ч ЛПОЖЙЗХТБГЙПООПН ЖБКМЕ НПЦЕФ ВЩФШ ОЕУЛПМШЛП ЧИПЦДЕОЙК ЬФПК ПРГЙЙ (ОБРТЙНЕТ, ЕУМЙ ЧЩ ОЕ ХЧЕТЕОЩ, ЛБЛПК ЙЪ ФЙРПЧ РТПГЕУУПТБ ОЕПВИПДЙНП ЙУРПМШЪПЧБФШ - I586_CPU ЙМЙ I686_CPU), ОП ДМС УПВУФЧЕООПЗП СДТБ МХЮЫЕ ХЛБЪЩЧБФШ ФПМШЛП ФПФ ФЙР РТПГЕУУПТБ, ЛПФПТЩК ХУФБОПЧМЕО Ч ЧБЫЕК УЙУФЕНЕ. еУМЙ ЧЩ ОЕ ХЧЕТЕОЩ, ЛБЛПК ФЙР ОЕПВИПДЙНП ЙУРПМШЪПЧБФШ ЧБН, ЧЩ НПЦЕФЕ ЧПУРПМШЪПЧБФШУС ЖБКМПН /var/run/dmesg.boot , ЮФПВЩ ХЧЙДЕФШ РТПФПЛПМ ЪБЗТХЪЛЙ УЙУФЕНЩ.

Ident GENERIC

ьФПФ РБТБНЕФТ ПРТЕДЕМСЕФ НЕФЛХ >> СДТБ. оЕПВИПДЙНП, ЮФПВЩ ПОБ УППФЧЕФУФЧПЧБМБ ОБЪЧБОЙА ЖБКМБ ЛПОЖЙЗХТБГЙЙ СДТБ, ОБРТЙНЕТ MYKERNEL , ЕУМЙ ЧЩ УМЕДПЧБМЙ ЙОУФТХЛГЙСН Ч РТЕДЩДХЭЙИ РТЙНЕТБИ. ъОБЮЕОЙЕ, ЛПФПТПЕ ЧЩ РТЙУЧПЙФЕ РБТБНЕФТХ ident ВХДЕФ ЧЩЧПДЙФШУС Ч РТПГЕУУЕ ЪБЗТХЪЛЙ, РПЬФПНХ РПМЕЪОП ДБЧБФШ ОПЧЩН СДТБН ДТХЗЙЕ ЙНЕОБ ДМС ФПЗП, ЮФПВЩ ПФМЙЮБФШ ЙИ ПФ ПВЩЮОПЗП СДТБ (ОБРТЙНЕТ, ЕУМЙ ЧЩ ИПФЙФЕ УПВТБФШ ЬЛУРЕТЙНЕОФБМШОПЕ СДТП).

#To statically compile in device wiring instead of /boot/device.hints #hints "GENERIC.hints" # Default places to look for devices. options SCHED_ULE # ULE scheduler

рМБОЙТПЧЭЙЛ РП ХНПМЮБОЙА ЧП FreeBSD. пУФБЧШФЕ ЬФХ ПРГЙА.

Options PREEMPTION # Enable kernel thread preemption

рПЪЧПМСЕФ ЧЩУПЛПРТЙПТЙФЕФОЩН ОЙФСН СДТБ ЧЩФЕУОСФШ ЛПОЛХТЕОФПЧ, ОБИПДСЭЙИУС Ч ТЕЦЙНЕ ЧЩРПМОЕОЙС. ьФБ ПРГЙС НПЦЕФ РПНПЮШ РПЧЩУЙФШ ТЕБЛФЙЧОПУФШ УЙУФЕНЩ РП ПФОПЫЕОЙА Л ЧОЕЫОЙН ЧПЪДЕКУФЧЙСН, ОБРТЙНЕТ, ЪБ УЮЕФ УОЙЦЕОЙС МБФЕОФОПУФЙ ОЙФЕК, ПВТБВБФЩЧБАЭЙИ РТЕТЩЧБОЙС.

Options INET # InterNETworking

рПДДЕТЦЛБ УЕФЕЧЩИ ЧПЪНПЦОПУФЕК. пУФБЧШФЕ ЬФХ ПРГЙА ЧЛМАЮЕООПК, ДБЦЕ ЕУМЙ ЧЩ ОЕ РМБОЙТХЕФЕ РПДЛМАЮБФШУС Л УЕФЙ. вПМШЫЙОУФЧП РТПЗТБНН ФТЕВХАФ, ЮФПВЩ ТБВПФБМ ИПФС ВЩ ЙОФЕТЖЕКУ ПВТБФОПК УЧСЪЙ (loopback) (Ф.Е. УПЪДБОЙЕ УЕФЕЧЩИ УПЕДЙОЕОЙК ЧОХФТЙ ЧБЫЕЗП рл), ФБЛ ЮФП ЬФБ ПРГЙС Ч РТЙОГЙРЕ СЧМСЕФУС ПВСЪБФЕМШОПК.

Options INET6 # IPv6 communications protocols

чЛМАЮБЕФ РПДДЕТЦЛХ ЛПННХОЙЛБГЙПООЩИ РТПФПЛПМПЧ IPv6.

Options FFS # Berkeley Fast Filesystem

чЛМАЮБЕФ РПДДЕТЦЛХ ПУОПЧОПК ЖБКМПЧПК УЙУФЕНЩ. оЕ ХДБМСКФЕ ЬФХ ПРГЙА, ЕУМЙ ЧЩ РМБОЙТХЕФЕ ЪБЗТХЦБФШУС У ЦЕУФЛПЗП ДЙУЛБ.

Options SOFTUPDATES # Enable FFS Soft Updates support

ьФПФ РБТБНЕФТ ЧЛМАЮБЕФ Ч СДТЕ ФЕИОПМПЗЙА Soft Updates, ЛПФПТБС РПЧЩЫБЕФ УЛПТПУФШ ЪБРЙУЙ ОБ ДЙУЛЙ. оЕУНПФТС ОБ ФП, ЮФП ЬФБ ФЕИОПМПЗЙС ЧЛМАЮЕОБ Ч СДТЕ, ПОБ ДПМЦОБ ВЩФШ ЧЛМАЮЕОБ ДМС ПФДЕМШОЩИ ДЙУЛПЧ. рТПУНПФТЙФЕ ЧЩЧПД ЛПНБОДЩ ЮФПВЩ ПРТЕДЕМЙФШ, ЧЛМАЮЕОЩ МЙ Soft Updates ДМС ДЙУЛПЧ ЧБЫЕК УЙУФЕНЩ. еУМЙ ЧЩ ОЕ ХЧЙДЙФЕ РБТБНЕФТ soft-updates , ЧБН ВХДЕФ ОЕПВИПДЙНП БЛФЙЧЙТПЧБФШ ЕЗП РТЙ РПНПЭЙ ЛПНБОДЩ (ДМС УХЭЕУФЧХАЭЙИ ЖБКМПЧЩИ УЙУФЕН) ЙМЙ ЛПНБОДЩ (ДМС ОПЧЩИ ЖБКМПЧЩИ УЙУФЕН).

Options UFS_ACL # Support for access control lists

ьФПФ РБТБНЕФТ ЧЛМАЮБЕФ Ч СДТЕ РПДДЕТЦЛХ УРЙУЛПЧ ХРТБЧМЕОЙС ДПУФХРПН (ACL). пУОПЧЩЧБЕФУС ОБ ЙУРПМШЪПЧБОЙЙ ТБУЫЙТЕООЩИ БФТЙВХФПЧ Й UFS2 , ДЕФБМШОПЕ ПРЙУБОЙЕ ЧЩ УНПЦЕФЕ ОБКФЙ Ч тБЪДЕМљ14.12, > . ACL ЧЛМАЮЕОЩ РП ХНПМЮБОЙА Й ОЕ ДПМЦОЩ ЧЩЛМАЮБФШУС Ч УМХЮБЕ, ЕУМЙ ПОЙ ТБОЕЕ ЙУРПМШЪПЧБМЙУШ ОБ ЖБКМПЧПК УЙУФЕНЕ, ФБЛ ЛБЛ ЬФП ХДБМЙФ УРЙУЛЙ ХРТБЧМЕОЙС ДПУФХРПН Й ЙЪНЕОЙФ ФП, ЛБЛ ЪБЭЙЭЕОЩ ЖБКМЩ, ОЕРТЕДУЛБЪХЕНЩН ПВТБЪПН.

Options UFS_DIRHASH # Improve performance on big directories

ьФБ ПРГЙС ЧЛМАЮБЕФ ЖХОЛГЙПОБМШОПУФШ, ЛПФПТБС РПЧЩЫБЕФ УЛПТПУФШ ДЙУЛПЧЩИ ПРЕТБГЙК ОБ ВПМШЫЙИ ЛБФБМПЗБИ Ч ПВНЕО ОБ ЙУРПМШЪПЧБОЙЕ ДПРПМОЙФЕМШОПК РБНСФЙ. дМС ВПМШЫПЗП УЕТЧЕТБ ЙМЙ ТБВПЮЕК УФБОГЙЙ ТЕЛПНЕОДХЕФУС ПУФБЧЙФШ ЕЕ ЧЛМАЮЕООПК, Й ЧЩЛМАЮЙФШ ДМС УЙУФЕНЩ, ДМС ЛПФПТПК ВПМЕЕ РТЙПТЙФЕФОБ РБНСФШ, ЮЕН УЛПТПУФШ ДПУФХРБ Л ДЙУЛБН, ОБРТЙНЕТ ДМС ВТБОДНБХЬТБ.

Options MD_ROOT # MD is a potential root device

ьФПФ РБТБНЕФТ ЧЛМАЮБЕФ РПДДЕТЦЛХ ЙУРПМШЪПЧБОЙС ДЙУЛПЧ Ч РБНСФЙ ДМС ЛПТОЕЧПК ЖБКМПЧПК УЙУФЕНЩ.

Options NFSCLIENT # Network Filesystem Client options NFSSERVER # Network Filesystem Server options NFS_ROOT # NFS usable as /, requires NFSCLIENT

уЕФЕЧБС ЖБКМПЧБС УЙУФЕНБ. еУМЙ ЧЩ ОЕ РМБОЙТХЕФЕ НПОФЙТПЧБФШ ТБЪДЕМЩ У ЖБКМПЧПЗП УЕТЧЕТБ UNIX (R) ЮЕТЕЪ TCP/IP, ЧЩ НПЦЕФЕ ЙУЛМАЮЙФШ ЬФПФ РБТБНЕФТ ЙЪ ЛПОЖЙЗХТБГЙПООПЗП ЖБКМБ СДТБ.

Options MSDOSFS # MSDOS Filesystem

жБКМПЧБС УЙУФЕНБ MS-DOS (R). еУМЙ ЧЩ ОЕ УПВЙТБЕФЕУШ НПОФЙТПЧБФШ ЖПТНБФЙТПЧБООЩК Ч DOS ТБЪДЕМ ЦЕУФЛПЗП ДЙУЛБ Ч НПНЕОФ ЪБЗТХЪЛЙ, ЧЩ НПЦЕФЕ ВЕЪПРБУОП ЪБЛПННЕОФЙТПЧБФШ ЬФПФ РБТБНЕФТ. оЕПВИПДЙНЩК НПДХМШ ВХДЕФ БЧФПНБФЙЮЕУЛЙ ЪБЗТХЦЕО, ЛПЗДБ ЧЩ Ч РЕТЧЩК ТБЪ УНПОФЙТХЕФЕ ТБЪДЕМ DOS, ФБЛ, ЛБЛ ЬФП ПРЙУБОП ОЙЦЕ. лТПНЕ ФПЗП, ЪБНЕЮБФЕМШОЩК РБЛЕФ РПЪЧПМСЕФ РПМХЮЙФШ ДПУФХР Л DOS ДЙУЛЕФБН ВЕЪ ОЕПВИПДЙНПУФЙ НПОФЙТПЧБФШ Й ТБЪНПОФЙТПЧБФШ ЙИ (Й ОЕ ФТЕВХЕФ ОБМЙЮЙС MSDOSFS).

Options CD9660 # ISO 9660 Filesystem

жБКМПЧБС УЙУФЕНБ ISO 9660 ДМС ЛПНРБЛФ-ДЙУЛПЧ. еУМЙ Х ЧБУ ОЕФ РТЙЧПДБ CDROM ЙМЙ ЧЩ ВХДЕФЕ МЙЫШ ЙЪТЕДЛБ НПОФЙТПЧБФШ ЛПНРБЛФ-ДЙУЛЙ У ДБООЩНЙ, ЪБЛПННЕОФЙТХКФЕ ЬФХ УФТПЛХ, ФБЛ ЛБЛ ОЕПВИПДЙНЩК НПДХМШ ВХДЕФ ЪБЗТХЦЕО БЧФПНБФЙЮЕУЛЙ РТЙ РЕТЧПН НПОФЙТПЧБОЙЙ ЛПНРБЛФ-ДЙУЛБ У ДБООЩНЙ. дМС ЙУРПМШЪПЧБОЙС ЪЧХЛПЧЩИ ЛПНРБЛФ-ДЙУЛПЧ ЬФБ ЖБКМПЧБС УЙУФЕНБ ОЕ РПФТЕВХЕФУС.

Options PROCFS # Process filesystem (requires PSEUDOFS)

жБКМПЧБС УЙУФЕНБ РТПГЕУУПЧ. ьФП ЧЙТФХБМШОБС >> ЖБКМПЧБС УЙУФЕНБ НПОФЙТХЕНБС Ч /proc , ЛПФПТБС РПЪЧПМСЕФ ФБЛЙН РТЙМПЦЕОЙСН, ЛБЛ ЧЩДБЧБФШ ЧБН ВПМШЫЕ ЙОЖПТНБГЙЙ П ЪБРХЭЕООЩИ РТПГЕУУБИ. йУРПМШЪПЧБОЙЕ PROCFS ОЕ ФТЕВХЕФУС, ФБЛ ЛБЛ ВПМШЫЙОУФЧП НПОЙФПТЙОЗПЧЩИ Й ПФМБДПЮОЩИ ЙОУФТХНЕОФПЧ ВЩМП БДБРФЙТПЧБОП ДМС ТБВПФЩ ВЕЪ PROCFS: УЙУФЕНБ РП ХНПМЮБОЙА ОЕ НПОФЙТХЕФ ЖБКМПЧХА УЙУФЕНХ РТПГЕУУПЧ.

Options PSEUDOFS # Pseudo-filesystem framework

сДТБ, ЛПФПТЩЕ ЙУРПМШЪХАФ PROCFS , ДПМЦОЩ ФБЛЦЕ ЧЛМАЮБФШ РПДДЕТЦЛХ PSEUDOFS ,

Options GEOM_PART_GPT # GUID Partition Tables. # PCI Ethernet NICs. device de # DEC/Intel DC21x4x (Tulip >>) device em # Intel PRO/1000 adapter Gigabit Ethernet Card device ixgb # Intel PRO/10GbE Ethernet Card device txp # 3Com 3cR990 (Typhoon >>) device vx # 3Com 3c590, 3c595 (Vortex >>)

дТБКЧЕТБ УЕФЕЧЩИ ЛБТФ PCI. ъБЛПННЕОФЙТХКФЕ ЙМЙ ХДБМЙФЕ ДТБКЧЕТБ ФЕИ ЛБТФ, ЛПФПТЩЕ ПФУХФУФЧХАФ Ч ЧБЫЕК УЙУФЕНЕ.

# PCI Ethernet NICs that use the common MII bus controller code. # NOTE: Be sure to keep the "device miibus" line in order to use these NICs! device miibus # MII bus support

рПДДЕТЦЛБ ЫЙОЩ MII ФТЕВХЕФУС ДМС ОЕЛПФПТЩИ PCI 10/100 Ethernet ЛБТФ, ЛПФПТЩЕ ЙУРПМШЪХАФ MII-УПЧНЕУФЙНЩЕ РЕТЕДБФЮЙЛЙ ЙМЙ ТЕБМЙЪХАФ ЙОФЕТЖЕКУ ХРТБЧМЕОЙС РЕТЕДБФЮЙЛПН, ЛПФПТЩК ЙНЙФЙТХЕФ MII. дПВБЧМЕОЙЕ device miibus Ч ЛПОЖЙЗХТБГЙПООЩК ЖБКМ СДТБ ЧЛМАЮБЕФ РПДДЕТЦЛХ УФБОДБТФОПЗП API miibus Й ЧУЕИ ДТБКЧЕТПЧ PHY, ЧЛМАЮБС УФБОДБТФОЩК ДМС ФЕИ PHY, ЛПФПТЩЕ ОЕ ПВТБВБФЩЧБАФУС УРЕГЙЖЙЮЕУЛЙН ПВТБЪПН ЛПОЛТЕФОЩН ДТБКЧЕТПН.

Device bfe # Broadcom BCM440x 10/100 Ethernet device bge # Broadcom BCM570xx Gigabit Ethernet device dc # DEC/Intel 21143 and various workalikes device fxp # Intel EtherExpress PRO/100B (82557, 82558) device lge # Level 1 LXT1001 gigabit ethernet device msk # Marvell/SysKonnect Yukon II Gigabit Ethernet device nge # NatSemi DP83820 gigabit ethernet device pcn # AMD Am79C97x PCI 10/100 (precedence over "lnc") device re # RealTek 8139C+/8169/8169S/8110S device rl # RealTek 8129/8139 device sf # Adaptec AIC-6915 (Starfire >>) device sis # Silicon Integrated Systems SiS 900/SiS 7016 device sk # SysKonnect SK-984x > SK-982x gigabit Ethernet device ste # Sundance ST201 (D-Link DFE-550TX) device stge # Sundance/Tamarack TC9021 gigabit Ethernet device ti # Alteon Networks Tigon I/II gigabit Ethernet device tl # Texas Instruments ThunderLAN device tx # SMC EtherPower II (83c170 EPIC >>) device vge # VIA VT612x gigabit ethernet device vr # VIA Rhine, Rhine II device wb # Winbond W89C840F device xl # 3Com 3c90x (Boomerang >>, Cyclone >>)

дТБКЧЕТБ, ЛПФПТЩЕ ЙУРПМШЪХАФ ЛПОФТПММЕТ ЫЙОЩ MII.

# ISA Ethernet NICs. pccard NICs included. device cs # Crystal Semiconductor CS89x0 NIC # "device ed" requires "device miibus" device ed # NE000, SMC Ultra, 3c503, DS8390 cards device ex # Intel EtherExpress Pro/10 and Pro/10+ device ep # Etherlink III based cards device fe # Fujitsu MB8696x based cards device ie # EtherExpress 8/16, 3C507, StarLAN 10 etc. device lnc # NE2100, NE32-VL Lance Ethernet cards device sn # SMC"s 9000 series of Ethernet chips device xe # Xircom pccard Ethernet # ISA devices that use the old ISA shims #device le

дТБКЧЕТБ УЕФЕЧЩИ ЛБТФ ISA. пЪОБЛПНШФЕУШ У ЖБКМПН /usr/src/sys/ i386 /conf/NOTES , ЮФПВЩ ХЪОБФШ, ЛБЛЙЕ УЕФЕЧЩЕ ЛБТФЩ ЛБЛЙН ДТБКЧЕТПН РПДДЕТЦЙЧБАФУС.

# Wireless NIC cards device wlan # 802.11 support

Generic 802.11 support. This line is required for wireless networking.

Device wlan_wep # 802.11 WEP support device wlan_ccmp # 802.11 CCMP support device wlan_tkip # 802.11 TKIP support

Crypto support for 802.11 devices. These lines are needed if you intend to use encryption and 802.11i security protocols.

Device an # Aironet 4500/4800 802.11 wireless NICs. device ath # Atheros pci/cardbus NIC"s device ath_hal # Atheros HAL (Hardware Access Layer) device ath_rate_sample # SampleRate tx rate control for ath device awi # BayStack 660 and others device wi # WaveLAN/Intersil/Symbol 802.11 wireless NICs. #device wl # Older non 802.11 Wavelan wireless NIC.

рПДДЕТЦЛБ ТБЪМЙЮОЩИ ВЕУРТПЧПДОЩИ ЛБТФ.

# Pseudo devices device loop # Network loopback

уФБОДБТФОПЕ ХУФТПКУФЧП ПВТБФОПК УЧСЪЙ ДМС TCP/IP. еУМЙ ЧЩ ЪБРХУЛБЕФЕ telnet ЙМЙ FTP РП ПФОПЫЕОЙА localhost (ПО ЦЕ 127.0.0.1), ФП УПЕДЙОЕОЙЕ РТПКДЈФ ЮЕТЕЪ ЬФП ХУФТПКУФЧП. ьФПФ РБТБНЕФТ ПВСЪБФЕМЕО .

Device random # Entropy device

зЕОЕТБФПТ УМХЮБКОЩИ ЮЙУЕМ ДМС ЛТЙРФПЗТБЖЙЮЕУЛПК ЪБЭЙФЩ.

Device ether # Ethernet support

ether ОЕПВИПДЙН МЙЫШ Ч УМХЮБЕ, ЕУМЙ Х ЧБУ ЕУФШ УЕФЕЧБС ЛБТФБ. пО ЧЛМАЮБЕФ РПДДЕТЦЛХ УФБОДБТФОПЗП ЛПДБ РТПФПЛПМБ Ethernet.

Device sl # Kernel SLIP

sl - ЬФП РПДДЕТЦЛБ SLIP. SLIP ВЩМ РТБЛФЙЮЕУЛЙ ЧЩФЕУОЕО PPP, ЛПФПТЩК МЕЗЮЕ ОБУФТБЙЧБЕФУС, МХЮЫЕ РПДИПДЙФ ДМС УПЕДЙОЕОЙК НПДЕН-НПДЕН Й ЙНЕЕФ ВПМШЫЕ ЧПЪНПЦОПУФЕК.

Device ppp # Kernel PPP

рПДДЕТЦЛБ PPP Ч СДТЕ ДМС УПЕДЙОЕОЙК dial-up. фБЛЦЕ УХЭЕУФЧХЕФ ЧЕТУЙС PPP, ТЕБМЙЪПЧБООПЗП ЛБЛ РТЙМПЦЕОЙЕ, ЙУРПМШЪХАЭЕЕ tun , Й РТЕДМБЗБАЭЕЕ ВПМШЫХА ЗЙВЛПУФШ Й ВПМШЫЕЕ ЛПМЙЮЕУФЧП ЧПЪНПЦОПУФЕК, ЛБЛ, ОБРТЙНЕТ, УПЕДЙОЕОЙЕ РТЙ ОЕПВИПДЙНПУФЙ (ОБМЙЮЙЙ ПВТБЭЕОЙС Л УЕФЙ).

Device tun # Packet tunnel.

йУРПМШЪХЕФУС РПМШЪПЧБФЕМШУЛЙН РТПЗТБННОЩН ПВЕУРЕЮЕОЙЕН PPP. пВТБФЙФЕУШ Л ТБЪДЕМХ PPP ЬФПК ЛОЙЗЙ ЪБ ДБМШОЕКЫЕК ЙОЖПТНБГЙЕК.

Device pty # Pseudo-ttys (telnet etc)

РУЕЧДП-ФЕТНЙОБМ >> ЙМЙ ЙНЙФЙТПЧБООЩК РПТФ ДМС ЧИПДБ. йУРПМШЪХЕФУС ЧИПДСЭЙНЙ telnet Й rlogin -УЕУУЙСНЙ, РТЙМПЦЕОЙЕН xterm Й ОЕЛПФПТЩНЙ ДТХЗЙНЙ РТЙМПЦЕОЙСНЙ, ФБЛЙНЙ ЛБЛ Emacs .

Device md # Memory disks >>

рУЕЧДП-ХУФТПКУФЧБ ДЙУЛПЧ Ч РБНСФЙ.

Device gif # IPv6 and IPv4 tunneling

рПДДЕТЦЛБ ФХООЕМЙТПЧБОЙС IPv6 ЮЕТЕЪ IPv4, IPv4 ЮЕТЕЪ IPv6, IPv4 ЮЕТЕЪ IPv4 Й IPv6 ЮЕТЕЪ IPv6. хУФТПКУФЧП gif СЧМСЕФУС БЧФПЛМПОЙТХЕНЩН >>, Й ВХДЕФ УТЪДБЧБФШ ЖБКМЩ ХУФТПКУФЧ РП НЕТЕ ОЕПВИПДЙНПУФЙ.

Device faith # IPv6-to-IPv4 relaying (translation)

ьФП РУЕЧДП-ХУФТПКУФЧП ЪБИЧБФЩЧБЕФ РБЛЕФЩ, ЛПФПТЩЕ ВЩМЙ РПУМБОЩ ЕНХ Й РЕТЕОБРТБЧМСЕФ ЙИ ДБЕНПОХ ФТБОУМСГЙЙ IPv4/IPv6.

# The `bpf" device enables the Berkeley Packet Filter. # Be aware of the administrative consequences of enabling this! # Note that "bpf" is required for DHCP. device bpf # Berkeley packet filter

жЙМШФТ РБЛЕФПЧ Berkeley. ьФП РУЕЧДП-ХУФТПКУФЧП РПЪЧПМСЕФ РЕТЕЧПДЙФШ УЕФЕЧЩЕ ЙОФЕТЖЕКУЩ Ч ОЕТБЪВПТЮЙЧЩК >> (promiscuous) ТЕЦЙН, Ч ЛПФПТПН РЕТЕИЧБФЩЧБЕФУС МАВПК РБЛЕФ Ч ЫЙТПЛПЧЕЭБФЕМШОПК УЕФЙ (ОБРТЙНЕТ ethernet). ьФЙ РБЛЕФЩ НПЗХФ ВЩФШ УПИТБОЕОЩ ОБ ДЙУЛ Й/ЙМЙ ЙУУМЕДПЧБОЩ РТЙ РПНПЭЙ .

рТЙНЕЮБОЙЕ:

хУФТПКУФЧП ФБЛЦЕ ЙУРПМШЪХЕФУС РТПЗТБННПК ДМС ФПЗП, ЮФПВЩ РПМХЮЙФШ БДТЕУ ЫМАЪБ РП ХНПМЮБОЙА Й Ф.Р. еУМЙ ЧЩ ЙУРПМШЪХЕФЕ DCHP, ОЕ ХДБМСКФЕ ЬФХ ПРГЙА.

# USB support device uhci # UHCI PCI->USB interface device ohci # OHCI PCI->USB interface device ehci # EHCI PCI->USB interface (USB 2.0) device usb # USB Bus (required) #device udbp # USB Double Bulk Pipe devices device ugen # Generic device uhid # Human Interface Devices >> device ukbd # Keyboard device ulpt # Printer device umass # Disks/Mass storage - Requires scbus and da device ums # Mouse device ural # Ralink Technology RT2500USB wireless NICs device urio # Diamond Rio 500 MP3 player device uscanner # Scanners # USB Ethernet, requires mii device aue # ADMtek USB Ethernet device axe # ASIX Electronics USB Ethernet device cdce # Generic USB over Ethernet device cue # CATC USB Ethernet device kue # Kawasaki LSI USB Ethernet device rue # RealTek RTL8150 USB Ethernet Intel (R) Pentium (R) Pro Й ВПМЕЕ РПЪДОЙИ РПЪЧПМСЕФ ЙУРПМШЪПЧБФШ ДП 64 ЗЙЗБВБКФ ПРЕТБФЙЧОПК РБНСФЙ. FreeBSD ЙНЕЕФ РПДДЕТЦЛХ ЬФПК ЧПЪНПЦОПУФЙ РПУТЕДУФЧПН ПРГЙЙ СДТБ PAE , ДПУФХРОПК ЧП ЧУЕИ ФЕЛХЭЙИ ЧЕТУЙСИ FreeBSD. ч УЧСЪЙ У ПЗТБОЙЮЕОЙСНЙ БТИЙФЕЛФХТЩ Intel, ОЕ ДЕМБЕФУС ОЙЛБЛПЗП ТБЪМЙЮЙС НЕЦДХ РБНСФША ОЙЦЕ ЙМЙ ЧЩЫЕ 4 ЗЙЗБВБКФ. рБНСФШ, ТБЪНЕЭЕООБС ЧЩЫЕ 4 ЗЙЗБВБКФ, РТПУФП ДПВБЧМСЕФУС Л ДПУФХРОПК РБНСФЙ.

дМС ФПЗП, ЮФПВЩ ЧЛМАЮЙФШ PAE Ч СДТЕ, РТПУФП ДПВБЧШФЕ РТЙЧЕДЕООХА УФТПЛХ Ч ЛПОЖЙЗХТБГЙПООЩК ЖБКМ СДТБ:

Options PAE

рТЙНЕЮБОЙЕ:

рПДДЕТЦЛБ PAE Ч FreeBSD УХЭЕУФЧХЕФ ФПМШЛП ДМС РТПГЕУУПТПЧ Intel (R) IA-32. фБЛЦЕ УМЕДХЕФ ЪБНЕФЙФШ, ЮФП PAE Ч FreeBSD ОЕ ВЩМП РПМОПУФША РТПФЕУФЙТПЧБОП Й ДПМЦОП УЮЙФБФШУС ОБИПДСЭЙНУС Ч УПУФПСОЙЙ ВЕФБ-ФЕУФЙТПЧБОЙС РП УТБЧОЕОЙА У ДТХЗЙНЙ, УФБВЙМШОЩНЙ ЧПЪНПЦОПУФСНЙ FreeBSD.

рПДДЕТЦЛБ PAE Ч FreeBSD ЙНЕЕФ УМЕДХАЭЙЕ ПЗТБОЙЮЕОЙС:

    рТПГЕУУ ОЕ НПЦЕФ РПМХЮЙФШ ДПУФХР Л ВПМЕЕ, ЮЕН 4 ЗЙЗБВБКФБН РТПУФТБОУФЧБ VM.

    дТБКЧЕТЩ ХУФТПКУФЧ, ЛПФПТЩЕ ОЕ ЙУРПМШЪХАФ ЙОФЕТЖЕКУ , РТЙЧЕДХФ Л РПЧТЕЦДЕОЙА ЙОЖПТНБГЙЙ Ч СДТЕ У ЧЛМАЮЕООЩН PAE . оЕ ТЕЛПНЕОДХЕФУС ЙУРПМШЪПЧБФШ ФБЛЙЕ ДТБКЧЕТЩ. рП ЬФПК РТЙЮЙОЕ Ч FreeBSD ЧЛМАЮЕО ЛПОЖЙЗХТБГЙПООЩК ЖБКМ СДТБ PAE , ЙЪ ЛПФПТПЗП ХДБМЕОЩ ЧУЕ ДТБКЧЕТЩ, П ЛПФПТЩИ ЙЪЧЕУФОП, ЮФП ПОЙ ОЕ ТБВПФБАФ РТЙ ЧЛМАЮЕООПК РПДДЕТЦЛЕ PAE .

    оЕЛПФПТЩЕ УЙУФЕНОЩЕ РЕТЕНЕООЩЕ ПРТЕДЕМСАФ ЙУРПМШЪПЧБОЙЕ ТЕУХТУПЧ РБНСФЙ РП ЛПМЙЮЕУФЧХ ДПУФХРОПК ЖЙЪЙЮЕУЛПК РБНСФЙ. фБЛЙЕ РЕТЕНЕООЩЕ НПЗХФ РТЙЧЕУФЙ Л ОЕОХЦОПНХ ЮТЕЪНЕТОПНХ ЧЩДЕМЕОЙА РБНСФЙ ЙЪ-ЪБ ПУПВЕООПУФЕК ТБВПФЩ УЙУФЕНЩ PAE . пДЙО ЙЪ ФБЛЙИ РТЙНЕТПЧ - РЕТЕНЕООБС kern.maxvnodes , ЛПФПТБС ХРТБЧМСЕФ НБЛУЙНБМШОЩН ЛПМЙЮЕУФЧПН vnode, ТБЪТЕЫЕООЩИ Ч СДТЕ. тЕЛПНЕОДХЕФУС ХУФБОПЧЙФШ ЬФХ Й РПДПВОЩЕ ЕК РЕТЕНЕООЩЕ ЧТХЮОХА Ч БДЕЛЧБФОЩЕ ЪОБЮЕОЙС.

    чПЪНПЦОП, РПОБДПВЙФУС ХЧЕМЙЮЙФШ РТПУФТБОУФЧП ЧЙТФХБМШОЩИ БДТЕУПЧ СДТБ (KVA) ЙМЙ ХНЕОШЫЙФШ ЛБЛХА-МЙВП РЕТЕНЕООХА (УН. ЧЩЫЕ), ЪОБЮЕОЙЕ ЛПФПТПК ВЩМП ОЕПРТБЧДБООП ЧЕМЙЛП Й НПЗМП РТЙЧЕУФЙ Л ЙУЮЕТРБОЙА KVA . дМС ЬФПЗП НПЦЕФ ВЩФШ ЙУРПМШЪПЧБОБ ПРГЙС СДТБ KVA_PAGES .

ч УМХЮБЕ УПНОЕОЙК ПФОПУЙФЕМШОП РТПЙЪЧПДЙФЕМШОПУФЙ Й УФБВЙМШОПУФЙ ТЕЛПНЕОДХЕФУС ПВТБФЙФШУС Л УФТБОЙГЕ ТХЛПЧПДУФЧБ . уФТБОЙГБ ТХЛПЧПДУФЧБ УПДЕТЦЙФ УЧЕЦХА ЙОЖПТНБГЙА П РПДДЕТЦЛЕ PAE Ч FreeBSD.

Операционная система Linux в отличие от Windows не имеет общего реестра для хранения настроек системы, все настройки хранятся в конфигурационных файлах. Большинство этих файлов размещено в папке /etc/.

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

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

На самом деле в самой системы Linux конфигурационных файлов нет. Поскольку операционная система - это всего лишь набор программ и ядро, то все эти файлы были созданы определенными программами и читаются ими же для настройки поведения. Большинство файлов, которые мы привыкли считать стандартными, относятся к системе инициализации или к другим системным утилитам.

Как я уже сказал, большинство файлов размещено в /etc. Название этой папки расшифровывается как "et cetera", что с латинского означает "и другие" или "и так далее". Сначала давайте посмотрим содержимое каталога /etc Linux:

Здесь достаточно много различных файлов. Дальше мы рассмотрим назначение многих из них. Список отсортирован по алфавиту.

1. /etc/adjtime

Этот конфигурационный файл отвечает за настройку формата системного времени и читается службой systemd-timedated. Время может быть представлено в двух вариантах: LOCAL - время текущего часового пояса и UTC - время по Гринвичу. Вы можете вручную менять значение или воспользоваться утилитой timedatectl.

2. /etc/bash.bashrc

Этот файл принадлежит командной оболочке bash. Это не совсем конфигурационный файл - а скрипт, его содержимое выполняется при запуске каждого экземпляра bash для настройки оболочки. Точно так же выполняется содержимое файла ~/.bashrc для каждого пользователя.

3. /etc/crontab

6. /etc/group

25. /etc/sudoers

/etc/sudoers - это файл настройки . Эта утилита позволяет выполнять команды от имени других пользователей, в том числе от имени суперпользователя. Но использовать ее могут только те пользователи, которые прописаны в этом файле.

26. /etc/sysctl.conf

Этот файл отвечает за во время выполнения. Тут вы можете задать все параметры из подсистемы /sys/ и они будут сохранены после перезагрузки.

27. /etc/vconsole.conf

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

28. /boot/grub/grub.cfg

Этот конфигурационный файл Linux находится не в /etc из-за своего особого предназначения. Здесь содержатся все настройки загрузчика, пункты меню и другие параметры, поэтому он должен быть доступен еще до того как была подключена корневая файловая система.

Выводы

В этой статье мы рассмотрели основные конфигурационные файлы Linux, которые находятся в папке /etc/. Возможно, какие-либо важные файлы, по вашему мнению, упущены, тогда обязательно расскажите о них и их предназначении в комментариях!

Сетевые устройства зависят от двух типов программного обеспечения для их работы: операционной системы и конфигурации. Как и операционная система на любом компьютере, операционная система сетевого устройства обеспечивает базовую работу аппаратных компонентов устройства.

Конфигурационные файлы содержат команды программного обеспечения Cisco IOS, используемые для настройки функциональности устройства Cisco. Команды анализируются (переводятся и выполняются) программным обеспечением Cisco IOS при загрузке системы (из файла конфигурации запуска) или когда команды вводятся в CLI во время режима конфигурации.

Администратор сети создает конфигурацию, которая определяет требуемую функциональность устройства Cisco. Конфигурационный файл обычно от нескольких сотен до нескольких тысяч байтов в размере.

Типы Конфигурационных файлов

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

    Рабочий конфигурационный файл - используется во время текущей работы устройства

    Конфигурационный файл запуска - используется в качестве резервной конфигурации и загружается при запуске устройства

Конфигурационный файл может также храниться удаленно на сервере в качестве резервной копии.

Конфигурационный файл запуска

Конфигурационный файл запуска (конфигурация запуска) используется во время системного запуска, чтобы сконфигурировать устройство. Конфигурационный файл запуска или файл конфигурации запуска хранится в энергонезависимой памяти RAM (NVRAM) . Так как NVRAM является энергонезависимой, когда устройство Cisco выключается, файл остается. Файлы конфигурации запуска загружаются в RAM каждый раз при запуске или перезагрузке маршрутизатора. Как только конфигурационный файл загружается в RAM, он считается рабочей конфигурацией .

Рабочая Конфигурация

Оказавшись в RAM, эта конфигурация используется, чтобы управлять сетевым устройством.

Рабочая конфигурация изменяется, когда администратор сети выполняет конфигурацию устройства. Изменение рабочей конфигурации сразу же влияет на работу устройства Cisco. После произведения любых изменений у администратора есть возможность сохранить изменения в файл конфигурации запуска, чтобы они использовались в следующий раз после перезапуска устройства.

Поскольку рабочий конфигурационный файл находится в RAM, он теряется, если питание устройства выключается или если устройство перезапускается. Изменения, произведенные в файле рабочей конфигурации, будут также потеряны, если они не будут сохранены в файл конфигурации запуска прежде, чем устройство будет выключено.

Общий формат конфигурационных файлов

Настройка большинства компонентов программного комплекса производится с помощью конфигурационных файлов. Конфигурационные файлы являются текстовыми файлами, что позволяет редактировать их любым текстовым редактором).

Общий формат файла конфигурации:

Начало файла ---

[Имя секции 1]

...
ПараметрN = значение1, ..., значениеK

[Имя секции X]
Параметр1 = значение1, ..., значениеK
...

--- конец файла ---

Файлы конфигурации формируются по следующему принципу:

Символы " ; " или " # " в строках конфигурационного файла обозначают начало комментария – весь текст, идущий в строке за этими символами, пропускается модулями Dr.Web для почтовых серверов UNIX при чтении параметров из конфигурационного файла.

Содержимое файла разбивается на последовательность именованных секций. Возможные имена секций жестко заданы и не могут быть произвольными. Имя секции задается в квадратных скобках.

Каждая секция содержит группу параметров конфигурации, объединенных по смыслу.

В одной строке файла задается значение только одного параметра.

Основной формат задания значения параметра (пробелы, окружающие символ "=", если встречаются, игнорируются):

<Имя параметра> = <Значение>

Возможные имена параметров жестко заданы и не могут быть произвольными.

Все имена секций и параметров в файле регистронезависимы.

Порядок следования секций в файле и параметров внутри секций не имеет значения.

Значения параметров в конфигурационном файле могут быть заключены в кавычки (и должны быть заключены в кавычки в том случае, если содержат пробелы).

Некоторые параметры могут иметь несколько значений, в этом случае значения параметра разделяются запятой, или значение параметра задается несколько раз в разных строках конфигурационного файла. При перечислении значений параметра через запятую пробелы между значением и запятой, если встречаются, игнорируются. Если пробел является частью значения, всё значение необходимо заключить в кавычки.

Пример задания параметра, имеющего несколько значений :

1) Перечисление нескольких значений через запятую:

Parameter = Value1, Value2,"Value 3"

2) Задание тех же значений параметра в разных строках конфигурационного файла:

Parameter = Value2
Parameter = Value1
Parameter = "Value 3"

Правила описания параметров, принятые в данном документе

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

[Статус использования в Правилах ]

ИмяПараметра = {Тип параметра | Возможные значения}

Описание параметра.

{Может ли иметь несколько значений}.

{Особые замечания}

{Важные замечания}

Значение по умолчанию :

ИмяПараметра = {значение | отсутствует}

Статус использования в Правилах обозначается с использованием следующих пиктограмм:

Параметр может быть использован в SETTINGS -части Правил обработки писем для временного изменения его значения при обработке конкретного письма, для которого условная часть правила истинна.

Параметр при использовании в Правилах обработки писем имеет "аддитивную" (накапливающую) семантику, т.е. если для письма истинно несколько Правил, задающих разное значение этого параметра, то в качестве значения параметра выступает объединенный список его значений из сработавших Правил.

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

Если Статус использования в Правилах для параметра не указан, то данный параметр не может быть использован в Правилах обработки писем .

Описание параметров и секций конфигурационных файлов дано в порядке их следования в файле конфигурации, создаваемом при установке программного комплекса Dr.Web для почтовых серверов UNIX .

Поле Тип параметра может принимать следующие значения:

числовое значение (numerical value) - значение параметра является целым неотрицательным числом.

время (time) - значение параметра задается в единицах измерения времени. Значение состоит из целого числа, после которого может идти буква, определяющая вид единиц измерения времени (s – секунды, m – минуты, h – часы, регистр букв не учитывается). Если в значении параметра буквы нет, то считается, что время задано в секундах.

Примеры : 30s , 15m

размер (size) - значение параметра задается в единицах измерения объема памяти (дисковой или оперативной). Значение состоит из целого числа, после которого может идти буква, определяющая вид единиц измерения объема памяти (b – байты, k – килобайты, m – мегабайты, g – гигабайты, регистр букв не учитывается). Если в значении параметра буквы нет, то считается, что размер задан в байтах.

Примеры : 20b , 15k

права (permissons) - значение параметра задаётся трехзначным числом, обозначающим права доступа к файлам в формате, принятом в UNIX-системах.
Каждое право является комбинацией (суммой) трех базовых прав:

o Право чтения (r) обозначается числом 4;

o Право записи (w) обозначается числом 2;

o Право исполнения (x) обозначается числом 1.

При этом первая цифра числа задает права для владельца файла, вторая – для группы владельцев файла, а третья – для всех остальных, не являющихся ни владельцами, ни членами соответствующей группы.

Примеры : 755 , 644

логический (Ye s /No ) - Логический тип, значения которого представляются строками " Yes " и " No ".

путь к файлу/каталогу (path to file/directory) - строка, задающая расположение файла или каталога в файловой системе. Помните, что в ОС семейства Linux/UNIX имена файлов и каталогов регистрозависимы. Если указано, что значением параметра может быть маска , то в качестве значений параметра можно использовать файловые маски, содержащие следующие специальные символы:

o ? – замещает любой один символ;

o * – замещает любую (в том числе пустую) последовательность символов.

Пример : " ?.e* " – маска, под которую подпадают файлы, имя которых состоит из любого одного символа, а расширение любой длины, и начинается с буквы " e " (x.exe , g.e , f.enable и т.п.).

действие (action) - строка, содержащая наименование действий, совершаемых над объектами, вызвавшими какую-либо реакцию компонентов программного комплекса Dr.Web для почтовых серверов UNIX . В некоторых случаях для параметра можно задать одно основное действие и до трех дополнительных. Тип параметра в этом случае называется список действий (actions list) . Основное действие в этом случае всегда должно быть первым в списке. Для разных параметров набор допустимых действий может различаться, и в этом случае он указывается отдельно для каждого параметра. Общий перечень действий, которые могут использоваться, см. ниже .

адрес (address) - строка, содержащая адрес сокета компонента Dr.Web для почтовых серверов UNIX или внешнего модуля или программы.
Имеет формат ТИП:АДРЕС . Допустимы следующие типы:

o inet - используются TCP-сокеты, АДРЕС имеет формат ПОРТ@ИМЯ_УЗЛА . ИМЯ_УЗЛА может быть как прямым IP-адресом, так и доменным именем узла.

Пример :

Address = inet:3003@localhost

o local - используются локальные UNIX-сокеты, в этом случае адрес является путем к файлу сокета.

Пример:

Address = local:%var_dir/.daemon

o pid - реальный адрес процесса должен быть прочитан из его PID файла. Такой тип адреса доступен лишь в некоторых случаях и при возможности его использования в описании параметра это указывается явно.

текст (text value), строка (string ) - значение параметра задается в виде текстовой строки, текст в строке может быть заключен в кавычки (если в строке есть пробелы, то кавычки обязательны).

настройки пула (pool options) - настройки пула потоков. Имеют специальный формат, описанный в разделе Специальные типы параметров .

Lookup - строки, задающие разделенные запятыми объекты для поиска.

LookupLite - упрощенный Lookup , в котором можно указывать только либо непосредственное значение, либо Lookup типа file .

хранилище (Storage) - объекты для хранения данных. Синтаксис аналогичен Lookup , за исключением использования другого списка префиксов и того, что в Storage нельзя использовать макрос $s .
Подробнее о типах Lookup , LookupLite и Storage см. в разделе Lookup .

настройки TLS/SSL (TLSSettings) - настройки для работы шифрованного соединения с использованием криптографических протоколов TLS и SSL. Имеют специальный формат, описанный в разделе Специальные типы параметров .

список строк (strings list) - набор текстовых значений, разделенных запятыми.

Если значение параметра соответствует шаблону file:/path_to_file (где path_to_file – путь к файлу), то текстовые значения получаются из указанного в параметре файла. Каждое значение в файле должно записываться в отдельной строке. Если при получении информации из файла произошла ошибка, в файл журнала выводится соответствующее диагностическое сообщение и загрузка программы продолжится.

уровень подробности (log level ) - строка, указывающая вывода информации в некоторый журнал или в службу syslog .

возможные значения (value) - параметр имеет тип, не описанный в предыдущих пунктах данного списка. В этом случае перечисляется список разрешенных для него значений.

Поведение модулей при некорректно заданных файлах конфигурации

Если значение какого-либо параметра задано некорректно, Dr.Web для почтовых серверов UNIX выводит сообщение об ошибке и завершает свою работу.

Если при загрузке какого-либо конфигурационного файла в нем обнаруживаются неизвестные параметры, работа программы продолжается в нормальном режиме, но в файл журнала выводится соответствующее предупреждение.

Некоторые параметры могут использовать в качестве значений регулярные выражения (для каждого параметра отмечается в его описании). По умолчанию используется синтаксис регулярных выражений Perl . С основами регулярных выражений вы можете ознакомиться, например, в Wikipedia (статья " Регулярные выражения ").