内核启动centos6

核心文件:/boot/vmlinuz-####-release(linux内核文件)    
    /boot/initramfs-####-release.img(用于识别挂载根的文件系统)
模块文件:/lib/modules/####-release(启动需要的驱动程序和程序)
 


centos6启动流程
1.加载BIOS的硬件信息,获取第一个启动设备
2.读取第一个启动设备MBR的引导\加载程序(grub)的BOOT文件系统   1st\1.5st
3.加载核心操作系统的核心信息,核心开始解压缩,并尝试驱动所有的硬件设备   2nd
4.核心执行init程序,并获取默认的运行信息/etc/inittab
5.init程序执行/etc/rc.d/rc.sysinit系统初始化脚本
6.启动核心的外挂模块
7.init执行运行的各个批处理文件(scripts)/etc/rc.d/rc#.d/
8.init执行/etc/rc.d/rc#.d/99local
9.执行/bin/login程序,等待用户登录
10.登录之后开始以Shell控制主机


MBR: 
  446:bootloader, 64:分区表, 2:55AA
GRUB:
  primary boot loader:
  1st    加载MBR446
  1.5st  加载扇区中文件系统驱动
  secondary boot loader:
  2nd    读取BOOT里面的文件  kernel:自身初始化
                  探测可识别到的所有硬件设备
                  加载硬件驱动程序(借助于ramdisk加载驱动)
                  以只读方式挂载根文件系统
                  运行用户空间的第一个应用程序:/sbin/init

/boot/grub/grub.conf   启动菜单
default=#     默认启动项
timeout=#     停留时间
splashimage=  启动菜单背景图片
hiddenmenu    默认隐藏菜单
password --md5   启动菜单密码
title         启动菜单选项
    root     /boot的所在硬盘分区
    kernel     加载内核路径(ro:表示只读,root=:所在硬盘的UUID,quiet:不显示内核加载信息)
    initrd   加载init文件


系统启动流程
init程序的类型:
SysV:init,centos5之前
    配置文件:/etc/inittab
Upstart:init,centos6
    配置文件:/etc/inittab,/etc/init/*conf
Systemd:systemd,Centos7
    配置文件:/usr/lib/systemd/system
        /etc/systemd/system
 


init读取初始化文件内容包括:/etc/inittab

初始运行级别   id:#:initdefault
系统初始化脚本  /ect/rc.d/rc/sysinit
对应运行级别的脚本目录   l#:#:wait:/etc/rc.d/rc #
捕抓某个关键字顺序    # Trap CTRL-ALT-DELETE
定义UPS电源终端/恢复脚本
在虚拟控制台生成getty
定义哪个模式是图形界面


id:#:initdefault
运行级别:为系统运行或维护等目的设定;0-6:7个基本
0:关机
1:单用户模式
2:多用户模式;维护模式
3:多用户模式,文本界面
4:预留级别;可同3级别
5:多用户模式,图形界面
6:重启
默认级别:3,5
切换级别:init #
查看级别:runlevel;who -r


/etc/rc.d/rc.sysinit:系统初始化脚本,内容包括
1)设置主机名
2)设置欢迎信息
3)激活udev和selinux
4)挂载/etc/fstab文件中定义的文件系统
5)检测根文件系统,并以读写方式重新挂载根文件系统
6)设置系统时钟
7)激活swap设备
8)根据/etc/syscrl.conf文件设置内核参数
9)激活lvm及software raid设备
10)加载额外设备的驱动程序
11)清理操作


/etc/rc.d/rc#.d/(软链接,指向:/etc/init.d/):决定服务开机启动与否
K开头的:开机关闭
K##*:##运行次序;数字越小,越先运行;数字越小的服务,通常为被依赖程度越低的服务
S开头的:开机启动
S##*:##运行次序;数字越小,越先运行;数字越小的服务,通常为被依赖程度越高的服务
(先数字后字母)


chkconfig命令
查看服务在所有级别的启动或关闭设定情况:
chkconfig --list name
开启或关闭服务
chkconfig --level ## name on/off   ##表示级别;没定义level默认2345
添加:
chkconfig --add name
删除:
chkconfig --del name
修改指定的链接类型:

ntsysv:定义或查看开机启动服务

以/var/lock/subsys/下文件判断开机是否已启动
/etc/rc.d/rc#.d/99local    开机自动运行文件,centos7需要添加执行权限


创建服务启动脚本
1)在/etc/init.d/name下创建脚本(例子1)
2)chkconfig --add name


service --status-all  查看所有服务的当前状态

centos6:
瞬态服务(非独立服务)被xinetd进程所管理
非独立服务闲置时,xinetd代替非独立服务监听;当非独立服务使用后,监听者变回非独立服务
配置文件:/etc/xinetd.d/name

centos7:
不分独立和非独立服务,统一由systemd代替,所有服务由它监听


例子1:
服务启动脚本
#!/bin/sh
#chkconfig: 345 96 3
#description:
. /etc/init.d/functions
case $1 in
start)
    [ -f /var/lock/subsys/name ] && action "name is started"
    touch /var/lock/subsys/name
    action "name is starting"
    ;;
stop)
    rm -f /var/lock/subsys/name
    action "name is stopped"
    ;;
status)
    [ -f /var/lock/subsys/name ] && echo "name is starting" || echo "name is stopped"
    ;;
*)
    echo "Usage:service name start|stop|status"
    ;;
esac


实验1:initramfs-3.10.0-123.9.3.el7.x86_64.img  损坏,修复
1.进入光盘Rescue模式
2.chroot /mnt/sysimage
3.mkinitrd /boot/initramfs-`uname -r`.img `uname -r`
4.sync
5.sync
6.exit
7.exit
8.reboot



实验2:vmlinuz-3.10.0-123.9.3.el7.x86_64   损坏,修复
1.进入光盘Rescue模式
2.挂载光驱mount 
3.cp /run/install/repo/isolinux/vmlinuz /mnt/sysimage/boot/vmlinuz-`uname -r`
4.sync
5.sync
6.exit
7.exit
8.reboot



实验3:启动服务故障,系统无法正常启动
1.进入单用户模式
2.chkconfig name off



实验4:grub第1阶段被破坏(现象:无法识别硬盘引导)
      grub第1.5阶段被破坏(现象:卡在“_”,无法进入系统)
1.进入救援模式
2.chroot /mnt/sysimage
3.grub-install /dev/sda
4.sync

用直接使用grub交互式命令(hd0,0表示第1个硬盘第1个分区)
grub>root (hd0,0)
grub>setup (hd0)

注意:一旦修复过grub后,/boot/grub/里面的文件都是启动必要文件



实验5:initrd与kenrnel启动顺序反了(现象:Error 19)
1.按“e”
2.按“d”
3.按“o”
4.输入“initrd /initramfs-2.6.32-696.el6.x86_64.img”



实验6:grub第2阶段被破坏(现象:开机停留在"grub>"界面)
输入:grub>kernel /vmlinuz-2.6.32-696.el6.x86_64 root=/dev/sda2        *****root后面是boot所在的父目录
grub>initrd /initramfs-2.6.32-696.el6.x86_64.img



实验7:boot文件损坏(boot是独立分区)(现象:开机停留在"grub>"界面)
1.进入救援模式
2.挂载光盘 mount /dev/sr0 mnt/cdrom
3.重新安装内核 rpm -ivh  /mnt/cdrom/Pachages/kernel-2.6.rpm --root=/mnt/sysimage/ --force
4.chroot /mnt/sysimage
5.grub-install /dev/sda
6.vi /boot/grub/grub.conf
    default=0
    timeout=3
    title linux
    kernel /vmlinuz-2.6-32  root=/dev/sda2          *****如果boot不是独立分区,应写上boot的路径,root后面是boot所在的父目录
    initrd /initramfs-2.6-32.img                    *****如果boot不是独立分区,应写上boot的路径



实验8:fstab和boot损坏 (标准分区)  (现象:Error 15)
1.救援模式
2.查看分区 fdisk -l
3.逐个挂载查看分区内容,找到对应分区并创建fstab文件
  mkdir /mnt/rootfs
  mount /dev/sda2 /mnt/roofs
4.vi /mnt/roofs/etc/fstab                       *****创建分区挂载文件
    /dev/sda2 / ext4 defaults 0 0           *****挂载根
    /dev/sda1 /boot ext4 defaults 0 0       *****挂载boot
    /dev/sda5 swap swap defaults 0 0        *****挂载swap
5.reboot
6.重新按实验7步骤操作



实验9:fstab和boot损坏 (逻辑卷)  (现象:Error 15)
1.救援模式
2.lvs                查看逻辑卷分区
3.vgchange -ay            激活逻辑卷
4.lvscan            查看逻辑卷状态
5.mkdir /mnt/rootfs
6.mount /dev/VolGroup/lv_root /mnt/rootfs     
7.执行实验8第三步往后的操作



实验10:init进程损坏 (现象:提醒“no job control in this shell”)
1.救援模式
2.配置IP地址
3.chroot /mnt/sysimage/
4.scp 192.168.1.1:/sbin/init /sbin/        *****从相同版本服务器复制过来
或者
1.救援模式
2.挂载光盘 mount /dev/sr0 mnt/cdrom
3.chroot /mnt/sysimage/
4.rpm2cpio /mnt/cdrom/Pachages/upstart-0.6.rpm | cpio -idv /sbin/    *****重新解包init,5版本:SysV包,7版本:Systemd

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金牌收租佬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值