实验四 ramdisk 根文件系统的制作
转载ramdisk.imgsystem.imguserdata.img介绍与解包、打包方法
ramdisk.img system.img userdata.img介绍及解包、打包方法2011-11-25 11:37:24
分类:
ramdisk.img system.img userdata.img介绍及解包、打包方法
Android 源码编译后,在out/target/product/generic下生成的三个镜像文件:ramdisk.img,system.img,userdata.img以及它们对应的目录树root,system,data。ramdisk.img是根文件系统,system.img包括了主要的包、库等文件,userdata.img包括了一些用户数据,android加载这3个映像文件后,会把system和userdata分别加载到ramdisk文件系统中的system和data目录下。
三个镜像文件及其三个目录树之间的生成关系是我们进行ROM制作的基础,下面将做详细介绍。Ramdisk镜像是采用cpio打包,gzip压缩的。用file验证:
# file ramdisk.img
输出: # ramdisk.img: gzip compressed data, from Unix
为了便于说明问题,我们将ramdisk.img拷贝到其它一个目录,然后按以下步骤将ramdisk.img还原为目录树:
# mv ramdisk.img ramdisk.img.gz
# gunzip ramdisk.img.gz
# mkdir ramdisk
#cd ramdisk
#mkdir temp
在硬盘上制作根文件系统.doc
在硬盘上制作根文件系统
一、实验目标:
在硬盘上建立一个根文件系统,硬盘镜像文件的名称为:hdc-0.11.new.img
二、实验环境:
1、Vmware workation, bochs虚拟机,ultraedit编辑环境
2、用到的四个重要的镜像文件:bootimage-0.11-hd,hdc-0.1.img,并将他们放到
mylinux0.11文件夹中。
3、实验环境:redhat linux
三、实验理论依据:
1、Linux引导启动时,默认使用的文件系统是根文件系统。其中一般都包括以下一些子目录和文件:
etc/ 目录主要含有一些系统配置文件;
dev/ 含有设备特殊文件,用于使用文件操作语句操作设备;
bin/ 存放系统执行程序。例如sh、mkfs、fdisk等;
usr/ 存放库函数、手册和其它一些文件;
usr/bin 存放用户常用的普通命令;
var/ 用于存放系统运行时可变的数据或者是日志等信息。
存放文件系统的设备就是文件系统设备。Linux 0.11内核所支持的文件系统是MINIX
1.0文件系统。
2、inode 译成中文就是索引节点。每个存储设备或存储设备的分区(存储设备是硬
盘、软盘、U盘... ... )被格式化为文件系统后,应该有两部份,一部份是inode,另一部份是Block,Block是用来存储数据用的。而inode呢,就是用来存储这些数据的信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。inode为每个文件进行信息索引,所以就有了inode的数值。操作系统根据指令,能通过inode 值最快的找到相对应的文件。每一个文件开头都是一个inode。
制作SD卡文件系统
制作SD卡⽂件系统
⼀:先说⼀下关于⽂件系统⽅⾯的东西
因为根⽂件系统主要负责启动运⾏的配置⽂件,所以linux在启动必须先挂载根⽂件系统。这样在启动后就可以⾃动或⼿动挂载其他⽂件系统。常见的⽂件系统类型:
存储设备⽂件系统类型
RAM DRAM proc,sysfs,ranfs
SDRAM
ROM
各种flash存
储器Spi flash Jffs,yaffs,cramfs,romfs,ubifs,ramdisk Nandflash
Norflash
SD卡mmc卡fat,ntfs,ext2/3/4
tf卡
eMMC(主流)fat,ntfs,ext2/3/4
说明:⽂件系统的类型是由驱动程序结合硬件特点选择⾼效,最优的⽅式决定;
根⽂件系统类型与⽂件系统类型不⼀样linux系统不⽀持fat和ntfs类型作为根⽂件系统
因此下⾯要说的SD卡和eMMC跟⽂件系统就是ext类型的
但是对SD卡和eMMC我们可以进⾏分区,每个分区可以有不同的⽂件系统,但是只能⽤ ext2/3/4作为根⽂件系统,其他的分区挂载在跟分区⽬录中。
⼆:SD卡⽂件系统制作---前提是SD卡⾥⾯已经烧写了u-boot和kernel
1、SD卡分区
1)、先将SD卡插⼊pc机,在linux内查看SD卡分区
2)、将SD卡插⼊开发板进⾏分区,并格式化
fdisk命令:
fdisk -p <device_num> - 显⽰指定设备的分区
fdisk -c <device_num> [<sys. part size(MB)> <user data part size> <cache part size>]
ramdisk根文件系统制作
制作ramdisk类型文件系统
ramdisk也就是内存盘的意思。
所谓的RAM驱动器,实际上是把系统内存划出一部分当作硬盘使用.对于操作系统来讲内存的存取速度远远大于机械磁盘,所以RAM驱动器肯定要比机械的硬盘快得多.你可以把整个应用程序都安装在ramdisk的驱动器中,然后用内存的速度运行它。使用RAM驱动器技术对于延长笔记本电脑电池使用时间也是十分有利的,因为这样做可以减少访问“耗电大户”--硬盘的次数。
Ram:内存,Disk:磁盘,在Linux中可以将一部分内存当作分区来使用,称之为Ramdisk。对于一些经常被访问、并且不会被更改的文件,可以将它们通过Ramdisk放在内存中,能够明显地提高系统性能。Ramdisk工作于虚拟文件系统(VFS)层,不能格式化,但可以创建多个Ramdisk。虽然现在硬盘价钱越来越便宜,但对于一些我们想让其访问速度很高的情况下,Ramdisk还是很好用的.
如果对计算速度要求很高,可以通过增加内存来实现,使用ramdisk技术。一个A Ramdisk就是把内存假设为一个硬盘驱动器,并且在它的上面存储文件。假设有几个文件要频繁的使用,如果将它们加到内存当中,程序运行速度会大幅度提高,因为内存的读写速度远高于硬盘。划出部分内存提高整体性能,不亚于更换新的CPU。像Web服务器这样的计算机,需要大量读取和交换特定的文件。因此,在Web服务器上建立Ramdisk会大大提高网络读取速度。
从制作Ramdisk 根文件系统的方法上来说,是很简单的.
1。配置Linux内核支持Ramdisk类型的文件系统。
RAMDisk使用教程图解
远不磨损的硬盘RAMDisk,也许有很多朋友不是很了解这种软件,不知道如何使用,那就看介绍吧.
近几年来,计算机的CPU、内存和显卡等主要配件的性能都提升得很快,而与之相对应的磁盘系统性能正越来越严重地成为整个电脑系统性能提升的瓶颈。虽然磁盘技术也从以前的ATA33发展到今天的ATA66/ ATA100/ATA133。但是,这还是不能彻底解决磁盘瓶颈的问题,特别是在运行一些对数据存取速度要求很高的程序,如数字影像处理或玩3D游戏装入纹理数据时,受磁盘存取速度的影响,屏幕画面时常会出现延迟和停顿。幸好,一种能在PC平台上应用的、名为“RAMDisk”(RAM驱动器)的技术应运而生,可解电脑玩家们的“燃眉之急”。
所谓的RAM驱动器,实际上是把系统内存划出一部分当作硬盘使用。对于操作系统来内存的存取速度远远大于机械磁盘,所以RAM驱动器肯定要比机械的硬盘快得多。你可以把整个应用程序都安装在RamDi sk的驱动器中,然后用内存的速度运行它。使用RAM驱动器技术对于延长笔记本电脑电池使用时间也是十分有利的,因为这样做可以减少访问“耗电大户”——硬盘的次数。
RamDisk内存盘的特性是把数据完全存储在内存中,所以一旦关闭计算机,就会导致内存盘中的数据完全丢失,这个特性使得内存盘特别适合于存储一些临时文件,如IE的缓存,Windows和应用程序运行时产生的临时文件,这些文件都适合放到内存盘上,从而减少硬盘上文件碎片的产生,并且不需要主动删除这些临时文件,一旦重新启动,这些垃圾文件就自动消失了。也正是这个特性,使得内存盘不适合存储重要的数据文档,因为一旦死机,这些东西就再也找不回来了。
busybox制作ramdisk全过程
Busybox Settings > General Configuration > [*] Support for devfs Build Options > [*] Build BusyBox as a static binary (no shared libs) /* 将busybox编译为静态连接,少了启动时找动态库的麻烦*/ [*] Do you want to build BusyBox with a Cross Compiler? (/usr/local/ arm/3.3.2/bin/armlinux) Cross Compiler prefix/* 指定交叉编译工具路径*/
Init Utilities > [*] init [*] Support reading an inittab file /* 支持init读取/etc/inittab配置文件,一定要选上*/
Shells > Choose your default shell (ash) > /* (X) ash 选中ash,这样生成的时候才会生成bi n/sh文件* 看看我们前头的linuxrc脚本的头一句:* #!/bin/sh 是由bin/sh来解释执行的*/ [*] ash
Coreutils > [*] cp [*] cat [*] ls [*] mkdir [*] echo (basic SuSv3 version taking no opt ions) [*] env [*] mv [*] pwd [*] rm [*]
ramdisk根文件系统制作
制作根文件系统有两种方法
1、利用开发板提供的映像文件制作ramdisk
2、利用busybox制作根文件系统(制作过程复杂)
采用第一种方法制作需要的ramdisk
1、拷贝已有的uramdisk.image.gz 到新建的tmp/下,cp uramdisk.image.gz tmp/
2、去掉mkimage生成的64 bytes 的文件头,生成新的ramdisk.image.gz
$ dd if=uramdisk.image.gz of=ramdisk.image.gz bs=64 skip=1
3、 gunzip解压ramdisk.image.gz 生成ramdisk.image
$ gunzip ramdisk.image.gz
4、新建挂载目录“ramdisk”,并将ramdisk.image挂载
$ sudo mount -o loop,rwramdisk.imageramdisk
5、接下来,只需要将ramdisk目录下的内容全部拷贝到rootfs下即可
cp -R ramdisk /* rootfs
这样就有了自己的rootfs,省去利用busybox制作的麻烦了
有了制作好的rootfs,下面就开始制作映像文件了
1、创建镜像文件ramdisk8M.image,并设置大小为8M,文件系统格式为ext2
$dd if=/dev/zero of=ramdisk8M.image bs=1024 count=8192
$mke2fs -F ramdisk8M.image -L "ramdisk" -b 1024 -m 0
一种基于strongSwan的IPSec VPN网关的实现
一种基于strongSwan的IPSec VPN网关的实现
蒋华;李康康;胡荣磊
【摘要】IPSec VPN是一种使用IPSec协议来实现的虚拟专用网技术.针对国密算法在网络安全产品上的应用相对较少这一问题,设计一种基于开源IPSec项目strongSwan的VPN网关.该网关使用SSX0912加密芯片中的国密算法接口替换了strongSwan的国际密码算法接口,完成了strongSwan对国密标准的支持.将修改后的strongSwan移植到AM335x为核心的开发板中,在嵌入式硬件环境中实现了IPSec VPN的网关.通过搭建开发环境测试,该网关运行稳定,延时小,使用硬件加密模块,安全性更高,相比于简单的Linux系统实现,应用范围也更加广泛.%IPSec VPN is a technology using IPSec protocol to implement virtual private network.Aiming at the problem that the application of secret algorithm in network security product is relatively small, a VPN gateway based on the open source IPSec project strongSwan is designed.The gateway replaces strongSwan's encryption algorithm interface with the SSX0912 encryption chip, which implements the strongSwan support for the state security standard.The modified strongSwan is transplanted to AM335x as the core of the development board in the embedded hardware environment to achieve the IPSec VPN gateway.By setting up the development environment, it is found that the gateway runs stably and has little pared with the simple Linux system, the hardware encryption module is more secure and the application range is more extensive.
RamDisk图文教程
RamDisk图文教程
创建内存虚拟硬盘:
1.点击action--add..然后会弹出添加向导
2.点击下一步,会出现下图,意思为输入虚拟硬盘的空间大小。(注:这个要根据个人的情况而异。按下ctrl+shift+esc 查看下图的内存可用空间(以32位为例)假如说你有
3.5GB的内存是被系统使用的,那么可以分出350MB-400MB的空间作为虚拟硬盘。假如你是64位的操作系统,拥有这个8GB的内存,那么你完全可以分给4GB的空间给虚拟硬盘)
3.选项内容是“删除或恢复时清空内存”,如果选中那么虚拟硬盘被删除或者是被恢复的时候,里面的内容将会被清空。这个默认即可,即不用勾选。
4.选择分区的驱动器号,这个随意,Ramdisk我选的R盘。为了远离以前那几个分区
5.选择用什么文件类型格式化该分区,当然选择NTFS,下面两个选项框分别是“创建临时文件夹”(这个我们手动创建即可,所以无关紧要,不选就可以了)和“压缩该分区以节省空间”(由于我们分了比较大的空间,而且也为了体现内存速度的极致。所以也不用选择)
6.这个选项卡的内容为“系统关闭时保存内容” 该选项卡如果勾选,系统关闭后内存的内容将会通过硬盘的镜像得以保存和恢复,但是缺点就是关闭系统的时候会多花费一些时间。这里推荐不勾选。因为我们只拿它做临时交换区。
7.下一步后点击完成即可,Ramdisk将会按照刚刚的指令和设置创建内存硬盘。稍等一下就可以看到虚拟硬盘了。
三、利用Ramdisk,加速系统:
(1) 将windows的临时文件转移到Ramdisk分区。
瑞泰DM365开发板实验全过程
Host # cd /opt/dm365/project/dm3xx_sd_boot-6 Host # make clean Host # make all Host # make install (若出现执行不成功, 可添加环境变量设置: Host # export PATH=$PATH:./bin.x86:/sbin ) 2) 对 Nand flash 烧写 上面执行成功后,将 SD 卡从主机拔出,插入开发板 SD0 口(开发板默认从 SD0 口 启动) RBL 是固化在 DM365 中 ROM 区的一小段加载程序,上电后复位 ARM 读取[Boot Mode]的设置,然后从相应的硬件媒体中加载并执行 arm ubl,如果没有找到相应的 UBL 则会在下一个媒体设备中继续寻找。 在开发板核心板的右上角,U7 为 BOOT MODE 选择开关,选择启动模式: 将 1、2、3 拨至 0,后面的 4、5、6 开关对应了 BTSEL[2:0]: BTSEL[2:0]= 000 :NAND 启动模式 BTSEL[2:0]= 001 :AEMIF 启动模式(Nor 或者 OneNand) BTSEL[2:0]= 010 :MMC0/SD0 启动模式 BTSEL[2:0]= 011 :UART0 启动模式 BTSEL[2:0]= 100 :USB 启动模式 BTSEL[2:0]= 101 :SPI 0 启动模式 BTSEL[2:0]= 110 :EMAC 启动模式 BTSEL[2:0]= 111 :HPI 启动模式 先将 4、5、6 拨至 010 ,选择 SD 卡 boot 模式 打开 Windows 主机超级终端 “泰瑞 DM365” , 连接串口线 (串口线接开发板 URAT0) 、 5V 电源线 超级终端会出现类似如下打印信息:
=4uImage[initramfs initrd]制作流程
uImage文件制作过程
1.依据arch/arm/kernel/vmlinux.lds 生成linux内核源码根目录下的vmlinux,这个vmlinux属于未压缩,
带调试信息、符号表的最初的内核,大小约23MB;
arm-linux-gnu-ld -EL -p --no-undefined -X -o vmlinux -T arch/arm/kernel/vmlinux.lds
arch/arm/kernel/head.o
arch/arm/kernel/init_task.o
init/built-in.o
--start-group
usr/built-in.o
arch/arm/kernel/built-in.o
arch/arm/mm/built-in.o
arch/arm/common/built-in.o
arch/arm/mach-s3c2410/built-in.o
arch/arm/nwfpe/built-in.o
kernel/built-in.o
mm/built-in.o
fs/built-in.o
ipc/built-in.o
security/built-in.o
crypto/built-in.o
lib/lib.a
arch/arm/lib/lib.a
lib/built-in.o
arch/arm/lib/built-in.o
drivers/built-in.o
sound/built-in.o
net/built-in.o
--end-group .tmp_kallsyms2.o
2. 将上面的vmlinux去除调试信息、注释、符号表等内容,生成arch/arm/boot/Image,这是不带多余信息
linux ramdisk 原理
linux ramdisk 原理
Linux RAMDISK,也叫做内存磁盘,是一种将内存作为虚拟硬盘的
技术。它将内存的一部分空间用作块设备,以便用于存储和访问文件
系统。在本文中,我们将详细介绍Linux RAMDISK的工作原理和优点。
Linux RAMDISK的工作原理是通过将一块连续的物理内存区域映射到一个块设备上来实现的。这个映射关系允许操作系统和用户程序像
使用传统磁盘一样使用内存空间。当文件系统在RAMDISK上创建文件
或读取文件时,数据将直接存储在内存中,而不是从磁盘读取或写入。
首先,内核启动时,它会为RAMDISK分配一段连续的物理内存。
这段内存被标记为不可交换(non-swappable),这意味着它不会被移
入或移出交换分区。
然后,在操作系统初始化过程中,RAMDISK设备将会被创建,并与刚刚分配的内存绑定。这个设备将显示为一个块设备(类似于硬盘),并具有一个设备文件(例如/dev/ram0)。
接下来,用户可以使用工具例如mkfs、mount等来在RAMDISK上
创建文件系统,并将其挂载到一个挂载点上。文件系统可以是任何
Linux支持的类型,如ext4、XFS等。
一旦文件系统被挂载,RAMDISK就可以像普通磁盘一样进行读写操作。当用户向RAMDISK写入文件时,数据将直接写入到分配的内存区
域中。当用户从RAMDISK读取文件时,数据将直接从内存中读取。这
种无需访问物理磁盘的直接存取方式使得RAMDISK具有非常低的读写
延迟和高的速度。
由于RAMDISK是基于内存的,因此它具有许多优点。首先,由于
制作ramdisk
●建立新的ramdisk盘
在PC上以超级用户的身份键入以下命令:
1.mkdir /mnt/loop
该命令建立了loop设备的临时挂接点;
2.dd if=/dev/zero of=/tmp/loop_tmp bs=1k count=10240
该命令建立了一个大小为10M的临时文件;
北京恒颐高科技术有限公司 (86-10)62121051 31 恒颐高科注意可以根据自己的需要建立大小合适的文件系统,改变count=大小。
3./sbin/losetup /dev/loop0 /tmp/loop_tmp
将设备与临时文件联系起来。如果出现“ioctl: LOOP_SET_FD: 设备或资源忙”的提示,说明设备还和一文件联系,可以用/sbin/losetup /dev/loop0来看,并可用-d来删除;
4./sbin/mke2fs –m 0 /dev/loop0
将loop0格式化为ext2文件系统;
注意可以改变文件系统的格式,推荐使用ext2;
5.mount /dev/loop0 /mnt/loop –t ext2
把虚拟盘挂在节点/mnt/loop上;
6.用cp –af 命令将所需文件拷到虚拟盘上
一般要拷贝/bin,/sbin,/usr,/dev,/etc等;
7.umount /mnt/loop,卸载此文件系统,得到的/tmp/loop_tmp就是ramdisk 8.gzip - v9 /tmp/loop_tmp,这样一个内存映像文件就生成了
●如何建立ramdisk相应的目录
1.可以在网上找一个ramdisk,然后拷贝相应的目录。如果从零做起,则/bin /sbin
14-ramdisk文件系统
ARM系统与实践
14. ARM Linux ramdisk根文件系统
一. RamDisk
嵌入式系统一般无硬盘,这就要把系统内存划出一部分当作硬盘使用来保存数据。
嵌入式系统一般采用NOR型或NAND型的Flash保存代码和数据。
由于这两种Flash的结构不一样,在其上构建的RamDisk 操作方式自然也不一样,但是其构建的文件系统是一样的——RamDisk文件系统。
在系统中构建一个RamDisk系统:
mkdir /tmp/ramdisk0
mke2fs /dev/ram0 或mkfs -t ext2 /dev/ram0
mount /dev/ram0 /tmp/ramdisk0系统重启后?
但是,当系统启动时,还没有形成构建RamDisk的环
境,又如何来构建呢?
Linux的initrd机制:
initrd = boot loader initialized RAM disk
就是由bootloader初始化的内存盘。
在Linux内核启动前,bootloader会将Flash中的initrd文件加载到内存,内核启动时会在访问真正的根文件系统前先访问该内存中的initrd文件系统:
①加载根文件系统存储介质的驱动模块;
②执行真正的根文件系统中的/sbin/init进程。
Linux2.4内核对Initrd的处理流程
Linux2.4内核的initrd格式是文件系统镜像文件,处理流程如下:
1.bootloader把内核以及/dev/initrd的内容加载到内存,/dev/initrd是由bootloader初始化的设备,存储着initrd。
实验03 制作根文件系统
9、使用硬盘Image上根文件系统
复制bootimage-0.12和bochsrc.bxrc文件,产生 bootimage-0.12-hd和bochsrc-hd.bxrc 编辑bochsrc-hd.bxrc中floppya为bootimage0.12-hd 用Ultraedit编辑bootimage-0.12-hd二进制文件, 修改第509、510字节(即0x1fc/0x1fd,其值为 00/00)为01/03,表示根文件系统在硬盘的第1个分 区上。 运行bochsrc-hd.bxrc,即可进入Linux 0.12系统中。
8、根文件系统
Linux0.12内核所支持的文件系统是 MINIX1.0文件系统。 启动盘上引导扇区509、510字节处一个字 (ROOT_DEV)中根文件系统设备号从指定的设 备中加载根文件系统。
0表示从引导盘所在当前驱动器中加载根文件系统 1表示从不同设备中加载根文件系统
实验名称
制作根文件系统
1、创建磁盘映像文件
磁盘映像文件:软件或硬盘上信息的一个完整映 像,并以文件的形式保存。 通常扇区长度为512字节。 硬盘总扇区数=物理磁道数*物理磁头数*每磁道 扇区数 MINIX1.5文件系统最大容量为64MB,因此每 个硬盘分区最大为64MB,每个硬盘最多4个分 区。
使用Blob下载烧写内核和文件系统和内核配置实验指导书
使用Blob下载烧写内核和文件系统
一.实验目的
掌握使用blob通过串口下载内核和文件系统的方法。
掌握使用blob烧写内核和文件系统的方法。
二.实验内容
使用Blob通过串口下载内核和文件系统,并烧写到flash。
三.实验设备及工具
硬件:EFLAG-NVCDP-I嵌入式实验开发系统, 安装windows的PC主机。
软件:EFLAG-NVCDP-I cygwin开发环境, 超级终端, tftpd32, UUDeview。
四.实验原理
blob实现了boot loader的基本功能,上电后硬件的初始化和操作系统的引导。在此基础上还提供了简单的命令行,执行用户输入的命令。Blob下经常使用的命令有:
1.download命令
说明:从串口下载内核或文件系统。
命令格式:download [kernel|ramdisk]
可选参数:kernel下载内核;ramdisk下载文件系统。
2.tftp命令
说明:通过tftp简单文件传输协议下载内核或文件系统。
命令格式:tftp [kernel|ramdisk] [文件名]
可选参数:kernel下载内核;ramdisk下载文件系统。
3.flash命令
说明:将下载的内核或文件系统写入flash。
命令格式:flash [kernel|ramdisk]
可选参数:kernel 烧写内核;ramdisk烧写文件系统。
4.sip命令
说明:设置tftp服务器的ip地址(通常tftp服务器是一台PC主机)。
命令格式:sip [ip]
可选参数:ip地址的格式是: 0xxxxxxxxx(其中xx是16进制值)。假设tftp服务器的ip地址是192.168.0.1,那么应该这样设置:0x0100a8c0。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四ramdisk根文件系统的制作
一.实验目的
1.熟悉根文件系统组织结构;
2.定制、编译ramdisk根文件系统。
二.实验设备
1.硬件:EduKit-IV 嵌入式教学实验平台、Mini2410 核心子板、PC 机;
2.软件:Windows 2000/NT/XP、Ubuntu 8.04、其他嵌入式软件包。
三.实验内容
利用6.3 中的已经完成的文件系统,生成一个根文件系统镜像。
四.实验原理
ramdisk是内核初始化的时候用到的一个临时文件系统,是一个最小的linuxrootfs系统,它包含了除内核以外的所有linux系统在引导和管理时需要的工具,做为启动引导驱动,包含如下目录:
bin,dev,etc,home,lib,mnt,proc,sbin,usr,var。还需要有一些基本的工具:sh,ls,cp,mv……(位于/bin 目录中);必要的配置文件:inittab,rc,fstab……位于(/etc目录种);必要的设备文件:/dev/tty*,/dev/console,/dev/men……(位于/dev目录中);sh,ls等工具必要的运行库:glibc。1.制作ramdisk根文件系统映像
1)单击菜单应用程序->附件->终端打开终端,设置环境变量:
$ source /usr/local/src/EduKit-IV/Mini2410/set_env_linux.sh
$ source /usr/crosstool/gcc-3.4.5-glibc-2.3.6/arm-linux/path.sh
2)执行命令切换到ramdisk实验目录下:
$cd $SIMPLEDIR/6.4-ramdisk
3)运行脚本文件:
$ sudosh ramdisk-install.sh
shell 脚本命令说明:
#!/bin/bash
#
# ramdisk-install.sh - Make ramdiskfilesystem.
#
# Copyright (C) 2002-2007 <>
# Created. lusi
sudodd if=/dev/zero of=ramdiskbs=1M count=2
......
sudogzip -v9 ramdisk
sudochmod 777 ramdisk.gz
sudormdir temp
sudocp -av ramdisk.gz /home/example
创建一个空的ramdisk镜像:
sudodd if=/dev/zero of=ramdiskbs=1M count=2
用dd命令建立了一个名为ramdisk的ramdisk基本文件;ramdisk image 文件名为ramdisk,
大小为2M。
格式化文件系统:
sudo echo "y" | sudo mke2fs -m 0 -N 3500 ramdisk
挂载文件系统:
sudomkdir -p temp
sudo mount -o loop ramdisk temp
拷贝 6.3 节中已经创建好的文件结构到temp 文件夹:
sudocp -av root-mini/* temp/
卸载;
sudoumount temp
生成压缩文件;
sudogzip -v9 ramdisk
修改root-mini.gz 的执行权限;
sudochmod 777 ramdisk.gz
删除临时文件夹ramdisk,拷贝生成的ramdisk根文件系统映像到home/example 目录。
sudormdir temp
sudocp -av ramdisk.gz /home/example
2.固化引导ramdisk文件系统
用户可以根据前面章节内容(章节4.6.1)更新刚制作生成的ramdisk.gz 到Mini2410-IV 的NandFlash中,或者在Ubuntu 下采用minicom终端更新。使用minicom固化ramdisk文件系统映像的方法跟前节固化vivi映像的步骤相似,启动vivi后,输入命令使用xmodem协议来传送新制作好的ramdisk文件系统映像ramdisk.gz(/home/example/ramdisk.gz):
vivi> load flash ramdisk x
后面的步骤参考前节vivi的传送,仅需要把需要传送的文件名替换为mdisk.gz
即可,传送完毕minicom串口终端打印信息如下:
图6-4-1 ramdisk映像传送完毕
重启实验系统,并按空格进入到vivi的命令行界面,输入命令修改vivi启动参数为引导ramdisk根文件系统启动:
vivi>param set ramdisk_copy 1
vivi>param set linux_cmd_line "initrd=0x30800000,0x200000 root=/dev/ram
console=ttySAC1"
vivi>param save
重新启动实验系统,将可以在minicom终端看到ramdisk文件系统的完成信息:VIVI version 0.1.4 (embest@ embest -laptop) (gcc version 2.95.3 20010315 (release)) #TMMU table base address = 0x33DFC000
Succeed memory mapping.
NAND device: Manufacture ID: 0xec, Chip ID: 0x76 (Samsung K9D1208V0M)
Could not found stored vivi parameters. Use default vivi parameters.
Press Return to start the LINUX now, any other key for vivi
Copy linux kernel from 0x00030000 to 0x30008000, size = 0x001d0000 ... size = 14
done
zImage magic = 0x016f2818
Copy ramdisk from 0x00200000 to 0x30800000, size = 0x00200000 ... size = 2097152
done
Setup linux parameters at 0x30000100
linux command line is: "initrd=0x30800000,0x200000 root=/dev/ram console=ttySAC"
MACH_TYPE = 193
NOW, Booting Linux......
Uncompressing Linux.............................................................
……
Bluetooth: Core ver 2.7
NET: Registered protocol family 31
Bluetooth: HCI device and connection manager initialized