注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

deisp的博客

 
 
 

日志

 
 

怎么样制作Linux映像文件系统(Filesystem Image)??_翱翔天空♂鹏  

2008-07-24 15:13:43|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
怎么样制作Linux映像文件系统(Filesystem Image)??
2008-07-21 12:33
在命令提示符下输入
vi my_image
进入VI界面之后,输入以下的文本

dd if=/dev/zero of=/tmp/tmp_loop bs=1k count=512
mkfs -t ext2 /dev/loop0
mount -t ext2 /dev/loop0 /mnt
mkdir -P /mnt/dev
mkdir -P /mnt/bin
mkdir -P /mnt/etc
...
umount /mnt
losetup -d /dev/loop0
dd if=/tmp/tmp_loop | gzip -9 > /tmp/Image.gz
rm -f /tmp/tmp_loop
sync


当你输完上面的所有文本之后,按ESC键,再按住冒号,最后输入wq,最后就在当前目录下生成了一个my_image的脚本文件,然后输入./my_image,之后在/tmp目录下有一个Image.gz文件,就是你所想要的Image文件了


总体实现思路:
1.首先打开VI编辑器,相当于WINDOWS下的记事本之类的程序,当然比它强大很多,以便用它来写一个脚本文件,脚本文件类似下DOS下的批处理文件,免得你每次输入很多相同的命令
2.用DD工具来做一个虚拟的磁盘文件,DD工具有点强大,可以克隆整个分区,某个文件,或者整个硬盘,类似于GHOST之类的软件
3.将此虚拟的磁盘系统格式化成你指定的分区,比如EXT2,FAT等,这里所使用的工具就是mkfs
4.将格式好的虚拟磁盘挂载到一个目录下,类似于你挂载一个WINDOWS的分区一样,挂载好了之后,你就可以在此目录下进行各种操作了
5.此时你的虚拟磁盘下还没有任何文件,你需要在下面新建一些LINUX所需要的目录,比如dev,proc,bin,etc等,此时,为了方便,你可以将你PC机上的某些目录拷过去,由于你PC机上的目录下的文件太多也太大,所以推荐你照着PC机新建目录,然后再将你想要的某些文件从PC机拷贝到你的虚拟磁盘中去
6.当你将所需要的文件全部拷上去了之后,就可以卸载了
7.将你制做好的虚拟磁盘文件压缩(当然,你也可以不压缩,这取决于你的BOOTLOADER)




对上面脚本的详细注解如下:
第一句:dd if=/dev/zero of=/tmp/tmp_loop bs=1k count=512,做一个虚拟磁盘(相当于在WINDOWS上的ISO文件),其中每1024字节为一块,类似于硬盘的分块,一共有512K的大小,当然,你也可以做成不只512K大小,改相应的参数就行了

第二句:mkfs -t ext2 /dev/loop0 ,将你虚拟的磁盘进行格式化,这里格式化成EXT2文件系统,还记得WINDOWS下的ISO吧?不过ISO只能是固定的东东,这里的虚拟磁盘可以是任何LINUX支持的文件系统!!!

第三句:mount -t ext2 /dev/loop0 /mnt,挂载分区,不用我多说了,需要注意的一点是,最好事先不要在MNT目录下挂载其它的分区,或者放其它的文件,也就是说要么它就是一个空目录,要么你就改一个目录来进行你的挂载操作,当然,如果你放了一些文件或者已经挂载了某个分区也没什么,只不过那个分区里的东西全不见了(只是暂时的,当你操作完成之后就恢复了)

第四句之后:
mkdir -P /mnt/dev
mkdir -P /mnt/bin
mkdir -P /mnt/etc
...
就是新建目录,参数P是指如果有该目录的话,就忽略,最后的省略号是指我省略了一些步骤,并不是要你在文本编辑器里输入省略号!!!!!而且后面还省略了从PC机拷贝文件的步骤,因为我并不知道你需要什么具体文件


最后几句:
umount /mnt
losetup -d /dev/loop0
dd if=/tmp/tmp_loop | gzip -9 > /tmp/Image.gz
rm -f /tmp/tmp_loop
sync
卸载分区
通知系统不再需要虚拟磁盘
将生成的/tmp下的tmp_loop文件(就是那个虚拟磁盘文件),用GZIP压缩,并拷贝到/tmp/下,并改名为Image.gz
删除磁盘虚拟文件
文件写操作同步,在LINUX下的磁盘操作时,是有一个缓冲的过程,相当于你发过写磁盘的命令,但此时向磁盘的写操作还没发生,时已经向用户返回写成功了,为了确保写操作完成,就需要这个sync命令以确保你的镜像文件完整


最后需要注意的是:
至于你的文件系统里面要放什么东西,完全由你自己决定,比如你需要一个BusyBox之类的,也需你还要支持你自己的驱动,我在这里只是简单提两句,请参阅相关文档  



©2008 Baidu



引文来源  怎么样制作Linux映像文件系统(Filesystem Image)??_翱翔天空♂鹏

----------------------------
一键转贴,快速捕捉生活精彩,赢每周好礼!查看活动首页>>

  评论这张
 
阅读(388)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017