达芬奇-创建文件系统(ramdisk) WWW_PLC※JS_COM-PmLC-技.术_网
WW.W_PLCJS_COM-PLC-技.术_网
声明:一切为了共同进步 P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
WWcW_PLCJS_COM-PLC-技.术_网
作者:耿磊 WW.W_PLCJS_COM-PLC-技.术_网
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
一个初始化好的RAM disk 依赖于bootloader(u-boot)在启动时把它从非易失性存储器(如NOR flash)下载到易失性存储器中(如DDR)。在RAM disk中的文件系统是一个初始化的RAM 文件系统,或者initrd。这个文件系统可以挂载为跟文件系统并且应用程序可以从它这里执行。这就是内核本地存储。由于它存储在易失性存储器中,所以会在断电后丢失。对大多数的嵌入式系统来说,这个是运行环境。如果必须存储一些运行时的参数就需要NOR flash文件系统。 WWW_PLC※JS_COM-PmLC-技.术_网
WWW_PLCJS@_COM%-PLC-技.术_网
为了节省时间,可以使用DVEVM提供的RAM disk。它/opt/mv_pro_4.0/montavista/pro/devkit/arm/v5t_le/images下。在这里,RAM disk文件是ramdisk.gz(大约2.1MB)。运行时,占用DDR大约6.3MB。这个文件系统包含了一些不需要的工具,但是适合做一个典型的嵌入式系统。应该如何使用RAM Disk呢? WWW.PLCJS.COM——可编程控制器技术门户
WWW.PLCJS.COM——可编程控制器技术门户
1. 先把这个RAM disk复制到一个暂存位置。 WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
在mnt下建立文件夹:mkdir /mnt/def_cd,然后复制 WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
WWW.PLCJS.COM——可编程控制器技术门户
Cp /opt/mv_pro_4.0/montavista/pro/devkit/arm/v5t_le/image/ramdisk.gz /mnt/def_cd WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
2. 解压文件:gzip –d /mnt/def_cd /ramdisk.gz ——可——编——程——控-制-器-技——术——门——户
WWW_P※LCJS_CO※M-PLC-技-.术_网
3. 创建挂接点并挂接 ——可——编——程——控-制-器-技——术——门——户
mkdir –p /mnt/def_cd/ram0 WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
mount –o loop /mnt/def_cd/ramdisk /mnt/def_cd/ram0 WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
WWcW_PLCJS_COM-PLC-技.术_网
4. 查看挂接后的文件 WWW.PLCJS.COM——可编程控制器技术门户
cd /mnt/def_cd/ram0 ——可——编——程——控-制-器-技——术——门——户
ls P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
WWW_PL※CJS_COM-PLC-技.术_网
5. 把可执行文件放到文件系统中来。 WWW_PLC※JS_COM-PmLC-技.术_网
假设要运行的程序是thttpd,那么先创建一个demo文件夹,并把thttpd复制到该文件夹中。 WWW_P※LCJS_CO※M-PLC-技-.术_网
mkdir /mnt/def_cd/ram0/opt/demo WWW.PLCJS.COM——可编程控制器技术门户
cp thttpd /mnt/def_cd/ram0/opt/demo WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
WWW_P※LCJS_CO※M-PLC-技-.术_网
6. Write the index.html and cgi scripts and copy these files to the initial RAM disk file system. Edit a filecalled startweb.sh and add the following script to start the web server:写一个startweb.sh文件来启动应用程序。 WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
#!/bin/sh P.L.C.技.术.网——可编程控制器技术门户
WW.W_PLC※JS_C,OM-PL,C-技.术_网
# script to start web sever WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)
WWW_PLCJS_COM-PLC-技.术_网
# script to start web sever WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)
plcjs.技.术_网
echo "Start web service..." P.L.C.技.术.网——可编程控制器技术门户
WWW_PLCJS@_COM%-PLC-技.术_网
/opt/dvevm/web/thttpd -d /opt/dvevm/web -c "/cgi-bin/*" WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
WWW.PLCJS.COM——可编程控制器技术门户
7. 把这个script复制到RAM disk的/et/init.d文件夹中作为启动的一项。 WWW_P※LCJS_COM-PLC-)技.术_网
P.L.C.技.术.网——可编程控制器技术门户
host $ cp startweb.sh /mnt/def_cd/ram0/etc/init.d WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
host $ chmod +x /mnt/def_cd/ram0/etc/init.d/startweb.sh WW.W_PLC※JS_C,OM-PL,C-技.术_网
WWcW_PLCJS_COM-PLC-技.术_网
host $ cd /mnt/def_cd/ram0/etc/rc.d/rcS.d WWcW_PLCJS_COM-PLC-技.术_网
WWcW_PLCJS_COM-PLC-技.术_网
host $ ln –s ../init.d/startweb.sh S42startweb WWW_PLCJS@_COM%-PLC-技.术_网
WW.W_PLCJS_COM-PLC-技.术_网
8. 重新压缩文件系统,作为烧写之用。 plcjs.技.术_网
WW.W_PLCJS_COM-PLC-技.术_网
host $ cd /mnt/def_cd WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
host $ umount /mnt/def_cd/ram0 P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户
WWW_PLC※JS_COM-PmLC-技.术_网
host $ gzip ramdisk WWcW_PLCJS_COM-PLC-技.术_网
W1WW_P4LCJS_COM-PLC-技.术_网
host $ cp ramdisk.gz /tftpboot WWW_PLC※JS_COM-PmLC-技.术_网
WWW_P※LCJS_CO※M-PLC-技-.术_网
plcjs.技.术_网
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)
如果umount时显示device is busy,可以采取以下办法: WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)
WW.W_PLC※JS_C,OM-PL,C-技.术_网
l Fuser –m /mnt/rdmnt,找出那个进程还使用当前文件夹(比如2040) WWW_PLC※JS_COM-PmLC-技.术_网
WWW_PLCJS_COM-PLC-技.术_网
l ps aux 显示所有线程 WW.W_PLC※JS_C,OM-PL,C-技.术_网
WWW_PL※CJS_COM-PLC-技.术_网
kill 2040