转自http://tanxin.blog.51cto.com/6114226/1167151

操作环境:linux Redhat 5.8

一.首先简单看一下系统启动的流程图,然后再作详细的解释

二.

1,BIOS自检,检测硬件,决定启动介质

BIOS为写入到主板上的一块闪存或EEPROM的程序,它可以在开机的时候执行,并通过BIOS程序去加载CMOS的信息,并通过CMOS内的设置取得主机的各项硬件配置(CMOS:CMOS的主要功能就是记录主板上面的重要参数,包括系统时间,CPU电压与频率,各项设备的I/O地址与IRQ等),BIOS程序也可以修改CMOS当中的参数,用BIOS设定程序的按键都不同,一般常见的使用Del按键进入BIOS设置界面

2,从硬盘启动,读硬盘的第一个扇区MBR,然后将启动引导工作交给boot loader

MBR引导记录位于物理硬盘的第一块扇区的一段引导代码(第一块扇区512个字节,其中MBR占446字节,分区表占64字节,结束标志占2字节),该扇区又称为主引导扇区(MBR扇区)

3,boot loader去找 grub,grub读取配置文件grub.conf,决定默认启动项,找到内核(kernel)和驱动(initrd)

@1. Boot loader:它的主要功能是认识操作系统的文件格式并加载内核到内存中去执行,由于不同的操作系统的文件格式不一致,因此每种操作系统都有自己的bootloader,bootloader分为两个阶:

1、stage1: 执行boot loader加载文件系统驱动

2、stage2:加载真正的配置文件: grub.conf

@2.  grub.conf里面有内核和驱动的信息,下面会对grub.conf文件做具体的介绍

4,内核会主动调用init进程,读取配置文件 /etc/inittab,决定启动级别, 运行初始化脚本/etc/rc.d/rc.sysinit,运行相应的启动级别下的脚本 /etc/rc.d/rcN.d/

@1.  vim /etc/inittab

id:5:initdefault:             //默认的runlevel设置,此处为5

# System initialization.

si::sysinit:/etc/rc.d/rc.sysinit     //准备系统软件执行的环境的脚本执行文件

l0:0:wait:/etc/rc.d/rc 0         //0 - 关机(千万不要把initdefault 设置为0 )

l1:1:wait:/etc/rc.d/rc 1        //1 - 单用户模式 l2:2:wait:/etc/rc.d/rc 2        //2 - 多用户,但是没有 NFS服务

l3:3:wait:/etc/rc.d/rc 3        //3 - 完全多用户模式

l4:4:wait:/etc/rc.d/rc 4        //4 - 没有用到(系统保留功能)

l5:5:wait:/etc/rc.d/rc 5       //5 - X11(与 3类似,但是加载使用X    Window)

l6:6:wait:/etc/rc.d/rc 6       //6 - 重新启动 (千万不要把initdefault 设置为6 )

ca::ctrlaltdel:/sbin/shutdown -t3 -r now

//是否允许按【ctrl】【alt】【del】就重新启动的选项

#不断电系统的pf,pr两种机制,一个是没电时的关机,一个是复电的处理

pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"

pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"

#tty1~tty6是由这六行决定的

1:2345:respawn:/sbin/mingetty tty1

2:2345:respawn:/sbin/mingetty tty2

3:2345:respawn:/sbin/mingetty tty3

4:2345:respawn:/sbin/mingetty tty4

5:2345:respawn:/sbin/mingetty tty5

6:2345:respawn:/sbin/mingetty tty6

#启动X window是由这里决定的

x:5:respawn:/etc/X11/prefdm -nodaemon

@2./etc/rc.d/rc.sysinit作用:这里简单说几个

1.取得网路环境和主机类型

2.测试与挂载内存设备/proc及USB设备 /sys

3.决定是否启动SELinux

4.启动系统的随机数生成器

5.用户自定义模块

6.加载内核的相关设置

7.初始化软件磁盘阵列,lvm

8.启动相关信息加载/var/log/dmesg文件中

5.依据/etc/inittab 执行/etc/rc.d/rc0~6.d

找到/etc/rc.d/rcN.d/K??*开头的文件,并进行  /etc/rcN.d/K??* stop 的动作

找到/etc/rc.d/rcN.d/S??* 开头的文件,并进行  /etc/rcN.d/S??* start 的动作

如果默认启动是文本开启6个文本控制台 [ALT+F1~F6]

如果默认启动项是图形则开启图形界面以及6个文本控制台

用户自定义的开机启动程序/etc/rc.d/rc.local

6, 加载X Window界面,等待用户输入用户名和密码

@1. 通过/etc/passwd、/etc/shadow

验证,如果用户名和密码输入正确

读取4个初始化文件:

/etc/profile、/etc/bashrc、~/.bashrc、~/.bash_profile

文本界面直接开启shell

图形界面开启桌面,进入X Window,通过开启终端打开shell

@2.系统还会自定义设备与模块对应文件为/etc/modprobe.conf

三. 介绍一下grub.conf这个文件

#vim /etc/grub.conf default=0   # 默认的启动项,也就是启动那个title,从0开始计数。 timeout=5 #timout=5,就是默认在启动选择界面停留的时间,等待5秒自动进入默认操作系统 splashimage=(hd0,0)/grub/splash.xpm.gz #splashimage是grub启动背景画面,这个可以不要  #hiddenmenu 是隐藏菜单只有按上下键才会出现 title Red Hat Enterprise Linux Server (2.6.18-308.el5) #title后面就是系统在启动时候显示的名字         root (hd0,0)

#root      分指定你的内核所在的分区。hd0表示第一块硬盘设备。  0表示第一个分区  也是/boot所在的分区

kernel /vmlinuz-2.6.18-53.el5 ro root=LABEL=/ rhgb quiet #kernel 内核在哪里;ro 只读;root=LABEL=/ 根分区是谁;rhgb (图形化显示启动过程) ;quiet (静默式启动,不显示dmesg信息)         initrd /initrd-2.6.18-53.el5.img

#initrd内核镜象的名字

#rhgb:表示redhat graphics boot,就是用图片来代替启动过程中显示的文本信息,这些信息在启动后用dmesg可以看到  #quiet:表示在启动过程中只显示要信息,类似硬件自检的消息不回显示

四. 下面是几个故障修复的例子

@1

1.我们把title下面的三行删掉,然后重启系统,

2,重启系统后,会卡在这里,因为修改了grub.conf这个文件,

3,这里就需要吧grub.conf里的那三行手动添加进去了,需要指定/boot所在的分区,linux内核,和initrd文件,然后boot启动

4,看到红色的Red Hat就证明你的内核加载成功了

5,启动成功后再把/etc/grub.conf文件的那三行加回去

@2

1.把/boot/grub/grub.conf删掉,会怎样呢?

可以把这个文件备份到其他地方,这样启动后可以把文件恢复回去,   运行root或find /vmlinuz-2.6.18-53el5(可以使用TAB补全),可以搜索vmlinuz所在分区

2. 内核成功被加载

3.把之前备份好的grub文件还原回去

@3 .  MBR损坏

# dd  if=/dev/zero of=/dev/hda bs=446 count=1     //模拟Boot loader 损坏

#reboot

1.从光盘启动,在这之前要把镜像挂载上

2.输入linux rescue进入救援模式

3.选择语言

4.选择美式键盘

5.这里我们不启动网络接口,

选择NO

6.这里是系统自动帮你挂载以前的系统,选择Continue

7. 真正进入救援模式的操作

#chroot /mnt/sysimage root虚拟家目录

#grub-install /dev/hda

# reboot

@4. 把/boot/下的内容删了再试一下

1. 同样是同光盘启动,进入linux rescue模式,看一下/boot下什么都没有了

2.把光盘挂上,然后安装kernel

3.内核安装完,还需要安装grub

4.  安装grub

5.没有grub.conf文件,手动添加进去,然后重启

6.内核加载成功

@5.    如果boot分区删了(前提是df可以看到/dev/hda1是boot分区记录),也可以恢复

从光盘进入到救援模式后,把那个boot分区添加回去,按照上面安装内核和grub就可以启动系统了,添加grub.conf文件

注:如果重启后出现fsck.ext3: Unable to resolve 'LABEL=boot',重新进入救援模式

解决方法:# e2label /dev/hda1 /boot   #e2label可以给分区加上label(这个地方纠结了我好长时间,本想再截张图,可是弄了好几次,都没有那个错误出现了)

linux boot分区 恢复出厂设置,linux系统启动流程及 MBR损坏,grub内容,文件误删,boot目录,分区误删修复...相关推荐

  1. android之恢复出厂设置的关机流程

    意外发现:setprop sys.powerctl reboot,recovery 将重启进入有菜单选择界面的recovery模式,在此模式下有root权限,不过要通过串口模式操作. 在系统设置应用里 ...

  2. android 恢复出厂设置 代码,android恢复出厂设置以及系统升级流程

    http://www.bangchui.org/simple/?t5938.html ============================================= 恢复出厂设置流程概括: ...

  3. 10恢复出厂设置_Mac系统如何恢复出厂设置

    苹果Mac电脑在什么情况下需要恢复出厂设置呢?例如系统数据损坏.遇到无法卸载的恶意软件.错误更新导致.或者你只是想要闲鱼出售你的Mac电脑,这里系统派教你Mac如何恢复出厂设置.我们先简单将恢复出厂分 ...

  4. mac电脑抹掉数据要多久_Mac系统如何恢复出厂设置

    苹果Mac电脑在什么情况下需要恢复出厂设置呢?例如系统数据损坏.遇到无法卸载的恶意软件.错误更新导致.或者你只是想要闲鱼出售你的Mac电脑,这里系统派教你Mac如何恢复出厂设置.我们先简单将恢复出厂分 ...

  5. 电脑计算机里怎么找恢复出厂设置,Windows系统电脑如何恢复出厂设置?

    原标题:Windows系统电脑如何恢复出厂设置? 最近有位朋友发现电脑使用时间久了,出现了运行卡顿和系统垃圾过多的问题,想知道是否可以通过恢复出厂设置来解决.其实,电脑Windows系统恢复出厂设置是 ...

  6. android平板怎么双清,华为M2平板10.0怎么双清?华为M2进入recovery格机恢复出厂设置...

    双清对于搭载了安卓系统的华为M2平板电脑来说,是非常实用的一个功能,不管是刷固件出现系统问题,还是日常操作需要修复系统特殊异常情况都需要用到的操作.但是很多的华为M2平板用户并不了解这个操作怎么来进行 ...

  7. Android6.0 Reset恢复出厂设置流程分析

    点击Settings应用中的恢复出厂设置按钮后流程分析: 先使用grep命令搜索"恢复出厂设置"字符串,找到相应的布局文件: packages/apps/Settings/res/ ...

  8. 手机距离传感器坏了有什么影响_恢复出厂设置对手机有什么影响?

    相信有很多小伙伴都知道,现在我们不管是工作还是生活都越来越离不开手机了.有些小伙伴在使用手机的过程中,有的时候会用几次手机中的[恢复出厂设置]功能.但是大家知道吗?手机恢复出厂设置对我们的手机有什么影 ...

  9. 戴尔系统出厂恢复出厂设置_如何恢复出厂设置

    戴尔系统出厂恢复出厂设置 Setting up your Sonos player is really easy, but what if you want to give your previous ...

最新文章

  1. winform解决跨线程调用windows窗口控件
  2. 一文读懂机器学习中的正则化
  3. 微信小程序万里目_4款万里挑一的微信小程序,每一个都是黑科技!
  4. 微软必应从.NET Core 2.1获得了性能提升
  5. 【错误记录】GitHub 提交代码失败、获取代码失败、连接超时、权限错误、ping 请求连接超时 ( 查找域名对应 IP | 设置 host 文件 )
  6. 转:csdn怎么快速转载别人的文章
  7. 重拾python Day 2
  8. Docker技术三大要点:cgroup, namespace和unionFS的理解
  9. 51 NOD 1227 平均最小公倍数(杜教筛)
  10. 为什么需要超过48k的采样音频?
  11. 大锅菜机器人_炒菜机或者炒菜机器人有好用的吗 - 玩主论坛
  12. android studio或者IntelliJ代码样式的设置
  13. 2017秋-软件工程第八次作业-第九周例行总结
  14. c语言学生管理系统用户登录,c语言学生管理系统之用户登陆
  15. 自媒体平台数据统计分析爬虫系列教程文档
  16. 程序员也需要知道的经济学通识
  17. html5红外遥控,自制红外遥控开关详细步骤(两款自制红外遥控开关方法) - 全文...
  18. 华为机试【机器人走迷宫】
  19. laravel结合easyWeChat的使用
  20. 什么是Java SE、Java EE、Java ME?

热门文章

  1. 03-锚点展示,img图片属性
  2. 武大樱花又盛开,用python画一棵樱花树
  3. k8s NFS故障: Stale file handle
  4. 微信公众号之IOS12以上版本自动填充验证码的输入框无法获取填充值
  5. 买16款macPro和还是15年macPro啦?实用大比较!
  6. 前端demo——CSS3制作简易时钟
  7. matlab sga,基于MATLAB遗传算法(SGA)实现
  8. linux用c语言实现冒泡排序,C语言实现简单的冒泡排序
  9. Flask中数据库基本操作,十分钟就掌握了
  10. 使用BenchmarkSQL对OceanBase进行测试的步骤