熊迈模块rootfs及启动脚本剖析

拿到模块后,找到调试串口,这是第一步。
没有打印,无法进入linux console。不要紧,按ctrl+C,进入uboot操作界面。
设置为nfs引导:
setenv bootargs 'mem=64M console=ttyAMA0,115200 root=/dev/nfs rw nfsroot=192.168.8.10:/home/tftpboot/rootfs-diqi ip=192.168.8.11:192.168.8.10:192.168.8.1:255.255.255.0::eth0:off mtdparts=hi_sfc:512K(boot),5M(romfs),7424K(user),1536K(web),256K(custom),256K(logo),1280K(mtd)'
可以进去了!有打印了!


# cat /proc/mtd 
dev:    size   erasesize  name
mtd0: 00080000 00010000 "boot"
mtd1: 00500000 00010000 "romfs"
mtd2: 00740000 00010000 "user"
mtd3: 00180000 00010000 "web"
mtd4: 00040000 00010000 "custom"
mtd5: 00040000 00010000 "logo"
mtd6: 00140000 00010000 "mtd"


# mount -o mand -t cramfs /dev/mtdblock1 /mnt/mtd
# ls /mnt/mtd/
bin      etc      linuxrc  proc     share    tmp      var
boot     home     mnt      root     slv      usr
dev      lib      opt      sbin     sys      utils



cramfs是只读文件系统,无法更改rcS。但rcS中有一句:
if [ -f /mnt/custom/extapp.sh ];then
        /mnt/custom/extapp.sh &
fi
显然,这是留给客户扩展准备的。


[mtd1,mtd5]都是cramfs文件系统,mtd6即/mnt/mtd才是jffs2的可读写文件系统。


//=================================
# cat rcS 
#! /bin/sh


/etc/init.d/dnode


udevd --daemon
udevstart


mount -t cramfs /dev/mtdblock2 /usr
mount -t cramfs /dev/mtdblock3 /mnt/web
mount -t cramfs /dev/mtdblock4 /mnt/custom
mount -t cramfs /dev/mtdblock5 /mnt/logo
mount -t jffs2 /dev/mtdblock6 /mnt/mtd


mount -t ramfs  /dev/mem        /var/
mkdir -p /var/tmp
mount -t ramfs  /dev/mem2       /utils
mount -t usbfs usbfs /proc/bus/usb/
mount /usr/share/fonts /mnt/custom/data/Fonts 
#openssl dgst -sign /usr/sbin/ec_key.pem -sha256 -out /mnt/mtd/licence.sign.file /mnt/mtd/tx_guid_file &
mkdir -p /mnt/mtd/Config /mnt/mtd/Log /mnt/mtd/Config/ppp /mnt/mtd/Config/Json
if [ -f /mnt/mtd/Config/ppp/3gdigal ]; then
        chmod 777 /mnt/mtd/Config/ppp/3gdigal
fi
/usr/etc/loadmod
netinit
if [ -f /usr/lib/modules/extdrv/load3G.sh ];then
        . /usr/lib/modules/extdrv/load3G.sh
fi
cp /usr/bin/upgraded /utils/ -f
/utils/upgraded &
ifconfig eth2 down
macGuarder &
sysinit &
wlandaemon &
searchIp &
dogtest &
route_switch &
if [ -f /mnt/mtd/Config/ppp/pppoe-start ];then
        PPPOE_START=/mnt/mtd/Config/ppp/pppoe-start
else
        PPPOE_START=/etc/ppp/pppoe-start
fi
/usr/bin/pppd pty $PPPOE_START file /etc/ppp/pppoe-options &
if [ -f /mnt/custom/extapp.sh ];then
        /mnt/custom/extapp.sh & //这个是为用户自定义引导程序准备的,可以增加一个extapp.sh,在里面启动自己的程序。
fi
mkdir /dev/net
mknod /dev/net/tun c 10 200
#Vpn &
dvrHelper /lib/modules /usr/bin/Sofia 127.0.0.1 9578 1 &

# cat /proc/mtd 
dev:    size   erasesize  name
mtd0: 00080000 00010000 "boot"
mtd1: 00500000 00010000 "romfs"
mtd2: 00740000 00010000 "user" //这个目录就是rootfs的/usr目录。有7M多字节,完全可以把自己的程序放进去。
mtd3: 00180000 00010000 "web"
mtd4: 00040000 00010000 "custom"
mtd5: 00040000 00010000 "logo"
mtd6: 00140000 00010000 "mtd" //放1 MB的程序进去,应该没有问题。


/usr/lib/下面的libdrv.so应该就是提供NetLib功能的库。
# ls libdvr.so -l
-rwxr-xr-x    1 root     root        200148 Oct 24  2016 libdvr.so


# vi modules/extdrv/load3G.sh 


#load 3G modules


if [ -f /usr/lib/modules/extdrv/usb-storage.ko ];then
        insmod /usr/lib/modules/extdrv/usb-storage.ko
fi
if [ -f /usr/lib/modules/extdrv/usb-storage.ko ];then //这是个小小的bug吧?
        insmod /usr/lib/modules/extdrv/usb_wwan.ko
fi
if [ -f /usr/lib/modules/extdrv/usb-storage.ko ];then //这是个小小的bug吧?哈哈!
        insmod /usr/lib/modules/extdrv/option.ko
fi
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

草根大哥

进军大神程序员路上,谢谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值