开机启动过程:
引导过程: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 服务关闭开机自启,并立即关闭