Bug 34638

Summary: Exec format error при сборке с aarch64
Product: Sisyphus Reporter: Pavel Isopenko <master>
Component: livecd-qemu-archAssignee: Michael Shigorin <mike>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: enhancement    
Priority: P3 CC: glebfm, legion, mike, shaba, torabora, zorg1331
Version: unstable   
Hardware: all   
OS: Linux   
URL: https://lioka.obninsk.ru/rpi3/rpi3-mate.tar
Attachments:
Description Flags
Конфиг для /lib/binfmt.d устраняющий проблему none

Description Pavel Isopenko 2018-03-13 21:12:24 MSK
Ошибкой завершается любая попытка собрать chroot c aarch64. Для повторения проблемы можно использовать свежий alt-p8-builder-20180312-x86_64.iso и, к примеру, профиль rpi3-mate, любезно предоставленный sbolshakov@ (ссылка). apt.conf и sources.list следует поправить под свои пути
$ make
...
mkimage: Processing 'prepare-workdir' ...
hasher-priv: slave: chrootuid: execve: /bin/touch: Exec format error

# GLOBAL_VERBOSE = 1
hsh-initroot: Unpacked initial package list.
hasher-priv: slave: chrootuid: execve: /bin/touch: Exec format error
hsh-initroot: Failed to create fakedata.

Видно что рабочий chroot собирается, и собирается из пакетов целевой архитектуры - а потом облом (не отрабатывает qemu?). Целью эксперимента были пробный образ ALT на Raspberry Pi 3, а затем предложение профиля для mkimage-profiles.
Comment 1 Michael Shigorin 2018-03-14 15:15:37 MSK
А binfmt точно настроен?  См. тж. пакет livecd-qemu-arch и m-p::doc/qemu.txt
Comment 2 Pavel Isopenko 2018-03-18 21:49:49 MSK
Created attachment 7434 [details]
Конфиг для /lib/binfmt.d устраняющий проблему

Это настройка binfmt. Главу 15 документа http://nightly.altlinux.org/docs/mkimage-profiles.pdf пропустил из-за явного указания на arm, а у меня aarch64. Наверное, стоит уточнить или дополнить.
Признаю что проблема не в mkimage, а в его окружении.
Comment 3 Pavel Isopenko 2018-03-18 21:56:09 MSK
Перевешиваю на mkimage-preinstall и понижаю важность до enhancement. Во вложении конфиг, устраняющий описанную проблему. Возможно стоит дополнить mkimage-preinstall для сборки под неродные архитектуры, а может и нет. Или просто задокументируем и довольно.
Comment 4 Michael Shigorin 2018-03-21 11:53:45 MSK
Не уверен, что mkimage-preinstall тут при чём -- сейчас этим занимается пакет livecd-qemu-arch, вот только он заодно и sources.list трогает; можно разделить его, сейчас для aarch64 там так:

:qemu-aarch64:M::\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7:\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/.host/qemu-aarch64:

Предлагается же

:aarch64:M::\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-aarch64.static:F

Я не настолько хорошо помню взаимодействие mkimage/hasher с qemu, чтобы сходу сообразить, что именно нам стоит предпринять.
Comment 5 Michael Shigorin 2018-03-21 11:56:18 MSK
Пока хотя бы сослался на эту багу в m-p::doc/qemu.txt.
Comment 6 Pavel Nakonechnyi 2018-07-05 11:25:07 MSK
(In reply to comment #4)
> Не уверен, что mkimage-preinstall тут при чём -- сейчас этим занимается пакет
> livecd-qemu-arch, вот только он заодно и sources.list трогает; можно разделить
> его, сейчас для aarch64 там так:
> 
> :qemu-aarch64:M::\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7:\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/.host/qemu-aarch64:
> 
> Предлагается же
> 
> :aarch64:M::\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-aarch64.static:F
> 
> Я не настолько хорошо помню взаимодействие mkimage/hasher с qemu, чтобы сходу
> сообразить, что именно нам стоит предпринять.

Добавлю свои пять копеек. Подтверждаю что ситуацию исправляет приведение маски в /usr/bin/register-qemu-aarch64 к следующему виду:

echo ":aarch64:M::\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff:/.host/qemu-aarch64:" > /proc/sys/fs/binfmt_misc/register
Comment 7 Michael Shigorin 2018-07-05 12:39:13 MSK
Спасибо, отправил 0.3-alt1, просьба проверить:
http://webery.altlinux.org/task/209521
Comment 8 Repository Robot 2018-07-05 12:44:00 MSK
livecd-qemu-arch-0.3-alt1 -> sisyphus:

Thu Jul 05 2018 Michael Shigorin <mike@altlinux> 0.3-alt1
- fixed aarch64 support (closes: #34638); thx zorg@ for the patch
- replaced arm with armh (thx aen@ for updated repo url)
- added wiki links
Comment 9 Pavel Nakonechnyi 2018-07-05 14:03:07 MSK
(In reply to comment #7)
> Спасибо, отправил 0.3-alt1, просьба проверить:
> http://webery.altlinux.org/task/209521

Спасибо, проверил, работает.
Comment 10 Michael Shigorin 2018-07-05 14:12:32 MSK
Вот и славно.  Вообще могли сразу заливать NMU, если есть патч -- я не против
(см. ACL пакета).