grub中手动启动linux,Linux基础--系统启动中grub功能

本文主要讲解grub原理和系统启动过程中grub的作用过程.

grub是多数Linux发行版中使用的boot loader系统引导程序, 其主要作用是计算机从boot sequence中选取指定设备之后, 由grub找到系统内核kernel文件并加载内核文件的作用.

grub执行过程

grub作用过程中主要分为三个阶段的作用, 如下图所示:

dbf938a78ca61e6561322cf14b02aac5.png

stage1: 启动grub程序, 位于MBR的前446Byte中;

stage1.5: 识别内核所在分区的文件系统类型, 位于内核文件所在分区的boot sector中;

stage2: 根据grub的配置文件grub.conf中的启动菜单, 读取菜单中指定的内核vmlinuz文件及读取参数和initramfs文件, 位于内核vmlinuz文件所在的boot目录中.

其中内核文件命名方式为: vmlinuz-$(uname -r);

initrd文件命名方式为: initrd-$(uname -r).img(RHEL5)或initramfs-$(uname -r).img(RHEL6)

grub配置文件grub.conf的字段说明default=0    指定默认启动的title菜单

timeout=5    指定等待时间

password --md5 $1$FRa2P$uZGEloRiLOH8sBMqhz5zP/    指定通过命令行管理grub配置文件的密码

splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz    指定grub背景图片路径

hiddenmenu    指定隐藏菜单选项

title CentOS 6 (2.6.32-504.el6.x86_64)    title字段指定菜单名称

root (hd0,0)    root字段指定内核文件vmlinuz所在分区作为"grub根目录"

kernel /vmlinuz-2.6.32-504.el6.x86_64 ro root=/dev/mapper/vg0-root

kernel字段指定内核文件vmlinuz在"grub根目录"的绝对路径, 并指定以只读方式加载真正根文件系统的设备文件路径

initrd /initramfs-2.6.32-504.el6.x86_64.img    initrd字段指定initramfs文件在"grub根目录"的绝对路径

password --md5 $1$FRa2P$uZGEloRiLOH8sBMqhz5zP/    指定启用系统时的密码

注:

1 对grub而言,所有类型硬盘一律hd,格式为(hd#,N) : #表示第几个磁盘 , 最后的N表示对应磁盘的分区;可以通过查看 /boot/grub/device.map 来查看 grub 识别的对应磁盘编号

2 根据boot目录是否单独分区, "grub的根目录"会发生改变, kernel文件和initrd文件以"grub根目录"参考点的绝对路径也会改变:

boot目录单独分区/dev/sda1, /根目录为/dev/sda2 ==> "grub根目录"为/dev/sda1 ==> kernel文件以"grub根目录"参考点的绝对路径为/vmlinz-$(uname -r), initrd文件同理;

boot目录没有单独分区, 而是作为/根目录的一个子目录且/根目录为/dev/sda1 ==> "grub根目录"为/dev/sda1 ==> kernel文件以"grub根目录"参考点的绝对路径为/boot/vmlinz-$(uname -r), initrd文件同理.

grub主要作用

1 用户忘记登录密码

方法: 系统启动进入grub菜单画面后, 按e键进入菜单编辑模式, 选择第二行kernel菜单项后按e键对其进行编辑, 在其后加上1或s或S后, Esc退出后, 再按b键就会以单用户模式启动内核, 直接可以修改用户密码.

密码修改完成后可以通过init命令切换至原级别就可以正常使用.

aee5010dd4eeb78744bae1acaf6d9bbf.png

2. grub.conf配置文件丢失或损坏

方法: 系统默认会进入grub的命令行模式 grub>

71db555bc3e87194e46f3fa25f9badac.png

先通过 find (hd#,0)/+TAB键, 可以通过 find 和 Tab将命令查找到vmlinuz文件所在磁盘分区grub> root (hd#,0)通过 root 指定 vmlinuz 所在磁盘分区

grub> kernel /vmlinuz-2.6.18-208.e15 ro root=/dev/mapper/vg0-root 通过 kernel 指定 kernel 文件, 并以只读方式挂载根文件系统

grub> initrd /initrd-2.6.18-208.e15.img通过 initrd 指定 initramfs 文件

grub> boot启动

正常开机启动后添加 GRUB 的配置文件

3. grub程序损坏

方法: grub损坏后无法通过grub引导系统内核, 系统提示为boot

ec3952da9545e767e96b059f54102c01.png

在光驱中插入系统镜像光盘, 并设定启动顺序为光盘启动,

通过光盘启动后选择通过救援模式修复系统

764495987fbeaa06c38a3b7845868071.png

在救援模式种类中选择光盘

ccabd7d28a5d5b0a47b550941e9f925c.png

选择救援模式后系统会提示尽力恢复原系统, 并将原系统挂载之/mnt/sysp_w_picpath目录中

ff3bdf56175346cd8bddd91f1650e966.png

查找到原系统后会提示执行根切换 chroot /mnt/sysp_w_picpath, 来将根切换至原有系统根目录下

b9107daef2513579ebc8fa10dfaf848a.png

进入救援模式的shell环境中, 将根切换至原有系统根目录下, 使用grub-install命令来对原有系统的对应磁盘的MBR中安装grub程序.ee29d67b7b216cb9480fedf4c9f71acc.png

安装完成后, 退出原有根系统后, 在救援模式环境下重启系统即可还原为原系统,

如果此时配置文件没有损坏, 不需要修改配置文件; 如果配置文件损坏, 会在开机后进入grub命令行接口, 再手动指定grub.conf配置文件中的内容即可正常启动

# 重启系统后要将启动设备的光盘启动取消

本人水平有限, 如有理解不当的地方, 请大家给予指正, 非常感谢!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值