linux启动优化:mdev -s自从…

原创 2013年12月02日 09:12:36

转载请说明出处:http://control.blog.sina.com.cn/admin/article/article_add.php

近期工作中遇到的问题如下:

    linux启动后加载根文件系统时,会停留时间很久,跟人一种死机的感觉,于是老大要求优化linux的启动时间。

    先第一步做的是给linux内核启动加上时间戳,方法:配置linux内核

make menuconfig--->Kernel hacking-->show timing information on printks选中即可,重新编译内核下载。

     发现linux内核启动的时间是可以接受的在3s左右,主要时间是在根文件系统的挂在出停留时间比较久,于是下面就把中心放在根文件系统的优化上。

 

      linux内核启动的最后是挂在根文件系统,打印信息如下:

   3.810000] Failed to execute /init.  Attempting defaults...执行到这时明显逗留时间比较长,大概有5s左右, 有这里我们想到 系统启动后 自动加载 /etc/init.d/rcs 打开rcs,在开头加上一个打印语句echo "*******test0****",
用来验证,保存重启,神奇的发现Failed to execute /init.  Attempting defaults...之后紧接着出现*******test0****,这个充分说明了,问题出现在/etc/init.d/rcs文件中,我在该文件中(由于文件不大)我每条指令下加一个打印输出语句echo "*******test1****"(一次增加)。最后终于找到最耗时间的地方是/sbin/mdev -s,下面的问题就是如何优化它。

     我们首先要了解一下mdev -s自动创建设备节点的原理和方法:请参考这篇文章

http://blog.csdn.net/hugerat/article/details/3437099

mdev扫描 /sys/class 和/sys/block中所有的类设备目录,如果在目录中含有名为“dev”的文件,且文件中包含的是设备号,则mdev就利用这些信息为这个设备在/dev下创建设备节点文件。

热插拔事件:由于启动时运行了命令:echo /sbin/mdev > /proc/sys/kernel/hotplug ,那么当有热插拔事件产生时,内核就会调用位于/sbin目录的mdev。这时mdev通过环境变量中的 ACTION 和DEVPATH,(这两个变量是系统自带的)来确定此次热插拔事件的动作以及影响了/sys中的那个目录。接着会看看这个目录中是否有“dev”的属性文件,如果有就利用这些信息为这个设备在/dev 下创建设备节点文件。

          由于我们做的产品是在linux挂在文件系统后直接运行我们的应用程序(一直),所以我们boss希望我们的应用界面尽可能早的出现,我们的应用程序启动是在文件系统下/etc/init.d/rcS中的最后添加的启动脚本。但是mdev -s出现的必须比较早,如果放在应用程序后面,会造成设备节点没创建而导致应用程序的不正常运行,但是应用放在后面吧,有启动的较晚,(由于mdev自动创建节点比较耗时,前面已经说过),那如何解决这个问题呢?

         解决办法:

         最简单的方式是我们应用必须用的设备节点在前面手工创建(还是在rcS启动脚本里面),对于其他的可以放在我们的应用启动后在用medv -s自动创建。

     

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Linux热插拔及mdev机制

  • 2017年07月19日 20:16
  • 4KB
  • 下载

Linux启动参数及实现 __setup…

#define __setup_param(str, unique_id, fn, early)            /     static char __setup_str_##unique...

Linux设备模型(热插拔、mdev 与 firmware)

热插拔 有 2 个不同角度来看待热插拔:    从内核角度看,热插拔是在硬件、内核和内核驱动之间的交互。    从用户角度看,热插拔是内核和用户空间之间,通过调用用户空间程序(如hotplug、...
  • yuzeze
  • yuzeze
  • 2016年06月28日 12:26
  • 94

嵌入式linux中mdev的原版英文使用说明及其源代码

mdev是busybox引入的,busybox有其功能描述及源码实现,这是学习mdev的第一手资料,皆来自busybox1.7.0推荐如下: ------------- MDEV Primer----...

Linux设备模型之热插拔、mdev 与 firmware

改文件源于“http://blogold.chinaunix.net/u1/34474/showart.php?id=460882”,转载该文档只是为了本地备份,请作者原谅。热插拔有 2 个不同角度来...

Linux热插拔及mdev机制

1、创建设备类,是为了让mdev知道根据这些信息来创建设备节点,根据/sys来创建,所以从devfs开始,根文件系统就引入了一个/sys目录,/sys/dev下面都是内核加载的驱动的主从设备号   ...

Linux设备模型(热插拔、mdev 与 firmware)

Linux设备模型(热插拔、mdev 与 firmware) 转自:http://blog.chinaunix.net/space.php?uid=20543672&do=blog&cuid...

linux中的热插拔和mdev机制

linux中的热插拔和mdev机制   mdev是busybox自带的一个简化版的udev     作用是在系统启动和热插拔 或动态加载驱动程序时,自动产生驱动程序所需的节点文件,在文件系统中的...
  • bmbm546
  • bmbm546
  • 2015年09月07日 16:27
  • 367

linux中的热插拔和mdev机制

作用是在系统启动和热插拔 或动态加载驱动程序时,自动产生驱动程序所需的节点文件,在文件系统中的/dev目录下的设备节点都是由mdev创建的   mdev是busybox自带的一个简化...

Linux下udev和mdev详解

/* * Edison Gao */ 设备文件系统有devfs,mdev,udev这三种如果你使用Linux比较长时间了,那你就知道,在对待设备文件这块,Linux...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux启动优化:mdev -s自从…
举报原因:
原因补充:

(最多只允许输入30个字)