Linux 系统引导过程
1.开机自检(检测硬件设备,检测出第一个能引导系统的设备,硬盘)
服务器主机开机以后,将根据主板 BIOS 中的设置对 CPU(Central Processing Unit, 中央处理器)、内存显卡、键盘等设备进行初步检测,检测成功后根据预设的启动顺序移交系统控制权,大多时候会移交给本机硬盘。 总结:检测出第一个能够引导系统的设备 比如硬盘或光驱
2.MBR引导(运行在 MBR 扇区(硬盘的最小存储单位 512字节)里的启动 GRUB 引导程序)
当从本机硬盘中启动系统时,首先根据硬盘第一个扇区中 MBR(Master Boot Record,主引导记录)的设置,将系统控制权传递给包含操作系统引导文件的分区;或者直接根据MBR 记录中的引导信息调用启动菜单(如 GRUB)。 总结:运行放在MBR扇区里的启动GRUB引导程序
3.GRUB菜单(GRUB 引导程序通过读取GRUB配置文件(/boot/grub2/grub.cfg)获取内核和镜像文件系统的设置和路径,屏幕显示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进程初始化(内存会把init进程加载到内存中运行)
为了完成进一步的系统引导过程,Linux内核首先将系统中的“/sbin/init”程序加载到内存中运行(运行中的程序称为进程),init 进程负责完成一系列的系统初始化过程,最后等待用户进行登录 总结:加载硬件驱动程序,内核把init进程加载到内存中运行传统SysVinit依赖于串行执行Shell 脚本启动服务,导致效率低下,系统启动速度较慢systemd能够将更多的服务进程并行启动,并且具有提供按需启动服务的能力,使得启动更少进程,从而提高系统启动速度。
GRUB2与grub的区别
- 支持多种文件系统格式
- 在grub中stage1 stage1-5 stage2已经被取消
- grub2使用模块机制,通过动态加载需要的模块来扩展功能,这样做的好处允许core镜像更小
- 支持自动解压
- 配置文件的不同最明显的。
运行级别所对应的Systemd目标
各个级别的作用
- 0 关机
- 1 单用户模式
- 2 字符界面多用户模式(无网络)
- 3 字符界面多用户模式(有网络)
- 4 字符界面多用户模式(保留)
- 5 图形界面多用户模式
- 6 重启
详解
- 0 系统停机模式,系统默认运行级别不能设置为0,否则不能正常启动,机器关的;
- 1 单用户模式,root权限,用于系统维护,禁止远程登录(只能通过实机进去),该模式的进入方式百度操作即可;就像windows下的安全模式登录;(进入单用户模式的时候root不需要密码就可以登录,所以在此模式下可以修改root密码)
- 2 多用户模式,没有NFS和网络支持;
- 3 完整的多用户文本模式,有NFS和网络,登录后进入控制台命令行模式。
- 4 系统未使用,保留一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本电池用尽时,可以切换到这个模式来做一些设置;
- 5 图形化模式,登录后进入图形GUI模式,X windows系;
- 6 重启模式,默认运行级别不能设为6,否则不能正常启动。运行init6机器就会重启
chkconfig命令
主要用来更新(启动或停止)和查询系统服务(service)的运行级信息,用于维护/etc/rc[0-6].d目录的命令行工具。
运行级文件:
每个被chkconfig管理的服务需要在对应的init.d下的脚本加上两行或者更多行的注释。第一行告诉chkconfig缺省启动的运行级以及启动和停止的优先级。如果某服务缺省不在任何运行级启动,那么使用 - 代替运行级。第二行对服务进行描述,可以用\ 跨行注释。 例如,random.init包含三行:
- chkconfig: 2345 20 80
- description: Saves and restores system entropy pool for \
- higher quality random number generation.
范例:
chkconfig -–add httpd增加httpd服务
chkconfig –-del httpd删除httpd服务
chkconfig –-list列出系统所有的服务启动情况
chkconfig –-list mysqld列出mysqld服务设置情况
chkconfig –-level 35 mysqld on设定mysqld在等级3和5为开机运行服务(on表示开机启动,off表示开机不启动,reset指重置服务的启动信息)
chkconfig mysqld on设定mysqld在各等级为on,“各等级”包括2、3、4、5等级
systemctl
在 Centos 中 systemctl 是设置系统服务(service)的命令,它融合之前service和chkconfig的功能于一体。可以使用它永久性或只在当前会话中启用/禁用服务。
Linux添加systemd服务,使用systemctl start xxx启动服务
第一步:进入/usr/lib/systemd/system文件夹
cd /usr/lib/systemd/system
第二步:创建service启动文件
以本机tomcat为例,/usr/lib/systemd/system下创建tomcat.service文件
- ExecStart:服务启动的命令(对应你自己服务器的命令)
- ExecStop: 服务停止的命令(同理)
- ExecReload: 空在这里, 暂时不知道
第三步:添加tomcat.service文件的启动权限
第四步:测试
通过如下两个命令测试tomcat是否会停止和启动
启动、停止、重启、重载服务
systemctl start name.service
systemctl stop name.service
systemctl restart name.service
systemctl reload name.service
查看某个服务(单元)的状态
systemctl status name.service
激活/禁止自动启动
- systemctl enable httpd.service
- systemctl disable httpd.service
杀死服务
systemctl kill httpd
排除启动类故障
修复MBR扇区故障
MBR位于第一 块硬盘( /dev/sda) 的第一一个物理扇区处,总共512字节
- 备份MBR扇区数据到其它磁盘( /dev/sdb1)
mkdir /backup
mount /dev/sdb1 /backup
dd if=/dev/sda of=/backup/mbr.bak bs=512 count=1
- 模拟破坏MBR引导扇区 dd if=/dev/zero of=/dev/sda bs=512 count=1
3. 引导界面进入急救模式,从备份文件中恢复MBR扇区数据
- 先加载好光盘镜像,重启操作系统,
- 当出现安装向导界面时,选择"Troubleshooting"选项,
- 再选择"Rescue a CentOS Linux system"选项,进入急救模式
- 选择“1"选择Continue并按Enter 键继续
- 再次按Enter 键后将进入带“sh-4.2#"提示符的Bash Shell环境
- sh-4.2# mkdir /backupdir
- sh-4.2# mount /dev/sdb1/backupdir
- #挂载带有备份文件的分区
- sh-4.2# dd if=/backupdir/mbr.bak of=/dev/sda
- #恢复备份数据.
- sh-4.2# exit
- #执行exit命令退出临时Shell环境,系统将会自动重启
修复GRUB 引导故障
- /boot/grub/目录下的包是用于启动菜单的背景图片及样式
- /boot/grub2/grub.cfg #GRUB配置文件
**方法一**“: 手动输入引导命令(笨拙繁琐,不建议使用)
- grub> insmod xfs #加载指定的模块到内核
- grub> linux16 /vmlinuz-3.10.0-693.el7.x86_64 root=UUID=8fd74986-ae66-4ffd-b7d8-a19f2eca7b6f ro rhgb quiet
- LANG=zh_ CN.UTF-8 #内核的名字及位置等信息
- grub> initrd16 /initramfs-3.10.0-693.e17.x86_64.img #镜像系统文件
- grub> boot #引导boot
方法二:进入急救模式,恢复GRUB引导程序
- MBR位于第一 块硬盘( /dev/sda) 的第一个物理扇区处,总共512字节,前446字节是主引导记录,分区表保存在MBR扇区中的第447-510字节中。
- mkfs.xfs /dev/sdb1 格式化磁盘
- mkdir /bak创建bak目录
- mount /dev/sdb1 /bak 挂载目录到磁盘上
- dd if =/dev/sda of=/bak/grub.bak bs=446 count=1 ###备份
- cd /bak ---------ls --------ll 查看文件是否保存完好
- #模拟对MRB中的GRUB引导程序的破坏,但并不破坏分区表
- dd if=/dev/zero of=/dev/sda bs=446 count=1
- #引导界面进入急救模式,从备份文件中恢复GRUB引导程序
- N
- sh-4.2# mkdir /backupdir
- sh-4.2# mount /dev/sdb1 /backupdir
- sh-4.2# dd if=/backupdir/grub.bak of=/dev/sda
- sh-4.2# exit
方法三:引导界面进入急救模式,重建GRUB菜单配置文件
- rm -rf /boot/grub2/grub.cfg
- #进入急救模式,加载光盘镜像,切换到系统根环境
- sh-4.2# chroot /mnt/sysimage 进入光驱系统里的根 当前系统的根
- #重新将GRUB引导程序安装到第一块硬盘(/dev/sda)的MRB扇区,如果有多个分区可省略
- bash-4.2# grub2-install /dev/sda
- #重新构建GRUB菜单的配置文件
- bash-4.2# grub2-mkconfig -o /boot/grub2/grub.cfg
- #退出chroot环境,并重启
- bash-4.2# exit
- sh-4.2# reboot
CentOS7遗忘root用户的密码或是重置
方法一
- 进入急救模式,加载系统镜像,c切换到系统根环境
- sh-4.2# chroot /mnt/sysimage
- 重设root用户密码
- bash-4.2# passwd root
方法二
:进入单用户模式修改root密码为例。
1.重启开机按esc,第一行按e在启动GRUB菜单中选择编辑选项,按键 "e" 进入编辑;
2.编辑修改:大约在第16行找到 "ro" 将 "ro" 修改为 " rw init=/sysroot/bin/bash ";
3.按Ctrl+X重启,输入命令进入系统
sh-4.2#chroot /sysroot
4.字符集修改
###修改前可修改字符集:
sh-4.2#LANG=en_US.UFT-8
###重置root密码
sh-4.2# passwd root
#退出chroot环境,并重启
bash-4.2# exit
sh-4.2# init 6
结束语:硬盘有价,数据无价。备份第一要事。