linux的启动引导过程
- 启动流程
- 运行级别对应的systemd
- 系统及服务管理器systemctl
- 启动过程的问题解决
- MBR扇区故障
- root密码忘记
- GRUB引导故障
启动流程
- BIOS:
加载BIOS的硬件信息(CMOS),并进行自我检测,根据设置取得第一个可启动的设备 - MBR:包括主引导记录,MBR分区表,16进制字段
读取并执行第一个启动设备内MBR的启动引导程序(grub2) - kernel:加载内核
根据启动引导程序设置加载kernel,kernel会开始检测硬件与加载驱动程序,)linux系统需要一个启动引导程序(boot loader)来出来内核加载的问题,boot loader主要作用是寻找内核并加载内核,并提供用户一个选项菜单(grub),linux内核是可以通过动态加载内核模块的,启动的过程中内核必须要挂载根目录,这样才能读取内核模块提供的加载驱动程序功能,但是内核不能直接挂载根目录,内核加载时boot loader会产生一个虚拟文件系统(/boot/initramfs)加载进内存中,模拟解压缩为根目录加载应用程序,加载完成后会帮助内核调用systemd来开始后续的启动流程
内核文件的存放位置是/boot/vmlinuz,内核模块的位置是/lib/modules - 初始化进程:
在内核加载完毕,进行完硬件检测和驱动程序加载后,内核会调用第一个程序systemd执行sysinit.target初始化系统(此为centOS7的,centOS6的第一个程序是init),再给用户一个提供服务器功能的环境multi-user.target和一个登入环境getty,如果是最小化界面此时就已完成启动,如果是图形化界面则还会启动graphica.target图形化界面
运行级别对应的systemd
可以用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密码,从光盘启动,进入急救模式
输入完成后关机重启即可,如果没有成功就在进入这个界面输入“rm -rf /etc/selinux/config”删除这个文件,删除之前记得做备份
2)没有光盘文件的修改root密码
首先重启系统进入grub2界面时迅速按下e键
进入命令行界面后,由于是没有光盘的,需要将根重新挂载,输入“mount -o remount.rw /”,然后输入“passwd”,输入两次密码,最后输入“exec /sbin/init”重启系统就行了
GRUB引导故障
故障原因:MBR中的grub引导程序遭到破坏,grub.conf文件丢失、引导配置有误
故障现象:系统引导停滞,显示“grub>”提示符
解决思路:尝试手动输入引导命令,进入急救模式,重写或者从备份中恢复grub.conf,向MBR扇区重建grub程序,