具体来说,使用udev自动挂载U盘,根据其自带的日志,大约需要3-4秒。听起来可能没那么多,但它是在一个系统的嵌入式发行版上,该系统之前使用了一个轻得多的操作系统,在不到 1 秒的时间内就可以使用。我不必让它那么快,但目前它的速度已经足够慢,足以惹恼系统的用户。
简而言之,在加快速度方面我有哪些选择?
答案1
正如 Gilles 评论的那样,您可以打开内核和 udev 日志记录。 Arch Wiki 有一个很好的来源[1] 为了这。至少考虑使用这些内核参数:
debug ignore_loglevel log_buf_len=10M LOGLEVEL=8 earlyprintk=vga,keep udev.log_priority=8
听起来你的操作系统是在嵌入式系统上,所以 YMMV 有 10M 日志缓冲区。相应地进行调整。
去年,一位 Gentoo 用户通过挖掘其启动过程中的任意sleep
调用(以及其他内容)并将其替换为相关的同步原语,将其启动序列缩减至 2 秒以下[2]。如果这对您有所启发,那么在您分析时,辨别用于安装 USB 驱动器的代码路径,并查看其源代码以进行任意sleep
调用。
如果没有更多细节,很难提供明确的行动方案。
- 您使用什么操作系统?什么版本?
- udev 是什么版本?
- 您使用哪个挂载程序?什么版本?
- ETC。
如果这些选项太低级,您可以尝试用替代品替换发行版的部分内容。研究 mdev 作为 udev 的替代品(假设您没有使用 systemd),或者编辑自动挂载 udev 规则并将挂载程序替换为另一个实用程序(mount、pmount、udisks、udevil 等)。
除此之外,谷歌、阅读、探索、调整和测量。
下面是一些有关使用 udev 自动挂载的可能的阅读材料。
[1]https://wiki.archlinux.org/index.php/Boot_debugging
[2]http://gentooexperimental.org/~patrick/weblog/archives/2013-10.html
[3]http://www.tuxradar.com/answers/526#null
[4]http://wp.dejvino.com/2013/08/linux-udev-usb-automount-script/
[5]http://ubuntuforums.org/showthread.php?t=168221