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。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章