参考文章:
序言
因为zynq7000系列自带的文件系统(ramdisk)大小为16M的,而我如今使用的开发板中,去除嵌入式linux系统所须要的储存空间后,剩余的空间只有4M多了。当在开发过程中移植一些库或则程序到文件系统,16M的文件系统容量更显的相形见绌了。所以给文件系统扩容是给zynq7000系列开发新功能的重要环节。
目前我在我的zynq开发版上测试,成功将根文件系统扩容到336M,至于为何只能扩容到336M,暂时还没找到相关的资料(我的zynq开发版硬件ddr3是4G,显存是512M),假如有晓得缘由的,请求留言评论,在此感激不尽。
根文件系统ramdisk扩容分为三个步骤(以扩容24M为例):制做储存空间为24M的根文件系统(ramdisk.image.gz)拷贝原有的linux文件系统中的所有文件制做支持24M以上的linux内核文件(uImage)制做储存空间为24M的根文件系统
制做储存空间为24M的根文件系统,使用到三个命令:
dd命令: 作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换
mke2fs命令:作用是将镜像文件制作成ext2格式的文件系统
tune2fs命令:作用是调整和查看ext2/ext3文件系统的文件系统参数
三个命令的简单介绍:
好了linux系统移植步骤,啰嗦了这么多,现今来看制做储存空间为24M的根文件系统的详尽步骤。
1.制做ramdisk文件系统
1)构建文件系统映象,设置文件系统大小为24576/1024=24M:
Host# dd if=/dev/zero of=ramdisk.image bs=1k count=24576
2)低格为ext2文件系统:
Host# mke2fs -F ramdisk.image -L“24M volume” -b 1024 -m 0
3)调整和查看ext2/ext3文件系统的文件系统参数:
Host# tune2fs ramdisk.image -i 0
4)更改权限:
Host# chmod a+rwx ramdisk.image
5)压缩镜像文件,生成ramdisk.image.gz:
Host# gzip -v9 ramdisk.image
拷贝原有的linux文件系统中的所有文件
扩容的根文件系统(ramdisk.image.gz)早已生成,但刚刚生成的跟文件系统里哪些东西都没有,而能运行linux系统的根文件系统,须要好多系统文件,直接拷贝原有的linux文件系统中的所有文件linux系统移植步骤学linux有前途吗,到这个新生成的根文件系统中,能够像原先运行linux系统。
1)提取initrd镜像文件:
Host# gunzip ramdisk.image.gz
2)挂载initrd镜像文件:
Host# chmod u+rwx ramdisk.image
Host# mkdir tmp_mnt/
Host# mount -o loop ramdisk.image tmp_mnt/
3)提取原有的initrd镜像文件:
Host# gunzip ramdisk.image.gz
4)挂载原有的initrd镜像文件:
新建一个目录src_ramdisk,将原有的根文件系统放如这个目录下。
Host# cd src_ramdisk
Host# chmod u+rwx ramdisk.image
Host# mkdir tmp_mnt/
Host# mount -o loop ramdisk.image tmp_mnt/
Host# cd tmp_mnt/
5)将原先的文件系统中的所有文件复制到tmp_mnt中:
Host# cp -ri * ../tmp_mnt
6)压缩ramdisk.image,并生成uramdisk.image
Host# cd ..
Host# gzip ramdisk.image.gz
Host# mkimage -A arm -T ramdisk -C gzip -d ramdisk.image.gz uramdisk.image.gz
制做支持24M以上的linux内核文件
我们将文件系统扩容后,在启动过程中可能会报错,报错的缘由是在内核配置里预留的启动显存空间不够造成的,所以须要改内核的配置linux删除文件夹,从新编译,内核配置要改的地方如下:
# make ARCH=arm menuconfig
保存设置后,编译生成uImage:
Host# make -j 4 ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- UIMAGE_LOADADDR=0X8000 uImage
验证
将更改好的uImage和ramdisk复制到sd卡中,并加载步入系统。
使用df-h命令查看空间使用情况。
Host# df -h