arch-test - определить архитектуры, на которых ваше ядро может запускать бинарные файлы
arch-test [-n] arch-test [-n] [-c <chroot>] <arch>
При вызове без аргумента arch-test выводит список архитектур, исполняемых вашим работающим ядром, по одной в строке, используя имена архитектур Debian. Libc или другие библиотеки не нужны и не проверяются — архитектура указывается в списке, если ее машинный код может быть выполнен и соответствующий системный вызов ABI поддерживается ядром. Это означает, что вы можете запускать эти архитектуры в chroot или контейнере, запускать их с помощью мультиархива, запускать статические двоичные файлы и т. д. Возможность запуска дополнительных архитектур можно получить с помощью binfmt . s в Linux, эмуляция Linux в BSD и т. д.
Архитектура считается работоспособной только в том случае, если ваше ядро может запускать немодифицированные двоичные файлы без дополнительных шагов, таких как перекомпиляция (Raspbian armhf) или использование brandelf для двоичных файлов, которые вы хотите запустить ( Эмуляция FreeBSD Linux). Кроме того, поскольку Debian требует 686 на i386 на момент расширенного выпуска, проверяется поддержка 686.
Если указано -n, arch-test попытается отключить известные эмуляторы (в настоящее время qemu и wine). Обратите внимание, что эмулятор всей машины кажется родным с точки зрения ядра.
С -c <chroot> тест выполняется внутри заданного chroot (qemu-user до версии 2.12 требовал, чтобы интерпретатор жил внутри chroot ). Здесь требуются root-права.
При вызове с именем архитектуры в качестве аргумента arch-test проверяет указанную архитектуру. Будет напечатано удобное для человека сообщение, а код выхода может быть таким:
поздравляю, арку можно запустить на вашем ядре
отказ
не могу проверить — arch-test не имеет помощника для этой арки
Подсказка оболочки: с
set -e
ты пишешь:
ret=0; arch-test $ARCH || ret=$?
Обнаружение выполняется небольшими программами, расположенными в /usr/lib/arch-test/. Эти программы проверяют, может ли работающее ядро выполнять двоичные файлы данной архитектуры. При успешном запуске каждая такая программа выводит "ok" на стандартный вывод и возвращает код выхода 0.
Когда проверка не удалась, эти вспомогательные программы могут ужасно умереть — всегда с ненулевым кодом выхода. Обычно ядро замечает несовместимость и корректно прерывает попытку, но в некоторых случаях, близких к промаху, сбой более запутанный, например, SIGILL или SIGSEGV. Если вы хотите запускать помощников напрямую, вам нужно перенаправить stderr на /dev/null и отключить дампы ядра (ulimit -c 0).
перечисляет архитектуры
тестирует одну арку