CentOS 7开机启动过程,引导和服务,密码的修改

开机启动过程:

引导过程:1.开机自检(BIOS)->2.MBR引导->GRUB菜单->加载内核kernel->systemd进程初始化

程序:执行特定任务的一串代码,静态,存在硬盘中。

进程:运行中的程序叫进程,动态,存在内存中。有生命周期。linux宏内核。

守护进程:init(CentOS6),systemd(CentOS7)。开机后先启动systemd再启动其它程序

开机启动顺序:告诉硬件去哪里找操作系统。BIOS:1.硬件,2.移动设备(光驱CDROM),3.网卡。

BIOS软件:检测硬件,然后指引硬件去找操作系统

MBR(硬盘的第一个扇区)512字节:1.开机引导程序 446字节。2.分区表64字节

GRUB:根据grub.cfg配置文件找到内核文件引导内核文件运行起来

kernel:加载内核,把内核放入内存中运行

运行级别所对应的Systemd目标

运行级别 Systemd的target 说明
0 target 关机状态,使用该级别时将会关闭主机
1 rescue.target 单用户模式,不需要密码验证即可登录系统,多用于系统维护
2 multi-user.target 用户定义/域特定运行级别。默认等同于3
3 multi-user.target 字符界面的完整多用户模式,大多数服务器主机运行在此级别
4 multi-user.target 用户定义/域特定运行级别。默认等同于3
5 graphical.target 图形界面的多用户模式,提供了图形桌面操作环境
6 reboot.target 重新启动,使用该级别时将会重启主机

2,3是字符界面,5是图形界面。可通过init 3进入字符界面

输入用户名和密码登录字符界面。说明:密码含有数字的小键盘输入无效!

可以再输入init 5切回图形界面!

解决系统故障问题

1.修复MBR分区

修复MBR扇区故障

故障原因:病毒,木马等造成的破坏;不正确的分区操作、磁盘读写误操作

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

解决思路:应提前做好备份文件;以安装光盘引导进入急救模式;从备份文件中恢复

1.备份mbr引导扇区到其他磁盘。2.模拟破坏mbr引导扇区。3.引导镜像急救模式进入mbr扇区恢复

基本原理:

1.增加一块磁盘sdb(可以重启一下,lsblk就能看到sdb了)

[root@localhost ~]# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

sda 8:0 0 60G 0 disk

├─sda1 8:1 0 4G 0 part /boot

└─sda2 8:2 0 54G 0 part

├─centos-root 253:0 0 50G 0 lvm /

└─centos-swap 253:1 0 4G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk

sr0 11:0 1 4.4G 0 rom /run/media/root/CentOS 7 x86_64

2.分区格式化挂载到mnt下

3.复制(备份分区表)

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

[root@localhost ~]# dd if=/dev/sda of=/mnt/mbr.bak count=1 bs=512

记录了1+0 的读入

记录了1+0 的写出

512字节(512 B)已复制,0.000643148 秒,796 kB/秒

[root@localhost ~]# ls /mnt # 备份进来了

mbr.bak

4.破坏sda中第一个扇区

可以先看一下前512字节,是完整的数据

可以看到备份的文件和sda的第一个扇区完全一致

破坏:往sda第一个扇区里面写0:dd if=/dev/zero of=/dev/sda count=1 bs=512

数据被破坏

重启前保证光驱是连接的

重启!选择第三个进入急救模式!

选择第二个!

进入光驱的系统中去

ls /mnt 看到当前的mnt下没有任何东西

mount /dev/sdb1 /mnt 将sdb1挂载到mnt下

ls /mnt 看到了我们的备份文件

dd if=/mnt/mbr.bak of=/dev/sda count=1 bs=512 复制回去

reboot重启

重启后就能正常进入操作系统了

总结:

增加一块磁盘sdb 分区sdb1 挂载到/mnt上。

复制(备份分区表):dd if=/dev/sda of=/mnt/mbr.bak count=1 bs=512

hexdump -C -n 512 /dev/sba 查看完整性

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

hexdump -C -n 512 /dev/sda 查看到数据被破坏

reboot 重启进入光驱:选择第三个急救模式,选择第二个进入光驱系统,输入1 continue

mount /dev/sdb1 /mnt 把sdb1挂载到/mnt下

dd if=/mnt/mbr.bak of=/dev/sda count=1 bs=512 备份回去(备份分区表)

hexdump -C -n 512 /dev/sda #能看到数据恢复了

重启:reboot。能正常进入系统了。

2.修复GRUB分区

文件在/boot/grub2/grub.cfg。我们在根下创建个文件夹mkdir /data。把grub.cfg移动到/data中

使得开机启动时找不到grub.cfg

重启!重启时在读条过程中按esc,且只能按一次,读条只有0.5秒。

如果成功了,就进入这个界面,没成功就多试几次。选择CD-ROM

操作

总结:

把grub.cfg从/boot/grub2/grub.cfg移动到/data/下

重启,在读条0.5秒内按esc键,选择第三个进入光驱里面。选第三个急救模式,选择第二个进入光驱模式,输入1 continue

chroot /mnt/sysimage #有提示,根被挂载到mnt下了,切换到自己的根。进入急救模式后,更改环境

ls /data 发现有grub.cfg。可以直接复制过去到/boot/grub2/grub.cfg也可以用命令生成它。这里用以下两条命令生成

grub2-install /dev/sda 重新设置分区。重新建立加载sda分区

grub2-mkconfig -o /boot/grub2/grub.cfg 到这个路径下。只能叫这个名字。重新构建grub菜单配置文件

exit #退出shell环境

重启reboot

3.修改密码

当忘记root密码时可以通过两种方式:1.进入急救模式,通过passwd修改密码。2.启动时任意键暂停启动。按e键进入编辑模式

方式一:比较简单

需要在读条0.5秒中按一次esc键。进入光驱系统中,上面讲了。

选择1继续->2.更改环境->3.passwd更改密码->4.输入密码和确认密码(密码不显示)->5.退出当前环境->重启

方式二:

重启时在这个界面按e键,只有5秒

进入这个界面在linux开头的行的最后,敲一个空格,输入rd.break。按ctrl+x启动。

服务

服务程序:1.本地服务程序,管理本机:systemd,init。2.网络服务程序,接待网络客户

systemd:管家式的程序,管理系统中其他程序;为了方便管理将系统中的程序按照一定的规则进行分类

通过命令pstree -p查看进程树,可见systemd是系统启动的第一个进程。由它来引导其他程序启动。

想被systemd程序管理:系统必要的程序,yum rpm安装的程序,编译安装的程序,需要手写配置文件后才可以。必须在/usr/lib/systemd/system/下.service才会被systemd管理,yum和rpm会自动生成,天生可以被systemd管理,编译需要手写该文件,手写服务名.service的文件。

[root@localhost system]# pwd

/usr/lib/systemd/system

[root@localhost system]# find ./ -name '*.service' | wc -l

338

当一个服务被停掉后,如果有其他用户来访问这个服务时,只有在/usr/lib/systemd/system/下以.service的文件才会被systemd被唤醒。

  • systemctl命令:

    systemctl start 服务名 开启服务

    systemctl stop 服务名 关闭服务

    systemctl status 服务名 查看状态

    systemct restart 服务名 重启服务

    systemctl reload 服务名 重新加载服务不影响使用

    systemctl enable 服务名 开机自启

    systemctl disable 服务名 关闭开机自启

    systemctl enable --now 服务名 开机自启并立即启动

    systemctl disable --now 服务关闭开机自启,并立即关闭

相关推荐
_.Switch4 分钟前
高级Python自动化运维:容器安全与网络策略的深度解析
运维·网络·python·安全·自动化·devops
2401_850410834 分钟前
文件系统和日志管理
linux·运维·服务器
JokerSZ.8 分钟前
【基于LSM的ELF文件安全模块设计】参考
运维·网络·安全
XMYX-038 分钟前
使用 SSH 蜜罐提升安全性和记录攻击活动
linux·ssh
芯盾时代40 分钟前
数字身份发展趋势前瞻:身份韧性与安全
运维·安全·网络安全·密码学·信息与通信
心灵彼岸-诗和远方2 小时前
DevOps业务价值流:架构设计最佳实践
运维·产品经理·devops
一只哒布刘2 小时前
NFS服务器
运维·服务器
苹果醋33 小时前
Java8->Java19的初步探索
java·运维·spring boot·mysql·nginx
二十雨辰3 小时前
[linux]docker基础
linux·运维·docker
Jason-河山3 小时前
【自动化更新,让商品信息跳舞】——利用API返回值的幽默编程之旅
运维·自动化