rootroot@rootroot-X99-Turbo:~$
rootroot@rootroot-X99-Turbo:~$ git clone https://github.com/friendlyarm/sd-fuse_h3 -b master --single-branch sd-fuse_h3
rootroot@rootroot-X99-Turbo:~$ cd sd-fuse_h3/
rootroot@rootroot-X99-Turbo:~/sd-fuse_h3$
rootroot@rootroot-X99-Turbo:~/sd-fuse_h3$ ll
rootroot@rootroot-X99-Turbo:~/sd-fuse_h3$ ll *.sh
rootroot@rootroot-X99-Turbo:~/sd-fuse_h3$ tar zxvf friendlycore-jammy-images.tgz
【可选编译uboot,确认/熟悉 友善之臂的编译指令】
rootroot@rootroot-X99-Turbo:~/sd-fuse_h3$ git clone https://github.com/friendlyarm/u-boot -b sunxi-v2017.x --depth 1 uboot
rootroot@rootroot-X99-Turbo:~/sd-fuse_h3$ UBOOT_SRC=uboot ./build-uboot.sh friendlycore-jammy
【编译生成Z:\sd-fuse_h3\friendlycore-jammy\u-boot-sunxi-with-spl.bin】
rootroot@rootroot-X99-Turbo:~/sd-fuse_h3$ ll
rootroot@rootroot-X99-Turbo:~/sd-fuse_h3$ git clone https://github.com/friendlyarm/linux -b sunxi-4.14.y --depth 1 kernel
rootroot@rootroot-X99-Turbo:~/sd-fuse_h3$
rootroot@rootroot-X99-Turbo:~/sd-fuse_h3$ ll
rootroot@rootroot-X99-Turbo:~/sd-fuse_h3$ cd kernel
rootroot@rootroot-X99-Turbo:~/sd-fuse_h3/kernel$
rootroot@rootroot-X99-Turbo:~/sd-fuse_h3/kernel$ ll
rootroot@rootroot-X99-Turbo:~/sd-fuse_h3/kernel$ touch .scmversion
rootroot@rootroot-X99-Turbo:~/sd-fuse_h3/kernel$
rootroot@rootroot-X99-Turbo:~/sd-fuse_h3/kernel$ make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig
rootroot@rootroot-X99-Turbo:~/sd-fuse_h3/kernel$ ll
rootroot@rootroot-X99-Turbo:~/sd-fuse_h3/kernel$ make ARCH=arm CROSS_COMPILE=arm-linux- savedefconfig
rootroot@rootroot-X99-Turbo:~/sd-fuse_h3/kernel$ cp defconfig ./arch/arm/configs/my_defconfig
rootroot@rootroot-X99-Turbo:~/sd-fuse_h3/kernel$
rootroot@rootroot-X99-Turbo:~/sd-fuse_h3/kernel$ git add ./arch/arm/configs/my_defconfig
rootroot@rootroot-X99-Turbo:~/sd-fuse_h3/kernel$
rootroot@rootroot-X99-Turbo:~/sd-fuse_h3/kernel$ git status
rootroot@rootroot-X99-Turbo:~/sd-fuse_h3/kernel$ cd -
/home/rootroot/sd-fuse_h3
rootroot@rootroot-X99-Turbo:~/sd-fuse_h3$
rootroot@rootroot-X99-Turbo:~/sd-fuse_h3$ KERNEL_SRC=kernel KCFG=my_defconfig ./build-kernel.sh friendlycore-jammy
【编译异常了,找不到kernel。必须使用绝对路径。】
rootroot@rootroot-X99-Turbo:~/sd-fuse_h3$ KERNEL_SRC=/home/rootroot/sd-fuse_h3/kernel KCFG=my_defconfig ./build-kernel.sh friendlycore-jammy
20250514给NanoPi NEO core开发板的Ubuntu core20.04系统重新编译内核boot.img【修正官方给的编译脚本】
2025/5/14 18:24
【使用 友善之臂开发板,享受 背时人生!^_欢迎您入坑】
【如果我不是一位 资深/10年+工作经验的工程师,用你们的板子做项目,一定会非常酸爽!^_】
用你们开发板做一次项目 。STEP-BY-STEP的步骤我都可以 写30篇了。[笑哭]
WIKI和 github肯定不是为 初学者 准备的。
感觉 友善之臂 的态度:我们 只针对 高手/玩家。搞不定的 就不要用了![笑哭]
kernel要使用绝对路径!
编译内核的问题。貌似解决了。
kernel要使用绝对路径!
你们家的WIKI和github什么都写了。
但是 又感觉 总 差那么点意思。
昨天 晚上 洗澡的时候/睡觉之前。看见/回想起/梦中惊忆起 kenel的报错?
可能就是 路径的问题。今天 早上已测试OK了。[笑哭]
你们家的 东西卖了这么多年。
这些年 你们的客户是则呢么过来的?
我 同情它们一把[笑哭]
[笑哭]目前没有客户反馈过这些问题哦
h3是我们目前出货最多的,也是问题最少的
缘起:一般认为是脚本:./build-kernel.sh的问题。
因为:编译uboot的脚本./build-uboot.sh都可以识别相对路径的。
比如:通过pwd获取当前路径,然后字符串组合既可获取绝对路径。
rootroot@rootroot-X99-Turbo:~/sd-fuse_h3$ UBOOT_SRC=uboot ./build-uboot.sh friendlycore-jammy
附件中:
build-kernel.sh 修改调试的脚本
build-kernel - 副本.sh 原始的脚本
【在build-kernel.sh的每一个代码块都加入了打印,】
Z:\sd-fuse_h3\build-kernel.sh
TOPPATH=$PWD
echo "2025/5/13 19:51p"
# wireguard
(cd ${OUT} && {
if [ ! -d wireguard ]; then
git clone https://git.zx2c4.com/wireguard-linux-compat -b master wireguard
# old version# git clone https://git.zx2c4.com/wireguard-monolithic-historical -b master wireguard
fi
(cd wireguard/src && {
#make CROSS_COMPILE=${CROSS_COMPILE} ARCH=${ARCH} KERNELDIR=${KERNEL_SRC}
#make CROSS_COMPILE=${CROSS_COMPILE} ARCH=${ARCH} KERNELDIR=$PWD/${KERNEL_SRC}
make CROSS_COMPILE=${CROSS_COMPILE} ARCH=${ARCH} KERNELDIR=${TOPPATH}/${KERNEL_SRC}
#make CROSS_COMPILE=${CROSS_COMPILE} ARCH=${ARCH} KERNELDIR=/home/rootroot/sd-fuse_h3/kernel
cp wireguard.ko ${KMODULES_OUTDIR}/lib/modules/${KERNEL_VER} -afv
})
})
编译boot.img的脚本/命令:KERNEL_SRC=kernel KCFG=my_defconfig ./build-kernel.sh friendlycore-jammy
那就是build-kernel.sh写的有问题/不严谨!
最简单粗暴的方法,在代码块/脚本里面根据感觉加入打印信息/示踪代码:echo "2025/5/13 19:51p"
看脚本死在哪里了/哪里出错了!
echo "2025/5/13 19:51p"
# wireguard
(cd ${OUT} && {
if [ ! -d wireguard ]; then
git clone https://git.zx2c4.com/wireguard-linux-compat -b master wireguard
# old version# git clone https://git.zx2c4.com/wireguard-monolithic-historical -b master wireguard
fi
(cd wireguard/src && {
#make CROSS_COMPILE=${CROSS_COMPILE} ARCH=${ARCH} KERNELDIR=${KERNEL_SRC}
make CROSS_COMPILE=${CROSS_COMPILE} ARCH=${ARCH} KERNELDIR=/home/rootroot/sd-fuse_h3/kernel
cp wireguard.ko ${KMODULES_OUTDIR}/lib/modules/${KERNEL_VER} -afv
})
})
修改KERNELDIR=${KERNEL_SRC}为绝对路径:KERNELDIR=/home/rootroot/sd-fuse_h3/kernel
正常了。
echo "2025/5/13 19:51p"
# wireguard
(cd ${OUT} && {
if [ ! -d wireguard ]; then
git clone https://git.zx2c4.com/wireguard-linux-compat -b master wireguard
# old version# git clone https://git.zx2c4.com/wireguard-monolithic-historical -b master wireguard
fi
(cd wireguard/src && {
#make CROSS_COMPILE=${CROSS_COMPILE} ARCH=${ARCH} KERNELDIR=${KERNEL_SRC}
make CROSS_COMPILE=${CROSS_COMPILE} ARCH=${ARCH} KERNELDIR=$PWD/${KERNEL_SRC}
#make CROSS_COMPILE=${CROSS_COMPILE} ARCH=${ARCH} KERNELDIR=/home/rootroot/sd-fuse_h3/kernel
cp wireguard.ko ${KMODULES_OUTDIR}/lib/modules/${KERNEL_VER} -afv
})
})
INSTALL sound/usb/hiface/snd-usb-hiface.ko
INSTALL sound/usb/line6/snd-usb-line6.ko
INSTALL sound/usb/line6/snd-usb-pod.ko
INSTALL sound/usb/line6/snd-usb-podhd.ko
INSTALL sound/usb/line6/snd-usb-toneport.ko
INSTALL sound/usb/line6/snd-usb-variax.ko
INSTALL sound/usb/misc/snd-ua101.ko
INSTALL sound/usb/snd-usb-audio.ko
INSTALL sound/usb/snd-usbmidi-lib.ko
DEPMOD 4.14.111
2025/5/13 19:51o
2025/5/13 19:51p
make[1]: *** /home/rootroot/sd-fuse_h3/out/wireguard/src/kernel: No such file or directory. Stop.
make: *** [Makefile:26: module] Error 2
rootroot@rootroot-X99-Turbo:~/sd-fuse_h3$
rootroot@rootroot-X99-Turbo:~/sd-fuse_h3$
那就是:$PWD 当前目录是:/home/rootroot/sd-fuse_h3/out/wireguard/src/
很容易/根据经验/艰难得知:TOPPATH=$PWD 为目录:/home/rootroot/sd-fuse_h3
最终版本:
echo "2025/5/13 19:51p"
# wireguard
(cd ${OUT} && {
if [ ! -d wireguard ]; then
git clone https://git.zx2c4.com/wireguard-linux-compat -b master wireguard
# old version# git clone https://git.zx2c4.com/wireguard-monolithic-historical -b master wireguard
fi
(cd wireguard/src && {
#make CROSS_COMPILE=${CROSS_COMPILE} ARCH=${ARCH} KERNELDIR=${KERNEL_SRC}
#make CROSS_COMPILE=${CROSS_COMPILE} ARCH=${ARCH} KERNELDIR=$PWD/${KERNEL_SRC}
make CROSS_COMPILE=${CROSS_COMPILE} ARCH=${ARCH} KERNELDIR=${TOPPATH}/${KERNEL_SRC}
#make CROSS_COMPILE=${CROSS_COMPILE} ARCH=${ARCH} KERNELDIR=/home/rootroot/sd-fuse_h3/kernel
cp wireguard.ko ${KMODULES_OUTDIR}/lib/modules/${KERNEL_VER} -afv
})
})
编译LOG:
INSTALL sound/usb/line6/snd-usb-line6.ko
INSTALL sound/usb/line6/snd-usb-pod.ko
INSTALL sound/usb/line6/snd-usb-podhd.ko
INSTALL sound/usb/line6/snd-usb-toneport.ko
INSTALL sound/usb/line6/snd-usb-variax.ko
INSTALL sound/usb/misc/snd-ua101.ko
INSTALL sound/usb/snd-usb-audio.ko
INSTALL sound/usb/snd-usbmidi-lib.ko
DEPMOD 4.14.111
2025/5/13 19:51o
2025/5/13 19:51p
CC [M] /home/rootroot/sd-fuse_h3/out/wireguard/src/main.o
CC [M] /home/rootroot/sd-fuse_h3/out/wireguard/src/noise.o
CC [M] /home/rootroot/sd-fuse_h3/out/wireguard/src/device.o
CC [M] /home/rootroot/sd-fuse_h3/out/wireguard/src/peer.o
CC [M] /home/rootroot/sd-fuse_h3/out/wireguard/src/timers.o
CC [M] /home/rootroot/sd-fuse_h3/out/wireguard/src/queueing.o
CC [M] /home/rootroot/sd-fuse_h3/out/wireguard/src/send.o
CC [M] /home/rootroot/sd-fuse_h3/out/wireguard/src/receive.o
CC [M] /home/rootroot/sd-fuse_h3/out/wireguard/src/socket.o
CC [M] /home/rootroot/sd-fuse_h3/out/wireguard/src/peerlookup.o
CC [M] /home/rootroot/sd-fuse_h3/out/wireguard/src/allowedips.o
CC [M] /home/rootroot/sd-fuse_h3/out/wireguard/src/ratelimiter.o
CC [M] /home/rootroot/sd-fuse_h3/out/wireguard/src/cookie.o
CC [M] /home/rootroot/sd-fuse_h3/out/wireguard/src/netlink.o
CC [M] /home/rootroot/sd-fuse_h3/out/wireguard/src/crypto/zinc/chacha20/chacha20.o
AS [M] /home/rootroot/sd-fuse_h3/out/wireguard/src/crypto/zinc/chacha20/chacha20-arm.o
AS [M] /home/rootroot/sd-fuse_h3/out/wireguard/src/crypto/zinc/chacha20/chacha20-unrolled-arm.o
CC [M] /home/rootroot/sd-fuse_h3/out/wireguard/src/crypto/zinc/poly1305/poly1305.o
AS [M] /home/rootroot/sd-fuse_h3/out/wireguard/src/crypto/zinc/poly1305/poly1305-arm.o
CC [M] /home/rootroot/sd-fuse_h3/out/wireguard/src/crypto/zinc/chacha20poly1305.o
CC [M] /home/rootroot/sd-fuse_h3/out/wireguard/src/crypto/zinc/blake2s/blake2s.o
CC [M] /home/rootroot/sd-fuse_h3/out/wireguard/src/crypto/zinc/curve25519/curve25519.o
AS [M] /home/rootroot/sd-fuse_h3/out/wireguard/src/crypto/zinc/curve25519/curve25519-arm.o
LD [M] /home/rootroot/sd-fuse_h3/out/wireguard/src/wireguard.o
Building modules, stage 2.
MODPOST 1 modules
CC /home/rootroot/sd-fuse_h3/out/wireguard/src/wireguard.mod.o
LD [M] /home/rootroot/sd-fuse_h3/out/wireguard/src/wireguard.ko
'wireguard.ko' -> '/home/rootroot/sd-fuse_h3/out/output_h3_kmodules/lib/modules/4.14.111/wireguard.ko'
2025/5/13 19:51q
skip exfat-nofuse
2025/5/13 19:51r
2025/5/13 19:51
2025/5/13 19:51s
2025/5/13 19:51t
building kernel ok.
2025/5/13 19:51u
Re-running script under sudo...
[sudo] password for rootroot:
copying kernel to boot.img ...
copying kernel module and firmware to rootfs ...
mke2fs 1.45.4 (23-Sep-2019)
Creating regular file friendlycore-jammy/rootfs.img
Creating filesystem with 376832 4k blocks and 47424 inodes
Filesystem UUID: f3e5b24d-b7b5-4c92-baf2-928ebdc352a4
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Allocating group tables: done
Writing inode tables: done
Creating journal (8192 blocks): done
Copying files into the device: done
Writing superblocks and filesystem accounting information: done
'/home/rootroot/sd-fuse_h3/prebuilt/partmap.template' -> 'friendlycore-jammy/partmap.txt'
generating friendlycore-jammy/partmap.txt done.
0
2025/5/13 19:51v
updating kernel ok.
rootroot@rootroot-X99-Turbo:~/sd-fuse_h3$ ll
BUG/修改方法已经 友善之臂 官方了。
看见回的邮件了
刚才电话还是想 抱怨一下 [笑哭]
你们家的脚本自带的bug会害死人[笑哭][疑问]
好的, 我让负责全志平台的同事测试并完善一下wiki
我们验证后会回复您
抱歉我们人少事多,有些没办法及时测试回复
要安排时间
做FAQ吧。支持过的问题 留 service。