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盘符即可。

=4uImage[initramfs initrd]制作流程

=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.ldsarch/arm/kernel/head.oarch/arm/kernel/init_task.oinit/built-in.o--start-groupusr/built-in.oarch/arm/kernel/built-in.oarch/arm/mm/built-in.oarch/arm/common/built-in.oarch/arm/mach-s3c2410/built-in.oarch/arm/nwfpe/built-in.okernel/built-in.omm/built-in.ofs/built-in.oipc/built-in.osecurity/built-in.ocrypto/built-in.olib/lib.aarch/arm/lib/lib.alib/built-in.oarch/arm/lib/built-in.odrivers/built-in.osound/built-in.onet/built-in.o--end-group .tmp_kallsyms2.o2. 将上面的vmlinux去除调试信息、注释、符号表等内容,生成arch/arm/boot/Image,这是不带多余信息的linux内核,Image的大小约3.2MB;命令:arm-linux-gnu-objcopy -O binary -R .note -R .comment -S vmlinux arch/arm/boot/Image3. 将arch/arm/boot/Image 用gzip -9 压缩生成arch/arm/boot/compressed/piggy.gz大小约1.5MB;命令:gzip -f -9 < arch/arm/boot/compressed/../Image > arch/arm/boot/compressed/piggy.gz4. 编译arch/arm/boot/compressed/piggy.S 生成arch/arm/boot/compressed/piggy.o大小约1.5MB,这里实际上是将piggy.gz通过piggy.S编译进piggy.o文件中。

精通initramfs构建step by step

精通initramfs构建step by step

精通initramfs构建step by step(一)hello world编写一个最简单的initramfs(二)initramfs的前世今生前面讲initramfs的概念时,提到了rootfs,那么rootfs又是什么,它与initramfs又有些什么瓜葛呢?(三)busybox我们开始利用initramfs做些有意思的工作了。

(四)mini linuxbusybox系统做好了,我们就以它为基础在initramfs上构建一个可运行的mini Linux系统吧。

(五)initrd目前为止,我们的initramfs都由内核编译生成的,并链接到内核中。

其实我们也可以用cpio 命令生成单独的initramfs,与内核编译脱钩,在内核运行时以initrd的形式加载到内核,以增加灵活性。

(六)switch_root除了基于initramfs的系统(如第四节的mini linux),通常initramfs都是为安装最终的根文件系统做准备工作,它的最后一步需要安装最终的根文件系统,然后切换到新根文件系统上去。

(七)modulesinitramfs 的最重要的功能就是包含大量的硬盘驱动和文件系统驱动,而不需要把所有的驱动程序编译进内核,减少内核大小。

initramfs负责在安装实际根文件系统前根据具体的文件系统设备情况加载合适的驱动到内核中,使系统能够正常安装实际的根文件系统。

如何在initramfs中增加驱动程序模块呢?(八)coldplug如果要做一个支持各种硬件配置的initramfs,要借助著名的udev来自动根据内核侦测到硬件类型来加载相应的驱动程序,也就是系统的coldplug。

在initramfs中如何使用udev做coldplug呢?(九)内核编译时构建initramfs补遗前一节中,initramfs构建中最困难的识别并自动加载硬件设备的驱动模块的问题已经解决了,我们稍稍停顿一下,回头再看看在内核编译时构建initramfs的另外两种方式。

制作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/usr/bin /usr/sbin下的程序需要编译busybox,然后拷贝busybox下的对应目录到ramdisk。

/etc下的文件可以参考redhat下的配置文件/etc,一般需要inittab, rc.d等2.在linux上mount已经做好的ramdisk:(Mount ramdisk images)#mkdir /mnt/tmp#mount -o loop ramdisk /mnt/tmp将目录copy到新件的ramdisk下●可以直接将已经做好的ramdisk,mount到一个文件下,#mount -o loop ramdisk/mnt/tmp ,修改,压缩,即可。

Linux下创建和使用RamDisk的技巧

Linux下创建和使用RamDisk的技巧

Linux下创建和使用RamDisk的技巧先介绍一下什么是RamDisk。

RamDisk实际是从内存中划出一部分作为一个分区使用,换句话说,就是把内存一部分当做硬盘使用,你可以向里边存文件。

那么为什么要用RamDisk 呢?假设有几个文件要频繁的使用,你如果将它们加到内存当中,程序运行速度会大副提高,因为内存的读写速度远高于硬盘。

况且内存价格低廉,一台PC有128M或256M已不是什么新鲜事。

划出部分内存提高整体性能不亚于更换新的CPU。

何乐而不为呢?象WEB服务器这样的计算机,需要大量的读取和交换特定的文件,因此,在WEB服务器上建立RamDisk 会大大提高网络读取速度。

1. 创建和使用RamDisk的方法。

使用RamDisk非常方便,缺省安装的RedHat6.0就支持RamDisk。

你所要作的就是格式化RamDisk并把它装载到一个目录下。

要想查看RamDisk的数目,用命令"ls -al /dev/ram*",它会给出所有当前情况下可用的RamDisk。

这些RamDisk只有使用的时候才占用内存。

下面是使用RamDisk的几个命令:#创建装载点mkdir /tmp/ramdisk0# 创建一个文件系统mke2fs /dev/ram0#装载ramdisk:mount /dev/ram0 /tmp/ramdisk0这三个命令将会为RamDisk创建一个目录、格式化RamDisk(创建文件系统)并把RamDisk装载到目录"/tmp/ramdisk0"中。

现在,你就可以把它作为一个磁盘分区使用了。

如果格式化RamDisk失败,可能是因为你没有把对RamDisk的支持编译进内核中去。

内核中对RamDisk的配置选项是CONFIG_BLK_DEV_RAM。

缺省的RamDisk为4M。

使用mke2fs命令可以查知你所获RamDisk的大小。

命令mke2fs /dev/ram0会产生以下信息:mke2fs 1.14, 9-Jan-1999 for EXT2 FS 0.5b, 95/08/09Linux ext2 filesystem formatFilesystem label=1024 inodes, 4096 blocks204 blocks (4.98%) reserved for the super userFirst data block=1Block size=1024 (log=0)Fragment size=1024 (log=0)1 block group8192 blocks per group, 8192 fragments per group1024 inodes per group使用命令df -k /dev/ram0可以查到你实际能用的RamDisk的大小(文件系统也占用一定空间):>df -k /dev/ram0Filesystem 1k-blocks Used A vailable Use% Mounted on/dev/ram0 3963 13 3746 0% /tmp/ramdisk0不过要记住,RamDisk中的数据会在机器重新启动后消失,因此应把其中有用的数据及时备份到硬盘中。

基于PowerPC双核处理器嵌入式Linux系统开发

基于PowerPC双核处理器嵌入式Linux系统开发

邮局订阅号:82-946360元/年技术创新博士论坛《PLC 技术应用200例》您的论文得到两院院士关注基于PowerPC 双核处理器嵌入式Linux 系统开发Development of Embedded Linux System for Dual_core Processor of PowerPC(中国科学院声学研究所)王长清蔡炜蔡惠智WANG Chang-qing CAI Wei CAI Hui-zhi摘要:针对我们自己开发的基于PowerPC 双核处理器MPC8641D 的信号处理与存储板,阐述了嵌入式Linux 系统软件开发,主要包括交叉开发环境建立、U-BOOT 移植、内核裁减与移植以及根文件系统定制,并对Serial Rapid IO 驱动程序,进行了简要的说明。

关键词:嵌入式Linux 系统;PowerPC;U-Boot 中图分类号:TP316文献标识码:BAbstract:In the paper,the pivotal technologies are described in implementation of embedded linux system for MPC8641D based on PowerPC,including cross development,configuration of target,modifying of U -Boot,porting the Linux kernel and root file system.The development of serial Rapid IO driver is discussed briefly.Key words:Embedded Linux System;MPC8641D;U-Bootl文章编号:1008-0570(2010)07-2-0005-031引言Linux 操作系统源码开放,遵循GPL 声明,其源代码可以从Linux 的相关网站下载。

需要了解的混合文件系统(ramdisk+jffs)

需要了解的混合文件系统(ramdisk+jffs)

需要了解的混合文件系统(ramdisk+jffs)背景知识:一、Ram disk文件系统:1.掉电丢失2.读写速度高3.数据存储到内存二、jffs文件系统1.掉电不丢失2.可存储于NOR NAND,但是适用于NOR3.数据存储于flash三、ramdisk+jffs启动流程:以ramdisk为真正根文件系统,jffs为jffs格式的数据分区。

内核起来后,挂载ramdisk,再挂载jffs数据分区到ramdisk的文件系统四、混合文件系统意义通常jffs分区里面存放应用程序和配置文件。

ramdisk制作成一个基本的文件系统,不同项目改动的只是jffs2数据分区,可以实现文件系统的重复利用。

类似于核心板和底板的关系。

五、ramdisk制作方法1.将编译安装好的根文件系统目录压缩gzip -v9 ramdisk.img2.修改名字为要烧录的名字mv ramdisk.img.gz ramdisk-beta2.00修改方法1.修改名字为要解压的名字mv ramdisk-beta2.00 ramdisk.img.gz2.解压文件gunzip ramdisk.img.gz3.挂载到系统文件夹下mount -o loop ramdisk.img /opt/sendinfo/filesystem/tmp/4.挂载目录中修改编辑5.卸载已挂载的根文件系统umount /opt/sendinfo/filesystem/tmp/6.重新压缩gzip -v9 ramdisk.img7.重新修改名字为烧录名字mv ramdisk.img.gz ramdisk-beta2.00五、jffs制作方法1.所需文件,制作为ramdisk的根文件系统目录与文件2.打包脚本mkjffs脚本:#!/bin/shrm -f ./jffsmkfs.jffs2 -e 0x20000 -l -s 0x800 --pad=0x2000000 -n -d ./opt/ -o ./jffschmod 777 jffs3.执行脚本即可 ./mkjffs六、内核分区以9G45举例说明:arch/arm/mach-at91/board-sam9m10g45ek.c七、增加挂载文件ramdisk/etc/mtab第七步修改应该在打包之前完成。

Ramdisk

Ramdisk

20.11 关于initramfs20.11.1 initramfs概述initramfs与initrd类似,也是初始化好了且存在于ram中的,可以压缩也可以不压缩。

但是目前initramfs只支持cpio包格式,它会被populate_rootfs()->unpack_to_rootfs(&__initramfs_ start, &__initramfs_end - &__initramfs_start, 0)函数(解压缩、)解析、安装。

20.11.2 initramfs与initrd的区别1)Linux内核只认cpio格式的initramfs文件包(因为unpack_to_rootfs只能解析cpio格式文件),非cpio格式的initramfs文件包将被系统抛弃,而initrd可以是cpio包也可以是传统的印象(image)文件,实际使用中initrd都是传统印象文件。

2)initramfs在编译内核的同时被编译并与内核连接成一个文件,它被链接到地址__initramfs_star 处,与内核同时被bootloader加载到ram中,而initrd是另外单独编译生成的,是一个独立的文件,它由bootloader单独加载到ram中内核空间外的地址,比如加载的地址为addr(是物理地址而非虚拟地址),大小为8MB,那么只要在命令行中加入“initrd=addr,8M”命令系统就可以找到initrd(当然通过适当修改Linux的目录架构、makefile文件和相关代码,以上两种情况都是可以相通的)。

3)initramfs被解析处理后其原始的cpio包(压缩或非压缩)所占的空间(&__initramfs_start~&__initramfs_end)是作为系统的一部分一直保留在系统中,不会被释放掉,而对于initrd的印象(image)文件,如果没有在命令行中设置“keepinitrd”命令,即keep_initrd全局变量等于0,那么initrd印象文件被处理后其原始文件(压缩或非压缩)所占的空间(initrd_start~initrd_end)将被释放掉。

英倍特系统更新详细步骤(前三步都为Jitag方式)

英倍特系统更新详细步骤(前三步都为Jitag方式)

下面将完整的介绍实验系统vivi、Linux内核、ramdisk根文件系统、 yaffs根文件系统映像的固化过程(在实验系统出厂前已经固化好出厂Linux映像,下面的内容仅供参考,用户如果并不需要更新全部映像,可以单独更新单个映像)1. 固化vivi● 准备工作:1)准备好EduKit-IV 实验平台一套,Mini2410-IV 核心子板一套,5V/2A 电源适配器一个,EasyICE烧写器一个,交叉串口线一个。

并口线1 个,U 盘一个(空闲空间大于32M)。

2)在测试台摆放好EduKit-IV 实验平台,小心打开EduKit-IV 实验平台上盖,注意防止箱体向后倾倒(最好箱体上盖后面靠着其他物品)。

3)检查EduKit-IV 实验平台出厂跳线,注意Mini2410-IV 核心子板上的跳线为闭合状态,电源拨动开关拨向向下端的断开状态。

4)连接5V/2A 电源适配器到EduKit-IV 实验平台的电源接口(电源插座供电为220V 市电)。

5)连接EasyICE 烧写器:JTAG 线连接到EduKit-IV 实验平台的Area1 区的ARM JTAG 接口,并口端通过并口线连接PC 机与EasyICE 烧写器。

(用于固化Bootloader)6)连接交叉串口线于PC 机的串口端和EduKit-IV 实验平台的COM2 端。

7)将Mini2410-IV 核心子板插入EduKit-IV 实验平台的CPU PACK 接口,注意用力均匀且确保插槽连接紧密(一般可用力先插紧上面的槽,然后在插紧下面的槽,插好后,再均匀用力固定确保连接紧密,槽插进去的时候可以听到卡进去的声音)。

8)将EduKit-IV 实验平台的电源的拨动开关拨向向上端的加电状态,给实验平台上电。

可以看到POWER 区的三个红色电源指示灯会亮:1V8_LED、3V3_LED、5V0_LED。

如果有任意电源指示灯不亮,请立刻关闭电源,检查电路故障。

LINUX内核STARTINGKERNEL...串口无输出问题归纳

LINUX内核STARTINGKERNEL...串口无输出问题归纳

下面两篇文章是ARM9论坛上的讲解ramdisk文件系统的很不错的文章今天做了个试验,让Linux2.6.29.4从ramdisk根文件系统启动成功,总结一下。

其中涉及的内容较多,很多东西不再详述,如需深入研究请查阅相关资料(百度或谷歌一下一大堆)。

开发环境:Fedora 9交叉编译工具链:arm-linux-gcc 4.3.2 with EABI嵌入式Linux内核版本:2.6.29.4-FriendlyARM。

昨天写贴子的时候具体记不清了,今天起来启动开发板用uname -r查一下,就是叫做2.6.29.4-FriendlyARM,帖子已经改好了。

本文就是友善之臂的2.6.29.4-FriendlyARM的那个版本的内核的基础上改的。

其它版本的应该也类似,仅供参考。

开发板:mini2440-128M Nand FlashBootloader:u-boot-2009.11具体步骤如下:1.解压内核源码树解压linux-2.6.29-mini2440-20090708.tgz到自己的工作目录,会生成一个友善之臂修改过的并且有几个mini2440默认配置文件的内核源码目录linux-2.6.29。

具体步骤参照友善之臂mini2440开发板用户手册,具体不详述了。

2.修改内核配置选项进入内核源码目录linux-2.6.29目录#cp config_mini2440_t35 .config#make menuconfig ARCH=arm打开配置菜单,修改两个配置项,分别是:a):General setup-->选择Initial RAM filesystem and RAM disk...... 项b):Device Drivers-->Block devices-->选择RAM block device support 项并检查Optimize for size是否被选中,如果没有则选中,此项优化内核大小,根据需要进行配置。

Linuxramdisk根文件系统的移植

Linuxramdisk根文件系统的移植

Linuxramdisk根文件系统的移植Linux ramdisk根文件系统的移植一、移植前准备处理器平台:powerpc交叉编译工具:powerpc64-fsl-linux-gccBusyBox源码:busybox-1.23.2.tar.bz2ramdisk文件系统映像生成工具:genext2fs二、构建根文件系统2.1 建立根文件系统目录架构在当前用户目录下创建所要移植的根文件系统根目录,并命名为rootfs。

在该目录下,创建FHS标准(Filesystem Hierarchy Standard,文件系统科学分类标准)下Linux根文件系统的常用子目录,诸如dev、etc、home、bin、sbin、mnt、lib等。

rootfs及其相关子目录的创建由脚本create_rootfs.sh完成,create_rootfs.sh内容如下:#!/bin/shecho "------Create rootfs directons......"cd ~mkdir rootfscd rootfsecho "--------Create root,dev......"mkdir root dev etc bin sbin mnt sys proc lib home tmp var usrmkdir usr/sbin usr/bin usr/lib usr/modulesmkdir etc/init.d#mkdir mnt/usb mnt/nfs#mkdir lib/modulesecho "-------make direction done---------"2.2 构建dev目录建立dev目录有两种方法:静态构建和动态构建,其中动态构建由mdev设备管理工具构建。

1)静态构建所谓静态构建,就是根据预先知道的所要挂载的驱动,用mknod 命令逐一构建各种设备节点。

  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。

相关文档
最新文档