目录
一.引导过程
- Linux操作系统的引导过程包括:开机自检(BIOS),MBR引导,GRUB菜单,加载Linux内核,init进程初始化
- 开机自启(BIOS):服务器主机开机以后,根据主板BIOS中的设置对CPU、内存、显卡、键盘等设备进行初步检测,检测成功后根据预设的启动顺序移交系统的控制权,大多数时候会移交给本机硬盘
- MBR引导:当从本机硬盘中启动系统时,首先根据硬盘第一个扇区中MBR的设置,将系统的控制权传递给包含操作系统引导文件的分区或者直接根据MBR记录中的引导信息调用启动菜单
- GRUB菜单:对于Linux系统,GRUB是使用最广泛的多系统引导器程序,系统控制权传递给GURB以后,将会显示启动菜单提供给用户选择,并且根据所选项加载Linux内核文件,然后将系统控制权转交给内核
- 加载Linux内核:Linux内核是一个预先编译好的特殊的二进制文件,介于各种硬件资源与系统程序之间,负责资源分配与调度。内核接过系统控制全以后,将完全掌控整个Linux系统
- init进程初始化:为了进一步完成系统的引导过程,Linux内核首先将系统的“/sbin/init”加载到内存中运行,init进程负责完成一系列的系统初始化过程,最后等待用户进行登录
- 在引导Linux系统的过程中,“/sbin/init”是内核第一个加载的程序,因此init进程的PID号为1,init进程是其他进程的父进程。
二.systemd单元类型
- .service(扩展名),描述一 个系统服务
- .socket(扩展名),描述一 个进程间通信的套接字
- .device(扩展名),描述一 个内核识别的设备文件
- .mount(扩展名),描述一 个文件系统的挂载点
- .automount (扩展名), 描述一个文件系统的自动挂裁点
- .swap (扩展名), 描述一个内存交换设备或交换文件
- .path(扩展名), 描述一个文件系统中文件或目录
- .timer (扩展名), 描述一个定时器(用于实现类似cron的调度任务)
- .snapshot(扩展名),用于保存一个systemd的状态
- .scope(扩展名), 使用systemd的总线接口以编程的方式创建外部进程
- .slice (扩展名), 描述居于Cgroup的一组通过层次组织的管理系统进程
- .target(扩展名), 描述一组systemd的单元
三.Linux运行级别和对应的systemd目标
- 0:关机状态,使用该级别时将会关闭主机,对应systemd中的target
- 1:单用户模式,不需要密码验证即可登录系统,多用于系统维护,对应的systemd中的rescue.target
- 2:用户定义/域特定运行级别,默认等同于3,对应的systemd中的multi-user.target
- 3:字符界面的完整多用户模式,大多数服务器主机运行此级别,对应的systemd中的multi-user.target
- 4:用户定义/域特定运行级别,默认等同于3,对应的systemd中的multi-user.target
- 5:图形界面的多用户模式,提供了图形桌面操作环境,对应的systemd中的graphical.target
- 6:重新启动,使用该级别时将会重启系统,对应的systemd中的reboot.target
四.修复MBR扇区的故障
- 故障原因:病毒、木马等造成的破环或者不正确的分区操作、磁盘读写误操作
- 故障现象:找不到引导程序,启动中断或者无法加载操作系统,开机后黑屏
- MBR引导扇区位于物理硬盘的第一个扇区(512B),该扇区又称为主引导扇区,其中包含系统引导程序和分区情况
- 模拟MBR破坏且恢复使用的步骤
1:备份MBR扇区数据
增加一块新的硬盘sdb1,做备份
分区>格式化>挂载(挂载到/mnt)
备份:dd if=/dev/sda of=/mnt/sda.mbr.bak bs=512 count=1
2: 损坏MBR扇区的文件
dd if=/dev/zero of=/sda bs=512 count=1
3:进入镜像系统文件的急救模式
4:把备份数据做恢复处理
重新挂载(添加文件):mount /dev/sdb1 /mnt
恢复数据: dd if=/mnt/sda.mbr.bak of=/dev/sda bs=512 count=1
- 实例:
- 创建新的磁盘,格式化,且挂载在/mnt中,用dd命令把MBR进行备份
[root@localhost ~]# mount /dev/sdb1 /mnt
[root@localhost ~]# dd if=/dev/sda of=/mnt/sda.mbr.bak bs=512 count=1
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.000414638 秒,1.2 MB/秒
[root@localhost ~]#
- 模拟损坏MBR
[root@localhost ~]# dd if=/dev/zero of=/dev/sda bs=512 count=1
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.000697366 秒,734 kB/秒
[root@localhost ~]#
//dev/zero中的数据是无用文件
- 进入系统镜像的急救模式
开启光驱,保证镜像文件和原主机系统相同
进入光驱
选择急救模式
- 把备份数据作恢复处理,且重启
注:必须用非MBR所在硬盘,进行备份;此外,模拟损坏之后挂载会失效,必须重新挂载,数据备份,重启系统之后,挂载也会失效
五.修复GRUB引导故障
- 故障原因:MBR中的GRUB引导程序遭到破坏或者grub.conf文件丢失、引导配置有误
- 故障现象:系统引导停滞,显示“grub>”提示符
- 模拟GRUB破坏且恢复使用的步骤
1.模拟破环grub
由于GRUB的配置文件在/boot/grub2/grub.cfg中,即可以
删除配置文件:rm -rf /boot/grub2/grub.cfg
2.进入系统镜像的急救模式的命令字符界面
3.加载镜像中的系统进入bash环境
chroot /mnt/sysimage
4.重新建立加载sda分区
grub2-install /dev/sda
5.重新构建grub菜单配置文件
grub2-mkconfig -o /boot/grub2/grub.cfg
5.退出,且重启
exit
reboot
- 实例
- 破坏GRUB的配置文件
[root@localhost ~]# cd /boot/grub2
[root@localhost grub2]# ls
device.map fonts grub.cfg grubenv i386-pc locale
[root@localhost grub2]# cd
[root@localhost ~]# rm -rf /boot/grub2/grub.cfg
[root@localhost ~]# ls /boot/grub2
device.map fonts grubenv i386-pc locale
[root@localhost ~]#
- 进入镜像系统急救模式中的字符界面(注意:连接光驱,加载镜像)
进入光驱
选择急救模式
- 加载bash环境
- 重新建立加载sba分区的GRUB
- 重新构建grub菜单的配置文件
六.遗忘root用户密码
- 故障原因:遗忘root用户密码
- 故障现象:无法进行需要root权限的管理操作且若无其他可用账号,将无法登录系统
- 解决步骤
1.加载镜像系统,进入bash环境
chroot /mnt/sysimage
2.直接使用passwd修改root密码
passwd root > 123123 >123123
3.exit退出,且reboot重启
注:添加光驱,加载镜像文件(和本系统相同)
七.系统服务控制
- systemctl工具,不提供交互式、可视化窗口,且管理单个服务效率更高
- 使用格式:systemctl 控制类型 服务名称
- 控制类型:start(启动);stop(停止);restart(重新启动);reload(重新加载);status(查看服务状态)
- restart,重新启动会先停止服务,在开启服务;reload,不会停止服务,而是重新加载文件
- 实例如下
[root@localhost ~]# netstat -natp | grep httpd
[root@localhost ~]# systemctl restart httpd
[root@localhost ~]# netstat -natp | grep httpd
tcp6 0 0 :::80 :::* LISTEN 1774/httpd
[root@localhost ~]#
- systemctl enable 服务名称,开机自启服务
- systemctl disable 服务名称 ,开机关闭服务
- systemctl is-enabled 服务名称,检测服务的状态
- netstat -natp | grep 服务名称,查看服务端口是否开启
- 实例如下
[root@localhost ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@localhost ~]# systemctl disable httpd
Removed symlink /etc/systemd/system/multi-user.target.wants/httpd.service.
[root@localhost ~]# systemctl is-enabled htttpd
Failed to get unit file state for htttpd.service: No such file or directory
[root@localhost ~]# netstat -natp | grep httpd
tcp6 0 0 :::80 :::* LISTEN 1774/httpd
[root@localhost ~]#
- runlevel查看运行级别(N代表init初始化,5代表图形化界面)
[root@localhost ~]# runlevel
N 5
[root@localhost ~]#
- ntsysv工具,提供一个交互式、可视化窗口,可以在字符终端运行,便于集中管理多个服务
- ntsysv,用字符伪造图形化界面,查看服务是否被开启