- Linux *** 作系统引导过程
- 排除启动类故障
- 服务控制及切换运行级别
- 优化启动过程
- 总结
- Linux *** 作系统引导过程
开机自检
服务器主机开机以后,将根据主板BIOS中的设置对CPu(Central Processing Unit,中央处理器)、内存、显卡、键盘等设备进行初步检测,检测成功后根据预设的启动顺序移交控制权,大多时候会一脚给本机硬盘。
总结:检测出第一个能够引导系统的设备,比如硬盘或光驱、优盘
MBR引导
当从本机硬盘中启动系统时,首先根据硬盘第一个扇区中MBR(Master Boot Record,主引导记录)的设置,将系统控制权传递给包含 *** 作系统引导文件的分区;或者直接根据MBR记录中的引导信息调用启动菜单
总结:运行放在MBR扇区里的启动GRUB引导程序
GRUB菜单
对于Linux *** 作系统来说,GRUB(GRand Unified Bootloader,统一启动加载器)是使用最为广泛的多系统引导器程序。系统控制权传递给GRUB以后,将会显示启动菜单给用户选择,并根据所选项(或采用默认值)加载Linux内核文件,然后将系统控制权转交给内核。需要注意的是,Centos7采用的是GRUB2启动引导器。
总结:GRUB引导程序通过读取GRUB配置文件/boot/grub2/grub.cfg,来获取内核和镜像文件系统的路径位置
加载Linux内核
Linux内核是一个预先编译好的特殊二进制文件,介于各种硬件资源与系统程序之间,负责资源分配与调度。内核接过系统控制权以后,将完全掌控整个Linux *** 作系统的运行过程。再Centso系统中,默认的内核为五年间位于“/boot/vmlinux-3.10.0-514.e17.x86_64”。
总结:把内核和镜像文件系统加载到内存中
init进程初始化
为了完成进一步的系统引导过程,Linux内核首先将系统中的”/sbin/init”程序加载到内存中运行(运行中的程序称为进程),init进程负责完成一系列的系统初始化过程,最后等待用户进行登录
总结:加载硬件驱动程序,内核把init进程加载到内存中运行
传统SysVinit依赖于串行执行Shell脚本启动服务,导致效率低下,系统启动速度较慢
systemd能够将更多的服务进程并行启动,并且具有提供按需启动服务的能力,是的启动更少进程提高系统启动速度
MBR第一个部分:主引导程序446字节
第二个部分:分区表,一个分区16字节,四个分区共64字节
第三个部分:MBR有效标识符,2个字节
GRUB2与GRUB的区别
支持多种文件系统格式
在grup中stage1 stage1-5 stage2已经被取消
grub2使用模块机制,通过动态加载需要的模块来扩展功能,这样做的好处允许core镜像更小
支持自动解压
配置文件的不同最明显的。
init:
启动时间长,init进程是串行启动,只有前一个进程启动完,才会启动下一个进程。
启动脚本复杂,init进程只是执行启动脚本,不管其他事情。脚本需要自己处理各种情况,这往往使得脚本变得很长
systemd:首先它并不是一个命令,而是一组命令,它涉及到系统方方面面的并行
Socket:Ip+端口号进行通讯
0:系统停机模式,系统默认允许级别不能设置位0,否则不能正常启动,机器关机
1:单用户模式,root权限,用于系统维护,禁止远程登陆(只能通过实机进去),类似windows下的安全模式登录(进入单用户模式的时候root不需要密码就可以登录,所以在此模式下可以修改root密码)
2:多用户模式,没有NFS和网络支持
3:完整的多用户文本模式,有NFS和网络,登录后进入控制台命令行模式
4:系统未使用,保留一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记电池用尽时,可以切换到这个模式来做一些设置
5:图形化模式,登陆后进入图像GUI模式,X windows系:
6:重启模式,默认允许级别不能设为6,否则不能正常启动。运行init6机器就会重启
2.排除启动类故障
首先添加一个磁盘
[root@localhost ~]# echo "- - -" > /sys/class/scsi_host/host2/scan ###刷新
或者重启(磁盘才能检测出来)
[root@localhost ~]# fdisk /dev/sdb ###进入给磁盘分区
[root@localhost ~]# mkfs.xfs /dev/sdb1 ###刷新磁盘才可使用
[root@localhost ~]# mkdir /xy ###创建一个目录
[root@localhost ~]# mount /dev/sdb1 /xy ###将sdb1挂载到新建的目录
[root@localhost ~]# dd if=/dev/sda of=/xy/mbr.bak bs=512 count=1
###将sda磁盘的前512字节复制到mbr.bak
[root@localhost ~]# dd if=/dev/zero of=/dev/sda bs=512 count=1
###模拟破坏MBR引导扇区
init 6 重启机器
选择第三个
再选择第二个
输入1回车再回车进入带sh -4.2#提示符的Bash Shell环境
mkdir /xy ###创建一个目录
mount /dev/sdb1 /xy ###将sdb1挂载带有备份的磁盘到新建目录
dd if=/xy/mbr.bak of=/dev/sda ###恢复备份文件
exit ###退出重启恢复完成
首先添加一个磁盘
[root@localhost ~]# echo "- - -" > /sys/class/scsi_host/host2/scan ###刷新
或者重启(磁盘才能检测出来)
[root@localhost ~]# fdisk /dev/sdb ###进入给磁盘分区
[root@localhost ~]# mkfs.xfs /dev/sdb1 ###刷新磁盘才可使用
[root@localhost ~]# mkdir /xy ###创建一个目录
[root@localhost ~]# mount /dev/sdb1 /xy ###将sdb1挂载到新建的目录
[root@localhost ~]# dd if=/dev/sda of=/xy/gurb.bak bs=446 count=1
###建立grup引导程序的备份
[root@localhost ~]# dd if=/dev/zero of=/dev/sda bs=446 count=1
###模拟对MRB中的GURB引导程序的破坏,但不破坏分区表
init 6 重启机器
按上一个案例进入带sh -4.2#提示符的Bash Shell环境
mkdir /xy ###创建一个目录
mount /dev/sdb1 /xy ###将sdb1挂载带有备份的磁盘到新建目录
dd if=/xy/mbr.bak of=/dev/sda ###恢复备份文件
exit ###退出重启恢复完成
另一种方法:引导页面进入急救模式,重建GRUB菜单配置文件
rm -rf /boot/grub2/grub.cfg
###删除文件,重启机器,在页面输入exit后可进入选择页面,再按照第一个案例的方式进入到急救模式
chroot /mnt/sysimage ###进入急救模式,加载光盘镜像,切换到系统根环境
grub2-install /dev/sda ###宠幸将GRUB引导程序安装到第一块硬盘(/dev/sda)的MBR扇区,如果有多个分区可省略
grub2-mkconfig -o /boot/grub2/grub.cfg ###重新构建GURB菜单的配置文件
exit
reboot
###退出环境并重启
修改密码前需要关闭加强服务
[root@localhost ~]# vim /etc/sysconfig/selinux ###进入这个文本
在文本里SELINUX的值改为SELINUX=disabled,保存并退出
进入单用户模式修改root密码为例
重启开机按esc,第一行按e再启动GRUB菜单中选择编辑选项,按键“e”进入编辑
编辑修改:大约再低16行找到“ro”,将“ro”修改为“rw init=/sysroot/bin/bash”;
按Ctrl+x重启,输入命令进入系统
#:chroot /sysroot
字符集修改
#:LANG=en_US.UFT-8 ###修改前可修改字符集
#:passwd root ###重置root密码
#:exit
#:init 6
###退出chroot,并重启
3.服务控制及切换运行级别
systemctl 参数
get-default:取得当前的target
set-default:设置指定的target为默认的运行级别
isolate:切换到指定的运行级别
unit.target:上面列出的运行级别
示例:
systemctl get-default ###查看默认运行级别
systemctl set-default multi-user.target ###设置默认的允许级别为mulit-user
systemctl isolate multi-user.target ###在不重启的情况下,切换到运行级别mulit-user下
Systemctl isolate get-default ###在不重启的情况下,切换到图形界面下
chkconfig工具
格式:chkconfig --list [服务名称]
chkconfig --add 服务名称
chkconfig --add 服务名称
chkconfig --level:级别列表服务名on/off
示例
chkconfig --add httpd
chkconfig --level 35 httpd on
4.总结
Linux *** 作系统引导过程
Linux系统服务控制
运行级别切换
优化开机自动加载服务
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)