---
title: Бүлэг 9. FreeBSD цөмийг тохируулах нь
part: хэсэг II. Нийтлэг асуудлууд
prev: books/handbook/multimedia
next: books/handbook/printing
showBookMenu: true
weight: 12
params:
  path: "/books/handbook/kernelconfig/"
---

[[kernelconfig]]
= FreeBSD цөмийг тохируулах нь
:doctype: book
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:sectnumoffset: 9
:partnums:
:source-highlighter: rouge
:experimental:
:images-path: books/handbook/kernelconfig/

ifdef::env-beastie[]
ifdef::backend-html5[]
:imagesdir: ../../../../images/{images-path}
endif::[]
ifndef::book[]
include::shared/authors.adoc[]
include::shared/mirrors.adoc[]
include::shared/releases.adoc[]
include::shared/attributes/attributes-{{% lang %}}.adoc[]
include::shared/{{% lang %}}/teams.adoc[]
include::shared/{{% lang %}}/mailing-lists.adoc[]
include::shared/{{% lang %}}/urls.adoc[]
toc::[]
endif::[]
ifdef::backend-pdf,backend-epub3[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]
endif::[]

ifndef::env-beastie[]
toc::[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]

[[kernelconfig-synopsis]]
== Ерөнхий агуулга

Цөм нь FreeBSD үйлдлийн системийн гол зүрх юм. Энэ нь санах ойг удирдах, аюулгүй байдлын хяналтуудыг хийх, сүлжээнд холбогдох, диск уруу хандах зэрэг олон үйлдлүүдийг хариуцан хийдэг. FreeBSD улам илүү динамикаар тохируулагдах болсон боловч зарим тохиолдолд цөмийг дахин тохируулж хөрвүүлэх шаардлага гардаг.

Энэ бүлгийг уншсаны дараа, та дараах зүйлсийг мэдэх болно:

* Та магадгүй яагаад өөрт тохируулсан цөм бүтээх хэрэгтэй талаар.
* Цөмийн тохиргооны файлыг хэрхэн бичих эсвэл байгаа тохиргооны файлыг хэрхэн өөрчлөх талаар.
* Цөмийн тохиргооны файлыг хэрхэн ашиглаж шинэ цөм үүсгэж бүтээх талаар.
* Шинэ цөмийг хэрхэн суулгах талаар.
* Хэрэв юм буруугаар эргэвэл хэрхэн алдааг олох талаар.

Энэхүү бүлгийн жишээнүүд дэх тушаалууд нь амжилттай болохын тулд `root` эрхээр ажиллах ёстой.

[[kernelconfig-custom-kernel]]
== Яагаад өөрчлөн тохируулсан цөм бүтээх хэрэгтэй вэ?

Уламжлалаар бол FreeBSD нь "monolithic" цөмтэй байсан байна. Энэ нь цөм тоотой хэдэн төхөөрөмжүүдийн жагсаалтыг дэмжсэн нэг том програм байсан гэсэн үг бөгөөд хэрэв та цөмийн ажиллагааг өөрчлөх бол шинэ цөм хөрвүүлж дараа нь компьютераа шинэ цөмөөр ачаалан эхлүүлэх шаардлагатай байсан билээ.

Өнөөдөр FreeBSD нь цөмийн ихэнх ажиллагаагаа шаардлагын дагуу динамикаар ачаалдаг ба цөмөөс буцааж буулгах боломж бүхий модулиудаар тусгаарлагдсан загвар уруу шилжиж байна. Энэ нь цөм шинэ тоног төхөөрөмжид (зөөврийн компьютер дэх PCMCIA картууд зэрэг) дасан зохицож түүнийг хурдан хүртээмжтэй болгох, эсвэл цөм анх хөрвүүлэгдэхдээ цөмд хэрэггүй байсан шинэ ажиллагааг цөмд бий болгох боломжийг бүрдүүлдэг. Үүнийг модульчлагдсан цөм хэмээдэг юм.

Тэгсэн ч гэсэн зарим статик цөмийн тохиргоог заавал хийх шаардлагатай. Зарим тохиолдолд ажиллагаа нь цөмтэй нягт холбоотой учраас динамикаар ачаалахаар хийх боломжгүй байдаг юм. Бас энэ нь энгийнээр бол тэр үйл ажиллагаанд зориулж динамикаар ачаалах модулийг бичих цаг хэнд ч олдоогүй байж болох юм.

Өөрчлөн тохируулсан цөм бүтээх нь BSD дэвшилтэт хэрэглэгчдийн хувьд хамгийн чухал ажиллагаануудын нэг юм. Энэ процесс нь цаг их зарцуулах боловч таны FreeBSD системд олон ашиг өгөх болно.Өргөн хүрээний тоног төхөөрөмжүүдийг дэмжих ёстой [.filename]#GENERIC# цөмтэй харьцуулахад өөрчлөн тохируулсан цөм нь зөвхөн таны PC-ний тоног төхөөрөмжүүдийг дэмждэг. Энэ нь дараах хэд хэдэн ашигтай:

* Хурдан ачаалах хугацаа. Цөм нь таны систем дэх тоног төхөөрөмжүүдийг зөвхөн шалгах учраас системийг ачаалах хугацаа мэдэгдэхүйц багасдаг.
* Санах ойн ашиглалт багасна. Өөрчлөн тохируулсан цөм нь ашиглагдахгүй байгаа боломжууд болон төхөөрөмжийн драйверуудыг орхигдуулснаар ихэнхдээ [.filename]#GENERIC# цөмөөс бага санах ойг ашигладаг. Цөмийн код нь бусад програмуудад санах ойг ашиглах боломжгүй болгож санах ойд үргэлж байрлаж байдаг учир энэ нь маш чухал юм. Ийм учраас өөрчилсөн цөм нь бага хэмжээний RAM-тай систем дээр ялангуяа ашигтай байдаг.
* Нэмэлт тоног төхөөрөмжийн дэмжлэг. Дууны картууд зэрэг [.filename]#GENERIC# цөмд байхгүй төхөөрөмжүүдийн дэмжлэгийг нэмэх боломжийг танд өөрчлөн тохируулсан цөм олгоно.

[[kernelconfig-devices]]
== Системийн тоног төхөөрөмж хайж олох нь

Цөмийн тохиргоо уруу орж үзээд алдахаасаа өмнө машиныхаа тоног төхөөрөмжийн бүртгэлийг олж авах нь ухаалаг явдал юм. FreeBSD нь үндсэн үйлдлийн систем биш тохиолдолд байгаа үйлдлийн системийн тохиргоог харан бүртгэлийн жагсаалтыг хялбархан үүсгэж болно. Жишээ нь Microsoft(R)-ийн Device Manager буюу төхөөрөмжийн менежер нь суулгагдсан төхөөрөмжүүдийн талаарх чухал мэдээллийг ихэвчлэн агуулдаг. Device Manager нь control panel буюу хяналтын самбарт байрладаг.

[NOTE]
====
Microsoft(R) Windows(R)-ийн зарим хувилбаруудад System гэсэн дүрс байдаг бөгөөд энэ нь Device Manager уруу хандах боломжтой дэлгэцийг харуулдаг.
====

Хэрэв өөр үйлдлийн систем машин дээр байхгүй бол администратор энэ мэдээллийг өөрөө олох хэрэгтэй болно. Нэг арга нь man:dmesg[8] хэрэгсэл болон man:man[1] тушаалуудыг ашиглах явдал юм. FreeBSD дээр ихэнх төхөөрөмжийн драйверууд нь дэмжигдсэн тоног төхөөрөмжүүдийн жагсаалтыг харуулсан гарын авлагын хуудастай байдаг бөгөөд ачаалах үед шалгаж байх явцад олдсон тоног төхөөрөмжийг харуулдаг. Жишээ нь дараах мөрүүд нь [.filename]#psm# драйвер хулгана олсон гэдгийг харуулж байна:

[.programlisting]
....
psm0: <PS/2 Mouse> irq 12 on atkbdc0
psm0: [GIANT-LOCKED]
psm0: [ITHREAD]
psm0: model Generic PS/2 mouse, device ID 0
....

Энэ драйвер нь өөрчлөн тохируулах цөмийн тохиргооны файлд орсон байх эсвэл man:loader.conf[5] ашиглан ачаалагдсан байх хэрэгтэй болно.

Зарим тохиолдолд `dmesg`-ээс гарч байгаа өгөгдөл нь ачаалалтын шалгалт, илрүүлэлтийн гаралтыг биш зөвхөн системийн мэдэгдлүүдийг үзүүлдэг. Эдгээр тохиолдлуудад [.filename]#/var/run/dmesg.boot# файлыг үзэн гаралтыг олж авч болно.

Тоног төхөөрөмжийг олох өөр нэг арга бол илүү дэлгэрэнгүй гаралтыг үзүүлдэг man:pciconf[8] хэрэгслийг ашиглах явдал юм. Жишээ нь:

[.programlisting]
....
ath0@pci0:3:0:0:        class=0x020000 card=0x058a1014 chip=0x1014168c rev=0x01 hdr=0x00
    vendor     = 'Atheros Communications Inc.'
    device     = 'AR5212 Atheros AR5212 802.11abg wireless'
    class      = network
    subclass   = ethernet
....

`pciconf -lv` ашиглан олж авсан энэ бяцхан мэдээлэл нь [.filename]#ath# драйвер утасгүй Ethernet төхөөрөмжийг олсныг харуулж байна. `man ath` тушаалыг ашиглавал man:ath[4] гарын авлагын хуудсыг харуулах болно.

Ашигтай мэлээлэл олж авахын тулд man:man[1] уруу `-k` тугийг өгөн ашиглаж болно. Дээрхээс ингэж өгч болно:

[source,shell]
....
# man -k Atheros
....

Тухайн нэг үг агуулсан гарын авлагын хуудсын жагсаалтыг олж авахын тулд:

[.programlisting]
....
ath(4)                   - Atheros IEEE 802.11 wireless network driver
ath_hal(4)               - Atheros Hardware Access Layer (HAL)
....

Тоног төхөөрөмжийн жагсаалтаар зэвсэглэснээр цөмийг өөрчлөн тохируулж бүтээх процесс нь арай хялбар болно.

[[kernelconfig-modules]]
== Цөмийн драйверууд, дэд системүүд, болон модулиуд

Өөрчлөн тохируулсан цөмийг бүтээхийн өмнө тэгж хийх шалтгаанаа бодож үзэх хэрэгтэй. Хэрэв тусгайлсан тоног төхөөрөмжийн дэмжлэг хэрэгтэй байгаа бол тэр нь модуль хэлбэрээр аль хэдийн байж байж болох юм.

Цөмийн модулиуд нь [.filename]#/boot/kernel# санд байх бөгөөд ажиллаж байгаа цөмд man:kldload[8]-г ашиглан динамикаар дуудаж болдог. Цөмийн бүх драйверуудын ихэнх нь тусгай модуль болон гарын авлагын хуудастай байдаг. Жишээ нь сүүлийн хэсэг [.filename]#ath# гэсэн утасгүй Ethernet драйверийн талаар дурдсан байдаг. Энэ төхөөрөмж нь өөрийн гарын авлагадаа дараах мэдээллийг агуулсан байдаг:

[.programlisting]
....
Alternatively, to load the driver as a module at boot time, place the
     following line in man:loader.conf[5]:

           if_ath_load="YES"
....

Зааврын дагуу [.filename]#/boot/loader.conf# файлд `if_ath_load="YES"` мөрийг нэмснээр энэ модулийг ачаалах үед динамикаар дуудах боломжийг идэвхжүүлнэ.

Гэхдээ зарим тохиолдолд холбоотой модуль байдаггүй. Энэ нь зарим нэг дэд системүүд болон маш чухал драйверуудын хувьд бодит бөгөөд жишээ нь fast file system (FFS) буюу түргэн файлын систем нь цөмд заавал байх шаардлагатай тохируулга юм. Мөн сүлжээний дэмжлэгийн (INET) хувьд ийм байна. Харамсалтай нь драйвер шаардлагатай эсэхийг хэлэх цорын ганц зам нь модулийг нь шалгах явдал юм.

[WARNING]
====

Төхөөрөмж эсвэл тохируулгын дэмжлэгийг хялбараар устгаж эвдэрхий цөмтэй үлдэж болох юм. Жишээ нь man:ata[4] драйверийг цөмийн тохиргооны файлаас устгачих юм бол ATA дискийн хөтөчүүд нь [.filename]#loader.conf#-д модулийг нэмэлгүйгээр эхлэн ачаалахгүй байж болох юм. Хэрэв эргэлзэж байгаа бол модулийг шалгаад дараа нь ердөө л дэмжлэгийг цөмд үлдээх хэрэгтэй.
====

[[kernelconfig-building]]
== Өөрчлөн тохируулсан цөмийг бүтээх ба суулгах нь

[NOTE]
====
Цөмийг бүтээхэд FreeBSD-ийн гүйцэд эх мод байх шаардлагатай.
====

Эхлээд цөм бүтээх сангаар аялая. Дурдсан бүх сангуудаас гол нь [.filename]#/usr/src/sys# сан байх бөгөөд [.filename]#/sys# гэсэн замаар бас хандах боломжтой. Энд байгаа хэд хэдэн дэд сангууд цөмийн өөр өөр хэсгүүдийг илэрхийлэх бөгөөд бидний зорилгод хамгийн чухал нь таны өөрчлөн тохируулах цөмийн тохиргоог засварлах [.filename]#arch/conf# сангууд болон таны цөм бүтээгдэх шатны талбар [.filename]#compile# сан юм. _arch_ нь [.filename]#i386#, [.filename]#amd64#, [.filename]#ia64#, [.filename]#powerpc#, [.filename]#sparc64#, эсвэл [.filename]#pc98# (Японд их ашиглагддаг PC тоног төхөөрөмжийн өөр нэг хөгжүүлэлтийн салбар) зэргийг төлөөлдөг. Тухайн архитектурын сан доторх код зөвхөн тэр архитектуртай холбоотой; бусад кодын хэсэг нь FreeBSD порт хийгдэх боломж бүхий бүх тавцангуудын хувьд адил машинаас чөлөөт код байна. Сангийн бүтцийн логик зохион байгуулалт нь дэмжлэг хийгдсэн төхөөрөмж, файлын систем болон өөрийн дэд санд байгаа тохируулга бүртэй хамт байгааг харж болно.

Энэ бүлэгт байгаа жишээ таныг i386 архитектур ашиглаж байгаа гэж авч үзнэ. Хэрэв таны систем өөр архитектур бол замуудын нэрсдээ тохирох өөрчлөлтүүдийг хийгээрэй.

[NOTE]
====
Хэрэв [.filename]#/usr/src/# сан таны систем дээр байхгүй (эсвэл хоосон бол) эх суугаагүй байна. Бүрэн гүйцэд эх модыг суулгах хялбар аргаар хийхийн тулд crossref:cutting-edge[synching,Өөрийн эхийг хамгийн сүүлийн хэлбэрт аваачих нь] хэсэгт тайлбарласны дагуу man:csup[1]-г ашиглах явдал юм. Та бас [.filename]#/usr/src/sys/# рүү заасан симболын холбоос үүсгэж өгөх ёстой:

[source,shell]
....
# ln -s /usr/src/sys /sys
....

====

Дараа нь [.filename]#arch/conf# сан уруу шилжээд [.filename]#GENERIC# тохиргооны файлыг та өөрийн цөмдөө өгөх нэр уруу хуул. Жишээ нь:

[source,shell]
....
# cd /usr/src/sys/i386/conf
# cp GENERIC MYKERNEL
....

Уламжлалаар бол энэ нэр нь бүгд том үсгээр байдаг, хэрэв та олон өөр өөр төрлийн FreeBSD машинуудын ажиллагааг хянадаг бол машинуудынхаа нэрээр нэрлэх нь зохимжтой юм. Бид энэ жишээнийхээ зорилгоор [.filename]#MYKERNEL# гэж нэрлэе.

[TIP]
====

Өөрийн цөмийн тохиргооны файлаа шууд [.filename]#/usr/src# доор хадгалах нь буруу байж болох юм. Хэрэв та асуудлуудтай тулгарч байгаа бол [.filename]#/usr/src# -ийг устгаад л дахиж эхлэх нь зоригтой алхам байж болох юм. Гэхдээ үүнийг хийгээд хэдэн секундын дараа л та өөрийн өөрчлөн тохируулсан цөмийн тохиргооны файлаа устгасан болохоо мэдэх болно. Мөн [.filename]#GENERIC# файлыг шууд засварлах хэрэггүй бөгөөд дараагийн удаа crossref:cutting-edge[updating-upgrading,өөрийн эх модыг шинэчлэх] үйлдлийг хийхэд дарагдан хуулагдаж таны цөмийн өөрчлөлт алдагдаж магадгүй.

Та цөмийн тохиргооны файлаа өөр газар хадгалж дараа нь [.filename]#i386# сан дахь файл уруу тэмдэгт холбоос үүсгэж болно.

Жишээ нь:

[source,shell]
....
# cd /usr/src/sys/i386/conf
# mkdir /root/kernels
# cp GENERIC /root/kernels/MYKERNEL
# ln -s /root/kernels/MYKERNEL
....

====

Одоо [.filename]#MYKERNEL#-ийг өөрийн дуртай текст засварлагч дээр засаарай. Хэрэв та дөнгөж эхэлж байгаа бол байгаа цорын ганц засварлагч нь vi байж болох бөгөөд түүнийг энд тайлбарлахад хэтэрхий төвөгтэй боловч crossref:bibliography[bibliography,номын жагсаалтад] байгаа өөр олон номнуудад бичсэн байгаа. Гэхдээ FreeBSD нь ee гэдэг хялбар засварлагчийг санал болгодог бөгөөд хэрэв та эхлэн сурагч бол энэ нь таны сонгох засварлагч байх болно. Өөрийн тохиргоог тусгах эсвэл [.filename]#GENERIC# файлаас өөрийн хийсэн өөрчлөлтүүдээс ялгахын тулд дээд хэсэгт байгаа мөрүүдийг чөлөөтэй өөрчлөөрэй.

Хэрэв та SunOS(TM) эсвэл өөр BSD үйлдлийн системийн доор цөм бүтээж байсан бол энэ файлын ихэнх хэсэг нь маш танил байх болно. Хэрэв та DOS зэрэг өөр үйлдлийн системээс ирж байгаа бол нөгөө талаасаа [.filename]#GENERIC# тохиргооны файл төвөгтэй юм шиг санагдаж болох бөгөөд <<kernelconfig-config,Тохиргооны файл>> хэсгийн тайлбаруудыг удаан нухацтай дагаарай.

[NOTE]
====
Хэрэв та FreeBSD төслийн хамгийн сүүлийн эхээр crossref:cutting-edge[updating-upgrading,өөрийн эх модоо сүүлийн үеийн хэлбэрт авчирсан] бол шинэчлэх шатуудаа хэрэгжүүлж эхлэхээсээ өмнө [.filename]#/usr/src/UPDATING# файлыг үргэлж шалгаж байх нь чухал юм. Энэ файл нь шинэчилсэн эх код доторх тусгай анхаарал шаардлагатай чухал асуудлууд эсвэл хэсгүүдийн талаар тайлбарладаг. [.filename]#/usr/src/UPDATING# нь үргэлж таны FreeBSD хувилбартай таардаг бөгөөд энэ гарын авлагаас илүү шинэ мэдээлэлтэй, сүүлийн үеийнх байдаг.
====

Та цөмд зориулан эх кодоо хөрвүүлэх шаардлагатай.

[.procedure]
====
*Procedure: Цөмийг бүтээх нь*
[NOTE]
======
Цөмийг бүтээхэд FreeBSD-ийн гүйцэд эх мод байх шаардлагатай.
======

. [.filename]#/usr/src# сан уруу орно:
+
[source,shell]
....
# cd /usr/src
....
+
. Цөмийг хөрвүүлнэ:
+
[source,shell]
....
# make buildkernel KERNCONF=MYKERNEL
....
+
. Шинэ цөмийг суулгана:
+
[source,shell]
....
# make installkernel KERNCONF=MYKERNEL
....
====

[TIP]
====

Анхдагчаар өөрчлөн тохируулсан цөмийг бүтээхэд _бүх_ цөмийн модулиуд бас бүтээгдэнэ. Хэрэв та цөмийг хурдан шинэчлэхийг эсвэл зөвхөн өөрчлөн тохируулсан модулиудыг бүтээхийг хүсэж байгаа бол цөмийг бүтээж эхлэхээсээ өмнө [.filename]#/etc/make.conf# файлыг засварлах хэрэгтэй:

[.programlisting]
....
MODULES_OVERRIDE = linux acpi sound/sound sound/driver/ds1 ntfs
....

Энэ хувьсагч нь бүгдийг биш бүтээх модулиудын жагсаалтыг тодорхойлдог.

[.programlisting]
....
WITHOUT_MODULES = linux acpi sound ntfs
....

Энэ хувьсагч нь бүтээх процессод оруулахгүй байх дээд түвшний модулиудын жагсаалтыг тодорхойлдог. Цөмийг бүтээх процессийн явцад танд хэрэг болохуйц бусад хувьсагчуудын тухайд man:make.conf[5] гарын авлагын хуудсанд хандаж үзнэ үү.
====

Шинэ цөм [.filename]#/boot/kernel# санд [.filename]#/boot/kernel/kernel# нэрээр хуулагдах бөгөөд хуучин цөм нь [.filename]#/boot/kernel.old/kernel# уруу хуулагдана. Одоо системийг унтраагаад шинэ цөмийг ашиглан дахин ачаал. Хэрэв ямар нэг юм болохгүй болбол энэ бүлгийн төгсгөлд байгаа <<kernelconfig-trouble,алдааг олж засварлах>> заавар танд хэрэгтэй байж болох юм. Таны шинэ цөм <<kernelconfig-noboot,ачаалахгүй>> тохиолдолд хэрхэн сэргээх талаар тайлбарласан хэсгийг заавал уншаарай.

[NOTE]
====
Ачаалах man:loader[8] ба тохиргоо зэрэг ачаалах процесстой холбоотой бусад файлууд [.filename]#/boot# -д хадгалагдана. Гуравдагч этгээдийн эсвэл өөрчлөн тохируулсан модулиуд [.filename]#/boot/kernel#-д байрлах бөгөөд гэхдээ модулиудыг хөрвүүлсэн цөмийн адил сүүлийн үеийн хэлбэрт байлгах нь маш чухал гэдгийг хэрэглэгчид мэдэх шаардлагатай. Хөрвүүлсэн цөмтэй хамт ажиллуулахааргүй модулиуд нь тогтворгүй байдал эсвэл буруу ажиллагаанд хүргэж болзошгүй юм.
====

[[kernelconfig-config]]
== Тохиргооны файл

Тохиргооны файлын ерөнхий хэлбэр нь маш энгийн билээ. Мөр болгон түлхүүр үг бөгөөд нэг болон хэд хэдэн нэмэлт өгөгдлөөс тогтоно. Амархан болгох үүднээс ихэнх мөрүүд нь зөвхөн нэг нэмэлт өгөгдөлтэй байна. `#` тэмдэгтийн ард байгаа зүйлс тайлбар бөгөөд хаягдаж тооцогдоно. Дараах хэсэгт түлхүүр үг болгоныг [.filename]##GENERIC## -д жагсаасан дарааллаар нь тайлбарлаж байна. [[kernelconfig-options]] Архитектураас хамааралтай тохируулгууд болон төхөөрөмжийн ядраамаар жагсаалтын талаар [.filename]##GENERIC## файл байгаа сангийн нэгэн адил санд байрлах [.filename]##NOTES## файлаас үзнэ үү. Архитектураас хамааралгүй тохируулгуудын талаар [.filename]##/usr/src/sys/conf/NOTES## файлаас үзнэ үү. 

Тохиргооны файлуудад ашиглах боломжтой шинэ `include` тохируулга бий болсон. Энэ нь өөр нэг тохиргооны файлыг тухайн тохиргооны файлд оруулах боломжийг бүрдүүлэх бөгөөд ингэснээр тухайн файлын хувьд харьцангуй бага өөрчлөлтүүдийг арчлах боломжтой болгодог. Жишээ нь хэрэв танд цөөн тооны нэмэлт тохируулга эсвэл драйверуудтай [.filename]#GENERIC# цөм шаардлагатай бол энэ нь GENERIC-ийн хувьд цөөн өөрчлөлтийг арчлах боломжийг танд олгоно:

[.programlisting]
....
include GENERIC
ident MYKERNEL

options         IPFIREWALL
options         DUMMYNET
options         IPFIREWALL_DEFAULT_TO_ACCEPT
options         IPDIVERT
....

Энэ загвар нь тохиргооны файлуудыг эхнээс нь бичих уламжлалт аргын хажууд хамаагүй илүү боломжийг олгодог гэдэгтэй ихэнх админинстраторууд санал нэг байдаг: локал тохиргооны файл нь зөвхөн [.filename]#GENERIC# цөмөөс ялгаатай локал өөрчлөлтүүдийг харуулах бөгөөд шинэчлэлт хийгдэхэд [.filename]#GENERIC#-д нэмэгдсэн шинэ боломжууд нь `nooptions` эсвэл `nodevice` тохируулгуудаар тусгайлан заагдаагүй л бол локал цөмд нэмэгддэг. Энэ бүлгийн үлдсэн хэсэг ердийн тохиргооны файлын агуулга ба төрөл бүрийн тохируулгын үүрэг болон ажиллах төхөөрөмжүүдийг тайлбарлах болно.

[NOTE]
====
Тест хийх зорилгоор ихэнхдээ бүх байгаа тохируулгууд агуулсан файлыг бүтээхдээ дараах тушаалыг `root` эрхээр ажиллуулна:

[source,shell]
....
# cd /usr/src/sys/i386/conf && make LINT
....

====

Дараах жишээ нь шаардлагатай бол тодотгох зорилгоор оруулсан төрөл бүрийн нэмэлт тайлбар бүхий [.filename]#GENERIC# цөмийн тохиргооны файл юм. Энэ жишээ нь таны [.filename]#/usr/src/sys/i386/conf/GENERIC# дахь хуулбартай их ойрхон таарах ёстой.

[.programlisting]
....
machine		i386
....

Энэ нь машины архитектур юм. Энэ нь `amd64`, `i386`, `ia64`, `pc98`, `powerpc`, эсвэл `sparc64` -ийн аль нэг байх ёстой.

[.programlisting]
....
cpu          I486_CPU
cpu          I586_CPU
cpu          I686_CPU
....

Дараах тохируулга нь таны системд байгаа CPU-ийн төрлийг заана. Та олон CPU мөртэй байж болох боловч (хэрэв, жишээ нь та `I586_CPU` эсвэл `I686_CPU` хоёрын алийг ашиглахаа сайн мэдэхгүй байгаа бол) өөрчлөн тохируулсан цөмийн хувьд зөвхөн байгаа CPU-гээ заах нь зүйтэй юм. Хэрэв та өөрийн CPU-ийн төрлийг сайн мэдэхгүй байгаа бол [.filename]#/var/run/dmesg.boot# файлыг шалгаж ачаалах үеийн мэдээллүүдийг үзэж болно.

[.programlisting]
....
ident          GENERIC
....

Энэ нь цөмийг тодорхойлох нэр юм. Хэрэв та түрүүний жишээнүүдэд дурдсан заавруудыг дагасан бол өөрийн цөмийг нэрлэсэн шигээ өөрөөр хэлбэл `MYKERNEL` хэмээн өөрчлөх хэрэгтэй. `ident` мөрд оруулсан утга нь таныг цөмийг ачаалах үед хэвлэгдэн гарах учир та өөрийн ердийн цөмөөс шинэ цөмөө тусад нь хадгалахыг хүсвэл шинэ цөмдөө өөр нэр өгөх нь ашигтай байдаг (өөрөөр хэлбэл та туршилтын цөм бүтээхийг хүсвэл).

[.programlisting]
....
#To statically compile in device wiring instead of /boot/device.hints
#hints          "GENERIC.hints"         # Default places to look for devices.
....

man:device.hints[5] нь төхөөрөмжүүдийн драйверуудын тохируулгуудыг хийхэд ашиглагдана. man:loader[8]-ийн ачаалах үе шалгах анхдагч байрлал нь [.filename]#/boot/device.hints# байна. `hints` тохируулгыг ашиглаад та эдгээр зөвлөгөөнүүдийг статикаар хөрвүүлж болно. Тэгэхэд [.filename]#/boot# дотор [.filename]#device.hints# файл үүсгэх шаардлагагүй болох юм.

[.programlisting]
....
makeoptions     DEBUG=-g          # Build kernel with gdb(1) debug symbols
....

FreeBSD -г бүтээх ердийн процесс нь дибаг (debug) хийх мэдээллийг агуулдаг бөгөөд цөмийг бүтээх үед `-g` тохируулгыг man:gcc[1] уруу өгснөөр дибаг (debug) хийх мэдээлэл идэвхждэг.

[.programlisting]
....
options          SCHED_ULE         # ULE scheduler
....

FreeBSD -ийн анхдагч системийн төлөвлөгч/хуваарилагч. Үүнийг үлдээ.

[.programlisting]
....
options          PREEMPTION         # Enable kernel thread preemption
....

Цөм дэх урсгалуудыг (thread) өөр илүү өндөр давуу эрхтэй урсгалуудаар солих боломжийг бүрдүүлнэ. Энэ нь харилцан ажиллах болон таслах урсгалуудыг (interrupt threads) хүлээлгэлгүйгээр аль болох түргэн ажиллуулахад тусалдаг.

[.programlisting]
....
options          INET              # InterNETworking
....

Сүлжээний дэмжлэг. Сүлжээнд холбогдохгүй ч гэсэн энэ тохиргоог үлдээгээрэй. Ихэнх програмууд эргэн холбогдох (loopback буюу өөрөөр хэлбэл өөрийн PC дотор сүлжээний холболт хийх) сүлжээг шаарддаг учир энэ нь үндсэндээ зайлшгүй шаардлагатай.

[.programlisting]
....
options          INET6             # IPv6 communications protocols
....

Энэ нь IPv6 холбооны протоколуудыг идэвхжүүлдэг.

[.programlisting]
....
options          FFS               # Berkeley Fast Filesystem
....

Энэ нь энгийн хатуу дискний файлын систем. Энэ тохируулгыг хатуу дискнээс ачаалах бол үлдээгээрэй.

[.programlisting]
....
options          SOFTUPDATES       # Enable FFS Soft Updates support
....

Энэ тохируулга нь Зөөлөн Шинэчлэлүүдийг цөм идэвхжүүлдэг бөгөөд диск уруу бичих хандалтыг хурдасгахад тусалдаг. Хэдийгээр энэ боломжийг цөмөөр хангадаг боловч диск дээр идэвхжүүлэх шаардлагатай. Таны системийн дискнүүд дээр Зөөлөн Шинэчлэлүүд идэвхжсэн эсэхийг man:mount[8] -ийн үр дүнгээр хянаарай. Хэрэв та `soft-updates` тохируулгыг олж харахгүй байгаа бол man:tunefs[8] (одоо байгаа системийн хувьд) эсвэл man:newfs[8] (шинэ файлын системийн хувьд) ашиглан идэвхжүүлэх хэрэгтэй.

[.programlisting]
....
options          UFS_ACL           # Support for access control lists
....

Энэ тохируулга нь хандалтыг хянах жагсаалтын дэмжлэгийг цөмд идэвхжүүлдэг. Энэ нь өргөтгөсөн шинж чанарууд ба UFS2-ийг ашиглахад тулгуурлаж байгаа бөгөөд энэ боломжийн талаар crossref:security[fs-acl,Файлын системийн хандалт хянах жагсаалтууд(ACL-үүд)] дээр дэлгэрэнгүй тайлбарласан байдаг. ACL-үүд эхэндээ идэвхжүүлсэн байдаг бөгөөд хэрэв урьд нь файлын систем дээр ашиглагдаж байсан бол хандалтыг хянах жагсаалтыг устгаж файлуудыг хамгаалсан аргыг урьдчилан тааж болшгүй байдалт хүргэдэг учир энэ тохируулгыг хааж болохгүй.

[.programlisting]
....
options          UFS_DIRHASH       # Improve performance on big directories
....

Энэ тохируулга нь нэмэгдэл санах ойг зарлагадаж том сангуудад хийх дискний үйлдлүүдийг хурдасгах ажиллагааг оруулдаг. Та том сервер эсвэл харилцан ажиллах ажлын станцад зориулж энэ тохируулгыг ерөнхийдөө хадгалах хэрэгтэй бөгөөд хэрэв та FreeBSD-г санах ой чухал жижиг систем ба дискний хандалтын хурдны ач холбогдол багатай галт хана мэтийн систем дээр ашиглаж байгаа бол устгаарай.

[.programlisting]
....
options          MD_ROOT           # MD is a potential root device
....

Энэ тохируулга нь санах ой дээр тулгуурласан, root төхөөрөмж болж ашиглагдах виртуал дискний дэмжлэгийг идэвхжүүлдэг.

[.programlisting]
....
options          NFSCLIENT         # Network Filesystem Client
options          NFSSERVER         # Network Filesystem Server
options          NFS_ROOT          # NFS usable as /, requires NFSCLIENT
....

Сүлжээний файлын систем. Хэрэв та TCP/IP-аар UNIX(R) файлын серверээс хуваалтыг холболт хийх төлөвлөгөөгүй бол эдгээрийг тайлбар болгон хааж болно.

[.programlisting]
....
options          MSDOSFS           # MSDOS Filesystem
....

MS-DOS(R) файлын систем. Хэрэв та DOS хэлбэржүүлсэн хатуу дискний хуваалтыг ачаалах үед холболт хийх төлөвлөгөөгүй бол үүнийг айлгүйгээр тайлбар болгон хааж болно. Энэ нь дээр тайлбарласны дагуу эхний удаа DOS хуваалтыг холболт хийхэд автоматаар ачаалагдах болно. Мөн маш сайн package:emulators/mtools[] програм хангамж нь холболт болон салгалт хийлгүйгээр DOS уян дискнүүдэд хандах боломжийг бүрдүүлдэг (энэ нь `MSDOSFS`-ийг огт шаарддаггүй).

[.programlisting]
....
options          CD9660            # ISO 9660 Filesystem
....

CDROM-уудад зориулсан ISO 9660 файлын систем. Хэрэв та CDROM хөтлөгч байхгүй эсвэл CD-ээс өгөгдлийг хааяа холболт хийдэг бол (таныг анх өгөгдлийн CD-г холболт хийх үед динамикаар ачаалагддаг учраас) тайлбар болгож хааж болно. Дууны CD-үүд энэ файлын системийг хэрэглэдэггүй.

[.programlisting]
....
options          PROCFS            # Process filesystem (requires PSEUDOFS)
....

Процессийн файлын систем. Энэ нь man:ps[1] шиг програмууд процессуудын ажиллаж байгаа талаар дэлгэрэнгүй мэдээлэл танд өгөх боломжийг бүрдүүлдэг [.filename]#/proc# дээр холболт хийгдсэн "хуурамч" файлын систем юм. Ихэнх дибаг хийх ба монитор хийх хэрэгслүүд `PROCFS` -гүйгээр ажиллахаар хийгдсэн байдаг: суулгалтууд нь энэ файлын системийг анхдагчаар холболт хийхгүй, тиймээс `PROCFS`-ийг ашиглах нь ихэнх тохиолдолд шаардлагагүй байдаг.

[.programlisting]
....
options          PSEUDOFS          # Pseudo-filesystem framework
....

Цөмүүд `PROCFS` ашиглаж байгаа бол бас `PSEUDOFS` дэмжлэгийг оруулах шаардлагатай.

[.programlisting]
....
options          GEOM_PART_GPT          # GUID Partition Tables.
....

http://en.wikipedia.org/wiki/GUID_Partition_Table[GUID Хуваалтын Хүснэгтүүдийн] дэмжлэгийг нэмдэг. GPT нь диск бүрийн хувьд их олон тооны хуваалт байх боломжийг бүрдүүлдэг бөгөөд стандарт тохиргоогоор 128 байдаг.

[.programlisting]
....
options          COMPAT_43         # Compatible with BSD 4.3 [KEEP THIS!]
....

4.3BSD-тэй нийцтэй байх. Үүнийг энэ чигээр орхи; хэрэв үүнийг тайлбар болгож хаавал зарим програмууд сонин ажиллаж эхэлнэ.

[.programlisting]
....
options          COMPAT_FREEBSD4   # Compatible with FreeBSD4
....

Энэ тохируулга нь FreeBSD-ийн хуучин хувилбарууд дээр хөрвүүлэгдсэн, хуучин системийн дуудлагуудын интерфэйсүүдийг ашигладаг програмуудыг дэмжихэд шаардлагатай. Энэ тохируулгыг хуучин програмууд ашиглаж болзошгүй бүх i386(TM) системүүд дээр ашиглахыг зөвлөж байна; ia64 ба sparc64 зэрэг 5.X дээр зөвхөн дэмжлэг хийгдсэн тавцангууд энэ тохируулгыг шаарддаггүй.

[.programlisting]
....
options          COMPAT_FREEBSD5   # Compatible with FreeBSD5
....

Энэ тохируулга нь FreeBSD 5.X системийн дуудлагын интерфэйсүүдийг ашигладаг, FreeBSD 5.X хувилбарууд дээр эмхэтгэгдсэн програмуудыг дэмжихэд шаардлагатай.

[.programlisting]
....
options          COMPAT_FREEBSD6   # Compatible with FreeBSD6
....

Энэ тохируулга нь FreeBSD 6.X системийн дуудлагын интерфэйсүүдийг ашигладаг, FreeBSD 6.X хувилбарууд дээр эмхэтгэгдсэн програмуудыг дэмжихэд шаардлагатай.

[.programlisting]
....
options          COMPAT_FREEBSD7   # Compatible with FreeBSD7
....

Энэ тохируулга нь FreeBSD 8 болон түүнээс хойшхи хувилбарууд дээр FreeBSD 7.X системийн дуудлагын интерфэйсүүдийг ашигладаг, FreeBSD 7.X хувилбарууд дээр эмхэтгэгдсэн програмуудыг дэмжихэд шаардлагатай.

[.programlisting]
....
options          SCSI_DELAY=5000  # Delay (in ms) before probing SCSI
....

Энэ нь цөмийг SCSI төхөөрөмжүүдийг шалгаж эхлэхээс өмнө 5 секунд түр зогсооно. Хэрэв та зөвхөн IDE хатуу дисктэй бол үүнийг орхиж болно, эсрэг тохиолдолд ачаалалтыг хурдасгахын тулд энэ тоог багасгаж болно. Мэдээж та үүнийг хийгээд FreeBSD таны SCSI төхөөрөмжүүдийг танихгүй бол та дахин үүнийг ихэсгэж болно.

[.programlisting]
....
options          KTRACE            # ktrace(1) support
....

Энэ нь дибаг хийхэд ашигтай, цөмийн процессийг дагах боломжийг идэвхжүүлдэг.

[.programlisting]
....
options          SYSVSHM           # SYSV-style shared memory
....

Энэ тохируулга нь System V хуваалцсан санах ойн боломж бүрдүүлдэг. Энэ боломжийн өргөн хэрэглээнүүдийн нэг нь X дэх XSHM өргөтгөл бөгөөд үүнийг график их шаарддаг олон програмууд автоматаар илүү хурд авахын тулд ашигладаг. Хэрэв та X ашигладаг бол үүнийг заавал оруулахыг хүсэх болно.

[.programlisting]
....
options          SYSVMSG           # SYSV-style message queues
....

System V мэдээллүүдийн дэмжлэг. Энэ тохируулга нь зөвхөн хэдхэн зуун байтыг цөмд нэмдэг.

[.programlisting]
....
options          SYSVSEM           # SYSV-style semaphores
....

System V семафорын дэмжлэг. Нэг их өргөн ашиглагддаггүй боловч хэдхэн зуун байтыг цөмд нэмдэг.

[NOTE]
====
man:ipcs[1] тушаалын `-p` тохируулга нь эдгээр System V боломж бүрийг ашигласан процессуудыг жагсаадаг.
====

[.programlisting]
....
options 	     _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
....

Жинхэнэ-хугацааны (real-time) өргөтгөлүүд 1993 оны POSIX(R)-д нэмэгдсэн.Портуудын цуглуулгаас зарим програмууд эдгээрийг ашигладаг (StarOffice(TM)).

[.programlisting]
....
options          KBD_INSTALL_CDEV  # install a CDEV entry in /dev
....

Энэ тохируулга нь гарын төхөөрөмжийн цэгийг [.filename]#/dev#-д үүсгэх боломжийг олгоход шаардлагатай байдаг.

[.programlisting]
....
options          ADAPTIVE_GIANT    # Giant mutex is adaptive.
....

Giant гэдэг нь харилцан нэгийгээ оруулахгүй байх зарчмын (унтах мутекс) нэр бөгөөд энэ нь цөмийн их эх үүсвэрүүдийг хамгаалдаг. Өнөөдөр энэ нь үйл ажиллагааны саатаж байгаа хүлээн авах боломжгүй хэсэг бөгөөд үүнийг эх үүсвэр бүрийг хамгаалах цоожуудаар идэвхтэйгээр сольж байгаа билээ. `ADAPTIVE_GIANT` тохируулга нь хэсэг бүлэг мутексуудад Giant-ийг адаптиваар эргэхээр оруулдаг. Энэ нь урсгал (thread) Giant мутексийг цоожлохыг хүсэж байх үед, гэхдээ энэ нь өөр CPU дээр урсгалаар цоожлогдсон байна, эхний урсгал цоож сулрахыг хүлээн ажилласаар байна. Хэвийн үед урсгал унтаа байдалд эргэж орох бөгөөд өөрийн дараагийн ажиллах боломжийг хүлээнэ. Та итгэлгүй байгаа бол үүнийг орхино уу.

[NOTE]
====
FreeBSD 8.0-RELEASE болон түүнээс хожуу үеийн хувилбаруудад бүх мутексууд нь `NO_ADAPTIVE_MUTEXES` тохируулгатайгаар бүтээгдэж зохицох чадваргүй гэж тохируулагдаагүй л бол анхдагчаар адаптив буюу зохицох чадвартай байдаг. Иймээс одоо Giant нь зохицох чадвартай бөгөөд `ADAPTIVE_GIANT` тохируулга нь цөмийн тохиргооноос хасагдсан юм.
====

[.programlisting]
....
device          apic               # I/O APIC
....

apic төхөөрөмж нь I/O APIC-ийг тасалдал хүргэхэд ашиглах боломжийг нээдэг. apic төхөөрөмж нь UP болон SMP цөмүүдэд хоёуланд нь ашиглагдаж болох бөгөөд гэхдээ SMP цөмд зайлшгүй шаардлагатай. `options SMP` мөрийг нэмж олон процессорын дэмжлэгийг оруулна уу.

[NOTE]
====
apic төхөөрөмж нь зөвхөн i386 архитектур дээр байдаг бөгөөд энэ тохиргооны мөрийг бусад архитектурууд дээр ашиглах ёсгүй юм.
====

[.programlisting]
....
device          eisa
....

Хэрэв та EISA эх хавтантай бол үүнийг оруулаарай. Энэ нь EISA шугамын бүх төхөөрөмжүүдийн хувьд автомат илрүүлэлт болон тохиргооны дэмжлэгийг нээж өгдөг.

[.programlisting]
....
device          pci
....

Хэрэв та PCI эх хавтантай бол үүнийг оруулаарай. Энэ нь PCI картуудыг автомат илрүүлэлт болон PCI-аас ISA шугам уруу гарах дэмжлэгийг нээж өгдөг.

[.programlisting]
....
# Floppy drives
device          fdc
....

Энэ нь уян диск хөтлөгчийн хянагч.

[.programlisting]
....
# ATA and ATAPI devices
device          ata
....

Энэ драйвер бүх ATA болон ATAPI төхөөрөмжүүдийг дэмждэг. Орчин үеийн машинуудын бүх PCI ATA/ATAPI төхөөрөмжүүдийг илрүүлэхийн тулд зөвхөн нэг `device ata` мөр таны цөмд хэрэгтэй.

[.programlisting]
....
device          atadisk                 # ATA disk drives
....

Энэ нь `device ata` мөртэй цуг ATA дискний төхөөрөмжүүдэд хэрэгтэй.

[.programlisting]
....
device          ataraid                 # ATA RAID drives
....

Энэ нь `device ata` мөртэй цуг ATA RAID хөтлөгчүүдэд хэрэгтэй.

[.programlisting]
....

device          atapicd                 # ATAPI CDROM drives
....

Энэ нь `device ata` мөртэй цуг ATA CDROM хөтлөгчүүдэд хэрэгтэй.

[.programlisting]
....
device          atapifd                 # ATAPI floppy drives
....

Энэ нь `device ata` мөртэй цуг ATA уян дискний хөтлөгчүүдэд хэрэгтэй.

[.programlisting]
....
device          atapist                 # ATAPI tape drives
....

Энэ нь `device ata` мөртэй цуг ATA соронзон хальсны хөтлөгчүүдэд хэрэгтэй.

[.programlisting]
....
options         ATA_STATIC_ID           # Static device numbering
....

Энэ нь хянагчийн дугаарыг статик болгох бөгөөд энэнгүйгээр төхөөрөмжийн дугаарууд динамикаар өгөгддөг.

[.programlisting]
....
# SCSI Controllers
device          ahb        # EISA AHA1742 family
device          ahc        # AHA2940 and onboard AIC7xxx devices
options         AHC_REG_PRETTY_PRINT    # Print register bitfields in debug
		    # output.  Adds ~128k to driver.
device          ahd        # AHA39320/29320 and onboard AIC79xx devices
options         AHD_REG_PRETTY_PRINT    # Print register bitfields in debug
		    # output.  Adds ~215k to driver.
device          amd        # AMD 53C974 (Teckram DC-390(T))
device          isp        # Qlogic family
#device         ispfw      # Firmware for QLogic HBAs- normally a module
device          mpt        # LSI-Logic MPT-Fusion
#device         ncr        # NCR/Symbios Logic
device          sym        # NCR/Symbios Logic (newer chipsets + those of `ncr')
device          trm        # Tekram DC395U/UW/F DC315U adapters

device          adv        # Advansys SCSI adapters
device          adw        # Advansys wide SCSI adapters
device          aha        # Adaptec 154x SCSI adapters
device          aic        # Adaptec 15[012]x SCSI adapters, AIC-6[23]60.
device          bt         # Buslogic/Mylex MultiMaster SCSI adapters

device          ncv        # NCR 53C500
device          nsp        # Workbit Ninja SCSI-3
device          stg        # TMC 18C30/18C50
....

SCSI хянагчууд. Таны системд байхгүй байгааг тайлбар болгон хаана уу. Хэрэв та зөвхөн IDE системтэй бол эдгээр мөрүүдийг бүгдийг устгаж болно. `*_REG_PRETTY_PRINT` мөрүүд нь өөр өөрийнхөө тохирох драйверуудад зориулагдсан дибаг хийх тохируулгууд юм.

[.programlisting]
....
# SCSI peripherals
device          scbus      # SCSI bus (required for SCSI)
device          ch         # SCSI media changers
device          da         # Direct Access (disks)
device          sa         # Sequential Access (tape etc)
device          cd         # CD
device          pass       # Passthrough device (direct SCSI access)
device          ses        # SCSI Environmental Services (and SAF-TE)
....

SCSI захын төхөөрөмжүүд. Дахин хэлэхэд таны системд байхгүй байгааг тайлбар болгон хаагаарай эсвэл та зөвхөн IDE тоног төхөөрөмжтэй бол эдгээр мөрүүдийг бүгдийг устгаж болно.

[NOTE]
====
USB man:umass[4] драйвер болон бусад цөөн хэдэн драйверууд жинхэнэ SCSI төхөөрөмжүүд биш боловч SCSI дэд системийг ашигладаг. Тийм болохоор хэрэв цөмийн тохиргоонд тийм драйверууд орсон байвал SCSI дэмжлэгийг устгаагүй эсэхээ шалгаарай.
====

[.programlisting]
....
# RAID controllers interfaced to the SCSI subsystem
device          amr        # AMI MegaRAID
device          arcmsr     # Areca SATA II RAID
device          asr        # DPT SmartRAID V, VI and Adaptec SCSI RAID
device          ciss       # Compaq Smart RAID 5*
device          dpt        # DPT Smartcache III, IV - See NOTES for options
device          hptmv      # Highpoint RocketRAID 182x
device          hptrr      # Highpoint RocketRAID 17xx, 22xx, 23xx, 25xx
device          iir        # Intel Integrated RAID
device          ips        # IBM (Adaptec) ServeRAID
device          mly        # Mylex AcceleRAID/eXtremeRAID
device          twa        # 3ware 9000 series PATA/SATA RAID

# RAID controllers
device          aac        # Adaptec FSA RAID
device          aacp       # SCSI passthrough for aac (requires CAM)
device          ida        # Compaq Smart RAID
device          mfi        # LSI MegaRAID SAS
device          mlx        # Mylex DAC960 family
device          pst        # Promise Supertrak SX6000
device          twe        # 3ware ATA RAID
....

Дэмжигдсэн RAID хянагчууд. Хэрэв танд эдгээрээс нэг нь ч байхгүй бол тайлбар болгон хааж эсвэл устгаж болно.

[.programlisting]
....
# atkbdc0 controls both the keyboard and the PS/2 mouse
device          atkbdc     # AT keyboard controller
....

Гарын хянагч (`atkbdc`) AT гар ба PS/2 загварын заагч төхөөрөмжүүдэд I/O үйлчилгээнүүдийг хангадаг. Энэ хянагчийг гарын драйвер (`atkbd`) болон PS/2 заагч төхөөрөмжийн драйвер (`psm`) шаарддаг.

[.programlisting]
....
device          atkbd      # AT keyboard
....

`atkbd` драйвер нь `atkbdc` хянагчтай цуг AT гарын хянагчид залгасан AT 84 гар болон AT өргөжүүлсэн гаруудад хандах боломж олгодог.

[.programlisting]
....
device          psm        # PS/2 mouse
....

Хэрэв таны хулгана PS/2 порт уруу залгагдаж байгаа бол энэ төхөөрөмжийг ашиглана уу.

[.programlisting]
....
device          kbdmux        # keyboard multiplexer
....

Олон гар залгах боломжийн анхны дэмжлэг. Хэрэв та систем дээрээ нэгээс олон гар ашиглахгүй бол энэ мөрийг аюулгүйгээр устгаж болно.

[.programlisting]
....
device          vga        # VGA video card driver
....

Видео картын драйвер.

[.programlisting]
....

device          splash     # Splash screen and screen saver support
....

Эхлэх үе дэх хоромхон зуур гарах дэлгэц! Дэлгэц амраагчид нь үүнийг бас шаарддаг.

[.programlisting]
....
# syscons is the default console driver, resembling an SCO console
device          sc
....

`sc` нь анхдагч консолийн драйвер бөгөөд SCO консолыг дуурайдаг. Ихэнх бүрэн дэлгэцийн програмууд консол уруу [.filename]#termcap# зэрэг терминалийн өгөгдлийн баазын сангийн тусламжтайгаар ханддаг бөгөөд үүнийг ашиглах эсэх эсвэл `VT220`-тай нийцтэй консол драйвер болох `vt`-ийг ашиглах эсэх нь хамаагүй юм. Та нэвтэрсний дараа бүрэн дэлгэцийн програмууд энэ консол дээр ажиллахдаа асуудалтай байвал өөрийн `TERM` хувьсагчаа `scoansi` болгоорой.

[.programlisting]
....
# Enable this for the pcvt (VT220 compatible) console driver
#device          vt
#options         XSERVER          # support for X server on a vt console
#options         FAT_CURSOR       # start with block cursor
....

Энэ нь VT100/102-той арагшаагаа нийцтэй, VT220-той нийцтэй консол драйвер юм. Энэ нь `sc`-тэй нийцгүй зарим зөөврийн компьютер дээр сайн ажилладаг. Та нэвтэрсний дараа өөрийн `TERM` хувьсагчаа `vt100` эсвэл `vt220` болгоорой. Мөн энэ драйвер нь `sc` төхөөрөмжүүдэд зориулсан [.filename]#termcap# эсвэл [.filename]#terminfo# оруулгууд ихэнхдээ байхгүй байдаг асар олон тооны өөр өөр машинууд уруу сүлжээгээр дамжин холбогдох үед ашигтай байж болно - `vt100` нь виртуалаар дурын тавцан дээр байх ёстой.

[.programlisting]
....
device          agp
....

Хэрэв та систем дээрээ AGP карттай бол үүнийг оруулна уу. Энэ нь AGP болон AGP GART-ийн дэмжлэгийг эдгээр боломжуудаас тогтсон хавтанд зориулж нээнэ.

[.programlisting]
....
# Power management support (see NOTES for more options)
#device          apm
....

Тэжээлийн Нарийн Удирдлагын дэмжлэг. Зөөврийн компьютеруудад ашигтай, гэхдээ энэ нь [.filename]#GENERIC#-д анхдагчаар хаалттай байдаг.

[.programlisting]
....
# Add suspend/resume support for the i8254.
device           pmtimer
....

APM болон ACPI зэрэг тэжээл удирдах үйл явцуудад зориулсан таймер төхөөрөмжийн драйвер.

[.programlisting]
....
# PCCARD (PCMCIA) support
# PCMCIA and cardbus bridge support
device          cbb               # cardbus (yenta) bridge
device          pccard            # PC Card (16-bit) bus
device          cardbus           # CardBus (32-bit) bus
....

PCMCIA дэмжлэг. Зөөврийн компьютер ашиглаж байгаа бол энэ танд хэрэгтэй.

[.programlisting]
....
# Serial (COM) ports
device          sio               # 8250, 16[45]50 based serial ports
....

Эдгээр нь MS-DOS(R)/Windows(R) ертөнцөд [.filename]#COM# портууд хэмээгддэг сериал портууд юм .

[NOTE]
====
Хэрэв та [.filename]#COM4# дээр дотуур модемтой бөгөөд [.filename]#COM2# дээр сериал порттой бол FreeBSD -ээс хандахын тулд та модемийн IRQ-г 2 (ойлгоход амаргүй техникийн шалтгаанаар, IRQ2 = IRQ 9) болгож өөрчлөх хэрэгтэй. Хэрэв та олон порттой сериал карттай бол өөрийн [.filename]#/boot/device.hints# файлд нэмэх зөв утгуудын талаар дэлгэрэнгүй мэдээллийг man:sio[4] гарын авлагаас шалгаарай. Зарим видео картууд (S3 бичил схем дээр үндэслэснүүдийг дурдаж болно) `0x*2e8` хэлбэртэй IO хаягуудыг ашигладаг бөгөөд олон хямд сериал картууд 16-бит хаягийн зайг бүрэн декод хийж чаддаггүй учир энэ нь тэдгээр карттай зөрчилдөж [.filename]#COM4# портыг бараг л ашиглах боломжгүй болгодог.

Сериал порт болгон бусдаас ялгаатай IRQ -тай байх (хуваалцсан тасалдал ашиглахыг дэмждэг олон порттой картуудын нэгийг ашиглаж байгаагаас бусад тохиолдолд) шаардлагатай учир [.filename]#COM3# болон [.filename]#COM4#-ийн анхдагч IRQ-үүдийг ашиглаж болохгүй.
====

[.programlisting]
....
# Parallel port
device          ppc
....

Энэ нь ISA-шугамын параллел порт интерфэйс юм.

[.programlisting]
....
device          ppbus      # Parallel port bus (required)
....

Параллел портын шугамын дэмжлэгийг хангадаг.

[.programlisting]
....
device          lpt        # Printer
....

Параллел порт хэвлэгчүүдийн дэмжлэг.

[NOTE]
====
Параллел хэвлэгчийн дэмжлэгийг нээхэд дээрх гурав гурвуулаа шаардлагатай.
====

[.programlisting]
....
device          plip       # TCP/IP over parallel
....

Энэ нь параллел сүлжээний интерфэйсд зориулсан драйвер юм.

[.programlisting]
....
device          ppi        # Parallel port interface device
....

Ерөнхий-зориулалтын I/O ("geek port") + IEEE1284 I/O.

[.programlisting]
....
#device         vpo        # Requires scbus and da
....

Энэ нь Iomega Zip хөтлөгчид зориулагдсан юм. `scbus` болон `da` дэмжлэгийг шаарддаг. EPP 1.9 горимд байгаа портуудын тусламжтай хамгийн сайн ажиллагаанд хүрдэг.

[.programlisting]
....
#device         puc
....

Хэрэв та man:puc[4] цавуу драйвераар дэмжигддэг "дүлий" сериал эсвэл параллел PCI карттай бол энэ төхөөрөмжийг тайлбар болгосныг болиулаарай.

[.programlisting]
....
# PCI Ethernet NICs.
device          de         # DEC/Intel DC21x4x (Tulip)
device          em         # Intel PRO/1000 adapter Gigabit Ethernet Card
device          ixgb       # Intel PRO/10GbE Ethernet Card
device          txp        # 3Com 3cR990 (Typhoon)
device          vx         # 3Com 3c590, 3c595 (Vortex)
....

Төрөл бүрийн PCI сүлжээний картуудын драйверууд. Эдгээрээс таны системд байхгүйг тайлбар болгон хааж эсвэл устгаарай.

[.programlisting]
....
# 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 NIC-үүдэд шаардлагатай бөгөөд тухайлбал MII-д нийцтэй дамжуулагч-хүлээн авагчууд эсвэл MII-тэй адил ажилладаг дамжуулагч-хүлээн авагчийн хяналтын интерфэйсүүдийг дурдаж болно. `device miibus` мөрийг цөмийн тохиргоонд нэмснээр ердийн miibus API болон тусдаа драйвераар дэмжигдээгүй PHY-уудад зориулсан ердийн драйвер зэрэг бүх PHY драйверуудын дэмжлэгийг оруулах болно.

[.programlisting]
....
device          bce        # Broadcom BCM5706/BCM5708 Gigabit Ethernet
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          nve        # nVidia nForce MCP on-board Ethernet Networking
device          pcn        # AMD Am79C97x PCI 10/100 (precedence over 'lnc')
device          re         # RealTek 8139C+/8169/8169S/8110S
device          rl         # RealTek 8129/8139
device          sf         # Adaptec AIC-6915 (Starfire)
device          sis        # Silicon Integrated Systems SiS 900/SiS 7016
device          sk         # SysKonnect SK-984x & SK-982x gigabit Ethernet
device          ste        # Sundance ST201 (D-Link DFE-550TX)
device          stge       # Sundance/Tamarack TC9021 gigabit Ethernet
device          ti         # Alteon Networks Tigon I/II gigabit Ethernet
device          tl         # Texas Instruments ThunderLAN
device          tx         # SMC EtherPower II (83c170 EPIC)
device          vge        # VIA VT612x gigabit ethernet
device          vr         # VIA Rhine, Rhine II
device          wb         # Winbond W89C840F
device          xl         # 3Com 3c90x (Boomerang, Cyclone)
....

MII шугамын хянагчийн кодыг ашигладаг драйверууд.

[.programlisting]
....
# ISA Ethernet NICs.  pccard NICs included.
device          cs         # Crystal Semiconductor CS89x0 NIC
# 'device ed' requires 'device miibus'
device          ed         # NE[12]000, 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 Ethernet драйверууд. Аль картууд аль драйвераар дэмжигддэг талаар дэлгэрэнгүйг [.filename]#/usr/src/sys/i386/conf/NOTES#-ээс харна уу.

[.programlisting]
....
# Wireless NIC cards
device          wlan            # 802.11 support
....

802.11-ийн ерөнхий дэмжлэг. Энэ мөр нь утасгүй сүлжээнд шаардлагатай.

[.programlisting]
....
device          wlan_wep        # 802.11 WEP support
device          wlan_ccmp       # 802.11 CCMP support
device          wlan_tkip       # 802.11 TKIP support
....

802.11 төхөөрөмжүүдэд зориулагдсан криптограф дэмжлэг. Хэрэв та шифрлэлт болон 802.11i нууцлалын протоколуудыг ашиглахаар шийдсэн бол эдгээр мөрүүд шаардлагатай.

[.programlisting]
....
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          ral        # Ralink Technology RT2500 wireless NICs.
device          wi         # WaveLAN/Intersil/Symbol 802.11 wireless NICs.
#device         wl         # Older non 802.11 Wavelan wireless NIC.
....

Төрөл бүрийн утасгүй сүлжээний картуудын дэмжлэг.

[.programlisting]
....
# Pseudo devices
device   loop          # Network loopback
....

Энэ нь TCP/IP-д зориулсан өөртөө эргэн холбогдох ерөнхий төхөөрөмж юм. Хэрэв та `localhost` (өөрөөр бас `127.0.0.1`) уруу telnet эсвэл FTP хийвэл энэ нь тань уруу энэ төхөөрөмжөөр эргэж ирнэ.Энэ нь _зайлшгүй шаардлагатай_.

[.programlisting]
....
device   random        # Entropy device
....

Шифрлэлтийн хувьд аюулгүй дурын тоо үүсгэгч.

[.programlisting]
....
device   ether         # Ethernet support
....

Танд Ethernet карт байгаа тохиолдолд зөвхөн `ether` хэрэгтэй. Энэ нь ерөнхий Ethernet протоколын кодыг агуулдаг.

[.programlisting]
....
device   sl            # Kernel SLIP
....

`sl` нь SLIP-ийн дэмжлэг юм. Энэ нь хялбар суулгаж тохируулдаг, модемоос модем уруу холболт хийхэд илүү зохицсон, илүү чадалтай PPP-ээр бараг бүхэлдээ солигдсон юм.

[.programlisting]
....
device   ppp           # Kernel PPP
....

Энэ нь дайл-ап холболтын цөм дэх PPP дэмжлэгт зориулагдсан. Мөн `tun`-ийг ашиглаж илүү уян хатан чанар болон шаардлагаар залгах зэрэг боломжууд бүхий PPP-ийн хэрэглэгчийн талбарын програм маягаар хийгдсэн хувилбар ч бас байдаг.

[.programlisting]
....
device   tun           # Packet tunnel.
....

Энэ хэрэглэгчийн талбарын PPP програм хангамжид ашиглагддаг. Дэлгэрэнгүй мэдээллийг энэ номын crossref:ppp-and-slip[userppp,PPP] хэсгээс үзнэ үү.

[.programlisting]
....

device   pty           # Pseudo-ttys (telnet etc)
....

Энэ нь "псевдо-терминал" эсвэл жинхэнэ биш (simulated) нэвтрэх порт юм. Энэ нь ирж байгаа `telnet` болон `rlogin` сессүүд, xterm, болон Emacs зэрэг бусад програмуудад ашиглагддаг.

[.programlisting]
....
device   md            # Memory disks
....

Санах ойн диск псевдо-төхөөрөмжүүд.

[.programlisting]
....
device   gif           # IPv6 and IPv4 tunneling
....

Энэ нь IPv4 дээгүүрх IPv6, IPv6 дээгүүрх IPv4, IPv4 дээгүүрх IPv4, болон IPv6 дээгүүрх IPv6 хоолойнуудыг хийдэг. `gif` төхөөрөмж нь "авто-клон" хийх чадвартай бөгөөд төхөөрөмжийн цэгүүдийг хэрэгцээгээрээ үүсгэдэг.

[.programlisting]
....
device   faith         # IPv6-to-IPv4 relaying (translation)
....

Энэ псевдо-төхөөрөмж нь түүн уруу илгээсэн пакетуудыг барьж аваад IPv4/IPv6 хувиргагч дэмон уруу замыг өөрчлөн явуулдаг.

[.programlisting]
....
# 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
....

Энэ нь Беркли Пакет Шүүгч юм. Энэ псевдо-төхөөрөмж нь цацаж байгаа сүлжээн (өөрөөр хэлбэл Ethernet) дэх бүх пакетуудыг барьж авдаг, бүгдийг сонсох горимд сүлжээний интерфэйсүүдийг шилжүүлэх боломж олгодог. Эдгээр пакетуудыг дискэнд хадгалах болон эсвэл man:tcpdump[1] програмаар шалгаж болно.

[NOTE]
====
Анхдагч чиглүүлэгчийн (гарц) болон бусад IP хаягийг man:dhclient[8] олж авахад man:bpf[4] төхөөрөмжийг бас ашигладаг. Хэрэв та DHCP ашиглаж байгаа бол үүнийг тайлбар болголгүй орхиорой.
====

[.programlisting]
....
# USB support
device          uhci          # UHCI PCI->USB interface
device          ohci          # OHCI PCI->USB interface
device          ehci          # EHCI PCI->USB interface (USB 2.0)
device          usb           # USB Bus (required)
#device         udbp          # USB Double Bulk Pipe devices
device          ugen          # Generic
device          uhid          # Human Interface Devices
device          ukbd          # Keyboard
device          ulpt          # Printer
device          umass         # Disks/Mass storage - Requires scbus and da
device          ums           # Mouse
device          ural          # Ralink Technology RT2500USB wireless NICs
device          urio          # Diamond Rio 500 MP3 player
device          uscanner      # Scanners
# USB Ethernet, requires mii
device          aue           # ADMtek USB Ethernet
device          axe           # ASIX Electronics USB Ethernet
device          cdce          # Generic USB over Ethernet
device          cue           # CATC USB Ethernet
device          kue           # Kawasaki LSI USB Ethernet
device          rue           # RealTek RTL8150 USB Ethernet
....

Төрөл бүрийн USB төхөөрөмжүүдийн дэмжлэг.

[.programlisting]
....
# FireWire support
device          firewire      # FireWire bus code
device          sbp           # SCSI over FireWire (Requires scbus and da)
device          fwe           # Ethernet over FireWire (non-standard!)
....

Төрөл бүрийн Firewire төхөөрөмжүүдийн дэмжлэг.

FreeBSD-ийн дэмждэг нэмэлт төхөөрөмжүүдийн талаар дэлгэрэнгүй мэдээллийг [.filename]#/usr/src/sys/i386/conf/NOTES# файлаас үзнэ үү.

=== Том санах ойн тохируулгууд (PAE)

Том санах ой бүхий машинууд Хэрэглэгч+Цөмийн Виртуал хаягийн зайн (KVA) 4 гигабайт хязгаараас их уруу хандах шаардлагатай байдаг. Энэ хязгаараас болоод Интел Pentium(R) Pro болон сүүлийн үеийн CPU-үүдэд 36 битийн физик хаягийн зайд хандах дэмжлэгийг нэмсэн.

Intel(R) Pentium(R) Pro болон сүүлийн үеийн CPU-үүдийн Физик Хаягийн Өргөтгөл (PAE) боломж нь 64 гигабайт хүртэлх санах ойн тохиргоог зөвшөөрдөг. FreeBSD нь энэхүү боломжийг FreeBSD-ийн одоо байгаа бүх гаргасан хувилбаруудын цөмийн тохиргооны `PAE` тохируулгаар дэмждэг. Интелийн санах ойн архитектурын хязгаараас болж 4 гигабайтаас дээш болон доош санах ойн ялгаа байхгүй. 4 гигабайтаас дээшхи санах ой нь ашиглаж болох санах ойн санд нэмэгддэг.

PAE дэмжлэгийг цөмд нээхдээ цөмийн тохиргооны файлд дараах мөрийг нэмнэ:

[.programlisting]
....
options		    PAE
....

[NOTE]
====
FreeBSD дэх PAE дэмжлэг зөвхөн Intel(R) IA-32 процессоруудад байдаг. Мөн FreeBSD дэх PAE дэмжлэг нь өргөн шалгагдаагүй бөгөөд FreeBSD-ийн бусад тогтвортой боломжуудтай харьцуулахад бета чанарынхад тооцогддог.
====

FreeBSD дэх PAE дэмжлэг нь цөөн хэдэн хязгааруудтай:

* VM зайн 4 гигабайтаас илүүд процесс хандаж чадахгүй.
* man:bus_dma[9] интерфэйс ашигладаггүй төхөөрөмжийн драйверууд PAE-г идэвхжүүлсэн цөм дээр өгөгдлийн эвдрэлийг үүсгэх бөгөөд ашиглахыг зөвлөдөггүй юм. Ийм учраас PAE-г идэвхжүүлсэн цөм дээр ажилладаггүй бүх драйверуудыг оруулаагүй [.filename]#PAE# цөмийн тохиргооны файл FreeBSD-д байдаг.
* Зарим нэг тохируулгууд санах ойн эх үүсвэрийн хэрэглээг физик санах ойн хэмжээгээр тодорхойлдог. Эдгээр тохируулгууд нь PAE системийн их санах ойгоос болж хэрэгцээгүй илүү санах ойг гаргадаг. Тийм нэг жишээнүүдийн нэг нь sysctl-ийн `kern.maxvnodes` тохируулга бөгөөд энэ нь цөм дэх хамгийн их байж болох vnode-уудын тоог хянадаг. Энэ болон бусад тохируулгуудын утгыг боломжийн утгаар тааруулахыг зөвлөж байна.
* Магадгүй цөмийн виртуал хаягийн (KVA) зайг ихэсгэх эсвэл KVA-ийн шавхалтад хүргэхгүйн тулд байнга их ашиглагддаг (дээр дурдсаныг харна уу) цөмийн эх үүсвэрийн хэмжээг багасгах шаардлагатай байж болох юм. `KVA_PAGES` цөмийн тохируулга нь KVA зайг ихэсгэхэд ашиглагдаж болно.

Ажиллагаа болон тогтвортой байдлыг хангах үүднээс man:tuning[7] гарын авлагатай танилцахыг зөвлөж байна. man:pae[4] гарын авлага нь FreeBSD-ийн PAE дэмжлэгийн тухай хамгийн сүүлийн үеийн мэдээллийг агуулдаг.

[[kernelconfig-trouble]]
== Хэрэв ямар нэг юм буруутвал

Өөрчлөн тохируулсан цөмийг бүтээж байх үед 4 төрлийн асуудал гарч болзошгүй байдаг. Тэдгээр нь:

`config` амжилтгүй болох:::
Хэрэв таныг цөмийн тайлбарыг man:config[8]-т өгөхөд тушаал амжилтгүй болбол та хаа нэгтээ энгийн алдаа хийсэн болов уу. Аз болоход man:config[8] асуудалтай байгаа мөрийн дугаарыг хэвлэх учир та алдаатай мөрийг хурдан олох болно. Жишээ нь, хэрэв та доор дурдсаныг харвал:
+
[source,shell]
....
config: line 17: syntax error
....
+
Түлхүүр үг зөв бичигдсэн эсэхийг [.filename]#GENERIC# цөм болон бусад баримтаас харьцуулан шалгаж үзээрэй.

`make` амжилтгүй болох:::
Хэрэв `make` тушаал амжилтгүй болбол энэ ихэвчлэн цөмийн тайлбар дахь man:config[8]-ийн олж чадахааргүй тийм ч ноцтой бус алдааг дохиолдог. Дахин хэлэхэд, өөрийн тохиргоог нягтлаарай, тэгээд хэрэв та асуудлыг шийдэж чадахгүй бол {freebsd-questions} уруу өөрийн цөмийн тохиргоотой цахим захидал илгээгээрэй, ингэхэд хурдан шинжилгээ хийгдэх болно.

Цөм ачаалахгүй байх:[[kernelconfig-noboot]]::
Хэрэв таны шинэ цөм ачаалахгүй бол эсвэл таны төхөөрөмжүүдийг танихгүй байгаа бол бүү цочирд! Аз болоход FreeBSD нийцгүй цөмүүдээс сэргэхэд зориулсан маш сайн механизмтай байдаг. Ердөө л FreeBSD-ийн ачаалагчаас ачаалах цөмөө сонгоно. Системийн ачаалах меню гарч ирэх үед та үүнд хандах боломжтой болно. "Escape to a loader prompt" тохируулга 6-ын тоог сонго. Тушаал хүлээх мөрөн дээр `boot kernel.old` эсвэл зөв ачаалах өөр бусад цөмийн нэрийг бичээрэй. Цөмийг дахин тохируулах явцдаа ажилладаг цөмийг гарын дор хадгалж байх нь үргэлж ухаалаг санаа байдаг.
+
Сайн цөмийг ачаалсныхаа дараа та өөрийн тохиргооны файлаа дахин шалгаж цөмөө дахин бүтээхээр оролдоорой. Нэг тус дэм болох эх үүсвэр бол бусад зүйлсээс гадна амжилттай ачаалалт бүр дэх цөмийн бүх мэдээллүүдийн бичлэгийг хийдэг [.filename]#/var/log/messages# файл юм. Мөн man:dmesg[8] тушаал нь сүүлийн ачаалалт дахь цөмийн мэдээллүүдийг хэвлэдэг.
+
[NOTE]
====
Хэрэв та цөмийг бүтээхэд асуудалтай байгаа бол [.filename]#GENERIC# болон өөр бусад ажилладаг цөмийг дараагийн бүтээх явцад устгагдахааргүй өөр нэртэйгээр гарын дор хадгалж байгаарай. Та [.filename]#kernel.old# -д найдаж болохгүй, учир нь шинэ цөмийг суулгах явцад [.filename]#kernel.old# нь хамгийн сүүлд суулгагдсан бөгөөд магадгүй ажиллагаагүй тийм цөмөөр дарагдан бичигддэг. Ажилладаг цөмийг зөв [.filename]#/boot/kernel# байр уруу аль болох хурдан шилжүүлээрэй, эсвэл man:ps[1] зэрэг тушаалууд зөв ажиллахгүй байж магадгүй юм. Ингэхийн тулд сайн цөм байгаа сангийн нэрийг өөрчлөөрэй:

[source,shell]
....
# mv /boot/kernel /boot/kernel.bad
# mv /boot/kernel.good /boot/kernel
....

====

Цөм ажиллах боловч man:ps[1] ажиллахгүй болох:::
Хэрэв та системийн хэрэгслүүд бүтээсэн хувилбараас өөр цөмийн хувилбарыг суулгасан бол, жишээ нь -RELEASE дээр -CURRENT цөм бүтээсэн бол системийн төлвийн тушаалууд болох man:ps[1] болон man:vmstat[8] зэрэг нь ажиллахаа больно. Та өөрийн цөмтэйгөө адил хувилбарын эх модтой бүтээгдсэн crossref:cutting-edge[makeworld,ертөнцийг дахин хөрвүүлж суулгах] хэрэгтэй. Энэ нь нэг шалтгаан бөгөөд ерөнхийдөө үйлдлийн системийн бусад зүйлсээс өөр хувилбарын цөмийг ашиглах нь тийм ч сайн санаа биш юм.
