---
title: Бүлэг 13. FreeBSD-ийн Ачаалах процесс
part: хэсэг III. Системийн Удирдлага
prev: books/handbook/config
next: books/handbook/users
showBookMenu: true
weight: 17
params:
  path: "/books/handbook/boot/"
---

[[boot]]
= FreeBSD-ийн Ачаалах процесс
:doctype: book
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:sectnumoffset: 13
:partnums:
:source-highlighter: rouge
:experimental:
:images-path: books/handbook/boot/

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::[]

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

Компьютерийг эхлүүлж үйлдлийн системийг ачаалах процесс нь "эхлүүлэгч процесс (bootstrap process)" буюу "ачаалах" гэж хэлэгддэг. FreeBSD-ийн ачаалах процесс нь танд системийг эхлүүлэх үед компьютер дээр суусан өөр үйлдлийн системүүд эсвэл адил үйлдлийн системийн өөр хувилбарууд эсвэл суусан өөр цөмийг сонгохыг зөвшөөрч юу хийгдэхийг өөрчлөх боломжийг бүрдүүлж нэлээн уян хатан чанарыг хангаж өгдөг.

Энэхүү бүлэг нь тохируулж болох тохиргооны тохируулгуудыг тайлбарласан. Үүнд FreeBSD цөм эхлэх, төхөөрөмжүүдийг шалгах болон man:init[8] эхлэх хүртэлх болж байгаа FreeBSD-ийн ачаалах процессийг өөрчилж болох бүх үйл явдал багтана. Энэ нь текстийн өнгө тод цагаанаас саарал уруу өөрчлөгдөж байх үед болдог.

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

* FreeBSD-ийн эхлүүлэгч системийн хэсгүүд болон тэдгээр нь хэрхэн харилцан үйлдэл хийдэг талаар.
* Ачаалах процессийг хянахын тулд FreeBSD-ийн эхлүүлэгч дэх хэсгүүдэд өгч болох тохируулгуудын талаар.
* man:device.hints[5]-ийн үндсүүд.

[NOTE]
====
Энэ бүлэг нь зөвхөн Интел x86 системүүд дээр ажиллаж байгаа FreeBSD-ийн ачаалах процессийг тайлбарлана.
====

[[boot-introduction]]
== Ачаалалтын асуудал

Компьютерийг асааж үйлдлийн системийг эхлүүлэх нь сонирхолтой мухардалд оруулдаг. Тодорхойлолтоор бол компьютер нь үйлдлийн систем эхлэх хүртэл юу хийхээ мэддэггүй. Үүнд програмуудыг дискнээс ажиллуулах ордог. Тэгэхээр хэрэв компьютер үйлдлийн системгүйгээр програмыг дискнээс ажиллуулж чаддаггүй тэгээд бас үйлдлийн системийн програмууд диск дээр байдаг гэхээр үйлдлийн систем хэрхэн эхэлдэг болж таарах вэ?

Энэ асуудал нь Мянгуужингийн адал явдал (The Adventures of Baron Munchausen) номонд гардагтай төстэй юм. Гол баатар маань нүх уруу унаад өөрийнхөө гутлын оосроос барьж өөрийгөө өргөн татаж гаргадаг. Тооцоололтын эриний эхэн үед _bootstrap буюу эхлүүлэгч (эхлүүлэлт)_ гэдэг ойлголт нь үйлдлийн системийг ачаалахад ашиглагддаг арга замд хэрэглэгддэг байсан бөгөөд "booting буюу ачаалах" гэж богиноссон юм.

x86 тоног төхөөрөмж дээр Үндсэн Оролт/Гаралтын Систем (BIOS) нь үйлдлийн системийг ачаалах үүрэгтэй. Үүнийг хийхийн тулд BIOS хатуу диск дээрээс Master Boot Record (MBR) буюу Мастер Ачаалах Бичлэгийг хайдаг бөгөөд энэ нь дискний онцгой газар байрлах ёстой. BIOS нь MBR-г ачаалж ажиллуулах хангалттай мэдээлэлтэй бөгөөд дараа нь MBR үйлдлийн системийг ачаалахтай холбоотой бусад үйлдлүүдийг магадгүй BIOS-ийн тусламжтайгаар зохицуулна гэж тооцдог.

MBR доторх код нь ялангуяа хэрэглэгчтэй ажиллахдаа _bootmanager буюу ачаалагч менежер_ хэмээгддэг. Энэ тохиолдолд ачаалагч менежер нь ихэвчлэн дискний эхний _зам_ эсвэл OS-ийн зарим файлын систем дээр илүү кодтой байдаг. (Ачаалагч менежер нь заримдаа _ачаалагч дуудагч_ гэгддэг, гэхдээ FreeBSD энэ нэрийг ачаалалтын сүүлийн шатуудад хэрэглэдэг.) Алдартай ачаалагч менежерүүдэд boot0 (Boot Easy гэгддэг, FreeBSD-ийн стандарт ачаалагч менежер), Grub, GAG, болон LILO ордог. (Зөвхөн boot0 MBR-д багтдаг.)

Хэрэв зөвхөн нэг үйлдлийн систем суулгагдсан бол стандарт PC MBR хангалттай. Энэ MBR нь диск дээрээс эхний ачаалагдах (идэвхтэй) зүсмэлийг хайгаад дараа нь үйлдлийн системийн үлдсэнийг дуудахын тулд тэр зүсмэл дээрх кодыг ажиллуулдаг. Анхдагчаар man:fdisk[8]-ээр суулгагддаг MBR нь тийм MBR бөгөөд [.filename]#/boot/mbr# дээр тулгуурладаг.

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

FreeBSD-ийн эхлүүлэгч системийн үлдсэн хэсэг нь гурван шатанд хуваагддаг. Эхний шат нь компьютерийг тусгай төлөв уруу оруулахыг хангалттай мэдэж хоёр дахь шатыг ажиллуулах MBR-р ажиллуулагддаг. Хоёр дахь шат нь гурав дахь шатыг ажиллуулахаас өмнө арай илүүг хийж чаддаг. Гурав дахь шат нь үйлдлийн системийг дуудах үйлдлийг дуусгадаг. Энэхүү гурван шатанд ажил нь хуваарилагдсан байдаг бөгөөд учир нь PC стандартууд эхний болон хоёрдугаар шатуудад ажиллуулж болох програмуудын хэмжээнүүдэд хязгаарлалт тавьдаг юм. Үйлдлүүдийг цугт нь гинжлэн холбох нь FreeBSD-д илүү уян хатан дуудагчийг бий болгодог.

Дараа нь цөм ачаалж төхөөрөмжүүдийг шалгаж эхлэн ашиглахад зориулж эхлүүлдэг. Цөмийн ачаалах процесс дууссаны дараа цөм хяналтыг man:init[8] хэрэглэгчийн процесс руу дамжуулж дараа нь дискнүүд хэрэглэгдэж болох төлөвт байгаа эсэхийг шалгадаг. man:init[8] дараа нь файлын системүүдийг холбон сүлжээнд холбогдох сүлжээний картыг тохируулж FreeBSD систем эхлэх үед ихэвчлэн ажилладаг бүх процессуудыг эхлүүлэх хэрэглэгчийн түвшний эх үүсвэрийн тохиргоог эхлүүлдэг.

[[boot-blocks]]
== Ачаалагч Менежер болон Ачаалалтын шатууд

[[boot-boot0]]
=== Ачаалагч Менежер

MBR эсвэл ачаалагч менежер дэх код нь заримдаа ачаалах процессийн _тэг (0) шат_ гэж нэрлэгддэг. Энэ хэсэг нь хоёр ачаалагч менежерийг авч үзнэ: boot0 болон LILO.

*boot0 Ачаалагч Менежер:* FreeBSD-ийн суулгагч эсвэл man:boot0cfg[8]-р суулгагдсан MBR [.filename]#/boot/boot0# дээр тулгуурладаг. boot0-н хэмжээ болон боломж нь зүсмэлийн хүснэгт болон MBR-ийн төгсгөл дэх `0x55AA` танигчаас болоод 446 байт байдаг. Хэрэв boot0 болон олон үйлдлийн системийг суулгасан бол ачаалах үед доор дурдсантай төсөөтэй дэлгэцийг харах болно:

[[boot-boot0-example]]
.[.filename]#boot0# дэлгэцийн агшин
[example]
====

[source,shell]
....
F1 DOS
F2 FreeBSD

Default: F2
....

====

Бусад үйлдлийн системүүд ялангуяа Windows(R) нь FreeBSD-ийн дараа суусан бол байгаа MBR-ийг өөрийнхөөрөө дарж бичдэг. Хэрэв энэ тохиолдвол эсвэл та байгаа MBR-аа FreeBSD-ийн MBR-аар солихыг хүсвэл дараах тушаалыг ашиглана:

[source,shell]
....
# fdisk -B -b /boot/boot0 device
....

Дээр бичигдсэн _device_ нь эхний IDE дискний хувьд [.filename]#ad0#, хоёр дахь IDE хянагч дээрх эхний IDE дискний хувьд [.filename]#ad2#, эхний SCSI дискний хувьд [.filename]#da0# гэх зэрэг ачаалах диск байх юм. MBR-ийн өөрчлөн тохируулсан тохиргоог хүсэж байвал man:boot0cfg[8]-ийг ашигла.

*LILO Ачаалагч Менежер:* FreeBSD-г бас ачаалах энэ ачаалагч менежерийг суулгахын тулд Линукс эхлүүлээд дараах тохиргоог [.filename]#/etc/lilo.conf# тохиргооны файлд нэмээрэй:

[.programlisting]
....
other=/dev/hdXY
table=/dev/hdX
loader=/boot/chain.b
label=FreeBSD
....

Линуксийн тодорхойлогчдыг ашиглан _X_-г Линуксийн дискний үсгээр, _Y_-г Линуксийн анхдагч хуваалтын дугаараар сольж FreeBSD-ийн анхдагч хуваалт болон дискийг зааж өгнө. SCSI диск ашиглаж байвал _/dev/hd_-г _/dev/sd_ болгон өөрчлөх хэрэгтэй. Хэрэв хоёр үйлдлийн систем хоёулаа нэг диск дээр байвал `loader=/boot/chain.b` мөр орхигдож болно. Дараа нь `/sbin/lilo -v` тушаалыг ажиллуулж шинэ өөрчлөлтийг системд оруулна. Зөв эсэхийг шалгахын тулд дэлгэц дээр гаргах мэдээллүүдийг хянан шалгах хэрэгтэй.

[[boot-boot1]]
=== Нэгдүгээр шат [.filename]#/boot/boot1# болон Хоёрдугаар шат [.filename]#/boot/boot2#

Ерөнхий төсөөллөөр бол эхний болон хоёр дахь шатууд нь дискний нэг талбар дахь нэг л програмын хэсэг юм. Зайнаас хамаараад тэдгээрийг хоёр хэсэг болгон хуваасан, гэхдээ үргэлж цугтаа суудаг. Тэдгээр нь нэгдсэн [.filename]#/boot/boot# файлаас суулгагчаар эсвэл bsdlabel-р хуулагддаг.

Тэд файлын системүүдээс гадна ачаалах зүсмэлийн эхний зам дээр эхний сектороос эхлээд байрладаг. Энд л <<boot-boot0,boot0>> эсвэл өөр аль нэг ачаалагч менежер ачаалах процессийг үргэлжлүүлэх програмыг олно гэдэгт найдаж байдаг. Ашиглагдах секторуудын тоо [.filename]#/boot/boot#-ийн хэмжээнээс амархнаар тодорхойлогдоно.

Зөвхөн 512 байт хэмжээтэй байдаг болохоор [.filename]#boot1# нь их энгийн хялбар бөгөөд [.filename]#boot2#-ийг олж ажиллуулах, зүсмэлийн тухай мэдээллийг хадгалах, FreeBSD-ийн _bsdlabel_-ийн тухай хангалттай мэдээлэлтэй байдаг.

[.filename]#boot2# нь арай илүү төвөгтэй бөгөөд файлуудыг олоход хангалттай FreeBSD-ийн файлын системийг ойлгож цөм эсвэл дуудагчийг ажиллуулахыг сонгох маш энгийн интерфэйсээр хангаж чаддаг.

<<boot-loader,Дуудагч>> нь хамаагүй илүү төвөгтэй бөгөөд [.filename]#boot2#-р ажилладаг ачаалалтын тохиргоотой байдаг.

[[boot-boot2-example]]
.[.filename]#boot2# дэлгэцийн агшин
[example]
====

[source,shell]
....
>> FreeBSD/i386 BOOT
Default: 0:ad(0,a)/boot/loader
boot:
....

====

Суулгасан [.filename]#boot1# болон [.filename]#boot2# файлуудыг солиход man:bsdlabel[8]-ийг ашиглаж болно:

[source,shell]
....
# bsdlabel -B diskslice
....

Дээр бичигдсэн _diskslice_ нь эхний IDE диск дээрх эхний зүсмэлийн хувьд [.filename]#ad0s1# гэх мэтээр ачаалах диск болон зүсмэл юм.

[WARNING]
.Аюултайгаар Зориулагдсан Горим
====
Хэрэв [.filename]#ad0# гэх мэтээр дискний нэрийг ашиглавал man:bsdlabel[8] нь зүсмэлүүдгүй аюултайгаар зориулагдсан диск үүсгэх болно. Энэ нь мэдээж хүсээгүй зүйл болохоор man:bsdlabel[8] тушаалыг kbd:[Return] дарж ажиллуулахаасаа өмнө түүнд дамжуулах _diskslice_-г дахин шалгаарай.
====

[[boot-loader]]
=== Гуравдугаар шат [.filename]#/boot/loader#

Дуудагч нь гурван шаттай эхлүүлэгчийн төгсгөлийн шат бөгөөд файлын систем дээр гол төлөв [.filename]#/boot/loader# гэж байрладаг.

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

[[boot-loader-flow]]
==== Дуудагч програмын урсгал

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

Үүний дараа дуудагч нь хувьсагчуудын боломжийн анхдагчуудыг тохируулдаг [.filename]#/boot/defaults/loader.conf# дотор байгааг анхдагчаар уншдаг [.filename]#/boot/loader.rc# файлыг унших бөгөөд тэдгээр хувьсагчуудад хийх локал өөрчлөлтүүдэд зориулсан [.filename]#/boot/loader.conf# файлыг мөн уншдаг. Дараа нь [.filename]#loader.rc# аль модулиуд болон цөмийг сонгосон тэдгээрийг дуудан эдгээр хувьсагчуудын дагуу ажилладаг.

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

[[boot-loader-commands]]
==== Дуудагчид багтсан тушаалууд

Эдгээр нь хамгийн ихээр ашиглагддаг дуудагчийн тушаалууд юм. Байгаа бүх тушаалуудын тухай бүрэн хэлэлцүүлгийг man:loader[8]-с үзнэ үү.

autoboot _seconds_::
Секундээр өгөгдсөн хугацаанд тасалдаагүй бол цөмийг ачаалахаар үргэлжлүүлдэг. Энэ нь тоолуур харуулах бөгөөд анхдагч хугацаа нь 10 секунд байна.

boot [-options] [kernelname]::
Өгөгдсөн тохируулгууд эсвэл цөмийн нэртэйгээр цөмийг нэн даруй ачаалахаар үргэлжлүүлнэ. _unload_ тушаалыг ажиллуулсны дараа зөвхөн тушаалын мөрөөс цөмийн нэрийг өгч болох бөгөөд хэрэв ингэхгүй бол өмнө нь дуудагдсан цөмийг ашиглах болно.

boot-conf::
Ихэвчлэн `kernel` байх өгөгдсөн хувьсагчууд дээр үндэслэн модулиудын автомат тохиргоогоор орно. Зарим хувьсагчуудыг өөрчлөхөөсөө өмнө `unload`-г эхэлж ашиглавал энэ нь зөвхөн ач холбогдолтой байдаг.

help [topic]::
[.filename]#/boot/loader.help# файлаас тусламжийн мэдээллүүдийг үзүүлнэ. Хэрэв өгөгдсөн сэдэв нь `индекс` бол байгаа сэдвүүдийн жагсаалтыг үзүүлнэ.

include _filename_ ...::
Өгөгдсөн файлын нэртэй файлыг процесс хийнэ. Файл уншигдаж мөр мөрөөр хөрвүүлэгдэнэ. Алдаа гарвал include буюу оруулах тушаалыг нэн даруй зогсооно.

load [-t type] _filename_::
Цөм, цөмийн модуль, эсвэл өгөгдсөн төрлийн файлыг нэртэй нь дуудна. _filename_-н дараах дурын нэмэлт өгөгдлүүд нь файлд дамжуулагдана.

ls [-l path]::
Өгөгдсөн зам эсвэл зам өгөгдөөгүй бол root сан дахь файлуудын жагсаалтыг харуулна. Хэрэв `-l` өгөгдсөн бол файлын хэмжээнүүдийг бас харуулдаг.

lsdev [-v]::
Модулиуд магадгүй дуудагдаж болох бүх төхөөрөмжүүдийг жагсаана. Хэрэв `-v` өгөгдсөн бол илүү дэлгэрэнгүй мэдээлэл хэвлэгдэнэ.

lsmod [-v]::
Дуудагдсан модулиудыг харуулна. Хэрэв `-v` өгөгдсөн бол илүү дэлгэрэнгүй мэдээллийг үзүүлнэ.

more _filename_::
`LINES` болгоныг харуулан түр зогсож өгөгдсөн файлуудыг үзүүлнэ.

reboot::
Системийг нэн даруй дахин ачаална.

set _variable_::
Дуудагчийн орчны хувьсагчуудыг тохируулна.

unload::
Дуудагдсан модулиудыг арилгана.

[[boot-loader-examples]]
==== Дуудагчийн жишээнүүд

Дуудагчийн хэрэглээний практик жишээнүүдийг энд дурдав:

* өөрийн ердийн цөмийг ганц-хэрэглэгчийн горимд ачаалахдаа:
+
[source,shell]
....
 boot -s
....
* Ердийн цөм болон модулиудыг буулган болиулж дараа нь хуучин эсвэл өөр цөмийг дуудахдаа:
+
[source,shell]
....
unload
load kernel.old
....
+ 
[.filename]#kernel.GENERIC#-г суулгацын дисктэй цуг ирсэн анхдагч цөмийг дуудахдаа ашиглаж болох бөгөөд эсвэл цөмийг шинэчилж тохируулахаасаа өмнө эсвэл системийн шинэчлэл хийхээсээ өмнө суулгасан цөмөө дуудахдаа [.filename]#kernel.old#-г ашиглаж болно.
+
[NOTE]
====
Ердийн модулиудыг өөр цөмийн хамт дуудахдаа доор дурдсаныг ашигла:

[source,shell]
....
unload
set kernel="kernel.old"
boot-conf
....

====

* Цөмийн автомат тохиргооны скриптийг дуудахдаа:
+
[source,shell]
....
load -t userconfig_script /boot/kernel.conf
....

[[boot-splash]]
==== Ачаалах үеийн дэлгэцийн зураг

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

FreeBSD дээр үндсэн хоёр орчин байдаг. Эхнийх нь хуучны анхдагч виртуал консол тушаалын мөрний орчин юм. Систем ачаалж дууссаны дараа консолын нэвтрэлт хүлээх мөр харуулагддаг. Хоёр дахь орчин нь crossref:x11[x11,Xorg] графикийн орчин юм. График дэлгэцийн менежер болон график нэвтрэх менежерийг суулгаж тохируулах талаарх дэлгэрэнгүй мэдээллийг зохих бүлгээс үзнэ үү.

[[boot-splash-function]]
===== Ачаалах үеийн дэлгэцийн функц

Ачаалах үеийн дэлгэцийн функц нь зөвхөн 256 өнгийн битмап ([.filename]#.bmp#), ZSoft PCX ([.filename]#.pcx#) эсвэл TheDraw ([.filename]#.bin#) хэлбэрүүдийг дэмждэг. Зураг файлууд нь стандарт VGA адаптер дээр ажиллахын тулд 320-ийг харьцах 200 пикселийн нягтралтай байх ёстой.

1024-ийг харьцах 768 пикселийн максимум нягтрал хүртэлх илүү том зургийг ашиглахын тулд VESA модулийг систем ачаалах үед дуудах хэрэгтэй. crossref:kernelconfig[kernelconfig,өөрчлөн тохируулсан цөм]ийн хувьд `VESA` цөмийн тохиргоог нэмэх хэрэгтэй. VESA дэмжлэгийг дуудсанаар бүх дэлгэцийг бүрхэх ачаалах үеийн дэлгэцийн зургийг харуулах боломжийг хэрэглэгчид олгодог.

Ачаалах үеийн дэлгэцийг харуулагдаж байх үед гарын аль ч товчлуурыг дарж болиулж болно.

Ачаалах үеийн дэлгэцийн зураг нь анхдагчаар гаднах дэлгэц амраагч болдог. Ашиглаагүй тодорхой хугацааны дараа ачаалах үеийн дэлгэцийн зураг гарч тодоос бүр харанхуй болон дахин дахин солигдон эргэлдэх болно. Дэлгэцийн зургийн тохиргоог [.filename]#/etc/rc.conf# файлд `saver=` мөрийг нэмэн өөрчилж болно. Хэд хэдэн сонгож болох дэлгэц амраагч байдаг бөгөөд man:splash[4] гарын авлагын хуудаснаас олж болно. `saver=` тохиргоо нь зөвхөн виртуал консолд хамаатай гэдгийг санаарай. Энэ нь график дэлгэцийн менежерүүдэд ямар ч нөлөөгүй болно.

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

Жишээ ачаалах үеийн дэлгэцийн файлуудыг http://artwork.freebsdgr.org/node/3/[http://artwork.freebsdgr.org] хаяг дахь галерейгаас татаж авч болно. package:sysutils/bsd-splash-changer[] портыг суулгаснаар ачаалах үеийн дэлгэцийн зургийг ачаалах болгонд санамсаргүйгээр цуглуулгаас сонгож харуулах боломжтой болно.

[[boot-splash-enable]]
===== Ачаалах үеийн дэлгэцийн функцыг идэвхжүүлэх

Ачаалах үеийн дэлгэцийн [.filename]#.bmp#, [.filename]#.pcx# эсвэл [.filename]#.bin# файлыг root хуваалт дээр жишээ нь [.filename]#/boot# санд байрлуулах ёстой.

Ачаалагчийн анхдагч дэлгэцийн 256 өнгө, 320-ийг харьцах 200 пиксел юм уу эсвэл түүнээс бага нягтралын хувьд [.filename]#/boot/loader.conf# файл дараахийг агуулсан байхаар засварлах хэрэгтэй:

[.programlisting]
....
splash_bmp_load="YES"
bitmap_load="YES"
bitmap_name="/boot/splash.bmp"
....

1024-ийг харьцах 768 пикселийн максимум хүртэлх илүү том видео нягтралуудын хувьд [.filename]#/boot/loader.conf# файл дараахийг агуулсан байхаар засварлах хэрэгтэй:

[.programlisting]
....
vesa_load="YES"
splash_bmp_load="YES"
bitmap_load="YES"
bitmap_name="/boot/splash.bmp"
....

Дээрх нь [.filename]#/boot/splash.bmp#-ийг ачаалах үеийн дэлгэцдээ ашиглахыг зааж өгч байна. PCX файл ашиглахын тулд дараах илэрхийллийг `vesa_load="YES"` мөрийн хамтаар нягтралаас хамааруулан ашиглана.

[.programlisting]
....
splash_pcx_load="YES"
bitmap_load="YES"
bitmap_name="/boot/splash.pcx"
....

FreeBSD 8.3 хувилбараас эхлээд https://en.wikipedia.org/wiki/TheDraw[TheDraw] хэлбэрийн ascii зураг ашиглах өөр нэг сонголт бий.

[.programlisting]
....
splash_txt="YES"
bitmap_load="YES"
bitmap_name="/boot/splash.bin"
....

Файлын нэр нь дээрх жишээ дээрх шиг заавал "splash" гэдгээр хязгаарлагдахгүй. [.filename]#splash_640x400.bmp# эсвэл [.filename]#bluewave.pcx# зэрэг дэмжигдсэн төрлийн байхад болох юм.

[.filename]#loader.conf#-ийн бусад сонирхолтой тохиргоонуудыг дурдвал:

`beastie_disable="YES"`::
Энэ нь ачаалагчийн тохиргооны цэсийг харуулахгүй болгоно. Гэхдээ секунд гүйсэн тушаал хүлээх мөрийг харуусан хэвээр байх болно. Ачаалагчийн тохиргооны цэсийг хаасан ч гэсэн секунд гүйсэн тушаал хүлээх мөрөнд сонгосон сонголтын дагуу систем ачаалах болно.

`loader_logo="beastie"`::
Энэ нь ачаалагчийн тохиргооны цэсний баруун талд харуулагдах "FreeBSD" гэсэн анхдагч үгийг өнгөт чөтгөрийн логогоор солих болно.

Дэлгэрэнгүй мэдээллийг man:splash[4], man:loader.conf[5], болон man:vga[4] гарын авлагын хуудаснуудаас үзнэ үү.

[[boot-kernel]]
== Ачаалах үе дэх цөмийн харилцан үйлдэл

Цөм анхдагчаар <<boot-loader,дуудагч>> эсвэл дуудагчийг алгасан <<boot-boot1,boot2>>-ийн тусламжтай дуудагдсаны дараа өөрийн ачаалалтын тугууд байгаа бол тэдгээрийг шалгаж өөрийн ажиллагааг шаардлагатай бол тохируулдаг.

[[boot-kernel-bootflags]]
=== Цөмйн ачаалалтын тугууд

Энд илүү нийтлэг ачаалалтын тугуудыг дурдав:

`-a`::
Цөмийг эхлүүлэх явцад root файлын систем болгон холбох төхөөрөмжийг асуух.

`-C`::
CDROM-с ачаалах.

`-c`::
Ачаалалтын үеийн цөмийн тохируулга UserConfig-г ажиллуулах

`-s`::
Нэг(ганц)-хэрэглэгчийн горим уруу ачаалах

`-v`::
Цөмийн эхлэх үед илүү дэлгэрэнгүй байх

[NOTE]
====
Бусад ачаалалтын тугуудын талаарх илүү мэдээллийг man:boot[8]-с уншина уу.
====

[[device-hints]]
== Төхөөрөмжийн Сануулгууд

Системийн эхний эхлүүлэлтийн үеэр ачаалагч man:loader[8] нь man:device.hints[5] файлыг уншдаг. Энэ файл нь заримдаа "device hints буюу төхөөрөмжийн сануулгууд" ч гэгддэг цөмийн ачаалах мэдээлэл хувьсагчуудыг хадгалдаг. Эдгээр "device hints буюу төхөөрөмжийн сануулгууд" нь төхөөрөмжийг тохируулах зориулалтаар төхөөрөмжийн драйверуудад ашиглагддаг.

Төхөөрөмжийн сануулгууд нь бас <<boot-loader, 3 дахь шатны ачаалагч дуудагчид>> бас заагдаж өгч болдог. Хувьсагчуудыг `set` тушаалыг ашиглан нэмж, `unset` тушаалаар хасаж `show` тушаалаар үзэж болно. [.filename]#/boot/device.hints# файлд тохируулагдсан хувьсагчууд бас өөрчлөгдөж дарагдан бичигдэж болно. Ачаалагч дуудагчид оруулж өгсөн төхөөрөмжүүдийн сануулгууд нь тогтмол биш бөгөөд дараа дахин ачаалах үед мартагддаг.

Систем ачаалагдсаны дараа man:kenv[1] тушаалыг ашиглаж бүх хувьсагчуудыг харуулж болно.

[.filename]#/boot/device.hints# файлын синтакс нь мөр бүрт нэг хувьсагч байх бөгөөд чагт "#"-г тайлбар тэмдэглэгчээр ашигладаг. Мөрүүдийг дараах байдлаар бүтээдэг:

[source,shell]
....
hint.driver.unit.keyword="value"
....

3 дахь шатны ачаалагч дуудагчийн синтакс нь:

[source,shell]
....
set hint.driver.unit.keyword=value
....

Дээрх `driver` нь төхөөрөмжийн драйверийн нэр, `unit` нь төхөөрөмжийн драйверийн нэгжийн дугаар, `keyword` нь сануулга түлхүүр үг юм. Түлхүүр үг нь дараах тохируулгуудаас тогтож болно:

* `at`: төхөөрөмж холбогдсон шугамыг заана.
* `port`: ашиглагдах I/O-ны эхлэх хаягийг заана.
* `irq`: ашиглагдах тасалдал хүсэлтийн дугаарыг заана.
* `drq`: DMA сувгийн дугаарыг заана.
* `maddr`: төхөөрөмжийн эзэлж байгаа физик санах ойн хаягийг заана.
* `flags`: төхөөрөмжийн хувьд төрөл бүрийн тугийн битүүдийг тохируулна.
* `disabled`: хэрэв `1` гэж тохируулагдсан бол төхөөрөмж хаагдаж идэвхгүй болно.

Төхөөрөмжийн драйверууд нь энд жагсаагдсанаас илүү сануулгуудыг хүлээн авч эсвэл шаардаж болох бөгөөд гарын авлагын хуудсыг үзэхийг зөвлөж байна. Дэлгэрэнгүй мэдээллийн талаар man:device.hints[5], man:kenv[1], man:loader.conf[5], болон man:loader[8] гарын авлагуудаас зөвлөгөө авна уу.

[[boot-init]]
== Init: Процесс хяналтын эхлүүлэлт

Цөм ачаалж дууссаны дараа [.filename]#/sbin/init# эсвэл `loader`-д `init_path` хувьсагчид заагдсан програмын замд байрлах хэрэглэгчийн процесс man:init[8]-д хяналтаа дамжуулдаг.

[[boot-autoreboot]]
=== Автомат дахин ачаалах дараалал

Автомат дахин ачаалах дараалал нь систем дэх файлын системүүд бүрэн бүтэн байгаа эсэхийг шалгадаг. Хэрэв тэдгээр нь тийм биш бөгөөд man:fsck[8] нь UFS файлын системийн бүрэн бүтэн бус байдлыг засварлаж чадахгүй байгаа бол man:init[8] нь администраторуудад асуудлыг шийдэх боломж олгон <<boot-singleuser,ганц-хэрэглэгчийн горим>> уруу системийг оруулдаг.

[[boot-singleuser]]
=== Ганц-хэрэглэгчийн горим

Энэ горимд <<boot-autoreboot,автомат дахин ачаалах дарааллын>> дагуу, хэрэглэгч `-s` тохируулга ашиглан ачаалах эсвэл `loader`-д `boot_single` хувьсагчийг тохируулж орж болдог.

Мөн man:shutdown[8]-ийг дахин ачаалах `-r` эсвэл зогсоох `-h` тохируулгуудгүйгээр дуудан <<boot-multiuser,олон-хэрэглэгчийн горим>>оос энэ горим уруу орж бас болно.

Хэрэв системийн `консол` нь `insecure буюу аюултай` гэж [.filename]#/etc/ttys#-д тохируулагдсан бол систем ганц-хэрэглэгчийн горимыг эхлүүлэхээсээ өмнө `root` нууц үгийг асуудаг.

[[boot-insecure-console]]
.[.filename]#/etc/ttys# дахь аюултай консол
[example]
====
[.programlisting]
....
# name  getty                           type    status          comments
#
# If console is marked "insecure", then init will ask for the root password
# when going to single-user mode.
console none                            unknown off insecure
....

====

[NOTE]
====
`Аюултай` консол гэдэг нь консолын хувьд физик аюулгүй байдлыг аюултай гэж авч үзэн зөвхөн `root` нууц үгийг мэддэг хэн нэгэн ганц хэрэглэгчийн горимыг ашиглаж болох юм. Тиймээс аюулгүй байдлын энэ аргыг нэмэхийн тулд ``secure буюу аюулгүй``г биш ``insecure буюу аюултай``г сонгоорой.
====

[[boot-multiuser]]
=== Олон-хэрэглэгчийн горим

Хэрэв man:init[8] файлын системийг цэгцтэйг мэдвэл эсвэл хэрэглэгч өөрийн тушаалуудаа <<boot-singleuser,ганц-хэрэглэгчийн горим>>д ажиллуулаад дууссаны дараа системийн эх үүсвэрийн тохиргоог эхлүүлдэг олон-хэрэглэгчийн горим уруу систем ордог.

[[boot-rc]]
==== Эх үүсвэрийн тохиргоо (rc)

Эх үүсвэрийн тохиргооны систем нь [.filename]#/etc/defaults/rc.conf# файлаас тохиргооны анхдагчууд болон системийн тусгайлсан нарийн зүйлүүдийг [.filename]#/etc/rc.conf# файлаас уншиж дараа нь [.filename]#/etc/fstab#-д дурдагдсан системийн файлын системүүдийг холбодог. Сүлжээний үйлчилгээнүүд, бусад системийн дэмонуудыг эхлүүлэн төгсгөлд нь локал суулгагдсан багцуудын эхлүүлэх скриптүүдийг ажиллуулдаг.

Эх үүсвэрүүдийн тохиргооны системүүдийн талаар дэлгэрэнгүйг мэдэхийг хүсвэл man:rc[8] гарын авлагын хуудаснаас харж скриптүүдийг өөрсдийг нь шалгаж үзээрэй.

[[boot-shutdown]]
== Унтраах дараалал

man:shutdown[8] ашиглан хянагдсан унтраалт хийгдэхэд man:init[8] нь [.filename]#/etc/rc.shutdown# скриптийг ажиллуулахыг оролдож дараа нь бүх процессууд уруу `TERM` дохио явуулах бөгөөд дараагаар нь хугацаандаа дуусаагүй процессууд уруу `KILL` дохио илгээдэг.

Тэжээлийн удирдлагыг дэмждэг архитектурууд болон системүүд дээрх FreeBSD машиныг унтраахдаа тэжээлийг даруй унтраахын тулд `shutdown -p now` тушаалыг ашиглаарай. FreeBSD системийг дахин ачаалахдаа `shutdown -r now` тушаалыг ашиглана. man:shutdown[8]-г ажиллуулахын тулд `root` эсвэл `operator` бүлгийн гишүүн байх хэрэгтэй. man:halt[8] болон man:reboot[8] тушаалууд бас ашиглагдаж болно. Тэдгээрийн гарын авлагын хуудсууд болон man:shutdown[8]-ы хуудсанд хандан дэлгэрэнгүй мэдээлэл авна уу.

[NOTE]
====
Тэжээлийн удирдлага нь man:acpi[4]-г модул хэлбэрээр дуудах эсвэл цөмд статикаар орж хөрвүүлэгдсэн байхыг шаарддаг.
====
