2023-09-20 21:59:06 +03:00
|
|
|
|
<?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>
|
2023-10-04 20:40:33 +03:00
|
|
|
|
<listitem><para>вам необходима поддержка 32-битных версий библиотек</para></listitem>
|
2023-09-20 21:59:06 +03:00
|
|
|
|
</itemizedlist>
|
|
|
|
|
</para>
|
|
|
|
|
|
|
|
|
|
<para>Если выполнены все три условия, продолжайте собирать LFS в режиме multilib.</para>
|
|
|
|
|
|
|
|
|
|
</sect2>
|
|
|
|
|
|
|
|
|
|
</sect1>
|