Ports/arm/BuildHowto: различия между версиями
Snejok (обсуждение | вклад) |
Stanv (обсуждение | вклад) Нет описания правки |
||
Строка 52: | Строка 52: | ||
hsh --with-qemu=arm --target=arm --apt-config=/path/to/apt-arm.conf foo.src.rpm | hsh --with-qemu=arm --target=arm --apt-config=/path/to/apt-arm.conf foo.src.rpm | ||
Если hasher ругается: | |||
hsh-initroot: Created entry point: /home/stanv/hasher/chroot/.host/entry | |||
mmap: Operation not permitted | |||
hsh-initroot: Failed to create RPM database. | |||
тогда необходимо: | |||
# echo 32768 > /proc/sys/vm/mmap_min_addr | |||
Протестить можно: | |||
# hsh -v --initroot --target=arm --with-qemu=arm --apt-config=/home/stanv/apt/apt.conf.sisyphus.arm |
Версия от 11:18, 11 октября 2010
Prerequires
Для сборки под ARM с использованием QEmu требуется:
- qemu-arm.static из пакета qemu-user-binfmt_misc (на данный момент версия 0.12.1 работает)
- настроенный hasher >= 1.2.6-alt1
- rpm >= 4.0.4-alt80
- репозиторий под ARM.
- ядро с поддержкой binfmt_misc(во всех ядрах в Сизифе есть модуль)
Configuring binfmt_misc
Настраиваем binfmt_misc:
- монтируем файловую систему binfmt_misc(если ещё не примонтирована)
# mount -t binfmt_misc none /proc/sys/fs/binfmt_misc
- регистрируем qemu-arm, как интерпретатор ARM'овских ELF'ов (команда от root или через sudo):
# 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\xff\xff\xfe\xff\xff\xff:/.host/qemu-arm:" > /proc/sys/fs/binfmt_misc/register
- Выглядит /proc/sys/fs/binfmt_misc/arm после этого так:
enabled interpreter /.host/qemu-arm flags: offset 0 magic 7f454c4601010100000000000000000002002800 mask ffffffffffffff00fffffffffffffffffeffffff
Теперь при попытке выполнить ELF для ARM, ядро будет запускать /.host/qemu-arm.
Именно по этому пути будет лежать статически собранный qemu-arm внутри чрута,
который создаст hasher.
APT sources.list
Пишем sources.list. Что-то типа:
rpm file://ALT/Sisyphus/ arm classic
Можно записать прямо в /etc/apt/sources.list, но лучше положить в сторонке, и написать отдельный apt.conf, который подсовывать hasher'у. Если у вас есть локальное зеркало, то стоит использовать file://путь-к-зеркалу, чтобы сократить время и траффик.
Hasher
Теперь всё готово. Можно использовать hasher:
hsh --with-qemu=arm --target=arm --apt-config=/path/to/apt-arm.conf foo.src.rpm
Если hasher ругается:
hsh-initroot: Created entry point: /home/stanv/hasher/chroot/.host/entry mmap: Operation not permitted hsh-initroot: Failed to create RPM database.
тогда необходимо:
# echo 32768 > /proc/sys/vm/mmap_min_addr
Протестить можно:
# hsh -v --initroot --target=arm --with-qemu=arm --apt-config=/home/stanv/apt/apt.conf.sisyphus.arm