目前共有17篇帖子。 字體大小:較小 - 100% (默認)▼  內容轉換:台灣正體▼
 
點擊 回復
179 16
瑞芯微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 回復
巨大八爪鱼:arm-gnu-toolchain-14.2.rel1-x86_64-arm-none-linux-gnueabihf是arm官網目前最新版本的交叉編譯器。
https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads/14-2-rel1
x86_64 Linux hosted cross toolchains
AArch32 GNU/Linux target with hard float (arm-none-linux-gnueabihf)
  2025-6-20 17:22 回復
巨大八爪鱼

忘記修改文件所有者為root了。

【電腦上的linux虛擬機:打包(arm官網下載的)交叉編譯器裡面的libc庫】
cp -r ~/Downloads/arm-gnu-toolchain-14.2.rel1-x86_64-arm-none-linux-gnueabihf/arm-none-linux-gnueabihf/libc ~/libc
cd ~/libc
sudo chown -R root:root *
tar cvf libc.tar *
mv libc.tar /var/www/html/oct1158
cd ~
sudo rm -rf ~/libc

  2025-6-23 10:25 回復
一派掌門 二十級
6樓 發表于:2025-6-20 11:27
【配置root用戶的密碼】
touch /etc/group
addgroup -g0 -S root
touch /etc/passwd
adduser -h/root -Groot -S -u0 -s/bin/sh root
passwd
(可設置root密碼為luckfox)

【通過udhcpc自動獲取IP位址】
參考資料:https://blog.csdn.net/ZLK1214/article/details/120089931
echo "luckfox-rv1106" > /etc/hostname

vi /etc/mdev.conf
*******文件內容開始*******
sd[a-z][0-9]+   0:0 660 */etc/hotplug.sh
*******文件內容結束*******

vi /etc/hotplug.sh
*******文件內容開始*******
#!/bin/sh
if [ "$ACTION" = "add" ]
then
        mkdir -p /mnt/$MDEV
        mount /dev/$MDEV /mnt/$MDEV
else
        umount /mnt/$MDEV
        rmdir /mnt/$MDEV
fi
*******文件內容結束*******

chmod +x /etc/hotplug.sh

vi /etc/init.d/rcS
*******文件內容開始*******
#! /bin/sh

/bin/mount -a
/bin/hostname -F /etc/hostname

mkdir /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s

ifconfig lo up
insmod /root/wifi/cfg80211.ko
insmod /root/wifi/aic_load_fw.ko aic_fw_path=/root/wifi/aic_fw
insmod /root/wifi/aic8800_fdrv.ko

httpd -h /var/www/html
tcpsvd 0 21 ftpd -w / &
telnetd

while ! ifconfig wlan0 >/dev/null 2>/dev/null
do
    echo "wait for wlan0..."
done
/usr/local/sbin/wpa_supplicant -B -i wlan0 -c /root/wifi/wpa_supplicant.conf
udhcpc -i wlan0 -b -x hostname:$(hostname)
*******文件內容結束*******

vi /etc/profile
在export PATH上方添加:
*******文件內容開始*******
awktext="\$1==\"$USER\"{print \$6}"
export HOME=`awk -F: "$awktext" /etc/passwd`
export PS1="[\\u@\\h \\w]\\$ "
*******文件內容結束*******

mkdir -p /var/www/html
mkdir /usr/share/udhcpc
cd /usr/share/udhcpc
wget http://192.168.2.140/oct1158/simple.script(來自busybox壓縮包裡面的examples/udhcp/simple.script)
mv simple.script default.script
chmod +x default.script
(default.script必須要有執行權限,否則udhcpc能獲取到IP位址但是無法將IP位址設置到wlan0網卡上)

重啟板子後,就能自動連接wifi並從路由器獲取ip地址,並且能ping通www.baidu.com。

用下面的命令可以證明剛才交叉編譯的openssl支持SSL3.0:
openssl s_client -connect zh.purasbar.com:443 -ssl3
以及TLS1.0:
openssl s_client -connect zh.purasbar.com:443 -tls1
XP系統的IE6瀏覽器默認只支持SSL3.0,IE8默認支持TLS1.0。openssl1.1.1w在編譯的時候如果沒有正確配置的話是不支持SSL3.0的。
關於centos8自帶的apache2.4開啟https後,XP系統的IE6和IE8無法顯示網頁的問題:https://blog.csdn.net/ZLK1214/article/details/137521522
 
一派掌門 二十級
7樓 發表于:2025-6-20 11:31
setenv sys_bootargs root=/dev/mmcblk1p3 rw rootfstype=ext4 init=/linuxrc
boot
可以saveenv保存環境變量,每次都從sd卡上的busybox系統啟動。
舊環境變量值:
sys_bootargs= ubi.mtd=6 root=ubi0:rootfs rootfstype=ubifs rk_dma_heap_cma=66M
 
巨大八爪鱼

setenv sys_bootargs ubi.mtd=6 root=ubi0:rootfs rootfstype=ubifs rk_dma_heap_cma=66M

boot

  2025-6-23 09:58 回復
一派掌門 二十級
8樓 發表于:2025-6-20 14:24
【開機自動從網絡獲取日期和時間】
在電腦linux虛擬機上交叉編譯ntpdate。
參考資料:https://blog.csdn.net/ZLK1214/article/details/120262773
cd ~/Downloads
wget https://downloads.nwtime.org/ntp/ntp-4.2.8p18.tar.gz
tar xf ntp-4.2.8p18.tar.gz
cd ntp-4.2.8p18
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 --with-yielding-select=yes --with-openssl-incdir=/home/oct1158/Downloads/openssl-1.1.1w/_install/usr/local/include --with-openssl-libdir=/home/oct1158/Downloads/openssl-1.1.1w/_install/usr/local/lib
make
make install DESTDIR=$(pwd)/_install
cd _install
sudo chown -R root:root usr
tar czf ntp-4.2.8p18-binary.tar.gz usr
cp ntp-4.2.8p18-binary.tar.gz /var/www/html/oct1158

fedora42編譯ntp-4.2.8p18時,提示configure: error: could not locate pthread_detach()。
解決方案:
修改configure文件,找到第23134行的pthread_detach(NULL),改成pthread_detach(0)。
sntp/configure的第13735行也要做同樣的修改。

板子上:
mount /dev/mmcblk1p2 /mnt
cd /mnt
wget https://192.168.2.140/oct1158/ntp-4.2.8p18-binary.tar.gz --no-check-certificate
(板子上自己編譯的busybox的wget是支持https的,但幸狐的buildroot根文件系統的wget不支持https)
tar xzf ntp-4.2.8p18-binary.tar.gz -C /
(板子上自己編譯的busybox的tar是支持gzip壓縮格式的,但幸狐的buildroot根文件系統的tar不支持gzip格式)
cd ~
umount /dev/mmcblk1p2

測試命令:
[root@luckfox-rv1106 ~]# ntpdate cn.pool.ntp.org
20 Jun 06:05:55 ntpdate[595]: step time server 84.16.73.33 offset -28799.489413 sec
[root@luckfox-rv1106 ~]# date
Fri Jun 20 06:05:59 UTC 2025
[root@luckfox-rv1106 ~]#

可將/usr/local/sbin/ntpdate cn.pool.ntp.org加入/etc/init.d/rcS,開機自動校對時間。
 
巨大八爪鱼:/etc/init.d/rcS裡面的ntpdate指令最好加上&:/usr/local/sbin/ntpdate cn.pool.ntp.org &
以免影響開機。
  2025-6-20 16:21 回復
一派掌門 二十級
9樓 發表于:2025-6-20 14:49
【開機自動掛載SD卡第二分區(FAT32文件系統)到/mnt/sdfat】
mkdir /mnt/sdfat
vi /etc/fstab
添加/dev/mmcblk1p2  /mnt/sdfat vfat defaults    0   0
(不用考慮空格或者tab,可以直接複製粘貼進去)
保存文件,然後reboot重啟板子。
 
一派掌門 二十級
10樓 發表于:2025-6-20 16:00
板子上添加用戶:
mkdir /home
adduser oct1158
(輸入密碼)
完成後會自動創建oct1158用戶和oct1158組,以及/home/oct1158目錄。
可以用telnet登錄上去。
 
一派掌門 二十級
11樓 發表于:2025-6-20 20:00
板子開啟2GB swap交換空間:
dd if=/dev/zero of=/root/swapfile bs=1024 count=2097152
mkswap /root/swapfile
swapon /root/swapfile
查看剩餘內存:free -h

開機自動掛載fstab分區:/etc/init.d/rcS末尾添加swapon /root/swapfile。
(修改/etc/fstab文件的方法試了,不行。可能busybox不支持。)
 
一派掌門 二十級
12樓 發表于:2025-6-23 18:56
在fedora42上用arm-gnu-toolchain-14.2交叉編譯器編譯gcc14.2、gdb14.2和make4.4:
https://zh.purasbar.com/post.php?t=32816
 

回復帖子

內容:
用戶名: 您目前是匿名發表
驗證碼:
(快捷鍵:Ctrl+Enter)
 

本帖信息

點擊數:179 回複數:16
評論數: ?
作者:巨大八爪鱼
最後回復:巨大八爪鱼
最後回復時間:2025-6-23 18:56
 
©2010-2025 Purasbar Ver2.0
除非另有聲明,本站採用創用CC姓名標示-相同方式分享 3.0 Unported許可協議進行許可。