arch-test - détecter les architectures que votre noyau peut exécuter des binaires de
arch-test [-n] arch-test [-n] [-c <chroot>] <arch>
Lorsqu'il est appelé sans argument, arch-test affiche la liste des architectures exécutables par votre noyau en cours d'exécution, une par ligne, en utilisant les noms d'architecture Debian. Libc ou d'autres bibliothèques ne sont ni nécessaires ni vérifiées - une architecture est répertoriée si son code machine peut être exécuté et si l'ABI d'appel système approprié est pris en charge par le noyau. Cela signifie que vous pouvez exécuter ces architectures dans un chroot ou un conteneur, les exécuter en utilisant multiarch, exécuter des binaires statiques, etc. La possibilité d'exécuter des architectures supplémentaires peut être obtenue via binfmt s sous Linux, émulation Linux sous BSD, etc.
Une architecture est considérée comme exécutable uniquement si votre noyau peut exécuter des binaires non modifiés, sans étapes supplémentaires telles que la recompilation (Raspbian armhf) ou l'utilisation de brandelf sur les binaires que vous souhaitez exécuter ( émulation FreeBSD de Linux). De plus, comme Debian requiert 686 sur i386 à partir de la version étendue, la prise en charge de 686 est vérifiée.
Si -n est spécifié, arch-test essaiera de désactiver les émulateurs connus (actuellement qemu et wine). Notez qu'un émulateur de machine entière semble être natif en ce qui concerne le noyau.
Avec -c <chroot>, le test est effectué à l'intérieur d'un chroot donné (qemu-user avant 2.12 exigeait que l'interpréteur vive à l'intérieur du chroot ). Les privilèges root sont requis ici.
Lorsqu'il est appelé avec un nom d'arche comme argument, arch-test teste l'architecture spécifiée. Un message convivial sera imprimé et le code de sortie peut être :
félicitations, l'arche peut être exécutée sur votre noyau
échec
ne peut pas vérifier — arch-test n'a pas d'assistant pour cette arche
Indice de shell : avec
set -e
vous écrivez:
ret=0; arch-test $ARCH || ret=$?
La détection est effectuée par de petits programmes situés dans /usr/lib/arch-test/. Ces programmes vérifient si le noyau en cours d'exécution peut exécuter des binaires d'une architecture donnée. Lorsqu'il est exécuté, en cas de succès, chacun de ces programmes affiche "ok" sur stdout et renvoie le code de sortie 0.
Lorsque la vérification échoue, ces programmes d'assistance peuvent mourir horriblement - toujours avec un code de sortie différent de zéro. Habituellement, le noyau remarquera l'incompatibilité et annulera gentiment la tentative, mais dans certains cas de quasi-accident, l'échec est plus désordonné, comme SIGILL ou SIGSEGV. Si vous souhaitez exécuter les assistants directement, vous devez rediriger stderr vers /dev/null et désactiver les vidages de mémoire (ulimit -c 0).
énumère les architectures
teste une seule arche