Zynq 文件系统制作


0 扩容

默认xilinx提供的文件系统可能只有16MB,如果我们想要扩容时,需要重新制作,制作的过程可参考官方wiki(http://www.wiki.xilinx.com/Expanding+File+System)。大致流程可以简述如下。

Make an 8MBramdisk ,通过改变count值可以改变ramdisk大小

dd if=/dev/zero of=initrd.img bs=1M count=8

Format newramdisk(initrd.img)

mke2fs -F -v -m0 initrd.img

Mountinitrd.img to /mnt/new-disk

mkdir /mnt/new-disk
mount -o loop initrd.img /mnt/new-disk

Gunzip& mount ramdisk to old-ramdisk (/mnt/old-disk) file

mkdir /mnt/old-disk
gunzip ramdisk.image.gz
mount -o loop ramdisk.image /mnt/old-disk

Copy ex-files to newramdisk

cp -rf /mnt/old-disk/* /mnt/new-disk

Umount the ramdisks

umount /mnt/old-disk
umount /mnt/new-disk

Gzip new ramdisk

gzip -9 initrd.img
mv initrd.img ramdisk.image.gz

Note that theLinux kernel configuration parameter BLK_DEV_RAM_SIZE needsto be changed accordingly to reflect the new ramdisk size before building a newkernel image.

       文章最后所提及的,BLK_DEV_RAM_SIZE,虽然没有修改,但是仍然运行没有问题,不确定会影响什么。

1 文件格式

       上文中生成的是ramdisk.image.gz文件,但xilinx官方提供的是uramdisk.image.gz。顾名思义,就如内核zImage和uImage区别一样,后者是加了uboot的格式的头。命令是uboot下生成的mkimage工具,具体如下。

mkimage -n 'uboot ext2 ramdisk' -A arm -O Linux -Tramdisk -C gzip -d ramdisk.image.gz uramdisk.image.gz

同样如果需要将uramdisk.image.gz转ramdisk头部添加了64字节的uboot信息来生成uramdisk.image.gz(破坏了压缩格式),所以此时无法直接解压。可以直接使用Uedit32编辑器(或使用某些命令如dd)删除掉uramdisk.image.gz头部的64字节,然后重命名为ramdisk.img.gz。此时就可以使用gunzip解压为ramdisk.img,再进行挂载就可以了。

2 拷贝库文件

       在做文件系统时,通常需要拷贝库文件,cp同时,需要加-d选项,否则拷贝的是真实文件,而没有把链接文件拷贝过去。如果没有拷贝,那么还会指向原来的链接。例如原运行环境的libc.so指向了libc.2.14.so,编译环境的libc.so指向libc.2.24.so,在拷贝libc.so时,如果没有加-d选项,实际拷贝的是libc.2.24.so,原环境的libc.so还会指向libc.2.14.so。

你可能感兴趣的:(FPGA,嵌入式常识)