导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→信盈达嵌入式培训高级工程师传授linux新方法[eduann]

 *第59417篇: 信盈达嵌入式培训高级工程师传授linux新方法

  
楼 主:eduann 2013年7月10日16:55
 信盈达嵌入式培训高级工程师传授linux新方法
在Linux操作系统中,有一项特殊的功能——初始化内存盘INITRD(INITial Ram Disk)技术,而且内核支持压缩的文件系统映像。有了这两项功能,我们可以让Linux系统从小的初始化内存盘启动,并把系统内存的一部分作为根文件系统挂载,而且不使用交换分区(如果不运行X Windows这是完全可以的),即把Linux系统完全嵌入到内存中,而不依赖于任何其他硬盘。现在PC机内存至少128M,而根文件系统所用的只有30MB,因此不仅不会使整机性能下降,反而有很大的提高。

由于系统不工作在硬盘上,所以系统消除了由于机械驱动而导致的问题;因为系统运行于内存中,根文件系统和操作完全在CPU/RAM环境下,系统性能在速度和可靠性方面非常好;它不会由于非法关机而破坏文件系统,因为我们每一次启动是把压缩的文件系统解压至内存盘中作为根文件系统挂载。

1 硬件要求

对于这样一个系统,硬件不需要特别的设计,只是通过普通的PC机上的组件实现。值得一提是系统的内存的大小,它至少应该有64M。因为30M作为Ramdisk使用,剩下30多兆作为系统运行,才能保证系统的正常工作,我们现在的计算机内存一般为128M,这个条件都能满足。唯一特别的是一个flash盘 ,它相当于一个IDE接口的硬盘,大小为20M,主要用它作为启动LILO和放置根文件系统压缩包。

2 Ramdisk的使用

Ramdisk就是将内存的一部分分配为一个分区并作为硬盘来使用。对于系统运行时不断使用的程序,将它们放在Ramdisk中将加快计算机的操作,如大数据量的网络服务器、无盘工作站等。为了能够使用Ramdisk,我们在编译内核时须将block device中的Ramdisk支持选上,它下面还有两个选项,一个是设定Ramdisk的大小,默认是4096k;另一个是initrd的支持。它既可以直接编译进内核,也可以编译成模块,在需要的时候加载。我们由于在启动时就用它,所以必须将它直接编译进内核。

如果对Ramdisk的支持已经编译进内核,我们就可以使用它了。首先在/mnt目录下创建目录ram,运行mkdir /mnt/ram;然后对/dev/ram0创建文件系统,运行mke2fs /dev/ram;最后挂载上/dev/ram,运行mount /dev/ram /mnt/ram,就可以象对普通硬盘一样对它进行操作了。值得注意的是,在创建文件系统的时候,在屏幕上输出1024 inodes ,4096 blocks,即ramdisk大小为4M=4096个块,但是我们挂载上之后,用命令df –k /dev/ram查看时,显示出来ramdisk大小只有3963K,这是由于文件系统本身占用了一些空间。

我们能根据需要改变ramdisk地大小。如我们要把默认的4M增大到10M,当ramdisk是直接编译进内核的情况下,可在LILO配置文件lilo.conf中加入一行:append=“ramdis_size=10000”,运行LILO后,重启计算机后,ramdisk大小变为10M,或者在启动是作为启动行参数ramdis_size=10000;当ramdisk是作为可加载模块编译时,需要在模块加载配置文件/etc/modules.conf中加入一行:options rd rd_size=10000,或者在加载rd模块是在后面加上说明,即insmod rd rd_size=10000。
深圳信盈达嵌入式单片机实训基地给你最实战的技术学习指导,项目教学。
详情可联系:安老师 QQ122330119 电话13926586805


>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:嵌入式系统开发过程中的常见问题和解决方法,信盈达资深工程师开课了

[下一篇主题]:[原创]专注PCB激光钢网制作37*47全国超低价60元/款起