Linux启动过程以及引导错误修复
目录
一、Linux系统启动过程
1.加载BIOS
2.读取MBR(主引导记录)
3.GRUB引导
4.加载Kernel文件
5.第一个进程init和systemd
6.欢迎界面进行登录
二、MBR扇区故障修复
1.我们先对MBR进行备份
2.模拟破坏MBR引导扇区
3.重启系统
4.选择Rescue a Centos system进入linux急救模式
5.按1回车 继续
6.创建一个文件夹用于挂载sdb1中的备份内容
7.启动成功,故障已排除
二、GRUB引导故障修复
三、centos7忘记root密码重置方法
一、Linux系统启动过程
1.加载BIOS
当你打开计算机电源,计算机会首先加载基本输入输出系统(Basic Input Output System )BIOS系统。检查硬件设备有没有损坏,在这里可以选择启动磁盘。BIOS程序一般被存放在主板ROM之中、即使在关机或掉电以后该程序也不会丢失。
2.读取MBR(主引导记录)
读取硬盘上磁道的第一个扇区被称为MBR,也就是Master Boot Record即主引导记录、它的大小是512字节,根据MBR记录中的引导信息调用启动菜单(如GRUB);即运行放在MBR扇区里的启动GRUB引导程序
3.GRUB引导
Boot Loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核做好一切准备。GRUB引导程序通过读取GRUB配置文件/boot/grub2/grub.cfg,来获取内核和镜像文件系统的设置和路径位置。
4.加载Kernel文件
根据grub设定的内核映像所在路径,系统读取内存映像,并进行解压缩操作。此时,屏幕一般会输出“Uncompressing Linux”的提示。当解压缩内核完成后,屏幕输出“OK, booting the kernel”。
系统将解压后的内核放置在内存之中,并调用start_kernel()函数来启动一系列的初始化函数并初始化各种设备,完成Linux核心环境的建立。至此,Linux内核已经建立起来了,基于Linux的程序应该可以正常运行了。
5.第一个进程init和systemd
内核加载完毕,会启动Linux操作系统第一个守护进程init,Linux内核首先将系统中的“/sbin/init”程序加载到内存中运行(运行中的程序称为进程),init进程负责完成一系列的系统初始化过程,最后等待用户进行登录systenmed;加载硬件驱动程序, 内核把init进程加载到内存中运行
传统sysvinit依赖于串行执行shell脚本启动服务,导致效率低下,系统启动速度较慢systemd能够将更多的服务进程并行启动,并且具有提供按需启动的能力,使得启动更少进程,从而提高系统启动速度。/etc/inittab文件的作用是设定Linux的运行等级,Linux常见运行级别如下
- 0:关机模式
- 1:单用户模式
- 2:无网络支持的多用户模式
- 3:字符界面多用户模式
- 4:保留
- 5:图像界面多用户模式
- 6:重启模式
init进程
由Linux内核加载运行/sbin/init程序
init进程是系统中第一个进程
init进程的PID(进程标记)号永远为1
Systemd
Systemd是Linux操作系统的一种init软件
CentOS7中采用全新的Systemd启动方式,取代传统的SysVinit
CentOS7中运行的第一个init进程是/liblsystemd/systemd
6.欢迎界面进行登录
二、MBR扇区故障修复
1.我们先对MBR进行备份
创建一个备份文件夹,例如backup,将一个备份磁盘挂载在该文件夹下,并对MBR进行备份
mkdir backup
mount /dev/sdb1 /backup
dd if=/dev/sda of=/kackup/mbr.bak bs=512 count=1
2.模拟破坏MBR引导扇区
[root@ljp dev]# dd if=/dev/zero of=/dev/sda bs=512 count=1
记录了1+0 的读入
记录了1+0 的写出
512字节(512 B)已复制,0.000736407 秒,695 kB/秒
3.重启系统
由于MBR的缺失,会进入这样的界面,我们使用光标选择Troubleshooting并回车确认
4.选择Rescue a Centos system进入linux急救模式
5.按1回车 继续
继续回车获得一个shell
6.创建一个文件夹用于挂载sdb1中的备份内容
mkdir backupdir
mount /dev/sdb1 /backupdir
将sdb1中的备份重新放入sda中,然后退出该模式进行重启
dd if=/backupdir/mbr.bak of=/dev/sda bs=512 count=1
exit
7.启动成功,故障已排除
二、GRUB引导故障修复
在linux中,/boot/grub目录下的包是用于启动菜单的背景图片及样式
GRUB配置文件 /boot/grub2/grub.cfg
1.删除grub配置文件模拟故障
rm -rf /boot/grub2/grub.cfg
2.重启系统并进入急救模式,流程参考上文MBR修复过程
3.使用chroot命令,切换到系统跟环境
chroot /mnt/sysimage
4.重新将grub引导程序安装到第一块硬盘的MBR扇区
grub2-install /dev/sda
5.重新构建grub菜单的配置文件,之后退出并重启
grub2-mkconfig -o /boot/grub2/grub.cfg
exit
reboot
三、centos7忘记root密码重置方法
1.进入急救模式,加载系统镜像,选择troubleshooting
chroot /mnt/sysimage
2.重设root密码
passwd root
3.退出后重启系统并以重置的密码进行登录
Linux启动过程以及引导错误修复相关推荐
- linux efi 引导,Ubuntu 16.04引导错误修复 - EFI
如果安装Ubuntu后启动报错:"Reboot and Select proper Boot device or Insert Boot Media in selected Boot dev ...
- Linux 启动过程详解
随着Linux的应用日益广泛,特别是在网络应用方面,有大量的网络服务器使用Linux操作系统.由于Linux的桌面应用和Windows相比还有一定的差距,所以在企业应用中往往是Linux和Window ...
- 深入理解Linux启动过程 0号进程,1号进程
深入理解Linux启动过程 Linux系统的启动过程由很多阶段组成,这篇博客从初始化引导程序到第一个用户空间应用程序探索Linux启动进程. 我们先从Linux启动的顶层视图开始分析,以便能有一个整体 ...
- Linux启动过程学习
该学习过程是一个Linux从主引导记录到第一个用户空间程序的指导. 启动一个Linux系统的过程包含一系列步骤.但是无论你是启动一个标准的X86桌面或嵌入式PowerPC,大部分流程是相似的.该文章探 ...
- 嵌入式Linux启动过程中的问题积累
嵌入式Linux启动过程中的问题积累 Dongas 07-12-19 1.Bad Magic Number ## Booting image at 33000000 ... Bad Magic Num ...
- Linux启动过程详细介绍
Linux启动过程详细介绍 启动第一步--加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它.这是因为BIOS中包含了CPU的相 ...
- linux系统需要占多大的内存,linux启动过程Bootloader、kernel
256M可以推1080P屏幕 128M可以基本运行并安装 256M可以勉强开启特效 512M流畅运行特效 当然内存越大越好,特效与显卡也有关系 和windows相比,当然linux对内存的需求小 Bo ...
- linux 启动过程
Linux 启动过程详解 下面来详细了解一下 Linux 的启动过程. Linux 的启动 过程包含了 Linux 工作原理的精髓, 而且在嵌入式的开发过程也非常需要这方面知识的积累 ...
- 华为服务器Linux启动过程,华为RH2288H服务器引导ServiceCD安装Windows Server操作系统...
安装准备 ServiceCD光盘. Windows操作系统安装光盘. 物理光驱. 使用虚拟控制台远程安装操作系统时,需要准备以下软件: ServiceCD光盘或ServiceCD ISO文件. Win ...
最新文章
- 线下活动【西安站】用Leangoo做Scrum敏捷开发实战课(免费)
- Caffe 作者贾扬清:我们应该跳出框架的桎梏,往更广泛的领域寻找价值
- 如何写优雅的SQL原生语句?
- 【POJ】【2975】Nim
- 推动网络由连接为中心向用户为中心转变
- 人很臭尽量往香里去做...
- 初识ES-什么是elasticsearch
- mysql 选择特定的表_MySQL选择具有多个特定列的所有表
- VC6.0加载lib文件的三种方法
- 2019 live tex 发行版_TeX Live 2019安装指南
- ActiveMQ RabbitMQ RokcetMQ Kafka实战 消息队列中间件视频教程
- Orchard详解--第五篇 CacheManager
- itext设置字体间距_Word文档怎样调节行间距?单行间距怎么调?
- 一次局域网入侵全过程
- mysql .idb_mysql.idb
- D. Challenging Valleys
- mac上的Finder快捷键汇总
- 量化投资学习必读书目(八)——《短线交易大师》
- ARM嵌入式开发板推荐
- python 读取邮件
热门文章
- 安全交流:浅谈sql注入式(SQL injection)攻击与防范
- 使用LVS和Keepalived搭建高可用负载均衡服务器集群
- JavaScript笔试知识点整理
- 数梦工场7.5亿元都干点啥?
- 计算机vf中rest是什么意思,vf常用命令(全)
- Oracle中ltrim的用法
- FPGA学习笔记——计数器
- JAVA计算机毕业设计跨境电商网站(附源码、数据库)
- J-link V7.64C Warning : the connected probe appears to be a j-link clone报错
- python 在一个py文件中调用另一个文件夹下py文件模块