Linux系统开机引导过程:
- 开机自检 检测硬件设备,找到能够引导系统的设备,比如硬盘
- MBR引导 运行MBR扇区里的主引导程序GRUB
- 启动GRUB菜单 系统读取GRUB配置文件(/boot/grub2/grub.cfg)获取内核的设置和位置,并在屏幕显示GRUB菜单页面
- 加载inux内核 把内核加载到内存,将系统控制权交接给内核
- init进程初始化 内核将init进程加载到内存中运行,并把init进程作为系统的第一个进程
- 系统初始化 启动内核模块,执行运行级别的启动脚本,执行/etc/rc.d/rc.local文件里的命令等
init进程
文件位于 /sbin/init ——> /lib/svstemd/svstemd
init进程PID号固定为1,是系统中其它所有进程的父进程
进程启动方式:
centos7开始的版本默认的启动方式是 systemd | 开机服务程序为并行启动 | 启动效率较快 |
centos6及以前版本的启动方式是 sysvinit | 机服务程序是通过串行执行/etc/init.d/日录下的she11脚本启动的 | 容易阻塞,启动效率较慢 |
套接字文件,格式
套接字文件 应用程序直接的数据连接文件
套接字格式 ip:port ftp 192.168.80.20:21
Linux系统的运行级别
运行级别: | 功能: | 对应的systemd单元 | 切换 |
0 | 关机 | poweroff.target | init 0 systemctl isolate poweroff.target |
1 | 单用户模式 | rescue.target | init 1 systemctl isolate rescue.target |
2 | 字符界面的多用户模式(无网络) | multi-user.target | |
3 | 字符界面的多用户模式(完整的,有网络) | multi-user.target | init 3 systemctl isolate multi-user.target |
4 | 字符界面的多用户模式(保留) | multi-user.user | |
5 | 图形界面的多用户模式 | graphical.target | init 5 systemctl isolate graphical.target |
6 | 重启 | reboot.target | init 6 systemctl isolate reboot.target |
启动类故障恢复:
MBR主引导程序 1~446硬盘分区表 447~510
如果是 MBR 整个扇区数据被破坏了,需要进入到急救模式将备份的MBR数据导入还原:
备份命令:
dd if=/dev/sda of-备份文件 bs-512 count=1
还原命令:
dd if=备份文件 of=/dev/sda
如果是 MBR 的GRUB主引导程序被破坏了:
1)在急救模式下使用备份文件恢复
dd if=备份文件 of=/dev/sda bs=446 count=1
2)在急救模式下重建MBR的GRUB主引导程序
chroot /mnt/sysimage -> grub2-install /dev/sda
如果是GRUB配置文件被删了:
在急救模式下重建GRUB配置文件
chroot /mnt/sysimage -> grub2-mkconfig -o /boot/grub2/grub.cfg
如果是root密码忘记了
1)在急救模式下
先切换系统根环境 chroot /mnt/sysimage -> passwd root
2)在GRUB菜单按 e 键,修改内容
在 linux16 /vmlinuz-3.10.0-1160.71.1.el7.x86_64 root=UUID=a99fd431-dc10-4233-a655-3c4b8d710624 ro rhgb quiet LANG=zh_CN.UTF-8 这行后面追加配置
rw single init=/bin/bash ,再按 ctrl + x 重启系统
再在bash界面输入 passwd root 修改密码 -> touch /.autorelabel --> exec /sbin/init
服务管理操作:
systemctl start|stop|restart|reload|status|is-active 服务名[.service]
#要确保在 /usr/lib/systemd/system/ 目录中有相关服务的 XXX.service 文件
service 服务名 start|stop|restart|reload|status
#要确保在 /etc/init.d/ 目录中有相关服务的管理脚本文件
服务开机自启管理:
systemctl enable|disable [--now] 服务名[.service] # --now选项可实现立即开启|关闭服务
systemctl is-enabled 服务名[.service]
图形化管理开机自启:
ntsysv #图形化管理开机自启
chkconfig --add 服务名 #服务名就是 /etc/init.d/ 目录下的脚本文件名
chkconfig --level 运行级别列表 服务名 on|off #开启|关闭服务在哪些运行级别下开机自启
chkconfig --list 服务名 #查看自启状态
查看上一次的运行级别 和 当前的运行级别
runlevel #查看上一次的运行级别 和 当前的运行级别
查看当前的默认运行级别,设置默认运行级别
systemctl get-default #查看当前的默认运行级别
systemctl set-default multi-user.target|graphical.target #设置默认运行级别
等效于 ln -s -f /usr/lib/systemd/system/multi-user.target|graphical.target /etc/systemd/system/default.target