Линуксийн хоёртын нийлэмж анхдагчаар идэвхтэй байдаггүй. Энэ ажиллагааг хамгийн
хялбараар идэвхжүүлэхийн тулд линукс
KLD обьектийг
(«Kernel LoaDable обьект») дуудах явдал юм.
Та энэ модулийг дараах тушаалыг root
эрхээр
ажиллуулж дуудаж болно:
#
kldload linux
Хэрэв та Линуксийн нийлэмжийг үргэлж идэвхжүүлэхийг хүсэж байгаа бол
дараах мөрийг /etc/rc.conf
файлд нэмэх
хэрэгтэй:
KLD дуудагдсан эсэхийг шалгахын тулд kldstat(8) тушаалыг ашиглаж болно:
%
kldstat
Id Refs Address Size Name
1 2 0xc0100000 16bdb8 kernel
7 1 0xc24db000 d000 linux.koХэрэв ямар нэгэн шалтгаанаас болоод та KLD-г хүсэхгүй эсвэл дуудаж чадахгүй
байгаа бол options COMPAT_LINUX
тохируулгыг
өөрийн цөмийн тохиргооны файлдаа нэмж Линуксийн хоёртын нийлэмжийг
статикаар холбож болох юм. Дараа нь Бүлэг 9, FreeBSD цөмийг тохируулах нь
хэсэгт тайлбарласны дагуу өөрийн шинэ цөмийг суулгах хэрэгтэй.
linux_base порт юм уу эсвэл тэдгээрийг гараар суулгах гэсэн хоёр аргын аль нэгээр үүнийг хийж болох юм.
Ажиллах үеийн сангуудыг суулгахад ашиглах хамгийн хялбар арга нь энэ юм. Энэ нь ямар нэгэн портыг Портын цуглуулгаас суулгаж байгаатай адил юм. Ердөө л доор дурдсаныг хийх хэрэгтэй:
#
cd /usr/ports/emulators/linux_base-fc10
#
make install distclean
FreeBSD 8.0-с өмнөх FreeBSD системүүд дээр та
emulators/linux_base-f10
-ийн оронд
emulators/linux_base-fc4
портыг
ашиглах ёстой.
Та одоо ажилладаг Линуксийн хоёртын нийлэмжтэй болсон байх ёстой. Зарим програмууд системийн сангуудын буруу бага хувилбаруудын талаар гомдоллож болох юм. Гэхдээ энэ нь ерөнхийдөө асуудал биш байдаг.
Төрөл бүрийн Линукс тархацуудын янз бүрийн хувилбаруудад
тохирох emulators/linux_base
портын олон
хувилбарууд байж болох юм. Таны суулгахыг хүсэж байгаа Линуксийн програмуудын
шаардлагыг аль болох ойр хангаж байгаа тийм портыг та суулгах шаардлагатай.
Хэрэв та «портын» цуглуулга суулгаагүй бол сангуудыг
гараар суулгаж болно. Програмын хамаардаг Линуксийн хуваалцсан сангууд болон
ажиллах үеийн холбогч (linker) танд хэрэгтэй болно. Та бас
«сүүдэр root» сан буюу /compat/linux
санг өөрийн FreeBSD систем дээр Линуксийн сангуудад зориулж үүсгэх хэрэгтэй
болно. FreeBSD дээр ажиллаж байгаа Линуксийн програмуудын онгойлгосон дурын
хуваалцсан сангууд энэ модыг эхлээд хайдаг. Тэгэхээр хэрэв Линуксийн програм
жишээ нь /lib/libc.so
-г дуудвал FreeBSD эхлээд
/compat/linux/lib/libc.so
-г онгойлгохыг
оролдох бөгөөд хэрэв байхгүй бол /lib/libc.so
-г
оролдох болно. Хуваалцсан сангууд нь Линуксийн ld.so
тушаалаар
гарч байгаа замуудад биш харин сүүдэр мод /compat/linux/lib
-т
суулгагдах ёстой.
Ерөнхийдөө таныг Линуксийн програм өөрийн FreeBSD системд суулгах эхний цөөхөн хэдэн удаад зөвхөн Линуксийн хоёртын файлуудын хамаардаг хуваалцсан сангуудыг хайх хэрэгтэй болно. Хэсэг хугацааны дараа та өөрийн систем дээрээ ямар нэгэн илүү ажиллагаагүйгээр шинээр импорт хийгдсэн Линуксийн хоёртын файлуудыг ажиллуулж чадах Линуксийн хуваалцсан сангуудын хангалттай олонлогтой болсон байх болно.
linux_base
портыг суулгасан ч гэсэн
таны програм хуваалцсан сангууд байхгүй байна гээд гомдоллоод байвал
яах вэ? Линуксийн хоёртын файлуудад ямар хуваалцсан сангууд хэрэгтэйг
яаж мэдэх вэ, тэдгээрийг хаанаас авах вэ? Үндсэндээ 2 боломж байдаг
(эдгээр заавруудыг дагаж байхдаа та өөрийн FreeBSD систем дээрээ
root
байх хэрэгтэй болно).
Линукс системд хандах боломжтой бол програмд ямар хуваалцсан сангууд хэрэгтэйг мэдээд тэдгээрийг өөрийн FreeBSD систем уруу хуулах хэрэгтэй. Доорх жишээг харна уу:
Та FTP ашиглан Doom гэсэн
Линуксийн хоёртын файлыг авч өөрөө хандаж болох Линукс систем
дээрээ байрлуулсан гэж үзье. Та тэгээд үүний шаарддаг хуваалцсан
сангуудыг ldd linuxdoom
тушаал
ашиглан иймэрхүүгээр шалгаж болно:
%
ldd linuxdoom
libXt.so.3 (DLL Jump 3.1) => /usr/X11/lib/libXt.so.3.1.0
libX11.so.3 (DLL Jump 3.1) => /usr/X11/lib/libX11.so.3.1.0
libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29Та сүүлийн баганад байгаа бүх файлуудыг авч эхний баганад байгаа нэрсийг
тэдгээр уруу заасан симболын холбоосууд болгон
/compat/linux
дотор байрлуулах хэрэгтэй.
Энэ нь та өөрийн FreeBSD системдээ эцсийн эцэст эдгээр файлуудтай
болно гэсэн үг юм:
Тэмдэглэл:
Хэрэв та
ldd
тушаалын гаралтын эхний баганатай Линуксийн хуваалцсан сангийн гол залруулалтын дугаар таарсан тийм Линуксийн хуваалцсан сантай байгаа бол сүүлийн баганад байгаа файлуудыг өөрийн систем уруу хуулах шаардлагагүй бөгөөд танд байгаа чинь ажиллах ёстойг санаарай. Хэрэв шинэ хувилбар бол хуваалцсан санг ямар ч байсан хуулахыг зөвлөдөг. Та шинэ уруу заасан симболын холбоос үүсгэснийхээ дараа хуучинг устгаж болно. Тэгэхээр хэрэв эдгээр сангууд таны өөрийн системд байгаа:/compat/linux/lib/libc.so.4.6.27 /compat/linux/lib/libc.so.4 -> libc.so.4.6.27бөгөөд шинэ сан нь
ldd
тушаалын гаралтын дагуу сүүлийн хувилбарыг шаардана гэж байгааг мэдвэл:libc.so.4 (DLL Jump 4.5pl26) -> libc.so.4.6.29Хэрэв төгсөж байгаа тоон дээр зөвхөн нэг юм уу эсвэл хоёр хувилбар хуучин байгаа бол
/lib/libc.so.4.6.29
-г бас хуулж санаагаа зовоогоод хэрэггүй бөгөөд програм нь нэлээн хуучин хувилбартай зүгээр ажиллах ёстой юм. Гэхдээ хэрэв та хүсэж байгаа болlibc.so
-г ямар ч байсан гэсэн солихоор шийдэж болох бөгөөд энэ нь таныг доорхтой үлдээх болно:/compat/linux/lib/libc.so.4.6.29 /compat/linux/lib/libc.so.4 -> libc.so.4.6.29
Тэмдэглэл:
Симболын холбоосын арга нь зөвхөн Линукс хоёртын файлуудад хэрэгтэй байдаг. FreeBSD-ийн ажиллах үеийн холбогч нь таарах гол залруулалтын дугааруудыг хайх талаар өөрөө санаа тавьдаг болохоор та санаа зовох хэрэггүй юм.
ELF хоёртын файлууд нь заримдаа «branding» буюу «тамгалах» нэмэлт алхмыг шаарддаг. Хэрэв та тамгалаагүй ELF хоёртын файлыг ажиллуулахыг оролдвол доор дурдсантай төстэй алдааг хүлээн авах болно:
%
./my-linux-elf-binary
ELF binary type not known
AbortFreeBSD цөмд FreeBSD ELF хоёртын файлыг Линуксийн хоёртын файлаас ялгахад туслахын тулд brandelf(1) хэрэгслийг ашиглана.
%
brandelf -t Linux my-linux-elf-binary
Өнөөдөр GNU хэрэгслийн цуглуулга нь ELF хоёртын файлуудад автоматаар тохирох тамгалалтын мэдээллийг байрлуулдаг. Тэгэхээр энэ алхам нь ирээдүйд бараг л хэрэггүй болох ёстой юм.
FreeBSD нь өөрийн багцын өгөгдлийн сантай бөгөөд бүх портыг (Linux®-ийн портуудыг бас) хянахад ашиглагддаг. Linux®-ийн RPM санг ашигладаггүй (дэмждэггүй).
Гэхдээ хэрэв та Linux®-ийн RPM програм суулгах шаардлагатай бол үүнийг доорх аргаар хийж болно:
#
cd /compat/linux
#
rpm2cpio -q < /path/to/linux.archive.rpm | cpio -id
Дараа нь ELF хоёртын файлуудыг (сангуудыг биш!) brandelf хийх хэрэгтэй. Та суулгаснаа буцаж цэвэрхэн арилгаж чадахгүй боловч энэ нь тест хийхэд чинь хэрэг болж болох юм.
Хэрэв DNS ажиллахгүй байвал эсвэл та ийм мэдэгдэл хүлээн авбал:
Та дараах мөрүүдийг агуулсан
/compat/linux/etc/host.conf
файлыг
тохируулах хэрэгтэй болно:
Энд байгаа order нь /etc/hosts
-г
эхлээд хайж дараа нь DNS-ийг хайна гэж зааж байна.
/compat/linux/etc/host.conf
суугаагүй
үед Линуксийн програмууд FreeBSD-ийн /etc/host.conf
-г
олж нийцгүй FreeBSD-ийн бичлэг байна гэж гомдоллох болно.
Хэрэв та /etc/resolv.conf
файл
ашиглан нэрийн серверийг тохируулаагүй бол bind
гэсэн
үгийг устгах хэрэгтэй.
Энэ болон бусад баримтуудыг ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ хаягаас татаж авч болно.
FreeBSD-ийн талаар
<questions@FreeBSD.org>
хаягтай холбоо барихаасаа өмнө
баримтыг уншина уу.
Энэ бичиг баримттай холбоотой асуулт байвал
<doc@FreeBSD.org>
хаягаар цахим захидал явуулна уу.
Энэ бичиг баримтын орчуулгатай холбоотой асуулт байвал
<admin@mnbsd.org>
хаягаар цахим захидал явуулна уу.