ramdisk文件系统的制作

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


设已建立好的文件系统压缩文件为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文件,一样的。


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


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 …将其当作块设备文件进行操作。
    
bootargs 参数设定:

几个必须要注意的地方

第一:如果使用ramdisk,必须制定起始地址 跟 大小。

第二:如果不使用ramdisk,必须声明不适用ramdisk

第三:ramdisk_size必须得指定,不指定起不来呢.

mem=64M console=ttyS0,115200 initrd=0x21100000,6291456 root=/dev/ram0 rw ramdisk_size=40960

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
作为AI语言模型,我没有权限制作ramdisk文件系统。但是,我可以提供一些关于制作ramdisk文件系统的信息。 Ramdisk文件系统是一个临时的文件系统,它位于内存中。它通常用于嵌入式系统,因为它可以快速启动和关闭,并且可以减少对闪存的读写操作,从而延长设备的寿命。 以下是制作ramdisk文件系统的步骤: 1. 创建一个空的ramdisk文件。可以使用以下命令: ``` dd if=/dev/zero of=ramdisk bs=1M count=10 ``` 这会创建一个名为`ramdisk`的10MB空文件。 2. 格式化ramdisk文件。可以使用以下命令: ``` mkfs.ext4 ramdisk ``` 这将使用ext4文件系统格式化ramdisk文件。 3. 挂载ramdisk文件。可以使用以下命令: ``` mkdir /mnt/ramdisk mount -o loop ramdisk /mnt/ramdisk ``` 这将创建一个名为`/mnt/ramdisk`的目录,并将ramdisk文件挂载到该目录中。 4. 将根文件系统的内容复制到ramdisk中。可以使用以下命令: ``` cp -a /path/to/rootfs/* /mnt/ramdisk/ ``` 这将递归地复制`/path/to/rootfs`目录下的所有文件和子目录到ramdisk中。 5. 卸载ramdisk文件。可以使用以下命令: ``` umount /mnt/ramdisk ``` 这将卸载ramdisk文件并释放内存。 6. 将ramdisk文件作为内核参数传递给启动脚本。这需要在启动脚本中添加一个类似于以下行的内核参数: ``` initrd=/path/to/ramdisk ``` 这将告诉内核在启动时加载ramdisk文件作为根文件系统。 以上是制作ramdisk文件系统的基本步骤。但是,具体的步骤可能会因操作系统和硬件平台而异。因此,建议查阅相关文档或参考其他资源进行操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值