鸟哥基础第十八章-启动流程

启动流程补充:

电脑开机
|
CPU,北桥运行
|
BIOS在flash memory运行
|
BIOS检测硬件
|
BIOS读取CMOS中的用户设定
|
BIOS信息整合成SMBIOS写入内存中
|
BIOS自解压到内存中
|
BIOS启动POST程序

初始化各种主板芯片组

初始化键盘控制器8042.

初始化中断向量,中断服务例程.
初始化VGA BIOS控制器
显示BIOS的版本和公司名称
扫描软驱和各种介质容量
读取CMOS的启动顺序配置,并检测启动装置是否正常

|
BIOS将所有检测到的临时设备信息写入SMBIOS___________^__以上只能通过诊断卡查看错误信息。
|
BIOS调用INT 19H的2号功能来读出硬盘MBR扇区的内容,将其读入到内存0000:7C00h,并跳转至此处执行
|
BIOS启动MBR上面的引导程序stage1
|
引导程序加载stage1.5
|
引导程序通过stage1.5识别文件系统,并加载文件系统中的stage2
|
stage2加载grub.conf配置文件
|
通过配置文件加载kernel和initrd

资料来源:

linux操作系统之奥秘

http://zhumeng8337797.blog.163.com/blog/static/1007689142011828012299/
http://blog.csdn.net/kendyhj9999/article/details/7293925

启动流程

1、开机后,BIOS读取CMOS的信息,然后BIOS里的自检程序对硬件进行自检,自检确定可启动的设备后,
      通过刚才从CMOS里获取的第一个启动设备的代号,去读第一个启动设备的MBR
2、MBR里面存有引导程序,引导程序里面记录了linux核心(vmlinuz)和initrd.img的存放地址,
      引导程序通过这个地址来加载linux核心
3、linux核心解压缩到内存中,并通过initrd.img来建立虚拟盘,虚拟盘加载驱动,并读取BIOS的硬件信息交给核心,
      linux核心检测所有硬件并从虚拟盘中加载驱动
4、linux核心加载完驱动后删除虚拟盘,并执行第一个程序/sbin/init
5、init:

程序:/sbin/init
配置:/etc/inittab

cat /etc/inittab | grep -v ^# | grep -v ^$
id:5:initdefault:                            #默认是按5来启动,initdefault:表示默认运行等级
si::sysinit:/etc/rc.d/rc.sysinit        #启动服务前先根据/etc/rc.d/rc.sysinit进行检测和设置
l0:0:wait:/etc/rc.d/rc 0                 #sysinit:表示系统初始化操作项目
l1:1:wait:/etc/rc.d/rc 1                 #wait:后面的接的项目必须执行完才能继续
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5                                 #就是按这个启动相关的服务
l6:6:wait:/etc/rc.d/rc 6
ca::ctrlaltdel:/sbin/shutdown -t3 -r now       #按crtl+alt+del重启
pf::powerfail:/sbin/shutdown -f -h +2 “Power Failure; System Shutting Down”
#接UPS后的设置
pr:12345:powerokwait:/sbin/shutdown -c “Power Restored; Shutdown Cancelled”
#接UPS后的设置
1:2345:respawn:/sbin/mingetty tty1            #开启6个tty终端,respawn表示不能结束终端,
2:2345:respawn:/sbin/mingetty tty2            #结束后会自动开起来
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
x:5:once:/etc/X11/prefdm -nodaemon         #按5启动的话开启X11

5.1、/etc/rc.d/rc.sysinit                                                  #rc.sysinit详解

首先/etc下面也有很多rc目录,但都是链接文件,链接到/etc/rc.d目录里面

ls -l /etc | grep rc | awk ‘{print $9 $10 $11}’ | grep -v ^$
init.d->rc.d/init.d
rc->rc.d/rc
rc0.d->rc.d/rc0.d
rc1.d->rc.d/rc1.d
rc2.d->rc.d/rc2.d
rc3.d->rc.d/rc3.d
rc4.d->rc.d/rc4.d
rc5.d->rc.d/rc5.d
rc6.d->rc.d/rc6.d
rc.d
rc.local->rc.d/rc.local
rc.sysinit->rc.d/rc.sysinit
所以实质上,所有的rc配置文件都放在/etc/rc.d目录下

这个配置文件有600多行,服务相关配置文件全部存放在/etc/sysconfig里,任务有:

设置网络
给HOSTNAME赋值
加载/proc
加载/usb驱动
加载/sys
运行/etc/init.d/functions    #functions文件详解
检测是否开启SElinux
屏幕默认字体设置
屏幕上输出:welcome to 什么什么
设置日志级别

*给cmdline赋值
开始接口设备检测:

IDE
SCSI
network
sound
其他

加载用户自定义模块:/etc/sysconfig/modules/*.modules
加载模块:/etc/rc.modules,这个模块fedora4里面没找到
挂载/dev/pts
配置核心设置值/etc/sysctl.conf
设置系统时间
设置主机名
设置ACPI
确定是否进行fsck
设置RAID
设置LVM2
卸载initrd
进行quota转换
以读写方式挂载根目录:/
*清除selinux
清除/etc/mtab
挂载信息重新写入/etc/mtab

/
/proc
/sys
/dev/pts
/proc/bus/usb

挂载所有其他文件系统,并开启quota
??
??
启动随机数
对系统进行重新设置
清除临时文件
将启动信息写入到/var/log/dmesg
告知已离开rc.sysinit

5.2、/etc/rc.d/rc5.d

该目录下的文件全部都是链接文件,全部链接到/etc/init.d下面,而/etc/init.d是链接到/etc/rc.d/init.d的
所以,该目录下所有文件都是链接到/etc/rc.d/init.d。该目录就是启动相关服务的作用。
/etc/init.d里面是脚本,而/etc/sysconfig/里面是这些脚本的设置文件
#服务详解
S:表示开机时启动,数字表示启动顺序

ls | sort
S03vmware-tools
S05kudzu               #硬件检测,硬件不经常更新建议关闭
S06cpuspeed        #动态调节cpu速度来节能
S08iptables
S09isdn                 #isdn用户用的
S09pcmcia            #支持笔记本接口
S10network
S12syslog
S13portmap
S14nfslock
S15mdmonitor        #监测RAID和lvm的信息
S18auditd               #kernel的审计
S18rpcidmapd        #用于nfs
S19rpcgssd            #用于nfs
S25bluetooth
S25netfs
S26apmd
S28autofs
S30nscd                 #为nis、ldap提供更快的验证
S33nifd
S34mDNSResponder
S44acpid
S55cups
S55sshd
S80sendmail
S85gpm                  #支持鼠标
S87iiim                    #中文输入法
S90crond
S90xfs
S95anacron
S95atd
S97messagebus       #IPC进程间通信
S97rhnsd                  #通知官方的安全信息以及为系统打补丁
S98cups-config-daemon
S98haldaemon
S99local                    #用户自定义开机启动的程序

K表示关机时关闭的服务

K01yum
K02NetworkManager
K02NetworkManagerDispatcher
K05saslauthd                     #sasl认证
K10psacct                          #监测进程
K20nfs
K24irda
K30spamassassin
K35vncserver
K35winbind
K50netdump
K69rpcsvcgssd
K73ypbind
K74ntpd
K85mdmpd
K89named
K89netplugd                       #检测网络接口
K89rdisc
K94diskdump

另外应该还会启动xinetd

里面包含验证等服务:

cvs
eklogin
gssftp
klogin
krb5-telnet
kshell
rsync

5.3、/etc/X11/prefdm            #详解

设置是否自动登录
选择界面

6、开启/bin/login

7、登录后由shell控制主机