系统启动概述 |多种情况导致开机不能进入| 破坏MBR | 删除自动引导文件grub.cfg | 删除内核文件vmlinuz | 删除初始化文件initramfs | 设定启动等级 |mbr知识|

一,系统引导过程概述

通电 > bios 初始化 > grub2 磁盘引导阶段 > grub2 文件引导阶段 > 指定boot所在分区 > 启动内核,挂载/设备 >

启动init程序进入初始化阶段 > 启动systemd初始化进程 > 读取 /etc/systemd/ 中的文件 > 启动程序 > 启动登陆环境

1,基本输入 / 输出系统 ( BIOS ) 检测并初始化硬件,确定从中引导的设备。它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。BIOS是在开机时计算机系统会执行的第一个程序

2,grub2 磁盘引导阶段,由硬盘启动时,BIOS通常是转向第一块硬盘的第一个扇区,即主引导记录(MBR Master Boot Record

主引导扇区由三个部分组成(共占用512个字节)

#主引导程序即主引导记录(MBR)占446个字节 内含引导加载程序(类似 grub=GRand Unified Bootloader ,主流为grub,grub2是升级版)

#磁盘分区表项(DPT,Disk Partition Table)由四个分区表项构成(每个16个字节),每组分区信息占16B,这也是为什么最多有4个主分区

#结束标志(占2个字节)55AA(十六进制)

3,grub2 文件引导阶段,引导加载程序功能之一是选择启动哪种系统,间接的转交给其他的bootloader这也是多重引导的重要功能

4,指定boot所在分区,引导加载程序确定系统之后,就可以指向该系统所在分区并加载内核,把用户选定的内核装载到RAM中的特定空间中,解压,展开,而后把系统控制权移交给内核,内核文件是/boot/vmlinuz

5,启动init程序进入初始化阶段 在内核加载完成之后,系统开始执行第一个程序init,查找/sbin下的“init”程序并执行它,主要功能就是准备软件执行的环境,从这里开始init成为了Linux系统的父进程。init读取的第一个文件是/etc/inittab,通过它init会确定我们Linux操作系统的运行级别。它会从文件/etc/fstab里查找分区表信息然后做相应的挂载

6,启动systemd初始化进程  systemd 是 Linux 系统中最新的初始化系统(init),准备软件执行的环境,包括系统的主机名,网络设置,语系处理,文件系统格式和其他服务的启动。这里所有的操作都会通过init的配置文件/etc/ininttab来规划,这里面有一个重要的设置选项,启动执行级别run level,分为以下7个

runlever0.target           poweroff.target
runlever1.target           rescue.target
runlever2.target           multi-user.target
runlever3.target           multi-user.target
runlever4.target           multi-user.target
runlever5.target           grapical.target

runlever6.target           reboot.target

注意:


由于EFI的兴起,要给EFI代码留磁盘最开始的1M空间,一个扇区是512个字节2048*512=1048576(个byte)=1024Kbyte=1Mbyte,并且可以看到我们的启动分区在vda1下(Boot下面有*)

vda1是主分区,vda是第一块磁盘,mbr在vda的第一个扇区

二,破坏MBR(446字节)并恢复

破坏阶段

1,从无限空截取446byte覆盖vda,实际上就是破坏了mbr,注意不能再多一个字节 ,这样就会把接下来的分区表也破坏了


2,reboot,正常模式下无法启动了

恢复阶段

1,关机,添加一个光驱设备,选择镜像

2,调整启动方式,从光驱启动,Apply

3,开机,选择troubleshooting

4,按照提示进入挽救模式

4,根据提示得到一个shell


5,根据上面提示,系统被挂在了/mnt/sysimage下,chroot到这个目录,进入正常环境的shell

注意:在进入正常环境的shell下,/mnt/sysimage就相当于根目录


6,执行恢复命令 grub2-install /dev/vda

注意:理解vda和vda1,vda1是系统分区,这个实验vda1是启动分区,里面是linux的内核文件等,而mbr不在这里面

##两次exit退出

7,关机,调整启动顺序,从光盘启动,Apply

成功!

三,删除自动引导文件

自动引导文件

自动引导文件里面可以找到开机时的对应信息


##删除文件

##恢复文件

方法一:执行命令grub2-mkconfig > /boot/grub2/grub.cfg (追加到这个文件)

###没有reboot

方法二:适用于reboot之后,自动引导文件删除,需要手动引导,开机自动进入手动引导界面


1,按grub.cfg文件的启动过程编写命令

‘hd0,msdos1’是表示第一块硬盘的第一块分区,设置根目录为第一硬盘的第一个分区,这个系统管理员肯定知道根在哪

vmlinuz是可引导的、压缩的内核,vmlinuz是vmlinux的压缩文件,位于/boot下

(特别注意:如果/boot是被单独放在一个磁盘盘里面,那么这里/相当于/boot,写为/vmlinuz.........,第一句命令也要更改)

initrd(Linux初始RAM磁盘)是在系统引导过程中挂载的一个临时根文件系统,initrd文件中包含了各种可执行程序和驱动程序,它们可以用来挂载实际的根文件系统,然后再将这个 initrd RAM磁盘卸载,并释放内存

注意:最后一步是启动boot而不是reboot,因为这是一个手动引导的启动过程,不需要reboot

2,进入开机界面之后,需要执行命令grub2-mkconfig > /boot/grub2/grub.cfg ,否则下次开机还是需要手动引导

注意:这个手动引导过程不适用于win10,因为win10的硬盘分区是gpt类型的,而此方法只适用于mbr类型的

五,删除内核文件vmlinuz-3.10.0-123.el7.x86_64并恢复

##删除

##恢复

方法一:这个文件在镜像里面是有的,找到复制到/boot

1,yum通过文件查找安装包,这个文件在kernel-3.10.0-123.el7.x86_64里面


2,直接打开镜像文件,进入Packages,查找该安装包

3,防止破坏镜像文件,复制该安装包到桌面,转换为cpio格式(rpm包无法直接取出文件)

rpm2cpio   filename.rpm | cpio -id              ####-i, -进入 copy-in 模式,从归档文件中提取文件,-d, -创建目录

4,将boot目录下面的该文件复制到/boot下,完成

方法二:适用于删除文件之后reboot的情况


1,光驱启动,进入挽救模式,其思路也是复制镜像里面的该文件到/boot

2,进入光驱挂载点,找到该文件并复制该文件到真实根的mnt下面(此时的真实根是/mnt/sysimage)

3,切换到真实根环境,rpm包转换为cpio格式,复制所需vmlinuz文件到/boot(切换到真实根,此时/就是真实根)


4,两次exit退出,然后调整启动方式,从硬盘启动,完成

六,删除初始化文件initramfs-3.10.0-123.el7.x86_64.img并恢复

方法一:执行命令mkinitrd /boot/initramfs-3.10.0-123.el7.x86_64.img   3.10.0-123.el7.x86_64

####或者执行mkinitrd /boot/initramfs-$(uname -r).img   $(uname -r)  ####.img不要忘!!!

####man mkinitrd格式 mkinitrd [OPTION...] [<initrd-image>] <kernel-version>

###3.10.0-123.el7.x86_64是版本号,可以用$(uname -r)来替代,因为uname -r的执行结果就是内核版本号,$(uname -r)表示先执行括号里面的内容

方法二:适用于reboot之后

###卡住!!

1,关机,从光盘启动,进入挽救模式

2,切换到系统的真实根环境,执行方法一的命令,完成

###mkinitrd /boot/initramfs-$(uname -r).img   $(uname -r)

###或者mkinitrd /boot/initramfs-3.10.0-123.el7.x86_64.img   3.10.0-123.el7.x86_64

注意:在这个环境里面执行会有一个报错,可以忽略,是正常现象。



七,设定开机启动等级

当我们设置开机启动或不启动某项服务时,实际是添加或者删除了软连接从小



进入软链接的生成目录,可以看到防火墙等服务的存在,这和看它的状态显示的也一样


1,设定开机等级systemctl set-default  xxx.target


systemctl set-default graphicl.target 设置为开机图形化启动

2,如果设置为systemctl set-default shutdown.target,开机就关机


3,效果

###确实开始关机


###设置为poweroff.target,恢复方法都相同

4,恢复,进入编辑模式,图像化开启,直接添加数字5


5,开机成功之后修改开机启动类型为图形化启动!!!

systemctl set-default graphicl.target 








八,有关mbr的知识

###GPT最大支持 18EB-一个字节 的大容量(EB=1024 PB,PB=1024 TB)

 ###MBR分区是将分区信息保存到磁盘的第一个扇区(MBR扇区)中的分区表64个字节中,每个分区项占用16个字节,这16个字节中存有活动状态标志、文件系统标识、起止柱面号、磁头号、扇区号、隐含扇区数目(4个字节)、分区总扇区数目(4个字节)等内容。这种分区方案用4个字节存储分区的总扇区数,最大能表示2的32次方的扇区个数,按每扇区512字节计算,每个分区最大不能超过2TB。

###MBR的意思是“主引导记录”,它是存在于磁盘驱动器开始部分的一个特殊的启动扇区。这个扇区包含了已安装的操作系统系统信息,并用一小段代码来启动系统。如果你安装了Windows,其启动信息就放在这一段代码中——如果MBR的信息损坏或误删就不能正常启动Windows,这时候你就需要找一个引导修复软件工具来修复它就可以了。Linux系统中MBR通常会是GRUB加载器。MBR。当一台电脑启动时,它会先启动主板自带的BIOS系统,bios加载MBR,MBR再启动Windows,这就是mbr的启动过程。

###分区:mbr最多支持四个主分区,gpt没有限制。如果要装多个系统,mbr最多4个而gpt没有限制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值