Linux-grub

grub 功能和组成

bootloader: 引导加载器,引导程序

  • Windows: ntloader,仅是启动OS
  • Linux:功能丰富,提供菜单,允许用户选择要启动系统或不同的内核版本;把用户选定的内核装载到内存中的特定空间中,解压、展开,并把系统控制权移交给内核

Linux的bootloader

  • LILO:LInux LOader,早期的bootloader,功能单一
  • GRUB: GRand Unified Bootloader, CentOS 5,6 GRUB 0.97: GRUB Legacy, CentOS 7 以后使用GRUB2.02

GRUB 启动阶段

    primary boot loader :
1st stage:MBR的前446个字节

  1.5 stage:MBR 之后的扇区,让stage1中的bootloader能识别stage2所在的分区上的文件系统

  • secondary boot loader :2nd stage,分区文件/boot/grub/

Centos6 grub安装

grub损坏,Linux就不能正常启动

需进入救援模式重新安装grub

安装grub的两种方法:

1、grub-install 安装grub stage1和stage1_5到/dev/DISK磁盘上,并复制GRUB相关文件到 DIR/boot 目录下

grub-install --root-directory=DIR /dev/DISK

1方法,救援模式下,进入光盘启动

 

 执行以下命令,可修复grub,不包括grub.conf配置文件,此文件损坏,只能手动编写

# chroot /mnt/sysimage
# grub-install /dev/sda
# sync
# exit
# exit

2、

grub的命令行接口

help: 获取帮助列表
help KEYWORD: 详细帮助信息
find (hd#,#)/PATH/TO/SOMEFILE:
root (hd#,#)
kernel /PATH/TO/KERNEL_FILE: 设定本次启动的内核文件;额外还可添加许多内核支持使用的
cmdline参数
 例如:max_loop=100 selinux=0 init=/path/to/init
initrd /PATH/TO/INITRAMFS_FILE: 设定为选定的内核提供额外文件的ramdisk
boot: 引导启动选定的内核

grub legacy识别硬盘设备

(hd#,#)
hd#: 磁盘编号,用数字表示;从0开始编号
#: 分区编号,用数字表示; 从0开始编号
示例:
(hd0,0) 第一块硬盘,第一个分区

手动在grub命令行接口启动系统

grub> root (hd#,#)
grub> kernel /vmlinuz-VERSION-RELEASE ro root=/dev/DEVICE
grub> initrd /initramfs-VERSION-RELEASE.img
grub> boot

grub legacy配置文件:/boot/grub/grub.conf

手动编写,参照红色标记

default=#: #设定默认启动的菜单项;落单项(title)编号从0开始
timeout
=#: #指定菜单项等待选项选择的时长
splashimage
=(hd#,#)/PATH/XPM_FILE:#菜单背景图片文件路径
password [
--md5| --encrypt] STRING: #启动菜单编辑认证
hiddenmenu:#隐藏菜单
title TITLE:#定义菜单项“标题”, 可出现多次
root (hd#,#):#查找stage2及kernel文件所在设备分区;为grub的根
kernel
/PATH/TO/VMLINUZ_FILE ro root=/dev/divce:#启动的内核
initrd
/PATH/TO/INITRAMFS_FILE: #内核匹配的ramfs文件
password [
--md5|--encrypted ] STRING: #启动选定的内核或操作系统时进行认证

grub加密生成grub口令

grub-md5-crypt
grub-crypt

破解root口令:

编辑grub菜单(选定要编辑的title,而后使用a 或 e 命令)
在选定的kernel后附加1, s, S,single 都可以进入单用户模式
在kernel所在行,键入“b”命令

 

posted @ 2022-07-16 20:52  goodbay说拜拜  阅读(156)  评论(0编辑  收藏  举报