Linux引导流程
来源:广州中睿信息技术有限公司
发布时间:2012/10/21 23:25:16 编辑:itlead 阅读 1562


 计算机常识:

 硬盘MBR(Master Boot Recorder)主引导记录

 硬盘读取数据的第一个位置,存放自举程序、分区表

 Windows 使用NTLDR引导 配置文件为boot.ini
 Linux 使用GRUB引导 配置文件为 grub.conf

 软件时钟 date查看/设置
 硬件时钟(CMOS) hwclock查看/设置

       

获得命令主要选项设置帮助:命令 --help

 

  Linux引导流程解析   

固件firmware(CMOS/BIOS) --> POST加点自检   

| * 软硬件时钟设置、同步,帮助使用   

自举程序BootLoader(GRUB) --> GRUB配置文件  

| * 单用户模式、光盘修复模式 载入内核Kernel --> 驱动硬件   

| * dmesg、内核版本和存放位置 启动进程init  

| * 进程   读取配置文件/etc/inittab --> 读取运行等级   

| * 缺省运行级别initdefault   初始化/etc/rc.d/rc.sysinit   |   /etc/rc.d/rc   

| * 自启动程序管理、手工管理服务   /etc/rc.d/rcN.d(N=0-6)   |   启动X Window /etc/X11/prefdm

 GRUB   

内核启动程序存放目录 /boot   

配置文件 /boot/grub/grub.conf:

#缺省启动项   default=0   

#超时时间   timeout=5   

#引导时背景图片   splashimage=(hd0,0)/boot/grub/splash.xpm.gz   

#隐藏菜单,此项可去掉   hiddenmenu   

#可以设置密码 命令:grub-md5-crypt   

#password --md5 yourpassword   

#系统启动项标题   title CentOS (2.6.32-220.el6.i686)   

#boot目录所在硬盘分区   root (hd0,0)   

#将要启动的内核,在结尾加上空格s或1即可进入单用户模式   

#vmlinuz-2.6.32-220.el6.i686   

#中间数6,基数为测试版,偶数为正式版   kernel /boot/vmlinuz-2.6.32-220.el6.i686 ro root=UUID=fcfd578b-b174-496a-9412-bf5da64e8217 nomodeset rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD quiet rhgb crashkernel=auto LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM  

#镜像文件   initrd /boot/initramfs-2.6.32-220.el6.i686.img

 

  单用户模式-root密码忘了?   

e-进入GRUB菜单   

e-进入详细菜单   

选择kernel行,e-进入GRUB编辑状态,在末尾空格  

进入单用户模式:passwd root   退出:exit(回到默认运行等级)

 

  GRUB加密   

 grub-md5-crypt   

将得到的md5密码放在grub.conf的password --md5 加密密码

   inittab:

  # Default runlevel. The runlevels used are:   

  # 缺省运行等级. 运行等级有:   

  # 0 - 关机(设了此项会无法启动)   

  # 1|s|S - 单用户模式,只有root能登陆   

  # 2 - 字符多用户模式(不启动NFS,NFS-Network File System,实现Linux/UNIX的文件共享,安全性差)   

  # 3 - 字符多用户模式   

  # 4 - 自定义   

  # 5 - 图形多用户模式(X11 X11R6 XFree86)   

  # 6 - 重启(设了此项会一直重启)    

  #id:runlevels:action:process   

  #id-行标记,runlevels-如果为空代表所有运行级别都执行,action-执行的要求或形式     #process-执行的操作(命令或脚本)   id:3:initdefault:

 

  切换运行级别: init 运行级别   

查看运行级别: runlevel

 rc.d(r-resource,c-contral,d-deamon)   

/etc/rc.d/rc.sysinit --> 用于初始化系统   

/etc/rc.d/rc --> 用户启动缺省运行等级

/etc/rc.d/rc(0-6).d --> 定义各个运行等级所要启动的服务程序   

此目录下的文件特征:   

例:S08iptables   

大写S开头的标识需要启动的服务

--> 启动时   

大写K开头的标识需要关闭的服务

--> 此项用户切换运行级别时   

数字08代表启动优先级,如果数字一样,则根据文件创建时间排序   

iptables --> 服务名称

chkconfig 查看和设置服务   

1.查看: chkconfig --list 服务名   

2.设置: chkconfig --levels 运行级别 服务名 on|off

 

  nvsysv 针对运行级别设置   

ntsysv --level 运行级别

/etc/rc.d/init.d 保存系统所有服务启动脚本   

start|stop|restart 启动|关闭|重启   

reload 重新加载配置文件   

status|fullstatus 进程状态   

httpd: configtest 检查语法错误

/etc/rc.d/init.d/httpd start = /etc/init.d/httpd start   

= service httpd start (UNIX不支持)

init 进程的PID恒为1(PID-process ID,PID一般都是随机分配的)

PPID-Parent Process ID 父进程   

PID为0的是内核调度器   

现代的cpu一般都是分时的

 

  进程树:   

父进程终止,子进程自动终止   

孤儿进程(父进程终止了,子进程没有终止)--父进程指向init   

僵尸(Zombie)进程(没有指向任何父进程)

ps -le | more 查看当前进程状态