ramdisk根文件系统制作

合集下载

转载ramdisk.imgsystem.imguserdata.img介绍与解包、打包方法

转载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#cd temp# cpio –i –F ../ramdisk.img这样,就得到一个完整的ramdisk目录,与out/target/product/generic/root对比后,我们发现它们是一样的内容。

通过执行以下的操作,我们可由目录树再生成ramdisk镜像# cd temp# find . | cpio -o -H newc | gzip > ../ramdisk-new.img 这两个镜像都属于yaffs2文件格式,生成方式是一样的。

Linux内核Ramdisk(initrd)机制

Linux内核Ramdisk(initrd)机制

摘要:对于Linux用户来说,Ramdisk并不陌生,可是为什么需要它呢?本文对Ramdisk在内核启动过程中的作用,以及它的内部机制进行深入介绍。

标题initrd 和initramfs在内核中的处理临时的根目录rootfs的挂载initrd的解压缩老式的initrd的处理cpio格式的initrd的处理initrd实例分析:在早期的Linux系统中,一般就只有软盘或者硬盘被用来作为Linux的根文件系统,因此很容易把这些设备的驱动程序集成到内核中。

但是现在根文件系统可能保存在各种存储设备上,包括SCSI, SATA, U盘等等。

因此把这些设备驱动程序全部编译到内核中显得不太方便。

在Linux内核模块自动加载机制的介绍中,我们看到利用udevd可以实现实现内核模块的自动加载,因此我们希望根文件系统的设备驱动程序也能够实现自动加载。

但是这里有一个矛盾,udevd是一个可执行文件,在根文件系统被挂载前,是不可能执行udevd 的,但是如果udevd没有启动,那就无法自动加载根根据系统设备的驱动程序,同时也无法在/dev目录下建立相应的设备节点。

为了解决这个矛盾,于是出现了initrd(boot loader initialized RAM disk)。

initrd是一个被压缩过的小型根目录,这个目录中包含了启动阶段中必须的驱动模块,可执行文件和启动脚本。

包括上面提到的udevd,当系统启动的时候,booload会把initrd 文件读到内存中,然后把initrd的起始地址告诉内核。

内核在运行过程中会解压initrd,然后把initrd挂载为根目录,然后执行根目录中的/initrc脚本,您可以在这个脚本中运行initrd中的udevd,让它来自动加载设备驱动程序以及在/dev目录下建立必要的设备节点。

在udevd自动加载磁盘驱动程序之后,就可以mount真正的根目录,并切换到这个根目录中。

您可以通过下面的方法来制作一个initrd文件。

制作ramdisk文件系统

制作ramdisk文件系统

制作ramdisk文件系统制作一个最基本的文件系统(这里采用busybox1.1.0:准备:Busybox1.1.0源码;交叉编译工具链gcc-3.4.6;Linux2.6源码包;下面开始制作:一:建立交叉编译环境,将gcc-3.4.6解压到/opt下二:解压busybox-1.1.0.tar.bz2:busybox-1.1.0.tar.bz2jxf#tar三:进入解压后的目录busybox-1.1.0,开始进行busybox的编译配置:1.运行#make menuconfig后,选择Build Options2.选上选项:”Do you want to build BusyBox with a cross compiler?”(让它采用交叉编译工具链进行编译)选择要使用的工具链的路径:(./_install)BusyBox installation prefix:指定生成的文件的路径.4.再在其它的选项里选择好你要编译入文件系统的命令,保存退出!5.编译:#make clean allinstall#make这样,就在/busybox-1.1.0/_install下生成了bin,sbin,linuxrc四.开始制作文件系统:建立文件夹:mkdir bin dev home proc sbin tmp var boot etc lib mnt root sys usr etc/init.d u sr/etc___________________________________________________________mknod -m 600 dev/console c 5 1mknod -m 666 dev/null c 1 3___________________________________________________________vi etc/profile#!/bin/sh#/etc/profile:system-wide .profile file for the Bourne shellsechoecho -n "Processing /etc/profile......"# Set search library pathexport LD_LIBRARY_PATH=/lib:/usr/lib# set user pathexport PATH=/bin:/sbin:/usr/bin:/usr/sbin#Set PS1USER = "`id -un`"LOGNAME=$USERPS1='[\u@\h\W]\$'PATH=$PATHecho "Done!"___________________________________________________vi etc/init.d/rcS#!/bin/sh# set hostname, needed host file in /etc directory#./etc/hosthostname `cat /etc/host`# mount all filesystem defined in "fstab"echo "#mount all......."/bin/mount -a#+yangdk/bin/chmod 0666 /dev/nullecho "# starting mdev...."/bin/echo /sbin/mdev > /proc/sys/kernel/hotplug mdev -s/usr/etc/initecho "******************************************" echo " Guoguifu linux-2.6.24.4 boot " echo " 2008-12-15 "echo " grandchips "echo "******************************************" ______________________________________________vi etc/fstabproc /proc proc defaults 0 0none /tmp ramfs defaults 0 0none /var ramfs defaults 0 0mdev /dev ramfs defaults 0 0sysfs /sys sysfs defaults 0 0________________________________________________vi etc/inittab::sysinit:/etc/init.d/rcS::respawn:-/bin/shtty2::askfirst:-/bin/sh::ctrlaltdel:/bin/umount -a -r::shutdown:/bin umount -a -r::shutdown:/sbin/swapoff -a_________________________________________________ vi usr/etc/init#!/bin/shifconfig eth0 192.168.3.111 upifconfig lo 127.0.0.1_________________________________________________ vi mdev.conf (空的)_________________________________________________将下列几个必须库从工具链gcc-3.4.6的目录:gcc-3.4.6/mipsel-linux/lib拷贝到lib目录.ld.so.1, ld.-2.3.6.so, libcrypt.so.1, libc.so.6, libdl.so.2, libgcc_s.so.1, , libm.so.6, libpthread.so.o, libstdc++.so.6cp /opt/gcc-3.4.6/mipsel-linux/lib/库 lib/至此,文件系统制作完成!!五.将制作好的文件系统ramdisk放到linux2.6源码包的目录:linux26_3210/arch/mips/下,再回到linux26_3210根目录下进行内核配置,让内核采用ramdisk文件系统:1.进入:Device Driver->Block devices,选上”RAM disk support”选项,并在下面的三个ramdisk大小等参数进行配置,如下图所示:2.进入General setup,在”initramfs source file” 里输入ramdisk的路径:arch/mips/ramdisk,如下图所示:保存退出,完成内核配置!编译linux后,这个linux内核就选择ramdisk文件系统启动了,启动后可以看到刚做的简单文件系统在板上跑☺。

制作ramfs文件系统

制作ramfs文件系统

制作ramfs文件系统
1)准备
要有一个已经可以使用的文件系统,假设目录为/rootfs
Linux内核需要支持ext2文件系统及ramdisk支持(fs相应的选项要勾上)
2)在pc上制作ramdisk镜像
(1)dd if=/dev/zero of=ramdisk.img bs=1k count=4096 这样制作的镜像有4MB,可以根据自己的需要修改
(2)mkfs.ext2 -m0 ramdisk.img
将ramdisk.img格式化为ext2格式
(3)mount -o loop ramdisk.img /mnt/ramdisk/
将ramdisk.img挂载到/mnt/ramdisk目录
(4)cp -a /rootfs /mnt/ramdisk
将自己的文件系统全部拷贝到/mnt/ramdisk目录去
(5)umount /mnt/ramdisk
卸载ramdisk挂载
此时生成可用的ramdisk.img镜像
(6)gzip -v9 ramdisk.img
压缩镜像,我没试过加载压缩的镜像,应该也可以
3)修改开发板bootargs,添加 initrd=0x31000000,4096000 这里0x3100000是ramfs文件系统的加载地址,4096000是大小
重启开发板,应该正常加载ramfs文件系统。

虚拟内存盘Ramdisk制作过程

虚拟内存盘Ramdisk制作过程

在Linux系统下制作RamDisk简介RamDisk就是将内存(Ram)的一部分当做硬盘(Disk)来使用。

RamDisk有固定的大小,可以像正常硬盘分区那样去使用。

就操作时间来讲,RamDisk比真实的物理硬盘快很多,当系统关闭或断电时,保存在RamDisk中的数据会全部丢失。

RamDisk可以成为一个存放临时数据的好地方。

1.查看系统已创建RamDiskRedHat默认创建16个RamDisk,虽然它们没有激活或使用任何Ram。

系统列出的设备是你可以看到,RamDisk默认只有16MB。

我想要一个16MB的RamDisk,所以,下一步要配置Linux,使得在启动过程中使用一个更大的RamDisk o2.修改RamDisk的大小RamDisk的大小是被一个命令行选项控制的,这个选项会在系统启动时传给内核。

由于RedHat9的默认bootloader是GRUB,我将用新的选项修改/etc/grub.conf, RamDisk大小的内核选项是:ramdisk_size=xxxxx , xxxxx是指大小为1024-Byte的块的个数。

下面是我要3.格式化RamDisk无需将RamDisk格式化为日志文件系统,我们将使用EXT2文件系统。

我只想使用一个RamDisk,所以我只格式化ram0。

4.新建一个挂载点并挂载RamDisk你已经格式化了RamDisk,现在要为它新建一个挂载点。

然后就可以挂载你的RamDisk并使用它。

我们将会使用/mnt/rd文件夹。

检测新挂载的RamDisk5.使用RamDiskRamDisk已经创建成功,现在,你可以像在物理硬盘分区那样,在RamDisk上复制、移动、删除、编辑或列出文件。

你的主机关闭后,所有在RamDisk上创建的文件都会消失。

用下面的命令可以轻易的卸载RamDisk:Note:如果你卸载了RamDisk,你的数据依然会保存在那里。

一旦内存被分配给了RamDisk,它就会被标记,之后内核就不会试图重用这块内存。

转载ramdisk.img system.img userdata.img介绍及解包、打包方法

转载ramdisk.img system.img userdata.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#cd temp# cpio –i –F ../ramdisk.img这样,就得到一个完整的ramdisk目录,与out/target/product/generic/root对比后,我们发现它们是一样的内容。

通过执行以下的操作,我们可由目录树再生成ramdisk镜像# cd temp# find . | cpio -o -H newc | gzip > ../ramdisk-new.img 这两个镜像都属于yaffs2文件格式,生成方式是一样的。

ramdisk根文件系统制作

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类型的文件系统。

2.制作好根文件系统,使用之前实验案例制作好的根文件系统。

3.将制作好的根文件系统制作成Ramdisk类型文件系统。

4.下载到TPAD上使用测试。

实现1 .对内核进行配置,使得内核能够支持Ramdisk类型的文件系统,如图・9 ,图・10 ,图•11。

$ cd /home/tarena/workdir/tools/linux-2.6.35.7$ make menuconfig$ make zlmage$ cp arch/arm/boot/zlmage /tftpboot图・9S-10config • Linux Kernel V2.6.35.7 ConfigurationArrow keys navigate the nenu. <Enter> selects submenus Highlighted letters are hotkeys. Pressing <Y> includes9 <N> excludes, <M> nodulartzes features. Press <Esc><Esc> to exit, <?> for Help.</> for Search. Legend: [w] built-in [ ] excluded <M> module < ><w> M nory Technology Device <HTD) support <xarelLeL uoiLt s|[w] BLock devicesI■j HI>c uevxce><> ATA/ATAPI/MFM/RLL support (DEPRECATED)CSI device support -•<> serial ATA and Parallel ,] M IttpXe devices driver ♦] N twork device support]ISDN support > ATA drivers —> support (RAID and LVM)Select Exit > < Help >图・11config - Ltn ConArrow keys navigate the nenu. <Enter> selects subnenus --->• Highlighted letters are hotkeys.Pressing <Y> includes f <N> excludes, <M> nodulartzes features. Press <Esc><Esc> to exit. <?> for Help. <f> for Search. Legend: [*] built-in [ ] excluded <M> module < >•・・ DRBD disabled because PROOFS f INET or CONNECTOR not se < > N twork block device support<*^^^A^DiocKaevlcesup^rt (16) default number of RAM disks2.制作Ramdisk文件系统的过程,如图・12 ,图・13 ,图・14 ,图・15 ,图・16所$ cd /home/tarena/workdir/tools/busybox-1.19.4/_lnstall/dev$ sudo mknod console c 5 1$ sudo mknod null c 1 3$ cd /home/tarena/workdir/tools/busybox-1.19.4$ dd if=/dev/zero of=initrd.img bs=lk count=8192$ sudo mkfs.ext2 -F initrd.img$ sudo mkdir /mnt/initrd$ sudo mount -t ext2 -o loop initrd.img /mnt/initrd$ sudo cp Jnstall/* /mnt/initrd -a$ sudo amount /mnt/initrd$ gzip -best -c initrd.img > ramdisk.img$ sudo chmod 777 ramdisk.img$ cp ramdisk.img /tftpboot图・12consoke^tQQls libbb ______ util^ltnux记県丫8192♦。

如何把系统或程序临时文件缓存文件夹设置到RamDisk

如何把系统或程序临时文件缓存文件夹设置到RamDisk

如何把系统或程序临时文件/缓存文件夹设置到RamDisk使用QSoft RamDisk和RamDisk Plus可以轻松创建闪存盘RamDisk,但创建了RamDisk之后,你还必须将系统和一些程序的临时文件/缓存文件夹路径改为RamDisk下。

以下是详细的设置教程:1.系统缓存文件夹的迁移要通过RamDisk获得更佳的系统性能,那就要改变系统原本的缓存路径,将系统的缓存文件都保存至RamDisk,这样平时系统对临时文件的读取,就直接从RamDisk下读取,这样读取速度更快,系统性能能够有不少提高。

详细设置:Step 1 -右键单击“计算机”-选择“高级系统设置”-“高级”-“环境变量”;Step 2 -修改Tmp和Temp的路径到Ramdisk下,共有四处要修改,把下图的J改为你的RamDisk盘符即可。

当心日后出现问题,需要恢复环境变量的朋友,最好记录一下原来的Tmp和Temp的路径,以便还原;Step 3 -最后确定即可。

如果你的RamDisk不够大,不建议修改系统的环境变量。

2.修改浏览器的Internet 临时文件夹路径修改浏览器的Internet 临时文件夹路径,可以提高浏览器对临时文件的读取,修改后你会觉得浏览器的运行速度明显提高。

但不同的浏览器,修改方法各不相同,下面就分别对IE、FireFox和Chrome的临时文件夹路径修改分别说明:1)IE的Internet 临时文件夹路径更改(以IE 9为例)打开IE 9,点击右上角的“工具”按钮,进入“Internet选项”-“常规”-浏览器历史记录“设置”-点击“移动文件夹”,然后将路径改为到RamDisk下即可。

2)设置它Firefox的临时文件夹目录相对IE,火狐的临时文件夹目录更改相对会麻烦些。

具体修改步骤如下:Step 1 -运行Firefox,在地址栏输入about:config,提示警告继续即可,进入Firefox的配置页面;Step 2 -右键点击Firefox配置界面新建字符串;Step 3 -输入browser.cache.disk.parent_directory,点击确定,然后输入字符串的值J:\\TEMP,把J 换成你的RamDisk盘符即可。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

制作根文件系统有两种方法
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
$tune2fs ramdisk8M.image -i 0
$chmod 777 ramdisk8M.image
大小可以按照需要自己调整,但是最好不要超过32M,创建ramdisk目录,将ramdisk8M.image 挂载到该目录下
$mkdirramdisk
$mount -o loop ramdisk8M.image ramdisk/
接下来,只需要将rootfs目录下的内容全部拷贝到ramdisk下即可
$cp -R rootfs/* ramdisk
注意,这里cp的参数一定是R而非r。

这样,这个镜像文件的内容就是rootfs目录下的内容了。

将其卸载就可,
$umountramdisk/
到此,根文件系统镜像文件ramdisk8M.image 制作完成,将其压缩
gzip -9 ramdisk8M.image
用mkimage添加文件头,生成新的uramdisk.image.gz 供u-boot 使用
$ mkimage -A arm -T ramdisk -C gzip -n Ramdisk -d
ramdisk8M.image.gzuramdisk.image.gz
可以制作一个文件buildfs,如下
#dd if=/dev/zero of=ramdisk8M.image bs=1024 count=8192
dd if=/dev/zero of=ramdisk16M.image bs=1024 count=16384
mke2fs -F ramdisk16M.image -L "ramdisk" -b 1024 -m 0
tune2fs ramdisk16M.image -i 0
chmod 777 ramdisk16M.image
mkdirramdisk
mount -o loop ramdisk16M.image ramdisk/
cp -R rootfs/* ramdisk
umountramdisk/
gzip -9 ramdisk16M.image
mkimage -A arm -T ramdisk -C gzip -n Ramdisk -d ramdisk16M.image.gz uramdisk.image.gz
rm ramdisk16M.image.gz
rm -R ramdisk。

相关文档
最新文档