目录

1 linux启动过程linux启动流程:

2 GRUB使用

3 内核初始化

 

一、BIOS初始化和自检

POST(加电--加载ROM芯片中的BIOS启动代码--BIOS执行自检程序(初始化硬件并检测硬件是否工作正常)

    BIOS:存在于ROM中,保存基本的输入输出程序,系统该信息设置,自检程序,系统启动自举程序

  CMOS:存在于RAM中,保存实时时钟和 硬件配置信息和参数的设定按DEL可进入BIOS设置CMOS保存这些设置

  

 

二、装载引导程序MBR(BIOS会读取CMOS的信息获得硬件配置和启动顺序)

BIOS会根据启动顺序 读取某硬件(HD CD-ROM USB等)的MBR启动引导程序(512b)并把控制权交给boot loader也就是交给了GRUB

   MBR3部分(如硬盘HD 0磁盘0分区1扇区 512b

       主引导程序 boot loader  446b(GRUB程序安装在bootloader)

       分区表partition tables    64b

       校验位magic muber 55AA   2b

 

           boot loader分类:GRUB是bootloader一种

               LILO ARM

               GRUB PC和服务器用

三、GRUB启动引导阶段

找到BMR的boot loader也就找到了GRUB

   GRUB引导过程:

      加载stage1,stage1通常位于MBR中,用于装载stage2

      加载stage1.5,用于识别文件系统

      加载stage2,grub的核心程序

          注意:stage1.5和stage2文件位于/boot/grub目录下

          使用/boot/grub/grub.conf配置文件来加载linux内核

四、内核引导(加载内核)

      1 自动识别文件系统

      2 加载linux内核vmlinuz到内存

           内核取得控制权,放到/boot (vmlinuz是一个gzip压缩文件,加载时需要使用gzip解压)

      3 加载initrd*.img镜像到内存(通常是加载USB,LVM,RAID,SCSI等设备模块和磁盘接口的驱动程序)

          临时构建只读的/文件系统,在这个文件系统各种执行临时的init进程

           临时init进程作用:

                  把硬件驱动运行起来,磁盘、声卡、网卡等关键驱动的加载

      4 有了驱动,内核再去挂载真正的跟文件系统,内核吧控制权交给 /sbin/init进程

五、系统初始化和引导login

      1 系统初始化:

      运行/sbin/init程序进行初始化(使用配置文件/etc/inittab和/etc/init目录下的文件),/etc/inittab设置系统的默认级别

         *运行/etc/rc.sysinit

             @获取网络环境

             @初始化硬件

             @设置主机名

             @设备映射器及相关初始化

             @初始化LVM

             @文件系统检测

             @启用磁盘配额和更新配额

             @挂载设备(根据/etc/fstab配置文件进行挂载)

             @清除开机过程中所产生垃圾文件

             @启用交换分区

             @将信息写入/var/log/dmesg文件

          *运行/etc/rc.local

          *按照设定的级别启动相关的服务,使用/etc/rc.d/rc*.d目录下的程序启动服务;*表示0-6的7个级别。

           /etc/rc.d/rc*.d目录下的文件由启动状态(S 表示启动,K 表示不启动)、启动顺序、和启动服务程序三部分组成。

           

       引导用户登录login

          *运行/sbin/mingetty登录程序

             用户登录(输入用户名和密码)-->使用/etc/passwd和/etc/shadow检测正确性-->运行/etc/profile、~/.bash_profile、

             ~/.bashrc、/etc/bashrc

             

       进入用户桌面,运行相应的桌面程序(gdm gnome桌面,kde kde桌面,xdm 启动X Windows)

       linux开机启动流程_第1张图片


 

  练习:(1)在系统开机时自动设置别名rm='rm -fr',并检验是否生效

               vim ~/.bashrc

      (2)如果忘记密码怎么办?要求进入单用户模式将root用户密码删除

      (3)将系统的默认级别设置为3

            vim /etc/inittab

      (4)将/boot所在的分区挂载从/etc/fstab文件里面删除,然后重启机器进行恢复。

 

GRUB的使用:

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

-------------------------------

default=0    #设定默认启动的title的编号,从0开始

timeout=5    #等待时间 秒

splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz #背景图片

hiddenmenu   #隐藏菜单

 

#passwordlitao_59   #grub的密码

#password--md5 密文  #grub的密码

 

titleCentOS (2.6.32-279.el6.x86_64)   #内核标题 或操作系统的名称。可改。

       root (hd0,0)   #内核文件所在的设备 (hd磁盘,分区)

       kernel /vmlinuz-2.6.32-279.el6.x86_64 roroot=UUID=46eb83e8-17fc-4de6-9d39-50a47216881a rd_NO_LUKS  KEYBOARDTYPE=pcKEYTABLE=us rd_NO_MD crashkernel=auto.UTF-8 rd_NO_LVM rd_NO_DM rhgbquiet  #内核路径和参数

       initrd /initramfs-2.6.32-279.el6.x86_64.img #initrd路径(小根)

-------------------------------

 

------------------------------------------------------------------

  启动流程2 GRUB界面init 

------------------------------------------------------------------

 

如何生成MD5密文:

    grub-md5-crypt

 

查看运行级别命令:

    1:runlevel

    2:who -r

 

查看内核版本号:

    uname -r 

 

1安装修复GRUB:

    #grub

    grub> root (hd0,0)    指定ROOT(磁盘,分区)

    grub> setup (hd0) 安装grub(磁盘)

 

2安装修复GRUB:

    #grub-install --root-directory=/ boot的父目录 /dev/sda1

 

3grub损坏时启动内核:

    grub> find (hd0,0) 查找内核所在分区

    grub> root (hd0,0)

    grub> kernel /路径

    grub> initrd /路径

    grub> boot 启动

 

Kernel初始化过程:

 

1 设备探测

2 驱动初始化(可能从initrd(initramfs)文件装在驱动模块)

3 以只读方式挂载根

4 装在第一个进程init (PID:1)

 

 

/sbin/init:(/etc/inittab)

    5.5 init 传统 串行

    6.3 upstart:ububtu开发 并行启动

    7.0 systemd: 并行启动

 

标识符:运行级别:什么情况下执行此行:要运行的程序

 

什么情况下:

    initdefault  默认

    sysinit      初始化

    wait     等待级别切换到此级别是执行

    respawn      程序终止时重新执行

 

/etc/rc.d/rc.sysinit

    初始化流程 配置文件

 

/etc/rc.d/rc3

    启动系统服务配置文件

 

------------------------------------------------------------------

启动流程脚本SysV服务脚本

------------------------------------------------------------------

SysV /etc/rc.d/init.d

 

    start | stop | restart | status

 

chkconfig: 运行级别 ss kk

    当chkconfig来为此脚本在rc#.d目录穿件链接时,运行级别表示默认

    创建为S*开头的链接,除此之外的级别默认创建为K*开头的链接。

 

chkconfig命令:

    查看独立进程:    chkconfig --list 进程名

    加入进程 chkconfig --add 进程名

    删除进程 chkconfig --del 进程名

 

设定服务开机启动或关闭:

    chkconfig {--level 指定级别} 服务名称 (ON|OFF)

              默认2345

 

/etc/rc.d/tc.local

    系统最后一个服务,可用于用户自定义开机启动的程序

 

/etc/inittab的任务

    1设定默认级别

    2运行系统初始化脚本

    3运行指定运行级别对应的目录下的脚本

    4设置重启组合键

    5定义UPS电源

    6启动虚拟终端(2345)

    7启动图形界面)(5)

 

守护进程:

 

    独立进程(httpd vsftp)  需要关联到运行级别

 

    超级守护进程 xinetd (NFS) 不需要关联到运行级别

         启动NFS:先启动xinetd  然后启动NFS

         关闭NFS:先关闭NFS     然后关闭xinetd

         开机启动NFS : chkconfig 进程名 (ON |OFF)