Linux系统启动排错实验集合

时间:2022-04-26 21:05:46

Centos6系统启动流程

1. post  加电自检  检查硬件环境

2. 选择一个硬件类型引导启动           mbr 446字节   grub  stage1

3. 加载boot分区的文件系统驱动  挂在/boot目录      grub  stage1.5

4. 读取 /boot/grub/grub.conf   加载内核启动菜单     grub  stage2

5. 加载vmlinuz内核  通过内核加载操作系统的 /  需要/boot/initramfs.img配合来加载根分区文件系统的驱动

6. 启动操作系统根下的第一个进程 /sbin/init

7. 通过启动第一个进程运行  rc.sysinit(系统初始化)脚本

8. 读取 /etc/inittab 配置文件,设置系统启动级别

各个启动级别的区别本质上就是在操作系统启动的时候设置哪些服务需要启动,哪些服务不需要启动.(不同服务的各种组合)

9.运行 /etc/rc[0-6].d/[S,K]的脚本 ---->    link      /etc/init.d/

10.运行 /etc/rc.local

11.显示登录界面

实验1:Boot目录下的文件全部被删除

1.启动故障现象:

Linux系统启动排错实验集合

2.重启系统的时候按F2,设置从光盘引导,进入救援模式

Linux系统启动排错实验集合

3.启动救援系统后开启一个shell窗口

1. chroot  /mnt/sysimage  &&  mkdir /mnt/cdrom

2. mount /dev/sr0  /mnt/cdrom

方法2:  rpm -ivh  /mnt/cdrom/Packages/kernel-2.6.32-el6.x86_46.rpm    --root=/mnt/sysimage/   --force

这条命令会在/boot目录下自动生成内核文件和伪文件系统

然后执行grub-install /dev/sda   和创建  grub.conf 文件即可

3.cp  /mnt/cdrom/isolinux/vmlinuz    /boot

4. cd /boot && mkinitrd initramfs.img `uname -r`

5.grub-install /dev/sda

6.cd /grub    &&    创建一个grub.conf配置文件

在grub文件夹中/表示的是boot目录所在的分区,不是指操作系统的根分区.

Linux系统启动排错实验集合

7.exit     退出切根状态

8.exit     退出shell窗口

9.选择重启系统

Linux系统启动排错实验集合

10.出现如下菜单

Linux系统启动排错实验集合

结论:boot目录下的内核和伪根系统的文件名称可以不用加版本号,grub-install /dev/sda 不能生成grub.conf

文件,这个文件必须手动创建

Linux系统启动排错实验集合

实现2:同时删除boot目录和etc/fstab文件

现象:进入救援模式后会出现无法挂载操作系统的/到/mnt/sysimage目录上

Linux系统启动排错实验集合

1.fdisk -l  查看分区的详细信息

2.手动挂载每个分区,查看分区里的数据,直到找到系统根所在的分区

3.修复根分区中的/etc/fstab配置文件

Linux系统启动排错实验集合

4.重启系统并重新进入救援模式,使救援系统能自动挂载根分区

5.修复boot目录

实验3:/sbin/init文件被损坏

故障现象:

Linux系统启动排错实验集合

进入救援模式系统

1. mkdir /mnt/cdrom

2. mount /dev/sr0  /mnt/cdrom

3.rpm2cpio /mnt/cdrom/Packages/upstart-0.3.el6.x86_64.rpm | cpio -idv ./sbin/init       解压到当前目录

4.cp  ./sbin/init     /mnt/sysimage/sbin

5.exit

6.reboot

实验4:后台服务启动异常

把启动模式切换到单用户模式,然后再去修改对应的服务脚本

实验5:自定制Linux系统

1.给一块新磁盘分区                    fdisk  至少要分两个区

2.给新创建的分区创建文件系统  mkfs.ext4    /dev/sdb1

3.挂载boot

mkdir     /mnt/boot       子目录必须为boot

mount   /dev/sdb1      /mnt/boot

4.安装grub

grub-install  --root-directory=/mnt /dev/sdb

5.复制内核和initramfs文件

cp /boot/vmlinuz-2.6.32-642.el6.x86_64             /mnt/boot/

cp /boot/initramfs-2.6.32-642.el6.x86_64.img     /mnt/boot

6.创建grub.conf 写入内核菜单信息

vim /mnt/boot/grub.conf

title yxhlinux

root (hd0,0)

kernel /vmlinuz-2.6.32-642.el6.x86_64 root=/dev/sda2

selinux=0

init=/bin/bash

initrd /initramfs-2.6.32-642.el6.x86_64.img

7.创建一级目录

mkdir /mnt/sysroot  mount  /dev/sdb2   /mnt/sysroot

mkdir –pv /mnt/sysroot/{etc,lib,lib64,bin,sbin,tmp,var,usr,sys,proc,opt,home,root,boot, dev,mnt,media}

复制bash和相关库文件

复制相关命令及相关库文件    如:ifconfig,insmod,ping,mount,ls,cat,df,lsblk,blkid等

实验6:内核编译

内核组成部分:

kernel: 内核核心,一般为bzImage,通常在/boot目录下,名称为 vmlinuz-VERSION-RELEASE

kernel object: 内核对象,一般放置于   /lib/modules/VERSION-RELEASE/  [ ]: N  [M]: M  [*]: Y

辅助文件:ramdisk   initrd   initramfs

实验7:逻辑卷启动配置文件损坏

1.重启进入救援模式

2.逻辑卷不能像分区那样直接挂载  救援模式无法自动激活逻辑卷,所有的逻辑卷处于非活动状态.

3.  lvdisplay              查看当前系统上的逻辑卷详情

4.  vgchange -ay      激活所有的逻辑卷

5.  mount /dev/VolGroup/lv_root /mnt/rootfs       逻辑卷只有被激活后才能被成功挂载

6. 修复/mnt/rootfs目录下的相关配置文件

centos7 Systemd 介绍

POST > Boot Sequence  >  Bootloader > kernel + initramfs > rootfs   > /sbin/init

POST > Boot Sequence  >  Bootloader > kernel + initramfs > rootfs  这些和centos6启动方式一致

/sbin/init 在centos7上做了一个软链接  把/sbin/init  指向了 systemd

之所以系统启动后第一个进程的名字必须为/sbin/init  是因为在内核源码中编写成固定的字符串了

systemd新特性:

系统引导时候实现服务并行启动

按需启动守护进程

自动化的服务依赖关系管理

同时采用socket式与D-Bus总线式激活服务

系统状态快照