poudriere will keine armv6 Pakete bauen

crotchmaster

happy BSD user
Moin Kollegen,

ich benötige mal wieder Eure Hilfe.

Ich habe einen Server, auf dem u.a. ein Jail mit poudriere läuft. Die Jails wurde mit ezjail erstellt und als Filesystem nutze ich ZFS.
Poudriere baut zur Zeit Pakete für FreeBSD 10.3 AMD64 und i386.
Meine Raspis habe ich nun ebenfalls auf FreeBSD 10.3 umgestellt und möchte jetzt poudriere zum Schnüren von Pakete dafür einspannen.
Leider klappt das nicht so wie ich das will.

Ich benutze den Weg über QEMU und bin im Prinzip diesem HowTo gefolgt. https://www.dvatp.com/tech/armv6_freebsd_poudriere

Allerdings bin ich etwas abgewichen, da das HowTo nicht mehr ganz aktuell ist und ich mit poudriere im Jail ein etwas anderes Setup habe.

Und zwar habe ich das Kernel-Modul imgact_binmisc.ko im Host-System geladen und den port/qemu-user-static sowohl im Host-System als auch im poudriere-Jail installiert.
qemu-user-static bringt ein Startscript mit, welches den magic String für arm Binaries registriert und an /usr/local/bin/qemu-arm-static bindet.
Im Jail klappte es nicht und ich habe es nicht hinbekommen, die Rechte entsprechend zusetzen und so habe ich diese beiden Schritte im Host-System ausgeführt.

Dann habe ich das arm Jail mit folgendem Befehl erfolgreich gebaut.

Code:
poudriere jail -c -j fbsd103armv6 -m svn -a arm.armv6 -v releng/10.3

Der folgende Befehl schlug dann aber fehl.

Code:
[root@poudriere /usr/local/etc/poudriere.d]# poudriere bulk -j fbsd103armv6 -f fbsd103armv6-pkglist
[00:00:00] ====>> Cross-building ports for arm.armv6 on amd64 requires QEMU
[00:00:00] ====>> Creating the reference jail... done
[00:00:02] ====>> Mounting system devices for fbsd103armv6-default
[00:00:02] ====>> Mounting ports/packages/distfiles
[00:00:02] ====>> Using packages from previously failed build
[00:00:02] ====>> Mounting ccache from: /var/cache/ccache
[00:00:02] ====>> Mounting packages from: /pd/data/packages/fbsd103armv6-default
[00:00:03] ====>> Copying /var/db/ports from: /usr/local/etc/poudriere.d/fbsd103armv6-options
[00:00:03] ====>> Raising MAX_EXECUTION_TIME and NOHANG_TIME for QEMU
[00:00:03] ====>> Copying latest version of the emulator from: /usr/local/bin/qemu-arm-static
[00:00:03] ====>> Appending to make.conf: /usr/local/etc/poudriere.d/fbsd103armv6-make.conf
/etc/resolv.conf -> /pd/data/.m/fbsd103armv6-default/ref/etc/resolv.conf
[00:00:03] ====>> Starting jail fbsd103armv6-default
[00:00:03] ====>> Error: Unable to execute id(1) in jail. Emulation or ABI wrong.
[00:00:03] ====>> Cleaning up
[00:00:03] ====>> Umounting file systems

Nach einigem Suchen nachdem Fehler bin ich auf diese Seite gestoßen http://phaq.phunsites.net/2015/08/3...-2-crosscompiling-arm6v-packages-for-freebsd/

Neben einem anderen Weg für das Bauen von Paketen beschreibt der Autor auch, wie man das Jail testen kann.
Hier nun das Ergebnis zu der Sektion Known Issues:

Code:
[root@poudriere /usr/local/etc/poudriere.d]# chroot /pd/jails/fbsd103armv6 /bin/sh
# uname -a
FreeBSD poudriere 10.3-RELEASE-p4 FreeBSD 10.3-RELEASE-p4 #0: Sat May 28 12:23:44 UTC 2016     root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC  arm
#

Nun bin ich total verwirrt.

Und jetzt kommt Ihr ins Spiel. Hat jemand das vielleicht schon einmal ausprobiert und kann mir einen Tipp geben?
 
Ich möchte mal den aktuellen Stand der Dinge berichten. Ich habe mich dieses Wochenende nochmal um das Problem gekümmert und nun klappt es.
Ich habe das Ganze zweimal durchgespielt, einmal in einer VM und dann noch mal auf meinem Server.
Installiert sind aktuell poudriere-3.1.14_3 und qemu-user-static-2.8.50.g2017030 plus einige andere Ports, die aber eher unkritisch sind, wie Subversion.

Hier mal kurz die Schritte, wie ich den Bau der armv6 Pakete im Poudriere Jail umgesetzt habe.

Ich habe qemu-user-static im Host und im Poudriere Jail installiert. Nur im Host habe ich
Code:
sysrc qemu_user_static_enable=YES
service qemu_user_static start
abgesetzt. Damit wird das Kernel-Modul imgact_binmisc.ko geladen und die Magic-Strings für arm, mips und andere Binaries registriert.

Anschließend habe ich das armv6 Jail mit:
Code:
poudriere jail -c -j fbsd103armv6 -m svn -a arm.armv6 -v release/10.3.0
erstellt, sowie eine Liste der Pakete und eine fbsd103armv6-make.conf im poudriere Verzeichnis angelegt.

Nun noch die Optionen für das Übersetzen der Ports konfigurieren und den Build starten:
Code:
cd /usr/local/etc/poudriere.de
poudriere options -j fbsd103armv6 -f fbsd103armv6-pkglist
poudriere bulk -j fbsd103armv6 -f fbsd103armv6-pkglist

Gruß c.
 
Back
Top