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。