NanoBSD: Problem mit der Firmware für den RAL-Treiber im Image

NanoBSD: Problem mit der Firmware für den RAL-Treiber im Image

Mit meinem aktuellen NanoBSD-Build kann ich die ral0-Schnittstelle nicht aufrufen. Stattdessen erhalte ich Folgendes:

...
rt2561sfw: could not load firmware image, error 2
ral0: rt2661_load_microcode: unable to retrieve firmware image rt2561sfw
ral0: rt2661_init_locked: could not load 8051 microcode, error 22

Ich habe herausgefunden, dass ich die Firmware für das Gerät brauche, was ich mit den Modulen ral und ralfw in meiner Datei nanobsd.conf erreichen wollte:

NANO_NAME="nano"

NANO_KERNEL=GENERIC
NANO_ARCH=i386
TARGET_ARCH=i386; export TARGET_ARCH
TARGET_CPUTYPE=i386; export TARGET_CPUTYPE
NO_CLEAN=YES
NANO_DRIVE=ad1

NANO_MEDIASIZE=1900000
NANO_CONFSIZE=40960
NANO_RAM_ETCSIZE=20480
NANO_RAM_TMPVARSIZE=102400
NANO_NEWFS="-m 0 -b 4096 -f 512 -i 8192 -O1"
# NANO_PMAKE="make -j 8"
NANO_PMAKE="${NANO_PMAKE} -DDB_FROM_SRC"
NANO_MODULES="pf pflog if_bridge bridgestp netgraph/netgraph netgraph/ether netgraph/pppoe netgraph/socket wlan wlan_xauth wlan_tkip wlan_ccmp wlan_wep wlan_rssadapt firmware amdtemp bios wlan_amrr ral ralfw"

# 0 -> Leave second image all zeroes so it compresses better.
# 1 -> Initialize second image with a copy of the first
NANO_INIT_IMG2=0


CONF_INSTALL='
WITHOUT_INSTALLLIB=yes
WITHOUT_TOOLCHAIN=yes
'

CONF_WORLD='
WITHOUT_ACCT=yes
WITHOUT_ACPI=yes
WITHOUT_AMD=yes
WITHOUT_APM=yes
WITHOUT_AT=yes
WITHOUT_ATM=yes
WITHOUT_AUDIT=yes
WITHOUT_AUTHPF=yes
WITHOUT_BLUETOOTH=yes
WITHOUT_CALENDAR=yes
WITHOUT_CDDL=yes
WITHOUT_CTM=yes
WITHOUT_CVS=yes
WITHOUT_DICT=yes
WITHOUT_EXAMPLES=yes
WITHOUT_FDT=yes
WITHOUT_FLOPPY=yes
WITHOUT_FREEBSD_UPDATE=yes
WITHOUT_GAMES=yes
WITHOUT_GCOV=yes
WITHOUT_GPIB=yes
WITHOUT_GPIO=yes
WITHOUT_INFO=yes
WITHOUT_IPFILTER=yes
WITHOUT_IPFW=yes
WITHOUT_IPX=yes
WITHOUT_JAIL=yes
WITHOUT_LOCALES=yes
WITHOUT_LOCATE=yes
WITHOUT_LPR=yes
WITHOUT_NDIS=yes
WITHOUT_NIS=yes
WITHOUT_NLS=yes
WITHOUT_NLS_CATALOGS=yes
WITHOUT_NS_CACHING=yes
WITHOUT_PC_SYSINSTALL=yes
WITHOUT_PORTSNAP=yes
WITHOUT_PROFILE=yes
WITHOUT_QUOTAS=yes
WITHOUT_RCMDS=yes
WITHOUT_RCS=yes
WITHOUT_ROUTED=yes
WITHOUT_SHAREDOCS=yes
WITHOUT_SOURCELESS=yes
WITHOUT_SYSINSTALL=yes
WITHOUT_USB=yes
WITHOUT_MAN=yes
WITHOUT_MAN_UTILS=yes
'

cust_local() {
        echo '
sshd_enable=YES
ifconfig_re0="DHCP"
' >>${NANO_WORLDDIR}/etc/rc.conf
}

customize_cmd cust_pkg
customize_cmd cust_comconsole
customize_cmd cust_install_files
customize_cmd cust_allow_ssh_root
customize_cmd cust_local

Dies führt jedoch dazu, dass die Installation des Kernels fehlschlägt. Genauer gesagt erhalte ich den folgenden Fehler

===> ral (install)
install -o root -g wheel -m 555   if_ral.ko /usr/obj/nanobsd.nano//_.w/boot/kernel
install -o root -g wheel -m 555   if_ral.ko.symbols /usr/obj/nanobsd.nano//_.w/boot/kernel
===> ralfw (install)
===> ralfw/rt2561 (install)
install -o root -g wheel -m 555   rt2561fw.ko /usr/obj/nanobsd.nano//_.w/boot/kernel
install: rt2561fw.ko: No such file or directory
*** Error code 71

Ich habe gegoogelt, aber nichts Nützliches gefunden. Ich vermute, dass es sich hier um grundlegendes Material zum Erstellen von FreeBSD-Modulen handelt ... aber ich kann es nicht sehen.

Antwort1

Der gesamte Quelltext liegt vor und wartet nur darauf, von mir gelesen zu werden. So fand ich beispielsweise diesen interessanten Eintrag in/usr/src/sys/modules/Makefile:

.if ${MK_SOURCELESS_UCODE} != "no"
_bce=           bce
_fatm=          fatm
_fxp=           fxp
_ispfw=         ispfw
_mwlfw=         mwlfw
_ralfw=         ralfw
_sf=            sf
_sn=            sn
_ti=            ti
_txp=           txp
.endif

Dies scheint zu steuern, ob die RAL-Firmware (und eine Reihe anderer Firmwares) im Kernel enthalten ist. (Lesen Sie den Rest der Datei für Einzelheiten).

Daher dachte ich, dass die folgende Einstellung in nanobsd.conf das ganze Problem lösen würde:

CONF_BUILD='
MK_SOURCELESS_UCODE=yes
'

Seltsamerweise schlägt jetzt die Build-World (nicht Build-Kernel!) mit folgendem Fehler fehl:

--- buildworld ---
make[1]: "/usr/src/share/mk/bsd.own.mk" line 457: MK_SOURCELESS_UCODE can't be set by a user.
*** [buildworld] Error code 1

das einen eigenen Thread verdient.

Wie auch immer, beim Versuch:

CONF_BUILD='
_ralfw=ralfw
'

Die Dinge scheinen tatsächlich so zu laufen, wie ich es wollte.

Ich konnte das neue Image nicht auf das betreffende Gerät laden, aber das Installationsprotokoll zeigt diesmal dasAbonnierenModul wird installiert.

Das Problem ist behoben, aber ich bin immer noch an der Erklärung von jemandem interessiert, der eine klare Sicht auf das Ganze hat.

verwandte Informationen