mirror of
https://github.com/Poltern/lfs-ru.git
synced 2024-10-19 12:10:32 +03:00
111 lines
8.3 KiB
XML
111 lines
8.3 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
||
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
||
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
|
||
<!ENTITY % general-entities SYSTEM "../general.ent">
|
||
%general-entities;
|
||
]>
|
||
|
||
<sect1 arch="ml_32,ml_x32,ml_all" id="pre-multilib">
|
||
<?dbhtml filename="multilib.html"?>
|
||
|
||
<title>О выпуске Multilib</title>
|
||
|
||
<sect2><title>Что такое Multilib</title>
|
||
|
||
<para>Сегодня большинство систем в мире имеют размер слова 64 бита. Размер
|
||
слова - это количество бит, которое может быть использовано одновременно наиболее
|
||
эффективным способом. Предыдущие архитектуры процессоров x86 имели размер слова 32
|
||
бита, это означает, что у них другое понимание того, как лучше выравнивать данные
|
||
в памяти, а также у них свой механизм обращения к памяти другого размера. Хотя
|
||
набор команд 64-разрядных процессоров довольно схож с инструкциями 32-разрядных
|
||
процессоров, двоичные файлы (объекты, скомпилированные в машинный код) не могут быть
|
||
непосредственно выполнены в 64-разрядных системах.</para>
|
||
|
||
<para>Multilib - это механизм, обеспечивающий поддержку 32-разрядных двоичных файлов,
|
||
чтобы они могли выполняться на современных 64-разрядных процессорах.</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2><title>Зачем делать Multilib-систему?</title>
|
||
|
||
<para>С образовательной точки зрения LFS в своей классической форме, вероятно, является
|
||
лучшим способом увидеть, как система Linux собирается из исходного кода. Нет необходимости
|
||
смешивать различные архитектуры. Но когда необходимо запустить 32-битные двоичные файлы и вы
|
||
не хотите собирать полностью 32-битную систему (что в наши дни было бы пустой тратой ресурсов),
|
||
тогда LFS-multilib — это вариант. Примерами такой необходимости могут быть
|
||
<itemizedlist>
|
||
<listitem><para>Программное обеспечение с закрытым исходным кодом/без исходного кода
|
||
доступное только для 32-разрядной версии. Это может относиться к драйверу принтера или любым
|
||
другим драйвером оборудования, двоичные файлы которого предоставляет компания-разработчик.
|
||
Если у вас есть такой драйвер, LFS-multilib может помочь вам запустить его</para>
|
||
</listitem>
|
||
<listitem><para>Если вы хотите выйти далеко за рамки LFS и настроить платформу виртуализации,
|
||
такую как <application>VirtualBox</application>, вам понадобится поддержка multilib</para>
|
||
</listitem>
|
||
<listitem><para>или даже просто потому, что вы можете</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
|
||
</para>
|
||
|
||
<para>Multilib версия LFS дополняет то, что было сказано в предыдущем разделе, когда речь шла о
|
||
целевых архитектурах. С одной стороны, multilib версия ориентирована и <emphasis>ограничена</emphasis>
|
||
только архитектурой x86_64, с другой стороны, она <emphasis>расширяет</emphasis> инструкции для
|
||
использования обеих возможных архитектур, а именно 32-разрядной как и 64-разрядной.</para>
|
||
|
||
<para>Сборка multilib-системы также немного выходит за рамки базового образовательного подхода
|
||
LFS, который заключается в том, чтобы показать вам, как собрать систему Linux с нуля. Для этого
|
||
не требуется поддержка дополнительных архитектур, отличных от архитектуры вашей системы по
|
||
умолчанию. Если ранее вы не собирали систему по классической книге LFS, вам рекомендуется сделать
|
||
это перед использованием этого издания.</para>
|
||
|
||
</sect2>
|
||
|
||
<sect2><title>Сборка Multilib системы</title>
|
||
|
||
<para>Сборка multilib системы не сильно отличается от сборки системы с использованием классической
|
||
книги LFS. Помимо некоторых настроек, наиболее заметным отличием является то, что multilib требует
|
||
компиляции некоторых приложений до трех раз: один раз для основной 64-разрядной архитектуры, второй -
|
||
для 32-разрядной архитектуры (m32) и еще раз для 32-разрядной архитектуры с 32-битным доступом к
|
||
памяти и 64-битным набором команд (mx32).</para>
|
||
|
||
<para>Продолжайте только в том случае, если ваша система удовлетворяете следующим требованиям:
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>у вас компьютер, совместимый с x86_64</para>
|
||
<note><para>
|
||
Если у вас есть доступ к конфигурации ядра вашей системы, вам потребуется установить
|
||
параметры:
|
||
<parameter>CONFIG_IA32_EMULATION=y</parameter>,
|
||
чтобы выполнить сборку для <parameter>m32</parameter> и
|
||
<parameter>CONFIG_X86_X32=y</parameter>, чтобы собрать пакет для <parameter>mx32</parameter>.
|
||
</para>
|
||
<para>
|
||
Если у вас нет доступа к конфигурации ядра вашей системы, вы можете проверить совместимость,
|
||
выполнив следующие команды:
|
||
</para>
|
||
<screen><userinput>echo 'int main(){}' > dummy.c
|
||
gcc -m32 dummy.c
|
||
./a.out
|
||
|
||
gcc -mx32 dummy.c
|
||
./a.out</userinput></screen>
|
||
<para>
|
||
Если какая-либо из команд <command>./a.out</command> возвращает сообщения "Exec
|
||
format error", то ваше ядро собрано без поддержки нужных параметров для этой
|
||
архитектуры в рамках LFS, поэтому вам, вероятно, следует собрать систему LFS без
|
||
Multilib, но с необходимыми возможностями ядра и использовать ее для сборки системы
|
||
Multilib.
|
||
</para></note>
|
||
</listitem>
|
||
<listitem><para>у вас уже есть некоторый опыт работы с LFS</para></listitem>
|
||
<listitem><para>вам необходима поддержка 32-битных версий библиотек</para></listitem>
|
||
</itemizedlist>
|
||
</para>
|
||
|
||
<para>Если выполнены все три условия, продолжайте собирать LFS в режиме multilib.</para>
|
||
|
||
</sect2>
|
||
|
||
</sect1>
|