Меню
безкоштовно
Головна  /  програми / Що файл конфігурації. файли

Що файл конфігурації. файли

Операційна система 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 /. Можливо, якісь важливі файли, на вашу думку, втрачені, тоді обов'язково розкажіть про них і їх призначення в коментарях!

Завдання профілю за допомогою командного рядка - метод далеко не завжди зручний. Навіть при роботі з самої командним рядком використовується оточення для збереження налаштувань, щоб не ставити їх всякий раз і для будь-якої команди. Що вже говорити про складні системних службах, властивості яких повинні зберігатися від сеансу до сеансу, а постійно (в тому числі при перезавантаженні системи). Висновок простий: профіль необхідно тримати в файлі, на кшталт того, що створюється за командою "зберегти настройки".

Однак сам підхід до зберігання профілю в файлі, при якому користувач не може змінювати цей файл безпосередньо, а користується "розумними" конфігураторами, зручний тільки в випадках, коли налаштувань багато, а ціна помилки невелика (наприклад, під час налаштування зовнішнього вигляду робочого столу). У загальному випадку досить складно поставити поведінка системи на підставі опису (часто неявного) властивостей того, що ця система повинна отримувати в результаті. Іншими словами, з опису того, що повинно вийти, далеко не завжди можна автоматично зробити висновок, як воно повинно виходити.

конфігураційний файл. Текстовий файл, що містить настройки який-небудь частини системи (утиліти, демона і т. П.). Як правило, зчитується нею при запуску. Типовий для Linux спосіб організації профілю.

Одним словом, якщо є конфігураційний файл, То повинні бути і засоби редагування цього файлу. З огляду на, що в Linux реалізована високорозвинена система зберігання і переробки (Як ручний, так і автоматичною) даних в текстовому вигляді, винаходити якийсь новий формат - все одно що винаходити велосипед. Тим більше, що саме текст, розділений на рядки і слова, найкраще підходить тоді, коли є чіткий розподіл профілю на об'єкти управління та їх властивості (наприклад, настройки якого-небудь демона і значення цих параметрів). До того ж, саме зі структурованими текстами чудово справляються текстові редактори Linux: Vi, Emacs і ін:

[Email protected]: ~ $ Cat .vimrc so $ VIMRUNTIME / vimrc_example.vim "Some mappings map: wall! ^ M map! ^ O: wall! ^ M" Tune up set shiftwidth \u003d 2 tabstop \u003d 8 history \u003d 200 viminfo \u003d "50 set showmode showmatch showcmd ruler modeline set autoindent ignorecase smartcase set nohlsearch noincsearch set dir \u003d / var / tmp set wildmode \u003d list: longest, full set wildmenu "Colouring syntax on colorscheme desert Приклад 12.2. Налаштування редактора vim

Ось як виглядає конфігураційний файл для Vim, написаний Мефодієм на основі файлу, взятого у Гуревича. Легко помітити, що файл складається з команд режиму командного рядка Vi з коментарями (на відміну від більшості утиліт Linux, в Vi коментарі починаються на "" "). Символи" ^ O "і" ^ M "- це саме відповідні керуючі символи (вставлені в текстовий файл за допомогою "^ V", див. лекцію 9). Такий конфігураційний файл легко розуміти і змінювати.

Як вже було відмічено, набір змінних оточення становить особливий профіль, до якого чутливі все запускаються програми - в цьому його перевага. Задаються змінні оточення зазвичай в командному сценарії, який теж можна розглядати як конфігураційний файл). Наприклад, у багатьох дистрибутивах використовується конфігураційний файл .i18n для настройки мовних особливостей клавіатури, мови виведення повідомлень і т. п. 2 Позначення "i18n" походить від слова "internationalization", в якому 20 букв, т. Е. "I", "n" і 18 букв між ними. :

[Email protected]: ~ $ Cat .i18n LANG \u003d ru_RU.KOI8-R LANGUAGE \u003d ru_RU.KOI8-R SYSFONTACM \u003d koi8-r SYSFONT \u003d UniCyr_8x16 DICTIONARY \u003d russian MPAGE \u003d "- CKOI8-R" export DICTIONARY MPAGE Приклад 12.3. Файл налаштування мовних особливостей

Однак зберігати налаштування специфічної програми (непотрібні всім іншим) в оточенні - не найвдаліший рішення: синтаксис, що задає змінну оточення, занадто простий ( ім'я_змінної \u003d значення), А самих змінних стає занадто багато, тому при перегляді важко виділити, яка з них до якої групи налаштувань відноситься. Якщо намагатися упакувати все настройки в значення однією змінної, це значення виявиться складним для розуміння, і вся перевага текстового формату зійде нанівець. Наприклад, стандартний конфігураційний файл утиліти ls (точніше, тільки її колірних переваг) - / etc / DIR_COLORS (його можна підмінити особистим файлом ~ / .dir_colors) займає близько ста рядків разом з коментарями. Команда ls використовує не цей файл, а створювану утилітою dircolors змінну LS_COLORS, значення якої - 600-символьний рядок без всяких коментарів.

Якщо профіль занадто великий, тримати його в одному файлі конфігурації - значить, доставляти користувачеві сумнівне задоволення розбирати цей файл цілком навіть при необхідності внести мінімальну зміну. Методів боротьби з неудобочітаеми кілька. Зокрема, вже відомий по лекції 10 механізм ".d": файл розділяється на кілька незалежних один від одного файлів так, що редагувати доводиться тільки один з файлів, а програма під час самонастроювання зчитує всі.

Інший спосіб спирається на те, що зміни, Які користувач вносить в профіль, як правило, істотно менше обсягу всього профілю. Тому може бути вигідно зберігати всі настройки за замовчуванням в якомусь файлі, змінювати який взагалі не треба, а файл налаштувань використовувати як би "поверх", змінюючи профіль відповідно до них після того, як виставлений профіль за замовчуванням. Додаткова перевага такого способу - в тому, що користувач завжди може підглянути в "великий" файл, щоб дізнатися, як оформляється та чи інша настройка. Наприклад, утиліта updfstab, яка змінює вміст / etc / fstab при появі або видаленні знімного дискового носія (наприклад, лазерного диска), зчитує дані з конфігураційного файлу /etc/updfstab.conf. Сам цей файл складається з єдиного рядка: include /etc/updfstab.conf.default, Що призводить до читання файлу з настройками за замовчуванням, де заданий спосіб роботи з багатьма знімними пристроями системи. Якщо адміністратору потрібно якось змінити поведінку updfstab щодо певного пристрою, він копіює відповідну групу налаштувань з updfstab.conf.default в updfstab.conf після рядки include ... і виправляє їх. Те, що ці групи налаштувань читаються двічі, не грає особливої \u200b\u200bролі: читання коротких файлів виконується швидко.

Нарешті, третій спосіб зробити конфігураційний файл легким для читання - секціонування профілю, коли всі налаштування розбиваються на групи, кожній групі дається власне ім'я, і \u200b\u200bсинтаксис конфігураційного файлу проектується так, щоб кордони груп добре розрізнялися при перегляді. По суті, цей спосіб - предок схеми ".d", де групі відповідає окремий файл, проте непоодинокі випадки, коли розбивати на файли незручно (наприклад, якщо групи в повному обсязі незалежні, тому може знадобитися редагувати їх відразу кілька). конфігураційний файл утиліти дозвону wvdial, наприклад, секціонуючою по адресату (провайдеру) плюс окрема секція "за замовчуванням". Самі секції відокремлюються одна від одної заголовками, укладеними в квадратні дужки:

[Email protected]: ~\u003e Cat .wvdialrc Modem \u003d / dev / modem Baud \u003d 115200 Init1 \u003d ATZ Init2 \u003d ATQ0 L0 M4 V1 E1 S0 \u003d 0 & C1 & D2 + FCLASS \u003d 0 Auto DNS \u003d on Modem Type \u003d Analog Modem Phone \u003d 0123456 Username \u003d fireman Password \u003d Fire! Fire! TOnline \u003d true Phone \u003d 0246813 Username \u003d cop-120 Password \u003d gimmethegun Force Address \u003d 10.0.0.120 Приклад 12.4. Секціонірованние конфігураційний файл

Утиліта wvdial має високорозвиненим штучним інтелектом: вона самостійно здогадується, який саме тип ідентифікації використовується на сервері. Наприклад, "з того боку" може виявитися термінал Linux, з яким потрібно спочатку ввести звичайне вхідний ім'я і пароль, потім треба отримати командний рядок, запустити на сервері мережевий демон pppd, І тільки після цього запустити pppd на власній машині. Інший варіант: pppd на сервері вже запущений, а настройки "Username" і "Password" означають таку нормативну інформацію протоколу CHAP, використовуваного pppd. Про все це і про багато іншого wvdial здатна здогадатися, так само як wvdialconf вмів визначати, яке ж із пристроїв є модемом.

Однак на будь-який штучний інтелект знайдеться незбагненна йому життєва ситуація. На одному з серверів (секція "Dialer hotspace") теж варто програма з зачатками штучного інтелекту, яка теж намагається визначити, яким способом хоче ідентифікуватися подзвонив. Тому ці два чарівника, зателефонувавши, всі чекають, поки хто-небудь не проявить себе ... Допомагає настройка TOnline, яка змушує wvdial негайно задіяти протокол ppp, на що сервер, подумавши "ах, ppp!", З полегшенням запускає pppd. Залишається питання: чому ця корисна настройка ніяк не відображена в документації (її знайшов у вихідних текстах програми Гуревич)? Чи не тому, що пара wvdialconf-wvdial не по-Linux-івських прагне все робити за користувача, а отже, призначена для користувача документація для розробників цієї програми - не головне?

Ідею читання налаштувань за замовчуванням можна розвинути. Виявляється, буває зручно, коли опис настройки вміщено не в керівництво, а безпосередньо в конфігураційний файл у вигляді коментарів. Тоді при зміні цієї настройки користувач відразу бачить, що вона собою являє, при цьому відпадає необхідність спочатку знаходити рядок в файлі, а потім шукати її ж в керівництві. Такий поширений спосіб оформлення називається самодокументірованіем профілю. Наприклад, файл /etc/man.conf, керуючий роботою команди man, оформлений в самодокументірованном стилі:

[Email protected]: ~ $ Cat /etc/man.conf. . . # NOCACHE keeps man from creating cache pages ( "cat pages") # (generally one enables / disable cat page creation by # creating / deleting the directory they would live in - man # never does mkdir) # # NOCACHE # The command "man -a xyzzy "will show all man pages for xyzzy. # When CMP is defined man will try to avoid showing the same # text twice. (But compressed pages compare unequal.) # CMP / usr / bin / cmp -s. . . Приклад 12.5. Самодокументірованний конфігураційний файл

Мефодій, може бути, і не зрозумів би одразу, навіщо команді man використовувати утиліту cmp, проте в що пояснює коментарі написано: коли потрібно показати декілька посібників разом, вони попередньо порівнюються, і показуються тільки незбіжні.

Якщо піти ще далі, то можна створити кілька різних файлів з прикладами налаштувань, щоб користувач міг взяти один з них і довести до потрібного йому стану. Саме таку - демонстраційну - настройку Мефодій і включив в якості настройки за замовчуванням в свій .vimrc (в першому рядку). До речі, насправді профіль Vim вельми складний, але більшість його налаштувань за замовчуванням знаходяться в різних файлах дерева каталогів / usr / share / vim - така собі "схема .d / .d", де файли профілю, відповідні підгрупах налаштувань, лежать в підкаталогах, відповідних групах. Включення певного настроечного файлу може відбуватися неявно: наприклад, рядок colorscheme desert з .vimrc призводить до читання / usr / share / vim / colors / desert. vim.

файли можуть мати досить складний синтаксис, якщо відповідають складним структурам даних (такі, наприклад, настройка irc-клієнта irssi) або містити в собі додаткові кошти самодокументірованія (Наприклад, файл настройки текстового www-броузера lynx не просто добре документований, але і розмічений тими ж засобами, які використовуються в самому браузері для подання HTML).

конфігураційний файл

конфігураційний файл

Конфігураційний файл - файл, в якому описуються:
- структура програмної системи; і / або
- допоміжні параметри, що визначають її конкретну настройку.
Зазвичай конфігураційний файл реалізується у вигляді текстового файлу, який інтерпретується програмної системою.

Див. також: файли

Фінансовий словник Фінам.


Дивитися що таке "Конфігураційний файл" в інших словниках:

    конфігураційний файл - Бінарний або текстовий файл, що містить інформацію, яка визначає поведінку додатка, комп'ютера або мережевого пристрою. Тематики мережі обчислювальні EN configuration file ... Довідник технічного перекладача

    Або конфігураційний файл використовується для зберігання налаштувань комп'ютерних програм, в тому числі і операційних систем. Як правило, конфігураційні файли мають текстовий формат і можуть бути прочитані і відредаговані користувачем програми. ... ... Вікіпедія

    Файл конфігурації або конфігураційний файл використовується для зберігання налаштувань комп'ютерних програм, в тому числі і операційних систем. Як правило, конфігураційні файли мають текстовий формат і можуть бути прочитані і відредаговані ... ... Вікіпедія

    Тип файлова система, шифрування Розробник Valient Gough Операційна система Linux, FreeBSD, Mac OS Остання версія 1.7.4 (5 вересня 2010) Ліцензія G ... Вікіпедія

    Сторінка статистики серверів ... Вікіпедія

    Ця стаття або розділ потребує переробки. Будь ласка, поліпшите статтю відповідно до правилами написання статей. Дескриптор ... Вікіпедія

    Btrieve програмний продукт (СУБД), для організації транзакційних (або «навігаційних») баз даних. Заснований на методі організації даних ISAM, що забезпечує високу швидкість пошуку і вилучення даних. Існувало кілька версій ... ... Вікіпедія

    Opera Скріншот браузера Opera 9.6 Тип Браузер Розробник Opera Software ASA Написана на ... Вікіпедія

    Цей термін має також інші значення див. PHP (значення). PHP Семантика: мультіпарадігменний ... Вікіпедія

'Б РПМОЩН УРЙУЛПН БТІЙФЕЛФХТОП-'БЧЙУЙНЩІ РБТБНЕФТПЧ Й ХУФТПКУФЧ ПВТБФЙФЕУШ Л ЖБКМХ 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

вПМШИЙОУФЧП БДНЙОЙУФТБФПТПЧ ПГЕОСФ'ОБЮЙФЕМШОЩЕ РТЕЙНХЕЕУФЧБ РЕТЕД УФБТЩН УРПУПВПН - ОБРЙУБОЙЕН ЛПОЖЙЗХТБГЙПООПЗП ЖБКМБ У ОХМС \u003e\u003e: ЧБИ ЛПОЖЙЗХТБГЙПООЩК ЖБКМ ВХДЕФ ПФПВТБЦБФШ ФПМШЛП Й'НЕОЕОЙС ПФОПУЙФЕМШОП 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), ОП ДМС УПВУФЧЕООПЗП СДТБ МХЮИЕ ХЛБ'ЩЧБФШ ФПМШЛП ФПФ ФЙР РТПГЕУУПТБ, ЛПФПТЩК ХУФБОПЧМЕО Ч ЧБИЕК УЙУФЕНЕ. еУМЙ \u200b\u200bЧЩ ОЕ ХЧЕТЕОЩ, ЛБЛПК ФЙР ОЕПВІПДЙНП ЙУРПМШ'ПЧБФШ ЧБН, ЧЩ НПЦЕФЕ ЧПУРПМШ'ПЧБФШУС ЖБКМПН /var/run/dmesg.boot, ЮФПВЩ ХЧЙДЕФШ РТПФПЛПМ'БЗТХ'ЛЙ УЙУФЕНЩ.

Ident GENERIC

ьФПФ РБТБНЕФТ ПРТЕДЕМСЕФ НЕФЛХ \u003e\u003e СДТБ. оЕПВІПДЙНП, ЮФПВЩ СТ УППФЧЕФУФЧПЧБМБ ОБ'ЧБОЙА ЖБКМБ ЛПОЖЙЗХТБГЙЙ СДТБ, ОБРТЙНЕТ 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 ДМС ДЙУЛПЧ ЧБИЕК УЙУФЕНЩ. еУМЙ \u200b\u200bЧЩ ОЕ ХЧЙДЙФЕ РБТБНЕФТ soft-updates, ЧБН ВХДЕФ ОЕПВІПДЙНП БЛФЙЧЙТПЧБФШ ЄЗП РТЙ РПНПЕЙ ЛПНБОДЩ (ДМС УХЕЕУФЧХАЕЙІ ЖБКМПЧЩІ УЙУФЕН) ЙМЙ ЛПНБОДЩ (ДМС ОПЧЩІ ЖБКМПЧЩІ УЙУФЕН).

Options UFS_ACL # Support for access control lists

ьФПФ РБТБНЕФТ ЧЛМАЮБЕФ Ч СДТЕ РПДДЕТЦЛХ УРЙУЛПЧ ХРТБЧМЕОЙС ДПУФХРПН (ACL). пУОПЧЩЧБЕФУС ПРО ЙУРПМШ'ПЧБОЙЙ ТБУИЙТЕООЩІ БФТЙВХФПЧ Й UFS2, ДЕФБМШОПЕ ПРЙУБОЙЕ ЧЩ УНПЦЕФЕ ОБКФЙ Ч тБ'ДЕМљ14.12,\u003e. 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

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

Options MSDOSFS # MSDOS Filesystem

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

Options CD9660 # ISO 9660 Filesystem

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

Options PROCFS # Process filesystem (requires PSEUDOFS)

жБКМПЧБС УЙУФЕНБ РТПГЕУУПЧ. ьФП ЧЙТФХБМШОБС \u003e\u003e ЖБКМПЧБС УЙУФЕНБ НПОФЙТХЕНБС Ч / 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 \u003e\u003e) device em # Intel PRO / 1000 adapter Gigabit Ethernet Card device ixgb # Intel PRO / 10GbE Ethernet Card device txp # 3Com 3cR990 (Typhoon \u003e\u003e) device vx # 3Com 3c590, 3c595 ( Vortex \u003e\u003e)

дТБКЧЕТБ УЕФЕЧЩІ ЛБТФ 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 \u003e\u003e) device sis # Silicon Integrated Systems SiS 900 / SiS 7016 device sk # SysKonnect SK-984x\u003e 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 \u003e\u003e) device vge # VIA VT612x gigabit ethernet device vr # VIA Rhine, Rhine II device wb # Winbond W89C840F device xl # 3Com 3c90x (Boomerang \u003e\u003e, Cyclone \u003e\u003e)

дТБКЧЕТБ, ЛПФПТЩЕ ЙУРПМШ'ХАФ ЛПОФТПММЕТ ИЙОЩ 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. еУМЙ \u200b\u200bЧЩ'БРХУЛБЕФЕ 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)

РУЕЧДП-ФЕТНЙОБМ \u003e\u003e ЙМЙ ЙНЙФЙТПЧБООЩК РПТФ ДМС ЧІПДБ. йУРПМШ'ХЕФУС ЧІПДСЕЙНЙ telnet Й rlogin -УЕУУЙСНЙ, РТЙМПЦЕОЙЕН xterm Й ОЕЛПФПТЩНЙ ДТХЗЙНЙ РТЙМПЦЕОЙСНЙ, ФБЛЙНЙ ЛБЛ Emacs.

Device md # Memory disks \u003e\u003e

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

Device gif # IPv6 and IPv4 tunneling

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

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. ьФП РУЕЧДП-ХУФТПКУФЧП РП'ЧПМСЕФ РЕТЕЧПДЙФШ УЕФЕЧЩЕ ЙОФЕТЖЕКУЩ Ч ОЕТБ'ВПТЮЙЧЩК \u003e\u003e (promiscuous) ТЕЦЙН, Ч ЛПФПТПН РЕТЕІЧБФЩЧБЕФУС МАВПК РБЛЕФ Ч ИЙТПЛПЧЕЕБФЕМШОПК УЕФЙ (ОБРТЙНЕТ ethernet). ьФЙ РБЛЕФЩ НПЗХФ ВЩФШ УПІТБОЕОЩ ПРО ДЙУЛ Й / ЙМЙ ЙУУМЕДПЧБОЩ РТЙ РПНПЕЙ.

рТЙНЕЮБОЙЕ:

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

# USB support device uhci # UHCI PCI-\u003e USB interface device ohci # OHCI PCI-\u003e USB interface device ehci # EHCI PCI-\u003e 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 \u003e\u003e 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.

  • Recovery Mode

Вступ

Якось перебуваючи в пошуку як мені прикрутити конфігураційні ini файли або json до мого сервачку перебирав варіанти, але чомусь вони були незручні або занадто прості, або велосипеди. І хоч я люблю xml конфігурація, але часом це надмірно величезні файли і незручно для невеликої кількості налаштувань писати багато тексту. Раз задав одному запитання по цій темі, він то мені і підкинув бібліотеку. Нагадує вона json в суміші з yaml.

Бібліотека має два інтерфейси: функціональний і об'єктний. Вони дуже схожі, так як об'єктний використовує всередині функціональну реалізацію, але мають деякі відмінності, розглянуті в даній статті.

Сумісність

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

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

конфігураційний файл

Файл конфіга є такого вигляду структуру:
# Example application configuration file version \u003d "1.0"; application: (window: (title \u003d "(! LANG: 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 \u003d 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 \u003d "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 \u003d "Winston Churchill"; @include "quote.cfg" country \u003d "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 \u003d config_lookup (& cfg, "inventory.books"); if (setting! \u003d NULL) (int count \u003d config_setting_length (setting); int i; printf ( "% - 30s% -30s% -6s% s \\ n "," TITLE "," AUTHOR "," PRICE "," QTY "); for (i \u003d 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 надано так само функціонал створення елементів конфіга і його записи на носій.