NanoBSD: 이미지에 ral 드라이버용 펌웨어가 포함된 문제

NanoBSD: 이미지에 ral 드라이버용 펌웨어가 포함된 문제

현재 NanoBSD 빌드에서는 ral0 인터페이스를 불러올 수 없습니다. 대신 나는 다음을 얻습니다.

...
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

nanobsd.conf 파일에서 ral 및 ralfw 모듈을 사용하여 수행하려는 장치에 대한 펌웨어가 필요하다는 것을 알았습니다.

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

그러나 이로 인해 커널 설치가 실패하게 되며, 보다 구체적으로 다음 오류가 발생합니다.

===> 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

나는 주변을 검색했지만 유용한 것을 찾지 못했습니다. 나는 이것이 기본적인 FreeBSD 모듈 구축 작업이라고 생각하지만... 보이지 않습니다.

답변1

모든 소스는 내가 간단히 읽을 때까지 기다리고 있으므로 다음에서 이 흥미로운 항목을 발견했습니다./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

이는 ral 펌웨어(및 기타 여러 펌웨어)가 커널에 포함되어 있는지 여부를 제어하는 ​​것으로 보입니다. (자세한 내용은 파일의 나머지 부분을 읽으십시오).

그래서 나는 nanobsd.conf에서 다음을 설정하면 모든 문제가 해결될 것이라고 생각했습니다.

CONF_BUILD='
MK_SOURCELESS_UCODE=yes
'

이상하게도 이제 빌드 세계(빌드 커널이 아님!)가 다음과 같이 실패합니다.

--- 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

그 자체로 스레드가 필요합니다.

어쨌든 시도할 때:

CONF_BUILD='
_ralfw=ralfw
'

일이 내 뜻대로 되는 것 같군요.

문제의 기기에 새로운 이미지를 불러오지 못했는데, 이번에 설치 로그를 보면랄프모듈이 설치되고 있습니다.

문제는 해결되었지만 여전히 이 모든 것에 대해 명확한 견해를 갖고 있는 누군가의 설명에 관심이 있습니다.

관련 정보