设为首页 收藏本站
查看: 1587|回复: 0

[经验分享] centos 6.7 GRUB配置

[复制链接]

尚未签到

发表于 2018-4-28 11:07:20 | 显示全部楼层 |阅读模式
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)中的程序亦可当成一个小系统,这个小系统的作用就是找到内核,让内核加载到内存后运行,最后交权给内核。
--------------------------------------------------------------------------------------------
Kernel阶段:
kernel有加载到内存后自解压运行的能力,它会会全面扫描所有硬件,并且加载相对应的硬件驱动,挂载根文件系统等
--------------------------------------------------------------------------------------------
user_space_ Application阶段:
当内核启动完成后,内核会在用户空间启动第一个用户空间程序/sbin/init7系列为: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 Stage1.5 Stage2
GRUB 包含如下几个启动模块:两个必须的场景文件(Stage1Stage2)。非必需的Stage1.5,首先对他们有一个大致的了解。
Stage1
第一阶段的代码存储在MBR中。这段代码包含一块指向列表的下一个阶段GRUB,stage1_5Stage2,启不启动Stage1.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 0x48Stage1.5
Stage1的全部的工作是从本地磁盘把Stage 2或者Stage 1.5装载进来。由于对 stage1大小(446字节)的限制,代码不可能设计的过于复杂庞大,它只能识别基本的linux文件系统(fdisk -l ID 83的文件系统),如果是其他的文件系统,折衷的方案就是加载Stage1.5,否则不用加载Stage1.5,直接加载Stage2     相信你已经明白了什么时候需要加载Stage1.5!!
DSC0000.jpg

[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
DSC0001.jpg


DSC0002.jpg


DSC0003.jpg


##############################################################################
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
重启会发现没有找到操作系统
DSC0004.jpg


插入光盘
选择救援模式
DSC0005.jpg


选择语言键盘类型
DSC0006.jpg
  

是否启动网络功能  选择NO
  

DSC0007.jpg
继续
DSC0008.jpg
  

可以看到源磁盘临时挂载到了 /mnt/sysimage 目录下
DSC0009.jpg


DSC00010.jpg


选择start shell
DSC00011.jpg


DSC00012.jpg


切换根目录
  

  

DSC00013.jpg

  

  

  


重新安装grub到MBR扇区中,注意是引导系统的那块硬盘设备,不能随便安装到其它硬盘同步重启
DSC00014.jpg


grub修复完成!!


############################################################################################
使用GRUB引导系统

GRUB已经损坏,但是源光盘丢失,也可以使用手中移动设备做一个linux,使用做好引导移动设备引导系统(相当于winPE)

修改启动项从移动设备启动(此步骤可以略过,bios会从第一启动项扫描,直到找到可启动的分区)


进入grub命令行界面:
DSC00015.jpg


DSC00016.jpg


DSC00017.jpg


---------------------------------------------
设置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 生成的密码添加到配置文件中对应的位置

DSC00018.jpg

保存退出重启生效






DSC00019.jpg
DSC00020.jpg

#####
清空密码
[root@localhost ~]#
vi /boot/grub/grub.conf

DSC00021.jpg

保存后下次重启生效
  

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-453086-1-1.html 上篇帖子: VirtualBox centos下设置共享文件夹 下篇帖子: @yuanbor:CentOS 6.4内核源代码下载安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表