前言
由于zynq 7000系列 自帶的文件系統(ramdisk)大小為16M的,而我現在使用的開發板中,除去嵌入式linux系統所需要的存儲空間后,剩余的空間只有4M多了。當在開發過程中移植一些庫或者程序到文件系統,16M的文件系統容量更顯的相形見絀了。所以給文件系統擴容是給zynq 7000 系列開發新功能的重要環節。
目前我在我的zynq 開發版上測試,成功將根文件系統擴容到336M,至于為什么只能擴容到336M,暫時還沒找到相關的資料(我的zynq 開發版硬件ddr3是4G,內存是512M),如果有知道原因的,懇請留言評論,在此感激不盡。
根文件系統ramdisk擴容分為三個步驟(以擴容24M為例):
制作存儲空間為24M的根文件系統(ramdisk.image.gz)
拷貝原有的linux文件系統中的所有文件
制作支持24M以上的linux內核文件(uImage)
制作存儲空間為24M的根文件系統
制作存儲空間為24M的根文件系統,使用到三個命令:
dd命令:作用是用指定大小的塊拷貝一個文件,并在拷貝的同時進行指定的轉換 mke2fs命令:作用是將鏡像文件制作成ext2格式的文件系統 tune2fs命令:作用是調整和查看ext2/ext3文件系統的文件系統參數 123
三個命令的簡單介紹:
dd命令:
主要選項: if=file輸入文件名,默認為標準輸入 of=file輸出文件名,默認為標準輸出 ibs=bytes一次讀入bytes個字節(即一個塊大小為bytes個字節) obs=bytes一次寫入bytes個字節 bs=bytes同時設置讀和寫的塊大小為bytes cbs=bytes一次轉換bytes個字節 skip=blocks從輸入文件開頭跳過blocks個塊后再開始復制 seek=blocks從輸出文件開頭跳過blocks個塊后再開始復制 count=blocks僅僅拷貝blocks個塊,塊大小等于ibs指定的字節數 1234567891011
mke2fs命令:
一般用法: mke2fs-F設備-L標簽名稱-mxx%-b區塊大小 -b<區塊大小>指定區塊大小,單位為字節。 -c檢查是否有損壞的區塊。 -f<不連續區段大小>指定不連續區段的大小,單位為字節。 -F不管指定的設備為何,強制執行mke2fs。 -i<字節>指定"字節/inode"的比例。 -N指定要建立的inode數目。 -l<文件>從指定的文件中,讀取文件西中損壞區塊的信息。 -L<標簽>設置文件系統的標簽名稱。 -m<百分比值>指定給管理員保留區塊的比例,預設為5%。 -M記錄最后一次掛入的目錄。 -q執行時不顯示任何信息。 -r指定要建立的ext2文件系統版本。 -R=<區塊數>設置磁盤陣列參數。 -S僅寫入superblock與groupdescriptors,而不更改inodeableinode bitmap以及blockbitmap。 -v執行時顯示詳細信息。 -V顯示版本信息。 1234567891011121314151617181920
tune2fs命令:
常用選項說明: -l查看文件系統信息 -cmax-mount-counts設置強制自檢的掛載次數,如果開啟,每掛載一次mountconut就會加1,超過次數就會強制自檢 -iinterval-between-checks[d|m|w]設置強制自檢的時間間隔[d天m月w周] -mreserved-blocks-percentage保留塊的百分比 -j將ext2文件系統轉換為ext3類型的文件系統 -Lvolume-label類似e2label的功能,可以修改文件系統的標簽 -rreserved-blocks-count調整系統保留空間 -o[^]mount-option[,...]Setorcleartheindicateddefaultmountoptionsinthefilesystem.設置或清除默認掛載的文件系統選項 12345678910
好了,啰嗦了那么多,現在來看制作存儲空間為24M的根文件系統的詳細步驟。
1. 制作 ramdisk 文件系統
1)建立文件系統映象,設置文件系統大小為24576/1024 = 24M :
Host#ddif=/dev/zeroof=ramdisk.imagebs=1kcount=24576 1
2)格式化為 ext2 文件系統:
Host#mke2fs-Framdisk.image-L“24Mvolume”-b1024-m0 1
3)調整和查看 ext2/ext3 文件系統的文件系統參數:
Host#tune2fsramdisk.image-i0 1
4)修改權限:
Host#chmoda+rwxramdisk.image 1
5)壓縮鏡像文件,生成 ramdisk.image.gz :
Host#gzip-v9ramdisk.image 1
拷貝原有的linux文件系統中的所有文件
擴容的根文件系統(ramdisk.image.gz)已經生成,但剛才生成的跟文件系統里什么東西都沒有,而能運行linux系統的根文件系統,需要很多系統文件,直接拷貝原有的linux文件系統中的所有文件,到這個新生成的根文件系統中,就能像以前運行linux系統。
1)提取 initrd 鏡像文件:
Host#gunzipramdisk.image.gz 1
2)掛載 initrd 鏡像文件:
Host#chmodu+rwxramdisk.image Host#mkdirtmp_mnt/ Host#mount-oloopramdisk.imagetmp_mnt/ 123
3)提取 原有的initrd 鏡像文件:
Host#gunzipramdisk.image.gz 1
4)掛載 原有的initrd 鏡像文件:新建一個目錄src_ramdisk,將原有的根文件系統放如這個目錄下。
Host#cdsrc_ramdisk Host#chmodu+rwxramdisk.image Host#mkdirtmp_mnt/ Host#mount-oloopramdisk.imagetmp_mnt/ Host#cdtmp_mnt/ 12345
5)將原來的文件系統中的所有文件復制到tmp_mnt中:
Host#cp-ri*../tmp_mnt 1
6)壓縮ramdisk.image,并生成 uramdisk.image
Host#cd.. Host#gzipramdisk.image.gz Host#mkimage-Aarm-Tramdisk-Cgzip-dramdisk.image.gzuramdisk.image.gz 123
制作支持24M以上的linux內核文件
我們將文件系統擴容后,在啟動過程中可能會報錯,報錯的原因是在內核配置里預留的啟動內存空間不夠引起的,所以需要改內核的配置,從新編譯,內核配置要改的地方如下:
#makeARCH=armmenuconfig 1
保存設置后,編譯生成uImage:
Host#make-j4ARCH=armCROSS_COMPILE=arm-xilinx-linux-gnueabi-UIMAGE_LOADADDR=0X8000uImage 1
驗證
將修改好的uImage 和ramdisk 復制到sd卡中,并加載進入系統。
使用 df -h 命令查看空間使用情況。
Host#df-h 1
-
嵌入式
+關注
關注
5087文章
19148瀏覽量
306171 -
Zynq
+關注
關注
10文章
610瀏覽量
47212 -
存儲空間
+關注
關注
0文章
54瀏覽量
10704
原文標題:Zynq-7000移植——根文件系統ramdisk擴容教程
文章出處:【微信號:ZYNQ,微信公眾號:ZYNQ】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論