分页: 1 / 1

如何挂载一个压缩的映像文件?

发表于 : 2010-09-07 22:35
janka
大家好,请问大家一个问题,假设我将linux根目录下的usr弄成一个压缩的映像文件,其他目录都直接存在硬盘第一分区,通过grub引导启动,那么,我如何挂载这个压缩型的映像文件到/usr啊??
请教。。


我试过挂载iso镜像。。
过在rcS里面添加mount命令 ,挂载iso镜像。。。
机器启动后,的确自动挂载了iso到/usr,但是,却提示error while loading。。 (文件是找到的)

另外,假设我把这个压缩的镜像文件usr.gz。通过grub的initrd启动是否可行???
在fstab如何添加?
网上有人说是:/dev/ram0 /usr ……………………
but,我试过,好像没效果。。。

Re: 如何挂载一个压缩的映像文件?

发表于 : 2010-09-08 0:08
pityonline
/usr 目录下有很多重要的系统文件,不能挂载到它吧?为什么不挂载到 /mnt 呢?

Re: 如何挂载一个压缩的映像文件?

发表于 : 2010-09-08 0:57
janka
pityonline 写了:/usr 目录下有很多重要的系统文件,不能挂载到它吧?为什么不挂载到 /mnt 呢?

我打算弄一个100MB以内的linux,使用的是slitaz linux为原版进行修改。。。
其grub引导为:
kernel (hd0,0)/boot/bzImage
initrd (hd0,0)/boot/rootfs.gz

整个系统压缩成rootfs.gz,大小就30MB


我们都知道,这些微型linux 例如puppy等linux,都是通过initrd模式启动的。。。他吧整个系统都弄成一个镜像(rootfs.gz),然后通过initrd启动。。这样子不单可以节约空间(镜像可以是压缩的),而且,启动解压是存放在内存里面。。。。可以说是一个内存上运行的系统。。

问题出现了,在这些内存运行上的系统里面,你所修改的文件,编写的文件,修改过后的etc里面的配置文件,一旦重启,你所修改的东西会无效,因为,重启,依然会解压rootf.gz。。。。

/////////////////////这样子是不行的///////////////////////////////
当然,我们可以讲这个系统完全解压到一个硬盘分区来运行。。不通过initrd,直接启动内核就可以了。。
也就是直接kernel (hd0,0)/boot/bzImage rw root=/dev/hda1 就可以启动了。。
而且,一切的修改,都基于硬盘,也得以保存。。
但是,这样子的系统,却用上了300MB以上的空间。。非常大!!比起原来的30MB大得多了。。。
//////////////////////////////////////
所以,只能继续采用压缩的方式但是,又要解决文件保存。

为了解决自己修改后的文件,或者自己编写的文件得以保存。我修改过rootf.gz里面的etc里面的fstab,把/home。挂载到硬盘上的某个分区里面,那么,当运行这个rootfs.gz系统,在普通用户目录下的文件得以保存,因为是记录在硬盘的分区,,同理,其他一些目录一样可以挂载到其他分区。。。
这个倒是实现了。。。也很简单。。虽然,可以解决普通用户的文件得到保存,其实,同理,root用户也可以。。但是,那些etc目录就应该不能这样子了。。

对于rootfs.gz。。。里面,就/usr这个目录占用了95%的空间,ok

下面我打算采取如下的思路:
除/usr目录采用压缩方式外,其他的目录直接存放在硬盘上:::这样子用的空间很少的。。。。不到10MB,而压缩的/usr也就25MB

接着,由于/usr目录很大,讲之压缩成一个镜像文件。空间不用30MB。。。这样子,整一个系统不到50MB 比300MB的少多了。
然后,系统启动的时候,mount这个镜像文件
这样子,就方案来说应该可以的。。但是,可行性是一个问题。。。

我试着将/usr目录弄成压缩的镜像,通过initrd启动,但是失败了(个人认为,这个方法应该可以,也许是我弄少某些地方)(ps:我看别人的xpud Linux通过这种方式成功挂载opt目录,但是,具体的实现方式找不到。。。)

为了测试可行性,我不弄成一个压缩文件 ,先弄成一个iso镜像文件
在机器启动的时候,自动mount这个iso镜像。。。可是,提示error while loading share library :file too short

如果我不让之mount这个iso镜像的话,可就提示can 't not find ***file

自动mount这个iso镜像后,就提示files too short

我在想,是不是iso不能写的缘故呢??上网找了资料,好像也不管用。

ps:我个人认为,mount这种方式应该可行的。。

因为,我将mount命令是添加在initial里面的,也就是,内核加载完后,就读取这个ini了。。那么,我这个mount是添加第一行。一开始就直接mount了。所以,当系统需要调用/usr里面的文件的时候,不会提示找不到文件的。。。上面的iso加载实践也应该说明这一点。

但是,弄到现在,我的问题还在起步。好像没什么进展。。。郁闷。

Re: 如何挂载一个压缩的映像文件?

发表于 : 2010-09-08 8:47
pityonline
抱歉,是我看错了。
这种方式好像有些类似我的 智器 Smart Q5 的启动方式,它的固件(安装文件)解压后是这样的:

代码: 全选

header  homefs.tar.gz  initramfs.igz  qi.nb0  rootfs.tar.gz  u-boot.bin  zimage
但它的原理我没搞清楚,楼主的问题对于我来说蛮深奥的,等楼主搞定后一定要来分享一下哦……

Re: 如何挂载一个压缩的映像文件?

发表于 : 2010-09-08 15:29
gamesun
以前在arm上用网络挂载过android的文件系统,PC上到ubuntu不熟阿

Re: 如何挂载一个压缩的映像文件?

发表于 : 2010-09-08 15:36
eexpress
iso挂载啊。你的iso制作的时候,注意那格式的选择没。缺省的iso的文件名,可短了。要改的。
iso可不能修改的,是不是适合你的系统,可就不知道了。

Re: 如何挂载一个压缩的映像文件?

发表于 : 2010-09-08 15:53
gamesun
eexpress 写了:iso挂载啊。你的iso制作的时候,注意那格式的选择没。缺省的iso的文件名,可短了。要改的。
iso可不能修改的,是不是适合你的系统,可就不知道了。
测试iso到话在普通系统上挂载到cd里看看能不能用就知道了

Re: 如何挂载一个压缩的映像文件?

发表于 : 2010-09-08 16:04
冲浪板
想保存....,那么可以另外挂载,

Re: 如何挂载一个压缩的映像文件?

发表于 : 2010-09-08 22:33
janka
eexpress 写了:iso挂载啊。你的iso制作的时候,注意那格式的选择没。缺省的iso的文件名,可短了。要改的。
iso可不能修改的,是不是适合你的系统,可就不知道了。

制作的时候应该没问题的。。。
启动后,我直接cd /usr能看到里面的文件。。。。是确实挂载到iso。。。

另外,我也制作成img磁盘镜像文件,同样也能挂载到,也出现同样的问题。。。。。郁闷。。