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
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
cp -rf /mnt/old-disk/* /mnt/new-disk
umount /mnt/old-disk
umount /mnt/new-disk
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。