热门关键字:  ubuntu  分区  Fedora  linux系统进程  函数

Linux系统下Ramdisk的制作过程

来源: 作者: 时间:2007-07-11 Tag: 点击:

一、在一个已建好的文件系统上进行修改。

 

设已建立好的文件系统压缩文件为ramdisk.gz

 

1.解压

 

#cd ramdisk.gz所在目录

 

#gunzip ramdisk.gz

 

在解压后,得到文件系统镜象文件ramdisk, 覆盖了原来的压缩文件

 

2.镜象文件挂载

 

镜象文件必须经过挂载后才能看到文件系统中的各个目录和详细内容

 

#mkdir /mnt/loop

/* /mnt/loop 是文件系统要挂载到的目录

 

#mount –o loop ramdisk /mnt/loop

 

在挂载目录/mnt/loop下对文件系统进行操作

 

#cd /mnt/loop

 

#do_whatever_you_want_to_do /*根据需要增加、删减或是修改文件系统的内容

 

4.卸装文件系统

 

跳到/mnt/loop目录外,否则无法卸装,提示busy

 

#cd ramdisk所在目录

 

#umount /mnt/loop

 

5.压缩文件系统

 

#gzip –v9 ramdisk

 

/*生成ramdisk.gz压缩文件

 

二、自己建立根文件系统

 

1.建立loop设备的临时挂载点

 

#mkdir /mnt/loop

 

2.建立一个大小为15M的临时文件

 

#dd if=/dev/zero of=/tmp/loop_tmp bs=1k count=15360

 

注意可根据自己的需要建立大小合适的文件系统,更改count大小即可。

 

此处以dd命令建立一个了一个15360KB文件系统映象,存于/tmp/loop/tmp,并以.dev/zero对它进行初始化。用这种方式对文件系统进行初始化,稍后当我们使用gzip命令压缩整个映象时,将让文件系统中未使用的部分获得最大压缩比。

 

3.将设备文件与临时文件联系起来

 

#losetup /dev/loop0 /tmp/loop_tmp

 

把设备文件/dev/loop0与临时镜象文件/tmp/loop_tmp联系起来,/dev/loop0是个块设备

 

如果出现“ioctl:LOOP_SET_FD:设备或资源忙”,说明/dev/loop0设备还和一文件联系,可用losetup /dev/loop0查看地,并可用-d 删除。

 

4.将/dev/loop0格式化为ext2文件系统

 

#mke2fs –m 0 /dev/loop0

 

-m 0指出不必在文件系统上为“超级用户”保留任何区块。

 

Linux内核识别两种可以直接考贝的到ramdisk的文件系统,它们是minix和ext2,minix是linux早期版本所用的文件系统,从minix操作系统而来,ext2性能更好。

 

5.把虚拟盘挂在节点/mnt/loop上

 

#mount –t ext2 /dev/loop0 /mnt/loop

 

6.用cp –af命令将所需要文件拷贝到虚拟盘上

 

cp –help查看cp 用法。cp –arf … -r表示拷贝目录

 

/bin, /dev, /etc, /lib, proc, /sbin, /usr都是不可或缺的目录,建议保留/tmp,/var,不过可以为空。而为多用户提供可扩展环境的所有目录(例如/home、/mnt、/opt、/root)都应该省略。

 

用cp复制文件时,建议把已建立好的文件系统中的内容全部拷贝过来,这样比较简单,不需要再去编译安装busybox等。当然自己也可以那样去做。

 

7.卸载文件系统,得到的/tmp/loop_tmp就是文件系统映象。

 

#cd /mnt/loop以外的目录 (否则会提示无法卸载,设备busy)

 

#umount /mnt/loop

 

8.压缩文件系统映象

 

#gzip –v9 /tmp/loop_tmp >/tftpboot/ramdisk.gz

 

在/tftpboot下生成了ramdisk.gz,这样一个内存文件镜象生成了。

 

或只是#gzip –v9 /tmp/loop_tmp,则就是在/tmp下生成loop_tmp.gz文件,一样的。

 

在上述的自己建立文件系统中,第3条用 losetup命令把块设备文件/dev/loop0与临时文件/tmp/loop_tmp联系起来了,我的理解是/tmp/loop_tmp必须是块设备文件,所以用/dev/loop0与之相关联,然后对/dev/loop0的操作和对其虚拟盘的操作,就间接作用在文件系统映象 /tmp/loop_tmp上。

 

三、自己建立根文件系统(与二中不同)

 

1.建立loop设备的临时挂载点

 

#mkdir /mnt/loop

 

2.建立文件系统映象

 

#dd if=/dev/zero of=/tmp/loop_tmp bs=1k count=15360

 

以上2条同二中是一样

 

3.mke2fs –F –v –m 0 /tmp/loop_tmp

 

此处-F选项将可迫使mkefs2在文件上运行。否则mke2fs会抱怨 /tmp/loop_tmp不是个块设备(在上面说了,我的理解是/tmp/loop_tmp文件映象必须是块设备文件,前面的做法是用块设备文件 /dev/loop0与之相关联)。-v 选项指出mke2fs应该以verbose模式执行,-m 0指出不必在文件系统上为“超级用户”保留任何区块,因为在嵌入式系统中通常是单用户系统,为“超级用户”保留区块没有意义。

 

4.挂载映象文件

 

#munt –o loop /tmp/loop_tmp /mnt/loop

 

挂载后,在/mnt/loop下就可以对文件系统的内容进行操作。

 

5.cp操作,同二中的第6条

 

6.卸载映象文件

 

#umount /mnt/loop

 

7.压缩映象文件

 

#gzip –v9 /tmp/loop_tmp

 

第三中的做法与第二中的做法不同,在第二中,把块设备文件/dev/loop0与映象文件/tmp/loop_tmp相关联,然后对/dev/loop0及虚拟盘进行操作,就作用在/ltmp/loop_tmp上。

 

而第三中,是直接对映象文件/tmp/loop_tmp进行操作,用mke2fs –F …将其当作块设备文件进行操作。




相关文章:
Linux - 增加 Swap 方法
UFS - Unix File System
Linux下如何备份分区表
Ext2文件系统转换为Ext3的方法
Linux Filesystems
proc文件系统
linux 文件系统
/boot不要单独分区!
解析linux根文件系统的挂载过程
理解和认识udev
proc文件系统探索 之 以数字命令的目录[三]
如何自动装配文件系统autofs
linux文件系统基础知识
Linux下增加swap space
autofs服务动态自动挂载各种文件系统
挂载LVM分区
/dev/null 找不到设备的问题
Linux 文件系统(filesystem)资源索引
zfs snapshot
ext2, ext3, xfs, reiserfs 文件系统性能测试
给mss增加ext3空间
Linux为什么最多能分4个四个主分区的解释
制作jffs2 根文件系统
Linux文件系统 一分钱一分货
linux加密分区的创建和使用
onlineJFS无法使用问题(HP_UX)
Linux磁盘存储区管理原理与技巧
udev学习
以NAS价位获取FC文件系统性能
Linux下以模块方式安装卸载文件系统