目录
一、Linux操作系统引导过程
二、Linux系统服务控制
系统初始化进程
三、运行级别切换
*运行级别及切换
Linux系统的运行级别
四、优化开机自动加载服务
五、修复MBR扇区故障
一、Linux操作系统引导过程
主要步骤
- 开机自检: 检测硬件设备,找到能够引导系统的设备,如硬盘。
- MBR引导: 运行MBR扇区里的主引导程序GRUB。
- 启动GRUB菜单: 系统读取grub配置文件(/boot/grub2/grub.cfg),获取内核的设置和位置,并在屏幕显示grub菜单页面。
- 加载Li nux内核: 把内核加载到内存,将系统控制权交接给内核。
- Init进程初始化: 内核将init进程加载到内存中运行,并把init进程作为系统的第一个进程。
- 系统初始化:启动内核模块,执行运行级别的启动脚本ls /etc/rc.等。
init进程的文件位于 /sbin/init -> /lib/systemd/systemd ,init进程PID号固定为 1 ,是系统中其它所有进程的父进程。
二、Linux系统服务控制
系统初始化进程
init进程
- 由 Linux 内核加载运行 /sbin/init 程序
- init进程是系统中第一个进程,是所有进程的父进程
- init进程的PID(进程标记)号永远为1
Systemd
- Systemd是Linux操作系统的一种init软件
- CentOS7中采用全新的Systemd启动方式,取代传统的SysVinit
- CentOS7中运行的第一个init进程是/lib/systemd/systemd
单元类型 | 扩展名 | 说明 |
---|---|---|
Service | .service | 描述一个系统服务 |
Socket | .socket | 描述一个进程间通信的套接字 |
Device | .device | 描述一个内核识别的设备文件 |
Mount | .mount | 描述一个文件系统的挂载点 |
Automount | .automount | 描述一个文件系统的自动挂载点 |
Swap | .swap | 描述一个内存交换设备或交换文件 |
Path | .path | 描述一个文件系统中文件或目录 |
Timer | .timer | 描述一个定时器(用于实现类似cron的调度任务) |
Snapshot | .snapshot | 用于保存一个systemd的状态 |
Scope | .scope | 使用systemd的总线接口以编程的方式创建外部进程 |
Slice | .slice | 描述居于Cgroup的一组通过层次组织的管理系统进程 |
Target | .target | 描述-组systemd的单元 |
系统服务控制
systemctl 控制类型 服务名称
控制类型
- start:启动
- stop:停止
- restart:重新启动
- reload:重新加载
- status:查看服务状态
三、运行级别切换
*运行级别及切换
运行级别 | systemd的target | 说明 | 切换 | 切换 |
---|---|---|---|---|
0 | power.target | 关机状态,使用该级别时将会关闭主机 | init 0 | systemctl isolate poweroff.target |
1 | resue.target | 单用户模式,不需要密码验证即可登录系统,多用于系统维护 | init 1 | systemctl isolate rescue.target |
2 | multi-user.target | 用户定义/域特定运行级别。默认等同于3 | ||
3 | multi-user.target | 字符界面的完整多用户模式,大多数服务器主机运行在此级别 | init 3 | systemctl isolate multi-user.target |
4 | multi-user.target | 用户定义/域特定运行级别。默认等同于3 | ||
5 | graphical.target | 图形界面的多用户模式,提供了图形桌面操作环境 | init 5 | systemctl isolate graphical.target |
6 | reboot.target | 重新启动,使用该级别时将会重启主机 | init 6 | systemctl isolate reboot.target |
Linux系统的运行级别
查看运行级别
- runlevel命令:runlevel只能查看切换运行级别与当前运行级别
- systemctl工具:systemctl时能查看默认的运行级别
临时切换运行级别
- init命令:Init的命令参数是运行级别所对应的数字
- systemctl工具:systemctl的命令参数是具体的target
四、优化开机自动加载服务
服务开机自启管理
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
五、修复MBR扇区故障
如果是 MBR 的GRUB主引导程序被破坏了
- 在急救模式下使用备份文件恢复 dd if=备份文件 of=/dev/sda bs=446 count=1
- 在急救模式下重建MBR的GRUB主引导程序 chroot /mnt/sysimage -> grub2-install /dev/sda
如果是GRUB配置文件被删了
- 在急救模式下重建GRUB配置文件 chroot /mnt/sysimage -> grub2-mkconfig -o /boot/grub2/grub.cfg
如果是root密码忘记了
- 在急救模式下 先切换系统根环境 chroot /mnt/sysimage -> passwd root
- 在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