基本流程:
1)加载bios的硬件信息;
2)读取MBR的kernelloader引导信息(从而选这读取那个操作系统的内核)
3)加载操作系统的核心信息
4)内核执行init程序并且取得运行信息
5)init程序执行/etc/rc.d/rc.sysinit
6)启动核心的外挂式模块/etc/modules.conf(ubuntu是在/etc/modules文件里面)
7)init执行运行一级的各个批处理文件(script)
8)init执行rc.local文件
现在来详细介绍一下其中的几个部分
4)中内核执行init程序
加载了/etcinittab取得了系统的等如状态和方式
内核执行的第一个程序就是/sbin/init程序,程序读取/etc/inittab中的文件,决定已那一个run-revel来启动系统,从而可以在这个里面更改默认的登录级别
(ubuntu中已经没有/etc/inittab了,被upstart软件包取代了)
-_-||真的讨厌这种做法,不管是好是坏,我都希望好多标准能够同意,尽量同意,懒得记忆这种特殊情况阿,虽然ubuntu很好!
然后加载/etc/rc.d/sysinit
在这个脚本里面会设定主机名称,默认path等等
6)中,加载了外挂式的模块
7)根据不同的run-lever来加载不同的服务
在/etc/rc.d/rcN.d中,这里的n是在inittab中取得的run-lever
(ubuntu中在/etc/rcn.d中)
如下:
README S12dbus S20cupsys S25bluetooth S99acpi-support
S01policykit S17mysql-ndb-mgm S20hotkey-setup S25pulseaudio S99laptop-mode
S05vbesave S18avahi-daemon S20nvidia-kernel S30gdm S99rc.local
S10acpid S18mysql-ndb S20powernowd S89anacron S99rmnologin
S10sysklogd S19mysql S20rsync S89atd
S10xserver-xorg-input-wacom S20apmd S24dhcdbd S89cron
S11klogd S20apport S24hal S98usplash
在这里,你可以看到很多文件,s开头的表示启动,k开头的表示销毁,数字表示启动的顺序
8)在/etc/rc.d/rc.local里面有一个脚本,可以在这个里面完成开机,关机启动时候应该关闭和启动的程序
(ubuntu在/etc/init.d/rc/local里面)