arch-test - справочное руководство, опции, примеры команд


ИМЯ

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 проверяет указанную архитектуру. Будет напечатано удобное для человека сообщение, а код выхода может быть таким:

0

поздравляю, арку можно запустить на вашем ядре

1

отказ

2

не могу проверить — arch-test не имеет помощника для этой арки

Подсказка оболочки: с

set -e

ты пишешь:

ret=0; arch-test $ARCH || ret=$?

Вспомогательные программы

Обнаружение выполняется небольшими программами, расположенными в /usr/lib/arch-test/. Эти программы проверяют, может ли работающее ядро выполнять двоичные файлы данной архитектуры. При успешном запуске каждая такая программа выводит "ok" на стандартный вывод и возвращает код выхода 0.

Когда проверка не удалась, эти вспомогательные программы могут ужасно умереть — всегда с ненулевым кодом выхода. Обычно ядро замечает несовместимость и корректно прерывает попытку, но в некоторых случаях, близких к промаху, сбой более запутанный, например, SIGILL или SIGSEGV. Если вы хотите запускать помощников напрямую, вам нужно перенаправить stderr на /dev/null и отключить дампы ядра (ulimit -c 0).

ПРИМЕР

arch-test [-n]

перечисляет архитектуры

arch-test [-n] [-c <chroot>] <arch>

тестирует одну арку