制作ramdisk
- 格式:doc
- 大小:48.00 KB
- 文档页数:6
关于锐起如何做ramdisk包看到很多朋友对如何将系统包放入ramdisk有兴趣。
本人暂用自己的想法描述一下如何实现。
1、服务器安装ramdisk软件。
如:superspeed的ramdisk 8.0 9.0,BXP自带的Qsoft ramdisk 5.3.1.4(本人用的这个)2、在锐起上按正常的方法建一个稀疏包(后称此包为hd.img)。
至于大小嘛?看你了,一般是2G 5G之类的。
我建的是3G的包。
主要是防止白痴用户下载超大的文件。
3、客户端wks建立系统,上传到服务器hd.img。
4、按正常的操作打注册表、驱动、pnp所有客户机。
此时hd.img已经可以正式营业。
禁用虚拟内存,删除垃圾文件5、在原来的客户机wks上插上安装系统的硬盘。
设定为hd.img包。
此时在客户机上将看到hd.img的磁盘。
记下此磁盘占用空间的大小(dsize).将此盘ghost在硬盘上。
名mth.gho。
关闭此客户机6、配置ramdisk生成一个dsize+50M的ramdisk磁盘。
盘符为V:7、打开锐起管理器。
在V盘上建立一个镜像文件Vdisk_ram.img8、设定wks使用Vdisk_ram.img.wks开机.将mth.gho恢复到网络磁盘。
9、取下wks的硬盘。
网络启动此计算机。
按需求设定pagefile.当找完驱动要求重启时。
关机。
关闭Vdisk_ram.img的超级工作站状态。
10、将Ramdisk的状态保存到硬盘(不一定设定为关机保存。
因为没必要,而且会延长关机时间)另外还有更简单的方法:同样建好一个能营业的系统包。
再用锐起出盘工具出盘。
删除pagefile.ghost备份为文件。
再将这个备份恢复到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文件系统启动了,启动后可以看到刚做的简单文件系统在板上跑☺。
在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,它就会被标记,之后内核就不会试图重用这块内存。
制作根文件系统有两种方法1、利用开发板提供的映像文件制作ramdisk2、利用busybox制作根文件系统(制作过程复杂)采用第一种方法制作需要的ramdisk1、拷贝已有的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=13、 gunzip解压ramdisk.image.gz 生成ramdisk.image$ gunzip ramdisk.image.gz4、新建挂载目录“ramdisk”,并将ramdisk.image挂载$ sudo mount -o loop,rwramdisk.imageramdisk5、接下来,只需要将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。
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来解释执行的*/ [*] ashCoreutils > [*] cp [*] cat [*] ls [*] mkdir [*] echo (basic SuSv3 version taking no opt ions) [*] env [*] mv [*] pwd [*] rm [*]touch Editors > [*] viLinux System Utilities > [*] mount [*] umount [*] Support loopback mounts [*] Supp ort for the old /etc/mtab fileNetworking Utilities > [*] inetd /* * 支持inetd超级服务器*/3.3 编译并安装Busybox(如果busybox编译不过去就换个版本的编译工具)。
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会产生以下信息:mke2fs1.14,9-Jan-1999forEXT2FS0.5b,95/08/09Linuxext2filesystemformatFilesystemlabel=1024inodes,4096blocks204blocks(4.98%)reservedforthesuperuserFirstdatablock=1Blocksize=1024(log=0)Fragmentsize=1024(log=0)1blockgroup8192blockspergroup,8192fragmentspergroup1024inodespergroup使用命令df-k/dev/ram0可以查到你实际能用的RamDisk的大小(文件系统也占用一定空间):>df-k/dev/ram0Filesystem1k-blocksUsedAvailableUse%Mountedon/dev/ram0396********%/tmp/ramdisk0不过要记住,RamDisk中的数据会在机器重新启动后消失,因此应把其中有用的数据及时备份到硬盘中,电脑资料《Linux下创建和使用RamDisk的技巧》(https://www.)。
制作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♦。
1dd命令的解释dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
参数注释:if=文件名:输入文件名,缺省为标准输入。
即指定源文件。
of=文件名:输出文件名,缺省为标准输出。
即指定目的文件。
ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。
obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。
bs=bytes:同时设置读入/输出的块大小为bytes个字节。
cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。
skip=blocks:从输入文件开头跳过blocks个块后再开始复制。
seek=blocks:从输出文件开头跳过blocks个块后再开始复制。
注意:通常只用当输出文件是磁盘或磁带时才有效,即备份到磁盘或磁带时才有效。
count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。
conv=conversion:用指定的参数转换文件。
ascii:转换ebcdic为asciiebcdic:转换ascii为ebcdicibm:转换ascii为alternateebcdicblock:把每一行转换为长度为cbs,不足部分用空格填充unblock:使每一行的长度都为cbs,不足部分用空格填充lcase:把大写字符转换为小写字符ucase:把小写字符转换为大写字符swab:交换输入的每对字节noerror:出错时不停止notrunc:不截短输出文件sync:将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。
2制作文件系统2.1步骤一在磁盘中分配固定大小的空文件ramdiskdd if=/dev/zero of=ramdiskbs=1M count=20格式化为某一文件系统sudo mkfs.ext3 -m 0 -F -N 5000 -b 4096 ./ramdisk将该文件挂载至某一目录下sudo mount -t ext3 -o loop ./ramdisk./tmp将所需文件复制到该目录下,即将所需文件打包成一个文件ramdisksudocp -dpR $(ROOTFS_DIR)/* ./tmp(此处ROOTFS_DIR一般是busybox和一些ubi必要的文件系统的工具)sudoumount./tmp2.2步骤二ramdisk.gz与ramdisk相互转换ramdisk压缩成ramdisk.gzgzip -f9 ramdiskramdisk.gz解压出ramdiskgzip -d ramdisk.gz2.3步骤三uRamdisk.gz与ramdisk.gz相互转换ramdisk.gz生成uRamdisk.gzmkimage -A ppc -O linux -T ramdisk -C gzip -n "Linux ramdisk" -d ramdisk.gz uRamdisk.gzuRamdisk.gz生成ramdisk.gzsudodd if=./uRamdisk.gz of=./ramdisk.gz bs=64 skip=12.4补充最后生成的uRamdisk.gz即为edd_uRamdisk文件,复制过程中重命名即可cp uRamdisk.gz $(TARGET_DIR)/edd_uRamdisk。
使用genext2fs制作ramdisklinux 默认并没有自带genext2fs 这个工具,需要下载,项目地址:sourceforge/projects/genext2fs/files/genext2fs/最新版为genext2fs-1.4.1.tar.gz。
下载后使用tar–zxf genext2fs-1.4.1.tar.gz 进行解压,如下:然后./configure 生成Makefile 文件,然后make ,最后还得make install 安装。
然后make ,make install证实可用了,然后按照之前的视频讲的输入genext2fs -b 8192 -d /home/cgswh/rootfs ramdisk ,弹出下面的错误这个错误的原因是给的大小太小了,需要把大小增大,后来改为32568 65536 还是不行,不知道这个是不是以K 为单位的,查看手册只是说了size of the image in blocks,这样于是便先使用du -h rootfs,计算出来这个东西是91M ,所以genext2fs -b 102400 -d /home/cgswh/rootfs ramdisk 这次成功生成100M 的镜像了。
最后一个gzip -9 -f ramdisk ,这玩意很给力,生成了11M后来在视频中听那个老师讲,这个玩意一般不会操过8M,而我这个竟然91M,后来去查找rootfs/目录,还是使用du -h rootfs ,找到问题了,因为之前配置根文件系统时,我是直接使用rhel5 x86 下面的/etc 目录,竟然将selinux 给包含进来了,这个玩意还真大,几十M 的,吓死人了后来重新弄了个8M 的。
tips:感谢大家的阅读,本文由我司收集整编。
仅供参阅!。
嵌入式Linux根文件系统Ramdisk制作过程
ramdisk 是一个最小的linux rootfs 系统,它包含了除内核以外的所有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。
一、在一个已建好的文件系统上进行修改
设已建立好的文件系统压缩文件为ramdisk.gz
1、解压
#cd ramdisk.gz 所在目录
#gunzip ramdisk.gz
在解压后,得到文件系统镜象文件ramdisk,覆盖了原来的压缩文件
2、镜象文件挂载
镜象文件必须经过挂载后才能看到文件系统中的各个目录和详细内容
#mkdir /mnt/loop
/mnt/loop 是文件系统要挂载到的目录
#mount –o loop ramdisk /mnt/loop
3、在挂载目录/mnt/loop 下对文件系统进行操作
#cd /mnt/loop
根据需要增加、删减或是修改文件系统的内容
4、卸装文件系统。
●建立新的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 ,修改,压缩,即可。
1、gunzip ramdisk.gz (supply by Henyi)2、mount -o loop ramdisk /mnt/z13、change what you want4、umount /mnt/z15、gzip ramdisk●编译busybox1,busybox简介busybox是一个集成了一百多个最常用linux命令和工具的软件,他甚至还集成了一个http服务器和一个telnet服务器,而所有这一切功能却只有区区1M左右的大小.我们平时用的那些linux命令就好比是分力式的电子元件,而busybox就好比是一个集成电路,把常用的工具和命令集成压缩在一个可执行文件里,功能基本不变,而大小却小很多倍,在嵌入式linux应用中,busybox有非常广的应用,另外,大多数linux发行版的安装程序中都有busybox的身影,安装linux的时候案ctrl+alt+F2就能得到一个控制台,而这个控制台中的所有命令都是指向busybox的链接.Busybox的小身材大作用的特性,给制作一张软盘的linux带来了及大方便. 2,busybox的用法可以这样用busybox#busybox ls他的功能就相当运行ls命令最常用的用法是建立指向busybox的链接,不同的链接名完成不同的功能. #ln -s busybox ls#ln -s busybox rm#ln -s busybox mkdir然后分别运行这三个链接:#./ls#./rm#./mkdir就可以分别完成了ls rm 和mkdir命令的功能.虽然他们都指向同一个可执行程序busybox但是只要链接名不同,完成的功能就不同,busybox就是这么的神奇.很多linux网站都提供busybox的源代码下载.目前版本是busybox1.0正式版.3,配置busyboxbusybox的配置程序和linux内核菜单配置方式简直一模一样.熟悉用make menuconfig方式配置linux内核的朋友很容易上手.#cp busybox-1.00.tar.gz /babylinux#cd /babylinux#tar xvfz busybox-1.00.tar.gz#cd busybox-1.00#make menuconfig下面是需要编译进busybox的功能选项,其他的可以根据需要自选,但是同样不要太贪心.General Configuration应该选的选项Show verbose applet usage messagesRuntime SUID/SGID configuration via /etc/busybox.confBuild OptionsBuild BusyBox as a static binary (no shared libs)这个选项是一定要选择的,这样才能把busybox编译成静态链接的可执行文件,运行时才独立于其他函数库.否则必需要其他库文件才能运行,在单一个linux内核不能使他正常工作.Installation OptionsDon't use /usr这个选项也一定要选,否则make install 后busybox将安装在原系统的/usr下,这将覆盖掉系统原有的命令.选择这个选项后,make install后会在busybox目录下生成一个叫_install的目录,里面有busybox和指向他的链接.其他选项都是一些linux基本命令选项,自己需要哪些命令就编译进去,一般用默认的就可以了.配置好后退出并保存.4,编译并安装busybox#make#make install编译好后在busybox目录下生成子目录_install,里面的内容:drwxr-xr-x 2 root root 4096 11月24 15:28 binlrwxrwxrwx 1 root root 11 11月24 15:28 linuxrc -> bin/busybox drwxr-xr-x 2 root root 4096 11月24 15:28 sbin其中可执行文件busybox在bin目录下,其他的都是指向他的符号链接.建立设备文件名#cd /babylinux/rootfs/dev你可以用mknod手工建立,也可以直接从原系统的/dev目录下拷贝过来.手工建立的方法:#ls -l /dev/consolecrw------- 1 root root 5, 1 11月30 09:02 /dev/console这样就查看到了console设备的主设备号是5,辅设备号是1,是一个标记为C的字符设备.于是,我们可以用mknod建立一个同样的设备文件:#mknod console c 5 1但是手工方法建立太麻烦了,通常直接从/dev下把需要的设备文件拷贝过来.这些设备文件是特殊文件,在拷贝时一定要加上-R参数才能拷贝.#cp -R /dev/console ./#cp -R /dev/null ./#cp -R /dev/zero ./...以下是我认为需要的设备名:cdrom fd0 hda14 hda4 hdb11 hdb19 hdc hdc16 hdc6 hdd13 hdd3 loop2 ram2console fd0H1440 hda15 hda5 hdb12 hdb2 hdc1 hdc17 hdc7 hdd14 hdd4 loop3 tty0fb hda hda16 hda6 hdb13 hdb3 hdc10 hdc18 hdc8 hdd15 hdd5 loop4 tty1fb0 hda1 hda17 hda7 hdb14 hdb4 hdc11 hdc19 hdd hdd16 hdd6 loop5 tty2fb1 hda10 hda18 hda8 hdb15 hdb5 hdc12 hdc2 hdd1 hdd17 hdd7 null tty3fb2 hda11 hda19 hdb hdb16 hdb6 hdc13 hdc3 hdd10 hdd18 hdd8 ram tty4fb3 hda12 hda2 hdb1 hdb17 hdb7 hdc14 hdc4 hdd11 hdd19 initctl ram0 tty5fb4 hda13 hda3 hdb10 hdb18 hdb8 hdc15 hdc5 hdd12 hdd2 loop1 ram1 zero其中,fd0,hda,ram,ram1,tty1,null,zero,loop1,fb0,fb等是必备的.【PS:】未经作者允许,本文不得转载,复制ARM Linux支持多种文件系统,比较常用的如Cramfs、Jffs2、NFS、Romfs和Ramfs 等,其中Cramfs、Jffs2需要少些到Flash中,这在前期开发调试中很部方便,而Ramfs 可以使用Bootloader通过网络的方式下载到RAM然后再挂载到文件系统中,很适合前期调试。
本文主要讲述如何在ARM Linux中使用RamDisk。
【注意】:本文在Linux2.4.18下顺利运行,而对于比较早的版本,特别是1.3.48是无法通过的。
要挂载RamDisk作为root目录,首先需要设置Linux的kernel command。
执行make xconfig 或make menuconfig选择【General setup】选项中的Default kernel command string,修改其中的root=******为root=/dev/ram0。
然后选择【Block devices】选项,选中<*> RAM disk support,修改Default RAM disk size为你索期望的大小。
选中[*] Initial RAM disk (initrd) support选项。
经过上修改通常就可以了。
但是往往会又些特殊情况。
1、如果Linux在启动过程中没有初始化RamDisk,如下信息:RAMDISK driver initialized: 16 RAM disks of 15360K size 1024 blocksize,这就需要修改Linux源代码了。
打开linux/arch/arm/mach-at91rm9200/core.c文件(linux为内核根目录,本文以AT91rm9200 为例),对于S3C2410可能为linux/arch/arm/mach-s3c2410/smdk.c。