小默

【转】制作File system Image

在命令提示符下输入  
  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之类的,也需你还要支持你自己的驱动,我在这里只是简单提两句,请参阅相关文档  
  总体思路是一样的,你可以根据我说的整体思路,你完全可以举一反三,灵活运用,呵,我在这里YY了几句,请高手嘴下留情哈!!!!!  

posted on 2010-05-01 19:45 小默 阅读(297) 评论(0)  编辑 收藏 引用 所属分类: Linux


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

统计

留言簿(13)

随笔分类(287)

随笔档案(289)

漏洞

搜索

积分与排名

最新评论

阅读排行榜