第5讲.Linux引导流程解析 

wps_clip_p_w_picpath-3542
1、固件:solaris的固件:PROM/openboot,在运行中可用stop+A调出固件程序;
软件时钟#date;硬件时钟#hwclock(hardwareclock)同步及修改
当出现不熟悉的命令时要学会看help,#hwclock –help 
 
当出现时间不同时可用硬件同软件或反之:硬件同步软件时钟#hwclock –hctosys;软件时钟同步硬件#hwclock –systohc
当时间都不对时,可修改时间:man date查看date修改时间的格式;date [MMDDhhmm[[CC]YY][.ss]] 
  
  
man hwclock/hwclock --set --date="9/22/96 16:45:05" 
  
2、自举程序BootLoader(GRUB)
硬盘MBR:主引导记录Master Boor Recorder,windows下NTLDR和boot.ini;Linux下GRUB/LILO;
#vi /etc/grub.conf
 
vmlinuz-2.6.18-194.el5是一个内核文件(可执行),在/boot下;
 
/usr/src/Linux目录下一般会存放内核源代码文件,可编译升级
3、载入内核Kernel
它在启动加载时只做两件事:硬件驱动和启动一个初始进程init,内核更多包含驱动程序。
4、启动进程init后,它首先读取inittab
#ps -le|more;init为PID为1的第一个进程,它是所有进程的父进程,PPID是一个进程的父进程的PID;init的父进程是PID为0的内核调度器(Kernel scheduler),分配CPU时间和进程间的切换;
 5、读取执行配置文件/etc/inittab 
runlevel运行级别
 #init 3  //不重启切换级别,前为N时表示没切换过;
#ll `which telinit`    //telinit是init的软件连接
 
#init [0123456Ss]   //可以用s表示级别1 
#grep -v "^#" /etc/inittab|more            //显示除行首为#行的其它行
#man inittab          //man一下inittab这个配置文件,和命令一样不用指出目录;主要注意最后的process
 
id:5:initdefault:      //判断默认的运行级别,action常用取值:initdefault缺省级别、sysinit系统启动就执行后面的process命令、wait执行其后process命令,并等其结束再运行其他命令、ctrlaltdel按三键时执行process命令、respawn一旦其后process结束,便重新运行该命令。
si::sysinit:/etc/rc.d/rc.sysinit      
//系统服务初始化,如环境变量、系统时钟、加载字体、加载文件系统、生成系统启动信息日志等。这是所有级别在系统启动时都要运行的SHELL脚本,可加自启动配置在这个文件未尾。
l5:5:wait:/etc/rc.d/rc 5        //判断默认级别后,调用/etc/rc.d/rc这个SHELL脚本,执行相应级别/etc/rc.d/rc[n].d目录下的服务命令,并等到其执行结束再运行其它命令。
#ls /etc/rc.d/rc3.d     //这是/etc/rc.d/init.d里服务程序脚本的软连接;[K|S]kill和start,数字顺序,服务名;配置LINUX服务器时,可以在这里改S来禁止此服务启动;另#ll /etc/rc3.d是这个目录的软连接(UNIX多用此)
  ca::ctrlaltdel:/sbin/shutdown -t3 -r now     //在虚拟机里可设置相应的热键定义
2:2345:respawn:/sbin/mingetty tty2    //终端切换CTRL+ALT+F1-F6,F7返回
6、手动关闭或启动服务
在/etc/rc.d/init.d目录里是所有服务的启动脚本,可以status、start、stop、restart、reload
 
7、设置自启动程序
自己添加的服务要在运行级别里随系统启动,可以有三种方法:ln –s;chkconifg;ntsysv
1).先建立自启动服务脚本msg.script: //建议自建服务也放在一个固定的目录下
 
2).#chmod u+x /etc/rc.d/init.d/msg.script   //增加可执行权限
3).可用三种方式建立自启动
#ln –s /etc/rc.d/init.d/msg.script /etc/rc.d/rc3.d/S100msg.script  //在3级别运行
 
重启或init 3后,可以看到,一启动就会Starting 0msg.script,然后将信息记录在msg.today里
#chkconfig –-level 2345 msg.script on     //出错不支持msg.script,用vsftpd可用
 
#ntsysv –-level 3    //可比较直观的看到在某个运行级别是否启用或作更改
8、dmesg 查看内核引导期间的信息,可以检测添加的硬件在启动时能否被内核所识别
#dmesg | grep sda   内核启动时的所有信息中的sda
#ls /var/log  //所有日志文件都在这个目录里,启动时如果出错或其它都可以通过这里的文件来判断
 
#grep syslog /var/log/messages|more