--- 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: 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# тохиргооны файл төвөгтэй юм шиг санагдаж болох бөгөөд <> хэсгийн тайлбаруудыг удаан нухацтай дагаарай. [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# уруу хуулагдана. Одоо системийг унтраагаад шинэ цөмийг ашиглан дахин ачаал. Хэрэв ямар нэг юм болохгүй болбол энэ бүлгийн төгсгөлд байгаа <> заавар танд хэрэгтэй байж болох юм. Таны шинэ цөм <> тохиолдолд хэрхэн сэргээх талаар тайлбарласан хэсгийг заавал уншаарай. [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,ертөнцийг дахин хөрвүүлж суулгах] хэрэгтэй. Энэ нь нэг шалтгаан бөгөөд ерөнхийдөө үйлдлийн системийн бусад зүйлсээс өөр хувилбарын цөмийг ашиглах нь тийм ч сайн санаа биш юм.