ophub / amlogic-s9xxx-armbian

Support for Armbian in Amlogic, Rockchip and Allwinner boxes. Support a311d, s922x, s905x3, s905x2, s912, s905d, s905x, s905w, s905, s905l, rk3588, rk3568, rk3399, rk3328, h6, etc.
GNU General Public License v2.0
5.41k stars 1.72k forks source link

sw799编译GobiNet驱动 (用于挂载yuga 4G模块 虚拟出网卡) 失败 #2393

Open ChaoliesTinnu opened 1 week ago

ChaoliesTinnu commented 1 week ago

Device Information | 设备信息

Armbian Version | 系统版本

Describe the bug | 问题描述

** 参考以前的issue尝试

obj-m := GobiNet.o
GobiNet-objs := GobiUSBNet.o QMIDevice.o QMI.o MPQMUX.o 
# KDIR := /lib/modules/$(shell uname -r)/build/
KDIR := /lib/modules/6.1.95-ophub/build/linux-headers-6.1.95-ophub/
PWD := $(shell pwd)
OUTPUTDIR=/lib/modules/`uname -r`/kernel/drivers/net/usb/

PI_KDIR := /lib/modules/6.8.0-1006-raspi/build
FILE = ${KDIR}/drivers/net/usb/usbnet.h
RK_CCPREFIX=/home/tinnu/toolchain/gcc-arm-11.2-2022.02-aarch64-aarch64-none-elf/bin/aarch64-none-elf-

all:
        ifeq ($(FILE), $(wildcard $(FILE)))
        cp ${KDIR}/drivers/net/usb/usbnet.h ./
        endif
    $(MAKE) -C $(KDIR) M=$(PWD) modules 

pi: 
    $(MAKE) ARCH=arm64 CROSS_COMPILE=${RK_CCPREFIX} -C $(PI_KDIR) M=$(PWD) modules

rk: 
    $(MAKE) ARCH=arm64 CROSS_COMPILE=${RK_CCPREFIX} -C $(KDIR) M=$(PWD) modules

install: all
    mkdir -p $(OUTPUTDIR)
    cp -f GobiNet.ko $(OUTPUTDIR)
    depmod

clean:
    rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions Module.* modules.order
tinnu@armbian:~/yuga/yuga$ make rk
make ARCH=arm64 CROSS_COMPILE=/home/tinnu/toolchain/arm-gnu-toolchain-13.2.Rel1-aarch64-aarch64-none-elf/bin/aarch64-none-elf- -C /lib/modules/6.1.95-ophub/build/linux-headers-6.1.95-ophub/ M=/home/tinnu/yuga/yuga modules
make[1]: Entering directory '/usr/src/linux-headers-6.1.95-ophub'
awk: cannot open "include/generated/asm-offsets.h" (No such file or directory)
  CC [M]  /home/tinnu/yuga/yuga/GobiUSBNet.o
aarch64-none-elf-gcc: error: missing argument to '-mstack-protector-guard-offset='
make[2]: *** [scripts/Makefile.build:250: /home/tinnu/yuga/yuga/GobiUSBNet.o] Error 1
make[1]: *** [Makefile:2010: /home/tinnu/yuga/yuga] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-6.1.95-ophub'
make: *** [Makefile:22: rk] Error 2

** 探索

** 猜测

E: 无法定位软件包 libncurses5 E: 软件包 python3-distutils 没有可安装候选

ophub commented 1 week ago

https://github.com/ophub/amlogic-s9xxx-armbian/blob/4d3b528150041266107ba287cd2424d227002573/recompile#L77-L81

修改这个地址,改为低版本的下载地址。

ophub commented 1 week ago

我刚才更新了一下内核编译的脚本,支持选择gcc的版本,你可以for后添加其他版本,地址改到你的下载仓库,我没使用过gcc9,我刚接触的时候他已经gcc-11.3了,未经测试没有添加更多版本,我使用过的历史版本都在仓库备份了编译工具链,可以持续下载使用。

ChaoliesTinnu commented 1 week ago

https://github.com/ophub/amlogic-s9xxx-armbian/blob/4d3b528150041266107ba287cd2424d227002573/recompile#L77-L81

修改这个地址,改为低版本的下载地址。

RT

ChaoliesTinnu commented 1 week ago

我上我的nanopc-t4(好像是从armbian官网下的镜像),是可以编译通过(只有部分转换错误,稍微修改即可)

tinnu@nanopct4:~/project/yuga$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/aarch64-linux-gnu/12/lto-wrapper
Target: aarch64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 12.2.0-14ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-12/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-12 --program-prefix=aarch64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror --enable-checking=release --build=aarch64-linux-gnu --host=aarch64-linux-gnu --target=aarch64-linux-gnu
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 12.2.0 (Ubuntu 12.2.0-14ubuntu1) 
tinnu@nanopct4:~/project/yuga$ uname -a
Linux nanopct4 6.2.0-rc6-media #23.02.1 SMP PREEMPT_DYNAMIC Mon Feb 13 07:49:02 UTC 2023 aarch64 aarch64 aarch64 GNU/Linux
ChaoliesTinnu commented 5 days ago

目前进度,终于用其他编译链把内核编译出来的了,编译链指定:arm-gnu-toolchain-11.3.rel1-x86_64-aarch64-none-linux-gnu.tar.xz 编译的log:

[ STEPS ] Welcome to compile kernel! 

[ INFO ] Server running on Ubuntu: [ Release: jammy / Host: x86_64 ] 

[ STEPS ] Start Initializing Variables...
[ STEPS ] Start checking the toolchain for compiling the kernel...
[ INFO ] Start downloading Armbian rootfs file [ https://github.com/ophub/kernel/releases/download/dev/armbian.tar.xz ]...
[ INFO ] Start downloading the ARM GNU toolchain [ https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu/11.3.rel1/binrel/arm-gnu-toolchain-11.3.rel1-x86_64-aarch64-none-linux-gnu.tar.xz ]...
[ STEPS ] Start querying the latest kernel version...
[ INFO ] (1) Auto query the latest kernel version of the same series for [ 6.1.y ]
[ INFO ] (1) [ 6.1.96 ] is github.com/unifreq/linux-6.1.y/main latest kernel. 

[ INFO ] Kernel compilation toolchain: [ gcc ]
[ INFO ] Kernel from: [ unifreq ]
[ INFO ] Kernel patch: [ false ]
[ INFO ] Kernel arch: [ arm64 ]
[ INFO ] Kernel Package: [ all ]
[ INFO ] kernel signature: [ -yourname ]
[ INFO ] Latest kernel version: [ true ]
[ INFO ] kernel initrd compress: [ xz ]
[ INFO ] Kernel List: [ 6.1.96 ] 

查看 vmilinz 版本:

Linux version 6.1.96-yourname (root@fv-az881-6) (aarch64-none-linux-gnu-gcc (Arm GNU Toolchain 11.3.Rel1) 11.3.1 20220712, GNU ld (Arm GNU Toolchain 11.3.Rel1) 2.38.20220708) # SMP 
%s version %s (root@fv-az881-6) (aarch64-none-linux-gnu-gcc (Arm GNU Toolchain 11.3.Rel1) 11.3.1 20220712, GNU ld (Arm GNU Toolchain 11.3.Rel1) 2.38.20220708) %s
Linux version 6.1.96-yourname (root@fv-az881-6) (aarch64-none-linux-gnu-gcc (Arm GNU Toolchain 11.3.Rel1) 11.3.1 20220712, GNU ld (Arm GNU Toolchain 11.3.Rel1) 2.38.20220708) #1 SMP Tue Jul  2 03:10:37 EDT 2024
pcgcctl
pcgcctl1

但是编译驱动(可以编译出armbian镜像,或者不build armbian,直接把kernel拉下来在pc端用交叉编译链,效果时一样的)依然是:

make ARCH=arm64 CROSS_COMPILE=/media/tinnu/D_pan/DaydayTech/EmbLinux/rockchip/RK3399/toolchain/arm-gnu-toolchain-11.3.rel1-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu- -C /media/tinnu/D_pan/DaydayTech/EmbLinux/rockchip/RK3399/img/sw799/myself/6.1.96/head-6.1.96-yourname M=/home/tinnu/software/linux_driver/yuge_4G/yuga_driver/yuga_driver modules
make[1]: 进入目录“/media/tinnu/D_pan/DaydayTech/EmbLinux/rockchip/RK3399/img/sw799/myself/6.1.96/head-6.1.96-yourname”
awk: 致命错误: 无法以读模式打开文件“include/generated/asm-offsets.h”(没有那个文件或目录)
warning: the compiler differs from the one used to build the kernel
  The kernel was built by: aarch64-none-elf-gcc (Arm GNU Toolchain 13.2.rel1 (Build arm-13.7)) 13.2.1 20231009
  You are using:           aarch64-none-linux-gnu-gcc (Arm GNU Toolchain 11.3.Rel1) 11.3.1 20220712
  CC [M]  /home/tinnu/software/linux_driver/yuge_4G/yuga_driver/yuga_driver/GobiUSBNet.o
aarch64-none-linux-gnu-gcc: 错误: ‘-mstack-protector-guard-offset=’缺少参数
make[2]: *** [scripts/Makefile.build:250:/home/tinnu/software/linux_driver/yuge_4G/yuga_driver/yuga_driver/GobiUSBNet.o] 错误 1
make[1]: *** [Makefile:2009:/home/tinnu/software/linux_driver/yuge_4G/yuga_driver/yuga_driver] 错误 2
make[1]: 离开目录“/media/tinnu/D_pan/DaydayTech/EmbLinux/rockchip/RK3399/img/sw799/myself/6.1.96/head-6.1.96-yourname”
make: *** [Makefile:23:rk2] 错误 2

还是识别成 aarch64-none-elf-gcc (Arm GNU Toolchain 13.2.rel1 (Build arm-13.7)) ,搞不清楚问题在哪。 准备看看用官方的换个dtb看看能不能启动。