启动流程补充:
电脑开机
|
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/inittabcat /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启动的话开启X115.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.sysinit5.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
rsync5.3、/etc/X11/prefdm #详解
设置是否自动登录
选择界面6、开启/bin/login
7、登录后由shell控制主机