1277 lines
71 KiB
XML
1277 lines
71 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!--
|
||
The FreeBSD Mongolian Documentation Project
|
||
|
||
Original revision 1.147
|
||
|
||
$FreeBSD$
|
||
-->
|
||
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="linuxemu">
|
||
<info><title>Линуксийн Хоёртын Нийлэмж</title>
|
||
<authorgroup>
|
||
<author><personname><firstname>Жим</firstname><surname>Мок</surname></personname><contrib>Дахин зохион байгуулж хэсгүүдийг шинэчилсэн </contrib></author>
|
||
<!-- 22 Mar 2000 -->
|
||
</authorgroup>
|
||
<authorgroup>
|
||
<author><personname><firstname>Брайн Н.</firstname><surname>Хэнди</surname></personname><contrib>Анхлан хувь нэмэр болгон оруулсан </contrib></author>
|
||
<author><personname><firstname>Рич</firstname><surname>Мёрфи</surname></personname></author>
|
||
</authorgroup>
|
||
<authorgroup>
|
||
<author><personname><firstname>Цагаанхүүгийн</firstname><surname>Ганболд</surname></personname><contrib>Орчуулсан </contrib></author>
|
||
</authorgroup>
|
||
</info>
|
||
|
||
|
||
|
||
<sect1 xml:id="linuxemu-synopsis">
|
||
<title>Ерөнхий агуулга</title>
|
||
<indexterm><primary>Линуксийн Хоёртын Нийлэмж</primary></indexterm>
|
||
<indexterm>
|
||
<primary>хоёртын нийлэмж</primary>
|
||
<secondary>Линукс</secondary>
|
||
</indexterm>
|
||
|
||
<para>FreeBSD нь Линуксийг оруулаад хэд хэдэн бусад &unix; төст үйлдлийн системүүдтэй
|
||
хоёртын нийлэмжтэй байдаг. Та магадгүй FreeBSD яагаад Линукс хоёртын файлуудыг
|
||
ажиллуулж чаддаг байх хэрэгтэй вэ? гэж өөрөөсөө асууж болох юм. Энэ асуултын
|
||
хариулт их энгийн. Линукс нь тооцоолох ертөнц дэх хамгийн сүүлийн үеийн
|
||
<quote>халуун зүйл</quote> болохоор олон компаниуд болон хөгжүүлэгчид зөвхөн
|
||
Линуксд зориулж хөгжүүлдэг. Тэгэхээр бидний FreeBSD хэрэглэгчид эдгээр компаниуд болон
|
||
хөгжүүлэгчдээс өөрсдийн програмууддаа зориулж FreeBSD-ийн хувилбарууд бичихийг
|
||
шалгаахаас өөр аргагүйд хүргэдэг. Гол асуудал нь эдгээр компаниудын ихэнх нь
|
||
өөрсдийнх нь бүтээгдэхүүн бас FreeBSD дээрх хувилбартай байсан бол
|
||
хэр олон хүмүүс ашиглахыг яг үнэндээ бодож байгаагүй бөгөөд ихэнх нь зөвхөн
|
||
Линуксд зориулж хөгжүүлэлт хийсээр байдаг. Тэгэхээр FreeBSD хэрэглэгчид юу
|
||
хийх вэ? Яг энэ үед Линуксийн хоёртын нийлэмж хэрэг болдог билээ.</para>
|
||
|
||
<para>Товчхондоо нийлэмж нь FreeBSD хэрэглэгчдэд Линуксийн бүх програмуудын
|
||
ойролцоогоор 90%-ийг засваргүйгээр ажиллуулах боломжийг олгодог. Эдгээрт
|
||
<application>&staroffice;</application>,
|
||
<application>&netscape;</application>-ийн Линуксийн хувилбар,
|
||
<application>&adobe; &acrobat;</application>,
|
||
<application>&realplayer;</application>,
|
||
<application>&oracle;</application>,
|
||
<application>&wordperfect;</application>, <application>Doom</application>,
|
||
<application>Quake</application> зэрэг олон програмууд орно.
|
||
Зарим тохиолдолд Линуксийн хоёртын файлууд нь Линукс дээр байгаагаас
|
||
илүү хурдан FreeBSD дээр ажилладаг тохиолдол гарсан байна.</para>
|
||
|
||
<para>Гэхдээ зарим нэг Линуксд зөвхөн зориулагдсан үйлдлийн системийн
|
||
боломжууд FreeBSD дээр дэмжигдээгүй байдаг. Хэрэв Линуксийн хоёртын файлууд нь
|
||
виртуал 8086 горимыг идэвхжүүлэх зэрэг зөвхөн &i386;-д зориулсан дуудлагуудыг
|
||
ихээр ашиглаж байгаа үед ажилладаггүй.</para>
|
||
|
||
<para>Энэ бүлгийг уншиж дууссаны дараа та дараах зүйлсийг мэдэх болно:</para>
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Өөрийн систем дээр Линуксийн хоёртын нийлэмжийг хэрхэн идэвхжүүлэх талаар.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Линуксийн нэмэлт хуваалцсан сангуудыг хэрхэн суулгах талаар.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Өөрийн FreeBSD систем дээр Линуксийн програмуудыг хэрхэн суулгах талаар.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>FreeBSD дээрх Линуксийн нийлэмжийн шийдлийн нарийн учруудын талаар.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
|
||
<para>Энэ бүлгийг уншихаасаа өмнө, та дараах зүйлсийг мэдэх шаардлагатай:</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Гуравдагчдын бүтээсэн програм хангамжуудыг хэрхэн суулгах талаар мэдэх (<xref linkend="ports"/>).</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
|
||
</sect1>
|
||
|
||
<sect1 xml:id="linuxemu-lbc-install">
|
||
<title>Суулгалт</title>
|
||
|
||
<indexterm><primary>KLD (цөмд дуудагдах боломжтой обьект)</primary></indexterm>
|
||
|
||
<para>Линуксийн хоёртын нийлэмж анхдагчаар идэвхтэй байдаггүй. Энэ ажиллагааг хамгийн
|
||
хялбараар идэвхжүүлэхийн тулд <literal>линукс</literal> KLD обьектийг
|
||
(<quote>Kernel LoaDable обьект</quote>) дуудах явдал юм.
|
||
Та энэ модулийг дараах тушаалыг <systemitem class="username">root</systemitem> эрхээр
|
||
ажиллуулж дуудаж болно:</para>
|
||
|
||
<screen>&prompt.root; <userinput>kldload linux</userinput></screen>
|
||
|
||
<para>Хэрэв та Линуксийн нийлэмжийг үргэлж идэвхжүүлэхийг хүсэж байгаа бол
|
||
дараах мөрийг <filename>/etc/rc.conf</filename> файлд нэмэх
|
||
хэрэгтэй:</para>
|
||
|
||
<programlisting>linux_enable="YES"</programlisting>
|
||
|
||
<para>KLD дуудагдсан эсэхийг шалгахын тулд &man.kldstat.8; тушаалыг ашиглаж
|
||
болно:</para>
|
||
|
||
<screen>&prompt.user; <userinput>kldstat</userinput>
|
||
Id Refs Address Size Name
|
||
1 2 0xc0100000 16bdb8 kernel
|
||
7 1 0xc24db000 d000 linux.ko</screen>
|
||
<indexterm>
|
||
<primary>цөмийн тохируулгууд</primary>
|
||
<secondary>COMPAT_LINUX</secondary>
|
||
</indexterm>
|
||
|
||
<para>Хэрэв ямар нэгэн шалтгаанаас болоод та KLD-г хүсэхгүй эсвэл дуудаж чадахгүй
|
||
байгаа бол <literal>options COMPAT_LINUX</literal> тохируулгыг
|
||
өөрийн цөмийн тохиргооны файлдаа нэмж Линуксийн хоёртын нийлэмжийг
|
||
статикаар холбож болох юм. Дараа нь <xref linkend="kernelconfig"/>
|
||
хэсэгт тайлбарласны дагуу өөрийн шинэ цөмийг суулгах хэрэгтэй.</para>
|
||
|
||
<sect2>
|
||
<title>Линуксийн ажиллах үеийн сангуудыг суулгах нь</title>
|
||
<indexterm>
|
||
<primary>Линукс</primary>
|
||
<secondary>Линуксийн сангуудыг суулгах</secondary>
|
||
</indexterm>
|
||
|
||
<para><link linkend="linuxemu-libs-port">linux_base</link> порт
|
||
юм уу эсвэл тэдгээрийг <link linkend="linuxemu-libs-manually">гараар</link> суулгах гэсэн
|
||
хоёр аргын аль нэгээр үүнийг хийж болох юм.</para>
|
||
|
||
<sect3 xml:id="linuxemu-libs-port">
|
||
<title>linux_base портыг суулгаж ашиглах</title>
|
||
<indexterm><primary>Портын цуглуулга</primary></indexterm>
|
||
|
||
<para>Ажиллах үеийн сангуудыг суулгахад ашиглах хамгийн хялбар арга нь энэ
|
||
юм. Энэ нь ямар нэгэн портыг
|
||
<link linkend="ports">Портын цуглуулга</link>ас
|
||
суулгаж байгаатай адил юм. Ердөө л доор дурдсаныг хийх хэрэгтэй:</para>
|
||
|
||
<screen>&prompt.root; <userinput>cd /usr/ports/emulators/linux_base-fc10</userinput>
|
||
&prompt.root; <userinput>make install distclean</userinput></screen>
|
||
|
||
<note>
|
||
<para>&os; 8.0-с өмнөх &os; системүүд дээр та
|
||
<package>emulators/linux_base-f10</package>-ийн оронд
|
||
<package>emulators/linux_base-fc4</package> портыг
|
||
ашиглах ёстой.</para>
|
||
</note>
|
||
|
||
<para>Та одоо ажилладаг Линуксийн хоёртын нийлэмжтэй болсон байх ёстой.
|
||
Зарим програмууд системийн сангуудын буруу бага хувилбаруудын талаар гомдоллож
|
||
болох юм. Гэхдээ энэ нь ерөнхийдөө асуудал биш байдаг.</para>
|
||
|
||
<note><para>Төрөл бүрийн Линукс тархацуудын янз бүрийн хувилбаруудад
|
||
тохирох <package>emulators/linux_base</package> портын олон
|
||
хувилбарууд байж болох юм. Таны суулгахыг хүсэж байгаа Линуксийн програмуудын
|
||
шаардлагыг аль болох ойр хангаж байгаа тийм портыг та суулгах шаардлагатай.</para></note>
|
||
|
||
</sect3>
|
||
|
||
<sect3 xml:id="linuxemu-libs-manually">
|
||
<title>Сангуудыг гараар суулгах</title>
|
||
|
||
<para>Хэрэв та <quote>портын</quote> цуглуулга суулгаагүй бол сангуудыг
|
||
гараар суулгаж болно. Програмын хамаардаг Линуксийн хуваалцсан сангууд болон
|
||
ажиллах үеийн холбогч (linker) танд хэрэгтэй болно. Та бас
|
||
<quote>сүүдэр root</quote> сан буюу <filename>/compat/linux</filename>
|
||
санг өөрийн FreeBSD систем дээр Линуксийн сангуудад зориулж үүсгэх хэрэгтэй
|
||
болно. FreeBSD дээр ажиллаж байгаа Линуксийн програмуудын онгойлгосон дурын
|
||
хуваалцсан сангууд энэ модыг эхлээд хайдаг. Тэгэхээр хэрэв Линуксийн програм
|
||
жишээ нь <filename>/lib/libc.so</filename>-г дуудвал FreeBSD эхлээд
|
||
<filename>/compat/linux/lib/libc.so</filename>-г онгойлгохыг
|
||
оролдох бөгөөд хэрэв байхгүй бол <filename>/lib/libc.so</filename>-г
|
||
оролдох болно. Хуваалцсан сангууд нь Линуксийн <command>ld.so</command> тушаалаар
|
||
гарч байгаа замуудад биш харин сүүдэр мод <filename>/compat/linux/lib</filename>-т
|
||
суулгагдах ёстой.</para>
|
||
|
||
<para>Ерөнхийдөө таныг Линуксийн програм өөрийн FreeBSD системд суулгах эхний
|
||
цөөхөн хэдэн удаад зөвхөн Линуксийн хоёртын файлуудын хамаардаг хуваалцсан сангуудыг
|
||
хайх хэрэгтэй болно. Хэсэг хугацааны дараа та өөрийн систем дээрээ
|
||
ямар нэгэн илүү ажиллагаагүйгээр шинээр импорт хийгдсэн Линуксийн хоёртын файлуудыг
|
||
ажиллуулж чадах Линуксийн хуваалцсан сангуудын хангалттай олонлогтой
|
||
болсон байх болно.</para>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Нэмэлт хуваалцсан сангуудыг хэрхэн суулгах вэ</title>
|
||
<indexterm><primary>хуваалцсан сангууд</primary></indexterm>
|
||
|
||
<para><filename>linux_base</filename> портыг суулгасан ч гэсэн
|
||
таны програм хуваалцсан сангууд байхгүй байна гээд гомдоллоод байвал
|
||
яах вэ? Линуксийн хоёртын файлуудад ямар хуваалцсан сангууд хэрэгтэйг
|
||
яаж мэдэх вэ, тэдгээрийг хаанаас авах вэ? Үндсэндээ 2 боломж байдаг
|
||
(эдгээр заавруудыг дагаж байхдаа та өөрийн FreeBSD систем дээрээ
|
||
<systemitem class="username">root</systemitem> байх хэрэгтэй болно).</para>
|
||
|
||
<para>Линукс системд хандах боломжтой бол програмд ямар хуваалцсан
|
||
сангууд хэрэгтэйг мэдээд тэдгээрийг өөрийн FreeBSD систем уруу хуулах
|
||
хэрэгтэй. Доорх жишээг харна уу:</para>
|
||
|
||
<informalexample>
|
||
<para>Та FTP ашиглан <application>Doom</application> гэсэн
|
||
Линуксийн хоёртын файлыг авч өөрөө хандаж болох Линукс систем
|
||
дээрээ байрлуулсан гэж үзье. Та тэгээд үүний шаарддаг хуваалцсан
|
||
сангуудыг <command>ldd linuxdoom</command> тушаал
|
||
ашиглан иймэрхүүгээр шалгаж болно:</para>
|
||
|
||
<screen>&prompt.user; <userinput>ldd linuxdoom</userinput>
|
||
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</screen>
|
||
|
||
<indexterm><primary>симболын холбоосууд</primary></indexterm>
|
||
<para>Та сүүлийн баганад байгаа бүх файлуудыг авч эхний баганад байгаа нэрсийг
|
||
тэдгээр уруу заасан симболын холбоосууд болгон
|
||
<filename>/compat/linux</filename> дотор байрлуулах хэрэгтэй.
|
||
Энэ нь та өөрийн FreeBSD системдээ эцсийн эцэст эдгээр файлуудтай
|
||
болно гэсэн үг юм:</para>
|
||
|
||
<screen>/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</screen>
|
||
|
||
<blockquote>
|
||
<note>
|
||
<para>Хэрэв та <command>ldd</command> тушаалын гаралтын
|
||
эхний баганатай Линуксийн хуваалцсан сангийн гол залруулалтын дугаар
|
||
таарсан тийм Линуксийн хуваалцсан сантай байгаа бол сүүлийн баганад
|
||
байгаа файлуудыг өөрийн систем уруу хуулах шаардлагагүй бөгөөд
|
||
танд байгаа чинь ажиллах ёстойг санаарай. Хэрэв шинэ хувилбар
|
||
бол хуваалцсан санг ямар ч байсан хуулахыг зөвлөдөг. Та шинэ уруу
|
||
заасан симболын холбоос үүсгэснийхээ дараа хуучинг устгаж болно.
|
||
Тэгэхээр хэрэв эдгээр сангууд таны өөрийн системд байгаа:</para>
|
||
|
||
<screen>/compat/linux/lib/libc.so.4.6.27
|
||
/compat/linux/lib/libc.so.4 -> libc.so.4.6.27</screen>
|
||
|
||
<para>бөгөөд шинэ сан нь <command>ldd</command> тушаалын
|
||
гаралтын дагуу сүүлийн хувилбарыг шаардана гэж байгааг мэдвэл:</para>
|
||
|
||
<screen>libc.so.4 (DLL Jump 4.5pl26) -> libc.so.4.6.29</screen>
|
||
|
||
<para>Хэрэв төгсөж байгаа тоон дээр зөвхөн нэг юм уу эсвэл хоёр хувилбар
|
||
хуучин байгаа бол <filename>/lib/libc.so.4.6.29</filename>-г
|
||
бас хуулж санаагаа зовоогоод хэрэггүй бөгөөд програм нь нэлээн хуучин
|
||
хувилбартай зүгээр ажиллах ёстой юм. Гэхдээ хэрэв та хүсэж байгаа бол
|
||
<filename>libc.so</filename>-г ямар ч байсан гэсэн солихоор
|
||
шийдэж болох бөгөөд энэ нь таныг доорхтой үлдээх болно:</para>
|
||
|
||
<screen>/compat/linux/lib/libc.so.4.6.29
|
||
/compat/linux/lib/libc.so.4 -> libc.so.4.6.29</screen>
|
||
</note>
|
||
</blockquote>
|
||
|
||
<blockquote>
|
||
<note>
|
||
<para>Симболын холбоосын арга нь <emphasis>зөвхөн</emphasis>
|
||
Линукс хоёртын файлуудад хэрэгтэй байдаг. FreeBSD-ийн ажиллах
|
||
үеийн холбогч нь таарах гол залруулалтын дугааруудыг хайх талаар
|
||
өөрөө санаа тавьдаг болохоор та санаа зовох хэрэггүй юм.</para>
|
||
</note>
|
||
</blockquote>
|
||
</informalexample>
|
||
</sect3>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Линуксийн ELF хоёртын файлуудыг суулгах</title>
|
||
<indexterm>
|
||
<primary>Линукс</primary>
|
||
<secondary>ELF хоёртын файлууд</secondary>
|
||
</indexterm>
|
||
|
||
<para>ELF хоёртын файлууд нь заримдаа <quote>branding</quote> буюу
|
||
<quote>тамгалах</quote> нэмэлт алхмыг шаарддаг. Хэрэв та тамгалаагүй
|
||
ELF хоёртын файлыг ажиллуулахыг оролдвол доор дурдсантай төстэй алдааг
|
||
хүлээн авах болно:</para>
|
||
|
||
<screen>&prompt.user; <userinput>./my-linux-elf-binary</userinput>
|
||
ELF binary type not known
|
||
Abort</screen>
|
||
|
||
<para>FreeBSD цөмд FreeBSD ELF хоёртын файлыг Линуксийн хоёртын файлаас
|
||
ялгахад туслахын тулд &man.brandelf.1; хэрэгслийг ашиглана.</para>
|
||
|
||
<screen>&prompt.user; <userinput>brandelf -t Linux my-linux-elf-binary</userinput></screen>
|
||
|
||
<indexterm><primary>GNU хэрэгслийн цуглуулга</primary></indexterm>
|
||
<para>Өнөөдөр GNU хэрэгслийн цуглуулга нь ELF хоёртын файлуудад автоматаар
|
||
тохирох тамгалалтын мэдээллийг байрлуулдаг. Тэгэхээр энэ алхам нь
|
||
ирээдүйд бараг л хэрэггүй болох ёстой юм.</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>RPM дээр тулгуурласан линуксын програм суулгах</title>
|
||
|
||
<para>FreeBSD нь өөрийн багцын өгөгдлийн сантай бөгөөд бүх
|
||
портыг (&linux;-ийн портуудыг бас) хянахад ашиглагддаг. &linux;-ийн
|
||
RPM санг ашигладаггүй (дэмждэггүй).</para>
|
||
|
||
<para>Гэхдээ хэрэв та &linux;-ийн RPM програм суулгах шаардлагатай
|
||
бол үүнийг доорх аргаар хийж болно:</para>
|
||
|
||
<screen>&prompt.root; <userinput>cd /compat/linux</userinput>
|
||
&prompt.root; <userinput>rpm2cpio -q < /path/to/linux.archive.rpm | cpio -id</userinput></screen>
|
||
|
||
<para>Дараа нь ELF хоёртын файлуудыг (сангуудыг биш!) brandelf
|
||
хийх хэрэгтэй. Та суулгаснаа буцаж цэвэрхэн арилгаж
|
||
чадахгүй боловч энэ нь тест хийхэд чинь хэрэг болж болох юм.</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Хостын нэр танигчийг тохируулах</title>
|
||
|
||
<para>Хэрэв DNS ажиллахгүй байвал эсвэл та ийм мэдэгдэл хүлээн авбал:</para>
|
||
|
||
<screen>resolv+: "bind" is an invalid keyword resolv+:
|
||
"hosts" is an invalid keyword</screen>
|
||
|
||
<para>Та дараах мөрүүдийг агуулсан
|
||
<filename>/compat/linux/etc/host.conf</filename> файлыг
|
||
тохируулах хэрэгтэй болно:</para>
|
||
|
||
<programlisting>order hosts, bind
|
||
multi on</programlisting>
|
||
|
||
<para>Энд байгаа order нь <filename>/etc/hosts</filename>-г
|
||
эхлээд хайж дараа нь DNS-ийг хайна гэж зааж байна.
|
||
<filename>/compat/linux/etc/host.conf</filename> суугаагүй
|
||
үед Линуксийн програмууд FreeBSD-ийн <filename>/etc/host.conf</filename>-г
|
||
олж нийцгүй FreeBSD-ийн бичлэг байна гэж гомдоллох болно.
|
||
Хэрэв та <filename>/etc/resolv.conf</filename> файл
|
||
ашиглан нэрийн серверийг тохируулаагүй бол <literal>bind</literal> гэсэн
|
||
үгийг устгах хэрэгтэй.</para>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 xml:id="linuxemu-mathematica">
|
||
<info><title>&mathematica; суулгах нь</title>
|
||
<authorgroup>
|
||
<author><personname><firstname>Борис</firstname><surname>Холлас</surname></personname><contrib>Mathematica 5.X-д зориулж шинэчилсэн </contrib></author>
|
||
</authorgroup>
|
||
</info>
|
||
|
||
|
||
<indexterm>
|
||
<primary>програмууд</primary>
|
||
<secondary><application>Mathematica</application></secondary>
|
||
</indexterm>
|
||
|
||
<para>Энэ баримт нь <application>&mathematica; 5.X</application>-ийн
|
||
Линукс хувилбарыг FreeBSD систем уруу суулгах процессийг тайлбарлах
|
||
болно.</para>
|
||
|
||
<para><application>&mathematica;</application> эсвэл
|
||
<application>&mathematica; for Students</application>-ийн
|
||
Линуксийн хувилбарыг <uri xlink:href="http://www.wolfram.com/">http://www.wolfram.com/</uri> дэх
|
||
Wolfram-аас захиалж болно.</para>
|
||
|
||
<sect2>
|
||
<title>&mathematica; суулгагчийг ажиллуулах</title>
|
||
|
||
<para>Эхлээд <application>&mathematica;</application>-ийн
|
||
Линукс хоёртын файлууд Линуксийн ABI-г ашиглана гэдгийг та &os;-д хэлж
|
||
өгөх хэрэгтэй. Ингэж хийх хамгийн хялбар арга бол бүх тамгалаагүй
|
||
хоёртын файлуудын хувьд анхдагч ELF тамгалалтыг Линукс болгон
|
||
дараах тушаалаар тохируулах явдал юм:</para>
|
||
|
||
<screen>&prompt.root; <userinput>sysctl kern.fallback_elf_brand=3</userinput></screen>
|
||
|
||
<para>Энэ нь тамгалаагүй ELF хоёртын файлууд Линуксийн ABI-г
|
||
ашиглана гэж бодоход &os;-г хүргэх бөгөөд та суулгагчийг CDROM-оос шууд
|
||
ажиллуулах боломжтой болох ёстой.</para>
|
||
|
||
<para>Одоо <filename>MathInstaller</filename> файлыг өөрийн
|
||
хатуу хөтөч уруу хуулах хэрэгтэй:</para>
|
||
|
||
<screen>&prompt.root; <userinput>mount /cdrom</userinput>
|
||
&prompt.root; <userinput>cp /cdrom/Unix/Installers/Linux/MathInstaller /localdir/</userinput></screen>
|
||
|
||
<para>бөгөөд энэ файл дахь эхний мөрний <literal>/bin/sh</literal>-г
|
||
<literal>/compat/linux/bin/sh</literal> гэж солих хэрэгтэй.
|
||
Энэ нь суулгагч &man.sh.1;-ийн Линуксийн хувилбарыг ажиллуулахаар
|
||
болгож байгаа юм. Дараа нь <literal>Linux)</literal> гэсэн
|
||
бүгдийг <literal>FreeBSD)</literal> гэдгээр текст засварлагчаар
|
||
юм уу эсвэл доорх дараагийн хэсэгт байгаа скриптээр солих хэрэгтэй.
|
||
Үйлдлийн системийг тодорхойлохын тулд <command>uname -s</command>
|
||
тушаалыг дууддаг <application>&mathematica;</application> суулгагчид
|
||
&os;-г Линукс төст үйлдлийн систем гэж үзэхийг энэ нь хэлж өгнө.
|
||
<command>MathInstaller</command>-г ажиллуулахад одоо
|
||
<application>&mathematica;</application>-г суулгах болно.</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>&mathematica;-ийн ажиллуулах боломжтой файлуудыг өөрчлөх</title>
|
||
|
||
<para>Суулгах явцад <application>&mathematica;</application>-ийн
|
||
үүсгэсэн бүрхүүлийн скриптүүдийг ашиглахаасаа өмнө өөрчлөх хэрэгтэй.
|
||
Хэрэв та <application>&mathematica;</application>-ийн
|
||
ажиллуулах боломжтой файлуудыг байрлуулах санд <filename>/usr/local/bin</filename>-г
|
||
сонгосон бол та энэ санд <filename>math</filename>, <filename>mathematica</filename>,
|
||
<filename>Mathematica</filename>, болон
|
||
<filename>MathKernel</filename> гэж нэрлэгдсэн файлууд уруу заагдсан
|
||
симболын холбоосуудыг олох болно. Эдгээр бүрт <literal>Linux)</literal>
|
||
гэдгийг <literal>FreeBSD)</literal> гэдгээр текст засварлагчаар
|
||
юм уу эсвэл доорх бүрхүүлийн скриптээр солих хэрэгтэй:</para>
|
||
|
||
<programlisting>#!/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</programlisting>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Өөрийн &mathematica; нууц үгийг олж авах</title>
|
||
|
||
<indexterm>
|
||
<primary>Ethernet</primary>
|
||
<secondary>MAC хаяг</secondary>
|
||
</indexterm>
|
||
|
||
<para><application>&mathematica;</application>-г эхний удаа
|
||
эхлүүлэхэд танаас нууц үг асуух болно. Хэрэв та Wolfram-аас нууц үгээ
|
||
авч амжаагүй байгаа бол өөрийн <quote>машины ID</quote>-г авахын тулд
|
||
суулгацын санд <command>mathinfo</command>-г ажиллуулах хэрэгтэй.
|
||
Энэ машины ID нь таны эхний Ethernet картны MAC хаяг дээр тулгуурласан
|
||
болохоор <application>&mathematica;</application>-ийн
|
||
өөрийн хуулбарыг та өөр машинууд дээр ажиллуулж чадахгүй юм.</para>
|
||
|
||
<para>Wolfram-д цахим захидлаар ч юм уу эсвэл утас, факсаар бүртгүүлэх үедээ
|
||
та <quote>машины ID</quote>-аа тэдэнд өгөх бөгөөд тэд бүлэг тоонуудаас
|
||
тогтох харгалзах нууц үг бүхий хариу өгөх болно.</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>&mathematica; нүүрэн хэсгийг сүлжээгээр ажиллуулах</title>
|
||
|
||
<para><application>&mathematica;</application> нь тэмдэгтүүдийг
|
||
үзүүлэхийн тулд аль ч стандарт үсгийн маягуудын олонлогуудад байдаггүй
|
||
тусгай үсгийн маягуудыг ашигладаг (интегралууд, нийлбэрүүд, Грек үсгүүд гэх мэт.).
|
||
X протокол нь эдгээр үсгийн маягуудыг <emphasis>өөр дээрээ</emphasis>
|
||
локалаар суулгахыг шаарддаг. Энэ нь CDROM юм уу эсвэл
|
||
<application>&mathematica;</application> суулгагдсан хостоос
|
||
эдгээр үсгийн маягуудын хуулбарыг өөрийн локал машин уруу хуулна гэсэн үг юм.
|
||
Эдгээр үсгийн маягууд нь CDROM-ийн
|
||
<filename>/cdrom/Unix/Files/SystemFiles/Fonts</filename> сан,
|
||
эсвэл таны хатуу хөтчийн <filename>/usr/local/mathematica/SystemFiles/Fonts</filename>
|
||
санд ихэвчлэн хадгалагддаг. Үсгийн жинхэнэ маягууд нь <filename>Type1</filename> болон
|
||
<filename>X</filename> дэд сангуудад байрладаг. Доор тайлбарласан
|
||
тэдгээрийг ашиглах хэд хэдэн аргууд байдаг.</para>
|
||
|
||
<para>Эхний арга нь тэдгээрийг <filename>/usr/X11R6/lib/X11/fonts</filename>
|
||
дахь байгаа үсгийн маягийн сангуудын аль нэг уруу хуулах явдал юм. Энэ нь
|
||
үсгийн маягийн нэрсийг нэмж, эхний мөрөн дээр үсгийн маягуудын тоог өөрчилж
|
||
<filename>fonts.dir</filename> файлыг засварлахыг шаардана.
|
||
Мөн өөрөөр та тэдгээрийг хуулсан санд &man.mkfontdir.1; тушаалыг
|
||
ажиллуулж бас чадах ёстой юм.</para>
|
||
|
||
<para>Үүнийг хийх хоёр дахь арга нь сангуудыг <filename>/usr/X11R6/lib/X11/fonts</filename>
|
||
уруу хуулах явдал юм:</para>
|
||
|
||
<screen>&prompt.root; <userinput>cd /usr/X11R6/lib/X11/fonts</userinput>
|
||
&prompt.root; <userinput>mkdir X</userinput>
|
||
&prompt.root; <userinput>mkdir MathType1</userinput>
|
||
&prompt.root; <userinput>cd /cdrom/Unix/Files/SystemFiles/Fonts</userinput>
|
||
&prompt.root; <userinput>cp X/* /usr/X11R6/lib/X11/fonts/X</userinput>
|
||
&prompt.root; <userinput>cp Type1/* /usr/X11R6/lib/X11/fonts/MathType1</userinput>
|
||
&prompt.root; <userinput>cd /usr/X11R6/lib/X11/fonts/X</userinput>
|
||
&prompt.root; <userinput>mkfontdir</userinput>
|
||
&prompt.root; <userinput>cd ../MathType1</userinput>
|
||
&prompt.root; <userinput>mkfontdir</userinput></screen>
|
||
|
||
<para>Одоо шинэ үсгийн маягийн сангуудаа өөрийн үсгийн маягийн замдаа нэмнэ:</para>
|
||
|
||
<screen>&prompt.root; <userinput>xset fp+ /usr/X11R6/lib/X11/fonts/X</userinput>
|
||
&prompt.root; <userinput>xset fp+ /usr/X11R6/lib/X11/fonts/MathType1</userinput>
|
||
&prompt.root; <userinput>xset fp rehash</userinput></screen>
|
||
|
||
<para>Хэрэв та <application>&xorg;</application> серверийг ашиглаж байгаа бол
|
||
эдгээр үсгийн маягийн сангуудыг өөрийн <filename>xorg.conf</filename> файлдаа
|
||
нэмэн автоматаар дуудагдахаар тохируулж болно.</para>
|
||
|
||
<indexterm><primary>үсгийн маягууд</primary></indexterm>
|
||
|
||
<para>Хэрэв танд <filename>/usr/X11R6/lib/X11/fonts/Type1</filename>
|
||
гэгдсэн сан <emphasis>байхгүй</emphasis> байгаа бол та дээрх жишээн дээрх
|
||
<filename>MathType1</filename> сангийн нэрийг <filename>Type1</filename>
|
||
болгон өөрчилж болно.</para>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 xml:id="linuxemu-maple">
|
||
<info><title>&maple; суулгах нь</title>
|
||
<authorgroup>
|
||
<author><personname><firstname>Аарон</firstname><surname>Каплан</surname></personname><contrib>Хувь нэмэр болгон оруулсан </contrib></author>
|
||
</authorgroup>
|
||
<authorgroup>
|
||
<author><personname><firstname>Роберт</firstname><surname>Гэтшман</surname></personname><contrib>Тусалсан </contrib></author>
|
||
</authorgroup>
|
||
</info>
|
||
|
||
|
||
<indexterm>
|
||
<primary>програмууд</primary>
|
||
<secondary><application>Maple</application></secondary>
|
||
</indexterm>
|
||
|
||
<para><application>&maple;</application> нь <application>&mathematica;</application>-тай
|
||
төстэй арилжааны зориулалтын математикийн програм юм. Та энэ програмыг <uri xlink:href="http://www.maplesoft.com/">http://www.maplesoft.com/</uri>-с худалдан авч дараа нь тэндээ
|
||
лицензийн файл авахын тулд бүртгүүлэх хэрэгтэй. Энэ програм хангамжийг FreeBSD
|
||
дээр суулгахын тулд эдгээр хялбар алхмуудыг дагана уу.</para>
|
||
|
||
<procedure>
|
||
<step><para><filename>INSTALL</filename> бүрхүүлийн скриптийг
|
||
бүтээгдэхүүний тархацаас ажиллуулна. Суулгац програмаас хүсэхэд
|
||
<quote>RedHat</quote> тохируулгыг сонгоорой. Ердийн суулгацын
|
||
сан нь <filename>/usr/local/maple</filename> байж болох юм.</para></step>
|
||
|
||
<step><para>Хэрэв та тэгж хийгээгүй бол Maple Waterloo Software
|
||
(<uri xlink:href="http://register.maplesoft.com/">http://register.maplesoft.com/</uri>) компаниас
|
||
<application>&maple;</application>-д зориулж лиценз захиж түүнийгээ
|
||
<filename>/usr/local/maple/license/license.dat</filename> сан уруу хуулах
|
||
хэрэгтэй.</para></step>
|
||
|
||
<step><para><application>&maple;</application>-тай цуг ирдэг
|
||
<filename>INSTALL_LIC</filename> суулгацын бүрхүүлийн
|
||
скриптийг ажиллуулж <application>FLEXlm</application>
|
||
лиценз менежерийг суулгах хэрэгтэй. Лицензийн серверт зориулж өөрийн
|
||
машиныхаа анхдагч хостын нэрийг зааж өгнө.</para></step>
|
||
|
||
<step><para><filename>/usr/local/maple/bin/maple.system.type</filename>
|
||
файлыг доор дурдсанаар нөхөөс хийх хэрэгтэй:</para>
|
||
<programlisting> ----- 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 -----</programlisting>
|
||
|
||
<para><literal>"FreeBSD"|\</literal> мөрийн дараа ямар ч хоосон зай байх
|
||
ёсгүйг санаарай.</para>
|
||
|
||
<para>Энэхүү нөхөөс нь <quote>FreeBSD</quote>-г Линукс системийн
|
||
төрөл маягаар танихыг <application>&maple;</application>-д заадаг.
|
||
<filename>bin/maple</filename> бүрхүүлийн скрипт нь
|
||
<filename>bin/maple.system.type</filename> бүрхүүлийн скриптийг
|
||
дуудаж тэр нь эргээд үйлдлийн системийн нэрийг олохын тулд
|
||
<command>uname -a</command> тушаалыг дууддаг. OS-ийн нэрээс хамаараад
|
||
энэ нь аль хоёртын файлуудаа ашиглахаа олох болно.</para></step>
|
||
|
||
<step><para>Лицензийн серверийг эхлүүлнэ.</para>
|
||
|
||
<para><filename>/usr/local/etc/rc.d/lmgrd.sh</filename> гэж
|
||
суулгагдсан дараах скрипт нь <command>lmgrd</command>-г эхлүүлэх
|
||
хялбар арга юм:</para>
|
||
|
||
<programlisting> ----- 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 ------------</programlisting></step>
|
||
|
||
|
||
<step><para><application>&maple;</application>-ийг тестээр эхлүүлнэ:</para>
|
||
<screen>&prompt.user; <userinput>cd /usr/local/maple/bin</userinput>
|
||
&prompt.user; <userinput>./xmaple</userinput></screen>
|
||
|
||
<para>Одоо ажиллаж байх ёстой. Maplesoft уруу та FreeBSD-ийн
|
||
эх хувилбарыг хүсэж байгаагаа бичихээ мартуузай!</para></step>
|
||
</procedure>
|
||
|
||
<sect2>
|
||
<title>Түгээмэл асуудлууд</title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para><application>FLEXlm</application> лицензийн
|
||
менежертэй ажиллахад төвөгтэй байж болох юм. Энэ тухай нэмэлт
|
||
баримтыг <uri xlink:href="http://www.globetrotter.com/">http://www.globetrotter.com/</uri> хаягаас
|
||
олж болно.</para></listitem>
|
||
|
||
<listitem><para><command>lmgrd</command> нь лицензийн файлыг хэтэрхий
|
||
голж шилдэг, бас хэрэв ямар нэгэн асуудал байвал core файл үүсгэх дуртайгаараа
|
||
алдартай програм юм. Зөв лицензийн файл иймэрхүү харагдах ёстой:</para>
|
||
|
||
<programlisting># =======================================================
|
||
# 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</programlisting>
|
||
|
||
<note><para>Энд сериал дугаар болон түлхүүрийг 'X' болгосон байна.
|
||
<systemitem>chillig</systemitem> нь хостын нэр юм.</para></note>
|
||
|
||
<para>Лицензийн файлыг засварлахдаа <quote>FEATURE</quote> мөрийг
|
||
(энэ нь лицензийн түлхүүрээр хамгаалагдсан байдаг) оролдохгүй бол
|
||
ямар ч асуудал гарахгүй ажиллах болно.</para></listitem>
|
||
</itemizedlist>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 xml:id="linuxemu-matlab">
|
||
<info><title>&matlab; суулгах нь</title>
|
||
<authorgroup>
|
||
<author><personname><firstname>Дэн</firstname><surname>Пэллэг</surname></personname><contrib>Хувь нэмэр болгон оруулсан </contrib></author>
|
||
<!-- daniel+handbook@pelleg.org -->
|
||
</authorgroup>
|
||
</info>
|
||
|
||
|
||
<indexterm>
|
||
<primary>програмууд</primary>
|
||
<secondary><application>MATLAB</application></secondary>
|
||
</indexterm>
|
||
|
||
<para>Энэ баримт нь <application>&matlab; version 6.5</application>-ийн
|
||
Линуксийн хувилбарыг &os; систем уруу суулгах процессийг тайлбарлах болно.
|
||
<application>&java.virtual.machine;</application>-г тооцохгүй юм бол
|
||
энэ нь маш сайн ажилладаг (<xref linkend="matlab-jre"/>-г үзнэ үү).</para>
|
||
|
||
<para><application>&matlab;</application>-ийн Линуксийн хувилбарыг
|
||
<uri xlink:href="http://www.mathworks.com">http://www.mathworks.com</uri> дэх MathWorks-с шууд захиалж болно.
|
||
Лицензийн файлыг авах юм уу эсвэл хэрхэн үүсгэх зааврыг бас авахаа мартуузай.
|
||
Тэнд байхдаа тэдний програм хангамжийн &os; хувилбарыг хүсэж байгаагаа
|
||
мэдэгдээрэй.</para>
|
||
|
||
<sect2>
|
||
<title>&matlab; суулгах нь</title>
|
||
|
||
<para><application>&matlab;</application>-г суулгахын тулд
|
||
доор дурдсаныг хийнэ:</para>
|
||
|
||
<procedure>
|
||
<step>
|
||
<para>Суулгацын CD-г хийж холбоно. Суулгацын скриптийн зөвлөснөөр
|
||
<systemitem class="username">root</systemitem> болно. Суулгах скриптийг
|
||
эхлүүлэхийн тулд доор дурдсаныг бичнэ:</para>
|
||
|
||
<screen>&prompt.root; <userinput>/compat/linux/bin/sh /cdrom/install</userinput></screen>
|
||
|
||
<tip>
|
||
<para>Суулгагч нь график орчных юм. Хэрэв та дэлгэц онгойлгож
|
||
чадахгүй байна гэсэн алдаанууд авбал
|
||
<command>setenv HOME ~USER</command>
|
||
гэж бичих хэрэгтэй бөгөөд энд байгаа <replaceable>USER</replaceable> нь
|
||
таны &man.su.1; хийсэн хэрэглэгч юм.</para>
|
||
</tip>
|
||
</step>
|
||
|
||
<step>
|
||
<para>
|
||
<application>&matlab;</application>-ийн root санг асуухад
|
||
доор дурдсаныг бичнэ:
|
||
<userinput>/compat/linux/usr/local/matlab</userinput>.</para>
|
||
|
||
<tip>
|
||
<para>Суулгах процессийн үлдсэн хэсэгт хялбараар бичдэг байхын тулд өөрийн бүрхүүлийн
|
||
хүлээх мөрөн дээр үүнийг бичнэ:
|
||
<command>set MATLAB=/compat/linux/usr/local/matlab</command></para>
|
||
</tip>
|
||
</step>
|
||
|
||
<step>
|
||
<para><application>&matlab;</application> лицензийг авч байхдаа
|
||
зааварласны дагуу лицензийн файлыг засварлана.</para>
|
||
|
||
<tip>
|
||
<para>Өөрийн дуртай засварлагчаа ашиглан та энэ файлыг
|
||
урьдчилан бэлдэж, суулгагч танаас үүнийг засварлахыг
|
||
асуухаас өмнө <filename>$MATLAB/license.dat</filename>
|
||
уруу хуулна.</para>
|
||
</tip>
|
||
</step>
|
||
|
||
<step>
|
||
<para>Суулгах процессийг гүйцээнэ.</para>
|
||
</step>
|
||
</procedure>
|
||
|
||
<para>Энд хүрэхэд таны <application>&matlab;</application>
|
||
суулгалт дууссан байна. Үүнийг таны &os; систем уруу холбохын тулд
|
||
дараах алхмууд нь <quote>хийж</quote> өгдөг.</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Лицензийн Менежерийн эхлүүлэлт</title>
|
||
<procedure>
|
||
<step>
|
||
<para>Лицензийн менежерийн скриптүүдэд зориулж симболын холбоосуудыг үүсгэнэ:</para>
|
||
|
||
<screen>&prompt.root; <userinput>ln -s $MATLAB/etc/lmboot /usr/local/etc/lmboot_TMW</userinput>
|
||
&prompt.root; <userinput>ln -s $MATLAB/etc/lmdown /usr/local/etc/lmdown_TMW</userinput></screen>
|
||
</step>
|
||
|
||
<step>
|
||
<para><filename>/usr/local/etc/rc.d/flexlm.sh</filename>-т
|
||
эхлүүлэх файлыг үүсгэнэ. Доорх жишээ нь
|
||
түгээгдсэн <filename>$MATLAB/etc/rc.lm.glnx86</filename>-ийн
|
||
өөрчлөгдсөн хувилбар юм. Өөрчлөлтүүд нь файлын байрлалууд болон
|
||
Линуксийн эмуляц доор ажиллах лицензийн менежерийн
|
||
эхлүүлэлт байна.</para>
|
||
|
||
<programlisting>#!/bin/sh
|
||
case "$1" in
|
||
start)
|
||
if [ -f /usr/local/etc/lmboot_TMW ]; then
|
||
/compat/linux/bin/sh /usr/local/etc/lmboot_TMW -u <replaceable>username</replaceable> && 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</programlisting>
|
||
|
||
<important>
|
||
<para>Файлыг ажиллуулахаар болгох ёстой:</para>
|
||
|
||
<screen>&prompt.root; <userinput>chmod +x /usr/local/etc/rc.d/flexlm.sh</userinput></screen>
|
||
|
||
<para>Та дээрх <replaceable>username</replaceable>-г
|
||
өөрийн систем дээрх зөв хэрэглэгчээр солих ёстой
|
||
(<systemitem class="username">root</systemitem> биш).</para>
|
||
</important>
|
||
</step>
|
||
|
||
<step>
|
||
<para>Лицензийн менежерийг дараах тушаалаар эхлүүлнэ:</para>
|
||
|
||
<screen>&prompt.root; <userinput>/usr/local/etc/rc.d/flexlm.sh start</userinput></screen>
|
||
</step>
|
||
</procedure>
|
||
</sect2>
|
||
|
||
<sect2 xml:id="matlab-jre">
|
||
<title>&java;-ийн ажиллах үеийн орчныг холбох</title>
|
||
|
||
<para><application>&java;</application> Runtime
|
||
Environment (JRE) буюу Ажиллах үеийн орчны холбоосыг
|
||
&os; дээр ажиллаж байгаа уруу зааж өөрчлөх хэрэгтэй:</para>
|
||
|
||
<screen>&prompt.root; <userinput>cd $MATLAB/sys/java/jre/glnx86/</userinput>
|
||
&prompt.root; <userinput>unlink jre; ln -s ./jre1.1.8 ./jre</userinput></screen>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>&matlab;-ийн эхлүүлэх скриптийг үүсгэх</title>
|
||
|
||
<procedure>
|
||
<step>
|
||
<para>Дараах эхлүүлэх скриптийг
|
||
<filename>/usr/local/bin/matlab</filename>-д байрлуулна:
|
||
</para>
|
||
|
||
<programlisting>#!/bin/sh
|
||
/compat/linux/bin/sh /compat/linux/usr/local/matlab/bin/matlab "$@"</programlisting>
|
||
</step>
|
||
|
||
<step>
|
||
<para>Тэгээд <command>chmod +x /usr/local/bin/matlab</command>
|
||
тушаалыг бичнэ.</para>
|
||
</step>
|
||
</procedure>
|
||
|
||
<tip>
|
||
<para>Таны <package>emulators/linux_base</package>
|
||
хувилбараас шалтгаалаад энэ скриптийг ажиллуулахад алдаа гарч болох юм.
|
||
Үүнээс сэргийлэхийн тулд <filename>/compat/linux/usr/local/matlab/bin/matlab</filename>
|
||
файлыг засварлаж доорх:</para>
|
||
|
||
<programlisting>if [ `expr "$lscmd" : '.*->.*'` -ne 0 ]; then</programlisting>
|
||
|
||
<para>(13.0.1 хувилбар дээр энэ нь 410-р мөрөнд байна) мөрийг ингэж
|
||
өөрчлөх хэрэгтэй:</para>
|
||
|
||
<programlisting>if test -L $newbase; then</programlisting>
|
||
</tip>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>&matlab;-ийн зогсоох скриптийг үүсгэх</title>
|
||
|
||
<para>&matlab;-ийн зөв дуусдаггүй асуудлыг шийдэхэд дараах зүйлсийг хийх хэрэгтэй.</para>
|
||
|
||
<procedure>
|
||
<step>
|
||
<para><filename>$MATLAB/toolbox/local/finish.m</filename>
|
||
файл үүсгэж түүнд ганц мөр нэмнэ:</para>
|
||
|
||
<programlisting>! $MATLAB/bin/finish.sh</programlisting>
|
||
|
||
<note><para><literal>$MATLAB</literal> нь үг юм.</para></note>
|
||
|
||
<tip>
|
||
<para>Тэр сан дотроо гарахаас өмнө өөрийн ажлын талбарыг хадгалах
|
||
боломжийг олгох <filename>finishsav.m</filename> болон
|
||
<filename>finishdlg.m</filename> файлуудыг та олох болно.
|
||
Хэрэв та тэдгээрийн аль нэгийг ашиглаж байгаа бол дээрх мөрийг
|
||
<literal>save</literal> тушаалын дараа нэн даруй оруулах
|
||
хэрэгтэй.</para></tip>
|
||
</step>
|
||
|
||
<step>
|
||
<para>доор дурдсаныг агуулсан
|
||
<filename>$MATLAB/bin/finish.sh</filename> файлыг
|
||
үүсгэнэ:</para>
|
||
|
||
<programlisting>#!/compat/linux/bin/sh
|
||
(sleep 5; killall -1 matlab_helper) &
|
||
exit 0</programlisting>
|
||
</step>
|
||
|
||
<step>
|
||
<para>Файлыг ажиллах боломжтой болгоно:</para>
|
||
|
||
<screen>&prompt.root; <userinput>chmod +x $MATLAB/bin/finish.sh</userinput></screen>
|
||
</step>
|
||
</procedure>
|
||
</sect2>
|
||
|
||
<sect2 xml:id="matlab-using">
|
||
<title>&matlab;-ийг ашиглах</title>
|
||
|
||
<para>Энд хүрэхэд та <command>matlab</command>
|
||
гэж бичин үүнийг ашиглаж эхлэхэд бэлэн болсон байна.</para>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 xml:id="linuxemu-oracle">
|
||
<info><title>&oracle; суулгах нь</title>
|
||
<authorgroup>
|
||
<author><personname><firstname>Марсел</firstname><surname>Мууленаар</surname></personname><contrib>Хувь нэмэр болгон оруулсан </contrib></author>
|
||
<!-- marcel@cup.hp.com -->
|
||
</authorgroup>
|
||
</info>
|
||
|
||
|
||
<indexterm>
|
||
<primary>програмууд</primary>
|
||
<secondary><application>Oracle</application></secondary>
|
||
</indexterm>
|
||
|
||
<sect2>
|
||
<title>Оршил</title>
|
||
<para>Энэ баримт нь Линуксд зориулсан <application>&oracle; 8.0.5</application> болон
|
||
<application>&oracle; 8.0.5.1 Enterprise Edition</application>-г FreeBSD машин
|
||
уруу суулгах процессийг тайлбарлах болно.</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Линуксийн орчныг суулгах</title>
|
||
|
||
<para>Та <package>emulators/linux_base</package> болон
|
||
<package>devel/linux_devtools</package> програмууд
|
||
портын цуглуулгаас суусан эсэхийг шалгаарай. Та эдгээр портын хувьд асуудалтай байгаа
|
||
бол багцууд юм уу эсвэл портын цуглуулгад байгаа хуучин хувилбаруудыг ашиглах хэрэгтэй
|
||
болж болох юм.</para>
|
||
|
||
<para>Хэрэв та ухаалаг агентийг ажиллуулахыг хүсэж байгаа бол Red Hat Tcl
|
||
багц: <filename>tcl-8.0.3-20.i386.rpm</filename>-г бас суулгах хэрэгтэй болно.
|
||
Албан ёсны <application>RPM</application> порттой (<package>archivers/rpm</package>)
|
||
багцуудыг суулгах ерөнхий тушаал бол:</para>
|
||
|
||
<screen>&prompt.root; <userinput>rpm -i --ignoreos --root /compat/linux --dbpath /var/lib/rpm package</userinput></screen>
|
||
|
||
<para><replaceable>package</replaceable>-ийн суулгалт ямар ч алдаа үүсгэх ёсгүй.</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>&oracle; орчныг үүсгэх</title>
|
||
|
||
<para><application>&oracle;</application>-г суулгахаасаа өмнө та тохирох орчныг тохируулах
|
||
хэрэгтэй. Энэ баримт нь <application>&oracle;</application>-г суулгах зааварт тайлбарласныг биш
|
||
Линуксд зориулсан <application>&oracle;</application>-г
|
||
FreeBSD дээр ажиллуулахын тулд <emphasis>яг</emphasis> юу хийхийг зөвхөн тайлбарладаг.</para>
|
||
|
||
<sect3 xml:id="linuxemu-kernel-tuning">
|
||
<title>Цөмийг тааруулах</title>
|
||
<indexterm><primary>цөмийг тааруулах</primary></indexterm>
|
||
|
||
<para><application>&oracle;</application>-г суулгах зааварт тайлбарласнаар хуваалцсан
|
||
санах ойн хамгийн их хэмжээг тохируулах хэрэгтэй. FreeBSD дээр <literal>SHMMAX</literal>-г
|
||
битгий ашиглаарай. <literal>SHMMAX</literal> нь ердөө л <literal>SHMMAXPGS</literal> болон
|
||
<literal>PGSIZE</literal>-с тооцоологдон гаргагддаг. Тийм болохоор
|
||
<literal>SHMMAXPGS</literal>-г тодорхойл. Бусад бүх тохируулгууд зааварт
|
||
тайлбарласны дагуу ашиглагдаж болно. Жишээ нь:</para>
|
||
|
||
<programlisting>options SHMMAXPGS=10000
|
||
options SHMMNI=100
|
||
options SHMSEG=10
|
||
options SEMMNS=200
|
||
options SEMMNI=70
|
||
options SEMMSL=61</programlisting>
|
||
|
||
<para>Эдгээр тохируулгуудыг өөрийн <application>&oracle;</application>-ийн хэрэглээнд
|
||
тааруулж тохируулах хэрэгтэй.</para>
|
||
|
||
<para>Мөн цөмийн тохиргооны файлдаа дараах тохируулгуудтай байгаа эсэхээ бас шалгаарай:</para>
|
||
|
||
<programlisting>options SYSVSHM #SysV shared memory
|
||
options SYSVSEM #SysV semaphores
|
||
options SYSVMSG #SysV interprocess communication</programlisting>
|
||
</sect3>
|
||
|
||
<sect3 xml:id="linuxemu-oracle-account">
|
||
|
||
<title>&oracle; бүртгэл</title>
|
||
|
||
<para>Өөр бусад бүртгэл үүсгэдэг шигээ <systemitem class="username">oracle</systemitem> бүртгэл үүсгэнэ.
|
||
<systemitem class="username">oracle</systemitem> бүртгэл нь Линуксийн бүрхүүл өгөх шаардлагатай
|
||
цорын ганц тусгай бүртгэл юм. <filename>/etc/shells</filename> файлд
|
||
<literal>/compat/linux/bin/bash</literal>-г нэмээд <systemitem class="username">oracle</systemitem>
|
||
хэрэглэгчийн бүрхүүлийг <filename>/compat/linux/bin/bash</filename> гэж
|
||
тохируулна.</para>
|
||
</sect3>
|
||
|
||
<sect3 xml:id="linuxemu-environment">
|
||
<title>Орчин</title>
|
||
|
||
<para><envar>ORACLE_HOME</envar> болон <envar>ORACLE_SID</envar> зэрэг
|
||
ердийн <application>&oracle;</application> хувьсагчуудаас гадна та дараах орчны
|
||
хувьсагчуудыг тохируулах ёстой:</para>
|
||
|
||
<informaltable frame="none" pgwide="1">
|
||
<tgroup cols="2">
|
||
<colspec colwidth="1*"/>
|
||
<colspec colwidth="2*"/>
|
||
<thead>
|
||
<row>
|
||
<entry>Хувьсагч</entry>
|
||
|
||
<entry>Утга</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry><envar>LD_LIBRARY_PATH</envar></entry>
|
||
|
||
<entry><literal>$ORACLE_HOME/lib</literal></entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry><envar>CLASSPATH</envar></entry>
|
||
|
||
<entry><literal>$ORACLE_HOME/jdbc/lib/classes111.zip</literal></entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry><envar>PATH</envar></entry>
|
||
|
||
<entry><literal>/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</literal></entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
|
||
<para>Бүх орчны хувьсагчуудыг <filename>.profile</filename>-д тохируулахыг
|
||
зөвлөдөг. Гүйцэд жишээ бол дараах байна:</para>
|
||
|
||
<programlisting>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</programlisting>
|
||
</sect3>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>&oracle;-ийг суулгах</title>
|
||
|
||
<para>Линуксийн эмуляторын хайхрамжгүй бүрэн бүтэн бус байдлаас болоод
|
||
суулгагчийг эхлүүлэхээсээ өмнө та <filename>.oracle</filename>
|
||
санг <filename>/var/tmp</filename> дотор үүсгэх хэрэгтэй болдог.
|
||
Үүнийг <systemitem class="username">oracle</systemitem> хэрэглэгч эзэмшихээр болгох
|
||
хэрэгтэй. Та <application>&oracle;</application>-г ямар ч
|
||
асуудалгүйгээр суулгаж чадах ёстой. Хэрэв танд асуудлууд учирвал
|
||
эхлээд өөрийн <application>&oracle;</application> тархац ба/эсвэл
|
||
тохиргоог шалгах хэрэгтэй! <application>&oracle;</application>-г
|
||
суулгасныхаа дараа та дараах хоёр дэд хэсэгт тайлбарласан нөхөөсүүдийг
|
||
хийж өгөх хэрэгтэй.</para>
|
||
|
||
<para>Байнга учирдаг асуудал бол TCP протоколын хувиргагч зөв суулгагдаагүй
|
||
байдаг явдал юм. Үүнээс болоод та ямар ч TCP сонсогч эхлүүлж чадахгүй.
|
||
Дараах үйлдлүүд нь энэ асуудлыг шийдэхэд тусалдаг:</para>
|
||
|
||
<screen>&prompt.root; <userinput>cd $ORACLE_HOME/network/lib</userinput>
|
||
&prompt.root; <userinput>make -f ins_network.mk ntcontab.o</userinput>
|
||
&prompt.root; <userinput>cd $ORACLE_HOME/lib</userinput>
|
||
&prompt.root; <userinput>ar r libnetwork.a ntcontab.o</userinput>
|
||
&prompt.root; <userinput>cd $ORACLE_HOME/network/lib</userinput>
|
||
&prompt.root; <userinput>make -f ins_network.mk install</userinput></screen>
|
||
|
||
<para><filename>root.sh</filename>-г дахин ажиллуулахаа битгий мартаарай!</para>
|
||
|
||
<sect3 xml:id="linuxemu-patch-root">
|
||
<title>root.sh-д нөхөөс хийх</title>
|
||
|
||
<para><application>&oracle;</application>-г суулгаж байхад
|
||
<systemitem class="username">root</systemitem> эрхээр хийгдэх шаардлагатай зарим үйлдлүүд
|
||
<filename>root.sh</filename> гэж нэрлэгдсэн бүрхүүлийн скриптэд
|
||
бичигдсэн байдаг. Энэ скрипт нь <filename>orainst</filename> санд
|
||
бичигдсэн байдаг. <command>chown</command> тушаалын зөв байрлалыг
|
||
ашиглахаар болгож дараах нөхөөсийг <filename>root.sh</filename>-д
|
||
хийх хэрэгтэй, эсвэл өөрөөр скриптийг Линуксийн эх бүрхүүл дээр ажиллуулах
|
||
хэрэгтэй.</para>
|
||
|
||
<programlisting>*** 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</programlisting>
|
||
|
||
<para>CD-ээс <application>&oracle;</application>-г та суулгахгүй
|
||
үед <filename>root.sh</filename>-д зориулсан эхийг нөхөж болно.
|
||
Үүнийг <filename>rthd.sh</filename> гэдэг бөгөөд эх модны
|
||
<filename>orainst</filename> санд байрладаг.</para>
|
||
</sect3>
|
||
|
||
<sect3 xml:id="linuxemu-patch-tcl">
|
||
<title>genclntsh-д нөхөөс хийх</title>
|
||
|
||
<para><command>genclntsh</command> скрипт нь хуваалцсан ганц клиентийн санг
|
||
үүсгэхэд ашиглагддаг. Үзүүлбэрүүдийг бүтээж байхад үүнийг ашигладаг.
|
||
<envar>PATH</envar>-н тодорхойлолтыг тайлбар болгохын тулд
|
||
дараах нөхөөсийг хийх хэрэгтэй:</para>
|
||
|
||
<programlisting>*** 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</programlisting>
|
||
</sect3>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>&oracle;-г ажиллуулах</title>
|
||
|
||
<para>Заавруудыг дагасны дараа та <application>&oracle;</application>-г
|
||
Линукс дээр ажиллуулж байгаа юм шиг ажиллуулж чадах ёстой.</para>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 xml:id="linuxemu-advanced">
|
||
<title>Нэмэлт сэдвүүд</title>
|
||
|
||
<para>Хэрэв та Линуксийн хоёртын нийлэмж хэрхэн ажилладгийг мэдэхийг хүсэж байгаа
|
||
бол энэ хэсэг нь таны уншихыг хүсэж байгаа хэсэг юм. Доор бичигдсэн зүйлийн ихэнх нь
|
||
Тэрри Лэмбэрт <email>tlambert@primenet.com</email>-ийн
|
||
&a.chat; руу бичсэн цахим захидал (Message ID:
|
||
<literal><199906020108.SAA07001@usr09.primenet.com></literal>)
|
||
дээр тулгуурласан байгаа.</para>
|
||
|
||
<sect2>
|
||
<title>Хэрхэн ажилладаг вэ?</title>
|
||
<indexterm><primary>ажиллуулах ангилал дуудагч</primary></indexterm>
|
||
|
||
<para>FreeBSD нь <quote>execution class
|
||
loader</quote> буюу ажиллуулах ангилал дуудагч гэгддэг хийсвэрлэлттэй байдаг.
|
||
Энэ нь &man.execve.2; системийн дуудлага уруу хийгдэх шаантаг юм.</para>
|
||
|
||
<para>Юу болдог вэ гэхээр FreeBSD нь ямар нэгэн бүрхүүлийн тайлбарлагчид эсвэл
|
||
бүрхүүлийн скриптүүдийг ажиллуулахын тулд <literal>#!</literal> дуудагч
|
||
уруу ордог нэг дуудагчийн оронд дуудагчдын жагсаалттай байдаг.</para>
|
||
|
||
<para>Уламжлалаар бол &unix; тавцангийн дуудагч нь хоёртын файлыг системд
|
||
мэдэгдэж байгаа эсэхийг мэдэхийн тулд шидэт тоог
|
||
(ерөнхийдөө файлын эхний 4 эсвэл 8 байт) шалгадаг бөгөөд
|
||
хэрэв мэдэгдэж байвал хоёртын дуудагчийг ажиллуулдаг ганц дуудагч юм.</para>
|
||
|
||
<para>Хэрэв энэ нь системд зориулагдсан хоёртын төрөл биш бол &man.execve.2;
|
||
дуудлага амжилгүй болон буцаж бүрхүүл үүнийг бүрхүүлийн тушаалууд маягаар
|
||
ажиллуулж эхлэхийг оролддог.</para>
|
||
|
||
<para><quote>Тухайн үеийн бүрхүүл ямар байгаа</quote> түүнийг анхдагч гэж
|
||
таамагладаг.</para>
|
||
|
||
<para>Дараа нь эхний хоёр тэмдэгтүүдийг шалгах засварыг (hack) &man.sh.1;-д
|
||
зориулж хийсэн бөгөөд хэрэв тэдгээр нь <literal>:\n</literal> бол энэ нь
|
||
&man.csh.1; бүрхүүлийг ажиллуулдаг (энэ засварыг SCO анхлан хийсэн гэж
|
||
бид итгэдэг).</para>
|
||
|
||
<para>Төгсгөлийн дараах дараагийн хоосон зайны дараа байдаг тэмдэгтүүдийн дараа
|
||
<filename>/bin/sh</filename> уруу буцдаг тэмдэгтүүд байдаг болохоор
|
||
одоо FreeBSD юу хийдэг вэ гэхээр дуудагчдын жагсаалтаар тайлбарлагчдын талаар
|
||
мэддэг ерөнхий <literal>#!</literal> дуудагчтай явдаг.</para>
|
||
<indexterm><primary>ELF</primary></indexterm>
|
||
|
||
<para>Линуксийн ABI дэмжлэгийн хувьд FreeBSD нь шидэт тоог ELF хоёртын файл
|
||
гэж хардаг (одоогоор энэ нь FreeBSD, &solaris;, Линукс болон ELF дүрсний төрөл бүхий
|
||
бусад OS-ийг хооронд нь ялгадаггүй).</para>
|
||
<indexterm><primary>Solaris</primary></indexterm>
|
||
|
||
<para>ELF дуудагч нь тусгай <emphasis>тамга</emphasis> хайдаг бөгөөд
|
||
энэ нь ELF дүрс дэх тайлбар хэсэг юм. Энэ нь SVR4/&solaris; ELF хоёртын
|
||
файлуудад байдаггүй.</para>
|
||
|
||
<para>Линукс хоёртын файлууд нь ажиллахын тулд тэдгээр нь
|
||
&man.brandelf.1;-ээр <literal>Линукс</literal> гэж <emphasis>тамгалагдах</emphasis>
|
||
ёстой байдаг:</para>
|
||
|
||
<screen>&prompt.root; <userinput>brandelf -t Linux file</userinput></screen>
|
||
|
||
<para>Үүнийг хийсний дараа ELF дуудагч нь файлд
|
||
<literal>Линукс</literal> тамгыг харах болно.</para>
|
||
<indexterm>
|
||
<primary>ELF</primary>
|
||
<secondary>тамгалах</secondary>
|
||
</indexterm>
|
||
|
||
<para>ELF дуудагч <literal>Линукс</literal> тамгыг харах үед дуудагч
|
||
<literal>proc</literal> бүтэц дэх заагчийг сольдог. Энэ заагчаар
|
||
бүх системийн дуудлагууд индекслэгддэг (уламжлалт &unix; систем дээр
|
||
энэ нь системийн дуудлагуудыг агуулах <literal>sysent[]</literal>
|
||
бүтцийн массив байх юм). Үүнээс гадна процесс нь дохионы трамплиний
|
||
кодонд зориулсан занга векторыг тусгайлан зохицуулахад болон Линуксийн
|
||
цөмийн модулиар зохицуулагддаг бусад хэд хэдэн (жижиг) засваруудад
|
||
зориулагдаж тэмдэглэгддэг.</para>
|
||
|
||
<para>Линукс системийн дуудлагын вектор нь бусад зүйлүүдээс гадна
|
||
цөмийн модульд хаягууд нь байдаг <literal>sysent[]</literal> оруулгуудын
|
||
жагсаалтыг агуулдаг.</para>
|
||
|
||
<para>Системийн дуудлага Линуксийн хоёртын файлаар дуудагдахад занга код
|
||
системийн дуудлагын функц заагчийн хаягийг <literal>proc</literal> бүтцээс
|
||
авч FreeBSD-ийн биш Линуксийн системийн дуудлагын оруулгын цэгүүдийг
|
||
авдаг.</para>
|
||
|
||
<para>Мөн Линукс горим нь хайлтыг динамикаар <emphasis>дахин эхлүүлдэг</emphasis>;
|
||
энэ нь файлын системийн холболтууд дахь <option>union</option> тохируулга
|
||
(<literal>unionfs</literal> файлын системийн төрөл <emphasis>биш</emphasis>!)
|
||
хийдэг тэр зүйл юм. Эхлээд <filename>/compat/linux/original-path</filename>
|
||
сан дахь файлыг хайх бөгөөд <emphasis>дараа нь</emphasis> хэрэв энэ нь
|
||
амжилтгүй болвол хайлт
|
||
<filename>/original-path</filename>
|
||
санд хийгддэг. Энэ нь бусад хоёртын файлуудыг шаарддаг хоёртын файлуудыг
|
||
ажиллаж чадахаар (өөрөөр хэлбэл Линуксийн хэрэгслийн цуглуулга
|
||
бүгдээрээ Линуксийн ABI дэмжлэгийн доор ажиллаж чаддаг байхаар) болгодог.
|
||
Линуксийн хоёртын файлууд нь тохирох Линуксийн хоёртын файлууд байхгүй бол
|
||
FreeBSD-ийн хоёртын файлуудыг дуудаж ажиллуулж бас чадна гэсэн үг бөгөөд
|
||
Линуксийн хоёртын файлуудыг Линукс дээр ажиллахгүй байгааг нь хэлж чадахааргүй
|
||
болгохын тулд та &man.uname.1; тушаалыг <filename>/compat/linux</filename>
|
||
санд байрлуулж болно гэсэн үг юм.</para>
|
||
|
||
<para>Үндсэндээ Линуксийн цөм FreeBSD цөмд байдаг; цөмийн үзүүлдэг
|
||
бүх үйлчилгээнүүдийг хийдэг, доор нь орших төрөл бүрийн функцууд нь
|
||
FreeBSD-ийн системийн дуудлагын хүснэгтийн оруулгууд болон
|
||
Линуксийн системийн дуудлагын хүснэгтийн оруулгуудтай ижил байдаг:
|
||
файлын системийн үйлдлүүд, виртуал санах ойн үйлдлүүд, дохио
|
||
хүргэлт, System V IPC, гэх мэт… Цорын ганц ялгаа нь
|
||
FreeBSD-ийн хоёртын файлууд FreeBSD-ийн <emphasis>цавуу</emphasis>
|
||
функцуудыг, Линуксийн хоёртын файлууд Линуксийн <emphasis>цавуу</emphasis>
|
||
функцуудыг авдаг явдал юм (ихэнх хуучин OS-үүд зөвхөн өөрсдийн <emphasis>цавуу</emphasis>
|
||
функцуудтай байсан: дуудлага хийж байгаа процессийн <literal>proc</literal> бүтэц дэх
|
||
динамикаар эхлүүлэгдсэн заагчаар хийгдсэн функцуудын хаягуудын оронд
|
||
статик глобал <literal>sysent[]</literal> бүтцийн
|
||
массив дахь функцуудын хаягуудтай байсан).</para>
|
||
|
||
<para>Аль нь эх FreeBSD ABI вэ? Энэ нь хамаагүй юм.
|
||
Үндсэндээ цорын ганц ялгаа нь (зөвхөн одоогоор; эдгээр нь ирээдүйн хувилбаруудад
|
||
амархан өөрчлөгдөж болох бөгөөд магадгүй үүний дараагаар хийгдэх байх)
|
||
FreeBSD-ийн <emphasis>цавуу</emphasis> функцууд нь
|
||
цөмд статикаар холбогдсон байдаг бөгөөд Линуксийн
|
||
<emphasis>цавуу</emphasis> функцууд нь статикаар холбогдож эсвэл
|
||
тэдгээрт цөмийн модулийн тусламжтайгаар хандаж болдог явдал юм.</para>
|
||
|
||
<para>Тиймээ, гэхдээ энэ нь жинхэнэ эмуляц мөн үү? Үгүй ээ. Энэ нь ABI шийдэл
|
||
болохоос эмуляц биш юм. Ямар ч эмулятор (эсвэл дүр үзүүлэгч (simulator)
|
||
(дараагийн асуултыг асуулгахгүйн тулд)) оролцоогүй.</para>
|
||
|
||
<para>Тэгэхээр яагаад энэ нь заримдаа <quote>Линукс эмуляц</quote> гэгддэг
|
||
юм бэ? FreeBSD-г худалдахад хэцүү болгохын тулд! Тиймээ,
|
||
юу болж байгааг тайлбарлаж байгаагаас өөр зүйлгүй байх тэр үед уламжлалт
|
||
шийдэл хийгдсэн болохоор тэр юм; хэрэв та кодыг эмхэтгээгүй эсвэл модулийг дуудаагүй бол
|
||
Линуксийн хоёртын файлуудыг FreeBSD ажиллуулдаг гэж хэлэх нь
|
||
үнэн биш бөгөөд юу дуудагдсаныг тайлбарлах үг хэрэгтэй байсан болохоор
|
||
—<quote>Линукс эмулятор</quote> гэсэн үг гарсан юм.</para>
|
||
</sect2>
|
||
</sect1>
|
||
</chapter>
|