linux开机简略流程:
POST-->bootloader-->kernel-->usr_space_ Application
##############################################################################
POST 阶段:
计算机加电后,处理器执行的第一条指令定位到 BIOS 芯片 (ROM) 把 ROM 中的程序 加载到内存,接着会跳转到 ROM 中的程序 所在的内存地址段,将这段程序加载到处理器执行,进行加电自检。 ( 通常服务器主板上有两个 ROM ,防止升级 BIOS 固件版本失败,导致无法开机 )
一般 BIOS 固有的功能
BIOS features
– UEFI (Unified Extensible Firmware Interface) # 统一的可扩展固件接口 ( 可认为是一种新型的 BIOS ,具体自行百度 )
– SMBIOS 2.5 (DMI) # 相当于数据库 通过 DMI ,用户可以获取序列号、电脑厂商、串口信息以及其它系统配件信息
– ServerHardware Design Guide # 设置 BIOS 时一些帮助提示 ( 比如 F10 保存退出 ...)
– WfM 2.0 # 连线管理。由 Intel开发的规范,用于提高台式计算机、便携式计算机和服务器的可管理性;WfM 标准包括 DMI、PXE 和 远程唤醒
– ACPI 2.0support # 具有能耗管理功能 ( 比如定时开关机,远程开机 ...)
– USB keyboard/mouse
– bootpossible from: # 可选的启动项
– CD-ROM/DVD(SATA)
– hard disk(SATA, SAS, USB)
– LAN
– consoleredirection support # 远程控制支持
– OEM logo # 厂商信息
– CPU,memory disable # 启用禁用 CPU 内存 某插槽等等
-------
当BIOS程序起来后,把BIOS程序看成一个操作系统,这个系统运行起来后会检测硬件,如果硬件损坏它会报警(相对应的指示灯会变成橙色或者红色),如果损坏程度达到了能开机的极限,则会卡死在某一界面;否则直接将损坏的硬件屏蔽(多路处理器,坏了一颗处理器,照样可以开机,内存同理);这一整个过程为加电自检(POST)。
POST的最后一步是执行INT 0x19指令,这个指令从引导设备第 0 柱面第 0 磁道第一个扇区读取512字节,装入地址0x7c00;其中512字节的主引导程序(bootloader)占446个字节,第二部分是Partitiontable区(分区表),即DPT,占64个字节,硬盘中分区有多少以及每一分区的大小都记在其中。第三部分是magicnumber,占2个字节,固定为0xAA55或0x55AA,如果发现这个扇区结尾为0xAA55或0x55AA ( 魔数 ) ,则 BIOS 会认为这是一个已经有系统的设备,然后交权给这 512 字节的小系统。
--------------------------------------------------------------------------------------------
Boot Loader 阶段(启动程序)
BootLoder(GRUB )中的程序亦可当成一个小系统,这个小系统的作用就是找到内核,让内核加载到内存后运行,最后交权给内核。
--------------------------------------------------------------------------------------------
K ernel 阶段:
kernel有加载到内存后自解压运行的能力,它会会全面扫描所有硬件,并且加载相对应的硬件驱动,挂载根文件系统等
--------------------------------------------------------------------------------------------
us e r_space_ Application 阶段:
当内核启动完成后,内核会在用户空间启动第一个用户空间程序 /sbin/init ( 7 系列为: systemd ),这个程序会设置对应的运行级别,时区,键盘,环境变量 ... 最终是打印出登入界面
##############################################################################
grub 相关介绍
bios 已经固定在主板芯片上,对于设置 BIOS 一般我们不会有过多的干涉,因为硬件出厂时已经设置完毕,而 grub 是启动内核的关键点,熟悉 GRUB 配置也是 LINUX 管理员的必学的知识之一。
GRUB 支持的文件系统:
Support multiple filesystem types
Supportmultiple filesystem types transparently, plus a useful explicit blocklistnotation. The currently supported filesystem types are BSD FFS, DOS FAT16 andFAT32, Minix fs, Linux ext2fs, ReiserFS, JFS, XFS, and VSTa fs.
grub 可以引导多个系统 ( Backward compatibility for booting FreeBSD, NetBSD, OpenBSD, andLinux. Proprietary kernels (such as DOS, Windows NT, and OS/2) are supportedvia a chain-loading function.
)
--------------------------------------------------------------------------------------------
GRUB 启动 三个步骤: Stage1 Stage 1.5 Stage2
GRUB 包含如下几个启动模块:两个必须的场景文件( S tage1 , Stage2 )。非必需的 Stage1.5 ,首先对他们有一个大致的了解。
Stage1
第一阶段的代码存储在 MBR 中。这段代码包含一块指向列表的下一个阶段 GRUB,stage1_5 或 Stage2 , 启不启动 S tage1.5 取决于 Stage2 所在的文件系统。
[root@www ~]# dd if=/dev/sda count=1 of=/tmp/MBR #复制MBR的内容到tmp下
1+0 records in
1+0 records out
512 bytes (512 B)copied, 0.000298384 s, 1.7 MB/s
[root@www ~]# file /tmp/MBR #查看文件类型
/tmp/MBR: x86 bootsector; GRand Unified Bootloader, stage1 version 0x3,
boot drive 0x80, 1st sector stage2 0x849fe,GRUB version 0.94;
partition 1:ID=0x83, active, starthead 32, startsector 2048, 1024000 sectors;
partition 2:ID=0x8e, starthead 221, startsector 1026048, 40916992 sectors, code offset 0x48
[root@www ~]#
[root@www ~]# file /boot/grub/stage1 #此文件内容和mbr中的446字节内容一样
/boot/grub/stage1:x86 boot sector; GRand Unified Bootloader, stage1 version 0x3,
GRUB version 0.94,code offset 0x48Stage 1.5
Stage1 的全部的工作是从本地磁盘把 Stage 2 或者 Stage 1.5 装载进来。由于对 stage1 大小 (446 字节 ) 的限制,代码不可能设计的过于复杂庞大,它只能识别基本的 linux 文件系统 (fdisk -l ID 为 83 的文件系统 ) ,如果是其他的文件系统,折衷的方案就是加载 Stage 1.5 ,否则不用加载 S tage 1.5, 直接加载 S tage2 。 相信你已经明白了什么时候需要加载 Stage 1.5 !!
[root@www ~]# cd/tmp/
[root@www tmp]# cd/boot/grub/
[root@wwwgrub]# ls *stage1_5
e2fs_stage1_5 ffs_stage1_5 jfs_stage1_5 reiserfs_stage1_5 vstafs_stage1_5
fat_stage1_5 iso9660_stage1_5 minix_stage1_5 ufs2_stage1_5 xfs_stage1_5
Stage2
第二阶段代码读取 /boot/grub/grub.conf 来决定如何加载内核选择启动哪个内核 ( grub 可以引导不同的内核 ) ,显示 grub 菜单。 Stage2 的代码存储在文件 /boot/grub/stage2
##############################################################################
grub 的修复
grub损坏有以下几种修复方法:
1. 使用安装系统时原光盘,救援模式
2. 使用已经装有 grub 引导程序的移动设备
3. 将硬盘卸载,挂载到能正常开机的 PC 进行修复
如果以上都方法都不能满足,把硬盘丢了 ...
以下使用第三种方法修复:
--------------------------------------------------------
手动破坏 grub 分区
[root@www tmp]# dd if=/dev/zero of=/dev/sda bs=400 count=1 # 不要超过 446 字节,不然分区也会损坏
1+0 records in
1+0 records out
400 bytes (400 B)copied, 0.000285534 s, 1.4 MB/s
[root@www tmp]# sync
[root@www tmp]# sync
[root@www tmp]# sync
[root@www tmp]#reboot
重启会发现没有找到操作系统
插入光盘
选择救援模式
选择语言 键盘类型 等
是否启动网络功能 选择 NO
继续
可以看到源磁盘临时挂载到了 / mnt/sysimage 目录下
选择 start shell
切换根目录
重新安装grub到MBR扇区中,注意是引导系统的那块硬盘设备,不能随便安装到其它硬盘同步重启
grub修复完成!!
############################################################################################
使用 GRUB 引导系统
GRUB已经损坏,但是源光盘丢失,也可以使用手中移动设备做一个linux,使用做好引导移动设备引导系统(相当于winPE)
修改启动项从移动设备启动 ( 此步骤可以略过, bios 会从第一启动项扫描,直到找到可启动的分区 )
进入 grub 命令行界面:
---------------------------------------------
设置 GRUB 密码
设置密码防止其他人使用单用户模式恶意修改修改root密码,造成不必要的损失
将密码放在grub.conf里不同的地方起到不同的作用, 一种是输入密码以后才可以使用grub菜单的命令行模式,进行编辑, 一种是输入密码后才可以启动系统(相当于设置硬盘密码)
生成密码:
[root@localhost ~]#
grub-md5-crypt
Password:
Retype password:
$1$.Fn1S$Q1dbZ39KfVf7Ot5UIn4vT. # 复制加密的密码
修改配置文件
[root@localhost ~]#
vi /boot/grub/grub.conf
password --md5 $1$.Fn1S$Q1dbZ39KfVf7Ot5UIn4vT. # password --md5 生成的密码添加到配置文件中对应的位置
保存退出重启生效
#####
清空密码
[root@localhost ~]#
vi /boot/grub/grub.conf
保存后下次重启生效
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com