Ports/arm/BuildHowto

Материал из ALT Linux Wiki

< Ports | arm(Различия между версиями)
Перейти к: навигация, поиск
м (Configuring binfmt_misc: echo ... | sudo tee -a /proc/sys/fs/binfmt_misc/register всё же извратновато)
м (+ссылки)
 
(3 промежуточные версии не показаны)
Строка 5: Строка 5:
Для сборки под ARM с использованием QEmu требуется:
Для сборки под ARM с использованием QEmu требуется:
-
* qemu-arm.static из пакета qemu-user-binfmt_misc (на данный момент версия 0.12.1 работает)
+
* qemu-arm.static из пакета qemu-user-binfmt_misc (на данный момент версия 1.2.0 работает)
* настроенный hasher >= 1.2.6-alt1
* настроенный hasher >= 1.2.6-alt1
* rpm >= 4.0.4-alt80
* rpm >= 4.0.4-alt80
Строка 44: Строка 44:
Можно записать прямо в /etc/apt/sources.list, но лучше положить в сторонке, и
Можно записать прямо в /etc/apt/sources.list, но лучше положить в сторонке, и
-
написать отдельный apt.conf, который подсовывать hasher'у.
+
написать отдельный apt.conf, взяв за основу пример /usr/share/doc/hasher-*/apt.conf,
 +
и уже этот специально подготовленный apt.conf передавать hasher'у.
Если у вас есть локальное зеркало, то стоит использовать file://путь-к-зеркалу, чтобы сократить время и траффик.
Если у вас есть локальное зеркало, то стоит использовать file://путь-к-зеркалу, чтобы сократить время и траффик.
Строка 53: Строка 54:
Теперь всё готово. Можно использовать hasher:
Теперь всё готово. Можно использовать hasher:
-
  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 --initroot-only
Если hasher ругается:
Если hasher ругается:
Строка 62: Строка 63:
тогда необходимо:
тогда необходимо:
  # echo 32768 > /proc/sys/vm/mmap_min_addr
  # 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
 
Не забудьте прописать в apt-arm.conf строчки - Dir::Etc::SourceParts "/var/empty"; и Dir::Etc::main "/dev/null";
Не забудьте прописать в apt-arm.conf строчки - Dir::Etc::SourceParts "/var/empty"; и Dir::Etc::main "/dev/null";
 +
 +
== Ссылки ==
 +
* http://lists.altlinux.org/pipermail/devel-ports/2008-January/000352.html

Текущая версия на 13:04, 5 февраля 2016


Содержание

Prerequires

Для сборки под ARM с использованием QEmu требуется:

  • qemu-arm.static из пакета qemu-user-binfmt_misc (на данный момент версия 1.2.0 работает)
  • настроенный 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):
# 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, взяв за основу пример /usr/share/doc/hasher-*/apt.conf, и уже этот специально подготовленный apt.conf передавать hasher'у. Если у вас есть локальное зеркало, то стоит использовать file://путь-к-зеркалу, чтобы сократить время и траффик.

P.S. noarch прописывать не требуется т.к в ARM Port все находится в одной компоненте

Hasher

Теперь всё готово. Можно использовать hasher:

hsh --with-qemu=arm --target=arm --apt-config=/path/to/apt-arm.conf --initroot-only

Если 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

Не забудьте прописать в apt-arm.conf строчки - Dir::Etc::SourceParts "/var/empty"; и Dir::Etc::main "/dev/null";

Ссылки

 
Личные инструменты