制作根文件系统一种简易有效的方法
----author:AnSon
工作环境: ubuntu-10.04(虚拟机7.13)
目标平台:龙芯3210开发板
Busybox版本:busybox1.1.0
开发包内核源码目录:/home/linux_3210
开发包内核版本:2.6.18.1
交叉编译工具:gcc-3.4.6
目的:根据系统开发的需要,定制一套完善的根文件系统。
本质:根本资源来源是busybox源代码,当需要制作不同的文件系统时,就需要不同的文件系统打包工具
如:
mkfs.cramfs -r ramdisk -o ramdisk-cramfs.img
mkfs.yaffs -r ramdisk -o ramdisk-yaffs.img
mkfs.jffs2 -r ramdisk -o ramdisk-jffs.img
其中 mkfs.jffs2是打包工具 ramdisk是需要被打包的资源来源,
ramdisk-jffs.img是需要被打包成的文件系统镜像文件,其他类推。
步骤如下:
一:编译 busybox1.1.0
其中在 make menuconfig 中 选择一个你当前环境下用到的交叉编译器,同时在其中菜单选择系统
开发需要的命令、服务等工具;
其次:make clean all
再次:make install
二:
1)把linux内核中的 Ramdisk 文件夹拷贝出来
2)把在busybox中的_install文件夹的文件全部拷贝到刚才所提到的 Ramdisk 文件夹中,覆盖原来中的
文件
三:利用文件系统制作工具制作相应的文件系统
mkfs.jffs2 -l -r ramdisk -o ramdisk-jffs.img -e 0x20000 --pad=0x4000000 -n
详解:
-l :小端模式
-r :路径来源
-o :生成输出
-e :是erasesize 即擦除块的大小 1 blocksize = 2k(pasesize) x 64 (pages)=128k (0x20000)
--pad :生成目标文件的大小,不够就以0XFF填充,此大小必须要与mtd 中所制作的
文件系统对应的分区大小一致,否则就会产生 flash没有erase彻底,从而出现提示一些错误
信息
-n :除掉一些错误信息提示
四. 设置内核启动参数
set append 'root=/dev/mtdblock1 rw rootfstype=jffs2 console=ttyS0,115200 nordinit init=/linuxrc display=vga1024x768 '
烧写到 MTD 第一个分区 ,而MTD第零个分区是内核
devcp tftp://192.168.1.100/ramdisk-jjfs.img /dev/mtd1
其中mtd1 对应 /dev/mtdblock1 的
五 . 配置内核支持JFFS2文件系统
File systems ---> Miscellaneous filesystems --->
<*>JournallingFlash File System v2 (JFFS2) support
[*]JFFS2write-bufferingsupport
[*]AdvancedcompressionoptionsforJFFS2
[*]JFFS2ZLIBcompressionsupport
[*]JFFS2RTIMEcompressionsupport
[*] JFFS2 RUBIN compression support
最好把关于JFFS2的配置都选上
六:把内核原来默认支持的 Ramdisk文件系统,卸掉,即内核中不自动包含这文件系统
General setup --->
--->Initramfs source file(s) 这个不用填充
Device Driver --->
Block devices---> 两个都不用选上
RAM disk support
Initial RAM filesystem and RAM disk ....
阅读(2230) | 评论(1) | 转发(0) |