Это binfmt_misc в действии: он позволяет сообщить ядру, как запускать двоичные файлы, о которых оно не знает. Посмотрите на содержимое /proc/sys/fs/binfmt_misc
; среди файлов, которые вы там увидите, один должен объяснять, как запускать двоичные файлы Mono:
enabled
interpreter /usr/lib/binfmt-support/run-detectors
flags:
offset 0
magic 4d5a
(в системе Debian). Это говорит ядру, что двоичные файлы, начинающиеся с MZ
(4d5a
) должны быть переданы run-detectors
. Последний определяет, использовать ли Mono или Wine для запуска двоичного файла.
Бинарные типы могут быть добавлены, удалены, включены и отключены в любое время; подробности см. в документации выше (семантика удивительна, используемая здесь виртуальная файловая система ведет себя не совсем как стандартная файловая система). /proc/sys/fs/binfmt_misc/status
дает глобальный статус, а каждый двоичный "дескриптор" показывает свой индивидуальный статус. Другим способом отключения binfmt_misc
является выгрузка его модуля ядра, если он собран как модуль; это также означает, что можно внести его в черный список, чтобы полностью избежать его использования.
Эта функция позволяет поддерживать новые двоичные типы, такие как исполняемые файлы MZ (которые включают двоичные файлы Windows PE и PE+, а также двоичные файлы DOS и OS/2!), Java JAR файлы... Это также позволяет поддерживать известные типы двоичных файлов на новых архитектурах, обычно используя Qemu; таким образом, с соответствующими библиотеками, вы можете прозрачно запускать двоичные файлы ARM Linux на процессоре Intel!
Ваш вопрос связан с перекрестной компиляцией, хотя и в смысле .NET, и это заставляет задуматься о binfmt_misc
: некоторые конфигурационные скрипты ведут себя неправильно, когда вы пытаетесь выполнить перекрестную компиляцию на системе, которая может запускать перекрестно скомпилированные двоичные файлы. Обычно обнаружение кросс-компиляции включает сборку двоичного файла и попытку его запуска; если он запускается, то кросс-компиляции нет, если нет, то она есть (или ваш компилятор сломан). autoconf
скрипты обычно могут быть исправлены в этом случае явным указанием архитектуры сборки и хоста, но иногда вам придется временно отключить binfmt_misc
...
Глядя на исходный код для lsblk
, для столбца STATE,определены только состояния running
илиsuspended
Вы можете указать параметры вывода -o
для lsblk, в этом случае STATE
— это то, что вам нужно.
sudo lsblk -a -o NAME,MAJ:MIN,PARTTYPE,STATE
NAME MAJ:MIN PARTTYPE STATE
sda 8:0 running
├─sda1 8:1 21686148-6449-6e6f-744e-656564454649
├─sda2 8:2 0fc63daf-8483-4772-8e79-3d69d8477de4
├─sda3 8:3 0fc63daf-8483-4772-8e79-3d69d8477de4
└─sda4 8:4 0fc63daf-8483-4772-8e79-3d69d8477de4
lsblk --help
предоставит вам больше возможностей для включения, если это необходимо.