200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 理论:引导过程与服务控制 (解决root密码忘记问题 不能正常开机)

理论:引导过程与服务控制 (解决root密码忘记问题 不能正常开机)

时间:2023-05-24 05:31:38

相关推荐

理论:引导过程与服务控制 (解决root密码忘记问题 不能正常开机)

文章目录

前言:一: 引导过程总览二 : init 进程2.1 init 进程三 : Systemd 单元类型四 :运行init 级别所对应的Systemd目标 (centos 7)五 : 修复MBR扇区故障5.1 故障原因5.2 故障现象5.3 解决思路5.4 实验:模拟MBR扇区故障,然后去进行修复1:先备份MBR扇区数据2:模拟故障3:加载系统镜像文件中的急救模式4:把备份数据做恢复处理六 :修复GRUB引导故障6.1 故障原因6.2 故障现象6.3 解决思路6.4 实验:grub菜单故障恢复七 : 遗忘root密码7.1 故障原因7.2 故障现象7.3 解决思路7.4 实验八 : 系统服务控制8.1 系统服务控制九:Linux系统的运行级别9.1 查看运行级别9.2 临时切换运行级别十 : 优化启动过程10.1 系统服务管理工具十一 : 系统服务的启动和控制11.1 ntsysv 系统服务管理工具11.2 查看系统服务的启动状态11.3 设置系统服务的启动状态

前言:

学习引导过程,排除启动类故障,服务控制及切换运行级别,优化启动过程;重点了解修复MBR扇区,gurb菜单,root密码重置,优化开机启动

一: 引导过程总览

启动类型(优先级从<到n):自动,自动(延迟启动,即开机后自启动),手动,禁用

二 : init 进程

2.1 init 进程

由Linux内核加载运行 /sbin/init 程序是系统中第一个进程PID(进程标记)号永远为1

/sbin/init 中的sbin是一个软连接,并不是一个目录

[root@localhost /]# ls -al'查看sbin和bin'总用量 32dr-xr-xr-x. 18 root root 249 11月 12 19:02 .dr-xr-xr-x. 18 root root 249 11月 12 19:02 ..drwxr-xr-x. 2 root root 6 11月 5 12:17 abclrwxrwxrwx. 1 root root 7 10月 23 13:35 bin -> usr/bindr-xr-xr-x. 5 root root 4096 10月 23 13:41 bootdrwxr-xr-x. 20 root root 3300 11月 13 10:00 devdrwxr-xr-x. 138 root root 8192 11月 13 13:36 etcdrwxr-xr-x. 5 root root 45 11月 13 08:53 homelrwxrwxrwx. 1 root root 7 10月 23 13:35 lib -> usr/liblrwxrwxrwx. 1 root root 9 10月 23 13:35 lib64 -> usr/lib64drwxr-xr-x. 2 root root 6 11月 5 mediadrwxr-xr-x. 2 root root 6 11月 5 mntdrwxr-xr-x. 8 root root 150 11月 12 17:33 optdr-xr-xr-x. 203 root root 0 11月 13 10:00 proc-rw-r--r--. 1 root root 4 11月 13 14:06 ps.txtdr-xr-x---. 14 root root 4096 11月 13 10:01 rootdrwxr-xr-x. 42 root root 1260 11月 13 13:36 run'lrwxrwxrwx. 1 root root 8 10月 23 13:35 sbin -> usr/sbindrwxr-xr-x. 2 root root 6 11月 5 srvdr-xr-xr-x. 13 root root 0 11月 13 10:00 sysdrwxrwxrwt. 27 root root 4096 11月 13 14:04 tmpdrwxr-xr-x. 13 root root 155 10月 23 13:35 usrdrwxr-xr-x. 22 root root 4096 11月 5 23:09 var

三 : Systemd 单元类型

四 :运行init 级别所对应的Systemd目标 (centos 7)

五 : 修复MBR扇区故障

5.1 故障原因

病毒、木马等造成的破坏不正确的分区操作、磁盘读写误操作

5.2 故障现象

找不到引导程序,启动中断无法加载操作系统,开机后黑屏

5.3 解决思路

未雨绸缪,养成习惯,提前做好备份文件以安装光盘的形式去引导进入急救模式从备份文件中恢复

5.4 实验:模拟MBR扇区故障,然后去进行修复

思路:

修复MBR(另一种是GPT)扇区故障

一个扇区512字节

MBR中存有文件元信息(属性,位置)还有系统的引导文件;文件数据信息(具体内容)存放在磁盘的别的位置

步骤:

1:先备份MBR扇区数据

1)加一块硬盘做备份sdb,分区,格式化,挂载

[root@localhost ~]# init 6'重启'

[root@localhost ~]# fdisk /dev/sdb'给sdb备份盘分区'欢迎使用 fdisk (util-linux 2.23.2)。更改将停留在内存中,直到您决定将更改写入磁盘。使用写入命令前请三思。Device does not contain a recognized partition table使用磁盘标识符 0x99e92b15 创建新的 DOS 磁盘标签。命令(输入 m 获取帮助):nPartition type:p primary (0 primary, 0 extended, 4 free)e extendedSelect (default p): p分区号 (1-4,默认 1):起始 扇区 (2048-41943039,默认为 2048):将使用默认值 2048Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):将使用默认值 41943039分区 1 已设置为 Linux 类型,大小设为 20 GiB命令(输入 m 获取帮助):p磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区Units = 扇区 of 1 * 512 = 512 bytes扇区大小(逻辑/物理):512 字节 / 512 字节I/O 大小(最小/最佳):512 字节 / 512 字节磁盘标签类型:dos磁盘标识符:0x99e92b15设备 BootStart EndBlocks Id System/dev/sdb1 2048 41943039 20970496 83 Linux命令(输入 m 获取帮助):wThe partition table has been altered!Calling ioctl() to re-read partition table.正在同步磁盘。[root@localhost ~]# mkfs.xfs /dev/sdb1'格式化'meta-data=/dev/sdb1 isize=512 agcount=4, agsize=1310656 blks= sectsz=512 attr=2, projid32bit=1= crc=1 finobt=0, sparse=0data= bsize=4096 blocks=5242624, imaxpct=25= sunit=0swidth=0 blksnaming =version 2 bsize=4096 ascii-ci=0 ftype=1log=internal log bsize=4096 blocks=2560, version=2= sectsz=512 sunit=0 blks, lazy-count=1realtime =none extsz=4096 blocks=0, rtextents=0[root@localhost ~]# mkdir /beifen'创建挂载点'[root@localhost ~]# mount /dev/sdb1 /beifen'挂载'[root@localhost ~]# cd /beifen[root@localhost beifen]# ls[root@localhost beifen]#

2)然后备份过去

[root@localhost beifen]# dd if=/dev/sda of=/beifen/MBR.sda.bak bs=512 count=1'运用dd命令去把/dev/的sda磁盘的MBR备份,注意,不是sba1'记录了1+0 的读入记录了1+0 的写出512字节(512 B)已复制,0.000550469 秒,930 kB/秒[root@localhost beifen]# ls'查看'MBR.sda.bak

2:模拟故障

[root@localhost beifen]# dd if=/dev/zero of=/dev/sda bs=512 count=1'依旧运用dd,去把MBR覆盖'记录了1+0 的读入记录了1+0 的写出512字节(512 B)已复制,0.000125984 秒,4.1 MB/秒[root@localhost ~]# init 6'重启'

然后出现了报错

3:加载系统镜像文件中的急救模式

1)先把镜像放进去

2)在读条的时候按esc进入boot

选第三个troubleshooting

选择Rescue a CentOS system

3)加载,加载完毕

选第一个continue,连接

然后就可以回车键入命令

4:把备份数据做恢复处理

1)此时进入的系统是镜像文件中的系统,并不是电脑中的系统,这里重新创建挂载点,把含有备份文件的磁盘挂载上去,依旧运用dd命令去将备份数据覆盖上去

然后reboot进行重启

成功

小结:

1:备份mbr扇区数据

1)加一块硬盘做备份sdb

分区–》格式化—》挂载/abc

2)dd if=/dev/sda of=/abc/sda.mbr.bak bs=512 count=1

2:模拟故障

dd if=/dev/zero of=/dev/sda bs=512 count=1

3:加载系统镜像文件中的急救模式

加载系统镜像文件中的内核界面

4:把备份数据做恢复处理

mkdir /aaa

mount /dev/sdb1 /aaa

dd if=/aaa/sda.mbr.bak of=/dev/sda bs=512 count=1

六 :修复GRUB引导故障

6.1 故障原因

MBR中的GRUB引导程序遭到破坏grub,conf文件丢失、引导配置有误

6.2 故障现象

系统引导停滞,显示“grub>”提示符

6.3 解决思路

尝试手动输入引导命令(100多行,嫌麻烦的就别手输了,了解即可)进入急救模式,重写或者从备份中恢复grub.conf(即加载镜像文件中的备份)向MBR扇区中重建grub程序

6.4 实验:grub菜单故障恢复

思路:

1.使用系统急救模式进入命令字符界面

2.加载镜像中的的系统进入bash环境

3.重新构建grub菜单系统

4.重启

步骤

1.先查看下grub所在的文件位置

[root@localhost ~]# cd /boot'切换到/boot'[root@localhost boot]# lsconfig-3.10.0-693.el7.x86_64efigrubgrub2initramfs-0-rescue-33c124456fa34c50a98483245dfea58d.imginitramfs-3.10.0-693.el7.x86_64.imginitrd-plymouth.imgsymvers-3.10.0-693.el7.x86_64.gzSystem.map-3.10.0-693.el7.x86_64vmlinuz-0-rescue-33c124456fa34c50a98483245dfea58dvmlinuz-3.10.0-693.el7.x86_64[root@localhost boot]# ls grub/splash.xpm.gz[root@localhost boot]# ls grub2/device.map fonts grub.cfg('配置文件') grubenv i386-pc locale[root@localhost boot]#

可以查看下grub.cfg文件

[root@localhost grub2]# vim grub.cfg 22 23 if [ x"${feature_menuentry_id}" = xy ]; then24 menuentry_id_option="--id"25 else26 menuentry_id_option=""27 fi28 29 export menuentry_id_option30 31 if [ "${prev_saved_entry}" ]; then32 set saved_entry="${prev_saved_entry}"33 save_env saved_entry34 set prev_saved_entry=35 save_env prev_saved_entry36 set boot_once=true37 fi38 39 function savedefault {40 if [ -z "${boot_once}" ]; then41saved_entry="${chosen}"42save_env saved_entry43 fi44 }

这个配置文件就是需要手动输入的,不忙的同学实在想尝试的话可以背下来手动输入

把grub.cfg配置文件删除,然后重启测试一波

[root@localhost grub2]# rm -rf grub.cfg [root@localhost grub2]# lsdevice.map fonts grubenv i386-pc locale[root@localhost grub2]# init 6

2.没有进入系统,出现了手动输入grub的界面

进入急救模式,依旧是依靠镜像文件,把镜像文件挂载好,esc进入(在读取系统时就要去按,眼疾手快)

选择第三个CD-ROM Drive

跟MBR一样,先进入troubleshooting,后进入Rescue a centos system,选择1)continue

里面让用户run the command(运行这个命令):chroot /mnt/sysimage去进入镜像文件中的系统

输入chroot /mnt/sysimage 命令就会从sh切换到bash

重新构建grub2

grub2-install /dev/sda 给sda系统盘安装grub2

grub2-mkconfig -o /boot/grub2/grub.cfg 紧跟的这个指令指创建配置文件,指定位置是/boot/grub2/grub/cfg(也就是最开始删掉cfg的目录)

exit 保存

保存完成,reboot重启

解决问题

小结:

1:使用系统急救模式进入命令字符界面

2:加载镜像中的系统进入bash环境

chroot /mnt/sysimage

3:重新构建grub菜单系统

grub2-install /dev/sda

grub2-mkconfig -o /boot/grub2/grub.cfg

exit

reboot

七 : 遗忘root密码

7.1 故障原因

遗忘root用户的密码

7.2 故障现象

无法进行需要root权限的管理操作若没有其他可用账号,将无法登陆系统

7.3 解决思路

进入急救模式,重设密码

7.4 实验

步骤:

1.加载镜像系统

esc 进镜像,依旧进入急救模式

2.直接改密码

选择1

chroot /mnt/sysimage/ 进入系统

直接输入passwd root 就可以修改密码

记得exit保存

reboot重启,测试密码

小结:

1:加载镜像系统

chroot /mnt/sysimage

2:直接改密码

passwd root

输入密码

八 : 系统服务控制

8.1 系统服务控制

常用方式

[root@localhost ~]# systemctl 控制类型 服务名称

控制类型 start: 启动stop: 停止restart: 重新启动(会中断服务,相当于先stop,后start)reload: 重新加载(会重新加载配置文件,不会中断)status: 查看服务状态…

九:Linux系统的运行级别

9.1 查看运行级别

runlevel命令systemctl工具

9.2 临时切换运行级别

init命令(命令参数是运行级别所对应的数字)systemctl工具(命令参数是具体的target)

[root@localhost ~]# runlevel'查看运行级别'N 5'N处的位置代表上一个运行的级别'[root@localhost ~]# init 3[root@localhost ~]# init 5[root@localhost ~]# runlevel3 5

一般都是在35界别进行相互切换

十 : 优化启动过程

10.1 系统服务管理工具

ntsysv工具(伪图像化界面) 提供一个交互式、可视化窗口可以在字符终端运行便于集中管理多个服务 systemctl 工具 不提供交互式、可视化窗口管理单个服务效率更高

[root@localhost ~]# ntsysv

带星号的会开机自启动

空格可以添加去掉星号

tab键可以切换界面

[root@localhost ~]# rpm -q httpdhttpd-2.4.6-90.el7.centos.x86_64[root@localhost ~]# netstat -ntap | grep 80'查看80端口的网络状态'tcp 00 192.168.139.152:59860 117.78.24.34:80 TIME_WAIT - tcp 00 192.168.139.152:59862 117.78.24.34:80 TIME_WAIT - [root@localhost ~]# systemctl start httpd'开启httpd'[root@localhost ~]# netstat -ntap | grep 80tcp6 00 :::80 :::*LISTEN4863/httpd

设置自启动不会影响工具目前的运行状态

十一 : 系统服务的启动和控制

11.1 ntsysv 系统服务管理工具

11.2 查看系统服务的启动状态

[root@localhost ~]# systemctl is-enabled 服务名称

11.3 设置系统服务的启动状态

[root@localhost ~]# systemctl enable/disable 服务名称

systemctl enable httpd 可以设置自启动

systemctl is-enabled httpd 可以检测服务是否开启自启动

[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 is-enabled httpd'查看启动状态'enabled[root@localhost ~]# systemctl disable httpd'禁止自启动'Removed symlink /etc/systemd/system/multi-user.target.wants/httpd.service.[root@localhost ~]# systemctl is-enabled httpd'再次查看'disabled

[root@localhost ~]# chkconfig --add 名称'系统中的服务中添加一个工具(名称)'

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。