UBUNUTU 启动 与 优化开机速度建议

一、linux系统的启动主要分三部分:
 bootloader -> kernel -> user space


1、bootloader之前的硬软件部分,包括从按下power button->powersupply->cpu->bios->load MBR 这一部分大多x86的事情,
和linux关系不大,就不多说了,有兴趣就google啦...

2、user space部分和kernel代码关系不大,但因为存在kernel mounts root filesystem这一问题,也就是和kernel完成初始化
之后向userspace转移相关联的问题,所以大概讨论下三种情况:initrd, initramfs, direct mount ROOT_DEV。

3、kernel部分是这一问题的主要内容。以start_kernel(init/main.c)为界前后可以笼统的分为两部分。

start_kernel之前x86的主要事情是把系统带入具备分页机制的保护模式。分页和保护是现代操作系统的基础,有了这个最基
本的基础之后,从start_kernel开始,linux开始初始化它的各个子系统(subsystem),直到mount root filesystem,再启动root
 filesystem上面的/init程序,完成到user space的转移。/init之类的程序会做所有系统内和kernel无关的事情,主要是启动
各种服务,这一部分占用了系统启动的绝大部分时间,这一部分之后就是出现login界面了(console或gui的),系统到此启动
完毕,等待用户开始登录使用。

先讨论个框架,从setup(arch/x86/boot/header.S:_start)代码到startup_32,start_kernel之前和之后的代码后面再讨论,包括
前面提到的mount root filesystem的三种情况。

二、UBUNUTU 优化开机速度建议:


1.启动部分必须再次优化,估计要使用像gentoo那种。

2.xorg只要2s的话,那xorg必须再优化,而且不能用闭源的显卡驱动。

3.udev这玩意得改改,内核要自己创建必要的设备文件,从而让udev往后拖和其他进程并行启动,目前这种状态是没有可以
和udev并行启动的.

4.新版本的hwclock有个--systz选项,利用已知的系统时间结合timezone来重新设置系统时间。这一优化很好,因为内核启
动时已经从硬件中读出时间了,启动脚本实在没有必要再去读一次,利用此优化后hwclock操作的速度相当快,从bootchart图
中可以看出,hwclock已经消失因为它花费的时间太小了以至于小于bootchart采样时间间隔,如此一来启动过程的hwclock所
费1-2s的时间可以消除。

方法:删除/etc/rcS.d/SXXhwclockfirst.sh;修改/etc/rcS.d/SXXhwclock.sh中的--hctosys为--systz就可以了
效果:其实10s时桌面已经可用了
猜想:如果配以ext3、ext4等文件系统那么10s以下启动时间不再是梦想,因为我的机器用的xfs,速度与ext4有差距。

你可能感兴趣的:(UBUNUTU 启动 与 优化开机速度建议)