Ramdisk的制作并使用分四部分
一.核心編譯選項的設定
二.Busybox制作根檔案目錄
三.制作ramdisk
四.在uboot中下載下傳并使用ramdisk
一.核心編譯選項的設定
打開配置菜單,修改兩個配置項,分别是:
a):General setup-->選擇 Initial RAM filesystem and RAM disk...... 項
b):Device Drivers-->Block devices-->選擇 RAM block device support 項
注:如果需要,還得設定ramdisk大小。
二. Busybox制作根檔案目錄
a)建立根檔案系統目錄:
#cd轉入到你的工作目錄。
#mkdir rootfs
#cd rootfs
#mkdir bin dev etc lib proc sbin sys usr mnt tmp var
#mkdir usr/bin usr/lib usr/sbin lib/modules
b)建立最基本的裝置檔案:
#cd dev
#mknod -m 666 console c 5 1
#mknod -m 666 null c 1 3
c)安裝/etc配置檔案
從網上找的最小系統的etc配置檔案直接解壓到制作的根檔案系統裡
操作如下:
#tar etc.tar.gz -C /xxx/rootfs
xxx表示你要制作的rootfs所在的目錄
d)編譯busybox,并安裝到rootfs
關于busybox網上很多教程,也有已經編譯成功,适用于arm平台的,可以直接下載下傳使用。
Ps:編譯安裝的時候遇到問題是缺少某些頭檔案,從unicore的linux核心相關的目錄拷過來就好,遇到錯看log排查。
三.制作ramdisk
1、dd if=/dev/zero of=/dev/ram0 bs=1k count=4096
說明:if:從檔案讀取;of:輸出到檔案;bs:每次讀入讀出的比特數;
count:僅讀取指定的區塊數,4096=4M;
(把/dev/null看作"黑洞". 它非常等價于一個隻寫檔案. 所有寫入它的内容都會永遠丢失. 而嘗試從它那兒讀取内容則什麼也讀不到. 然而, /dev/null對指令行和腳本都非常的有用)
(像/dev/null一樣, /dev/zero也是一個僞檔案, 但它實際上産生連續不斷的null的流(二進制的零流,而不是ASCII型的). 寫入它的輸出會丢失不見, 而從/dev/zero讀出一連串的null也比較困難, 雖然這也能通過od或一個十六進制編輯器來做到. /dev/zero主要的用處是用來建立一個指定長度用于初始化的空檔案,就像臨時交換檔案.)
2.mke2fs -vm0 /dev/ram0 4096
說明:将RamDisk格式化成ext2檔案系統格式,大小為4M,-v 執行時顯示詳細資訊,-m<百分比值> 指定給管理者保留區塊的比例,預設為5%
3、mount /dev/ram0 /sdcard 說明:mount RamDisk,将根檔案系統拷貝到/home/bobo/haibo目錄下
4.将之前busybox做的東西拷到/sdcard這個檔案夾
5.umount /sdcard
6. gzip -c9 /dev/ram0 > ramdisk.gz (-c 将輸出寫到标準輸出上,并保留原有檔案 -9表示搞壓縮比)
五.在uboot中下載下傳并使用ramdisk
修改uboot啟動參數
set bootargs root=/dev/ram0 rw console=ttyS0,115200 initrd=0x41000000,0x800000 mem=216mb init=/init
(tftp或dnw)将ramdisk.gz下載下傳到0x41000000,uimage下載下傳到0x40008000
bootm 0x40008000
啟動隻有,一個最小系統就算完成了。你可以用這個最小系統,做自己想做的事情。