新一代的快速启动脚本——quick-init
好吧,这又是一篇 Arch Linux 专用的文章,使用其他发行版的 TX 们请瞪眼看着吧……
还记得上次说的 Finit-ARC 么?quick-init 系列脚本就是 Finit-ARC 的延续,其实这不是什么新的东西,自从我发了那两篇文章,Finit-ARC 就停止了,据说是出于安全性考虑,不再开发使用 C 语言的 Finit-ARC,而是使用像 Arch Linux 原生的 init-scripts 一样的 Shell 脚本。
那么 quick-init 的原理是什么呢?
The reimplementation of init-scripts consists in the modification of the inittab runlevels and the start of system and Xorg without udev.
The first system level contains the creation of static devices necessary to boot system until fscheck. Then Xorg is started and in runlevel 3 it starts udev, swapon, all services etc...
大意说就是加载必要的设备和配置,然后在 udev 没有启动的情况下马上启动 Xorg,然后再启动 udev,swapon 和其他服务等等。
我们通常所说的启动时间都是进入 Xorg 的时间,这样启动速度就快了很多了~
quick-init 的安装很简单,直接 yaourt -S quick-init 即可,重启就可以看到效果,如果你对 init-scripts 比较熟悉,还可以自行修改,去掉一些用不到的设置,比如 lvm、raid、其他显卡的配置,你还可以通过参考《启动后自动进入X》这篇文章来绕过 GDM、KDM 等显示管理器,更加快速的启动电脑。
来看看我优化的效果吧~(这是启用了自动加载模块的效果,如果手动加载的话,可能会更快)
Finit-ARC 多项更新:我的快速启动终于完美了~
上次说的 Finit-ARC 快速启动方案,就像文中所说,其实在我这里根本用不了。
这是当时论坛上已经确认的 Finit-ARC 的 BUG,好在作者 adriano 更新很是勤奋,一天内在 github 上提交了十多次更新,不但解决了 hald 段错误的问题,还有很多的改进。
主要的改进有:
- 增加新的静态设备
- 支持 LVM
- 启动顺序调整(udev 和 hal 可以用了)
- 修复时钟 BUG
- 增加 swap 挂载功能
- 为 Xorg 热插拔支持自动开启 HAL 和 DBUS
现在作者似乎想放弃 Finit-ARC,开始一个新的、与 Arch Linux 完美兼容的 init 项目,拭目以待吧。
另外,如果你关注 Finit-ARC,或者想要帮忙,可以去这里看看。
下面是我现在的启动图,虽然比不好使的时候长了一秒钟。
Finit-ARC: 让你的 Arch Linux 4 秒启动!
感谢 YCF 兄在 twitter 上的推荐。
Finit-ARC 是什么呢?这是一个加快 Linux 系统启动的程序,它的前身是大名鼎鼎的 fast-init。
我们知道,通常 Linux 启动是靠脚本来控制的,这可能是 /etc/rc.sysinit,大家知道,Shell 脚本是解释性的,速度很慢(相对编译性的语言来说),那么,何不用一种编译性的语言来操纵系统的启动呢?
Finit_ARC 就是基于这一原理,它采用纯 C 语言写成,设置环境变量等等操作所调用的都是系统的 API,还有一些使用 system() 函数执行的程序,并且处理的时候还用了多进程,这样效率岂不是有很大的提高?
是的,经过实验,使用 Finit_ARC 启动的电脑,从 GRUB 到 Shell 登录,可能达到只需要 3-5 秒!
请注意:Finit-ARC 目前还是 Beta 版本,并且只能用于 Arch Linux!
那么,怎样安装 Finit-ARC 呢?
1.从这里安装相对稳定版:
http://aur.archlinux.org/packages.php?ID=25159
或者从这里安装 git 版(仅用于测试目的!)
http://aur.archlinux.org/packages.php?ID=26314
2.安装完成后务必正常启动(或重启)系统一次。
3.编辑 /boot/grub/menu.lst,把 init=/sbin/finit-arc 作为内核参数加入进去。
重要!Finit-ARC 不支持 UUID,所以在 /boot/grub/menu.lst 和 /etc/fstab 中,应该把所有 UUID 形式改成 /dev/sd** 的格式!
更详细的介绍和一些注意事项,可以参考 Arch Linux 官方论坛。
下面说说我的情况:
我的电脑启动速度没有经过任何优化,有的话也仅仅是开机不让 NTFS 分区挂载,模块用的是 AUTOLOAD,所以比较费时间。
使用 Finit-ARC 之前,我的启动时间是 21 秒。
使用 Finit-ARC 之后,启动时间是 13 秒。
不过,很悲惨的,遇到了 hald 段错误的问题,开机后键盘鼠标都不能用……论坛上其他人也出现了此问题,所以,优化要谨慎啊……
不过其实也没啥风险,只要 fallback 那个条目的内核参数没被你改了,出了问题从 fallback 进系统改回来就行了。
有没有想要试一下的呢?召唤小白!




