ядро ​​не может выполнять двоичные файлы (ошибка -8)

Чтобы заменить любой //на /, вам потребуется очистить watchlist. Рассмотрим каталог с именем \nabc(, где \n— новая строка ):

.
$ mkdir t
$ mkdir t/$'\nabc'
$ touch t/$'\nabc'/x

При передаче каталога t//$'\nabc'вы увидите вывод с поддельным //в конце строк:

$ inotifywait -m -r t//$'\nabc' --format "%e %w%f//" 
Setting up watches.  Beware: since -r was given, this may take a while!
Watches established.
OPEN t//
abc/x//
ATTRIB t//
abc/x//
CLOSE_WRITE,CLOSE t//
abc/x//

Обратите внимание: вы также можете использовать -cвместо --formatдля получения вывода в стиле csv , в котором имена файлов в двойных -кавычках с переводом строки, но это сложнее анализировать, и в моем случае дампы ядра на приведенном выше примере.

Пример вывода для -cиtouch t/$'new\nfile':

t/,CREATE,"new
file"
2
22.09.2020, 16:13
1 ответ

проблема в том, что вы компилируете его в обычный статический эльфийский формат. вы должны скомпилировать его как исполняемый файл FDPIC -ELF (, потому что вам нужен независимый от позиции исполняемый файл (FDPIC )из-за отсутствия MMU ).

FDPIC ELF не является типом ET _EXEC. это ET _DYN (, это означает, что это общий тип )и он загружается динамическим загрузчиком Linux.

просто добавьте к нему флаг -mfdpicи отключите встроенный статический двоичный файл в меню kconfig BusyBox.

обратите внимание, что флаг -mfdpic включен по умолчанию в наборах инструментов arm -uclinux -fdpicabi.

1
18.03.2021, 23:04

Теги

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