Линуксийн Хоёртын Нийлэмж
ЖимМокДахин зохион байгуулж хэсгүүдийг шинэчилсэн
Брайн Н.ХэндиАнхлан хувь нэмэр болгон оруулсан
РичМёрфи
ЦагаанхүүгийнГанболдОрчуулсан
Ерөнхий агуулга
Линуксийн Хоёртын Нийлэмж
хоёртын нийлэмж
Линукс
FreeBSD нь Линуксийг оруулаад хэд хэдэн бусад &unix; төст үйлдлийн системүүдтэй
хоёртын нийлэмжтэй байдаг. Та магадгүй FreeBSD яагаад Линукс хоёртын файлуудыг
ажиллуулж чаддаг байх хэрэгтэй вэ? гэж өөрөөсөө асууж болох юм. Энэ асуултын
хариулт их энгийн. Линукс нь тооцоолох ертөнц дэх хамгийн сүүлийн үеийн
халуун зүйл
болохоор олон компаниуд болон хөгжүүлэгчид зөвхөн
Линуксд зориулж хөгжүүлдэг. Тэгэхээр бидний FreeBSD хэрэглэгчид эдгээр компаниуд болон
хөгжүүлэгчдээс өөрсдийн програмууддаа зориулж FreeBSD-ийн хувилбарууд бичихийг
шалгаахаас өөр аргагүйд хүргэдэг. Гол асуудал нь эдгээр компаниудын ихэнх нь
өөрсдийнх нь бүтээгдэхүүн бас FreeBSD дээрх хувилбартай байсан бол
хэр олон хүмүүс ашиглахыг яг үнэндээ бодож байгаагүй бөгөөд ихэнх нь зөвхөн
Линуксд зориулж хөгжүүлэлт хийсээр байдаг. Тэгэхээр FreeBSD хэрэглэгчид юу
хийх вэ? Яг энэ үед Линуксийн хоёртын нийлэмж хэрэг болдог билээ.
Товчхондоо нийлэмж нь FreeBSD хэрэглэгчдэд Линуксийн бүх програмуудын
ойролцоогоор 90%-ийг засваргүйгээр ажиллуулах боломжийг олгодог. Эдгээрт
&staroffice;,
&netscape;-ийн Линуксийн хувилбар,
&adobe; &acrobat;,
&realplayer;,
&oracle;,
&wordperfect;, Doom,
Quake зэрэг олон програмууд орно.
Зарим тохиолдолд Линуксийн хоёртын файлууд нь Линукс дээр байгаагаас
илүү хурдан FreeBSD дээр ажилладаг тохиолдол гарсан байна.
Гэхдээ зарим нэг Линуксд зөвхөн зориулагдсан үйлдлийн системийн
боломжууд FreeBSD дээр дэмжигдээгүй байдаг. Хэрэв Линуксийн хоёртын файлууд нь
виртуал 8086 горимыг идэвхжүүлэх зэрэг зөвхөн &i386;-д зориулсан дуудлагуудыг
ихээр ашиглаж байгаа үед ажилладаггүй.
Энэ бүлгийг уншиж дууссаны дараа та дараах зүйлсийг мэдэх болно:
Өөрийн систем дээр Линуксийн хоёртын нийлэмжийг хэрхэн идэвхжүүлэх талаар.
Линуксийн нэмэлт хуваалцсан сангуудыг хэрхэн суулгах талаар.
Өөрийн FreeBSD систем дээр Линуксийн програмуудыг хэрхэн суулгах талаар.
FreeBSD дээрх Линуксийн нийлэмжийн шийдлийн нарийн учруудын талаар.
Энэ бүлгийг уншихаасаа өмнө, та дараах зүйлсийг мэдэх шаардлагатай:
Гуравдагчдын бүтээсэн програм хангамжуудыг хэрхэн суулгах талаар мэдэх ().
Суулгалт
KLD (цөмд дуудагдах боломжтой обьект)
Линуксийн хоёртын нийлэмж анхдагчаар идэвхтэй байдаггүй. Энэ ажиллагааг хамгийн
хялбараар идэвхжүүлэхийн тулд линукс KLD обьектийг
(Kernel LoaDable обьект
) дуудах явдал юм.
Та энэ модулийг дараах тушаалыг root эрхээр
ажиллуулж дуудаж болно:
&prompt.root; kldload linux
Хэрэв та Линуксийн нийлэмжийг үргэлж идэвхжүүлэхийг хүсэж байгаа бол
дараах мөрийг /etc/rc.conf файлд нэмэх
хэрэгтэй:
linux_enable="YES"
KLD дуудагдсан эсэхийг шалгахын тулд &man.kldstat.8; тушаалыг ашиглаж
болно:
&prompt.user; kldstat
Id Refs Address Size Name
1 2 0xc0100000 16bdb8 kernel
7 1 0xc24db000 d000 linux.ko
цөмийн тохируулгууд
COMPAT_LINUX
Хэрэв ямар нэгэн шалтгаанаас болоод та KLD-г хүсэхгүй эсвэл дуудаж чадахгүй
байгаа бол options COMPAT_LINUX тохируулгыг
өөрийн цөмийн тохиргооны файлдаа нэмж Линуксийн хоёртын нийлэмжийг
статикаар холбож болох юм. Дараа нь
хэсэгт тайлбарласны дагуу өөрийн шинэ цөмийг суулгах хэрэгтэй.
Линуксийн ажиллах үеийн сангуудыг суулгах нь
Линукс
Линуксийн сангуудыг суулгах
linux_base порт
юм уу эсвэл тэдгээрийг гараар суулгах гэсэн
хоёр аргын аль нэгээр үүнийг хийж болох юм.
linux_base портыг суулгаж ашиглах
Портын цуглуулга
Ажиллах үеийн сангуудыг суулгахад ашиглах хамгийн хялбар арга нь энэ
юм. Энэ нь ямар нэгэн портыг
Портын цуглуулгаас
суулгаж байгаатай адил юм. Ердөө л доор дурдсаныг хийх хэрэгтэй:
&prompt.root; cd /usr/ports/emulators/linux_base-fc10
&prompt.root; make install distclean
&os; 8.0-с өмнөх &os; системүүд дээр та
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 тушаал
ашиглан иймэрхүүгээр шалгаж болно:
&prompt.user; 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 системдээ эцсийн эцэст эдгээр файлуудтай
болно гэсэн үг юм:
/compat/linux/usr/X11/lib/libXt.so.3.1.0
/compat/linux/usr/X11/lib/libXt.so.3 -> libXt.so.3.1.0
/compat/linux/usr/X11/lib/libX11.so.3.1.0
/compat/linux/usr/X11/lib/libX11.so.3 -> libX11.so.3.1.0
/compat/linux/lib/libc.so.4.6.29
/compat/linux/lib/libc.so.4 -> libc.so.4.6.29
Хэрэв та 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 хоёртын файлуудыг суулгах
Линукс
ELF хоёртын файлууд
ELF хоёртын файлууд нь заримдаа branding
буюу
тамгалах
нэмэлт алхмыг шаарддаг. Хэрэв та тамгалаагүй
ELF хоёртын файлыг ажиллуулахыг оролдвол доор дурдсантай төстэй алдааг
хүлээн авах болно:
&prompt.user; ./my-linux-elf-binary
ELF binary type not known
Abort
FreeBSD цөмд FreeBSD ELF хоёртын файлыг Линуксийн хоёртын файлаас
ялгахад туслахын тулд &man.brandelf.1; хэрэгслийг ашиглана.
&prompt.user; brandelf -t Linux my-linux-elf-binary
GNU хэрэгслийн цуглуулга
Өнөөдөр GNU хэрэгслийн цуглуулга нь ELF хоёртын файлуудад автоматаар
тохирох тамгалалтын мэдээллийг байрлуулдаг. Тэгэхээр энэ алхам нь
ирээдүйд бараг л хэрэггүй болох ёстой юм.
RPM дээр тулгуурласан линуксын програм суулгах
FreeBSD нь өөрийн багцын өгөгдлийн сантай бөгөөд бүх
портыг (&linux;-ийн портуудыг бас) хянахад ашиглагддаг. &linux;-ийн
RPM санг ашигладаггүй (дэмждэггүй).
Гэхдээ хэрэв та &linux;-ийн RPM програм суулгах шаардлагатай
бол үүнийг доорх аргаар хийж болно:
&prompt.root; cd /compat/linux
&prompt.root; rpm2cpio -q < /path/to/linux.archive.rpm | cpio -id
Дараа нь ELF хоёртын файлуудыг (сангуудыг биш!) brandelf
хийх хэрэгтэй. Та суулгаснаа буцаж цэвэрхэн арилгаж
чадахгүй боловч энэ нь тест хийхэд чинь хэрэг болж болох юм.
Хостын нэр танигчийг тохируулах
Хэрэв DNS ажиллахгүй байвал эсвэл та ийм мэдэгдэл хүлээн авбал:
resolv+: "bind" is an invalid keyword resolv+:
"hosts" is an invalid keyword
Та дараах мөрүүдийг агуулсан
/compat/linux/etc/host.conf файлыг
тохируулах хэрэгтэй болно:
order hosts, bind
multi on
Энд байгаа order нь /etc/hosts-г
эхлээд хайж дараа нь DNS-ийг хайна гэж зааж байна.
/compat/linux/etc/host.conf суугаагүй
үед Линуксийн програмууд FreeBSD-ийн /etc/host.conf-г
олж нийцгүй FreeBSD-ийн бичлэг байна гэж гомдоллох болно.
Хэрэв та /etc/resolv.conf файл
ашиглан нэрийн серверийг тохируулаагүй бол bind гэсэн
үгийг устгах хэрэгтэй.
&mathematica; суулгах нь
БорисХолласMathematica 5.X-д зориулж шинэчилсэн
програмууд
Mathematica
Энэ баримт нь &mathematica; 5.X-ийн
Линукс хувилбарыг FreeBSD систем уруу суулгах процессийг тайлбарлах
болно.
&mathematica; эсвэл
&mathematica; for Students-ийн
Линуксийн хувилбарыг http://www.wolfram.com/ дэх
Wolfram-аас захиалж болно.
&mathematica; суулгагчийг ажиллуулах
Эхлээд &mathematica;-ийн
Линукс хоёртын файлууд Линуксийн ABI-г ашиглана гэдгийг та &os;-д хэлж
өгөх хэрэгтэй. Ингэж хийх хамгийн хялбар арга бол бүх тамгалаагүй
хоёртын файлуудын хувьд анхдагч ELF тамгалалтыг Линукс болгон
дараах тушаалаар тохируулах явдал юм:
&prompt.root; sysctl kern.fallback_elf_brand=3
Энэ нь тамгалаагүй ELF хоёртын файлууд Линуксийн ABI-г
ашиглана гэж бодоход &os;-г хүргэх бөгөөд та суулгагчийг CDROM-оос шууд
ажиллуулах боломжтой болох ёстой.
Одоо MathInstaller файлыг өөрийн
хатуу хөтөч уруу хуулах хэрэгтэй:
&prompt.root; mount /cdrom
&prompt.root; cp /cdrom/Unix/Installers/Linux/MathInstaller /localdir/
бөгөөд энэ файл дахь эхний мөрний /bin/sh-г
/compat/linux/bin/sh гэж солих хэрэгтэй.
Энэ нь суулгагч &man.sh.1;-ийн Линуксийн хувилбарыг ажиллуулахаар
болгож байгаа юм. Дараа нь Linux) гэсэн
бүгдийг FreeBSD) гэдгээр текст засварлагчаар
юм уу эсвэл доорх дараагийн хэсэгт байгаа скриптээр солих хэрэгтэй.
Үйлдлийн системийг тодорхойлохын тулд uname -s
тушаалыг дууддаг &mathematica; суулгагчид
&os;-г Линукс төст үйлдлийн систем гэж үзэхийг энэ нь хэлж өгнө.
MathInstaller-г ажиллуулахад одоо
&mathematica;-г суулгах болно.
&mathematica;-ийн ажиллуулах боломжтой файлуудыг өөрчлөх
Суулгах явцад &mathematica;-ийн
үүсгэсэн бүрхүүлийн скриптүүдийг ашиглахаасаа өмнө өөрчлөх хэрэгтэй.
Хэрэв та &mathematica;-ийн
ажиллуулах боломжтой файлуудыг байрлуулах санд /usr/local/bin-г
сонгосон бол та энэ санд math, mathematica,
Mathematica, болон
MathKernel гэж нэрлэгдсэн файлууд уруу заагдсан
симболын холбоосуудыг олох болно. Эдгээр бүрт Linux)
гэдгийг FreeBSD) гэдгээр текст засварлагчаар
юм уу эсвэл доорх бүрхүүлийн скриптээр солих хэрэгтэй:
#!/bin/sh
cd /usr/local/bin
for i in math mathematica Mathematica MathKernel
do sed 's/Linux)/FreeBSD)/g' $i > $i.tmp
sed 's/\/bin\/sh/\/compat\/linux\/bin\/sh/g' $i.tmp > $i
rm $i.tmp
chmod a+x $i
done
Өөрийн &mathematica; нууц үгийг олж авах
Ethernet
MAC хаяг
&mathematica;-г эхний удаа
эхлүүлэхэд танаас нууц үг асуух болно. Хэрэв та Wolfram-аас нууц үгээ
авч амжаагүй байгаа бол өөрийн машины ID
-г авахын тулд
суулгацын санд mathinfo-г ажиллуулах хэрэгтэй.
Энэ машины ID нь таны эхний Ethernet картны MAC хаяг дээр тулгуурласан
болохоор &mathematica;-ийн
өөрийн хуулбарыг та өөр машинууд дээр ажиллуулж чадахгүй юм.
Wolfram-д цахим захидлаар ч юм уу эсвэл утас, факсаар бүртгүүлэх үедээ
та машины ID
-аа тэдэнд өгөх бөгөөд тэд бүлэг тоонуудаас
тогтох харгалзах нууц үг бүхий хариу өгөх болно.
&mathematica; нүүрэн хэсгийг сүлжээгээр ажиллуулах
&mathematica; нь тэмдэгтүүдийг
үзүүлэхийн тулд аль ч стандарт үсгийн маягуудын олонлогуудад байдаггүй
тусгай үсгийн маягуудыг ашигладаг (интегралууд, нийлбэрүүд, Грек үсгүүд гэх мэт.).
X протокол нь эдгээр үсгийн маягуудыг өөр дээрээ
локалаар суулгахыг шаарддаг. Энэ нь CDROM юм уу эсвэл
&mathematica; суулгагдсан хостоос
эдгээр үсгийн маягуудын хуулбарыг өөрийн локал машин уруу хуулна гэсэн үг юм.
Эдгээр үсгийн маягууд нь CDROM-ийн
/cdrom/Unix/Files/SystemFiles/Fonts сан,
эсвэл таны хатуу хөтчийн /usr/local/mathematica/SystemFiles/Fonts
санд ихэвчлэн хадгалагддаг. Үсгийн жинхэнэ маягууд нь Type1 болон
X дэд сангуудад байрладаг. Доор тайлбарласан
тэдгээрийг ашиглах хэд хэдэн аргууд байдаг.
Эхний арга нь тэдгээрийг /usr/X11R6/lib/X11/fonts
дахь байгаа үсгийн маягийн сангуудын аль нэг уруу хуулах явдал юм. Энэ нь
үсгийн маягийн нэрсийг нэмж, эхний мөрөн дээр үсгийн маягуудын тоог өөрчилж
fonts.dir файлыг засварлахыг шаардана.
Мөн өөрөөр та тэдгээрийг хуулсан санд &man.mkfontdir.1; тушаалыг
ажиллуулж бас чадах ёстой юм.
Үүнийг хийх хоёр дахь арга нь сангуудыг /usr/X11R6/lib/X11/fonts
уруу хуулах явдал юм:
&prompt.root; cd /usr/X11R6/lib/X11/fonts
&prompt.root; mkdir X
&prompt.root; mkdir MathType1
&prompt.root; cd /cdrom/Unix/Files/SystemFiles/Fonts
&prompt.root; cp X/* /usr/X11R6/lib/X11/fonts/X
&prompt.root; cp Type1/* /usr/X11R6/lib/X11/fonts/MathType1
&prompt.root; cd /usr/X11R6/lib/X11/fonts/X
&prompt.root; mkfontdir
&prompt.root; cd ../MathType1
&prompt.root; mkfontdir
Одоо шинэ үсгийн маягийн сангуудаа өөрийн үсгийн маягийн замдаа нэмнэ:
&prompt.root; xset fp+ /usr/X11R6/lib/X11/fonts/X
&prompt.root; xset fp+ /usr/X11R6/lib/X11/fonts/MathType1
&prompt.root; xset fp rehash
Хэрэв та &xorg; серверийг ашиглаж байгаа бол
эдгээр үсгийн маягийн сангуудыг өөрийн xorg.conf файлдаа
нэмэн автоматаар дуудагдахаар тохируулж болно.
үсгийн маягууд
Хэрэв танд /usr/X11R6/lib/X11/fonts/Type1
гэгдсэн сан байхгүй байгаа бол та дээрх жишээн дээрх
MathType1 сангийн нэрийг Type1
болгон өөрчилж болно.
&maple; суулгах нь
АаронКапланХувь нэмэр болгон оруулсан
РобертГэтшманТусалсан
програмууд
Maple
&maple; нь &mathematica;-тай
төстэй арилжааны зориулалтын математикийн програм юм. Та энэ програмыг http://www.maplesoft.com/-с худалдан авч дараа нь тэндээ
лицензийн файл авахын тулд бүртгүүлэх хэрэгтэй. Энэ програм хангамжийг FreeBSD
дээр суулгахын тулд эдгээр хялбар алхмуудыг дагана уу.
INSTALL бүрхүүлийн скриптийг
бүтээгдэхүүний тархацаас ажиллуулна. Суулгац програмаас хүсэхэд
RedHat
тохируулгыг сонгоорой. Ердийн суулгацын
сан нь /usr/local/maple байж болох юм.
Хэрэв та тэгж хийгээгүй бол Maple Waterloo Software
(http://register.maplesoft.com/) компаниас
&maple;-д зориулж лиценз захиж түүнийгээ
/usr/local/maple/license/license.dat сан уруу хуулах
хэрэгтэй.
&maple;-тай цуг ирдэг
INSTALL_LIC суулгацын бүрхүүлийн
скриптийг ажиллуулж FLEXlm
лиценз менежерийг суулгах хэрэгтэй. Лицензийн серверт зориулж өөрийн
машиныхаа анхдагч хостын нэрийг зааж өгнө.
/usr/local/maple/bin/maple.system.type
файлыг доор дурдсанаар нөхөөс хийх хэрэгтэй:
----- snip ------------------
*** maple.system.type.orig Sun Jul 8 16:35:33 2001
--- maple.system.type Sun Jul 8 16:35:51 2001
***************
*** 72,77 ****
--- 72,78 ----
# the IBM RS/6000 AIX case
MAPLE_BIN="bin.IBM_RISC_UNIX"
;;
+ "FreeBSD"|\
"Linux")
# the Linux/x86 case
# We have two Linux implementations, one for Red Hat and
----- snip end of patch -----
"FreeBSD"|\ мөрийн дараа ямар ч хоосон зай байх
ёсгүйг санаарай.
Энэхүү нөхөөс нь FreeBSD
-г Линукс системийн
төрөл маягаар танихыг &maple;-д заадаг.
bin/maple бүрхүүлийн скрипт нь
bin/maple.system.type бүрхүүлийн скриптийг
дуудаж тэр нь эргээд үйлдлийн системийн нэрийг олохын тулд
uname -a тушаалыг дууддаг. OS-ийн нэрээс хамаараад
энэ нь аль хоёртын файлуудаа ашиглахаа олох болно.
Лицензийн серверийг эхлүүлнэ.
/usr/local/etc/rc.d/lmgrd.sh гэж
суулгагдсан дараах скрипт нь lmgrd-г эхлүүлэх
хялбар арга юм:
----- snip ------------
#! /bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin
PATH=${PATH}:/usr/local/maple/bin:/usr/local/maple/FLEXlm/UNIX/LINUX
export PATH
LICENSE_FILE=/usr/local/maple/license/license.dat
LOG=/var/log/lmgrd.log
case "$1" in
start)
lmgrd -c ${LICENSE_FILE} 2>> ${LOG} 1>&2
echo -n " lmgrd"
;;
stop)
lmgrd -c ${LICENSE_FILE} -x lmdown 2>> ${LOG} 1>&2
;;
*)
echo "Usage: `basename $0` {start|stop}" 1>&2
exit 64
;;
esac
exit 0
----- snip ------------
&maple;-ийг тестээр эхлүүлнэ:
&prompt.user; cd /usr/local/maple/bin
&prompt.user; ./xmaple
Одоо ажиллаж байх ёстой. Maplesoft уруу та FreeBSD-ийн
эх хувилбарыг хүсэж байгаагаа бичихээ мартуузай!
Түгээмэл асуудлууд
FLEXlm лицензийн
менежертэй ажиллахад төвөгтэй байж болох юм. Энэ тухай нэмэлт
баримтыг http://www.globetrotter.com/ хаягаас
олж болно.
lmgrd нь лицензийн файлыг хэтэрхий
голж шилдэг, бас хэрэв ямар нэгэн асуудал байвал core файл үүсгэх дуртайгаараа
алдартай програм юм. Зөв лицензийн файл иймэрхүү харагдах ёстой:
# =======================================================
# License File for UNIX Installations ("Pointer File")
# =======================================================
SERVER chillig ANY
#USE_SERVER
VENDOR maplelmg
FEATURE Maple maplelmg 2000.0831 permanent 1 XXXXXXXXXXXX \
PLATFORMS=i86_r ISSUER="Waterloo Maple Inc." \
ISSUED=11-may-2000 NOTICE=" Technische Universitat Wien" \
SN=XXXXXXXXX
Энд сериал дугаар болон түлхүүрийг 'X' болгосон байна.
chillig нь хостын нэр юм.
Лицензийн файлыг засварлахдаа FEATURE
мөрийг
(энэ нь лицензийн түлхүүрээр хамгаалагдсан байдаг) оролдохгүй бол
ямар ч асуудал гарахгүй ажиллах болно.
&matlab; суулгах нь
ДэнПэллэгХувь нэмэр болгон оруулсан
програмууд
MATLAB
Энэ баримт нь &matlab; version 6.5-ийн
Линуксийн хувилбарыг &os; систем уруу суулгах процессийг тайлбарлах болно.
&java.virtual.machine;-г тооцохгүй юм бол
энэ нь маш сайн ажилладаг (-г үзнэ үү).
&matlab;-ийн Линуксийн хувилбарыг
http://www.mathworks.com дэх MathWorks-с шууд захиалж болно.
Лицензийн файлыг авах юм уу эсвэл хэрхэн үүсгэх зааврыг бас авахаа мартуузай.
Тэнд байхдаа тэдний програм хангамжийн &os; хувилбарыг хүсэж байгаагаа
мэдэгдээрэй.
&matlab; суулгах нь
&matlab;-г суулгахын тулд
доор дурдсаныг хийнэ:
Суулгацын CD-г хийж холбоно. Суулгацын скриптийн зөвлөснөөр
root болно. Суулгах скриптийг
эхлүүлэхийн тулд доор дурдсаныг бичнэ:
&prompt.root; /compat/linux/bin/sh /cdrom/install
Суулгагч нь график орчных юм. Хэрэв та дэлгэц онгойлгож
чадахгүй байна гэсэн алдаанууд авбал
setenv HOME ~USER
гэж бичих хэрэгтэй бөгөөд энд байгаа USER нь
таны &man.su.1; хийсэн хэрэглэгч юм.
&matlab;-ийн root санг асуухад
доор дурдсаныг бичнэ:
/compat/linux/usr/local/matlab.
Суулгах процессийн үлдсэн хэсэгт хялбараар бичдэг байхын тулд өөрийн бүрхүүлийн
хүлээх мөрөн дээр үүнийг бичнэ:
set MATLAB=/compat/linux/usr/local/matlab
&matlab; лицензийг авч байхдаа
зааварласны дагуу лицензийн файлыг засварлана.
Өөрийн дуртай засварлагчаа ашиглан та энэ файлыг
урьдчилан бэлдэж, суулгагч танаас үүнийг засварлахыг
асуухаас өмнө $MATLAB/license.dat
уруу хуулна.
Суулгах процессийг гүйцээнэ.
Энд хүрэхэд таны &matlab;
суулгалт дууссан байна. Үүнийг таны &os; систем уруу холбохын тулд
дараах алхмууд нь хийж
өгдөг.
Лицензийн Менежерийн эхлүүлэлт
Лицензийн менежерийн скриптүүдэд зориулж симболын холбоосуудыг үүсгэнэ:
&prompt.root; ln -s $MATLAB/etc/lmboot /usr/local/etc/lmboot_TMW
&prompt.root; ln -s $MATLAB/etc/lmdown /usr/local/etc/lmdown_TMW
/usr/local/etc/rc.d/flexlm.sh-т
эхлүүлэх файлыг үүсгэнэ. Доорх жишээ нь
түгээгдсэн $MATLAB/etc/rc.lm.glnx86-ийн
өөрчлөгдсөн хувилбар юм. Өөрчлөлтүүд нь файлын байрлалууд болон
Линуксийн эмуляц доор ажиллах лицензийн менежерийн
эхлүүлэлт байна.
#!/bin/sh
case "$1" in
start)
if [ -f /usr/local/etc/lmboot_TMW ]; then
/compat/linux/bin/sh /usr/local/etc/lmboot_TMW -u username && echo 'MATLAB_lmgrd'
fi
;;
stop)
if [ -f /usr/local/etc/lmdown_TMW ]; then
/compat/linux/bin/sh /usr/local/etc/lmdown_TMW > /dev/null 2>&1
fi
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac
exit 0
Файлыг ажиллуулахаар болгох ёстой:
&prompt.root; chmod +x /usr/local/etc/rc.d/flexlm.sh
Та дээрх username-г
өөрийн систем дээрх зөв хэрэглэгчээр солих ёстой
(root биш).
Лицензийн менежерийг дараах тушаалаар эхлүүлнэ:
&prompt.root; /usr/local/etc/rc.d/flexlm.sh start
&java;-ийн ажиллах үеийн орчныг холбох
&java; Runtime
Environment (JRE) буюу Ажиллах үеийн орчны холбоосыг
&os; дээр ажиллаж байгаа уруу зааж өөрчлөх хэрэгтэй:
&prompt.root; cd $MATLAB/sys/java/jre/glnx86/
&prompt.root; unlink jre; ln -s ./jre1.1.8 ./jre
&matlab;-ийн эхлүүлэх скриптийг үүсгэх
Дараах эхлүүлэх скриптийг
/usr/local/bin/matlab-д байрлуулна:
#!/bin/sh
/compat/linux/bin/sh /compat/linux/usr/local/matlab/bin/matlab "$@"
Тэгээд chmod +x /usr/local/bin/matlab
тушаалыг бичнэ.
Таны emulators/linux_base
хувилбараас шалтгаалаад энэ скриптийг ажиллуулахад алдаа гарч болох юм.
Үүнээс сэргийлэхийн тулд /compat/linux/usr/local/matlab/bin/matlab
файлыг засварлаж доорх:
if [ `expr "$lscmd" : '.*->.*'` -ne 0 ]; then
(13.0.1 хувилбар дээр энэ нь 410-р мөрөнд байна) мөрийг ингэж
өөрчлөх хэрэгтэй:
if test -L $newbase; then
&matlab;-ийн зогсоох скриптийг үүсгэх
&matlab;-ийн зөв дуусдаггүй асуудлыг шийдэхэд дараах зүйлсийг хийх хэрэгтэй.
$MATLAB/toolbox/local/finish.m
файл үүсгэж түүнд ганц мөр нэмнэ:
! $MATLAB/bin/finish.sh
$MATLAB нь үг юм.
Тэр сан дотроо гарахаас өмнө өөрийн ажлын талбарыг хадгалах
боломжийг олгох finishsav.m болон
finishdlg.m файлуудыг та олох болно.
Хэрэв та тэдгээрийн аль нэгийг ашиглаж байгаа бол дээрх мөрийг
save тушаалын дараа нэн даруй оруулах
хэрэгтэй.
доор дурдсаныг агуулсан
$MATLAB/bin/finish.sh файлыг
үүсгэнэ:
#!/compat/linux/bin/sh
(sleep 5; killall -1 matlab_helper) &
exit 0
Файлыг ажиллах боломжтой болгоно:
&prompt.root; chmod +x $MATLAB/bin/finish.sh
&matlab;-ийг ашиглах
Энд хүрэхэд та matlab
гэж бичин үүнийг ашиглаж эхлэхэд бэлэн болсон байна.
&oracle; суулгах нь
МарселМууленаарХувь нэмэр болгон оруулсан
програмууд
Oracle
Оршил
Энэ баримт нь Линуксд зориулсан &oracle; 8.0.5 болон
&oracle; 8.0.5.1 Enterprise Edition-г FreeBSD машин
уруу суулгах процессийг тайлбарлах болно.
Линуксийн орчныг суулгах
Та emulators/linux_base болон
devel/linux_devtools програмууд
портын цуглуулгаас суусан эсэхийг шалгаарай. Та эдгээр портын хувьд асуудалтай байгаа
бол багцууд юм уу эсвэл портын цуглуулгад байгаа хуучин хувилбаруудыг ашиглах хэрэгтэй
болж болох юм.
Хэрэв та ухаалаг агентийг ажиллуулахыг хүсэж байгаа бол Red Hat Tcl
багц: tcl-8.0.3-20.i386.rpm-г бас суулгах хэрэгтэй болно.
Албан ёсны RPM порттой (archivers/rpm)
багцуудыг суулгах ерөнхий тушаал бол:
&prompt.root; rpm -i --ignoreos --root /compat/linux --dbpath /var/lib/rpm package
package-ийн суулгалт ямар ч алдаа үүсгэх ёсгүй.
&oracle; орчныг үүсгэх
&oracle;-г суулгахаасаа өмнө та тохирох орчныг тохируулах
хэрэгтэй. Энэ баримт нь &oracle;-г суулгах зааварт тайлбарласныг биш
Линуксд зориулсан &oracle;-г
FreeBSD дээр ажиллуулахын тулд яг юу хийхийг зөвхөн тайлбарладаг.
Цөмийг тааруулах
цөмийг тааруулах
&oracle;-г суулгах зааварт тайлбарласнаар хуваалцсан
санах ойн хамгийн их хэмжээг тохируулах хэрэгтэй. FreeBSD дээр SHMMAX-г
битгий ашиглаарай. SHMMAX нь ердөө л SHMMAXPGS болон
PGSIZE-с тооцоологдон гаргагддаг. Тийм болохоор
SHMMAXPGS-г тодорхойл. Бусад бүх тохируулгууд зааварт
тайлбарласны дагуу ашиглагдаж болно. Жишээ нь:
options SHMMAXPGS=10000
options SHMMNI=100
options SHMSEG=10
options SEMMNS=200
options SEMMNI=70
options SEMMSL=61
Эдгээр тохируулгуудыг өөрийн &oracle;-ийн хэрэглээнд
тааруулж тохируулах хэрэгтэй.
Мөн цөмийн тохиргооны файлдаа дараах тохируулгуудтай байгаа эсэхээ бас шалгаарай:
options SYSVSHM #SysV shared memory
options SYSVSEM #SysV semaphores
options SYSVMSG #SysV interprocess communication
&oracle; бүртгэл
Өөр бусад бүртгэл үүсгэдэг шигээ oracle бүртгэл үүсгэнэ.
oracle бүртгэл нь Линуксийн бүрхүүл өгөх шаардлагатай
цорын ганц тусгай бүртгэл юм. /etc/shells файлд
/compat/linux/bin/bash-г нэмээд oracle
хэрэглэгчийн бүрхүүлийг /compat/linux/bin/bash гэж
тохируулна.
Орчин
ORACLE_HOME болон ORACLE_SID зэрэг
ердийн &oracle; хувьсагчуудаас гадна та дараах орчны
хувьсагчуудыг тохируулах ёстой:
Хувьсагч
Утга
LD_LIBRARY_PATH
$ORACLE_HOME/lib
CLASSPATH
$ORACLE_HOME/jdbc/lib/classes111.zip
PATH
/compat/linux/bin
/compat/linux/sbin
/compat/linux/usr/bin
/compat/linux/usr/sbin
/bin
/sbin
/usr/bin
/usr/sbin
/usr/local/bin
$ORACLE_HOME/bin
Бүх орчны хувьсагчуудыг .profile-д тохируулахыг
зөвлөдөг. Гүйцэд жишээ бол дараах байна:
ORACLE_BASE=/oracle; export ORACLE_BASE
ORACLE_HOME=/oracle; export ORACLE_HOME
LD_LIBRARY_PATH=$ORACLE_HOME/lib
export LD_LIBRARY_PATH
ORACLE_SID=ORCL; export ORACLE_SID
ORACLE_TERM=386x; export ORACLE_TERM
CLASSPATH=$ORACLE_HOME/jdbc/lib/classes111.zip
export CLASSPATH
PATH=/compat/linux/bin:/compat/linux/sbin:/compat/linux/usr/bin
PATH=$PATH:/compat/linux/usr/sbin:/bin:/sbin:/usr/bin:/usr/sbin
PATH=$PATH:/usr/local/bin:$ORACLE_HOME/bin
export PATH
&oracle;-ийг суулгах
Линуксийн эмуляторын хайхрамжгүй бүрэн бүтэн бус байдлаас болоод
суулгагчийг эхлүүлэхээсээ өмнө та .oracle
санг /var/tmp дотор үүсгэх хэрэгтэй болдог.
Үүнийг oracle хэрэглэгч эзэмшихээр болгох
хэрэгтэй. Та &oracle;-г ямар ч
асуудалгүйгээр суулгаж чадах ёстой. Хэрэв танд асуудлууд учирвал
эхлээд өөрийн &oracle; тархац ба/эсвэл
тохиргоог шалгах хэрэгтэй! &oracle;-г
суулгасныхаа дараа та дараах хоёр дэд хэсэгт тайлбарласан нөхөөсүүдийг
хийж өгөх хэрэгтэй.
Байнга учирдаг асуудал бол TCP протоколын хувиргагч зөв суулгагдаагүй
байдаг явдал юм. Үүнээс болоод та ямар ч TCP сонсогч эхлүүлж чадахгүй.
Дараах үйлдлүүд нь энэ асуудлыг шийдэхэд тусалдаг:
&prompt.root; cd $ORACLE_HOME/network/lib
&prompt.root; make -f ins_network.mk ntcontab.o
&prompt.root; cd $ORACLE_HOME/lib
&prompt.root; ar r libnetwork.a ntcontab.o
&prompt.root; cd $ORACLE_HOME/network/lib
&prompt.root; make -f ins_network.mk install
root.sh-г дахин ажиллуулахаа битгий мартаарай!
root.sh-д нөхөөс хийх
&oracle;-г суулгаж байхад
root эрхээр хийгдэх шаардлагатай зарим үйлдлүүд
root.sh гэж нэрлэгдсэн бүрхүүлийн скриптэд
бичигдсэн байдаг. Энэ скрипт нь orainst санд
бичигдсэн байдаг. chown тушаалын зөв байрлалыг
ашиглахаар болгож дараах нөхөөсийг root.sh-д
хийх хэрэгтэй, эсвэл өөрөөр скриптийг Линуксийн эх бүрхүүл дээр ажиллуулах
хэрэгтэй.
*** orainst/root.sh.orig Tue Oct 6 21:57:33 1998
--- orainst/root.sh Mon Dec 28 15:58:53 1998
***************
*** 31,37 ****
# This is the default value for CHOWN
# It will redefined later in this script for those ports
# which have it conditionally defined in ss_install.h
! CHOWN=/bin/chown
#
# Define variables to be used in this script
--- 31,37 ----
# This is the default value for CHOWN
# It will redefined later in this script for those ports
# which have it conditionally defined in ss_install.h
! CHOWN=/usr/sbin/chown
#
# Define variables to be used in this script
CD-ээс &oracle;-г та суулгахгүй
үед root.sh-д зориулсан эхийг нөхөж болно.
Үүнийг rthd.sh гэдэг бөгөөд эх модны
orainst санд байрладаг.
genclntsh-д нөхөөс хийх
genclntsh скрипт нь хуваалцсан ганц клиентийн санг
үүсгэхэд ашиглагддаг. Үзүүлбэрүүдийг бүтээж байхад үүнийг ашигладаг.
PATH-н тодорхойлолтыг тайлбар болгохын тулд
дараах нөхөөсийг хийх хэрэгтэй:
*** bin/genclntsh.orig Wed Sep 30 07:37:19 1998
--- bin/genclntsh Tue Dec 22 15:36:49 1998
***************
*** 32,38 ****
#
# Explicit path to ensure that we're using the correct commands
#PATH=/usr/bin:/usr/ccs/bin export PATH
! PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin export PATH
#
# each product MUST provide a $PRODUCT/admin/shrept.lst
--- 32,38 ----
#
# Explicit path to ensure that we're using the correct commands
#PATH=/usr/bin:/usr/ccs/bin export PATH
! #PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin export PATH
#
# each product MUST provide a $PRODUCT/admin/shrept.lst
&oracle;-г ажиллуулах
Заавруудыг дагасны дараа та &oracle;-г
Линукс дээр ажиллуулж байгаа юм шиг ажиллуулж чадах ёстой.
Нэмэлт сэдвүүд
Хэрэв та Линуксийн хоёртын нийлэмж хэрхэн ажилладгийг мэдэхийг хүсэж байгаа
бол энэ хэсэг нь таны уншихыг хүсэж байгаа хэсэг юм. Доор бичигдсэн зүйлийн ихэнх нь
Тэрри Лэмбэрт tlambert@primenet.com-ийн
&a.chat; руу бичсэн цахим захидал (Message ID:
<199906020108.SAA07001@usr09.primenet.com>)
дээр тулгуурласан байгаа.
Хэрхэн ажилладаг вэ?
ажиллуулах ангилал дуудагч
FreeBSD нь execution class
loader
буюу ажиллуулах ангилал дуудагч гэгддэг хийсвэрлэлттэй байдаг.
Энэ нь &man.execve.2; системийн дуудлага уруу хийгдэх шаантаг юм.
Юу болдог вэ гэхээр FreeBSD нь ямар нэгэн бүрхүүлийн тайлбарлагчид эсвэл
бүрхүүлийн скриптүүдийг ажиллуулахын тулд #! дуудагч
уруу ордог нэг дуудагчийн оронд дуудагчдын жагсаалттай байдаг.
Уламжлалаар бол &unix; тавцангийн дуудагч нь хоёртын файлыг системд
мэдэгдэж байгаа эсэхийг мэдэхийн тулд шидэт тоог
(ерөнхийдөө файлын эхний 4 эсвэл 8 байт) шалгадаг бөгөөд
хэрэв мэдэгдэж байвал хоёртын дуудагчийг ажиллуулдаг ганц дуудагч юм.
Хэрэв энэ нь системд зориулагдсан хоёртын төрөл биш бол &man.execve.2;
дуудлага амжилгүй болон буцаж бүрхүүл үүнийг бүрхүүлийн тушаалууд маягаар
ажиллуулж эхлэхийг оролддог.
Тухайн үеийн бүрхүүл ямар байгаа
түүнийг анхдагч гэж
таамагладаг.
Дараа нь эхний хоёр тэмдэгтүүдийг шалгах засварыг (hack) &man.sh.1;-д
зориулж хийсэн бөгөөд хэрэв тэдгээр нь :\n бол энэ нь
&man.csh.1; бүрхүүлийг ажиллуулдаг (энэ засварыг SCO анхлан хийсэн гэж
бид итгэдэг).
Төгсгөлийн дараах дараагийн хоосон зайны дараа байдаг тэмдэгтүүдийн дараа
/bin/sh уруу буцдаг тэмдэгтүүд байдаг болохоор
одоо FreeBSD юу хийдэг вэ гэхээр дуудагчдын жагсаалтаар тайлбарлагчдын талаар
мэддэг ерөнхий #! дуудагчтай явдаг.
ELF
Линуксийн ABI дэмжлэгийн хувьд FreeBSD нь шидэт тоог ELF хоёртын файл
гэж хардаг (одоогоор энэ нь FreeBSD, &solaris;, Линукс болон ELF дүрсний төрөл бүхий
бусад OS-ийг хооронд нь ялгадаггүй).
Solaris
ELF дуудагч нь тусгай тамга хайдаг бөгөөд
энэ нь ELF дүрс дэх тайлбар хэсэг юм. Энэ нь SVR4/&solaris; ELF хоёртын
файлуудад байдаггүй.
Линукс хоёртын файлууд нь ажиллахын тулд тэдгээр нь
&man.brandelf.1;-ээр Линукс гэж тамгалагдах
ёстой байдаг:
&prompt.root; brandelf -t Linux file
Үүнийг хийсний дараа ELF дуудагч нь файлд
Линукс тамгыг харах болно.
ELF
тамгалах
ELF дуудагч Линукс тамгыг харах үед дуудагч
proc бүтэц дэх заагчийг сольдог. Энэ заагчаар
бүх системийн дуудлагууд индекслэгддэг (уламжлалт &unix; систем дээр
энэ нь системийн дуудлагуудыг агуулах sysent[]
бүтцийн массив байх юм). Үүнээс гадна процесс нь дохионы трамплиний
кодонд зориулсан занга векторыг тусгайлан зохицуулахад болон Линуксийн
цөмийн модулиар зохицуулагддаг бусад хэд хэдэн (жижиг) засваруудад
зориулагдаж тэмдэглэгддэг.
Линукс системийн дуудлагын вектор нь бусад зүйлүүдээс гадна
цөмийн модульд хаягууд нь байдаг sysent[] оруулгуудын
жагсаалтыг агуулдаг.
Системийн дуудлага Линуксийн хоёртын файлаар дуудагдахад занга код
системийн дуудлагын функц заагчийн хаягийг proc бүтцээс
авч FreeBSD-ийн биш Линуксийн системийн дуудлагын оруулгын цэгүүдийг
авдаг.
Мөн Линукс горим нь хайлтыг динамикаар дахин эхлүүлдэг;
энэ нь файлын системийн холболтууд дахь тохируулга
(unionfs файлын системийн төрөл биш!)
хийдэг тэр зүйл юм. Эхлээд /compat/linux/original-path
сан дахь файлыг хайх бөгөөд дараа нь хэрэв энэ нь
амжилтгүй болвол хайлт
/original-path
санд хийгддэг. Энэ нь бусад хоёртын файлуудыг шаарддаг хоёртын файлуудыг
ажиллаж чадахаар (өөрөөр хэлбэл Линуксийн хэрэгслийн цуглуулга
бүгдээрээ Линуксийн ABI дэмжлэгийн доор ажиллаж чаддаг байхаар) болгодог.
Линуксийн хоёртын файлууд нь тохирох Линуксийн хоёртын файлууд байхгүй бол
FreeBSD-ийн хоёртын файлуудыг дуудаж ажиллуулж бас чадна гэсэн үг бөгөөд
Линуксийн хоёртын файлуудыг Линукс дээр ажиллахгүй байгааг нь хэлж чадахааргүй
болгохын тулд та &man.uname.1; тушаалыг /compat/linux
санд байрлуулж болно гэсэн үг юм.
Үндсэндээ Линуксийн цөм FreeBSD цөмд байдаг; цөмийн үзүүлдэг
бүх үйлчилгээнүүдийг хийдэг, доор нь орших төрөл бүрийн функцууд нь
FreeBSD-ийн системийн дуудлагын хүснэгтийн оруулгууд болон
Линуксийн системийн дуудлагын хүснэгтийн оруулгуудтай ижил байдаг:
файлын системийн үйлдлүүд, виртуал санах ойн үйлдлүүд, дохио
хүргэлт, System V IPC, гэх мэт… Цорын ганц ялгаа нь
FreeBSD-ийн хоёртын файлууд FreeBSD-ийн цавуу
функцуудыг, Линуксийн хоёртын файлууд Линуксийн цавуу
функцуудыг авдаг явдал юм (ихэнх хуучин OS-үүд зөвхөн өөрсдийн цавуу
функцуудтай байсан: дуудлага хийж байгаа процессийн proc бүтэц дэх
динамикаар эхлүүлэгдсэн заагчаар хийгдсэн функцуудын хаягуудын оронд
статик глобал sysent[] бүтцийн
массив дахь функцуудын хаягуудтай байсан).
Аль нь эх FreeBSD ABI вэ? Энэ нь хамаагүй юм.
Үндсэндээ цорын ганц ялгаа нь (зөвхөн одоогоор; эдгээр нь ирээдүйн хувилбаруудад
амархан өөрчлөгдөж болох бөгөөд магадгүй үүний дараагаар хийгдэх байх)
FreeBSD-ийн цавуу функцууд нь
цөмд статикаар холбогдсон байдаг бөгөөд Линуксийн
цавуу функцууд нь статикаар холбогдож эсвэл
тэдгээрт цөмийн модулийн тусламжтайгаар хандаж болдог явдал юм.
Тиймээ, гэхдээ энэ нь жинхэнэ эмуляц мөн үү? Үгүй ээ. Энэ нь ABI шийдэл
болохоос эмуляц биш юм. Ямар ч эмулятор (эсвэл дүр үзүүлэгч (simulator)
(дараагийн асуултыг асуулгахгүйн тулд)) оролцоогүй.
Тэгэхээр яагаад энэ нь заримдаа Линукс эмуляц
гэгддэг
юм бэ? FreeBSD-г худалдахад хэцүү болгохын тулд! Тиймээ,
юу болж байгааг тайлбарлаж байгаагаас өөр зүйлгүй байх тэр үед уламжлалт
шийдэл хийгдсэн болохоор тэр юм; хэрэв та кодыг эмхэтгээгүй эсвэл модулийг дуудаагүй бол
Линуксийн хоёртын файлуудыг FreeBSD ажиллуулдаг гэж хэлэх нь
үнэн биш бөгөөд юу дуудагдсаныг тайлбарлах үг хэрэгтэй байсан болохоор
—Линукс эмулятор
гэсэн үг гарсан юм.