目前共有6篇帖子。 字体大小:较小 - 100% (默认)▼  内容转换:不转换▼
 
点击 回复
30 5
瑞芯微RV1106从SD卡启动自己的busybox1.36.1根文件系统
一派掌门 二十级
1楼 发表于:2025-6-19 10:38
uboot和linux内核都位于板载flash上,只有busybox根文件系统位于sd卡的第三分区上。

先按正常方法把瑞芯微原有的系统(uboot+linux内核+buildroot根文件系统)烧录到板载flash上,确保系统能正常启动。

按文章https://blog.csdn.net/ZLK1214/article/details/119917295所述的方法给SD卡分区。

我分的是三个区,第一个区1.5GB没有文件系统,第二个区是8GB的fat32文件系统,剩下的空间是ext4文件系统,里面放入busybox根文件系统。

~ # fdisk -l

Disk /dev/mmcblk1: 58 GB, 62534975488 bytes, 122138624 sectors

1908416 cylinders, 4 heads, 16 sectors/track

Units: sectors of 1 * 512 = 512 bytes


Device       Boot StartCHS    EndCHS        StartLBA     EndLBA    Sectors  Size Id Type

/dev/mmcblk1p1    0,1,1       195,13,12           63    3145790    3145728 1536M 83 Linux

/dev/mmcblk1p2    195,208,13  1023,254,63    3145791   19923006   16777216 8192M  c Win95 FAT32 (LBA)

/dev/mmcblk1p3    1023,254,63 1023,254,63   19923007  122138623  102215617 48.7G 83 Linux

~ #


busybox根文件系统的制作方法见https://blog.csdn.net/ZLK1214/article/details/119960367


fedora42系统下busybox-1.36.1 make menuconfig时提示Unable to find the ncurses libraries 的解决方法见https://zh.purasbar.com/post.php?t=32784

一派掌门 二十级
2楼 发表于:2025-6-19 10:43

按下列文章所述的方法修改uboot的命令行等待时间,由0秒改成5秒:

https://zh.purasbar.com/post.php?t=32561

改完后烧录到板载flash中。

然后插上sd卡,重启板子,串口提示Hit key to stop autoboot('CTRL+C'):时按下ctrl+c,进入uboot命令行,执行下面两条命令,临时将根文件系统的路径指向sd卡的第三分区。

setenv sys_bootargs root=/dev/mmcblk1p3 rw rootfstype=ext4 init=/linuxrc

boot

命令执行后会从板载flash启动内核,但使用的是sd卡中的busybox根文件系统。

串口打印[    0.390894] usb 1-1: new high-speed USB device number 2 using xhci-hcd时,按下回车键,即可进入busybox命令行界面。

 
一派掌门 二十级
3楼 发表于:2025-6-19 10:44

纯正的busybox根文件系统

 
一派掌门 二十级
4楼 发表于:2025-6-19 10:47
busybox系统下修改系统时间的命令:

设置为2025年6月19日 上午10点46分。

date -s "2025-06-19 02:46:45"

注意小时要减8小时。


busybox系统下查看系统时间的命令:

date


~ # date

Thu Jun 19 02:47:48 UTC 2025

 
一派掌门 二十级
5楼 发表于:2025-6-19 20:02

【板子从板载flash中的luckfox根文件系统启动的方法】

不做任何处理,直接开机进内核。


【板子从sd卡第三分区上的busybox根文件系统启动的方法】

在uboot提示Hit key to stop autoboot('CTRL+C'):时按下ctrl+c键,运行下面的命令

setenv sys_bootargs root=/dev/mmcblk1p3 rw rootfstype=ext4 init=/linuxrc

boot

然后在串口打印[    0.390894] usb 1-1: new high-speed USB device number 2 using xhci-hcd时,按下回车键。即可进入命令行界面。


设置板子的系统UTC时间为14:35:40:

(北京时间减8小时)

date -s "2025-06-19 06:35:40"


【板子:从luckfox根文件系统启动,复制之前编译好的wifi内核模块和配置文件】

https://blog.csdn.net/ZLK1214/article/details/147461755

umount /dev/mmcblk1p3

umount /dev/mmcblk1p2

mount /dev/mmcblk1p3 /mnt/sdcard

mkdir /mnt/sdcard/root/wifi

cp /etc/wpa_supplicant.conf /mnt/sdcard/root/wifi

cp /oem/usr/ko/cfg80211.ko /oem/usr/ko/aic_load_fw.ko /oem/usr/ko/aic8800_fdrv.ko /mnt/sdcard/root/wifi

cp -r /oem/usr/ko/aic_fw /mnt/sdcard/root/wifi

umount /dev/mmcblk1p3


【电脑上的linux虚拟机:打包(arm官网下载的)交叉编译器里面的libc库】

cd ~/Downloads/arm-gnu-toolchain-14.2.rel1-x86_64-arm-none-linux-gnueabihf/arm-none-linux-gnueabihf/libc

tar cvf libc.tar *

mv libc.tar /var/www/html/oct1158


【电脑上的linux虚拟机:交叉编译openssl、libnl和wpa_supplicant】

cd ~/Downloads

wget https://www.openssl.org/source/old/1.1.1/openssl-1.1.1w.tar.gz

tar xf openssl-1.1.1w.tar.gz

cd openssl-1.1.1w

./Configure linux-armv4 no-asm --cross-compile-prefix=~/Downloads/arm-gnu-toolchain-14.2.rel1-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf- enable-ssl3 enable-ssl3-method enable-weak-ssl-ciphers shared

(考虑到后面板子上要跑apache服务器,也要用到openssl,为了让apache的https支持xp系统的ie6和ie8浏览器,所以在这里开启了ssl3.0协议和3des算法)

make

make install DESTDIR=$(pwd)/_install

cd _install

sudo chown -R root:root usr

tar cf openssl-1.1.1w-binary.tar usr


cd ~/Downloads

wget https://github.com/thom311/libnl/releases/download/libnl3_11_0/libnl-3.11.0.tar.gz

tar xf libnl-3.11.0.tar.gz

cd libnl-3.11.0

export PATH=$PATH:/home/oct1158/Downloads/arm-gnu-toolchain-14.2.rel1-x86_64-arm-none-linux-gnueabihf/bin

./configure --host=arm-none-linux-gnueabihf

make

make install DESTDIR=$(pwd)/_install

cd _install

sudo chown -R root:root usr

tar cf libnl-3.11.0-binary.tar usr


cd ~/Downloads

wget https://w1.fi/releases/wpa_supplicant-2.11.tar.gz

tar xf wpa_supplicant-2.11.tar.gz

cd wpa_supplicant-2.11/wpa_supplicant

cp defconfig .config


修改.config文件,在顶部添加

CC=/home/oct1158/Downloads/arm-gnu-toolchain-14.2.rel1-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf-gcc

CFLAGS += -I/home/oct1158/Downloads/openssl-1.1.1w/_install/usr/local/include -I/home/oct1158/Downloads/libnl-3.11.0/_install/usr/local/include/libnl3 -I/home/oct1158/Downloads/libnl-3.11.0/include/linux-private

LIBS += -L/home/oct1158/Downloads/openssl-1.1.1w/_install/usr/local/lib -L/home/oct1158/Downloads/libnl-3.11.0/_install/usr/local/lib

(路径中不能使用~符号)

然后在文件中找到CONFIG_CTRL_IFACE_DBUS_NEW=y,在前面加上#。


make

make install DESTDIR=$(pwd)/_install

cd _install

sudo chown -R root:root usr

tar cf wpa_supplicant-2.11-binary.tar usr


cp ~/Downloads/openssl-1.1.1w/_install/openssl-1.1.1w-binary.tar /var/www/html/oct1158

cp ~/Downloads/libnl-3.11.0/_install/libnl-3.11.0-binary.tar /var/www/html/oct1158

cp ~/Downloads/wpa_supplicant-2.11/wpa_supplicant/_install/wpa_supplicant-2.11-binary.tar /var/www/html/oct1158


【板子:从luckfox根文件系统启动,从电脑上下载交叉编译器里面的libc库并解压到sd卡第三分区上的busybox根文件系统中,使交叉编译器编译出来的程序能在busybox里面运行,不会提示not found错误】

umount /dev/mmcblk1p3

umount /dev/mmcblk1p2

mkdir /mnt/myfat

mount /dev/mmcblk1p2 /mnt/myfat

cd /mnt/myfat

wget http://192.168.2.142/oct1158/libc.tar

mount /dev/mmcblk1p3 /mnt/sdcard

tar xf libc.tar -C /mnt/sdcard

cd ..

umount /dev/mmcblk1p2

umount /dev/mmcblk1p3


【板子:从luckfox根文件系统启动,从电脑上下载刚才交叉编译的openssl库、libnl库和wpa_supplicant软件并解压到sd卡第三分区上的busybox根文件系统中】

umount /dev/mmcblk1p3

umount /dev/mmcblk1p2

mkdir /mnt/myfat

mount /dev/mmcblk1p2 /mnt/myfat

cd /mnt/myfat

wget http://192.168.2.142/oct1158/openssl-1.1.1w-binary.tar

wget http://192.168.2.142/oct1158/libnl-3.11.0-binary.tar

wget http://192.168.2.142/oct1158/wpa_supplicant-2.11-binary.tar

mount /dev/mmcblk1p3 /mnt/sdcard

tar xf openssl-1.1.1w-binary.tar -C /mnt/sdcard

tar xf libnl-3.11.0-binary.tar -C /mnt/sdcard

tar xf wpa_supplicant-2.11-binary.tar -C /mnt/sdcard

cd ..

umount /dev/mmcblk1p2

umount /dev/mmcblk1p3


修改/etc/profile文件:

在# no-op下添加

export PATH=/sbin:/usr/sbin:/usr/local/sbin:/bin:/usr/bin:/usr/local/bin

执行exit命令再按回车键生效。


新建一个/etc/ld.so.conf文件,文件内容为/usr/local/lib。保存好文件后,执行ldconfig命令。


【板子:从sd卡第三分区上的busybox根文件系统启动,加载wifi内核模块并连接热点】

insmod /root/wifi/cfg80211.ko

(可忽悠cfg80211: failed to load regulatory.db这个错误,没有影响)

insmod /root/wifi/aic_load_fw.ko aic_fw_path=/root/wifi/aic_fw

insmod /root/wifi/aic8800_fdrv.ko

mkdir /var/run

wpa_supplicant -B -i wlan0 -c /root/wifi/wpa_supplicant.conf


这个时候板子已经成功连上路由器了,但不会自动从路由器获取IP地址。

手工配置IP地址:

ifconfig wlan0 192.168.60.100 netmask 255.255.255.0

route add default gw 192.168.60.1

ping 8.8.8.8 -c 4

可以ping通。

 
巨大八爪鱼:这里面用到的libnl3.11.0和wpa_supplicant2.11是目前的最新版本。
  2025-6-19 20:15 回复

回复帖子

内容:
用户名: 您目前是匿名发表
验证码:
(快捷键:Ctrl+Enter)
 

本帖信息

点击数:30 回复数:5
评论数: ?
作者:巨大八爪鱼
最后回复:巨大八爪鱼
最后回复时间:2025-6-19 20:15
 
©2010-2025 Purasbar Ver2.0
除非另有声明,本站采用知识共享署名-相同方式共享 3.0 Unported许可协议进行许可。