开机引导和服务
开机引导过程
1.开机自检
服务器主机开机以后,将根据主板 BIOS 中的设置对 CPU(Central Processing Unit, 中央处理器)、内存、显卡、键盘等设备进行初步检测,检测成功后根据预设的启动顺序移 交系统控制权,大多时候会移交给本机硬盘。 网络启动 加载 网络批量pxe
2. MBR引导
当从本机硬盘中启动系统时,首先根据硬盘第一个扇区中 MBR(Master Boot Record, 主引导记录)的设置,将系统控制权传递给包含操作系统引导文件的分区;或者直接根据 MBR 记录中的引导信息调用启动菜单(如 GRUB)。 总结:运行放在MBR扇区里的启动 GRUB引导程序
3.GRUB菜单 系统类型双西雅图 内核文件 默认值
对于 Linux 操作系统来说,GRUB(GRand Unified Bootloader,统一启动加载器)是 使用最为广泛的多系统引导器程序。系统控制权传递给 GRUB 以后,将会显示启动菜单给 用户选择,并根据所选项(或采用默认值)准备加载 Linux 内核文件,然后将系统控制权转交给 内核。需要注意的是,CentOS 7 采用的是 GRUB2 启动引导器。 总结:GRUB引导程序通过读取GRUB配置文件/boot/grub2/grub.cfg,来获取内核和镜像文件系统的设置和路径位置
4. 加载Linux内核 操作系统 调度硬件
Linux 内核是一个预先编译好的特殊二进制文件,介于各种硬件资源与系统程序之间, 负责资源分配与调度。内核接过系统控制权以后,将完全掌控整个 Linux 操作系统的运行过 程。在 CentOS 系统中,默认的内核文件位于“/boot/vmlinuz-3.10.0-514.el7.x86_64”。 总结:把内核和镜像文件系统加载到内存中 可以使用
5. init进程初始化 这是linux 系统运行的第一个程序
为了完成进一步的系统引导过程,Linux内核首先将系统中的“/sbin/init”程序加载到内 存中运行(运行中的程序称为进程),init 进程负责完成一系列的系统初始化过程,最后等待用户进行登录 总结:加载硬件驱动程序,内核把init进程加载到内存中运行
传统init依赖于串行执行Shell 脚本启动服务,导致效率低下,系统启动速度较慢 排队 systemd能够将更多的服务进程并行启动,并且具有提供按需启动服务的能力,使得启动更少进程,从而提高系统启动速度 大家一起
systemd服务
1.对比5 6 可以解决依赖关系并行启动
2.按需启动
3.自动解决依赖关系
负责在系统启动或运行时,激活系统资源,服务器进程和其它进程
Systemd新特性
-
系统引导时实现服务并行启动
-
按需启动守护进程
-
自动化的服务依赖关系管理
-
同时采用socket式与D-Bus总线式激活服务
-
socket与服务程序分离
-
向后兼容sysv init脚本
-
使用systemctl 命令管理,systemctl命令固定不变,不可扩展,非由systemd启动的服务,
-
systemctl无法与之通信和控制
-
系统状态快照
systemd 核心概念:unit
unit表示不同类型的systemd对象,通过配置文件进行标识和配置;文件中主要包含了系统服务、监听
socket、保存的系统快照以及其它与init相关的信息
实验一,修复mbr扇区
######## 加块硬盘,刷新接口,分区,格式化分区
[root@localhost ~]# echo "- - -" > /sys/class/scsi_host/host0/scan
[root@localhost ~]# echo "- - -" > /sys/class/scsi_host/host1/scan
[root@localhost ~]# echo "- - -" > /sys/class/scsi_host/host2/scan
[root@localhost ~]# lsblk #### 查看刷新接口是否成功
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 5G 0 part /boot
└─sda2 8:2 0 48G 0 part
├─centos-root 253:0 0 40G 0 lvm /
└─centos-swap 253:1 0 8G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
sr0 11:0 1 4.2G 0 rom /run/media/root/CentOS 7 x86_64
[root@localhost ~]# fdisk /dev/sdb #### 磁盘分区
[root@localhost ~]# mkfs.xfs /dev/sdb1 #### 格式化磁盘分区
[root@localhost ~]# lsblk #### 查看是否分区成功
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 5G 0 part /boot
└─sda2 8:2 0 48G 0 part
├─centos-root 253:0 0 40G 0 lvm /
└─centos-swap 253:1 0 8G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
└─sdb1 8:17 0 15G 0 part
sr0 11:0 1 4.2G 0 rom /run/media/root/CentOS 7 x86_64
[root@localhost ~]# mkdir /data #### 创建个文件夹
[root@localhost ~]# mount /dev/sdb1 /data ### 挂载分区
[root@localhost ~]# dd if=/dev/sda of=/data/xiu.bak bs=512 count=1
记录了1+0 的读入 #### 备份MBR扇区
记录了1+0 的写出
512字节(512 B)已复制,0.000260722 秒,2.0 MB/秒
[root@localhost ~]# dd if=/dev/zero of=/dev/sda bs=512 count=1
记录了1+0 的读入 #### 模拟MBR扇区被破坏
记录了1+0 的写出
512字节(512 B)已复制,0.0002399 秒,2.1 MB/秒
[root@localhost ~]# hexdump -C -n 512 /dev/sda #### 查看MBR扇区是否被破坏
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000200
[root@localhost ~]# init 6 ##### 重启虚拟机
实验二,修复GRUB引导故障
rm -rf /boot/grub2/grub.cfg ##### 模拟GRUB 引导文件被破坏
init 6 #### 重启虚拟机
init 6 重启虚拟机
实验三,修改root用户密码
######## 启动虚拟机 在加载系统界面按"E"键进入编辑模式
######## 找到"linux16"开头的那段,光标跳到末尾输入"rd.break"
######## ctrl + x 继续
######## mount -o remount,rw /sysroot
######## chroot /sysroot/ 切换根目录
######## passwd root
######## exit
######## init 6 重启