**************************************************************************************************************************************************************************************
1,开始加电
2,BIOS自检,获取机器里的设备信息。BIOS分两块,一是post程序二是runtime服务。post用来自动检测设备状况是否可用,并做初始化。自检速度主要取决于内存大小。一般是检测物理设备,cpu、内存、设备。runtime(BIOS中断服务)则一直保持挂起,直到系统启动完成。BIOS读取并执行位于第0柱面0磁头1扇区MBR(主引导扇区),控制权交给MBR。至此,BIOS的工作完成。
2.5,MBR只有512字节,又分为三部分:主引导程序(grub)、硬盘分区表、硬盘标识符。
grub引导过程:一般而言,grub引导过程分为两个阶段:stage1和stage2。
stage1:BIOS将stage1(/stage1/start.S)载入内存0x7c00处执行,任务很单纯,就是读取和执 行/stage2/start.S。stage1没有直接读取文件系统的能力。
stage1.5:当把/stage1.5/start.S载入内存后,grup才有访问文件系统的能力。再从/boot/grup 目录下加载stage2.
3,加载内核程序(kernel):stage2加载后,读取grub.conf文件,加载系统镜像。控制权交给内核。
关于linux设备驱动加载:除内核自带一些系统基本的设备驱动外,另外部分则以模块的形式放在 initrd中,此时也会启用。
4,执行/subin/init程序,创建getty进程,调用login进程,加载用户空间。init作为linux所有进程的鼻祖,
5,执行/etc/inttab,该文件记录着系统默认启动级别,且该文件是所有用户共有的。
0:关机
1:单用户模式
2:多用户无网卡模式
3:多用户命令行模式
4:暂没使用
5:多用户图形界面
6:重启
若要永久修改启动级别,可以在这个文件上进行更改。暂时性更改启动级别:init number
runlevle可查看当前和上一次启动级别。
6:执行/etc/rc.d/rc.sysinit文件,该文件主要是加载字符、块设备驱动。该文件所有用户共有
7:执行rcN.d,启用相应的服务和配置。读取该目录下的/etc/rc.d.rc.local
-------------------------------------------------------------------------------------------shell启动过程
1,执行并创建了init
2,init创建getty,创建连接终端号
3,getty后创建login,用户可以输入用户账号密码,登陆shell
4,启用bash程序
5,执行/etc/profile(给shell设置环境变量,所有用户通用)
6,在用户目录下查找并执行.bash.profile,设置用户给shell配置的私有环境变量
如果没有找到这个文件,则依次查找.bash_login和.profile
(注:上述三个文件开头有个‘.’号,在该目录下ls是无法显示出的,只有ls -A才可以)
7,执行用户所属的.bashrc,如果要修改用户私有的shell环境变量,则应该在这个文件下修改。
**************************************************************************************************************************************************************************************