嵌入式文件系统镜像制作及烧写
将rootfs和userdata两个目录分别制作为镜像文件进行烧写:
镜像文件对应文件系统类型的选择,采用:
rootfs制作为rootfs.img镜像,采用的文件系统类型为cramfs,只读,用于保护根文件系统;
userdata制作为userdata.img镜像,采用的文件系统类型为yaffs2,可读写;
配置linux内核,支持两种文件系统:
cd /opt/kernel
make menuconfig
File Systems->
[*] Miscellaneous filesystems --->
<*>Compressed ROM file system support (cramfs) //支持cramfs文件系统
File Systems->
[*] Miscellaneous filesystems --->
<*> YAFFS2 file system support //已经支持
保存退出
make zImage
cp arch/arm/boot/zImage /tftpboot/
重启开发板
cat /proc/filesystems //查看是否支持cramfs和yaffs2
将rootfs和userdata分别制作为cramfs和yaffs2文件系统镜像:
目录 镜像文件 文件系统类型
rootfs rootfs.img cramfs
userdata userdata.img yaffs2
rootfs.img镜像制作步骤:
cd /opt/
mkfs.cramfs rootfs rootfs.img
cp rootfs.img /tftpboot
userdata.img镜像制作步骤:
从ftp下载mkyaffs2image工具到虚拟机中:
sudo cp mkyaffs2image /usr/sbin
sudo chmod 777 /usr/sbin/mkyaffs2image
cd /opt/project
mkyaffs2image userdata userdata.img
chmod 666 userdata.img
cp userdata.img /tftpboot
至此四个软件包都准备就绪:
u-boot.bin,zImage,rootfs.img,userdata.img
存放目录:/tftpboot
nandflash分区规划,用于部署镜像文件:
0----------2M----------7M----------17M------------剩余
uboot zImage rootfs.img userdata.img
注意:镜像文件大小要小于各个分区的大小!请确认!
修改nandflash的分区表
cd /opt/kernel
vim drivers/mtd/nand/s3c_nand.c 找到分区表,修改为如下分区表信息:
struct mtd_partition s3c_partition_info[ ] = {
//第一分区信息
{
.name = "uboot", //分区的名称
.offset = (0), //分区的起始地址
.size = (SZ_1M*2), //分区的大小
},
//第二分区信息
{
.name = "kernel",
.offset = MTDPART_OFS_APPEND, //追加
.size = (SZ_1M*5),
},
//第三分区信息
{
.name = "rootfs", //第一次写成大写了下面图片不对
.offset = MTDPART_OFS_APPEND,
.size = (SZ_1M*10),
},
//第四分区信息
{
.name = "userdata",
.offset =MTDPART_OFS_APPEND,
.size = MTDPART_SIZ_FULL //剩余
}
};
保存退出
make zImage
cp arch/arm/boot/zImage /tftpboot
重启开发板
cat /proc/mtd //查看分区表
ls /dev/mtd* -lh //查看字符设备文件和块设备文件
/dev/mtd0:第一个分区的字符设备文件
/dev/mtdblock0:第一个分区的块设备文件
将zImage,rootfs.img,userdata.img烧写到nand上:
烧写方法有两种,一种通过uboot,另一种通过mtd工具
利用uboot来进行烧写的步骤:
烧写zImage:
tftp 50008000 zImage
nand erase 200000 500000
nand write 50008000 200000 500000
烧写rootfs.img
tftp 50008000 rootfs.img
nand erase 700000 a00000
nand write 50008000 700000 a00000
烧写userdata.img
tftp 50008000 userdata.img
nand erase 1100000
nand write.yaffs 50008000 1100000$filesize
或者
nand write.yaffs 50008000 1100000 $(filesize)
设置本地启动的参数信息:
setenv bootcmd nand read 50008000 200000 500000 \; bootm 50008000
setenv bootargs root=/dev/mtdblock2 init=/linuxrc console=ttySAC0,115200 rootfstype=cramfs
saveenv
重启开发板,看rootfs是否能挂接,所在第三块分区
验证根文件系统是否为只读:
cd /
mkdir helloworld //看是否能创建目录 可以创建
手动挂接存放userdata数据的第四块分区到根文件系统home目录:
在开发板上执行:
mount -t yaffs2 /dev/mtdblock3 /home
mount //看是否挂接成功
cd /home //进入第四块分区
ls //查看第四块分区的内容,是否有之前userdata目录的内容
. /home/scripts/run.sh //手动运行软件启动脚本,"."后跟一个空格
此时 led灯QT启动成功
自动挂接存放userdata数据的第四块分区到根文件系统home目录:
vim /opt/rootfs/etc/init.d/rcS,在文件最后添加:
mount -t yaffs2 /dev/mtdblock3 /home
ifconfig eth0 192.168.1.110
ifcofig lo 127.0.0.1
保存退出
镜像包下载地址:http://linux.linuxidc.com/pub/2011/10/09/制作根文件系统镜像工具mkfs编译/
操作参考:http://www.linuxidc.com/Linux/2011-10/44887.htm
http://www.embedu.org/Column/Column508.htm
启动信息显示:
UBIFS: mounted UBI device 0, volume 0, name "rootfs"
UBIFS: file system size: 126341120 bytes (123380 KiB, 120 MiB, 995 LEBs)
UBIFS: journal size: 6348800 bytes (6200 KiB, 6 MiB, 50 LEBs)
UBIFS: media format: w4/r0 (latest is w4/r0)
UBIFS: default compressor: lzo
UBIFS: reserved for root: 4952683 bytes (4836 KiB)
VFS: Mounted root (ubifs filesystem) on device 0:14.
Freeing init memory: 148K
嵌入式文件系统镜像制作及烧写相关推荐
- 嵌入式linux烧录文件格式,嵌入式文件系统镜像制作及烧写
将rootfs和userdata两个目录分别制作为镜像文件进行烧写: 镜像文件对应文件系统类型的选择,采用: rootfs制作为rootfs.img镜像,采用的文件系统类型为cramfs,只读,用于保 ...
- Porting:telnet远程登录开发板、制作并烧写cramfs和ext4和ramdisk三种格式根文件系统镜像
1.安装卸载模块不成功的问题 #:'insmod led_drv.ko #:'lsmod #:'rmmod led_drv 出现的问题: // rmmod: ca ...
- 【Linux】制作U-Boot烧写镜像到SD卡的过程(中篇:LDS文件)
上一篇文章,讲述了制作U-Boot烧写镜像到SD卡的过程,其中运用make的方式来进行将.s文件编译成.bin文件,那make是什么意思?它主要实现了什么? 先讲一下,如果不采用make的方式该怎样实 ...
- 【Android 系统开发】 编译 Android文件系统 u-boot 内核 并烧写到 OK-6410A 开发板上
博客地址 : http://blog.csdn.net/shulianghan/article/details/40299813 本篇文章中用到的工具源码下载 : -- ok-6410A 附带的 A ...
- iTop4412开发板Android4.0.3镜像OTG方式烧写
iTop4412开发板Android4.0.3镜像OTG方式烧写 最近开始学习linux,入手一块讯为的iTop4412开发板,遵循讯为的框架学习法(毕竟科技更新速度如此之快,不可能什么都学,必须要懂 ...
- Jetson TX2 镜像拷贝和烧写
一.准备工作 两个以上的开发板,一个作为镜像源,其他的作为拷贝受众 一台搭载Ubuntu1604及以上的host PC 数据线和各种连接线 参考文档1:JETSON TK1 镜像拷贝和烧写 参考文档2 ...
- 【Linux】制作U-Boot烧写镜像到SD卡的过程(上篇)
在嵌入式Linux操作系统中,需要将三样东西(BootLoader.内核kernel.根文件系统)传输到目标板中.一般而言,U-Boot烧写到SD卡中,而内核.根文件系统都采用TFTP的方式传输到目标 ...
- 【Linux】制作U-Boot烧写镜像到SD卡的过程(下篇:Makefile文件)
上文讲到,如果需求仅略微修改,整个从编译到仅保留二进制文件到添加HeaderInfo到烧写到SD卡的一系列命令都需要重新再输入一遍,这很繁琐. 如何解决这个问题呢? 制作一个bash脚本文件 制作一个 ...
- 嵌入式Linux学习笔记—fastboot烧写Android
本系列为本人在自学过程中的学习笔记,如有错误欢迎大家指正. 学习资料为讯为ITOP4412开发板. fastboot烧写Android 1.主要工具 OTG 接口烧写方式也叫 fastboot 烧写方 ...
最新文章
- JavaScript(转载)
- SAP Marketing Cloud功能简述(五) : 销售计划管理
- 最长回文子串Python解法
- Spring Boot,@ EnableWebMvc和常见用例
- python机器学习预测_使用Python和机器学习预测未来的股市趋势
- scikit-learn 算法的通用形式
- easydarwin 安装_在Linux平台上搭建EasyDarwin,编译代码并简单部署
- 算法:62唯一路径Unique Paths 动态规划和排列组合算法
- 二、VS插件之VassistX
- windows虚拟显示器开发(二)WDDM hook(USB转HDMI驱动、USB手写屏开发)
- wget下载github的releases的软件
- 创客集结号:3D打印技术的FDM技术与SLA技术
- SoftICE Window Resizing Commands
- 创业者2012必看十大文章(10)
- that's why you go away(song)
- 亚马逊echo中国使用_我需要Amazon Echo才能使用Alexa吗?
- php卡片式排版显示,卡片式设计思考
- colorkey唇釉是否安全_colorkey唇釉成分安全吗
- linux cc攻击防范
- javacv从入门到精通——第三章:基本使用
热门文章
- 【模式匹配】KMP算法的来龙去脉
- openssh设置免密码登录远程服务器
- 非阻塞,send后马上close消息能成功发出去吗
- Javascript Patterns--读书笔记8 (Factory)
- 行为类模式--策略模式
- 简单的外壳(shell)
- iBATIS.NET 学习笔记(五)
- Golang undefined: strings.ReplaceAll解决
- 【转】补零与离散傅里叶变换的分辨率
- 服务器上安装ffmpeg后报错及解决方案libavdevice.so.58: cannot open shared object file: No such file or directory