1. 程式人生 > >Zynq 檔案系統製作

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。