doc/mn_MN.UTF-8/books/handbook/linuxemu/chapter.xml
2013-11-07 15:39:28 +00:00

1277 lines
71 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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;&nbsp;&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;&nbsp;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) =&gt; /usr/X11/lib/libXt.so.3.1.0
libX11.so.3 (DLL Jump 3.1) =&gt; /usr/X11/lib/libX11.so.3.1.0
libc.so.4 (DLL Jump 4.5pl26) =&gt; /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 -&gt; libXt.so.3.1.0
/compat/linux/usr/X11/lib/libX11.so.3.1.0
/compat/linux/usr/X11/lib/libX11.so.3 -&gt; libX11.so.3.1.0
/compat/linux/lib/libc.so.4.6.29
/compat/linux/lib/libc.so.4 -&gt; 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 -&gt; libc.so.4.6.27</screen>
<para>бөгөөд шинэ сан нь <command>ldd</command> тушаалын
гаралтын дагуу сүүлийн хувилбарыг шаардана гэж байгааг мэдвэл:</para>
<screen>libc.so.4 (DLL Jump 4.5pl26) -&gt; 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 -&gt; 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 &lt; /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 &gt; $i.tmp
sed 's/\/bin\/sh/\/compat\/linux\/bin\/sh/g' $i.tmp &gt; $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&gt;&gt; ${LOG} 1&gt;&amp;2
echo -n " lmgrd"
;;
stop)
lmgrd -c ${LICENSE_FILE} -x lmdown 2&gt;&gt; ${LOG} 1&gt;&amp;2
;;
*)
echo "Usage: `basename $0` {start|stop}" 1&gt;&amp;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> &amp;&amp; echo 'MATLAB_lmgrd'
fi
;;
stop)
if [ -f /usr/local/etc/lmdown_TMW ]; then
/compat/linux/bin/sh /usr/local/etc/lmdown_TMW &gt; /dev/null 2&gt;&amp;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" : '.*-&gt;.*'` -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) &amp;
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>&lt;199906020108.SAA07001@usr09.primenet.com&gt;</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, гэх мэт&hellip; Цорын ганц ялгаа нь
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 ажиллуулдаг гэж хэлэх нь
үнэн биш бөгөөд юу дуудагдсаныг тайлбарлах үг хэрэгтэй байсан болохоор
&mdash;<quote>Линукс эмулятор</quote> гэсэн үг гарсан юм.</para>
</sect2>
</sect1>
</chapter>