# SOME DESCRIPTIVE TITLE # Copyright (C) YEAR The FreeBSD Project # This file is distributed under the same license as the FreeBSD Documentation package. # Vladlen Popolitov , 2025, 2026. msgid "" msgstr "" "Project-Id-Version: FreeBSD Documentation VERSION\n" "POT-Creation-Date: 2026-02-22 15:58+0000\n" "PO-Revision-Date: 2026-03-05 04:45+0000\n" "Last-Translator: Vladlen Popolitov \n" "Language-Team: Russian \n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Generator: Weblate 4.17\n" #. type: YAML Front Matter: description #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:1 #, no-wrap msgid "This chapter covers how to configure the FreeBSD Kernel. When to build a custom kernel, how to take a hardware inventory, how to customize a kernel configuration file, etc" msgstr "Эта глава рассказывает о настройке ядра FreeBSD. Когда стоит собирать собственное ядро, как провести инвентаризацию оборудования, как настроить конфигурационный файл ядра и т. д." #. type: YAML Front Matter: part #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:1 #, no-wrap msgid "Part II. Common Tasks" msgstr "Часть II. Стандартные задачи" #. type: YAML Front Matter: title #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:1 #, no-wrap msgid "Chapter 10. Configuring the FreeBSD Kernel" msgstr "Глава 10. Настройка ядра FreeBSD" #. type: Title = #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:15 #, no-wrap msgid "Configuring the FreeBSD Kernel" msgstr "Настройка ядра FreeBSD" #. type: Title == #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:53 #, no-wrap msgid "Synopsis" msgstr "Обзор" #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:58 msgid "" "The kernel is the core of the FreeBSD operating system. It is responsible " "for managing memory, enforcing security controls, networking, disk access, " "and much more. While much of FreeBSD is dynamically configurable, some " "users may wish to configure and compile a custom kernel." msgstr "" "Ядро — это основа операционной системы FreeBSD. Оно отвечает за управление " "памятью, обеспечение контроля безопасности, работу с сетью, доступ к дискам " "и многое другое. Хотя большая часть FreeBSD динамически настраивается, " "некоторые пользователи могут захотеть настроить и скомпилировать собственное " "ядро." #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:60 msgid "Read this chapter to learn:" msgstr "Прочтите эту главу, чтобы узнать:" #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:62 msgid "When to build a custom kernel." msgstr "Когда следует собирать собственный ядро." #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:63 msgid "How to take a hardware inventory." msgstr "Как провести инвентаризацию оборудования." #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:64 msgid "How to customize a kernel configuration file." msgstr "Как настроить файл конфигурации ядра." #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:65 msgid "" "How to use the kernel configuration file to create and build a new kernel." msgstr "" "Как использовать файл конфигурации ядра для создания и сборки нового ядра." #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:66 msgid "How to install the new kernel." msgstr "Как установить новое ядро." #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:67 msgid "How to troubleshoot if things go wrong." msgstr "Как устранить неполадки, если что-то пойдет не так." #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:69 msgid "" "All of the commands listed in the examples in this chapter should be " "executed as `root`." msgstr "" "Все команды, приведённые в примерах этой главы, должны выполняться от имени " "пользователя `root`." #. type: Title == #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:71 #, no-wrap msgid "Why Build a Custom Kernel?" msgstr "Зачем собирать собственное ядро?" #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:75 msgid "" "Traditionally, FreeBSD used a monolithic kernel. The kernel was one large " "program, supported a fixed list of devices, and in order to change the " "kernel's behavior, one had to compile and then reboot into a new kernel." msgstr "" "Традиционно FreeBSD использовала монолитное ядро. Ядро представляло собой " "одну большую программу, поддерживало фиксированный список устройств, и для " "изменения его поведения необходимо было скомпилировать новое ядро, а затем " "перезагрузиться в него." #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:79 msgid "" "Today, most of the functionality in the FreeBSD kernel is contained in " "modules which can be dynamically loaded and unloaded from the kernel as " "necessary. This allows the running kernel to adapt immediately to new " "hardware and for new functionality to be brought into the kernel. This is " "known as a modular kernel." msgstr "" "Сегодня большая часть функциональности ядра FreeBSD содержится в модулях, " "которые могут быть динамически загружены в ядро или выгружены из него по " "мере необходимости. Это позволяет работающему ядру немедленно адаптироваться " "к новому оборудованию и добавлять новую функциональность. Такое ядро " "называется модульным." #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:83 msgid "" "Occasionally, it is still necessary to perform static kernel configuration. " "Sometimes the needed functionality is so tied to the kernel that it can not " "be made dynamically loadable. Some security environments prevent the " "loading and unloading of kernel modules and require that only needed " "functionality is statically compiled into the kernel." msgstr "" "Время от времени всё ещё требуется выполнять статическую настройку ядра. " "Иногда необходимая функциональность настолько тесно связана с ядром, что её " "невозможно сделать динамически загружаемой. В некоторых средах с повышенными " "требованиями к безопасности запрещена загрузка и выгрузка модулей ядра, и " "требуется, чтобы только необходимая функциональность была статически " "скомпилирована в ядро." #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:88 msgid "" "Building a custom kernel is often a rite of passage for advanced BSD users. " "This process, while time consuming, can provide benefits to the FreeBSD " "system. Unlike the [.filename]#GENERIC# kernel, which must support a wide " "range of hardware, a custom kernel can be stripped down to only provide " "support for that computer's hardware. This has a number of benefits, such " "as:" msgstr "" "Сборка собственного ядра часто является своего рода обрядом посвящения для " "опытных пользователей BSD. Этот процесс, хотя и отнимает много времени, " "может принести пользу системе FreeBSD. В отличие от ядра [.filename]#GENERIC#" ", которое должно поддерживать широкий спектр оборудования, собственное ядро " "можно сократить до поддержки только аппаратного обеспечения данного " "компьютера. Это даёт ряд преимуществ, таких как:" #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:90 msgid "" "Faster boot time. Since the kernel will only probe the hardware on the " "system, the time it takes the system to boot can decrease." msgstr "" "Более быстрая загрузка. Поскольку ядро будет проверять только оборудование, " "установленное в системе, время загрузки системы может сократиться." #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:91 msgid "" "Lower memory usage. A custom kernel often uses less memory than the [." "filename]#GENERIC# kernel by omitting unused features and device drivers. " "This is important because the kernel code remains resident in physical " "memory at all times, preventing that memory from being used by applications. " "For this reason, a custom kernel is useful on a system with a small amount " "of RAM." msgstr "" "Снижение использования памяти. Собственное ядро часто потребляет меньше " "памяти, чем ядро [.filename]#GENERIC#, за счёт исключения неиспользуемых " "функций и драйверов устройств. Это важно, поскольку код ядра постоянно " "находится в физической памяти, не позволяя использовать эту память " "приложениям. По этой причине собственное ядро полезно на системах с " "небольшим объёмом оперативной памяти." #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:92 msgid "" "Additional hardware support. A custom kernel can add support for devices " "which are not present in the [.filename]#GENERIC# kernel." msgstr "" "Дополнительная поддержка оборудования. Собственное ядро может добавить " "поддержку устройств, которые отсутствуют в ядре [.filename]#GENERIC#." #. type: delimited block = 4 #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:98 msgid "" "When building a custom kernel, it is important to note that non-default " "configurations are less thoroughly tested than the GENERIC configuration. " "While customizing the kernel can provide specific benefits it also increases " "the risk of encountering build or runtime issues. Custom kernel " "configurations are recommended only for advanced users who have a specific " "reason for making changes and are willing to engage in the debugging process " "if necessary." msgstr "" "При сборке собственного ядра важно учитывать, что нестандартные конфигурации " "тестируются менее тщательно, чем конфигурация GENERIC. Хотя настройка ядра " "может дать определённые преимущества, она также увеличивает риск " "возникновения проблем при сборке или во время работы. Пользовательские " "конфигурации ядра рекомендуются только опытным пользователям, у которых есть " "веская причина для внесения изменений и которые готовы при необходимости " "участвовать в процессе отладки." #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:102 msgid "" "Before building a custom kernel, consider the reason for doing so. If there " "is a need for specific hardware support, it may already exist as a module." msgstr "" "Прежде чем собирать собственное ядро, стоит подумать о причине этого. Если " "требуется поддержка определённого оборудования, она может уже существовать в " "виде модуля." #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:106 msgid "" "Kernel modules exist in [.filename]#/boot/kernel# and may be dynamically " "loaded into the running kernel using man:kldload[8]. Most kernel drivers " "have a loadable module and manual page. For example, the man:ath[4] " "wireless network driver has the following information in its manual page:" msgstr "" "Модули ядра находятся в [.filename]#/boot/kernel# и могут быть динамически " "загружены в работающее ядро с помощью man:kldload[8]. Большинство драйверов " "ядра имеют загружаемый модуль и страницу руководства. Например, драйвер " "беспроводной сети man:ath[4] содержит следующую информацию на своей странице " "руководства:" #. type: delimited block . 4 #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:111 #, no-wrap msgid "" "Alternatively, to load the driver as a module at boot time, place the\n" "following line in man:loader.conf[5]:\n" msgstr "" "В качестве альтернативы, для загрузки драйвера в виде модуля при старте системы,\n" "поместите следующую строку в man:loader.conf[5]:\n" #. type: delimited block . 4 #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:113 #, no-wrap msgid " if_ath_load=\"YES\"\n" msgstr " if_ath_load=\"YES\"\n" #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:116 msgid "" "Adding `if_ath_load=\"YES\"` to [.filename]#/boot/loader.conf# will load " "this module dynamically at boot time." msgstr "" "Добавление `if_ath_load=\"YES\"` в [.filename]#/boot/loader.conf# позволит " "динамически загрузить этот модуль во время загрузки системы." #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:119 msgid "" "In some cases, there is no associated module in [.filename]#/boot/kernel#. " "This is mostly true for certain subsystems." msgstr "" "В некоторых случаях связанный модуль отсутствует в [.filename]#/boot/" "kernel#. Это в основном относится к определённым подсистемам." #. type: Title == #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:121 #, no-wrap msgid "Finding the System Hardware" msgstr "Поиск информации об оборудовании системы" #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:126 msgid "" "Before editing the kernel configuration file, it is recommended to perform " "an inventory of the machine's hardware. On a dual-boot system, the " "inventory can be created from the other operating system. For example, " "Microsoft(R)'s Device Manager contains information about installed devices." msgstr "" "Прежде чем редактировать файл конфигурации ядра, рекомендуется составить " "перечень оборудования компьютера. На системе с двойной загрузкой этот " "перечень можно создать из другой операционной системы. Например, Диспетчер " "устройств Microsoft(R) содержит информацию об установленных устройствах." #. type: delimited block = 4 #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:130 msgid "" "Some versions of Microsoft(R) Windows(R) have a System icon which can be " "used to access Device Manager." msgstr "" "Некоторые версии Microsoft(R) Windows(R) имеют значок \"Система\", который " "можно использовать для доступа к диспетчеру устройств." #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:135 msgid "" "If FreeBSD is the only installed operating system, use man:dmesg[8] to " "determine the hardware that was found and listed during the boot probe. " "Most device drivers on FreeBSD have a manual page which lists the hardware " "supported by that driver. For example, the following lines indicate that " "the man:psm[4] driver found a mouse:" msgstr "" "Если FreeBSD — единственная установленная операционная система, используйте " "man:dmesg[8] для определения оборудования, обнаруженного и перечисленного во " "время загрузки. Большинство драйверов устройств в FreeBSD имеют справочную " "страницу, в которой перечислено поддерживаемое оборудование. Например, " "следующие строки указывают, что драйвер man:psm[4] обнаружил мышь:" #. type: delimited block . 4 #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:142 #, no-wrap msgid "" "psm0: irq 12 on atkbdc0\n" "psm0: [GIANT-LOCKED]\n" "psm0: [ITHREAD]\n" "psm0: model Generic PS/2 mouse, device ID 0\n" msgstr "" "psm0: irq 12 on atkbdc0\n" "psm0: [GIANT-LOCKED]\n" "psm0: [ITHREAD]\n" "psm0: model Generic PS/2 mouse, device ID 0\n" #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:145 msgid "" "Since this hardware exists, this driver should not be removed from a custom " "kernel configuration file." msgstr "" "Поскольку данное оборудование существует, этот драйвер не следует удалять из " "файла конфигурации собственного ядра." #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:147 msgid "" "If the output of `dmesg` does not display the results of the boot probe " "output, instead read the contents of [.filename]#/var/run/dmesg.boot#." msgstr "" "Если вывод команды `dmesg` не отображает результаты загрузочного probing, " "вместо этого прочитайте содержимое файла [.filename]#/var/run/dmesg.boot#." #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:150 msgid "" "Another tool for finding hardware is man:pciconf[8], which provides more " "verbose output. For example:" msgstr "" "Еще один инструмент для поиска оборудования — это man:pciconf[8], который " "предоставляет более подробный вывод. Например:" #. type: delimited block . 4 #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:159 #, no-wrap msgid "" "% pciconf -lv\n" "ath0@pci0:3:0:0: class=0x020000 card=0x058a1014 chip=0x1014168c rev=0x01 hdr=0x00\n" " vendor = 'Atheros Communications Inc.'\n" " device = 'AR5212 Atheros AR5212 802.11abg wireless'\n" " class = network\n" " subclass = ethernet\n" msgstr "" "% pciconf -lv\n" "ath0@pci0:3:0:0: class=0x020000 card=0x058a1014 chip=0x1014168c rev=0x01 hdr=0x00\n" " vendor = 'Atheros Communications Inc.'\n" " device = 'AR5212 Atheros AR5212 802.11abg wireless'\n" " class = network\n" " subclass = ethernet\n" #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:162 msgid "" "This output shows that the [.filename]#ath# driver located a wireless " "Ethernet device." msgstr "" "Этот вывод показывает, что драйвер [.filename]#ath# обнаружил беспроводное " "Ethernet-устройство." #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:165 msgid "" "The `-k` flag of man:man[1] can be used to provide useful information. For " "example, it can be used to display a list of manual pages which contain a " "particular device brand or name:" msgstr "" "Флаг `-k` утилиты man:man[1] может быть полезен для получения информации. " "Например, с его помощью можно вывести список страниц руководства, содержащих " "определённое название или марку устройства:" #. type: delimited block . 4 #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:171 #, no-wrap msgid "" "# man -k Atheros\n" "ath(4) - Atheros IEEE 802.11 wireless network driver\n" "ath_hal(4) - Atheros Hardware Access Layer (HAL)\n" msgstr "" "# man -k Atheros\n" "ath(4) - Atheros IEEE 802.11 wireless network driver\n" "ath_hal(4) - Atheros Hardware Access Layer (HAL)\n" #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:174 msgid "" "Once the hardware inventory list is created, refer to it to ensure that " "drivers for installed hardware are not removed as the custom kernel " "configuration is edited." msgstr "" "После составления списка оборудования обратитесь к нему, чтобы убедиться, " "что драйверы установленного оборудования не будут удалены при редактировании " "конфигурации собственного ядра." #. type: Title == #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:176 #, no-wrap msgid "The Configuration File" msgstr "Файл конфигурации" #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:179 msgid "" "In order to create a custom kernel configuration file and build a custom " "kernel, the full FreeBSD source tree must first be installed." msgstr "" "Для создания файла конфигурации собственного ядра и сборки кастомного ядра " "необходимо сначала установить полное дерево исходных кодов FreeBSD." #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:182 msgid "" "If [.filename]#/usr/src/# does not exist or it is empty, source has not been " "installed. Source can be installed with Git using the instructions in " "crossref:mirrors[git,“Using Git”]." msgstr "" "Если [.filename]#/usr/src/# не существует или пуст, исходный код не " "установлен. Исходный код можно установить с помощью Git, следуя инструкциям " "в crossref:mirrors[git,“Использование Git”]." #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:187 msgid "" "Once source is installed, review the contents of [.filename]#/usr/src/sys#. " "This directory contains a number of subdirectories, including those which " "represent the following supported architectures: [.filename]#amd64#, [." "filename]#i386#, [.filename]#powerpc#, and [.filename]#sparc64#. Everything " "inside a particular architecture's directory deals with that architecture " "only and the rest of the code is machine independent code common to all " "platforms. Each supported architecture has a [.filename]#conf# subdirectory " "which contains the [.filename]#GENERIC# kernel configuration file for that " "architecture." msgstr "" "После установки исходного кода ознакомьтесь с содержимым каталога [." "filename]#/usr/src/sys#. Этот каталог содержит несколько подкаталогов, " "включая те, которые соответствуют следующим поддерживаемым архитектурам: [." "filename]#amd64#, [.filename]#i386#, [.filename]#powerpc# и [." "filename]#sparc64#. Всё содержимое каталога конкретной архитектуры относится " "только к этой архитектуре, а остальной код является машинонезависимым и " "общим для всех платформ. Каждая поддерживаемая архитектура имеет подкаталог " "[.filename]#conf#, который содержит файл конфигурации ядра [." "filename]#GENERIC# для данной архитектуры." #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:193 msgid "" "Do not make edits to [.filename]#GENERIC#. Instead, copy the file to a " "different name and make edits to the copy. The convention is to use a name " "with all capital letters. When maintaining multiple FreeBSD machines with " "different hardware, it is a good idea to name it after the machine's " "hostname. This example creates a copy, named [.filename]#MYKERNEL#, of the " "[.filename]#GENERIC# configuration file for the `amd64` architecture:" msgstr "" "Не вносите изменения в файл [.filename]#GENERIC#. Вместо этого скопируйте " "его под другим именем и редактируйте копию. По сложившейся практике имя " "файла должно состоять из заглавных букв. Если вы обслуживаете несколько " "машин FreeBSD с разным оборудованием, разумно назвать файл по имени хоста " "соответствующей машины. В следующем примере создаётся копия файла " "конфигурации [.filename]#GENERIC# для архитектуры `amd64` с именем [." "filename]#MYKERNEL#:" #. type: delimited block . 4 #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:198 #, no-wrap msgid "" "# cd /usr/src/sys/amd64/conf\n" "# cp GENERIC MYKERNEL\n" msgstr "" "# cd /usr/src/sys/amd64/conf\n" "# cp GENERIC MYKERNEL\n" #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:202 msgid "" "[.filename]#MYKERNEL# can now be customized with any `ASCII` text editor. " "The default editor is vi, though an easier editor for beginners, called ee, " "is also installed with FreeBSD." msgstr "" "[.filename]#MYKERNEL# теперь можно настроить с помощью любого текстового " "редактора, поддерживающего `ASCII`. Редактор по умолчанию — vi, но для " "новичков также установлен более простой редактор под названием ee." #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:208 msgid "" "The format of the kernel configuration file is simple. Each line contains a " "keyword that represents a device or subsystem, an argument, and a brief " "description. Any text after a `+#+` is considered a comment and ignored. " "To remove kernel support for a device or subsystem, put a `+#+` at the " "beginning of the line representing that device or subsystem. Do not add or " "remove a `+#+` for any line that is not understand." msgstr "" "Формат файла конфигурации ядра прост. Каждая строка содержит ключевое слово, " "представляющее устройство или подсистему, аргумент и краткое описание. Любой " "текст после `+#+` считается комментарием и игнорируется. Чтобы удалить " "поддержку устройства или подсистемы в ядре, поставьте `+#+` в начале строки, " "соответствующей этому устройству или подсистеме. Не добавляйте и не удаляйте " "`+#+` для строк, которые не понятны." #. type: delimited block = 4 #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:214 msgid "" "It is easy to remove support for a device or option and end up with a broken " "kernel. For example, if the man:ata[4] driver is removed from the kernel " "configuration file, a system using `ATA` disk drivers may not boot. When in " "doubt, just leave support in the kernel." msgstr "" "Легко удалить поддержку устройства или опции и получить нерабочее ядро. " "Например, если драйвер man:ata[4] удалён из конфигурационного файла ядра, " "система, использующая драйверы дисков `ATA`, может не загрузиться. Если " "сомневаетесь — оставьте поддержку в ядре." #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:218 msgid "" "In addition to the brief descriptions provided in this file, additional " "descriptions are contained in [.filename]#NOTES#, which can be found in the " "same directory as [.filename]#GENERIC# for that architecture. For " "architecture independent options, refer to [.filename]#/usr/src/sys/conf/" "NOTES#." msgstr "" "В дополнение к кратким описаниям, приведённым в этом файле, дополнительные " "описания содержатся в [.filename]#NOTES#, которые можно найти в том же " "каталоге, что и [.filename]#GENERIC# для данной архитектуры. Для " "архитектурно-независимых параметров обратитесь к [.filename]#/usr/src/sys/" "conf/NOTES#." #. type: delimited block = 4 #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:222 msgid "" "When finished customizing the kernel configuration file, save a backup copy " "to a location outside of [.filename]#/usr/src#." msgstr "" "После завершения настройки конфигурационного файла ядра сохраните резервную " "копию в расположении за пределами [.filename]#/usr/src#." #. type: delimited block = 4 #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:224 msgid "" "Alternately, keep the kernel configuration file elsewhere and create a " "symbolic link to the file:" msgstr "" "Или можно сохранить файл конфигурации ядра в другом месте и создать " "символическую ссылку на него:" #. type: delimited block . 4 #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:231 #, no-wrap msgid "" "# cd /usr/src/sys/amd64/conf\n" "# mkdir /root/kernels\n" "# cp GENERIC /root/kernels/MYKERNEL\n" "# ln -s /root/kernels/MYKERNEL\n" msgstr "" "# cd /usr/src/sys/amd64/conf\n" "# mkdir /root/kernels\n" "# cp GENERIC /root/kernels/MYKERNEL\n" "# ln -s /root/kernels/MYKERNEL\n" #. type: delimited block = 4 #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:238 msgid "" "An `include` directive is available for use in configuration files. This " "allows another configuration file to be included in the current one, making " "it easy to maintain small changes relative to an existing file. If only a " "small number of additional options or drivers are required, this allows a " "delta to be maintained with respect to [.filename]#GENERIC#, as seen in this " "example:" msgstr "" "В конфигурационных файлах доступна директива `include`, которая позволяет " "включать содержимое другого конфигурационного файла в текущий. Это упрощает " "поддержку небольших изменений относительно существующего файла. Если " "требуется лишь несколько дополнительных параметров или драйверов, можно " "сохранять разницу относительно [.filename]#GENERIC#, как показано в примере:" #. type: delimited block . 4 #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:243 #, no-wrap msgid "" "include GENERIC\n" "ident MYKERNEL\n" msgstr "" "include GENERIC\n" "ident MYKERNEL\n" #. type: delimited block . 4 #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:248 #, no-wrap msgid "" "options IPFIREWALL\n" "options DUMMYNET\n" "options IPFIREWALL_DEFAULT_TO_ACCEPT\n" "options IPDIVERT\n" msgstr "" "options IPFIREWALL\n" "options DUMMYNET\n" "options IPFIREWALL_DEFAULT_TO_ACCEPT\n" "options IPDIVERT\n" #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:253 msgid "" "Using this method, the local configuration file expresses local differences " "from a [.filename]#GENERIC# kernel. As upgrades are performed, new features " "added to [.filename]#GENERIC# will also be added to the local kernel unless " "they are specifically prevented using `nooptions` or `nodevice`. A " "comprehensive list of configuration directives and their descriptions may be " "found in man:config[5]." msgstr "" "При использовании этого метода локальный конфигурационный файл отражает " "локальные отличия от ядра [.filename]#GENERIC#. При выполнении обновлений " "новые функции, добавленные в [.filename]#GENERIC#, также будут добавлены в " "локальное ядро, если они не запрещены явно с помощью `nooptions` или " "`nodevice`. Полный список директив конфигурации и их описания можно найти в " "man:config[5]." #. type: delimited block = 4 #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:257 msgid "" "To build a file which contains all available options, run the following " "command as `root`:" msgstr "" "Чтобы создать файл, содержащий все доступные параметры, выполните следующую " "команду от имени `root`:" #. type: delimited block . 4 #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:261 #, no-wrap msgid "# cd /usr/src/sys/arch/conf && make LINT\n" msgstr "# cd /usr/src/sys/arch/conf && make LINT\n" #. type: Title == #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:266 #, no-wrap msgid "Building and Installing a Custom Kernel" msgstr "Сборка и установка собственного ядра" #. type: delimited block = 4 #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:269 msgid "" "Once the edits to the custom configuration file have been saved, the source " "code for the kernel can be compiled using the following steps:" msgstr "" "После сохранения изменений в пользовательском конфигурационном файле " "исходный код ядра можно скомпилировать, выполнив следующие шаги:" #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:273 #, no-wrap msgid "*Procedure: Building a Kernel*\n" msgstr "*Процедура: Сборка ядра*\n" #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:275 msgid "Change to this directory:" msgstr "Перейдите в этот каталог:" #. type: delimited block . 4 #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:279 #, no-wrap msgid "# cd /usr/src\n" msgstr "# cd /usr/src\n" #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:282 msgid "" "Compile the new kernel by specifying the name of the custom kernel " "configuration file:" msgstr "Соберите новое ядро, указав имя файла конфигурации собственного ядра:" #. type: delimited block . 4 #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:286 #, no-wrap msgid "# make buildkernel KERNCONF=MYKERNEL\n" msgstr "# make buildkernel KERNCONF=MYKERNEL\n" #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:289 msgid "" "Install the new kernel associated with the specified kernel configuration " "file. This command will copy the new kernel to [.filename]#/boot/kernel/" "kernel# and save the old kernel to [.filename]#/boot/kernel.old/kernel#:" msgstr "" "Установите новое ядро, связанное с указанным файлом конфигурации ядра. Эта " "команда скопирует новое ядро в [.filename]#/boot/kernel/kernel#, а старое " "ядро сохранит в [.filename]#/boot/kernel.old/kernel#:" #. type: delimited block . 4 #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:293 #, no-wrap msgid "# make installkernel KERNCONF=MYKERNEL\n" msgstr "# make installkernel KERNCONF=MYKERNEL\n" #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:296 msgid "" "Shutdown the system and reboot into the new kernel. If something goes wrong, " "refer to crossref:kernelconfig[kernelconfig-noboot, The kernel does not " "boot]." msgstr "" "Выключите систему и перезагрузитесь с новым ядром. Если возникнут проблемы, " "обратитесь к разделу crossref:kernelconfig[kernelconfig-noboot, Ядро не " "загружается]." #. type: delimited block = 4 #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:300 msgid "" "By default, when a custom kernel is compiled, all kernel modules are " "rebuilt. To update a kernel faster or to build only custom modules, edit [." "filename]#/etc/make.conf# before starting to build the kernel." msgstr "" "По умолчанию при компиляции собственного ядра все модули ядра " "пересобираются. Чтобы ускорить обновление ядра или собрать только " "необходимые модули, отредактируйте [.filename]#/etc/make.conf# перед началом " "сборки ядра." #. type: delimited block = 4 #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:302 msgid "" "For example, this variable specifies the list of modules to build instead of " "using the default of building all modules:" msgstr "" "Например, эта переменная задаёт список модулей для сборки вместо " "использования значения по умолчанию (сборка всех модулей):" #. type: delimited block . 4 #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:306 #, no-wrap msgid "MODULES_OVERRIDE = linux acpi\n" msgstr "MODULES_OVERRIDE = linux acpi\n" #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:309 msgid "" "Alternately, this variable lists which modules to exclude from the build " "process:" msgstr "" "Или эта переменная указывает, какие модули исключить из процесса сборки:" #. type: delimited block . 4 #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:313 #, no-wrap msgid "WITHOUT_MODULES = linux acpi sound\n" msgstr "WITHOUT_MODULES = linux acpi sound\n" #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:316 msgid "" "This variable instructs the build to skip kernel modules and compile only " "the kernel itself:" msgstr "" "Эта переменная указывает сборке пропустить модули ядра и компилировать " "только само ядро:" #. type: delimited block . 4 #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:320 #, no-wrap msgid "NO_MODULES = yes\n" msgstr "NO_MODULES = yes\n" #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:327 msgid "" "The Ports Framework includes drivers and other modules that depend on kernel " "interfaces, such as package:graphics/drm-kmod[] or package:emulators/" "virtualbox-ose-kmod[]. With the `PORTS_MODULES` variable, every time the " "kernel is built, the ports containing kernel modules are re‑built against " "the updated sources. This ensures the kernel module stays in‑sync with the " "kernel itself. The kernel and ports trees should be updated together for " "maximum compatibility. `PORTS_MODULES` can be added to [.filename]#/etc/" "make.conf# to ensure all kernels you build also rebuild these modules." msgstr "" "Фреймворк портов включает драйверы и другие модули, которые зависят от " "интерфейсов ядра, например package:graphics/drm-kmod[] или package:emulators/" "virtualbox-ose-kmod[]. С помощью переменной `PORTS_MODULES` при каждой " "сборке ядра порты, содержащие модули ядра, пересобираются с учётом " "обновлённых исходников. Это гарантирует, что модуль ядра остаётся " "согласованным с самим ядром. Для максимальной совместимости дерево " "исходников ядра и дерево портов следует обновлять одновременно. Переменную " "`PORTS_MODULES` можно добавить в [.filename]#/etc/make.conf#, чтобы все " "собираемые вами ядра также пересобирали эти модули." #. type: delimited block . 4 #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:331 #, no-wrap msgid "PORTS_MODULES = drm-kmod virtualbox-ose-kmod\n" msgstr "PORTS_MODULES = drm-kmod virtualbox-ose-kmod\n" #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:335 msgid "" "Additional variables are available. Refer to man:make.conf[5] for details." msgstr "" "Доступны дополнительные переменные. Подробности смотрите в man:make.conf[5]." #. type: Title == #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:337 #, no-wrap msgid "If Something Goes Wrong" msgstr "Если что-то пойдет не так" #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:340 msgid "" "There are four categories of trouble that can occur when building a custom " "kernel:" msgstr "" "Существует четыре типа проблем, которые могут возникнуть при сборке " "собственного ядра:" #. type: Labeled list #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:341 #, no-wrap msgid "`config` fails" msgstr "`config` завершается с ошибкой" #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:344 msgid "" "If `config` fails, it will print the line number that is incorrect. As an " "example, for the following message, make sure that line 17 is typed " "correctly by comparing it to [.filename]#GENERIC# or [.filename]#NOTES#:" msgstr "" "Если `config` завершается с ошибкой, он выводит номер строки, содержащей " "ошибку. Например, при получении следующего сообщения убедитесь, что строка " "17 введена правильно, сравнив её с [.filename]#GENERIC# или [." "filename]#NOTES#:" #. type: delimited block . 4 #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:348 #, no-wrap msgid "config: line 17: syntax error\n" msgstr "config: line 17: syntax error\n" #. type: Labeled list #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:350 #, no-wrap msgid "`make` fails" msgstr "`make` завершается с ошибкой" #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:353 msgid "" "If `make` fails, it is usually due to an error in the kernel configuration " "file which is not severe enough for `config` to catch. Review the " "configuration, and if the problem is not apparent, send an email to the " "{freebsd-questions} which contains the kernel configuration file." msgstr "" "Если `make` завершается с ошибкой, обычно это связано с ошибкой в файле " "конфигурации ядра, которую `config` не смог обнаружить. Проверьте " "конфигурацию, и если проблема не очевидна, отправьте письмо в список " "рассылки {freebsd-questions}, приложив файл конфигурации ядра." #. type: Labeled list #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:355 #, no-wrap msgid "The kernel does not boot" msgstr "Ядро не загружается" #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:360 msgid "" "If the new kernel does not boot or fails to recognize devices, do not panic! " "Fortunately, FreeBSD has an excellent mechanism for recovering from " "incompatible kernels. Simply choose the kernel to boot from at the FreeBSD " "boot loader. This can be accessed when the system boot menu appears by " "selecting the \"Escape to a loader prompt\" option. At the prompt, type " "`boot _kernel.old_`, or the name of any other kernel that is known to boot " "properly." msgstr "" "Если новый ядро не загружается или не распознаёт устройства, не паникуйте! К " "счастью, в FreeBSD есть отличный механизм восстановления после проблем с " "несовместимыми ядрами. Просто выберите ядро для загрузки в загрузчике " "FreeBSD. Это можно сделать при появлении меню загрузки системы, выбрав опцию " "«Escape to a loader prompt». В командной строке введите `boot _kernel.old_` " "или имя любого другого ядра, которое заведомо загружается правильно." #. type: Plain text #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:364 msgid "" "After booting with a good kernel, check over the configuration file and try " "to build it again. One helpful resource is [.filename]#/var/log/messages# " "which records the kernel messages from every successful boot. Also, man:" "dmesg[8] will print the kernel messages from the current boot." msgstr "" "После загрузки с исправным ядром проверьте конфигурационный файл и " "попробуйте собрать его снова. Полезным ресурсом может быть [.filename]#/var/" "log/messages#, где записываются сообщения ядра при каждой успешной загрузке. " "Также man:dmesg[8] выведет сообщения ядра текущей загрузки." #. type: delimited block = 4 #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:370 msgid "" "When troubleshooting a kernel make sure to keep a copy of a kernel that is " "known to work, such as [.filename]#GENERIC#. This is important because " "every time a new kernel is installed, [.filename]#kernel.old# is overwritten " "with the last installed kernel, which may or may not be bootable. As soon " "as possible, move the working kernel by renaming the directory containing " "the good kernel:" msgstr "" "При устранении неполадок ядра обязательно сохраняйте копию работоспособного " "ядра, например, [.filename]#GENERIC#. Это важно, потому что при каждой " "установке нового ядра файл [.filename]#kernel.old# перезаписывается " "последним установленным ядром, которое может быть или не быть загружаемым. " "Как можно скорее переместите рабочее ядро, переименовав каталог, содержащий " "исправное ядро:" #. type: delimited block . 4 #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:375 #, no-wrap msgid "" "# mv /boot/kernel /boot/kernel.bad\n" "# mv /boot/kernel.good /boot/kernel\n" msgstr "" "# mv /boot/kernel /boot/kernel.bad\n" "# mv /boot/kernel.good /boot/kernel\n" #. type: Labeled list #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:379 #, no-wrap msgid "The kernel works, but man:ps[1] does not" msgstr "Ядро работает, но man:ps[1] — нет" #. type: delimited block = 4 #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:382 msgid "" "If the kernel version differs from the one that the system utilities have " "been built with, for example, a kernel built from -CURRENT sources is " "installed on a -RELEASE system, many system status commands like man:ps[1] " "and man:vmstat[8] will not work. To fix this, crossref:cutting-" "edge[makeworld,recompile and install a world] built with the same version of " "the source tree as the kernel. It is never a good idea to use a different " "version of the kernel than the rest of the operating system." msgstr "" "Если версия ядра отличается от той, с которой собраны системные утилиты, " "например, при установке ядра, собранного из исходников -CURRENT, на систему -" "RELEASE, многие команды для просмотра состояния системы, такие как man:ps[1] " "и man:vmstat[8], не будут работать. Чтобы исправить это, crossref:cutting-" "edge[makeworld,пересоберите и установите world], собранный из той же версии " "исходного дерева, что и ядро. Никогда не рекомендуется использовать версию " "ядра, отличную от остальной операционной системы."