Intel®-н Preboot eXecution Environment (PXE) буюу Ачаалалтаас өмнө ажиллуулах орчин нь үйлдлийн системийг сүлжээгээр ачаалах боломжийг олгодог. PXE дэмжлэг орчин үеийн эх хавтангуудын BIOS дээр ихэвчлэн хийгдсэн байдаг бөгөөд BIOS тохиргоонуудад үүнийг идэвхжүүлэн сүлжээгээр ачаалах боломжтой болгодог. Бүрэн хэмжээгээр ажиллах PXE тохиргоотой байхын тулд зөв тохируулсан DHCP болон TFTP сервертэй байхыг шаарддаг.
Хост компьютер ачаалахдаа DHCP-с
TFTP ашиглан эхний ачаалагч дуудагчийг хаанаас авч болох
мэдээллийг авдаг. Энэ мэдээллийг хост компьютер хүлээж
авсныхаа дараа ачаалагч дуудагчийг TFTP-р
татаж аван ажиллуулдаг. Үүнийг
Preboot Execution Environment (PXE)-ийн тодорхойлолт
хаягийн 2.2.1 хэсэг бичсэн байгаа.
FreeBSD дээр PXE процессын явцад хүлээн авсан
ачаалагч дуудагч нь /boot/pxeboot
байна.
/boot/pxeboot
ажилласны дараа FreeBSD-н
цөм дуудагддаг бөгөөд FreeBSD-н бусад ачаалалт хийгддэг.
FreeBSD-н ачаалах процессын талаар дэлгэрэнгүйг Бүлэг 13, FreeBSD-ийн Ачаалах процесс
хэсгээс үзнэ үү.
FreeBSD суулгац байх NFS-р холбож болох санг сонгоно. Жишээ нь
/b/tftpboot/FreeBSD/install
гэх мэт санг ашиглаж
болно.
#
export NFSROOTDIR=/b/tftpboot/FreeBSD/install
#
mkdir -p ${NFSROOTDIR}
Хэсэг 30.3.2, «NFS-н тохиргоог хийх» хэсэг дэх зааврыг даган NFS серверийг идэвхжүүлнэ.
Дараахийг /etc/exports
файлд нэмэн
NFS-р санг экспорт хийнэ:
/b -ro -alldirs
NFS серверийг дахин асаана:
#
service nfsd restart
Хэсэг 30.2.2, «Тохиргоо» хэсэгт заасан алхмуудын дагуу inetd(8)-г идэвхжүүлнэ.
/etc/inetd.conf
-д
дараах мөрийг нэмнэ:
tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /b/tftpboot
inetd-г дахин асаана:
#
service inetd restart
FreeBSD-н цөм болон хэрэглэгчийн талбарыг дахин бүтээнэ:
#
cd /usr/src
#
make buildworld
#
make buildkernel
NFS-р холбогдсон санд FreeBSD-г суулгана:
#
make installworld DESTDIR=${NFSROOTDIR}
#
make installkernel DESTDIR=${NFSROOTDIR}
#
make distribution DESTDIR=${NFSROOTDIR}
TFTP ажиллаж байгааг болон PXE-р дамжин ачаалагч дуудагчийг татаж авч байгаа эсэхийг шалгана:
#
tftp localhost
tftp>get FreeBSD/install/boot/pxeboot
Received 264951 bytes in 0.1 seconds
${NFSROOTDIR}/etc/fstab
-г засварлан root файлын
системийг NFS-р холбох мөрийг үүсгэнэ:
# Device Mountpoint FSType Options Dump Pass myhost.example.com:/b/tftpboot/FreeBSD/install / nfs ro 0 0
myhost.example.com
гэдгийг
таны өөрийн NFS серверийн IP хаяг эсвэл
хостын нэрээр солих хэрэгтэй. Энэ жишээн дээр
NFS хэрэглэгчид root файлын системийн
агуулгыг устгачих магадлалаас хамгаалж root файлын системийг
"зөвхөн унших" эрхээр холбосон байгаа.
chroot(8) орчинд root нууц үгийг тохируулна.
#
chroot ${NFSROOTDIR}
#
passwd
Энэ нь PXE-р ачаалж байгаа хэрэглэгч машинуудад зориулж root нууц үгийг тохируулах болно.
${NFSROOTDIR}/etc/ssh/sshd_config
файлыг
засварлан PermitRootLogin
гэдгийг идэвхжүүлж
PXE-р ачаалж байгаа хэрэглэгч машинуудад
зориулж ssh-р дамжин root хэрэглэгч нэвтрэх боломжийг бүрдүүлнэ.
Үүнийг sshd_config(5)-д тайлбарласан байгаа.
${NFSROOTDIR} дахь chroot(8) орчинд бусад өөрчлөлтүүдийг хийнэ. Эдгээр өөрчлөлтүүдэд pkg_add(1) ашиглан багцууд нэмэх, vipw(8), ашиглан нууц үгийн файлыг засварлах, эсвэл автоматаар холбохын тулд amd.conf(5) харгалзааг засварлах зэрэг орж болно. Жишээ нь:
#
chroot ${NFSROOTDIR}
#
pkg_add -r bash
Хэрэв та NFS root-с ачаалсан бол /etc/rc
нь
NFS-ээр ачаалсныг мэдэж /etc/rc.initdiskless
скриптийг ажиллуулдаг. Юу болж байгааг энэ скрипт доторх тайлбаруудыг
уншиж мэдээрэй. Бид /etc
болон
/var
гэсэн санах ой дээр тулгуурласан
файлын систем үүсгэх хэрэгтэй, учир нь NFS root сан нь зөвхөн
уншигдах эрхтэй бөгөөд эдгээр сангууд нь бичигдэх боломжтой байх
ёстой.
#
chroot ${NFSROOTDIR}
#
mkdir -p conf/base
#
tar -c -v -f conf/base/etc.cpio.gz --format cpio --gzip etc
#
tar -c -v -f conf/base/var.cpio.gz --format cpio --gzip var
Систем ачаалахад /etc
болон /var
-д
зориулсан санах ойн файлын системүүд үүсч холбогдох бөгөөд
cpio.gz
файлуудын агуулга тэдгээр рүү
хуулагдах болно.
PXE нь TFTP болон DHCP сервер тохируулсан байхыг шаарддаг. DHCP сервер нь TFTP сервер байгаа машин дээр заавал байх шаардлагагүй бөгөөд таны сүлжээнээс хандаж болох боломжтой байх ёстой.
Хэсэг 30.5.7, «DHCP Серверийг Суулгах болон Тохируулах» заасан зааврын дагуу
DHCP серверийг суулгана.
/etc/rc.conf
болон
/usr/local/etc/dhcpd.conf
файлуудыг
зөв тохируулсан эсэхийг шалгаарай.
/usr/local/etc/dhcpd.conf
файлын
next-server
, filename
,
болон option root-path
тохиргоонуудад
TFTP-н IP хаяг, TFTP
дэх /boot/pxeboot
хүрэх зам болон
NFS root файлын системийн замыг зааж өгнө.
Жишээ dhcpd.conf
файл ийм байна:
subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.2 192.168.0.3 ; option subnet-mask 255.255.255.0 ; option routers 192.168.0.1 ; option broadcast-address 192.168.0.255 ; option domain-name-server 192.168.35.35, 192.168.35.36 ; option domain-name "example.com"; # IP address of TFTP server next-server 192.168.0.1 ; # path of boot loader obtained # via tftp filename "FreeBSD/install/boot/pxeboot" ; # pxeboot boot loader will try to NFS mount this directory for root FS option root-path "192.168.0.1:/b/tftpboot/FreeBSD/install/" ; }
Хэрэглэгч машин ачаалахдаа BIOS тохиргооны цэс рүү орно. Сүлжээнээс ачаалахыг BIOS-д тохируулна. Хэрэв өмнөх бүх алхмууд зөв бол бүгд "зүгээр л ажиллах ёстой".
PXE ачаалах процессын явцад үүсэх сүлжээний урсгалыг дибаг хийхийн тулд net/wireshark-г ашиглаарай. Үүнийг доорх диаграм дээр дүрсэлсэн байгаа. Хэсэг 32.8.3, «DHCP сервер тохируулах» хэсэгт жишээ тохиргоог харуулсан бөгөөд DHCP, TFTP ба NFS серверүүд нь нэг машин дээр байна. Гэхдээ эдгээр серверүүд нь өөр өөр машин дээр байж болно.
Клиент DHCPDISCOVER цацна. | |
DHCP сервер IP хаяг,
| |
Клиент | |
TFTP сервер клиент рүү хариу өгч
| |
Клиент |
pxeboot
-г TFTP-р
авч болж байгаа эсэхийг шалгаарай. TFTP
сервер дээрээ /var/log/xferlog
файлыг
нээж харан pxeboot
файл зөв газраас
татагдаж байгаа эсэхийг шалгаарай. Дээрх dhcpd.conf
файлын тохиргоог шалгахын тулд:
#
tftp 192.168.0.1
tftp>get FreeBSD/install/boot/pxeboot
Received 264951 bytes in 0.1 seconds
tftpd(8) ба tftp(1) гарын авлагын хуудаснуудыг уншаарай.
TFTP-н зарим нэг хязгаарлалтуудыг
BUGS
хэсэгт тайлбарласан байгаа.
root файлын системийг NFS-р холбож болж
байгаа эсэхийг шалгаарай. Дээрх dhcpd.conf
файлын тохиргоог шалгахын тулд:
#
mount -t nfs 192.168.0.1:/b/tftpboot/FreeBSD/install /mnt
boot.nfsroot.server
болон
boot.nfsroot.path
гэх мэт хувьсагчуудыг
pxeboot
дуудагч хэрхэн тохируулдагийг
src/sys/boot/i386/libi386/pxe.c
файлын
кодыг уншиж ойлгоорой. Эдгээр хувьсагчууд дараагаар нь
src/sys/nfsclient/nfs_diskless.c
файлын
NFS-р дискгүй root холбох кодод ашиглагддаг.
pxeboot(8) болон loader(8) гарын авлагын хуудаснуудыг уншина уу.
Энэ болон бусад баримтуудыг ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ хаягаас татаж авч болно.
FreeBSD-ийн талаар
<questions@FreeBSD.org>
хаягтай холбоо барихаасаа өмнө
баримтыг уншина уу.
Энэ бичиг баримттай холбоотой асуулт байвал
<doc@FreeBSD.org>
хаягаар цахим захидал явуулна уу.
Энэ бичиг баримтын орчуулгатай холбоотой асуулт байвал
<admin@mnbsd.org>
хаягаар цахим захидал явуулна уу.