Почему мой статически скомпилированный двоичный файл BusyBox для ARM может работать на моем ПК x86 _64?

К сожалению, в соответствии с документацией VirtualBox функция транзита PCI применима только при использовании Linux в качестве основной ОС. Вам также потребуется установить дополнительный пакет расширений VirtualBox.

1
07.05.2021, 18:39
1 ответ

Если вы заглянете внутрь /proc/sys/fs/binfmt_misc, вы, вероятно, увидите файл с именем qemu-armили что-то подобное, с содержимым, похожим на строки

enabled
interpreter /usr/bin/qemu-arm-static
flags: OCF
offset 0
magic 7f454c4601010100000000000000000002002800
mask ffffffffffffff00fffffffffffffffffeffffff

Это указывает ядру «интерпретировать» двоичные файлы , соответствующие заданному магическому значению, используя /usr/bin/qemu-arm-static. Это позволяет ему использовать QEMU для эмуляции ЦП ARM (и исправлять системные вызовы для соответствия ARM ABI )и прозрачно запускать двоичные файлы ARM в любой системе, где QEMU может эмулировать ЦП ARM, включая ваш 64-битный -x86 ПК..

В вашем случае, поскольку двоичный файл ARM статически связан, дополнительная настройка не требуется. Для динамически -связанных бинарных файлов также должны быть доступны собственные библиотеки.

В системах на базе Debian -,включая системы на основе Ubuntu -, это устанавливается пакетами qemu-user-staticи binfmt-support:пакет qemu-user-staticрегистрирует конфигурации binfmt_misc, которые QEMU может обрабатывать с помощью update-binfmts, и binfmt-supportpackage обеспечивает загрузку зарегистрированных конфигураций в ядро ​​(binfmt_misc — это модуль ядра ).

См. также Какие типы исполняемых файлов существуют в Linux? , Какие форматы исполняемых файлов допускают файлы в каталоге /proc/sys/fs/binfmt _misc/? и В чем магия Моно?

5
28.07.2021, 11:34

Теги

Похожие вопросы