Update translated parts (MFen 1.35 -> 1.114)

Fixes

Obtained from:	The FreeBSD Russian Documentation Project
This commit is contained in:
Denis Peplin 2004-09-15 06:33:48 +00:00
parent db62e8f84f
commit 524e777036
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=22342

View file

@ -2,13 +2,32 @@
The FreeBSD Russian Documentation Project The FreeBSD Russian Documentation Project
$FreeBSD$ $FreeBSD$
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/books/handbook/linuxemu/chapter.sgml,v 1.8 2004/08/26 11:16:12 den Exp $ $FreeBSDru$
Original revision: 1.35 Original revision: 1.114
--> -->
<chapter id="linuxemu"> <chapter id="linuxemu">
<chapterinfo> <chapterinfo>
<authorgroup>
<author>
<firstname>Jim</firstname>
<surname>Mock</surname>
<contrib>Реструктурировал и частично обновил </contrib>
</author>
<!-- 22 Mar 2000 -->
</authorgroup>
<authorgroup>
<author>
<firstname>Brian N.</firstname>
<surname>Handy</surname>
<contrib>Первоначально предоставили </contrib>
</author>
<author>
<firstname>Rich</firstname>
<surname>Murphey</surname>
</author>
</authorgroup>
<authorgroup> <authorgroup>
<author> <author>
<firstname>Алексей</firstname> <firstname>Алексей</firstname>
@ -19,17 +38,18 @@
</chapterinfo> </chapterinfo>
<title>Работа с приложениями, написанными для Linux</title> <title>Работа с приложениями, написанными для Linux</title>
<para><emphasis>Реструктурировал и частично дополнил &a.jim;, 22 марта <sect1 id="linuxemu-synopsis">
2000. Оригинальная версия Brian N. Handy и &a.rich;</emphasis></para>
<sect1>
<title>Краткий обзор</title> <title>Краткий обзор</title>
<para>В этой главе будет рассказано о том, каким образом можно запускать <indexterm><primary>Linux - бинарная совместимость</primary></indexterm>
приложения, изначально написанные для Linux, под FreeBSD и что нужно <indexterm>
для этого сделать.</para> <primary>бинарная совместимость</primary>
<secondary>Linux</secondary>
</indexterm>
<para>Возможно, Вы спрашиваете себя, зачем FreeBSD нужно уметь работать <para>FreeBSD предоставляет бинарную совместимость с несколькими другими
&unix; подобными операционными системами, включая Linux.
Возможно, Вы спрашиваете себя, зачем FreeBSD нужно уметь работать
с приложениями, написанными для Linux. Ответ на этот вопрос достаточно с приложениями, написанными для Linux. Ответ на этот вопрос достаточно
прост: многие компании и разработчики производят программное прост: многие компании и разработчики производят программное
обеспечение только для Linux, так как эта операционная система очень обеспечение только для Linux, так как эта операционная система очень
@ -44,69 +64,113 @@
эмуляция.</para> эмуляция.</para>
<para>Вкратце, FreeBSD позволяет Вам работать с 90% приложений для <para>Вкратце, FreeBSD позволяет Вам работать с 90% приложений для
Linux без каких-либо модификаций последних. Среди них: Star Office, Linux без каких-либо модификаций последних. Среди них:
Linux версия Netscape, Adobe Acrobat, RealPlayer 5 и 7, VMWare, <application>&staroffice;</application>, Linux версия
Oracle, WordPerfect, Doom, Quake и многие другие. Есть сведения, что <application>&netscape;</application>,
<application>&adobe;&nbsp;&acrobat;</application>,
<application><trademark
class="registered">RealPlayer</trademark></application>
5 и 7, <application><trademark>VMware</trademark></application>,
<application>&oracle;</application>, <application><trademark
class="registered">WordPerfect</trademark></application>,
<application>Doom</application>, <application>Quake</application>,
и многие другие. Есть сведения, что
в некоторых ситуациях эти Linux программы показывали более высокую в некоторых ситуациях эти Linux программы показывали более высокую
производительность при работе под FreeBSD, чем под Linux.</para> производительность при работе под FreeBSD, чем под Linux.</para>
<para>Конечно, существует некоторые особенности Linux, которые (пока) не <indexterm>
<primary>Linux</primary>
<secondary>файловая система <filename>/proc</filename></secondary>
</indexterm>
<para>Конечно, существует некоторые особенности Linux, которые не
поддерживаются в полной мере FreeBSD. Например, так обстоят дела с поддерживаются в полной мере FreeBSD. Например, так обстоят дела с
приложениями Linux, использующими файловую систему приложениями Linux, использующими файловую систему
<filename>/proc</filename>, так как реализация последней сильно <filename>/proc</filename>, так как реализация последней сильно
отличается от таковой в FreeBSD (однако, ситуация меняется к лучшему: отличается от файловой системы <filename>/proc</filename> в FreeBSD.
в FreeBSD-CURRENT поддержка Linux procfs уже встроена в систему). Существуют также системные вызовы, специфичные для &i386;, как,
Существуют также системные вызовы, специфичные для i386, как, например, переключение в виртуальный режим 8086.</para>
например, переключение в режим V86.</para>
<para>При чтении этой главы вы узнаете:</para>
<itemizedlist>
<listitem>
<para>Как включить бинарную совместимость с Linux в
вашей системе.</para>
</listitem>
<listitem>
<para>Как установить дополнительные совместно используемые
библиотеки Linux.</para>
</listitem>
<listitem>
<para>Как установить приложения Linux в систему
FreeBSD.</para>
</listitem>
<listitem>
<para>Детали реализации совместимости с Linux в
FreeBSD.</para>
</listitem>
</itemizedlist>
<para>Перед прочтением этой главы вам
потребуется:</para>
<itemizedlist>
<listitem>
<para>Узнать как устанавливать дополнительное
программное обеспечение сторонних разработчиков
(<xref linkend="ports">).</para>
</listitem>
</itemizedlist>
<para>О том, как установить поддержку запуска Linux программ, читайте в
<link linkend="linuxemu-lbc-install">следующей секции</link>.</para>
</sect1> </sect1>
<sect1 id="linuxemu-lbc-install"> <sect1 id="linuxemu-lbc-install">
<title>Инсталляция</title> <title>Установка</title>
<para>Начиная с 3.0-RELEASE, больше нет необходимости указывать <indexterm><primary>KLD (загружаемый объект ядра)</primary></indexterm>
<literal>options LINUX</literal> или <literal>options
COMPAT_LINUX</literal> в Вашем файле конфигурации ядра.</para>
<para>Поддержка Linux приложений осуществляется посредством специального <para>Бинарная совместимость с Linux не включена по умолчанию.
модуля ядра (KLD объекта, <quote>Kernel LoaDable object</quote>), то Простейший способ включения этой функциональности заключается
есть его можно загрузить/выгрузить <quote>на лету</quote>, без в загрузке KLD объекта <literal>linux</literal> (<quote>Kernel
необходимости перезагрузки. Вам потребуется убедиться в наличии LoaDable object</quote>). Вы можете загрузить этот модуль,
следующей строки в файле <filename>/etc/rc.conf</filename>:</para> просто набрав <command>linux</command> в командной строке.</para>
<programlisting>linux_enable=<quote>YES</quote></programlisting> <para>Если вы хотите, чтобы совместимость с Linux была включена
постоянно, необходимо добавить в <filename>/etc/rc.conf</filename>
следующую строку:</para>
<para>Это, в свою очередь, повлияет на выполнение следующего кода в <programlisting>linux_enable="YES"</programlisting>
файле <filename>/etc/rc.i386</filename>:</para>
<programlisting># Start the Linux binary compatibility if requested. <para>Для проверки того, загружен ли KLD, может быть использована
# команда &man.kldstat.8;:</para>
case ${linux_enable} in
[Yy][Ee][Ss])
echo -n ' linux'; linux &gt; /dev/null 2&gt;&amp;1
;;
esac</programlisting>
<para>Если Вы хотите проверить, загружен ли модуль, это можно сделать
при помощи команды <command>kldstat</command>:</para>
<screen>&prompt.user; <userinput>kldstat</userinput> <screen>&prompt.user; <userinput>kldstat</userinput>
Id Refs Address Size Name Id Refs Address Size Name
1 2 0xc0100000 16bdb8 kernel 1 2 0xc0100000 16bdb8 kernel
7 1 0xc24db000 d000 linux.ko</screen> 7 1 0xc24db000 d000 linux.ko</screen>
<para>Если по какой-либо причине Вы не хотите или не можете загрузить <indexterm>
KLD, то Вы можете статически включить поддержку Linux в ядро <primary>параметры ядра</primary>
посредством опции <literal>options LINUX</literal> в файле <secondary>LINUX</secondary>
</indexterm>
<para>Если по какой-либо причине вы не хотите или не можете загрузить
KLD, то вы можете статически включить поддержку Linux в ядро
посредством опции <literal>options COMPAT_LINUX</literal> в файле
конфигурации ядра. Затем соберите и проинсталлируйте новое ядро, конфигурации ядра. Затем соберите и проинсталлируйте новое ядро,
следуя описанию в секции, посвященной <link следуя описанию в <xref linkend="kernelconfig">.</para>
linkend="kernelconfig">конфигурации ядра</link>.</para>
<sect2> <sect2>
<title>Установка необходимых Linux библиотек</title> <title>Установка необходимых Linux библиотек</title>
<indexterm>
<primary>Linux</primary>
<secondary>установка библиотек Linux</secondary>
</indexterm>
<para>Установить все требуемые библиотеки можно двумя путями: либо <para>Установить все требуемые библиотеки можно двумя путями: либо
используя порт <link linkend="linuxemu-libs-port">linux_base</link>, используя порт <link linkend="linuxemu-libs-port">linux_base</link>,
либо установив их <link либо установив их <link
@ -115,9 +179,12 @@ Id Refs Address Size Name
<sect3 id="linuxemu-libs-port"> <sect3 id="linuxemu-libs-port">
<title>Установка с помощью порта linux_base</title> <title>Установка с помощью порта linux_base</title>
<indexterm><primary>коллекция портов</primary></indexterm>
<para>Этот метод является самым простым, и мы рекомендуем <para>Этот метод является самым простым, и мы рекомендуем
воспользоваться именно им. Процесс аналогичен установке любого воспользоваться именно им. Процесс аналогичен установке любого
другого порта из <ulink url="../ports/">коллекции портов</ulink>. другого порта из <ulink type="html"
url="file://localhost/usr/ports/">коллекции портов</ulink>.
Просто выполните следующие команды:</para> Просто выполните следующие команды:</para>
<screen>&prompt.root; <userinput>cd /usr/ports/emulators/linux_base</userinput> <screen>&prompt.root; <userinput>cd /usr/ports/emulators/linux_base</userinput>
@ -127,13 +194,20 @@ Id Refs Address Size Name
программы, возможно, будут сообщать о несоответствии подверсий программы, возможно, будут сообщать о несоответствии подверсий
некоторых системных библиотек. Однако, практически, это не некоторых системных библиотек. Однако, практически, это не
вызывает каких-либо неудобств.</para> вызывает каких-либо неудобств.</para>
<note><para>Возможно наличие нескольких версий порта <filename
role="package">emulators/linux_base</filename>, соответствующих
различным версиям разных дистрибутивов Linux. Вы должны
установить порт, наиболее близко соотвествующий требованиям
приложений Linux, которые будут установлены.</para></note>
</sect3> </sect3>
<sect3 id="linuxemu-libs-manually"> <sect3 id="linuxemu-libs-manually">
<title>Установка библиотек вручную</title> <title>Установка библиотек вручную</title>
<para>Если у Вас нет установленной коллекции портов, то можно <para>Если у вас нет установленной коллекции портов, можно
установить требуемые библиотеки вручную Вам понадобятся установить требуемые библиотеки вручную. Вам понадобятся
разделяемые библиотеки для Linux, которые нужны программам, и разделяемые библиотеки для Linux, которые нужны программам, и
runtime-компоновщик. Вам также потребуется создать <quote>теневой runtime-компоновщик. Вам также потребуется создать <quote>теневой
корень</quote>: директорию <filename>/compat/linux</filename>, где корень</quote>: директорию <filename>/compat/linux</filename>, где
@ -147,55 +221,62 @@ Id Refs Address Size Name
находиться в теневом дереве, а не в пути, сообщаемым командой находиться в теневом дереве, а не в пути, сообщаемым командой
Linux <command>ld.so</command>.</para> Linux <command>ld.so</command>.</para>
<para>По мере работы с различными Linux программами, у Вас будет <para>По мере работы с различными Linux программами, у вас будет
накапливаться некий базовый набор библиотек, которого будет накапливаться некий базовый набор библиотек, которого будет
достаточно для большинства существующих Linux приложений.</para> достаточно для большинства существующих Linux приложений.</para>
</sect3> </sect3>
<sect3> <sect3>
<title>Как установить дополнительные разделяемые библиотеки</title> <title>Как установить дополнительные совместно используемые библиотеки</title>
<indexterm><primary>совместно используемые библиотеки</primary></indexterm>
<para>Что, если при установленном <filename>linux_base</filename> <para>Что, если при установленном <filename>linux_base</filename>
порте Ваше приложение все равно сообщает об отсутствии необходимой порте ваше приложение все равно сообщает об отсутствии необходимой
библиотеки? Как узнать, какая именно нужна библиотека и где ее библиотеки? Как узнать, какая именно нужна библиотека и где ее
взять? В принципе, есть два способа. Вам необходимо иметь взять? В принципе, есть два способа. Вам необходимо иметь
привилегии суперпользователя для их осуществления.</para> привилегии суперпользователя для их осуществления.</para>
<para>Если у Вас есть доступ к машине, на которой установлен Linux, <para>Если у вас есть доступ к машине, на которой установлен Linux,
узнайте, какие библиотеки использует Linux приложение, и просто узнайте, какие библиотеки использует Linux приложение, и просто
скопируйте из на свою машину. Например:</para> скопируйте из на свою машину. Например:</para>
<informalexample> <informalexample>
<para>Допустим, Вы скачали по FTP Linux версию Doom'а (на Linux <para>Допустим, вы скачали по FTP Linux версию
<application>Doom</application> (на Linux
машине). Вы можете узнать, какие разделяемые библиотеки нужны машине). Вы можете узнать, какие разделяемые библиотеки нужны
Doom'у при помощи команды <command>ldd linuxdoom</command>:</para> <application>Doom</application> при помощи команды
<command>ldd linuxdoom</command>:</para>
<screen>&prompt.user; <userinput>ldd linuxdoom</userinput> <screen>&prompt.user; <userinput>ldd linuxdoom</userinput>
libXt.so.3 (DLL Jump 3.1) =&gt; /usr/X11/lib/libXt.so.3.1.0 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 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> libc.so.4 (DLL Jump 4.5pl26) =&gt; /lib/libc.so.4.6.29</screen>
<indexterm><primary>символические ссылки</primary></indexterm>
<para>Вам потребуются все файлы, перечисленные в последней <para>Вам потребуются все файлы, перечисленные в последней
колонке. Скопируйте их в директорию колонке. Скопируйте их в директорию
<filename>/compat/linux</filename> на Вашей системе, а также <filename>/compat/linux</filename> на вашей системе, а также
создайте символические ссылки на эти файлы, с именами ссылок из создайте символические ссылки на эти файлы, с именами ссылок из
первой колонки соответственно. В итоге у Вас на машине должны первой колонки соответственно. В итоге у вас на машине должны
быть следующие файлы:</para> быть следующие файлы:</para>
<screen>/compat/linux/usr/X11/lib/libXt.so.3.1.0 <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/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.1.0
/compat/linux/usr/X11/lib/libX11.so.3 -&gt; 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> /compat/linux/lib/libc.so.4.6.29
/compat/linux/lib/libc.so.4 -&gt; libc.so.4.6.29</screen>
<blockquote> <blockquote>
<note> <note>
<para>Заметьте, что если у Вас уже есть какая-либо из <para>Заметьте, что если у вас уже есть какая-либо из
перечисленных библиотек, то ее не нужно копировать заново. перечисленных библиотек, то ее не нужно копировать заново.
Однако, у Вас может быть более старая версия. В этом Однако, у вас может быть более старая версия. В этом
случае, лучше все-таки скопировать библиотеку поздней случае, лучше все-таки скопировать библиотеку поздней
версии, изменив соответственно ссылку на нее. Предыдущую версии, изменив соответственно ссылку на нее. Предыдущую
версию библиотеки можно удалить. Например, пусть у Вас есть версию библиотеки можно удалить. Например, пусть у вас есть
следующие библиотеки:</para> следующие библиотеки:</para>
<screen>/compat/linux/lib/libc.so.4.6.27 <screen>/compat/linux/lib/libc.so.4.6.27
@ -209,7 +290,7 @@ libc.so.4 (DLL Jump 4.5pl26) =&gt; /lib/libc.so.4.6.29</screen>
<para>Если подверсии немного отличаются, копировать <para>Если подверсии немного отличаются, копировать
<filename>/lib/libc.so.4.6.29</filename> необязательно, так <filename>/lib/libc.so.4.6.29</filename> необязательно, так
как программа, скорее всего, будет нормально работать и с как программа, скорее всего, будет нормально работать и с
устаревшей версией. Тем не менее, Вы можете заменить устаревшей версией. Тем не менее, вы можете заменить
<filename>libc.so</filename>:</para> <filename>libc.so</filename>:</para>
<screen>/compat/linux/lib/libc.so.4.6.29 <screen>/compat/linux/lib/libc.so.4.6.29
@ -222,7 +303,7 @@ libc.so.4 (DLL Jump 4.5pl26) =&gt; /lib/libc.so.4.6.29</screen>
<para>Символические ссылки важны <emphasis>только</emphasis> <para>Символические ссылки важны <emphasis>только</emphasis>
для Linux программ. Runtime-компоновщик FreeBSD для Linux программ. Runtime-компоновщик FreeBSD
самостоятельно подберет правильные номера версий библиотек, самостоятельно подберет правильные номера версий библиотек,
и Вам не нужно об этом беспокоиться.</para> и вам не нужно об этом беспокоиться.</para>
</note> </note>
</blockquote> </blockquote>
</informalexample> </informalexample>
@ -230,9 +311,14 @@ libc.so.4 (DLL Jump 4.5pl26) =&gt; /lib/libc.so.4.6.29</screen>
</sect2> </sect2>
<sect2> <sect2>
<title>Настройка Linux ELF-исполняемых файлов</title> <title>Установка Linux ELF исполняемых файлов</title>
<para>Для ELF-программ иногда требуется сделать так называемый <indexterm>
<primary>Linux</primary>
<secondary>ELF исполняемые файлы</secondary>
</indexterm>
<para>Для ELF программ иногда требуется сделать так называемый
<quote>branding</quote>. Если при попытке запустить ELF-файл, Вы <quote>branding</quote>. Если при попытке запустить ELF-файл, Вы
получаете следующее сообщение об ошибке:</para> получаете следующее сообщение об ошибке:</para>
@ -246,32 +332,35 @@ Abort</screen>
<screen>&prompt.user; <userinput>brandelf -t Linux linux-elf-программа</userinput></screen> <screen>&prompt.user; <userinput>brandelf -t Linux linux-elf-программа</userinput></screen>
<para>Следует отметить, что программы, для которых необходим <indexterm><primary>GNU toolchain</primary></indexterm>
<quote>branding</quote>, встречаются все реже и реже, и в недалеком
будущем Вы вряд ли прибегнете к нему вообще.</para> <para>В настоящее время GNU toolchain помещает необходимую информацию
в исполняемые файлы ELF автоматически, поэтому необходимость
в этом действии случается все реже и реже, и в недалеком
будущем вы вряд ли прибегнете к нему вообще.</para>
</sect2> </sect2>
<sect2> <sect2>
<title>Распознавание доменных имен</title> <title>Распознавание доменных имен</title>
<para>Если DNS не настроен или недоступен, или Вы получаете это <para>Если DNS не настроен или недоступен, или вы получаете это
сообщение:</para> сообщение:</para>
<screen>resolv+: "bind" is an invalid keyword resolv+: <screen>resolv+: "bind" is an invalid keyword resolv+:
"hosts" is an invalid keyword</screen> "hosts" is an invalid keyword</screen>
<para>то Вам нужно создать (модифицировать) файл <para>то вам нужно создать (модифицировать) файл
<filename>/compat/linux/etc/host.conf</filename>, содержащий:</para> <filename>/compat/linux/etc/host.conf</filename>, содержащий:</para>
<programlisting>order hosts, bind <programlisting>order hosts, bind
multi on</programlisting> multi on</programlisting>
<para>Таким образом, Вы указываете, то сначала производится поиск в <para>Таким образом, вы указываете, то сначала производится поиск в
файле <filename>/etc/hosts</filename>, а только затем запрашивается файле <filename>/etc/hosts</filename>, а только затем запрашивается
DNS. Когда файл <filename>/compat/linux/etc/host.conf</filename> DNS. Когда файл <filename>/compat/linux/etc/host.conf</filename>
отсутствует, Linux приложения находят файл отсутствует, Linux приложения находят файл
<filename>/etc/host.conf</filename> для FreeBSD и сообщают о <filename>/etc/host.conf</filename> для FreeBSD и сообщают о
несовместимом синтаксисе. Если Вы не настраивали сервер имен несовместимом синтаксисе. Если вы не настраивали сервер имен
(<filename>/etc/resolv.conf</filename>), уберите (<filename>/etc/resolv.conf</filename>), уберите
<literal>bind</literal> из файла <literal>bind</literal> из файла
<filename>/compat/linux/etc/host.conf</filename>.</para> <filename>/compat/linux/etc/host.conf</filename>.</para>
@ -279,29 +368,52 @@ multi on</programlisting>
</sect1> </sect1>
<sect1 id="linuxemu-mathematica"> <sect1 id="linuxemu-mathematica">
<title>Установка пакета Mathematica</title> <sect1info>
<authorgroup>
<author>
<firstname>Murray</firstname>
<surname>Stokely</surname>
<contrib>Обновил для Mathematica 4.X </contrib>
</author>
</authorgroup>
<authorgroup>
<author>
<firstname>Bojan</firstname>
<surname>Bistrovic</surname>
<contrib>Объединено с работой </contrib>
</author>
</authorgroup>
</sect1info>
<para><emphasis>Обновлено для Mathematica версии 4.x &a.murray; <title>Установка &mathematica;</title>
и объединено с работой Bojan Bistrovic
<email>bojanb@physics.odu.edu</email>.</emphasis></para>
<para>Ниже описано, как установить Linux версию пакета Mathematica 4.x <indexterm>
на FreeBSD систему.</para> <primary>приложения</primary>
<secondary><application>Mathematica</application></secondary>
</indexterm>
<para>Linux версия Mathematica отлично работает под FreeBSD, однако <para>Ниже описано, как установить Linux версию пакета
исполняемые файлы должны быть модифицированы утилитой <application>&mathematica; 4.X</application>
&man.brandelf.1;.</para> на систему FreeBSD.</para>
<para>Linux версия пакета Mathematica или Mathematica для Студентов <para>Linux версия <application>&mathematica;</application> отлично
работает под FreeBSD, однако
исполняемые файлы, поставляемые Wolfram, должны быть модифицированы
утилитой &man.brandelf.1;, чтобы FreeBSD знала о необходимости
использования Linux ABI для их выполнения.</para>
<para>Linux версия пакета <application>&mathematica;</application>
или <application>&mathematica;</application> для студентов
может быть заказана непосредственно через Wolfram по адресу <ulink может быть заказана непосредственно через Wolfram по адресу <ulink
url="http://www.wolfram.com/">http://www.wolfram.com/</ulink>.</para> url="http://www.wolfram.com/"></ulink>.</para>
<sect2> <sect2>
<title>Модификация исполняемых файлов</title> <title>Модификация исполняемых файлов</title>
<para>Исполняемые файлы пакета Mathematica находятся в директории <para>Исполняемые файлы пакета <application>&mathematica;</application>
находятся в директории
<filename>Unix</filename> на компакт диске с дистрибутивом. <filename>Unix</filename> на компакт диске с дистрибутивом.
Скопируйте эту директорию (вместе со всеми подкаталогами) на Ваш Скопируйте эту директорию (вместе со всеми подкаталогами) на ваш
жесткий диск, чтобы модифицировать (утилитой &man.brandelf.1;) жесткий диск, чтобы модифицировать (утилитой &man.brandelf.1;)
исполняемые файлы перед инсталляцией:</para> исполняемые файлы перед инсталляцией:</para>
@ -316,48 +428,59 @@ multi on</programlisting>
&prompt.root; <userinput>cd /localdir/Installers/Linux/</userinput> &prompt.root; <userinput>cd /localdir/Installers/Linux/</userinput>
&prompt.root; <userinput>./MathInstaller</userinput></screen> &prompt.root; <userinput>./MathInstaller</userinput></screen>
<para>Вы также можете установить ELF brand по умолчанию в Linux <para>Вы также можете установить ELF brand по умолчанию для всех
brand с помощью команды:</para> приложений Linux, которым это требуется, с помощью команды:</para>
<screen>&prompt.root; <userinput>sysctl -w kern.fallback_elf_brand=3</userinput></screen> <screen>&prompt.root; <userinput>sysctl kern.fallback_elf_brand=3</userinput></screen>
<para>Это заставит FreeBSD думать о том, что все программы не <para>FreeBSD будет считать, что все программы, не
обработанные &man.brandelf.1; используют Linux ABI и Вы сможете обработанные &man.brandelf.1; используют Linux ABI и вы сможете
запустить MathInstaller прямо с CDROM.</para> запустить MathInstaller прямо с CDROM.</para>
</sect2> </sect2>
<sect2> <sect2>
<title>Пароль к пакету Mathematica</title> <title>Пароль к пакету &mathematica;</title>
<para>Вам необходимо зарегистрировать свою копию пакета Mathematica и <para>Вам необходимо зарегистрировать свою копию пакета
<application>&mathematica;</application> и
получить от Wolfram специальный пароль, соответствующий получить от Wolfram специальный пароль, соответствующий
<quote>идентификатор машины</quote>.</para> <quote>идентификатору машины</quote>.</para>
<para>После того, как Вы установили необходимые библиотеки и <indexterm>
распаковали файлы Mathematica, получите <quote>идентификатор <primary>Ethernet</primary>
<secondary>MAC адрес</secondary>
</indexterm>
<para>После того, как вы установили необходимые библиотеки и
распаковали файлы <application>&mathematica;</application>,
получите <quote>идентификатор
машины</quote>, запустив программу <command>mathinfo</command> в машины</quote>, запустив программу <command>mathinfo</command> в
инсталляционной директории. Идентификатор машины зависит от инсталляционной директории. Идентификатор машины зависит от
MAC-адреса Вашей первой ethernet-карточки.</para> MAC-адреса вашей первой Ethernet-карты.</para>
<screen>&prompt.root; <userinput>cd /localdir/Files/SystemFiles/Installation/Binaries/Linux</userinput> <screen>&prompt.root; <userinput>cd /localdir/Files/SystemFiles/Installation/Binaries/Linux</userinput>
&prompt.root; <userinput>mathinfo</userinput> &prompt.root; <userinput>mathinfo</userinput>
disco.example.com 7115-70839-20412</screen> disco.example.com 7115-70839-20412</screen>
<para>При регистрации, либо по телефону или факсу, либо по <para>При регистрации, либо по телефону или факсу, либо по
электронной почте, Вы сообщаете Ваш <quote>идентификатор электронной почте, вы сообщаете <quote>идентификатор
машины</quote>, а в ответ получаете пароль, состоящий из нескольких машины</quote>, а в ответ получаете пароль, состоящий из нескольких
чисел. Введите этот пароль при первом запуске Mathematica.</para> чисел. Введите этот пароль при первом запуске
<application>&mathematica;</application>, как и для
любой другой платформы.</para>
</sect2> </sect2>
<sect2> <sect2>
<title>Внешний интерфейс пакета Mathematica</title> <title>Подключение интерфейс &mathematica; через сеть</title>
<para>Mathematica использует специальные шрифты для отображения <para><application>&mathematica;</application> использует специальные
шрифты для отображения
некоторых символов, которые отсутствуют в стандартных шрифтах некоторых символов, которые отсутствуют в стандартных шрифтах
(символы интегралов, сумм, греческий алфавит и другие). Протокол X (символы интегралов, сумм, греческий алфавит и другие). Протокол X
требует, чтобы эти шрифты были установлены требует, чтобы эти шрифты были установлены
<emphasis>локально</emphasis>. Это означает, что Вы должны <emphasis>локально</emphasis>. Это означает, что вы должны
скопировать эти шрифты с компакт диска или сетевого узла на Ваш скопировать эти шрифты с компакт диска или сетевого узла
<application>&mathematica;</application> на ваш
жесткий диск. Обычно, все шрифты должны находиться в каталоге жесткий диск. Обычно, все шрифты должны находиться в каталоге
<filename>/cdrom/Unix/Files/SystemFiles/Fonts</filename> компакт <filename>/cdrom/Unix/Files/SystemFiles/Fonts</filename> компакт
диска или диска или
@ -368,11 +491,11 @@ disco.example.com 7115-70839-20412</screen>
<para>Можно просто скопировать их в один из существующих подкаталогов <para>Можно просто скопировать их в один из существующих подкаталогов
в директории <filename>/usr/X11R6/lib/X11/fonts</filename>. В этом в директории <filename>/usr/X11R6/lib/X11/fonts</filename>. В этом
случае, Вам потребуется отредактировать файл случае, вам потребуется отредактировать файл
<filename>fonts.dir</filename>, добавив в него названия шрифтов и <filename>fonts.dir</filename>, добавив в него названия шрифтов и
изменив число шрифтов в первой строке. Или Вы можете запустить изменив число шрифтов в первой строке. Или вы можете запустить
программу <command>mkfontdir</command>, находясь в том каталоге, программу &man.mkfontdir.1;, находясь в том каталоге,
куда Вы скопировали шрифты.</para> куда вы скопировали шрифты.</para>
<para>Есть альтернативный способ: скопировать директории в каталог <para>Есть альтернативный способ: скопировать директории в каталог
<filename>/usr/X11R6/lib/X11/fonts</filename>:</para> <filename>/usr/X11R6/lib/X11/fonts</filename>:</para>
@ -386,7 +509,7 @@ disco.example.com 7115-70839-20412</screen>
&prompt.root; <userinput>cd /usr/X11R6/lib/X11/fonts/X</userinput> &prompt.root; <userinput>cd /usr/X11R6/lib/X11/fonts/X</userinput>
&prompt.root; <userinput>mkfontdir</userinput> &prompt.root; <userinput>mkfontdir</userinput>
&prompt.root; <userinput>cd ../MathType1</userinput> &prompt.root; <userinput>cd ../MathType1</userinput>
&prompt.root; <userinput>mkfontdir</userinput</screen> &prompt.root; <userinput>mkfontdir</userinput></screen>
<para>Теперь добавьте каталоги с новыми шрифтами в путь к <para>Теперь добавьте каталоги с новыми шрифтами в путь к
шрифтам:</para> шрифтам:</para>
@ -395,69 +518,102 @@ disco.example.com 7115-70839-20412</screen>
&prompt.root; <userinput>xset fp+ /usr/X11R6/lib/X11/fonts/MathType1</userinput> &prompt.root; <userinput>xset fp+ /usr/X11R6/lib/X11/fonts/MathType1</userinput>
&prompt.root; <userinput>xset fp rehash</userinput></screen> &prompt.root; <userinput>xset fp rehash</userinput></screen>
<para>Если Вы используете XFree86, то можно просто прописать эти <para>Если вы используете <application>&xfree86;</application>,
то можно просто прописать эти
каталоги в файле <filename>XF86Config</filename>.</para> каталоги в файле <filename>XF86Config</filename>.</para>
<para>Если на Вашем компьютере <emphasis>нет</emphasis> каталога <indexterm><primary>шрифты</primary></indexterm>
<filename>/usr/X11R6/lib/X11/fonts/Type1</filename>, то замените
<para>Если на вашем компьютере <emphasis>нет</emphasis> каталога
<filename>/usr/X11R6/lib/X11/fonts/Type1</filename>, замените
<filename>MathType1</filename> на <filename>Type1</filename> в <filename>MathType1</filename> на <filename>Type1</filename> в
предыдущем примере.</para> предыдущем примере.</para>
</sect2> </sect2>
</sect1> </sect1>
<sect1 id="linuxemu-oracle"> <sect1 id="linuxemu-maple">
<title>Установка Oracle</title> <title>Installing &maple; *</title>
<para><emphasis>Автор Marcel Moolenaar <para>Этот раздел не переведен.</para>
<email>marcel@cup.hp.com</email></emphasis></para> </sect1>
<sect1 id="linuxemu-matlab">
<title>Installing &matlab; *</title>
<para>Этот раздел не переведен.</para>
</sect1>
<sect1 id="linuxemu-oracle">
<sect1info>
<authorgroup>
<author>
<firstname>Marcel</firstname>
<surname>Moolenaar</surname>
<contrib>Предоставил </contrib>
</author>
<!-- marcel@cup.hp.com -->
</authorgroup>
</sect1info>
<title>Установка &oracle;</title>
<indexterm>
<primary>приложения</primary>
<secondary><application>Oracle</application></secondary>
</indexterm>
<sect2> <sect2>
<title>Введение</title> <title>Введение</title>
<para>Ниже описан процесс установки Oracle 8.0.5 и Oracle 8.0.5.1
Enterprise Edition для Linux на систему с FreeBSD.</para> <para>Ниже описан процесс установки <application>&oracle;
8.0.5</application> и <application>&oracle; 8.0.5.1 Enterprise
Edition</application> для Linux на систему FreeBSD.</para>
</sect2> </sect2>
<sect2> <sect2>
<title>Настройка Linux окружения</title> <title>Настройка Linux окружения</title>
<para>Удостоверьтесь, что порты <filename>linux_base</filename> и <para>Удостоверьтесь, что порты <filename
<filename>linux_devtools</filename> установлены на Вашей системе. role='package'>emulators/linux_base</filename> и
Они появились в коллекции портов после выхода FreeBSD 3.2. Если Вы <filename role='package'>devel/linux_devtools</filename> установлены
используете FreeBSD 3.2 или более раннюю, обновите коллекцию портов. на вашей системе. Если у вас возникнут трудности с этими портами,
Нелишним будет и апгрейд до более поздней версии FreeBSD. Если у воспользуйтесь более ранней их версией.</para>
Вас возникнут трудности с <filename>linux_base-6.1</filename> или
<filename>linux_devtools-6.1</filename>, воспользуйтесь версией 5.2
этих пакетов.</para>
<para>Если Вы хотите использовать intelligent agent, Вам также <para>Если вы хотите использовать intelligent agent, также
понадобится TCL пакет от Red Hat: понадобится TCL пакет от Red Hat:
<filename>tcl-8.0.3-20.i386.rpm</filename>. Для этого <filename>tcl-8.0.3-20.i386.rpm</filename>. Для этого
воспользуйтесь следующей командой:</para> воспользуйтесь следующей командой <application>RPM</application>
(<filename role='package'>archivers/rpm</filename>):</para>
<screen>&prompt.root; <userinput>rpm -i --ignoreos --root /compat/linux --dbpath /var/lib/rpm <replaceable>package</replaceable></userinput></screen> <screen>&prompt.root; <userinput>rpm -i --ignoreos --root /compat/linux --dbpath /var/lib/rpm <replaceable>пакет</replaceable></userinput></screen>
<para>Установка этого пакета должна пройти без каких-либо ошибок.</para> <para>Установка этого <replaceable>пакета</replaceable> должна
пройти без каких-либо ошибок.</para>
</sect2> </sect2>
<sect2> <sect2>
<title>Настройка окружения Oracle</title> <title>Настройка окружения &oracle;</title>
<para>Прежде чем Вы сможете установить Oracle, Вам необходимо <para>Прежде чем вы сможете установить
обеспечить нужное окружение. Ниже описывается, что <application>&oracle;</application>, вам необходимо
<emphasis>конкретно</emphasis> нужно сделать, чтобы успешно запускать обеспечить соответствующее окружение. Ниже дана информация, что
Oracle для Linux под FreeBSD. За общими сведениями обратитесь к <emphasis>именно</emphasis> нужно сделать, чтобы успешно запускать
фирменному руководству по инсталляции Oracle.</para> <application>&oracle;</application> для Linux под FreeBSD,
а не то, что написано в фирменном руководстве по установке
<application>&oracle;</application>.</para>
<sect3 id="linuxemu-kernel-tuning"> <sect3 id="linuxemu-kernel-tuning">
<title>Настройка ядра</title> <title>Настройка ядра</title>
<para>Как описывается в руководстве по инсталляции, необходимо <indexterm><primary>настройка ядра</primary></indexterm>
<para>Как описывается в руководстве по установке
<application>&oracle;</application>, необходимо
установить максимальный размер разделяемой памяти. Не используйте установить максимальный размер разделяемой памяти. Не используйте
<literal>SHMMAX</literal> под FreeBSD. <literal>SHMMAX</literal> <literal>SHMMAX</literal> под FreeBSD. <literal>SHMMAX</literal>
высчитывается, исходя из <literal>SHMMAXPGS</literal> и высчитывается, исходя из <literal>SHMMAXPGS</literal> и
<literal>PGSIZE</literal>. Следовательно, нужно задавать <literal>PGSIZE</literal>. Следовательно, нужно задавать
<literal>SHMMAXPGS</literal>. За информацией о прочих опциях <literal>SHMMAXPGS</literal>. За информацией о прочих опциях
обратитесь к фирменному руководству:</para> обратитесь к фирменному руководству. Пример настроек:</para>
<programlisting>options SHMMAXPGS=10000 <programlisting>options SHMMAXPGS=10000
options SHMMNI=100 options SHMMNI=100
@ -467,7 +623,7 @@ options SEMMNI=70
options SEMMSL=61</programlisting> options SEMMSL=61</programlisting>
<para>Установите эти опции в зависимости от того, как и для чего <para>Установите эти опции в зависимости от того, как и для чего
Вы будете использовать Oracle.</para> вы будете использовать <application>&oracle;</application>.</para>
<para>Не забудьте добавить следующие строки в файл конфигурации <para>Не забудьте добавить следующие строки в файл конфигурации
ядра:</para> ядра:</para>
@ -479,25 +635,30 @@ options SYSVMSG #
<sect3 id="linuxemu-oracle-account"> <sect3 id="linuxemu-oracle-account">
<title>Oracle аккаунт</title> <title>Учетная запись &oracle;</title>
<para>Вам нужно создать специальный Oracle аккаунт, как и любой <para>Создайте специальную учетную запись
другой аккаунт. Единственное отличие в том, что Вы должны указать <username>oracle</username>, как и любую другую учетную запись.
для него командный интерпретатор Linux: Единственное отличие в том, что для <username>oracle</username>
<filename>/compat/linux/bin/bash</filename>. Не забудьте добавить необходимо указать командный интерпретатор Linux.
<literal>/compat/linux/bin/bash</literal> в файл Добавьте <filename>/compat/linux/bin/bash</filename> в
<filename>/etc/shells</filename>.</para> <filename>/etc/shells</filename> и установите для
<username>oracle</username> командный интерпритатор
<filename>/compat/linux/bin/bash</filename>.</para>
</sect3> </sect3>
<sect3 id="linuxemu-environment"> <sect3 id="linuxemu-environment">
<title>Переменные окружения</title> <title>Переменные окружения</title>
<para>Кроме стандартных переменных окружения, таких как <para>Кроме стандартных переменных окружения
<envar>ORACLE_HOME</envar> и <envar>ORACLE_SID</envar>, Вам нужно <application>&oracle;</application>, таких как
<envar>ORACLE_HOME</envar> и <envar>ORACLE_SID</envar>, вам нужно
будет установить следующие дополнительные переменные:</para> будет установить следующие дополнительные переменные:</para>
<informaltable frame="none"> <informaltable frame="none">
<tgroup cols="2"> <tgroup cols="2">
<colspec colwidth="1*">
<colspec colwidth="2*">
<thead> <thead>
<row> <row>
<entry>Переменная</entry> <entry>Переменная</entry>
@ -547,23 +708,28 @@ ORACLE_SID=ORCL; export ORACLE_SID
ORACLE_TERM=386x; export ORACLE_TERM ORACLE_TERM=386x; export ORACLE_TERM
CLASSPATH=$ORACLE_HOME/jdbc/lib/classes111.zip CLASSPATH=$ORACLE_HOME/jdbc/lib/classes111.zip
export CLASSPATH export CLASSPATH
PATH=/compat/linux/bin:/compat/linux/sbin:/compat/linux/usr/bin:/compat/linux/usr/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:$ORACLE_HOME/bin 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> export PATH</programlisting>
</sect3> </sect3>
</sect2> </sect2>
<sect2> <sect2>
<title>Инсталляция Oracle</title> <title>Установка &oracle;</title>
<para>Из-за небольшой несовместимости с Linux эмулятором, Вам нужно <para>Из-за небольшой несовместимости с Linux эмулятором, вам нужно
будет создать подкаталог <filename>.oracle</filename> в директории будет создать подкаталог <filename>.oracle</filename> в каталоге
<filename>/var/tmp</filename> прежде чем можно будет начать <filename>/var/tmp</filename> прежде, чем можно будет начать
инсталляцию. Либо сделайте ее владельцем пользователя oracle, либо установку. Либо сделайте ее владельцем пользователя
поставьте права на запись для всех. Если Вы все сделали правильно, <username>oracle</username>, либо поставьте права на запись для всех.
то инсталляция должна пройти без проблем. Если какие-либо трудности Если вы все сделали правильно, то установка
все же возникли, проверьте еще раз все конфигурационные файлы и <application>&oracle;</application> должна пройти без проблем. Если
целостность дистрибутива. После окончания установки, приложите какие-либо трудности все же возникли, проверьте еще раз все
патчи (смотрите следующие две секции).</para> конфигурационные файлы и/или целостность дистрибутива
<application>&oracle;</application>. После окончания установки
<application>&oracle;</application> приложите патчи
(смотрите следующие два раздела).</para>
<para>Одна из часто возникающих проблем &mdash; неправильно <para>Одна из часто возникающих проблем &mdash; неправильно
установленный TCP адаптер. В результате, невозможно запустить TCP установленный TCP адаптер. В результате, невозможно запустить TCP
@ -581,7 +747,8 @@ export PATH</programlisting>
<sect3 id="linuxemu-patch-root"> <sect3 id="linuxemu-patch-root">
<title>Модификация root.sh</title> <title>Модификация root.sh</title>
<para>Инсталлируя Oracle, необходимо выполнить некоторые действия <para>При установке <application>&oracle;</application>
необходимо выполнить некоторые действия
(имея при этом привилегии суперпользователя). Фактически это (имея при этом привилегии суперпользователя). Фактически это
сводится к выполнению скрипта <filename>root.sh</filename>, сводится к выполнению скрипта <filename>root.sh</filename>,
который находится в директории <filename>orainst</filename>. который находится в директории <filename>orainst</filename>.
@ -607,17 +774,21 @@ export PATH</programlisting>
# #
# Define variables to be used in this script</programlisting> # Define variables to be used in this script</programlisting>
<para>Если Вы инсталлируете Oracle не с компакт диска, то можно <para>Если вы устанавливаете <application>&oracle;</application>
модифицировать файл <filename>rthd.sh</filename>, который не с компакт диска, можно модифицировать исходный файл
находится в директории <filename>orainst</filename>.</para> <filename>root.sh</filename>. Он называется
<filename>rthd.sh</filename> и находится в каталоге
<filename>orainst</filename>.</para>
</sect3> </sect3>
<sect3 id="linuxemu-patch-tcl"> <sect3 id="linuxemu-patch-tcl">
<title>Модификация genclntsh</title> <title>Модификация genclntsh</title>
<para>Скрипт genclntsh используется для того, чтобы создать единую <para>Скрипт <command>genclntsh</command> используется для того,
разделяемую клиентскую библиотеку. Приложите следующий патч, чтобы создать единую совместно используемую клиентскую библиотеку,
чтобы закомментировать определение переменной PATH:</para> которая используется для создания демонстраций. Приложите следующий
патч, чтобы закомментировать определение переменной
<envar>PATH</envar>:</para>
<programlisting>*** bin/genclntsh.orig Wed Sep 30 07:37:19 1998 <programlisting>*** bin/genclntsh.orig Wed Sep 30 07:37:19 1998
--- bin/genclntsh Tue Dec 22 15:36:49 1998 --- bin/genclntsh Tue Dec 22 15:36:49 1998
@ -640,23 +811,32 @@ export PATH</programlisting>
</sect2> </sect2>
<sect2> <sect2>
<title>Запуск и использование Oracle</title> <title>Запуск &oracle;</title>
<para>Теперь, если Вы все сделали правильно, то можете использовать <para>Теперь, если вы все сделали правильно, то можете использовать
Oracle так же, как если бы Вы поставили его на Linux систему.</para> <application>&oracle;</application> так же, как и в системе
Linux.</para>
</sect2> </sect2>
</sect1> </sect1>
<sect1> <sect1 id="sapr3">
<title>Installing &sap.r3; *</title>
<para>Этот раздел не переведен.</para>
</sect1>
<sect1 id="linuxemu-advanced">
<title>Дополнительные сведения</title> <title>Дополнительные сведения</title>
<para>Если Вы интересуетесь, как работает Linux эмуляция, эта секция для <para>Если вы интересуетесь, как работает Linux эмуляция, этот раздел для
Вас. Большинство материала взято из электронного письма, адресованного вас. Большинство материала взято из электронного письма, адресованного
&a.chat; by Terry Lambert <email>tlambert@primenet.com</email> (ID &a.chat; by Terry Lambert <email>tlambert@primenet.com</email> (ID
письма: <literal>&lt;199906020108.SAA07001@usr09.primenet.com&gt;</literal>).</para> письма: <literal>&lt;199906020108.SAA07001@usr09.primenet.com&gt;</literal>).</para>
<sect2> <sect2>
<title>Как все это устроено?</title> <title>Как все это устроено?</title>
<indexterm><primary>загрузчик исполнимых классов</primary></indexterm>
<para>FreeBSD поддерживает абстракцию, называемую <quote>загрузчик <para>FreeBSD поддерживает абстракцию, называемую <quote>загрузчик
исполнимых классов</quote>, который фактически является первой исполнимых классов</quote>, который фактически является первой
@ -666,7 +846,7 @@ export PATH</programlisting>
одного, который, в случае неудачи, выполняет программу как одного, который, в случае неудачи, выполняет программу как
сценарий (скрипт).</para> сценарий (скрипт).</para>
<para>Исторически сложилось, что единственный загрузчик в UNIX <para>Исторически сложилось, что единственный загрузчик в &unix;
системах проверял <quote>магическое число</quote> (чаще всего первые системах проверял <quote>магическое число</quote> (чаще всего первые
4 или 8 байт файла), чтобы определить, известен ли формат 4 или 8 байт файла), чтобы определить, известен ли формат
исполняемого файла системе, и если да, то вызвал соответствующий исполняемого файла системе, и если да, то вызвал соответствующий
@ -686,16 +866,18 @@ export PATH</programlisting>
включая специальный <literal>#!</literal> загрузчик, который включая специальный <literal>#!</literal> загрузчик, который
вызывает нужный интерпретатор или <filename>/bin/sh</filename>, если вызывает нужный интерпретатор или <filename>/bin/sh</filename>, если
не нашел подходящего.</para> не нашел подходящего.</para>
<indexterm><primary>ELF</primary></indexterm>
<para>Формат исполняемого файла FreeBSD определяет по <para>Формат исполняемого файла FreeBSD определяет по
<quote>магическому числу</quote>. На этой стадии пока не <quote>магическому числу</quote>. На этой стадии пока не
различается, для какой операционной системы предназначен файл различается, для какой операционной системы предназначен файл
(Linux, Solaris, или любой другой, использующей ELF-формат (Linux, &solaris;, или любой другой, использующей ELF-формат
исполняемых файлов).</para> исполняемых файлов).</para>
<indexterm><primary>Solaris</primary></indexterm>
<para>Далее, ELF-загрузчик определяет <quote>марку</quote> <para>Далее, ELF-загрузчик определяет <quote>марку</quote>
(специальный комментарий; отсутствует в исполняемых файлах (специальный комментарий; отсутствует в исполняемых файлах
SVR4/Solaris) исполняемого файла, то есть для какой операционной SVR4/&solaris;) исполняемого файла, то есть для какой операционной
системы он предназначен.</para> системы он предназначен.</para>
<para>Соответственно, Linux программы должны быть <para>Соответственно, Linux программы должны быть
@ -704,19 +886,24 @@ export PATH</programlisting>
<screen>&prompt.root; <userinput>brandelf -t Linux file</userinput></screen> <screen>&prompt.root; <userinput>brandelf -t Linux file</userinput></screen>
<indexterm>
<primary>ELF</primary>
<secondary>branding</secondary>
</indexterm>
<para>Когда ELF-загрузчик находит <quote>марку</quote> <para>Когда ELF-загрузчик находит <quote>марку</quote>
<literal>Linux</literal>, он заменяет соответствующий указатель в <literal>Linux</literal>, он заменяет соответствующий указатель в
структуре <literal>proc</literal>. Все системные вызовы структуре <literal>proc</literal>. Все системные вызовы
индексируются через этот указатель (в традиционной UNIX системе, это индексируются через этот указатель (в традиционной &unix; системе это
массив <literal>sysent[]</literal>, содержащий системные вызовы). массив <literal>sysent[]</literal>, содержащий системные вызовы).
Некоторые особые ситуации и системные вызовы обрабатываются Некоторые особые ситуации и системные вызовы обрабатываются
специальным модулем ядра поддержки Linux.</para> специальным модулем ядра поддержки Linux.</para>
<para>Плюс ко всему, Linux эмулятор динамически <quote>изменяет <para>Плюс ко всему, Linux эмулятор динамически <quote>изменяет
корень</quote> файловой системы при поиске файлов (фактически делая корень</quote> файловой системы при поиске файлов; фактически
то же самое, что и опция <literal>union</literal> при монтировании так же, как и параметр <literal>union</literal> при монтировании
файловых систем (не путать с unionfs!)). Сперва, файл ищется в файловых систем (не путать с <literal>unionfs</literal>!).
директории Сперва, файл ищется в каталоге
<filename>/compat/linux/<replaceable>original-path</replaceable></filename> <filename>/compat/linux/<replaceable>original-path</replaceable></filename>
и только затем, в случае неудачи, в и только затем, в случае неудачи, в
<filename>/<replaceable>original-path</replaceable></filename>. Это <filename>/<replaceable>original-path</replaceable></filename>. Это
@ -745,15 +932,29 @@ export PATH</programlisting>
могут быть либо в ядре, либо в динамически загружаемом могут быть либо в ядре, либо в динамически загружаемом
модуле.</para> модуле.</para>
<para>Можно ли назвать это эмуляцией? Нет. Как таковой, эмулятор <para>Можно ли назвать это эмуляцией? Нет. Это реализация ABI,
(или симулятор) отсутствует. В таком случае, почему же тогда а не эмуляция. Как таковой, эмулятор (или симулятор)
отсутствует.</para>
<para>В таком случае, почему же тогда
говорят <quote>Linux эмуляция</quote>? Чтобы говорят <quote>Linux эмуляция</quote>? Чтобы
<quote>насолить</quote> FreeBSD?! <!-- smiley -->8-). На самом <quote>насолить</quote> FreeBSD?!. На самом
деле, это вопрос терминологии: не существовало слова, которое бы деле, это вопрос терминологии: не существовало слова, которое бы
точнее описывало этот процесс. Нельзя сказать, что FreeBSD точнее описывало этот процесс. Нельзя сказать, что FreeBSD
запускает приложения Linux (без перекомпиляции или загрузки запускает приложения Linux (без перекомпиляции или загрузки
соответствующего модуля ядра). Тогда и придумали термин соответствующего модуля ядра). Поэтому и придумали термин
<quote>Linux эмуляция</quote>.</para> <quote>Linux эмуляция</quote>.</para>
</sect2> </sect2>
</sect1> </sect1>
</chapter> </chapter>
<!--
Local Variables:
mode: sgml
sgml-declaration: "../chapter.decl"
sgml-indent-data: t
sgml-omittag: nil
sgml-always-quote-attributes: t
sgml-parent-document: ("../book.sgml" "part" "chapter")
End:
-->