赛迪网 > IT技术 Linux > 系统管理
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

Linux下Ramdisk根文件系统制作过程解析

发布时间:2008.04.07 06:34     来源:赛迪网    作者:sixth

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

设已建立好的文件系统压缩文件为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 …将其当作块设备文件进行操作。

(责任编辑:云子)


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· 业界评论:被收购是否是开源公司的宿命 (04-03) · 实用技巧:SUSE Linux系统下VNC远程控制 (04-03)
· Ubuntu Linux操作系统安装配置Samba服务 (04-03) · Ubuntu Linux系统启动速度慢的问题解决 (04-03)
· Fedora Linux操作系统中TFTP的配置技巧 (04-03) · 在Linux上解决用Swing出现中文方块问题 (04-03)
· Linux下JBoss不能显示JasperReport报表 (04-03) · 在Linux操作系统下手动分析病毒样本技巧 (04-03)
· 如何在Linux操作系统下选择VIM配色方案 (04-03) · 高手进阶:解析Linux系统中的Passwd文件 (04-03)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
· 网站建设市场重新洗牌 一卡通引领革命潮流
· 北京加快信息化建设 医保一卡通年底前启动
· ERP案例分析 SaaS带来冲击 IT服务商面临挑战
· 通方期货CRM解决方案 房地产行业CRM解决方案
  IT博客 ·曾剑秋·项立刚·Java学习·网管
  IT技术论坛 ·开发·网管·安全·数据库·系统