Update translated parts (MFen 1.35 -> 1.114)
Fixes Obtained from: The FreeBSD Russian Documentation Project
This commit is contained in:
parent
db62e8f84f
commit
524e777036
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=22342
1 changed files with 384 additions and 183 deletions
|
@ -2,13 +2,32 @@
|
|||
The FreeBSD Russian Documentation Project
|
||||
|
||||
$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">
|
||||
<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>
|
||||
<author>
|
||||
<firstname>Алексей</firstname>
|
||||
|
@ -19,17 +38,18 @@
|
|||
</chapterinfo>
|
||||
<title>Работа с приложениями, написанными для Linux</title>
|
||||
|
||||
<para><emphasis>Реструктурировал и частично дополнил &a.jim;, 22 марта
|
||||
2000. Оригинальная версия Brian N. Handy и &a.rich;</emphasis></para>
|
||||
|
||||
<sect1>
|
||||
<sect1 id="linuxemu-synopsis">
|
||||
<title>Краткий обзор</title>
|
||||
|
||||
<para>В этой главе будет рассказано о том, каким образом можно запускать
|
||||
приложения, изначально написанные для Linux, под FreeBSD и что нужно
|
||||
для этого сделать.</para>
|
||||
<indexterm><primary>Linux - бинарная совместимость</primary></indexterm>
|
||||
<indexterm>
|
||||
<primary>бинарная совместимость</primary>
|
||||
<secondary>Linux</secondary>
|
||||
</indexterm>
|
||||
|
||||
<para>Возможно, Вы спрашиваете себя, зачем FreeBSD нужно уметь работать
|
||||
<para>FreeBSD предоставляет бинарную совместимость с несколькими другими
|
||||
&unix; подобными операционными системами, включая Linux.
|
||||
Возможно, Вы спрашиваете себя, зачем FreeBSD нужно уметь работать
|
||||
с приложениями, написанными для Linux. Ответ на этот вопрос достаточно
|
||||
прост: многие компании и разработчики производят программное
|
||||
обеспечение только для Linux, так как эта операционная система очень
|
||||
|
@ -44,69 +64,113 @@
|
|||
эмуляция.</para>
|
||||
|
||||
<para>Вкратце, FreeBSD позволяет Вам работать с 90% приложений для
|
||||
Linux без каких-либо модификаций последних. Среди них: Star Office,
|
||||
Linux версия Netscape, Adobe Acrobat, RealPlayer 5 и 7, VMWare,
|
||||
Oracle, WordPerfect, Doom, Quake и многие другие. Есть сведения, что
|
||||
Linux без каких-либо модификаций последних. Среди них:
|
||||
<application>&staroffice;</application>, Linux версия
|
||||
<application>&netscape;</application>,
|
||||
<application>&adobe; &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 программы показывали более высокую
|
||||
производительность при работе под FreeBSD, чем под Linux.</para>
|
||||
|
||||
<para>Конечно, существует некоторые особенности Linux, которые (пока) не
|
||||
<indexterm>
|
||||
<primary>Linux</primary>
|
||||
<secondary>файловая система <filename>/proc</filename></secondary>
|
||||
</indexterm>
|
||||
|
||||
<para>Конечно, существует некоторые особенности Linux, которые не
|
||||
поддерживаются в полной мере FreeBSD. Например, так обстоят дела с
|
||||
приложениями Linux, использующими файловую систему
|
||||
<filename>/proc</filename>, так как реализация последней сильно
|
||||
отличается от таковой в FreeBSD (однако, ситуация меняется к лучшему:
|
||||
в FreeBSD-CURRENT поддержка Linux procfs уже встроена в систему).
|
||||
Существуют также системные вызовы, специфичные для i386, как,
|
||||
например, переключение в режим V86.</para>
|
||||
отличается от файловой системы <filename>/proc</filename> в FreeBSD.
|
||||
Существуют также системные вызовы, специфичные для &i386;, как,
|
||||
например, переключение в виртуальный режим 8086.</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 id="linuxemu-lbc-install">
|
||||
<title>Инсталляция</title>
|
||||
<title>Установка</title>
|
||||
|
||||
<para>Начиная с 3.0-RELEASE, больше нет необходимости указывать
|
||||
<literal>options LINUX</literal> или <literal>options
|
||||
COMPAT_LINUX</literal> в Вашем файле конфигурации ядра.</para>
|
||||
<indexterm><primary>KLD (загружаемый объект ядра)</primary></indexterm>
|
||||
|
||||
<para>Поддержка Linux приложений осуществляется посредством специального
|
||||
модуля ядра (KLD объекта, <quote>Kernel LoaDable object</quote>), то
|
||||
есть его можно загрузить/выгрузить <quote>на лету</quote>, без
|
||||
необходимости перезагрузки. Вам потребуется убедиться в наличии
|
||||
следующей строки в файле <filename>/etc/rc.conf</filename>:</para>
|
||||
<para>Бинарная совместимость с Linux не включена по умолчанию.
|
||||
Простейший способ включения этой функциональности заключается
|
||||
в загрузке KLD объекта <literal>linux</literal> (<quote>Kernel
|
||||
LoaDable object</quote>). Вы можете загрузить этот модуль,
|
||||
просто набрав <command>linux</command> в командной строке.</para>
|
||||
|
||||
<programlisting>linux_enable=<quote>YES</quote></programlisting>
|
||||
<para>Если вы хотите, чтобы совместимость с Linux была включена
|
||||
постоянно, необходимо добавить в <filename>/etc/rc.conf</filename>
|
||||
следующую строку:</para>
|
||||
|
||||
<para>Это, в свою очередь, повлияет на выполнение следующего кода в
|
||||
файле <filename>/etc/rc.i386</filename>:</para>
|
||||
<programlisting>linux_enable="YES"</programlisting>
|
||||
|
||||
<programlisting># Start the Linux binary compatibility if requested.
|
||||
#
|
||||
case ${linux_enable} in
|
||||
[Yy][Ee][Ss])
|
||||
echo -n ' linux'; linux > /dev/null 2>&1
|
||||
;;
|
||||
esac</programlisting>
|
||||
|
||||
<para>Если Вы хотите проверить, загружен ли модуль, это можно сделать
|
||||
при помощи команды <command>kldstat</command>:</para>
|
||||
<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>
|
||||
|
||||
<para>Если по какой-либо причине Вы не хотите или не можете загрузить
|
||||
KLD, то Вы можете статически включить поддержку Linux в ядро
|
||||
посредством опции <literal>options LINUX</literal> в файле
|
||||
<indexterm>
|
||||
<primary>параметры ядра</primary>
|
||||
<secondary>LINUX</secondary>
|
||||
</indexterm>
|
||||
|
||||
<para>Если по какой-либо причине вы не хотите или не можете загрузить
|
||||
KLD, то вы можете статически включить поддержку Linux в ядро
|
||||
посредством опции <literal>options COMPAT_LINUX</literal> в файле
|
||||
конфигурации ядра. Затем соберите и проинсталлируйте новое ядро,
|
||||
следуя описанию в секции, посвященной <link
|
||||
linkend="kernelconfig">конфигурации ядра</link>.</para>
|
||||
следуя описанию в <xref linkend="kernelconfig">.</para>
|
||||
|
||||
<sect2>
|
||||
<title>Установка необходимых Linux библиотек</title>
|
||||
|
||||
<indexterm>
|
||||
<primary>Linux</primary>
|
||||
<secondary>установка библиотек Linux</secondary>
|
||||
</indexterm>
|
||||
|
||||
<para>Установить все требуемые библиотеки можно двумя путями: либо
|
||||
используя порт <link linkend="linuxemu-libs-port">linux_base</link>,
|
||||
либо установив их <link
|
||||
|
@ -115,9 +179,12 @@ Id Refs Address Size Name
|
|||
<sect3 id="linuxemu-libs-port">
|
||||
<title>Установка с помощью порта linux_base</title>
|
||||
|
||||
<indexterm><primary>коллекция портов</primary></indexterm>
|
||||
|
||||
<para>Этот метод является самым простым, и мы рекомендуем
|
||||
воспользоваться именно им. Процесс аналогичен установке любого
|
||||
другого порта из <ulink url="../ports/">коллекции портов</ulink>.
|
||||
другого порта из <ulink type="html"
|
||||
url="file://localhost/usr/ports/">коллекции портов</ulink>.
|
||||
Просто выполните следующие команды:</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>cd /usr/ports/emulators/linux_base</userinput>
|
||||
|
@ -127,13 +194,20 @@ Id Refs Address Size Name
|
|||
программы, возможно, будут сообщать о несоответствии подверсий
|
||||
некоторых системных библиотек. Однако, практически, это не
|
||||
вызывает каких-либо неудобств.</para>
|
||||
|
||||
<note><para>Возможно наличие нескольких версий порта <filename
|
||||
role="package">emulators/linux_base</filename>, соответствующих
|
||||
различным версиям разных дистрибутивов Linux. Вы должны
|
||||
установить порт, наиболее близко соотвествующий требованиям
|
||||
приложений Linux, которые будут установлены.</para></note>
|
||||
|
||||
</sect3>
|
||||
|
||||
<sect3 id="linuxemu-libs-manually">
|
||||
<title>Установка библиотек вручную</title>
|
||||
|
||||
<para>Если у Вас нет установленной коллекции портов, то можно
|
||||
установить требуемые библиотеки вручную Вам понадобятся
|
||||
<para>Если у вас нет установленной коллекции портов, можно
|
||||
установить требуемые библиотеки вручную. Вам понадобятся
|
||||
разделяемые библиотеки для Linux, которые нужны программам, и
|
||||
runtime-компоновщик. Вам также потребуется создать <quote>теневой
|
||||
корень</quote>: директорию <filename>/compat/linux</filename>, где
|
||||
|
@ -147,55 +221,62 @@ Id Refs Address Size Name
|
|||
находиться в теневом дереве, а не в пути, сообщаемым командой
|
||||
Linux <command>ld.so</command>.</para>
|
||||
|
||||
<para>По мере работы с различными Linux программами, у Вас будет
|
||||
<para>По мере работы с различными Linux программами, у вас будет
|
||||
накапливаться некий базовый набор библиотек, которого будет
|
||||
достаточно для большинства существующих Linux приложений.</para>
|
||||
</sect3>
|
||||
|
||||
<sect3>
|
||||
<title>Как установить дополнительные разделяемые библиотеки</title>
|
||||
<title>Как установить дополнительные совместно используемые библиотеки</title>
|
||||
|
||||
<indexterm><primary>совместно используемые библиотеки</primary></indexterm>
|
||||
|
||||
<para>Что, если при установленном <filename>linux_base</filename>
|
||||
порте Ваше приложение все равно сообщает об отсутствии необходимой
|
||||
порте ваше приложение все равно сообщает об отсутствии необходимой
|
||||
библиотеки? Как узнать, какая именно нужна библиотека и где ее
|
||||
взять? В принципе, есть два способа. Вам необходимо иметь
|
||||
привилегии суперпользователя для их осуществления.</para>
|
||||
|
||||
<para>Если у Вас есть доступ к машине, на которой установлен Linux,
|
||||
<para>Если у вас есть доступ к машине, на которой установлен Linux,
|
||||
узнайте, какие библиотеки использует Linux приложение, и просто
|
||||
скопируйте из на свою машину. Например:</para>
|
||||
|
||||
<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>
|
||||
libXt.so.3 (DLL Jump 3.1) => /usr/X11/lib/libXt.so.3.1.0
|
||||
libX11.so.3 (DLL Jump 3.1) => /usr/X11/lib/libX11.so.3.1.0
|
||||
libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29</screen>
|
||||
|
||||
<indexterm><primary>символические ссылки</primary></indexterm>
|
||||
|
||||
<para>Вам потребуются все файлы, перечисленные в последней
|
||||
колонке. Скопируйте их в директорию
|
||||
<filename>/compat/linux</filename> на Вашей системе, а также
|
||||
<filename>/compat/linux</filename> на вашей системе, а также
|
||||
создайте символические ссылки на эти файлы, с именами ссылок из
|
||||
первой колонки соответственно. В итоге у Вас на машине должны
|
||||
первой колонки соответственно. В итоге у вас на машине должны
|
||||
быть следующие файлы:</para>
|
||||
|
||||
<screen>/compat/linux/usr/X11/lib/libXt.so.3.1.0
|
||||
/compat/linux/usr/X11/lib/libXt.so.3 -> libXt.so.3.1.0
|
||||
/compat/linux/usr/X11/lib/libX11.so.3.1.0
|
||||
/compat/linux/usr/X11/lib/libX11.so.3 -> libX11.so.3.1.0
|
||||
/compat/linux/lib/libc.so.4.6.29 /compat/linux/lib/libc.so.4 -> libc.so.4.6.29</screen>
|
||||
/compat/linux/lib/libc.so.4.6.29
|
||||
/compat/linux/lib/libc.so.4 -> libc.so.4.6.29</screen>
|
||||
|
||||
<blockquote>
|
||||
<note>
|
||||
<para>Заметьте, что если у Вас уже есть какая-либо из
|
||||
<para>Заметьте, что если у вас уже есть какая-либо из
|
||||
перечисленных библиотек, то ее не нужно копировать заново.
|
||||
Однако, у Вас может быть более старая версия. В этом
|
||||
Однако, у вас может быть более старая версия. В этом
|
||||
случае, лучше все-таки скопировать библиотеку поздней
|
||||
версии, изменив соответственно ссылку на нее. Предыдущую
|
||||
версию библиотеки можно удалить. Например, пусть у Вас есть
|
||||
версию библиотеки можно удалить. Например, пусть у вас есть
|
||||
следующие библиотеки:</para>
|
||||
|
||||
<screen>/compat/linux/lib/libc.so.4.6.27
|
||||
|
@ -209,7 +290,7 @@ libc.so.4 (DLL Jump 4.5pl26) => /lib/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
|
||||
|
@ -222,7 +303,7 @@ libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29</screen>
|
|||
<para>Символические ссылки важны <emphasis>только</emphasis>
|
||||
для Linux программ. Runtime-компоновщик FreeBSD
|
||||
самостоятельно подберет правильные номера версий библиотек,
|
||||
и Вам не нужно об этом беспокоиться.</para>
|
||||
и вам не нужно об этом беспокоиться.</para>
|
||||
</note>
|
||||
</blockquote>
|
||||
</informalexample>
|
||||
|
@ -230,9 +311,14 @@ libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29</screen>
|
|||
</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-файл, Вы
|
||||
получаете следующее сообщение об ошибке:</para>
|
||||
|
||||
|
@ -246,32 +332,35 @@ Abort</screen>
|
|||
|
||||
<screen>&prompt.user; <userinput>brandelf -t Linux linux-elf-программа</userinput></screen>
|
||||
|
||||
<para>Следует отметить, что программы, для которых необходим
|
||||
<quote>branding</quote>, встречаются все реже и реже, и в недалеком
|
||||
будущем Вы вряд ли прибегнете к нему вообще.</para>
|
||||
<indexterm><primary>GNU toolchain</primary></indexterm>
|
||||
|
||||
<para>В настоящее время GNU toolchain помещает необходимую информацию
|
||||
в исполняемые файлы ELF автоматически, поэтому необходимость
|
||||
в этом действии случается все реже и реже, и в недалеком
|
||||
будущем вы вряд ли прибегнете к нему вообще.</para>
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title>Распознавание доменных имен</title>
|
||||
|
||||
<para>Если DNS не настроен или недоступен, или Вы получаете это
|
||||
<para>Если DNS не настроен или недоступен, или вы получаете это
|
||||
сообщение:</para>
|
||||
|
||||
<screen>resolv+: "bind" is an invalid keyword resolv+:
|
||||
"hosts" is an invalid keyword</screen>
|
||||
|
||||
<para>то Вам нужно создать (модифицировать) файл
|
||||
<para>то вам нужно создать (модифицировать) файл
|
||||
<filename>/compat/linux/etc/host.conf</filename>, содержащий:</para>
|
||||
|
||||
<programlisting>order hosts, bind
|
||||
multi on</programlisting>
|
||||
|
||||
<para>Таким образом, Вы указываете, то сначала производится поиск в
|
||||
<para>Таким образом, вы указываете, то сначала производится поиск в
|
||||
файле <filename>/etc/hosts</filename>, а только затем запрашивается
|
||||
DNS. Когда файл <filename>/compat/linux/etc/host.conf</filename>
|
||||
отсутствует, Linux приложения находят файл
|
||||
<filename>/etc/host.conf</filename> для FreeBSD и сообщают о
|
||||
несовместимом синтаксисе. Если Вы не настраивали сервер имен
|
||||
несовместимом синтаксисе. Если вы не настраивали сервер имен
|
||||
(<filename>/etc/resolv.conf</filename>), уберите
|
||||
<literal>bind</literal> из файла
|
||||
<filename>/compat/linux/etc/host.conf</filename>.</para>
|
||||
|
@ -279,29 +368,52 @@ multi on</programlisting>
|
|||
</sect1>
|
||||
|
||||
<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;
|
||||
и объединено с работой Bojan Bistrovic
|
||||
<email>bojanb@physics.odu.edu</email>.</emphasis></para>
|
||||
<title>Установка &mathematica;</title>
|
||||
|
||||
<para>Ниже описано, как установить Linux версию пакета Mathematica 4.x
|
||||
на FreeBSD систему.</para>
|
||||
<indexterm>
|
||||
<primary>приложения</primary>
|
||||
<secondary><application>Mathematica</application></secondary>
|
||||
</indexterm>
|
||||
|
||||
<para>Linux версия Mathematica отлично работает под FreeBSD, однако
|
||||
исполняемые файлы должны быть модифицированы утилитой
|
||||
&man.brandelf.1;.</para>
|
||||
<para>Ниже описано, как установить Linux версию пакета
|
||||
<application>&mathematica; 4.X</application>
|
||||
на систему 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
|
||||
url="http://www.wolfram.com/">http://www.wolfram.com/</ulink>.</para>
|
||||
url="http://www.wolfram.com/"></ulink>.</para>
|
||||
|
||||
<sect2>
|
||||
<title>Модификация исполняемых файлов</title>
|
||||
|
||||
<para>Исполняемые файлы пакета Mathematica находятся в директории
|
||||
<para>Исполняемые файлы пакета <application>&mathematica;</application>
|
||||
находятся в директории
|
||||
<filename>Unix</filename> на компакт диске с дистрибутивом.
|
||||
Скопируйте эту директорию (вместе со всеми подкаталогами) на Ваш
|
||||
Скопируйте эту директорию (вместе со всеми подкаталогами) на ваш
|
||||
жесткий диск, чтобы модифицировать (утилитой &man.brandelf.1;)
|
||||
исполняемые файлы перед инсталляцией:</para>
|
||||
|
||||
|
@ -316,48 +428,59 @@ multi on</programlisting>
|
|||
&prompt.root; <userinput>cd /localdir/Installers/Linux/</userinput>
|
||||
&prompt.root; <userinput>./MathInstaller</userinput></screen>
|
||||
|
||||
<para>Вы также можете установить ELF brand по умолчанию в Linux
|
||||
brand с помощью команды:</para>
|
||||
<para>Вы также можете установить ELF brand по умолчанию для всех
|
||||
приложений 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 думать о том, что все программы не
|
||||
обработанные &man.brandelf.1; используют Linux ABI и Вы сможете
|
||||
<para>FreeBSD будет считать, что все программы, не
|
||||
обработанные &man.brandelf.1; используют Linux ABI и вы сможете
|
||||
запустить MathInstaller прямо с CDROM.</para>
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title>Пароль к пакету Mathematica</title>
|
||||
<title>Пароль к пакету &mathematica;</title>
|
||||
|
||||
<para>Вам необходимо зарегистрировать свою копию пакета Mathematica и
|
||||
<para>Вам необходимо зарегистрировать свою копию пакета
|
||||
<application>&mathematica;</application> и
|
||||
получить от Wolfram специальный пароль, соответствующий
|
||||
<quote>идентификатор машины</quote>.</para>
|
||||
<quote>идентификатору машины</quote>.</para>
|
||||
|
||||
<para>После того, как Вы установили необходимые библиотеки и
|
||||
распаковали файлы Mathematica, получите <quote>идентификатор
|
||||
<indexterm>
|
||||
<primary>Ethernet</primary>
|
||||
<secondary>MAC адрес</secondary>
|
||||
</indexterm>
|
||||
|
||||
<para>После того, как вы установили необходимые библиотеки и
|
||||
распаковали файлы <application>&mathematica;</application>,
|
||||
получите <quote>идентификатор
|
||||
машины</quote>, запустив программу <command>mathinfo</command> в
|
||||
инсталляционной директории. Идентификатор машины зависит от
|
||||
MAC-адреса Вашей первой ethernet-карточки.</para>
|
||||
MAC-адреса вашей первой Ethernet-карты.</para>
|
||||
|
||||
<screen>&prompt.root; <userinput>cd /localdir/Files/SystemFiles/Installation/Binaries/Linux</userinput>
|
||||
&prompt.root; <userinput>mathinfo</userinput>
|
||||
disco.example.com 7115-70839-20412</screen>
|
||||
|
||||
<para>При регистрации, либо по телефону или факсу, либо по
|
||||
электронной почте, Вы сообщаете Ваш <quote>идентификатор
|
||||
электронной почте, вы сообщаете <quote>идентификатор
|
||||
машины</quote>, а в ответ получаете пароль, состоящий из нескольких
|
||||
чисел. Введите этот пароль при первом запуске Mathematica.</para>
|
||||
чисел. Введите этот пароль при первом запуске
|
||||
<application>&mathematica;</application>, как и для
|
||||
любой другой платформы.</para>
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title>Внешний интерфейс пакета Mathematica</title>
|
||||
<title>Подключение интерфейс &mathematica; через сеть</title>
|
||||
|
||||
<para>Mathematica использует специальные шрифты для отображения
|
||||
<para><application>&mathematica;</application> использует специальные
|
||||
шрифты для отображения
|
||||
некоторых символов, которые отсутствуют в стандартных шрифтах
|
||||
(символы интегралов, сумм, греческий алфавит и другие). Протокол X
|
||||
требует, чтобы эти шрифты были установлены
|
||||
<emphasis>локально</emphasis>. Это означает, что Вы должны
|
||||
скопировать эти шрифты с компакт диска или сетевого узла на Ваш
|
||||
<emphasis>локально</emphasis>. Это означает, что вы должны
|
||||
скопировать эти шрифты с компакт диска или сетевого узла
|
||||
<application>&mathematica;</application> на ваш
|
||||
жесткий диск. Обычно, все шрифты должны находиться в каталоге
|
||||
<filename>/cdrom/Unix/Files/SystemFiles/Fonts</filename> компакт
|
||||
диска или
|
||||
|
@ -368,11 +491,11 @@ disco.example.com 7115-70839-20412</screen>
|
|||
|
||||
<para>Можно просто скопировать их в один из существующих подкаталогов
|
||||
в директории <filename>/usr/X11R6/lib/X11/fonts</filename>. В этом
|
||||
случае, Вам потребуется отредактировать файл
|
||||
случае, вам потребуется отредактировать файл
|
||||
<filename>fonts.dir</filename>, добавив в него названия шрифтов и
|
||||
изменив число шрифтов в первой строке. Или Вы можете запустить
|
||||
программу <command>mkfontdir</command>, находясь в том каталоге,
|
||||
куда Вы скопировали шрифты.</para>
|
||||
изменив число шрифтов в первой строке. Или вы можете запустить
|
||||
программу &man.mkfontdir.1;, находясь в том каталоге,
|
||||
куда вы скопировали шрифты.</para>
|
||||
|
||||
<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>mkfontdir</userinput>
|
||||
&prompt.root; <userinput>cd ../MathType1</userinput>
|
||||
&prompt.root; <userinput>mkfontdir</userinput</screen>
|
||||
&prompt.root; <userinput>mkfontdir</userinput></screen>
|
||||
|
||||
<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 rehash</userinput></screen>
|
||||
|
||||
<para>Если Вы используете XFree86, то можно просто прописать эти
|
||||
<para>Если вы используете <application>&xfree86;</application>,
|
||||
то можно просто прописать эти
|
||||
каталоги в файле <filename>XF86Config</filename>.</para>
|
||||
|
||||
<para>Если на Вашем компьютере <emphasis>нет</emphasis> каталога
|
||||
<filename>/usr/X11R6/lib/X11/fonts/Type1</filename>, то замените
|
||||
<indexterm><primary>шрифты</primary></indexterm>
|
||||
|
||||
<para>Если на вашем компьютере <emphasis>нет</emphasis> каталога
|
||||
<filename>/usr/X11R6/lib/X11/fonts/Type1</filename>, замените
|
||||
<filename>MathType1</filename> на <filename>Type1</filename> в
|
||||
предыдущем примере.</para>
|
||||
</sect2>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="linuxemu-oracle">
|
||||
<title>Установка Oracle</title>
|
||||
<sect1 id="linuxemu-maple">
|
||||
<title>Installing &maple; *</title>
|
||||
|
||||
<para><emphasis>Автор Marcel Moolenaar
|
||||
<email>marcel@cup.hp.com</email></emphasis></para>
|
||||
<para>Этот раздел не переведен.</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>
|
||||
<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>
|
||||
<title>Настройка Linux окружения</title>
|
||||
|
||||
<para>Удостоверьтесь, что порты <filename>linux_base</filename> и
|
||||
<filename>linux_devtools</filename> установлены на Вашей системе.
|
||||
Они появились в коллекции портов после выхода FreeBSD 3.2. Если Вы
|
||||
используете FreeBSD 3.2 или более раннюю, обновите коллекцию портов.
|
||||
Нелишним будет и апгрейд до более поздней версии FreeBSD. Если у
|
||||
Вас возникнут трудности с <filename>linux_base-6.1</filename> или
|
||||
<filename>linux_devtools-6.1</filename>, воспользуйтесь версией 5.2
|
||||
этих пакетов.</para>
|
||||
<para>Удостоверьтесь, что порты <filename
|
||||
role='package'>emulators/linux_base</filename> и
|
||||
<filename role='package'>devel/linux_devtools</filename> установлены
|
||||
на вашей системе. Если у вас возникнут трудности с этими портами,
|
||||
воспользуйтесь более ранней их версией.</para>
|
||||
|
||||
<para>Если Вы хотите использовать intelligent agent, Вам также
|
||||
<para>Если вы хотите использовать intelligent agent, также
|
||||
понадобится TCL пакет от Red Hat:
|
||||
<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>
|
||||
<title>Настройка окружения Oracle</title>
|
||||
<title>Настройка окружения &oracle;</title>
|
||||
|
||||
<para>Прежде чем Вы сможете установить Oracle, Вам необходимо
|
||||
обеспечить нужное окружение. Ниже описывается, что
|
||||
<emphasis>конкретно</emphasis> нужно сделать, чтобы успешно запускать
|
||||
Oracle для Linux под FreeBSD. За общими сведениями обратитесь к
|
||||
фирменному руководству по инсталляции Oracle.</para>
|
||||
<para>Прежде чем вы сможете установить
|
||||
<application>&oracle;</application>, вам необходимо
|
||||
обеспечить соответствующее окружение. Ниже дана информация, что
|
||||
<emphasis>именно</emphasis> нужно сделать, чтобы успешно запускать
|
||||
<application>&oracle;</application> для Linux под FreeBSD,
|
||||
а не то, что написано в фирменном руководстве по установке
|
||||
<application>&oracle;</application>.</para>
|
||||
|
||||
<sect3 id="linuxemu-kernel-tuning">
|
||||
<title>Настройка ядра</title>
|
||||
|
||||
<para>Как описывается в руководстве по инсталляции, необходимо
|
||||
<indexterm><primary>настройка ядра</primary></indexterm>
|
||||
|
||||
<para>Как описывается в руководстве по установке
|
||||
<application>&oracle;</application>, необходимо
|
||||
установить максимальный размер разделяемой памяти. Не используйте
|
||||
<literal>SHMMAX</literal> под FreeBSD. <literal>SHMMAX</literal>
|
||||
высчитывается, исходя из <literal>SHMMAXPGS</literal> и
|
||||
<literal>PGSIZE</literal>. Следовательно, нужно задавать
|
||||
<literal>SHMMAXPGS</literal>. За информацией о прочих опциях
|
||||
обратитесь к фирменному руководству:</para>
|
||||
обратитесь к фирменному руководству. Пример настроек:</para>
|
||||
|
||||
<programlisting>options SHMMAXPGS=10000
|
||||
options SHMMNI=100
|
||||
|
@ -467,7 +623,7 @@ options SEMMNI=70
|
|||
options SEMMSL=61</programlisting>
|
||||
|
||||
<para>Установите эти опции в зависимости от того, как и для чего
|
||||
Вы будете использовать Oracle.</para>
|
||||
вы будете использовать <application>&oracle;</application>.</para>
|
||||
|
||||
<para>Не забудьте добавить следующие строки в файл конфигурации
|
||||
ядра:</para>
|
||||
|
@ -479,25 +635,30 @@ options SYSVMSG #
|
|||
|
||||
<sect3 id="linuxemu-oracle-account">
|
||||
|
||||
<title>Oracle аккаунт</title>
|
||||
<title>Учетная запись &oracle;</title>
|
||||
|
||||
<para>Вам нужно создать специальный Oracle аккаунт, как и любой
|
||||
другой аккаунт. Единственное отличие в том, что Вы должны указать
|
||||
для него командный интерпретатор Linux:
|
||||
<filename>/compat/linux/bin/bash</filename>. Не забудьте добавить
|
||||
<literal>/compat/linux/bin/bash</literal> в файл
|
||||
<filename>/etc/shells</filename>.</para>
|
||||
<para>Создайте специальную учетную запись
|
||||
<username>oracle</username>, как и любую другую учетную запись.
|
||||
Единственное отличие в том, что для <username>oracle</username>
|
||||
необходимо указать командный интерпретатор Linux.
|
||||
Добавьте <filename>/compat/linux/bin/bash</filename> в
|
||||
<filename>/etc/shells</filename> и установите для
|
||||
<username>oracle</username> командный интерпритатор
|
||||
<filename>/compat/linux/bin/bash</filename>.</para>
|
||||
</sect3>
|
||||
|
||||
<sect3 id="linuxemu-environment">
|
||||
<title>Переменные окружения</title>
|
||||
|
||||
<para>Кроме стандартных переменных окружения, таких как
|
||||
<envar>ORACLE_HOME</envar> и <envar>ORACLE_SID</envar>, Вам нужно
|
||||
<para>Кроме стандартных переменных окружения
|
||||
<application>&oracle;</application>, таких как
|
||||
<envar>ORACLE_HOME</envar> и <envar>ORACLE_SID</envar>, вам нужно
|
||||
будет установить следующие дополнительные переменные:</para>
|
||||
|
||||
<informaltable frame="none">
|
||||
<tgroup cols="2">
|
||||
<colspec colwidth="1*">
|
||||
<colspec colwidth="2*">
|
||||
<thead>
|
||||
<row>
|
||||
<entry>Переменная</entry>
|
||||
|
@ -547,23 +708,28 @@ 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:/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>
|
||||
</sect3>
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title>Инсталляция Oracle</title>
|
||||
<title>Установка &oracle;</title>
|
||||
|
||||
<para>Из-за небольшой несовместимости с Linux эмулятором, Вам нужно
|
||||
будет создать подкаталог <filename>.oracle</filename> в директории
|
||||
<filename>/var/tmp</filename> прежде чем можно будет начать
|
||||
инсталляцию. Либо сделайте ее владельцем пользователя oracle, либо
|
||||
поставьте права на запись для всех. Если Вы все сделали правильно,
|
||||
то инсталляция должна пройти без проблем. Если какие-либо трудности
|
||||
все же возникли, проверьте еще раз все конфигурационные файлы и
|
||||
целостность дистрибутива. После окончания установки, приложите
|
||||
патчи (смотрите следующие две секции).</para>
|
||||
<para>Из-за небольшой несовместимости с Linux эмулятором, вам нужно
|
||||
будет создать подкаталог <filename>.oracle</filename> в каталоге
|
||||
<filename>/var/tmp</filename> прежде, чем можно будет начать
|
||||
установку. Либо сделайте ее владельцем пользователя
|
||||
<username>oracle</username>, либо поставьте права на запись для всех.
|
||||
Если вы все сделали правильно, то установка
|
||||
<application>&oracle;</application> должна пройти без проблем. Если
|
||||
какие-либо трудности все же возникли, проверьте еще раз все
|
||||
конфигурационные файлы и/или целостность дистрибутива
|
||||
<application>&oracle;</application>. После окончания установки
|
||||
<application>&oracle;</application> приложите патчи
|
||||
(смотрите следующие два раздела).</para>
|
||||
|
||||
<para>Одна из часто возникающих проблем — неправильно
|
||||
установленный TCP адаптер. В результате, невозможно запустить TCP
|
||||
|
@ -581,7 +747,8 @@ export PATH</programlisting>
|
|||
<sect3 id="linuxemu-patch-root">
|
||||
<title>Модификация root.sh</title>
|
||||
|
||||
<para>Инсталлируя Oracle, необходимо выполнить некоторые действия
|
||||
<para>При установке <application>&oracle;</application>
|
||||
необходимо выполнить некоторые действия
|
||||
(имея при этом привилегии суперпользователя). Фактически это
|
||||
сводится к выполнению скрипта <filename>root.sh</filename>,
|
||||
который находится в директории <filename>orainst</filename>.
|
||||
|
@ -607,17 +774,21 @@ export PATH</programlisting>
|
|||
#
|
||||
# Define variables to be used in this script</programlisting>
|
||||
|
||||
<para>Если Вы инсталлируете Oracle не с компакт диска, то можно
|
||||
модифицировать файл <filename>rthd.sh</filename>, который
|
||||
находится в директории <filename>orainst</filename>.</para>
|
||||
<para>Если вы устанавливаете <application>&oracle;</application>
|
||||
не с компакт диска, можно модифицировать исходный файл
|
||||
<filename>root.sh</filename>. Он называется
|
||||
<filename>rthd.sh</filename> и находится в каталоге
|
||||
<filename>orainst</filename>.</para>
|
||||
</sect3>
|
||||
|
||||
<sect3 id="linuxemu-patch-tcl">
|
||||
<title>Модификация genclntsh</title>
|
||||
|
||||
<para>Скрипт genclntsh используется для того, чтобы создать единую
|
||||
разделяемую клиентскую библиотеку. Приложите следующий патч,
|
||||
чтобы закомментировать определение переменной PATH:</para>
|
||||
<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
|
||||
|
@ -640,23 +811,32 @@ export PATH</programlisting>
|
|||
</sect2>
|
||||
|
||||
<sect2>
|
||||
<title>Запуск и использование Oracle</title>
|
||||
<title>Запуск &oracle;</title>
|
||||
|
||||
<para>Теперь, если Вы все сделали правильно, то можете использовать
|
||||
Oracle так же, как если бы Вы поставили его на Linux систему.</para>
|
||||
<para>Теперь, если вы все сделали правильно, то можете использовать
|
||||
<application>&oracle;</application> так же, как и в системе
|
||||
Linux.</para>
|
||||
</sect2>
|
||||
</sect1>
|
||||
|
||||
<sect1>
|
||||
<sect1 id="sapr3">
|
||||
|
||||
<title>Installing &sap.r3; *</title>
|
||||
|
||||
<para>Этот раздел не переведен.</para>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="linuxemu-advanced">
|
||||
<title>Дополнительные сведения</title>
|
||||
|
||||
<para>Если Вы интересуетесь, как работает Linux эмуляция, эта секция для
|
||||
Вас. Большинство материала взято из электронного письма, адресованного
|
||||
<para>Если вы интересуетесь, как работает Linux эмуляция, этот раздел для
|
||||
вас. Большинство материала взято из электронного письма, адресованного
|
||||
&a.chat; by Terry Lambert <email>tlambert@primenet.com</email> (ID
|
||||
письма: <literal><199906020108.SAA07001@usr09.primenet.com></literal>).</para>
|
||||
|
||||
<sect2>
|
||||
<title>Как все это устроено?</title>
|
||||
<indexterm><primary>загрузчик исполнимых классов</primary></indexterm>
|
||||
|
||||
<para>FreeBSD поддерживает абстракцию, называемую <quote>загрузчик
|
||||
исполнимых классов</quote>, который фактически является первой
|
||||
|
@ -666,7 +846,7 @@ export PATH</programlisting>
|
|||
одного, который, в случае неудачи, выполняет программу как
|
||||
сценарий (скрипт).</para>
|
||||
|
||||
<para>Исторически сложилось, что единственный загрузчик в UNIX
|
||||
<para>Исторически сложилось, что единственный загрузчик в &unix;
|
||||
системах проверял <quote>магическое число</quote> (чаще всего первые
|
||||
4 или 8 байт файла), чтобы определить, известен ли формат
|
||||
исполняемого файла системе, и если да, то вызвал соответствующий
|
||||
|
@ -686,16 +866,18 @@ export PATH</programlisting>
|
|||
включая специальный <literal>#!</literal> загрузчик, который
|
||||
вызывает нужный интерпретатор или <filename>/bin/sh</filename>, если
|
||||
не нашел подходящего.</para>
|
||||
<indexterm><primary>ELF</primary></indexterm>
|
||||
|
||||
<para>Формат исполняемого файла FreeBSD определяет по
|
||||
<quote>магическому числу</quote>. На этой стадии пока не
|
||||
различается, для какой операционной системы предназначен файл
|
||||
(Linux, Solaris, или любой другой, использующей ELF-формат
|
||||
(Linux, &solaris;, или любой другой, использующей ELF-формат
|
||||
исполняемых файлов).</para>
|
||||
<indexterm><primary>Solaris</primary></indexterm>
|
||||
|
||||
<para>Далее, ELF-загрузчик определяет <quote>марку</quote>
|
||||
(специальный комментарий; отсутствует в исполняемых файлах
|
||||
SVR4/Solaris) исполняемого файла, то есть для какой операционной
|
||||
SVR4/&solaris;) исполняемого файла, то есть для какой операционной
|
||||
системы он предназначен.</para>
|
||||
|
||||
<para>Соответственно, Linux программы должны быть
|
||||
|
@ -704,19 +886,24 @@ export PATH</programlisting>
|
|||
|
||||
<screen>&prompt.root; <userinput>brandelf -t Linux file</userinput></screen>
|
||||
|
||||
<indexterm>
|
||||
<primary>ELF</primary>
|
||||
<secondary>branding</secondary>
|
||||
</indexterm>
|
||||
|
||||
<para>Когда ELF-загрузчик находит <quote>марку</quote>
|
||||
<literal>Linux</literal>, он заменяет соответствующий указатель в
|
||||
структуре <literal>proc</literal>. Все системные вызовы
|
||||
индексируются через этот указатель (в традиционной UNIX системе, это
|
||||
индексируются через этот указатель (в традиционной &unix; системе это
|
||||
массив <literal>sysent[]</literal>, содержащий системные вызовы).
|
||||
Некоторые особые ситуации и системные вызовы обрабатываются
|
||||
специальным модулем ядра поддержки Linux.</para>
|
||||
|
||||
<para>Плюс ко всему, Linux эмулятор динамически <quote>изменяет
|
||||
корень</quote> файловой системы при поиске файлов (фактически делая
|
||||
то же самое, что и опция <literal>union</literal> при монтировании
|
||||
файловых систем (не путать с unionfs!)). Сперва, файл ищется в
|
||||
директории
|
||||
корень</quote> файловой системы при поиске файлов; фактически
|
||||
так же, как и параметр <literal>union</literal> при монтировании
|
||||
файловых систем (не путать с <literal>unionfs</literal>!).
|
||||
Сперва, файл ищется в каталоге
|
||||
<filename>/compat/linux/<replaceable>original-path</replaceable></filename>
|
||||
и только затем, в случае неудачи, в
|
||||
<filename>/<replaceable>original-path</replaceable></filename>. Это
|
||||
|
@ -745,15 +932,29 @@ export PATH</programlisting>
|
|||
могут быть либо в ядре, либо в динамически загружаемом
|
||||
модуле.</para>
|
||||
|
||||
<para>Можно ли назвать это эмуляцией? Нет. Как таковой, эмулятор
|
||||
(или симулятор) отсутствует. В таком случае, почему же тогда
|
||||
<para>Можно ли назвать это эмуляцией? Нет. Это реализация ABI,
|
||||
а не эмуляция. Как таковой, эмулятор (или симулятор)
|
||||
отсутствует.</para>
|
||||
|
||||
<para>В таком случае, почему же тогда
|
||||
говорят <quote>Linux эмуляция</quote>? Чтобы
|
||||
<quote>насолить</quote> FreeBSD?! <!-- smiley -->8-). На самом
|
||||
<quote>насолить</quote> FreeBSD?!. На самом
|
||||
деле, это вопрос терминологии: не существовало слова, которое бы
|
||||
точнее описывало этот процесс. Нельзя сказать, что FreeBSD
|
||||
запускает приложения Linux (без перекомпиляции или загрузки
|
||||
соответствующего модуля ядра). Тогда и придумали термин
|
||||
соответствующего модуля ядра). Поэтому и придумали термин
|
||||
<quote>Linux эмуляция</quote>.</para>
|
||||
</sect2>
|
||||
</sect1>
|
||||
</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:
|
||||
-->
|
||||
|
|
Loading…
Reference in a new issue