CentOS7
1.BIOS(开机自检)
2.MBR ( Master Boot Record 主引导记录)
3.GRUB2 Bootloader(引导菜单)
4.Kernel(内核引导)
5.Systemd (不再使用init,改成了systemd)
6.Runlevel-Target (运行级别)
1.BIOS
基本输入/输出系统是一个固件接口,它不仅控制启动过程,还提供对连接的外围设备的低级接口的所有控制。打开系统电源后,它将读取所有设备设置并执行开机自检(开机自检)过程,以识别硬件设备,以测试和初始化系统硬件组件。成功后处理后,它将加载MBR(主引导记录)以进行下一个引导处理。
2.MBR引导
主引导记录放在Linux引导硬盘的第一个扇区中,此信息通过BIOS预加载到ROM(只读内存)中。
MBR的大小只有512个字节,它包含用于引导操作系统的机器代码指令,称为引导加载程序,以及分区表。一旦BIOS找到引导加载程序(GRUB2)并将其加载到(ROM)内存或硬盘驱动器中,它就会控制引导过程。只是MBR(主引导记录)加载并执行GRUB2引导加载程序。
3.GRUB2(引导加载程序版本2)引导加载程序
言简意赅:grub2菜单,如果装了双系统会让你进行选择,Linux?还是windows?还是MacOS?
GRUB2是所有最新版本(如Red Hat/CentOS 7)中的默认引导加载程序,也是9.10版中的Ubuntu。它已经被GRUBbootloader(也称为GRUBLegacy)所取代。
grub2配置文件位于/boot/grub2/grub.cfg中,由grub2 mkconfig使用/etc/grub.d中的模板和/etc/default/grub中的设置自动生成。不建议编辑GRUB2配置文件。
引导加载程序(rhel 7的grub2)启动rhel7内核和初始RAM磁盘(initrd)。GRUB 2安装在服务器硬盘的引导扇区中,配置为加载Linux内核和initramfs,initrd是一个初始根文件系统,将在Linux系统上的实际根文件系统之前安装。
4.kernel内核引导
Linux内核是操作系统的核心,它是系统上第一个加载的程序。当系统启动时,内核从initrd.img加载所有必要的内核模块和驱动器,以加载Linux7中的系统第一个进程systemd,在6里面,init是爸爸,在7里面换了个爸爸,那就是systemd
下面的命令将帮助您找到SystemD进程ID(PID)
[root@zls ~]# ps -ef | grep 折叠ystemdroot 1 0 0 7月14 ? 00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22root 347 1 0 7月14 ? 00:00:00 /usr/lib/systemd/systemd-journaldroot 379 1 0 7月14 ? 00:00:00 /usr/lib/systemd/systemd-udevdroot 522 1 0 7月14 ? 00:00:00 /usr/lib/systemd/systemd-loginddbus 525 1 0 7月14 ? 00:00:00 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
systemd管理进程
systemd使用“targets”而不是runlevels。默认情况下,有两个主要级别:
1) multi-user(多用户).target: analogous to runlevel 3
#查看运行级别[root@zls ~]# systemctl get-defaultmulti-user.target
2) graphical(图形化).target: analogous to runlevel 5
#设置默认运行级别[root@zls ~]# systemctl set-default graphical.targetRemoved symlink /etc/systemd/system/default.target.Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/graphical.target.#查看默认界面[root@zls ~]# systemctl get-defaultgraphical.target[root@zls ~]# vim /etc/inittab# inittab is no longer used when using systemd.## ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.## Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target## systemd uses 'targets' instead of runlevels. By default, there are two main targets:## multi-user.target: analogous to runlevel 3# graphical.target: analogous to runlevel 5## To view current default target, run:# systemctl get-default## To set a default target, run:# systemctl set-default TARGET.target#
CentOS7中的运行级别:
runlevel0.target -> poweroff.target
runlevel1.target -> rescue.target
runlevel2.target -> multi-user.target
runlevel3.target -> multi-user.target
runlevel4.target -> multi-user.target
runlevel5.target -> graphical.target
runlevel6.target -> reboot.target
运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
运行级别2:多用户运行级别(没有文件系统)
运行级别3:完全的多用户状态(有文件系统),登陆后进入控制台命令行模式
运行级别4:多用户运行级别
运行级别5:X11控制台,登陆后进入图形GUI模式
运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
CentOS7如何进入单用户模式
1.重启Linux系统主机并出现引导界面时,按下键盘上的e键,进入内核编辑界面
?
2.在Linux16这行后面添加enforcing=0 init=/bin/bash,然后按下Ctrl+X组合键来运行修改过的内核程序
?
3.然后进入单用户模式界面。
#重新挂载/目录bash-4.2# mount -o rw,remount /#非交互设置root密码bash-4.2# echo 1 |passwd --stdin root#重新引导系统bash-4.2# exec /sbin/init
?
不需要重新挂载的方式
?
如果centos7系统运行级别被设置成重启的级别...
?
?
CentOS7通过光盘进入救援模式
1.挂载光盘镜像
?
2.从BIOS启动
?
3.进入BIOS设置从光盘启动
?
4.按F10保存并退出
?
5.进入救援模式
?
6.选择救援模式
?
7.选择继续
?
接下来就可以...做你想做的事
生产场景1:
当系统坏了,无法登陆系统,但是需要把里面的数据拷贝出来,怎么办?
bash-4.2# mkfs.xfs -f /dev/sdcbash-4.2# mkdir /databash-4.2# mount /dev/sdc /databash-4.2# cp -a /raid0 /databash-4.2# umount /dev/sdb
生产场景2:
修复MBR,主要出现在安装双系统的时候,后安装的系统把原来的MBR删除了,需要修复
1.破坏硬盘的钱446字节,模拟MBR引导损坏,会发现重启无法启动系统
[root@zls ~]# dd < /dev/zero >/dev/sda bs=1 count=446记录了446+0 的读入记录了446+0 的写出446字节(446 B)已复制,0.0011061 秒,403 kB/秒
2.重启,查看系统状态
?
3.重启进入救援模式
?
4.进入系统,获取root权限
?
5.修复MBR引导,然后重启连接服务器
?
#修复grubbash-4.2# grub2-install /dev/sda#退出bash-4.2# exit#重启进入系统bash-4.2# reboot
生产场景3:
CentOS7 误删除grub文件,进行修复
1.模拟故障
#删除grub2[root@zls ~]# rm -fr /boot/grub2/#重启[root@zls ~]# reboot
2.查看系统状态
?
3.重启进入救援模式
?
4.重新安MBR,加载grub2中的grub.cfg文件
?
bash-4.2# chroot /mnt/sysimagebash-4.2# grub2-install /dev/sdabash-4.2# grub2-mkconfig -o /boot/grub2/grub.cfg
5.查看加载出来的文件
?
bash-4.2# ls /boot/grub2
6.退出重启
bash-4.2# exitsh-4.2# reboot
?
满血复活...
修改CentOS7网卡名称为eth0和eth1
这个可以在安装系统的时候,修改网卡名称,如果已经安装过的系统,那我们还是从BIOS界面到光盘启动,进入系统安装界面。
?
选择 Install CentOS 7然后按下Tab键
?
biosdevname=0 net.ifnames=0
如果不是dell物理机环境:
net.ifnames=0
老男孩教育李导出品必是精品:CentOS7启动流程
?
Systemd 进程管理
systemd的由来
Linux一直以来都采用init进程作为爸爸,但是init有两个缺点:
1.启动时间长,init进程是串行启动,只有前一个进程启动完,才会启动下一个进程。
2.启动脚本复杂,初始化完成后,系统会加载很多脚本,脚本都会处理各自的情况,这回让脚本多而复杂。
CentOS5 是启动速度最慢的,串行启动过程,无论进程相互之间有无依赖关系。
CentOS6 相对启动速度有所改进,有依赖的进程之间依次启动而其他没有依赖关系的则并行启动。
CentOS7 所有进程无论有无依赖关系,都并行启动,当然有很多时候进程并没有真正的启动而是只有一个信号或者说是标记,在真正利用的时候,才会真正启动。
这就类似咱们使用的windows,最开始win95,win98,win7启动速度极其的慢,从win8,开始win8.1,win10启动速度,快的yp...噌一下子就起来了。
?
什么是systemd
systemd即为system daemon守护进程,systemd主要解决上文的问题而诞生,systemd的目标是,为系统的启动和管理提供一套完整的解决方案。
systemd的优势
1.最新系统都采用systemd管理(RedHat7,CentOS7,Ubuntu15...)
2.CentOS7 支持开机并行启动服务,显著提高开机启动效率
3.CentOS7关机只关闭正在运行的服务,而CentOS6,全部都关闭一次。
4.CentOS7服务的启动与停止不在使用脚本进行管理,也就是/etc/init.d下不在有脚本。
5.CentOS7使用systemd解决原有模式缺陷,比如原有service不会关闭程序产生的子进程。
systemd相关的配置文件
/usr/lib/systemd/system #类似C6系统的启动脚本目录/etc/init.d/
/etc/systemd/system/ #类似C6系统的/etc/rc.d/rcN.d/
/etc/systemd/system/multi-user.target.wants/
systemd相关的命令
由于之前长期使用RHEL/CentOS 6系统, 已经习惯使用service chkconfig等命令来管理系统服务,但在RHEL/CentOS 7系统中是使用systemctl命令来管理服务的。
如下是RHEL/CentOS 6系统中System V init命令与RHEL/CentOS 7系统中systemctl命令的对比,后续课程中会经常用到它们。
systemctl管理服务的启动、重启、停止、重载、查看状态等常用命令
System V init(6系统)systemctl命令(7系统)作用service crond startsystemctl start crond.service启动服务service crond stopsystemctl stop crond.service停止服务service crond restartsystemctl restart crond.service重启服务service crond reloadsystemctl reload crond.service重新加载配置(不终止服务)service crond statussystemctl status crond.servre查看服务运行状态systemctl is-active sshd.service查看服务是否在运行中systemctl mask crond.servre禁止服务运行systemctl unmask crond.servre取消禁止服务运行
systemctl设置服务开机启动、不启动、查看各级别下服务启动状态等常用命令
System V init(6系统)systemctl命令(7系统)作用chkconfig crond onsystemctl enable crond.service开机自动启动chkconfig crond offsystemctl disable crond.service开机不自动启动chkconfig --listsystemctl list-unit-files查看各个级别下服务的启动与禁用chkconfig --list crondsystemctl is-enabled crond.service查看特定服务是否为开机自启动chkconfig--add crondsystemctl daemon-reload创建新服务文件或者变更设置
systemctl服务状态说明
服务状态状态说明loaded服务单元的配置文件已经被处理active(running)服务的一个或多个进程在运行中active(exited)一次性运行的服务成功被执行并退出(服务运行后完成任务,相关进程会自动退出)active(waiting)服务已经运行但在等待某个事件inactive服务没有在运行enable服务设定为开机运行disabled服务设定为开机不运行static服务不能被设定开机启动,但可以由其他服务启动该服务