LINUX.ORG.RU

binfmt не запускается в Gentoo

 , , , ,


0

1

Хочу в Gentoo собирать пакеты для Raspberry Pi. Для этого на VDS установил QEMU по этому руководству. Пытаюсь запустить binfmt - не запускается. Вот лог:

# systemctl status systemd-binfmt
● systemd-binfmt.service - Set Up Additional Binary Formats
   Loaded: loaded (/usr/lib/systemd/system/systemd-binfmt.service; static; vendor preset: disabled)
   Active: inactive (dead)
Condition: start condition failed at Mon 2016-12-26 10:45:43 MSK; 3s ago
           ├─ ConditionDirectoryNotEmpty=|/lib/binfmt.d was not met
           ├─ ConditionDirectoryNotEmpty=|/usr/lib/binfmt.d was not met
           ├─ ConditionDirectoryNotEmpty=|/usr/local/lib/binfmt.d was not met
           ├─ ConditionDirectoryNotEmpty=|/etc/binfmt.d was not met
           └─ ConditionDirectoryNotEmpty=|/run/binfmt.d was not met
     Docs: man:systemd-binfmt.service(8)
           man:binfmt.d(5)
           https://www.kernel.org/doc/Documentation/binfmt_misc.txt
Вот конфиг ядра: http://pastebin.com/d4TMGHC4
QEMU собран с такими USE-флагами:
app-emulation/qemu qemu_user_targets_arm qemu_softmmu_targets_arm static-user static-libs
Почему не работает binfmt? Может ли это быть из-за того, что виртуальный процессор на моей VDS не поддерживает KVM?

★★★★★

Видимо в директориях должны быть конфиги для binfmt, которых у тебя нет.

Deleted
()
Ответ на: комментарий от slon

что виртуальный процессор на моей VDS не поддерживает KVM?

запросто.

Нет. Для полной эмуляции KVM не нужен. И бесполезен, в общем то.

Deleted
()
Ответ на: комментарий от anonymous

У меня каталоги /etc/binfmt.d и /usr/lib/binfmt.d пустые, а /run/binfmt.d вообще отсутствует. И в логах systemd, и на сайте, который ты мне дал, ссылаются на файл binfmt_misc.txt, но эта ссылка дохлая, ошибка 404.

Rinaldus ★★★★★
() автор топика
Последнее исправление: Rinaldus (всего исправлений: 1)

Так ведь написано:

start condition failed at Mon 2016-12-26 10:45:43 MSK; 3s ago
           ├─ ConditionDirectoryNotEmpty=|/lib/binfmt.d was not met
           ├─ ConditionDirectoryNotEmpty=|/usr/lib/binfmt.d was not met
           ├─ ConditionDirectoryNotEmpty=|/usr/local/lib/binfmt.d was not met
           ├─ ConditionDirectoryNotEmpty=|/etc/binfmt.d was not met
           └─ ConditionDirectoryNotEmpty=|/run/binfmt.d was not met

У тебя нет ни одной настроенной конфигурации для запуска юнита.

surefire ★★★
()
Ответ на: комментарий от surefire

Как мне его настроить? Есть ли какой-то мануал? Гугл ничего не находит,а единственная ссылка на сайте kernel.org дохлая.
Даже в /usr/share/doc ничего по этому поводу нет.

Rinaldus ★★★★★
() автор топика
Последнее исправление: Rinaldus (всего исправлений: 2)

Тоже хочу. Поднял bootstrap Debian 4.0, пытаюсь зайти в chroot - не заходит. armv7hf не совместим с бинарниками для старого arm.

В связи с этим вопрос. Как этот мой bootstrap пересобрать с другим -march с помощью команды «apt-get world»? С помощью QEMU? Какой процессор эмулировать в начале, какой потом?

ZenitharChampion ★★★★★
()
Ответ на: комментарий от surefire

Кажется, нашел, в чем причина. Для ARM процессора нужно выполнить следующую команду:

echo ':arm:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\x00\xff\xfe\xff\xff\xff:/usr/bin/qemu-arm:'"${QEMU_BINFMT_FLAGS}" > /proc/sys/fs/binfmt_misc/register
И после этого получилось сделать chroot.

Rinaldus ★★★★★
() автор топика
Ответ на: комментарий от Rinaldus

Греховно!
А бинфмт в ядре же поддержку иметь должен?

coyotl
()
Ответ на: комментарий от Rinaldus

Всё так, под openrc я в своё время делал это в local.d(года 3 назад, тогда отдельного скрипта под это дело еще не было). Погугли в каком формате нужно systemd скармливать конфиг(предчувствую декларативность), не думаю что там сильно сложно накрутили

Update: тред не читай - сразу отвечай! Вон пример выше для PE-бинарников дали, по аналогии сделай и с arm

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.