linux的启动引导过程

  • 启动流程
  • 运行级别对应的systemd
  • 系统及服务管理器systemctl
  • 启动过程的问题解决
  • MBR扇区故障
  • root密码忘记
  • GRUB引导故障


启动流程

  1. BIOS:
    加载BIOS的硬件信息(CMOS),并进行自我检测,根据设置取得第一个可启动的设备
  2. MBR:包括主引导记录,MBR分区表,16进制字段
    读取并执行第一个启动设备内MBR的启动引导程序(grub2)
  3. kernel:加载内核
    根据启动引导程序设置加载kernel,kernel会开始检测硬件与加载驱动程序,)linux系统需要一个启动引导程序(boot loader)来出来内核加载的问题,boot loader主要作用是寻找内核并加载内核,并提供用户一个选项菜单(grub),linux内核是可以通过动态加载内核模块的,启动的过程中内核必须要挂载根目录,这样才能读取内核模块提供的加载驱动程序功能,但是内核不能直接挂载根目录,内核加载时boot loader会产生一个虚拟文件系统(/boot/initramfs)加载进内存中,模拟解压缩为根目录加载应用程序,加载完成后会帮助内核调用systemd来开始后续的启动流程
    内核文件的存放位置是/boot/vmlinuz,内核模块的位置是/lib/modules
  4. 初始化进程:
    在内核加载完毕,进行完硬件检测和驱动程序加载后,内核会调用第一个程序systemd执行sysinit.target初始化系统(此为centOS7的,centOS6的第一个程序是init),再给用户一个提供服务器功能的环境multi-user.target和一个登入环境getty,如果是最小化界面此时就已完成启动,如果是图形化界面则还会启动graphica.target图形化界面

运行级别对应的systemd

上次bios所用时间30s bios上次的修改记录_加载


可以用init命令加上面的运行级别来进行系统运行级别的切换

init 0:表示关机
init 6:表示重启
init 5:进入图形界面
init 3:进入命令行界面
[root@AIDEBOY ~]# runlevel            //查看当前系统运行级别
N 5        //前面数字表示上次的运行级别,后面数字表示当前系统运行级别,N表示未做运行级别的转换

系统及服务管理器systemctl

systemctl是systemd的工具,用于系统和服务的管理
[root@AIDEBOY ~]# systemctl cat sshd          查看服务配置信息
[Unit]
Description=OpenSSH server daemon               //描述信息
Documentation=man:sshd(8) man:sshd_config(5)    //man手册
After=network.target sshd-keygen.service        //在此单元启动前启动的单元 
Wants=sshd-keygen.service                      //与此单元配合使用的单元

[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/sshd           //此服务的服务配置文件
ExecStart=/usr/sbin/sshd -D $OPTIONS          //服务启动命令
ExecReload=/bin/kill -HUP $MAINPID           //重载服务命令
KillMode=process                             //终止该服务的单元进程模式
Restart=on-failure                           //定义什么情况下systemd会重启该服务
RestartSec=42s                              //自动重启该服务的秒数
lines 1-15...skipping...

[Install]
WantedBy=multi-user.target                 //当前服务激活时软链接会放在fet/systemdsystem目录下的muiti-usertargetwants目录中
[root@AIDEBOY ~]# systemctl get-default
graphical.target
[root@AIDEBOY ~]# ll /etc/systemd/system   //此目录存放不同级别的开启自启服务,里面大部分都为链接文件,
总用量 8
drwxr-xr-x. 2 root root   57 4月  22 10:03 basic.target.wants
drwxr-xr-x. 2 root root   31 4月  22 10:02 bluetooth.target.wants
lrwxrwxrwx. 1 root root   41 4月  22 10:02 dbus-org.bluez.service -> /usr/lib/systemd/system/bluetooth.service
lrwxrwxrwx. 1 root root   44 4月  22 10:03 dbus-org.freedesktop.Avahi.service -> /usr/lib/systemd/system/avahi-daemon.service
lrwxrwxrwx. 1 root root   44 4月  22 10:03 dbus-org.freedesktop.ModemManager1.service -> /usr/lib/systemd/system/ModemManager.service
lrwxrwxrwx. 1 root root   46 4月  22 10:02 dbus-org.freedesktop.NetworkManager.service -> /usr/lib/systemd/system/NetworkManager.service
lrwxrwxrwx. 1 root root   57 4月  22 10:02 dbus-org.freedesktop.nm-dispatcher.service -> /usr/lib/systemd/system/NetworkManager-dispatcher.service
lrwxrwxrwx. 1 root root   36 4月  22 10:06 default.target -> /lib/systemd/system/graphical.target
drwxr-xr-x. 2 root root   87 4月  22 10:02 default.target.wants
drwxr-xr-x. 2 root root   38 4月  22 10:03 dev-virtio\x2dports-org.qemu.guest_agent.0.device.wants
lrwxrwxrwx. 1 root root   35 4月  22 10:03 display-manager.service -> /usr/lib/systemd/system/gdm.service
drwxr-xr-x. 2 root root   32 4月  22 10:02 getty.target.wants
drwxr-xr-x. 2 root root  133 4月  22 10:17 graphical.target.wants
drwxr-xr-x. 2 root root   35 4月  22 10:02 local-fs.target.wants
drwxr-xr-x. 2 root root 4096 4月  30 13:40 multi-user.target.wants
drwxr-xr-x. 2 root root   48 4月  22 10:02 network-online.target.wants
drwxr-xr-x. 2 root root   26 4月  22 10:03 printer.target.wants
drwxr-xr-x. 2 root root   31 4月  22 10:02 remote-fs.target.wants
drwxr-xr-x. 2 root root  217 4月  22 10:03 sockets.target.wants
drwxr-xr-x. 2 root root 4096 4月  22 10:02 sysinit.target.wants
drwxr-xr-x. 2 root root   44 4月  22 10:02 system-update.target.wants
drwxr-xr-x. 2 root root   34 4月  22 10:02 timers.target.wants
drwxr-xr-x. 2 root root   29 4月  22 10:02 vmtoolsd.service.requires
systemctl start 服务名 :开始服务
systemctl stop 服务名 :停止服务
systemctl restart 服务名 :重启服务
systemctl reload 服务名 :重载服务
systemctl enable 服务名 :设置服务开机自启
systemctl disable 服务名 :设置服务开机不自启
systemctl is-enabled 服务名 :查看服务是否开机启动

启动过程的问题解决

MBR扇区故障

故障原因:病毒、木马等造成的破坏,不正确的分区操作,磁盘读写误操作
故障现象:找不到引导程序,启动中断
解决思路:应提前做好备份文件,以安装光盘引导进入急救模式,从备份文件中恢复

root密码忘记

解决方法:进入急救模式重设密码

1)第一种方式,有光盘情况下的修改root密码,从光盘启动,进入急救模式

上次bios所用时间30s bios上次的修改记录_linux_02


上次bios所用时间30s bios上次的修改记录_运行级别_03


上次bios所用时间30s bios上次的修改记录_上次bios所用时间30s_04


上次bios所用时间30s bios上次的修改记录_加载_05


上次bios所用时间30s bios上次的修改记录_linux_06


输入完成后关机重启即可,如果没有成功就在进入这个界面输入“rm -rf /etc/selinux/config”删除这个文件,删除之前记得做备份

2)没有光盘文件的修改root密码

首先重启系统进入grub2界面时迅速按下e键

上次bios所用时间30s bios上次的修改记录_加载_07


进入命令行界面后,由于是没有光盘的,需要将根重新挂载,输入“mount -o remount.rw /”,然后输入“passwd”,输入两次密码,最后输入“exec /sbin/init”重启系统就行了

GRUB引导故障

故障原因:MBR中的grub引导程序遭到破坏,grub.conf文件丢失、引导配置有误
故障现象:系统引导停滞,显示“grub>”提示符
解决思路:尝试手动输入引导命令,进入急救模式,重写或者从备份中恢复grub.conf,向MBR扇区重建grub程序,