天天看點

ramdisk制作

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

啟動隻有,一個最小系統就算完成了。你可以用這個最小系統,做自己想做的事情。