# SOME DESCRIPTIVE TITLE # Copyright (C) YEAR The FreeBSD Project # This file is distributed under the same license as the FreeBSD Documentation package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: FreeBSD Documentation VERSION\n" "POT-Creation-Date: 2026-02-22 15:58+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\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 "" #. type: YAML Front Matter: part #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:1 #, no-wrap msgid "Part II. Common Tasks" msgstr "" #. type: YAML Front Matter: title #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:1 #, no-wrap msgid "Chapter 10. Configuring the FreeBSD Kernel" msgstr "" #. type: Title = #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:15 #, no-wrap msgid "Configuring the FreeBSD Kernel" msgstr "" #. 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 "" #. 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 "" #. 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 "" #. 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 "" #. 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 "" #. 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 "" #. 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 "" #. 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 "" #. 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 "" #. 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 "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:113 #, no-wrap msgid " if_ath_load=\"YES\"\n" msgstr "" #. 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 "" #. 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 "" #. 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 "" #. 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 "" #. 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 "" #. 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 "" #. 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 "" #. 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 "" #. 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 "" #. 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 "" #. 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 "" #. 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 "" #. 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 "" #. 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 "" #. 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 "" #. 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 "" #. 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 "" #. 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 "" #. 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 "" #. 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 "" #. 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 "" #. 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 "" #. 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 "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:243 #, no-wrap msgid "" "include GENERIC\n" "ident MYKERNEL\n" msgstr "" #. 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 "" #. 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 "" #. 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 "" #. 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 "" #. 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 "" #. 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 "" #. 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 "" #. 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 "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:293 #, no-wrap msgid "# make installkernel KERNCONF=MYKERNEL\n" msgstr "" #. 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 "" #. 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 "" #. 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 "" #. 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 "" #. 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 "" #. 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 "" #. 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 "" #. 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 "" #. 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 "" #. 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 "" #. type: delimited block . 4 #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:348 #, no-wrap msgid "config: line 17: syntax error\n" msgstr "" #. type: Labeled list #: documentation/content/en/books/handbook/kernelconfig/_index.adoc:350 #, no-wrap msgid "`make` fails" msgstr "" #. 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 "" #. 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 "" #. 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 "" #. 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 "" #. 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 "" #. 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 "" #. 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 ""