FreeBSD auf arm

schorsch_76

FreeBSD Fanboy
Hallo zusammen,

ich hab heute auf meinem Beaglebone Black FreeBSD installiert. Das Generic SD Karten Image funktioniert 1a. Mit pkg Anwendungen zu installieren klappt auch. Was nicht klappt ist ein freebsd-update. Es weißt darauf hin, dass arm nicht Tier 1 sondern nur Tier 2 ist. Wie kann man also solch ein kleines System sinnvoll mit FreeBSD betreiben? Sollte man das auf einem amd64 Rechner bauen und wie bietet man das dann dem BBB zum download an? Bei poudriere hab ich da ja schon mal meine Erfahrungen gemacht aber beim Basissystem hab ich immer die Infrastruktur von FreeBSD genutzt? Macht sowas jemand von euch bzw. hat jemand damit Erfahrungen?

Gruß
Georg

Code:
Last login: Thu May 12 09:13:32 2022 from 192.168.160.19
FreeBSD 13.1-RELEASE releng/13.1-n250148-fc952ac2212 GENERIC

Welcome to FreeBSD!

Release Notes, Errata: https://www.FreeBSD.org/releases/
Security Advisories:   https://www.FreeBSD.org/security/
FreeBSD Handbook:      https://www.FreeBSD.org/handbook/
FreeBSD FAQ:           https://www.FreeBSD.org/faq/
Questions List: https://lists.FreeBSD.org/mailman/listinfo/freebsd-questions/
FreeBSD Forums:        https://forums.FreeBSD.org/

Documents installed with the system are in the /usr/local/share/doc/freebsd/
directory, or can be installed later with:  pkg install en-freebsd-doc
For other languages, replace "en" with a language code like de or fr.

Show the version of FreeBSD installed:  freebsd-version ; uname -a
Please include that output and any error messages when posting questions.
Introduction to manual pages:  man man
FreeBSD directory layout:      man hier

To change this login announcement, see motd(5).
To erase a line you've written at the command prompt, use "Ctrl-U".
                -- Dru <genesis@istar.ca>
georg@BB1-FreeBSD:~ $ uname -a; freebsd-version
FreeBSD BB1-FreeBSD 13.1-RELEASE FreeBSD 13.1-RELEASE releng/13.1-n250148-fc952ac2212 GENERIC arm
13.1-RELEASE
georg@BB1-FreeBSD:~ $ su -
Password:
root@BB1-FreeBSD:~ # freebsd-update fetch
src component not installed, skipped
Looking up update.FreeBSD.org mirrors... 2 mirrors found.
Fetching public key from update2.freebsd.org... failed.
Fetching public key from update1.freebsd.org... failed.
No mirrors remaining, giving up.

This may be because upgrading from this platform (arm)
or release (13.1-RELEASE) is unsupported by freebsd-update. Only
platforms with Tier 1 support can be upgraded by freebsd-update.
See https://www.freebsd.org/platforms/ for more info.

If unsupported, FreeBSD must be upgraded by source.
root@BB1-FreeBSD:~ #
 
Es weißt darauf hin, dass arm nicht Tier 1 sondern nur Tier 2 ist.
So ganz klar ist das leider nicht, v8 ist zum Beispiel Tier 1, v6 und v7 hingegen nicht.

An dem Punkt hier könnte man ansetzten:
Code:
Fetching public key from update2.freebsd.org... failed.
Fetching public key from update1.freebsd.org... failed.
No mirrors remaining, giving up.
Kannst du die Endpunkte von dem Board aus erreichen?
Könntest du die Ausgabe von folgendem Command posten: freebsd-update -v debug fetch
 
root@BB1-FreeBSD:~ # freebsd-update -v debug fetch
Looking up update.FreeBSD.org mirrors... 2 mirrors found.
Fetching public key from update1.freebsd.org... fetch: http://update1.freebsd.org/13.1-RELEASE/arm/pub.ssl: Not Found
failed.
Fetching public key from update2.freebsd.org... fetch: http://update2.freebsd.org/13.1-RELEASE/arm/pub.ssl: Not Found
failed.
No mirrors remaining, giving up.

This may be because upgrading from this platform (arm)
or release (13.1-RELEASE) is unsupported by freebsd-update. Only
platforms with Tier 1 support can be upgraded by freebsd-update.
See https://www.freebsd.org/platforms/ for more info.

If unsupported, FreeBSD must be upgraded by source.


Hier die Ausgabe.

Mit dem Browser nachgehackt: http://update1.freebsd.org/13.1-RELEASE/arm wird nicht gefunden.[/code]
 
Ok dann dürfte deine TARGET_ARCH=arm sein, das ist tatsächlich nur Tier 2 (12.x) und sogar Unsupported (13.x).
Du könntest es mal mit aarch64 (ARMv8) probieren, das ist Tier 1 (13.x +) - sofern das auf deinem Board funktioniert/supported wird.

Edit: Ok, glaube das funktioniert nicht, auf dem Board ist wohl ein 32bit Prozessor verbaut
 
Das ist armv7 Tier2 in 13.x. Ich hab jetzt mal src gezogen per git und lass seit gestern ein "time make buildworld buildkernel" laufen.

Leider ist das Fehlgeschlagen. Vermutlich OOM da das Board nur 512M hat. Da das in einem screen gelaufen ist, ist das alles an Ausgabe was ich habe:

llvm-tblgen -gen-register-bank -I /usr/src/contrib/llvm-project/llvm/include -I /usr/src/contrib/llvm-project/llvm/lib/Target/PowerPC -d PPCGenRegisterBank.inc.d -o PPCGenRegisterBank.inc /usr/src/contrib/llvm-project/llvm/lib/Target/PowerPC/PPC.td
llvm-tblgen -gen-register-info -I /usr/src/contrib/llvm-project/llvm/include -I /usr/src/contrib/llvm-project/llvm/lib/Target/PowerPC -d PPCGenRegisterInfo.inc.d -o PPCGenRegisterInfo.inc /usr/src/contrib/llvm-project/llvm/lib/Target/PowerPC/PPC.td
llvm-tblgen -gen-subtarget -I /usr/src/contrib/llvm-project/llvm/include -I /usr/src/contrib/llvm-project/llvm/lib/Target/PowerPC -d PPCGenSubtargetInfo.inc.d -o PPCGenSubtargetInfo.inc /usr/src/contrib/llvm-project/llvm/lib/Target/PowerPC/PPC.td
llvm-tblgen -gen-asm-matcher -I /usr/src/contrib/llvm-project/llvm/include -I /usr/src/contrib/llvm-project/llvm/lib/Target/RISCV -d RISCVGenAsmMatcher.inc.d -o RISCVGenAsmMatcher.inc /usr/src/contrib/llvm-project/llvm/lib/Target/RISCV/RISCV.td
llvm-tblgen -gen-asm-writer -I /usr/src/contrib/llvm-project/llvm/include -I /usr/src/contrib/llvm-project/llvm/lib/Target/RISCV -d RISCVGenAsmWriter.inc.d -o RISCVGenAsmWriter.inc /usr/src/contrib/llvm-project/llvm/lib/Target/RISCV/RISCV.td
llvm-tblgen -gen-callingconv -I /usr/src/contrib/llvm-project/llvm/include -I /usr/src/contrib/llvm-project/llvm/lib/Target/RISCV -d RISCVGenCallingConv.inc.d -o RISCVGenCallingConv.inc /usr/src/contrib/llvm-project/llvm/lib/Target/RISCV/RISCV.td
llvm-tblgen -gen-compress-inst-emitter -I /usr/src/contrib/llvm-project/llvm/include -I /usr/src/contrib/llvm-project/llvm/lib/Target/RISCV -d RISCVGenCompressInstEmitter.inc.d -o RISCVGenCompressInstEmitter.inc /usr/src/contrib/llvm-project/llvm/lib/Target/RISCV/RISCV.td
llvm-tblgen -gen-dag-isel -I /usr/src/contrib/llvm-project/llvm/include -I /usr/src/contrib/llvm-project/llvm/lib/Target/RISCV -d RISCVGenDAGISel.inc.d -o RISCVGenDAGISel.inc /usr/src/contrib/llvm-project/llvm/lib/Target/RISCV/RISCV.td
*** Signal 9

Stop.
make[6]: stopped in /usr/src/lib/clang/libllvm
*** Error code 1

Stop.
make[5]: stopped in /usr/src/lib/clang
*** Error code 1

Stop.
make[4]: stopped in /usr/src/lib
*** Error code 1

Stop.
make[3]: stopped in /usr/src
*** Error code 1

Stop.
make[2]: stopped in /usr/src
*** Error code 1

Stop.
make[1]: stopped in /usr/src
*** Error code 1

Stop.
make: stopped in /usr/src
32202.430u 2755.869s 9:50:09.76 98.7% 453+484k 69395+11281io 29640pf+8w
 
FreeBSD auf einer so kleinen CPU zu compilen, kann man vergessen. Das dauert buchstäblich ewig. Und mit unter 2 Gigabyte RAM ist das eh unmöglich... Ich würde es auf einem normalen Desktop crosscompilen, /usr/src und /usr/obj per tar packen, rüberkopieren, entpacken und installieren.
 
Die Hinweise von Yamagi beachten (crosscompilen). Dann entweder gemäss FreeBSD Handbuch Kapitel "23.6. Installation mehrerer Maschinen" vorgehen oder gleich einen eigenen FreeBSD-Update-Server betreiben:


Einfachste Lösung ist natürlich der Wechsel auf eine Tier-1-Plattform:
 
Ich hab jetzt erst mal ein amd64 Setup gemacht und baue mit poudriere und dem /usr/(src|obj) Setup den Code durch. Dann seh ich ob ich das richtig mache. amd64 sollte ja der am besten getestete Code sein. Wenn das funktioniert werde ich mich am arm oder arm64 wagen (Rpi4). Der BBB ist halt ein älterer 32bit SBC der hier auch noch rumliegt.
 
Da einige Sachen nicht mit qemu-user-static bauen bin ich heute auf die Idee gekommen mal einen RPi4 mit 8 GB Ram zu nutzen und eine große SD Karte um dann das bauen zu lassen. Mal sehen was das bringt ;)
 
Zurück
Oben