Linux系统启动原理

Linux系统启动原理及故障排除

Centos6系统启动过程

在这里插入图片描述

修改系统启动级别

vim /etc/inittab

Centos7启动流程

加载BIOS信息,进行硬件检测
根据BIOS设定读取设备中的MBR,加载Boot loader
加载内核,内核初始化以后以模块的形式动态加载硬件
并且加载initramfs虚拟文件系统,然后将虚拟文件系统加载到内存中
调用initrd.target 挂载/etc/fstab中文件系统
切换回硬盘真实目录,然后启动第一个进程systemd

在这里插入图片描述

运行级别切换

#在centos6、7切换界面
init 3  切换字符界面
init 5  切换图形界面
#属于centos7切换字符界面
systemctl isolate multi-user.target
systemctl isolate runlevel3.target

#切换图形页面
systemctl isolate grpahical.target

#centos设置系统默认启动级别
systemctl set-default graphical.target

ll /etc/systemd/system/default.target
grub2
[root@localhost ~]# vim /etc/default/grub 
GRUB_TIMEOUT=5   #开机时grub默认5秒后启动
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=1    #0代表第一个内核,1代表第二个
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

查看操作系统内核

[root@localhost ~]# uname -r
3.10.0-957.el7.x86_64

故障排除

1.加密grub防止过单用户系统修改root密码

生成MD5密码

[root@localhost ~]# grub2-mkpasswd-pbkdf2 
输入口令:123456
Reenter password: 123456 
PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.45259E0BC9FC9D0F16C89B0014D74C7275D3423E4832F1BFE0FE0D6E6521037F986A4E9D12809D939838DB374FA2C60BEA92BD9569038E1344D025903EA33A23.CF7713EC8EF3D4A47A378D304C917B2BD4E01173EC6560BC448B7A4669D98502820D9C311484877A65428848D5A46BF57561BAA3484471F1204AD7EF056F12C7

将刚好生成MD5密码复制此文件下面

[root@localhost ~]# vim /etc/grub.d/00_header 
cat << EOF
set superusers='rs'
password_pbkdf2 rs grub.pbkdf2.sha512.10000.45259E0BC9FC9D0F16C89B0014D74C7275D3423E4832F1BFE0FE0D6E6521037F986A4E9D12809D939838DB374FA2C60BEA92BD9569038E1344D025903EA33A23.CF7713EC8EF3D4A47A378D304C917B2BD4E01173EC6560BC448B7A4669D98502820D9C311484877A65428848D5A46BF57561BAA3484471F1204AD7EF056F12C7
EOF

重新加载配置文件

[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg 

重启验证

在这里插入图片描述

输入“e”之后,输入用户和密码

就能看到grub菜单,就证明加密成功

2.当MBR引导记录损坏后-重装grub进行修复

  1. 先破坏硬盘的前446字节

    [root@localhost ~]# dd if=/dev/zero of=/dev/sda bs=1 count=446
    记录了446+0 的读入
    记录了446+0 的写出
    446字节(446 B)已复制,0.00182828 秒,244 kB/秒
    
  2. 将centos7系统光盘装载到虚拟机光驱上,修改BISO引导顺序,让光盘启动

    在这里插入图片描述

    进入启动的页面

    在这里插入图片描述

    选择第三项进入故障排除页面后,点击第二项

    在这里插入图片描述

    #进入如下模式,选择1,会进入一个shell模式,进行系统修复
    mount
    chroot /mnt/sysimage
    grub2-install /dev/sda
    exit
    reboot
    

3.在centos7下误删grub文件进行修复

  1. 误删grub2

    [root@localhost ~]# rm -rf /boot/grub2
    
  2. 重启计算机

    [root@localhost ~]# reboot
    

    在这里插入图片描述

    再次重启系统,按ESC,进入光盘救援模式,进入光盘救援使用live cd 进入救援模式后

    #切换根目录
    chroot /mnt/sysimage
    #执行命令
    grub2-install /dev/sda
    grub2-mkconfig -o /boot/grub2/grub.cfg
    exit
    reboot
    

4.密码找回

​ 1.首先重启系统

在这里插入图片描述

进入启动界面内按“e”进入编辑模式

​ 2.进入编辑模式进行编辑

在这里插入图片描述

找到“Linux16”开头的行,在Linux的行尾空格后添加“rd.break”

添加,完成之后,按ctrl+x即可

在这里插入图片描述

查看下挂载信息

mount | grep “centos-root”
#查看过后发现不具备rw读写权限

重新挂载,拥有读写权限

mount -o remount,rw /dev/mapper/centos-root /sysroot/

切换根目录

chroot /sysroot/

使用passwd命令修改root密码

passwd root

修改完密码之后,创建.autorelabel隐藏文件

#因为rd.break环境下SELinux是不生效的。
#在不生效的情况下修改用户的密码,也就是修改/etc/shadow文件。
#所以密码文件的安全上下文会被取消
#如果没有让系统在启动时自动恢复SElinux的安全上下文,系统会报错无法登录
#所以在根目录下创建隐藏文件.autorelabel会让系统在重启时以SELinux默认类型重新写入SELinux安全上下文
touch /.autorelabel

或者是

vim /etc/selinux/config 
修改成:SELINUX=disabled
  • 15
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值