1.打开小机
2.打开终端,输入 vi(空格) etc/fstab 后,按确定
3.按向右的方向键把光标移到写有“ubi0:ProgFS /mnt/ProgFS ubifs ro 0 0”的这一行,并移到“ro”后,按一下i,按删除键把o删掉并改为w,这时原来的ro变为了rw,按相同的方法将这一行上面三行和下面两行都改为 rw 需要改六个(记住一定要将后面的 O O都对齐了)意思也就是把系统文件从原来的只读模式该为读写模式,然后保存退出,这样我们才可以更改系统的图片。
4.编辑完后点上方的一个红色小圈,里面帯杠的那个,再输入冒号,再输入wq按回车就保存了
5.在本地磁盘下新建一文件夹,取名“system”再次开启终端,输入
mount(空格) mnt/Data/system/(空格) mnt/UsrDisk/system/
6.最后按确定出现下面图片(其实就出现一个#而已)
退出终端,进入资源管理,如下图
进入SYSTEM文件夹,发现三个文件夹
进入TURNON文件夹,发现四个文件夹
进入BG文件夹发现四个文件
7.接下来用你喜欢的PNG格式文件(别的格式可以用小机改格式)替换就可以了,用作替换的图片不要太大,320 240的png文件就可以了,太大的话会让你的机子反应迟钝(图片太大会无法显示全部!!!!)
(图片文件名一定要为bg1或者是bg2/bg3,也可以三个全换!!,好,退出来看看,为啥桌面没变?不要急吗,这个是需要重启才能生效的)
看看吧!!!
因为要把fastd移到entware,找了一下发现entware并没有提供完整的文档说明,在这里整理一下我的心得。各种错误疏漏在所难免,欢迎指正。背景:
Broadcom方案的路由一般将系统设置保存在NVRAM,文件系统的根卷采用只读的SquashFS,意味着你虽然看得到/etc/下的各种配置,但其实无法修改,除非重新编译安装固件。由此派生出来的dd-wrt和Tomato也是照办。
对于额外可用的Flash,dd-wrt和Tomato都支持格式化为JFFS2卷(JFFS2以下也统一简称JFFS),并一般挂载到/jffs路径。
而主要支持Atheros方案路由的openwrt则一般采用SquashFS + JFFS overlay的方案,即根卷仍然是只读的SquashFS卷,但在其上覆盖可读写的JFFS卷,看起来就好像你可以自由修改文件系统一样,但其实只是JFFS卷的内容覆盖在SquashFS上。这样既方便,又保留了只读SquashFS的灾难恢复功能。
作为对比,下面是r6300v2运行Tomato的mount表:
rootfs on / type rootfs (rw)
/dev/root on / type squashfs (ro,relatime)
proc on /proc type proc (rw,relatime)
tmpfs on /tmp type tmpfs (rw,relatime)
devfs on /dev type tmpfs (rw,noatime)
sysfs on /sys type sysfs (rw,relatime)
devpts on /dev/pts type devpts (rw,relatime,mode=600)
usbfs on /proc/bus/usb type usbfs (rw,relatime)
/dev/mtdblock6 on /jffs type jffs2 (rw,noatime)
在r6300v2上登录到ssh以后,我的home目录是跑在tmpfs上的/tmp/home/root,相当于是ramdisk里面。真正可以写入内容并且重启后不丢失的位置只有 /jffs。在r6300v2 + Tomato上面,/jffs是利用系统64MB空闲的flash。
下面是WNDR3700v4运行openwrt的mount表:
rootfs on / type rootfs (rw)
/dev/root on /rom type squashfs (ro,relatime)
proc on /proc type proc (rw,noatime)
sysfs on /sys type sysfs (rw,noatime)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,noatime)
/dev/ubi0_1 on /overlay type ubifs (rw,noatime)
overlayfs:/overlay on / type overlayfs (rw,noatime,lowerdir=/,upperdir=/overlay)
tmpfs on /dev type tmpfs (rw,relatime,size=512k,mode=755)
devpts on /dev/pts type devpts (rw,relatime,mode=600)
debugfs on /sys/kernel/debug type debugfs (rw,noatime)
WNDR3700v4有128M NAND flash,大概90多MB空闲。从上面可以看出和Tomato的区别在于这些空间(/dev/ubi0_1)被作为overlayfs,透明覆盖于 / 之上。我在WNDR3700v4的/etc/下所作的修改都保存到了overlay中,遮蔽了原有存在于SquashFS中的文件。另外WNDR3700v4是使用廉价的NAND flash,因此openwrt专门为其使用UBIFS文件系统,而不是上文所说的JFFS。
说了这么多看似无关的,是为了解释openwrt/opkg和entware之间一个重要的区别:openwrt默认把opkg包安装到/usr/,而作为移植版的entware默认安装到/opt/。因为ddwrt/Tomato根卷只读,/usr/不像openwrt上面那样可以写入,所以只能另选一个通常根卷上没有的路径,因此就有了/opt/。别忘了entware的前身就是optware。
所以ddwrt/Tomato的用户常常会需要将/jffs重新bind到/opt,或者挂外接硬盘/U盘到/opt上,openwrt用户则不需要。当然路由内置空间太小的openwrt是另外一回事。
那么把一个软件包从openwrt移植到entware所要做的工作就很直观了:把各种约定好的路径统统改到/opt!
/usr/bin? 改到 /opt/bin
/usr/sbin? 改到 /opt/bin
/etc/配置文件? 改到 /opt/etc/配置文件
使用openwrt UCI配置系统的 /etc/config/配置文件?还有openwrt风格的 /etc/init.d/启动脚本?对不起,这些和ddwrt/Tomato不兼容,只能case by case修改
实际上entware仓库中你可以找到大量的fix-path.patch文件,就是针对各个软件包修改Makefile中的路径。当然,由于内核版本不同(openwrt BB是3.10,CC已经升到3.18,tomato仍然沿用2.26系列)和其他种种原因,总有一些软件包还需要修改其他地方。
1.这个内核路径按理说应该是目标系统(编译完成之后的Linux系统)的内核头文件的路径,是这样么?不对。编译驱动需要的是内核的导出符号表。导出符号表通常在编译好的linux源码根目录下。
那么怎么取得这个内核头文件路径呢?
下载目标板的内核源码,然后进行编译,通过后就得到了所需要的导出符号表。
在交叉编译的时候需不需要添加额外的选项,告诉交叉编译工具要生成内核头文件路径呢?
不需要,这都是Linux内核的Makefile自动完成的。
2.默认添加的文件系统是只读的
Linux启动时候的 *** 作不会受这个只读属性影响,没有写属性并不代表不能写。况且,你得的这个结论不准确。
数据丢失可能是因为数据没有同步到flash或者其他的外存设备。
3.一般来说,是不是交叉编译系统完成之后,需要交叉编译busybox(需要指定内核路径)来获取一系列的utilities呢?
通常不需要,busybox中只有少数与内核结构体相关的命令需要Linux内核源码的目录,大多数的都不需要,这个需要查看编译的输出结果进行确定。如果是只使用基本的命令,不需要Linux内核。
4、最后,想请教下,在移植好的嵌入式Linux系统上能否像PC机上的Linux一样来做开发(除了硬件资源有限,其他的开发思路应该一致)呢?
应用软件可以像pc机一样开发,硬件相关的和内核相关的有很大的不同,比如底层和硬件驱动
sys_path没用过
arm-linux-的前缀是有意义的。busybox通常使用gcc,ar,ld等编译连接工具,为了和宿主机的工具区分开,需要使用前缀进行区别。仅此而已。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)