Аюулгүй байдлын засваруудыг хийнэ гэдэг компьютерийн програм хангамж ялангуяа үйлдлийн системийг арчлалтын чухал хэсгийн нэг юм. Удаан хугацааны туршид FreeBSD дээр энэ процесс хялбар биш байлаа. Засваруудыг эх код руу хийж кодыг хоёртын хэлбэр рүү дахин бүтээж дараа нь хоёртын файлуудыг дахин суулгах шаардлагатай байлаа.
Энэ нь одоо тийм биш болсон бөгөөд FreeBSD нь
freebsd-update
гэгддэг хэрэгслийг агуулдаг.
Энэ хэрэгсэл нь хоёр тусдаа функцээр хангадаг. Нэгдүгээрт энэ нь
бүтээлт болон суулгах шаардлагагүйгээр хоёртын аюулгүй байдал болон
алдааны шинэчлэлтүүдийг FreeBSD-ийн үндсэн системд оруулах боломжийг
олгодог. Хоёрдугаарт уг хэрэгсэл бага болон том хувилбарын шинэчлэлтүүдийг
дэмждэг.
Аюулгүй байдлын багаар дэмжигдсэн бүх архитектур болон
хувилбаруудын хувьд хоёртын шинэчлэлтүүд байдаг. Шинэ хувилбар
руу шинэчлэхээс өмнө хүссэн хувилбарт чинь хамаатай чухал мэдээлэл байж
болох учир одоогийн хувилбарын зарлалуудыг дахин үзэх хэрэгтэй. Тэдгээр
зарлалуудыг дараах холбоосоос үзэж болно:
http://www.FreeBSD.org/releases/
.
Хэрэв crontab
нь freebsd-update
-ийн
боломжуудыг хэрэглэж байвал дараах үйлдлийг эхлэхээс өмнө түүнийг болиулах
хэрэгтэй.
Процессийг илүү хянах боломжтой болгож зарим хэрэглэгчид
/etc/freebsd-update.conf
анхны тохиргооны
файлыг өөрчлөхийг хүсэж болох юм. Тохиргоонууд нь
маш сайн баримтжуулагдсан байдаг боловч дараах хэдэн зүйлийг
арай илүү тайлбарлах шаардлагатай байж болох юм:
# Components of the base system which should be kept updated. Components src world kernel
Энэ өгөгдөл нь FreeBSD-ийн аль хэсгийг шинэчлэхийг хянадаг.
Анхдагчаар эх код, үндсэн систем бүтнээрээ ба цөмийг шинэчлэх
байдаг. Бүрэлдэхүүн хэсгүүд нь суулгах явцад байдагтай адил
байдаг бөгөөд жишээ нь world/games
гэдгийг энд нэмэхэд
тоглоомын засваруудыг хийх боломжийг олгоно. src/bin
гэдгийг
ашиглах нь src/bin
дахь эх кодыг шинэчлэх боломжийг олгодог.
Хамгийн сайн тохиргоо бол үүнийг анхдагчаар нь үлдээх бөгөөд тусгай зүйлс оруулж үүнийг өөрчилснөөр хэрэглэгчид өөрсдийн шинэчлэхийг хүссэн зүйл болгоноо жагсааж оруулах шаардлагатай болно. Ингэснээр эх код болон хоёртын файлуудын хоорондох уялдаа алдагдаж гамшигт үр дагаварт хүргэж болно.
# Paths which start with anything matching an entry in an IgnorePaths # statement will be ignored. IgnorePaths
/bin
эсвэл
/sbin
зэрэг замуудыг
нэмж эдгээр тусгай сангуудыг шинэчлэх процессийн явцад
оролдохгүй орхиж болно. Энэ тохиргоо нь
freebsd-update
локал өөрчлөлтүүдийг
дарж бичихээс хамгаалахад хэрэглэж болно.
# Paths which start with anything matching an entry in an UpdateIfUnmodified # statement will only be updated if the contents of the file have not been # modified by the user (unless changes are merged; see below). UpdateIfUnmodified /etc/ /var/ /root/ /.cshrc /.profile
Заагдсан сангууд дахь тохиргооны файлууд өөрчлөгдөөгүй
тохиолдолд шинэчилнэ. Хэрэглэгчийн хийсэн өөрчлөлтүүд эдгээр
файлуудын автомат шинэчлэлтийг хүчингүй болгоно.
freebsd-update
-г нийлүүлэх явцад
өөрчлөлтүүдийг хадгалахыг тушаах KeepModifiedMetadata
гэсэн өөр нэг тохиргоо байдаг.
# When upgrading to a new FreeBSD release, files which match MergeChanges # will have any local changes merged into the version from the new release. MergeChanges /etc/ /var/named/etc/
freebsd-update
-ийн нийлүүлэхийг оролдох
тохиргооны файлуудтай сангуудын жагсаалт. Файл нийлүүлэх процесс нь
цөөн тохиргоотой mergemaster(8)-тай төстэй diff(1) засварууд
бөгөөд нийлүүлэлтийг эсвэл хүлээн авах юм уу эсвэл засварлагч нээж эсвэл
freebsd-update
ажиллагаагаа зогсоох болно. Эргэлзэж
байвал /etc
санг нөөцөлж аваад
нийлүүлэлтүүдийг хүлээн авах хэрэгтэй. mergemaster
тушаалын
талаар дэлгэрэнгүй мэдээллийг Хэсэг 25.7.11.1, «mergemaster
»-с үзнэ үү.
# Directory in which to store downloaded updates and temporary # files used by FreeBSD Update. # WorkDir /var/db/freebsd-update
Энэ сан нь бүх засварууд болон түр зуурын файлууд байх сан юм. Хэрэглэгч хувилбар шинэчлэлт хийж байвал энэ байрлал нь хамгийн багаар бодоход гигабайт дискийн зайтай байх шаардлагатай.
# When upgrading between releases, should the list of Components be # read strictly (StrictComponents yes) or merely as a list of components # which *might* be installed of which FreeBSD Update should figure out # which actually are installed and upgrade those (StrictComponents no)? # StrictComponents no
yes
гэж тохируулсан үед
freebsd-update
нь Components
буюу
бүрэлдэхүүн хэсгүүдийн жагсаалт бүрэн гэж тооцох бөгөөд жагсаалтаас гадна өөрчлөлт
хийхийг оролдохгүй. freebsd-update
нь
Components
-ийн жагсаалтад хамаарах файл
бүрийг шинэчлэхийг оролдох болно.
Аюулгүй байдлын засварууд нь алсын машин дээр хадгалагддаг бөгөөд дараах тушаал ашиглан татан авч суулгаж болно:
#
freebsd-update fetch
#
freebsd-update install
Хэрэв цөмийн ямар нэг засвар хийгдсэн бол системийг дахин
ачаалах хэрэгтэй. Хэрэв бүгд зөв явагдсан бол систем нь засвар хийгдсэн
байх ёстой бөгөөд freebsd-update
-ийг
cron(8) ажлаас шөнө бүр ажиллуулж болно. Энэ ажлыг хийхэд
дараах мөрийг /etc/crontab
-д хийхэд
хангалттай байх болно:
@daily root freebsd-update cron
Энэ мөр нь өдөр бүр freebsd-update
хэрэгслийг
ажиллуулахыг зааж байна. Ийм аргаар cron
-ий нэмэлт
өгөгдлийг ашиглан freebsd-update
нь зөвхөн
шинэчлэлт байгаа эсэхийг шалгах болно. Хэрэв засварууд байвал тэдгээрийг
автоматаар диск рүү татаж авах бөгөөд гэхдээ засваруудыг хийхгүй.
root
хэрэглэгч рүү захиа илгээгдэх бөгөөд
дараа нь тэд гараар суулгаж болох юм.
Хэрэв ямар нэг зүйл буруу болбол freebsd-update
нь
дараах тушаалаар сүүлийн өөрчлөлтүүдийг буцаах чадвартай байдаг:
#
freebsd-update rollback
Дууссаны дараа цөм эсвэл цөмийн модулиуд өөрчлөгдсөн бол системийг дахин эхлүүлэх хэрэгтэй. Энэ нь шинэ хоёртын файлуудыг санах ой руу дуудах боломжийг FreeBSD-д олгоно.
freebsd-update
хэрэгсэл нь автоматаар
зөвхөн GENERIC
цөмийг шинэчилж чаддаг.
Хэрэв өөрчлөн тохируулсан цөм ашиглагдаж байвал freebsd-update
нь
шинэчлэлтийг хийж дууссаны дараа цөмийг дахин бүтээж суулгах шаардлагатай.
Гэхдээ freebsd-update
нь /boot/GENERIC
(хэрэв байгаа бол)
дахь GENERIC
цөмийг системийн тухайн үеийн (ажиллаж байгаа)
цөм биш байсан ч гэсэн олж шинэчилдэг.
/boot/GENERIC
дахь
GENERIC
цөмийн хуулбарыг үргэлж хадгалах нь ер нь зүйтэй
байдаг. Энэ нь төрөл бүрийн асуудлуудыг шинжлэх болон
Хэсэг 25.2.3, «Major ба Minor буюу Том ба Бага шинэчлэлтүүд»-т тайлбарласны дагуу
freebsd-update
-г ашиглан
хувилбар шинэчлэлтийг хийхэд ач тустай байх болно.
/etc/freebsd-update.conf
дахь анхдагч тохиргоо
өөрчлөгдөөгүй л бол freebsd-update
шинэчлэгдсэн
цөмийн эхийг бусад шинэчлэлттэй цуг суулгах болно. Дараа нь өөрийн өөрчлөн
тохируулсан цөмийг дахин бүтээж суулгахдаа энгийн сурсан аргаараа хийж
болно.
freebsd-update
-аар түгээгдсэн шинэчлэлтүүд нь
цөмтэй үргэлж холбоотой байдаггүй. freebsd-update install
тушаалаар цөмийн эх өөрчлөгдөөгүй бол өөрийн өөрчлөн тохируулсан цөмийг дахин
бүтээх шаардлагагүй юм. Гэхдээ freebsd-update
тушаал /usr/src/sys/conf/newvers.sh
файлыг
үргэлж шинэчлэх болно. Тухайн үеийн нөхөөсийн түвшинг (uname -r
тушаалаас гарсан -p
дугаараар заагдсан) энэ файлаас
авдаг. Өөр бусад юмс өөрчлөгдөөгүй байсан ч гэсэн өөрийн өөрчлөн тохируулсан
цөмийг дахин бүтээх нь системийн тухайн үеийн нөхөөсийн түвшинг зөв гаргах
боломжийг uname(1)-д олгоно. Энэ нь олон системийг арчилж байгаа үед
ялангуяа ач тустай байдаг бөгөөд ингэснээр тэр системүүд дээр суулгагдсан
шинэчлэлтүүдэд түргэн шуурхай үнэлгээ өгөх боломжийг олгодог.
Энэ процесс нь ихэнх гуравдагч талын прорамуудыг эвдэх хуучин обьект файлууд болон сангуудыг устгах болно. Бүх суулгагдсан портуудыг устгаж дахин суулгах эсвэл ports-mgmt/portupgrade хэрэгсэл ашиглан сүүлд нь шинэчлэхийг зөвлөдөг. Дараах тушаалыг ашиглан ихэнх хэрэглэгчид тест бүтээлтийг ажиллуулахыг хүснэ:
#
portupgrade -af
Энэ нь бүгдийг зөв дахин суулгах баталгаа болох юм.
BATCH
орчны хувьсагчийг yes
гэж тохируулснаар энэ процессийн явцад гарч ирэх хүлээх мөрөнд
yes
гэж хариулан бүтээх процессийн
үед оролцох шаардлагыг үгүй болгоно.
Хэрэв өөрчлөн тохируулсан цөм ашиглагдаж байгаа бол шинэчлэх
процесс арай илүү ажиллагаатай. GENERIC
цөмийн
хуулбар шаардлагатай бөгөөд /boot/GENERIC
-д байрлуулах
шаардлагатай. Хэрэв GENERIC
цөм системд байхгүй
бол үүнийг доор дурдсан аргуудын аль нэгийг ашиглан олж авч болно:
Хэрэв өөрчлөн тохируулсан цөм зөвхөн нэг удаа бүтээгдсэн бол
/boot/kernel.old
дахь
цөм нь GENERIC
цөм юм. Энэ санг
/boot/GENERIC
гэж
өөрчлөхөд л болно.
Машинд физикээр хандах боломжтой гэж тооцвол
GENERIC
цөмийн хуулбарыг CD-ROM зөөвөрлөгчөөс
суулгаж болно. Өөрийн суулгац дискийг хийж дараах тушаалуудыг
ашиглана:
#
mount /cdrom
#
cd /cdrom/X.Y-RELEASE/kernels
#
./install.sh GENERIC
X.Y-RELEASE
-г
өөрийн ашиглаж байгаа хувилбараар солих хэрэгтэй. GENERIC
цөм анхдагчаар /boot/GENERIC
-д суулгагдах болно.
Дээр дурдсан бүгдийг хийх боломжгүй бол GENERIC
цөмийг эхээс нь дахин бүтээж суулгаж болох юм:
#
cd /usr/src
#
env DESTDIR=/boot/GENERIC make kernel
#
mv /boot/GENERIC/boot/kernel/* /boot/GENERIC
#
rm -rf /boot/GENERIC/boot
Энэ цөмийг freebsd-update
хэрэгсэлд
GENERIC
гэж харуулахын тулд GENERIC
тохиргооны файлыг ямар ч тохиолдолд өөрчилсөн байх ёсгүй. Бас ямар нэг
тусгай сонголтуудгүйгээр (аль болох хоосон /etc/make.conf
файлтайгаар) бүтээгдсэн байх ёстойг зөвлөдөг.
Энэ үед GENERIC
цөм рүү дахин ачаалах
шаардлагагүй юм.
Том ба бага хувилбарын шинэчлэлтүүдийг
freebsd-update
тушаалд хувилбарын дугаарыг өгч
гүйцэтгэж болно, жишээ нь дараах тушаал FreeBSD 8.1 руу
шинэчилнэ:
#
freebsd-update -r 8.1-RELEASE upgrade
Тушаал хүлээн авсны дараа freebsd-update
системийг шинэчлэхэд шаардлагатай мэдээллийг цуглуулахын тулд
тохиргооны файл болон одоогийн системийг шалгана. Ямар бүрэлдэхүүн
хэсгүүд илрүүлэгдсэн болон ямар бүрэлдэхүүн хэсгүүд илрүүлэгдээгүй
гэдгийг дэлгэц дээр үзүүлнэ. Жишээ нь:
Looking up update.FreeBSD.org mirrors... 1 mirrors found. Fetching metadata signature for 8.1-RELEASE from update1.FreeBSD.org... done. Fetching metadata index... done. Inspecting system... done. The following components of FreeBSD seem to be installed: kernel/smp src/base src/bin src/contrib src/crypto src/etc src/games src/gnu src/include src/krb5 src/lib src/libexec src/release src/rescue src/sbin src/secure src/share src/sys src/tools src/ubin src/usbin world/base world/info world/lib32 world/manpages The following components of FreeBSD do not seem to be installed: kernel/generic world/catpages world/dict world/doc world/games world/proflibs Does this look reasonable (y/n)? y
Энд хүрэхэд freebsd-update
шинэчлэлтэд
шаардлагатай бүх файлуудыг татан авахаар оролдох болно. Зарим
тохиолдолд хэрэглэгчээс юу суулгах эсвэл хэрхэн цааш үргэлжлүүлэх
талаар асуултууд асууж болох юм.
Өөрчлөн тохируулсан цөмийг ашиглаж байх үед дээрх алхам дараахтай төстэй анхааруулгыг харуулах болно:
WARNING: This system is running a "MYKERNEL
" kernel, which is not a
kernel configuration distributed as part of FreeBSD 8.0-RELEASE.
This kernel will not be updated: you MUST update the kernel manually
before running "/usr/sbin/freebsd-update install"
Энэ анхааруулгыг энэ үед орхигдуулахад аюулгүй байдаг. Шинэчлэгдсэн
GENERIC
цөм шинэчлэлтийн явцад завсрын алхам
болон ашиглагдах болно.
Бүх засварууд локал систем рүү татагдсаны дараа тэдгээрийг
хийж өгөх болно. Машины хурд болон ачааллаас хамаарч энэ процесс нь
хугацаа шаардаж болох юм. Тохиргооны файлуудыг нийлүүлэх болно.
Файл нийлүүлэгдэх юм уу эсвэл гараар нийлүүлэхэд зориулж засварлагч
дэлгэц дээр гарч ирч болох учир процессийн энэ хэсэг хэрэглэгчийн
оролцоо шаардана. Амжилттай нийлүүлэлт болгоны үр дүн хэрэглэгчид
харуулагдаж процесс үргэлжлэх болно. Амжилтгүй болсон эсвэл орхигдсон
нийлүүлэлт нь процессийг зогсоох болно. Хэрэглэгчид нь
/etc
сангийн нөөцийг
хийж master.passwd
эсвэл
group
зэрэг чухал файлуудыг гараар сүүлд нь
нийлүүлэхийг хүсэж болох юм.
Систем нь өөрчлөгдөөгүй байгаа бөгөөд бүх засвар оруулалт болон нийлүүлэлт өөр сан дотор болж байгаа болно. Бүх засварууд амжилттай хийгдэж бүх тохиргооны файлууд нийлүүлэгдэж процесс тэгш явагдаж байгаа мэт санагдвал хэрэглэгч өөрчлөлтүүдийг хийх хэрэгтэй.
Энэ процесс дууссаны дараа шинэчлэлтийг дараах тушаалыг ашиглан диск рүү хийж болно.
#
freebsd-update install
Цөм болон цөмийн модулиудад эхлээд засвар хийнэ. Энэ үед
машиныг дахих ачаалах ёстой. Хэрэв систем өөрчлөн тохируулсан цөмөөр
ажиллаж байгаа бол цөмийг /boot/GENERIC
(шинэчлэгдсэн)
цөмөөр дараа нь ачаалахаар болгохын тулд nextboot(8)-ийг
ашиглана:
#
nextboot -k GENERIC
GENERIC
цөмөөр ачаалахаас өмнө (хэрэв шинэчлэгдэж
байгаа машинд алсаас хандаж байгаа бол сүлжээнд холбогдон) таны систем зөв ачаалахын
тулд шаардлагатай бүх драйверуудыг агуулсан эсэхийг шалгах хэрэгтэй. Ялангуяа
хэрэв өмнө нь ажиллаж байсан өөрчлөн тохируулсан цөм ерөнхийдөө цөмийн модулиудаар
хангагдаж байдаг ажиллагааг өөртөө агуулсан бол /boot/loader.conf
боломжийг ашиглан эдгээр модулиудыг GENERIC
цөмд түр зуур
ачаалахаа мартуузай. Шинэчлэх процесс бүрэн дуустал шаардлагагүй үйлчилгээнүүд, диск
болон сүлжээний холболтууд гэх мэтийг та бас хааж өгч болох юм.
Одоо машин шинэчлэгдсэн цөмөөр ачаалагдах ёстой:
#
shutdown -r now
Систем буцаж ассаны дараа freebsd-update
-г
дахин эхлүүлэх хэрэгтэй. Процессийн төлөв хадгалагдсан болохоор
freebsd-update
эхнээсээ эхлэхгүй бөгөөд бүх
хуучин хуваалцсан сангууд болон обьект файлуудыг устгах болно.
Энэ шатыг үргэлжлүүлэхийн тулд дараах тушаалыг ажиллуулна:
#
freebsd-update install
Сангуудын хувилбарын тоо дээшилсэн эсэхээс хамаарч суулгах гурван шатны оронд хоёр шат байж болох юм.
Бүх гуравдагч талын програм хангамжийг дахин бүтээж дахин суулгах хэрэгтэй. Суулгагдсан програм хангамж нь шинэчлэлтийн процессийн явцад устгагдсан сангуудаас хамаарч болох учраас энэ нь шаардлагатай юм. ports-mgmt/portupgrade тушаалыг үүнийг автоматжуулахад ашиглаж болох юм. Энэ процессийг эхлүүлэхийн тулд дараах тушаалыг хэрэглэж болно:
#
portupgrade -f ruby
#
rm /var/db/pkg/pkgdb.db
#
portupgrade -f ruby18-bdb
#
rm /var/db/pkg/pkgdb.db /usr/ports/INDEX-*.db
#
portupgrade -af
Үүнийг дууссаны дараа шинэчлэлтийн процессийг
freebsd-update
-ийг сүүлийн удаа дуудаж
төгсгөнө. Шинэчлэлтийн процессийн сул байгаа бүх зүйлсийг гүйцээхийн
тулд дараах тушаалыг ажиллуулна:
#
freebsd-update install
Хэрэв GENERIC
цөм түр зуур ашиглагдаж байсан
бол өөрчлөн тохируулсан шинэ цөмийг ердийн хэвшсэн аргаар одоо бүтээж суулгах цаг
болжээ.
Машинаа FreeBSD-ийн шинэ хувилбар руу дахин ачаалах хэрэгтэй. Процесс дууслаа.
freebsd-update
хэрэгслийг
FreeBSD-ийн суулгагдсан хувилбарын төлвийг байгаа зөв хуулбарын
эсрэг тест хийхэд хэрэглэж болно. Энэ сонголт нь системийн хэрэгслүүд
сангууд болон тохиргооны файлуудын одоогийн хувилбаруудыг шалгадаг.
Харьцуулалтыг эхлүүлэхийн тулд дараах тушаалыг ажиллуулна:
#
freebsd-update IDS >> outfile.ids
Тушаалын нэр IDS боловч энэ нь
ямар ч тохиолдолд security/snort зэрэг
халдлага илрүүлэгч системийг солих зориулалттай биш юм.
freebsd-update
нь өгөгдлийг диск дээр
хадгалдаг бөгөөд түүнийг өөрчлөх боломж тодорхой юм.
kern.securelevel
тохиргоог ашиглах болон
freebsd-update
-ийн өгөгдлийг зөвхөн уншигдах файлын
систем дээр ашиглагдаагүй тохиолдолд хадгалах нь энэ боломжийг
багасгах боловч илүү сайн шийдэл нь системийг DVD эсвэл
нууцлаг хадгалсан гадаад USB дискийн төхөөрөмж зэрэг
нууцлаг дисктэй харьцуулах явдал юм.
Систем нь одоо шалгагдах бөгөөд файлууд нь өөрсдийн
sha256(1) утгуудын хамт, хувилбар дахь мэдэгдэж байгаа сайн утгууд болон
одоо суугдсан байгаа утгуудын хамт хэвлэгдэн харуулагдана.
Энэ нь яагаад гаралт outfile.ids
файл руу
илгээгдсэн шалтгаан юм. Үүнийг нүдээр шалгахад хэтэрхий хурдан дээш
гүйж удалгүй консолын буфферийг дүүргэх болно.
Эдгээр мөрүүд нь бас хэтэрхий урт боловч гаралтын хэлбэрийг хялбараар задлан ялгаж болно. Жишээ нь хувилбарт байгаагаас ондоо бүх файлуудын жагсаалтыг авахын тулд дараах тушаалыг ажиллуулна:
#
cat outfile.ids | awk '{ print $1 }' | more
/etc/master.passwd /etc/motd /etc/passwd /etc/pf.conf
Энэ гаралт нь тайрагдсан бөгөөд олон файл байгаа болно.
Эдгээр файлуудын зарим нь төрөлхийн өөрчлөлтүүдтэй байна, жишээ нь
/etc/passwd
нь хэрэглэгч системд нэмэгдсэн
болохоор өөрчлөгдсөн байна. Зарим тохиолдолд
freebsd-update
нь шинэчилсэн байж болзошгүй учир
цөмийн модулиуд зэрэг бусад файлууд өөр байж болох юм.
Тусгай файлууд болон сангуудыг хасахын тулд тэдгээрийг
/etc/freebsd-update.conf
файлын
IDSIgnorePaths
тохиргоонд нэмж өгнө.
Өмнө хэлэлцсэн хувилбараас гадна нарийн нягт шинэчлэлтийн аргын хэсэг болгон энэ системийг ашиглаж болно.
Энэ болон бусад баримтуудыг ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ хаягаас татаж авч болно.
FreeBSD-ийн талаар
<questions@FreeBSD.org>
хаягтай холбоо барихаасаа өмнө
баримтыг уншина уу.
Энэ бичиг баримттай холбоотой асуулт байвал
<doc@FreeBSD.org>
хаягаар цахим захидал явуулна уу.
Энэ бичиг баримтын орчуулгатай холбоотой асуулт байвал
<admin@mnbsd.org>
хаягаар цахим захидал явуулна уу.