近段時間跟老闆做些嵌入式的實驗,順便學了下ramdisk檔案系統的製作,為防忘記,寫篇日誌提醒提醒。
由於實驗採用的是龍芯的板子,所以很多地方是基於mips來寫的。網上也有很多ramdisk檔案系統製作的帖子,各有各的優缺點,我這就算是乙個新的參考吧。
介紹下我的環境:ubuntu 8.04
核心版本:2.6.18.1
gcc版本號忘記了
將busybox1.1.3.tar
解壓到你的工作目錄下,如:/home/xx/
,以下用變數$
表示。1
建立根檔案系統結構
$#mkdir rootfs
$#cd rootfs
$/rootfs#mkdir bin dev etc lib proc sbin tmp usr var
$/rootfs#chmod 1777 tmp
$/rootfs#mkdir usr/bin usr/lib usr/sbin
$/rootfs#mkdir var/lib var/lock var/log var/run var/tmp
$/rootfs#chmod 1777 var/tmp 2
使用busybox
製作系統應用程式
2.1進入busybox
解壓後的目錄,配置busybox
$/busybox1.1.3$make menuconfig
配置時幾個注意的地方:
a.最好選上busyboxsettings/build options/build busybox as a static binary
項,表示不依賴動態庫;
b.busybox settings/build options/do you want to build busybox with acrosscompiler
需選上,並輸入交叉編譯工具的字首,如:$path/mipsel-linux-
,注意不是mipsel-linux-gcc
;c.busybox settings/installation options
設定為$/rootfs
;d.shells/ choose your default shell
設定為ash;e.
選上initutilities/init
及initutilities/support reading an inittab file
;其他配置看需要進行選取。
2.2編譯並安裝busybox
$/busybox1.1.3$make
$/busybox1.1.3$make install
2.3準備所需的裝置檔案
可以直接拷貝宿主機上的,或者自建幾個,
如:$#cd rootfs/dev
$/rootfs/dev#mknod -m 600 console c 5 1
在直接拷貝的時候,應加上cp的-dpr這三個選項,否則會出現問題。
2.4準備配置檔案
一般是直接拷貝宿主機上/etc/下的所有檔案到自己根檔案系統的/etc/下邊。
將/sbin/init拷貝到新生成的檔案系統根目錄下,或手工建立乙個指向/bin/busybox的鏈結init;
2.5生成映象檔案
對不同的檔案系統採用不同的生成工具,如生成cramfs使用命令:
#mkfs.cramfs ./rootfs ./rootfs.cramfs
到此為止,檔案系統算是大致完成了,對於是否要製作映象檔案,看具體應用而定。在此我們不製作映象檔案,直接編譯到核心中。
3配置核心載入檔案系統
a.將/rootfs/
內的檔案拷貝到核心資料夾下的arch/mips/ramdisk/
裡邊;完成後對核心進行配置:輸入makemenuconfig;b.
進入devicedrivers / block devices,
選中以下幾項:
>>loopbackdevice support
>>ramdisksupport
>>defaultnumber of ram disks (16)
>>defaultram disk size(kbytes) (4096)
>>defaultram disk block size(bytes) (1024)
>>initialram filesystem and ram disk support c.
進入 generalsetup,
選中 initramfssource file,
指定 ramdisk
的路徑,即:arch/mips/ramdisk;4
編譯核心,載入到目標機上執行。
Ramdisk根檔案系統
ramdisk根檔案系統生成在 可以參考一下linux usr makefile,會呼叫scripts gen initramfs list.sh根據變數config initramfs source指定 定義為.root 呼叫usr gen init cpio工具,來生成cpio格式的壓縮的根檔案...
Linux下Ramdisk根檔案系統製作過程解析
一 在乙個已建好的檔案系統上進行修改 設已建立好的檔案系統壓縮檔案為ramdisk.gz 1 解壓 cd ramdisk.gz所在目錄 gunzip ramdisk.gz 在解壓後,得到檔案系統鏡象檔案ramdisk,覆蓋了原來的壓縮檔案 2 鏡象檔案掛載 鏡象檔案必須經過掛載後才能看到檔案系統中的...
zynq修改ramdisk檔案系統
掛載 ramdisk 新建目錄 tmp,並將 uramdisk.image.gz 拷貝至該目錄 cd filesystem mkdir tmp cp uramdisk.image.gz tmp cd tmp 去掉 mkimage 生成的 64 bytes 的檔案頭,生成新的 ramdisk.imag...