grub的3种安装方式

1. 引言                               
grub是什么?最常态的理 解,grub是一个 bootloader或者是一个bootmanager,通过grub可以引导种类丰富的系统,如linux、freebsd、windows等。但一旦 进入linux操作系统(如无特殊声明,以下提及操作系统或系统皆为linux操作系统),可以敲一个grub命令,就进入”grub>”提示状 态,然后可以进入操作若干命令。这时候的grub是什么?是shell,是一个和bash类似的一个shell。并且提供了两种工作模式,交互 (interactive)模式和非交互(batch)两种模式,grub-install命令正是利用了grub的非交互模式,在系统下直接完成了 grub的安装。 IXPUB技术博客8`8r$~ b t'k u
                               
#^ S n!/ E:X"M P$h q /02. 三种安装方式                               
安 装grub其实有3种方式,最常用的是grub-install,其实还有两种grub>install和grub>setup,其中 grub>install是最底层的方式,grub>setup是更高一层的方式,而grub-install是最高级最简单的方式。接下来 我们从grub>install开始讲,来对3个不同的方式作一下区分: IXPUB技 术博客 i e ?$i h r
                             IXPUB 技术博客%}&g {7B H.t K$|
2.1. grub>install                               
进入grub>提示符之后,输入help install命令,会有如下提示: IXPUB技术博客;J c*|
install: install [--stage2=STAGE2_FILE] [--force-lba] STAGE1 [d] DEVICE STAGE2 [ADDR] [p] [CONFIG_FILE] [REAL_CONFIG_FILE]其中,STAGE1 DEVICE STAGE2是必不可少的,
以下为示例:
%n&N { P"X x0      install (hd0,0)/grub/stage1 (hd0) (hd0,0)/grub/stage2
或者可以如下:
&H#G%Q5|0   root (hd0,0)
7J b7B$D+J c0   install /grub/stage1 (hd0) /grub/stage2
通过这样一种方式可以成功安装grub,但系统reboot之后,不能进入系统,却直接进入grub>.why?因为这种安装方式没有告知grub 去哪里找grub.conf,stage2找不到grub.conf就会进入grub>.,用以下形式安装就ok了。
6a%A { b?K M v0 root (hd0,0) IXPUB技术博客 j)W @ k ] h%P A
install /grub/stage1 (hd0) /grub/stage2 p /grub/grub.conf                               
b0h f){ X x y0    2.2. grub>setup                               
进入 grub>提示符之后,输入help setup命令,会有如下提示: IXPUB技术 博客.r9v M K F
IXPUB技术博客)~1B z J)h+b j | setup: setup [--prefix=DIR] [--stage2=STAGE2_FILE] [--force-lba] INSTALL_DEVICE[IMAGE_DEVICE]
Set up the installation of GRUB automatically. This command uses the more flexible command "install" in the backend and installs IXPUB技术博客 C(c;[ u0^;f I w n3F
GRUB into the device INSTALL_DEVICE. 
以上内容我们可以看出,setup是一个自动化(automatically)的grub安装,它在后台(backend)运行了更灵活多变的 install命令。看示例: IXPUB技术博客 E W+E R4_
grub> root (hd0,0)
Filesystem type is ext2fs, partition type 0x83
grub> setup (hd0)
Checking if "/boot/grub/stage1" exists... no
Checking if "/grub/stage1" exists... yes
Checking if "/grub/stage2" exists... yes
Checking if "/grub/e2fs_stage1_5" exists... yes
Running "embed /grub/e2fs_stage1_5 (hd0)"...  16 sectors are embedded.
succeeded
+Q&M U H l U8r ^ p a0    Running "install /grub/stage1 (hd0) (hd0)1+16 p (hd0,0)/grub/stage2 /grub/grub.conf"... succeeded
o3S J u U9]8L0   Done.        
以上可以看出,setup命令将install命令封装了,使用setup命令比使用install命令简单很多。但实际的过程比install却要复 杂一些,其中尤其重要的一点是:使用setup会植入e2fs_stage1_5到硬盘的第一柱面第16扇区之后(这个没有准确验证过),这会带来和通过 install安装一个很大的区别。
 2.3. grub-install                               
安装grub最 常用的方式是在进入系统之后,通过grub-install脚本进行安装,通过这个脚本安装和前两种方式有何不同呢? IXPUB技术博客:K h6y O U8q R y l ^
  • 脚本其实是通过grub的非交互模式,调 用了setup命令安装grub的。
  • 脚 本的安装源是/usr/share/grub/i386-redhat/下的stage1、2和各种stage1.5,而前两种方式使用的源是/boot /grub/下的相同内容。所以通过grub-instal安装grub,原先在/boot/grub下的stage文件都删除也没关系,该脚本每次执行 都会删除这些文件的。反之,通过前两种方式安装的话,相应的stage文件是不可或缺的,否则会报错,安装失败。
  • 通过grub- install安装grub之后,如果我们删除了/boot/grub/下的stage2文件,系统会无法启动,报如下错:                                  GRUB loading stage 1.5
    4K ]8r$o)q h0   GRUB loading, please wait...
    'Y2o4e4| n0   Error 15                                但是,如果是通过grub>install方式安装的grub,删除/boot/grub/stage2就没有问题,why?因为通过 grub>install安装grub,stage1是直接通过stage2所在的blocklist找stage2,我们删除或者改名 stage2文件,文件的存放位置是不变的,因此能找到。而通过grub-install脚本,或者grub>setup,会智能的找到相应的 stage1.5,例如:/grub/e2fs_stage1_5,然后通过stage1.5认识文件系统,是通过文件名去找stage2的,所以通过这 两种方式安装的grub,不可删除或者改名除/boot/grub/stage2。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值