首页 > 系统 > Linux > 正文

Linux GRUB手动安装方法详情

2024-08-27 23:56:11
字体:
来源:转载
供稿:网友
  需要手工安装 GRUB 主要有两种情况:
 
  Linux 系统原先不是使用 GRUB 作为引导程序而现在想要使用 GRUB 来作为引导程序;
 
  MBR 中的引导程序被覆盖,需要在 MBR 中重新安装 GRUB,如先安装了 Linux 系统,后安装了 Windows 系统。
 
  下面,我们分别介绍这两种情况如何手工安装 GRUB 引导程序。
 
  系统中没有GRUB,需要手工安装
 
  我们先来讲第一种情况,就是 Linux 系统中没有安装 GRUB,我们需要重新安装 GRUB;或者打算把不是启动分区的某个分区变成启动分区。比如我的系统中新建了一个分区 /dev/sdb1,并挂载到了 /tdisk/ 目录上,我们查看一下新建立的分区,命令如下:
 
  [root@localhost ~]# df
 
  文件系统 1K-块 已用 可用 已用% 挂载点
 
  /dev/sda3 19923216 1787736 17123412 10% /
 
  tmpfs 312672 0 312672 0% /dev/shm
 
  /dev/sda1 198337 26359 161738 15% /boot
 
  /dev/sdb1 2071384 68632 1897528 4% /tdisk
 
  这个分区是我手工建立的,当然不是系统的默认启动分区(系统默认启动分区是 /boot 分区)。我们用这个分区模拟一个不是采用 GRUB 作为默认引导程序的 Linux 硬盘,在这个分区中手工安装 GRUB 引导程序。也就是说,这个实验成功后,/boot 分区可以启动系统,/tdisk 分区也可以启动系统。
 
  具体安装步骤如下:
 
  1) 使用 grul-install 命令在要启动的分区中安装 GRUB 相关文件
 
  在 /boot 分区中有一个 /boot/grub/ 目录,这个目录中保存的就是 GRUB 的相关文件(如文件系统的 Stage 1.5 文件)。我们查看一下 /boot 分区中的这个目录,如下:
 
  [root@localhost ~]#ls /boot/grub/
 
  device.map ffs_stage1_5 jfs_stage1_5 reiserfs_stage1_5 stage2
 
  xfs_stage1_5 e2fs_stage1_5 grub.conf menu.lst splash.xpm.gz
 
  ufs2_stage1_5 fat_stage1_5 iso9660_stage1_5 minix_stage1_5 stage1
 
  vstafs_stage1_5
 
  但是在 /tdisk 目录中并不存在这些文件,所以第一步就是要在 /tdisk 目录中安装这些 GRUB 相关文件,具体采用 grub-install 命令。这个命令的格式如下:
 
  [root@localhost ~]# grub-install [选项] 设备文件名
 
  选项:
 
  -root-directory=DIR:DIR 为实际目录,也就是手工指定 GRUB 相关文件的安装目录;
 
  【例 1】命令标准格式。
 
  [root@localhost ~]# gmb-install /dev/sda
 
  #因为默认 GRUB 就是安装到 /dev/sda 中的,所以不需要指定 --root-directory 选项
 
  我们需要把 GRUB 安装到 /tdisk 分区,所以需要执行以下命令:
 
  [root@localhost ~]# grub-install --root-directory=/tdisk/dev/sdb1
 
  #把GRUB安装至/tdisk分区
 
  Probing devices to guess BIOS drives. This may take a long time.
 
  Installation finished. No error reported.
 
  This is the contents of the device map/tdisk/boot/ grub/device.map.
 
  Check if this is correct or not. If any of the lines is incorrect,
 
  GRUB 的相关文件已经安装到 /tdisk/boot/grub/ 目录中。当然,这些文件还是需要 GRUB 的配置文件来读取的。大家注意到了吗? /tdisk/boot/grub/ 目录中没有 grub.conf 或 menu.lst 配置文件,这些配置文件还是需要依赖 /boot/grub/ 目录的。
 
  注意,如果系统中没有 grul-install 命令,则说明没有 GRUB 软件,这时可以源码包安装,也可以 RPM 包安装。RPM 包的安装命令如下:
 
  [root@localhost ~]# rpm -ivh /mnt/cdrom/Packages/ grub-0.97-77.el6.i686.rpm
 
  2) 修改GRUB的配置文件
 
  在我们的实验中,GRUB 是已经安装好的,所以可以直接修改 /boot/grub/gmb.conf 配置文件。但如果是没有安装过 GRUB 的 Linux 系统手工安装 GURB,就需要自己建立 GRUB 配置文件了。那么我们修改 /boot/grub/grub.conf 配置文件如下:
 
  [root@localhost ~]# vi /boot/gmb/grub.conf
 
  default=0
 
  timeout=5
 
  splashimage=(hd0,0)/grub/splash.xpm.gz
 
  hiddenmenu
 
  Done
 
  #在/tdisk分区的启动扇区中安装GRUB吧。虽然有两个failed,但这只是两个文件系统的Stage 1.5文件没有安装,并不影响
 
  grub> quit
 
  #退出GRUB交互界面
 
  这时 GRUB 安装完成了,可以重新启动试验一下了。重启后可以看到图 1 所示的界面。
 
  当然 /tdisk 分区中并没有真正的内核,所以最终还是要靠 /boot 分区启动。如果是多内核并存的,就可以真正启动了。
 
  总结一下,在 Linux 系统中安装 GRUB,或者在新分区中安装 GRUB 的步骤如下:
 
  需要在 Linux 系统的指定分区中安装 GRUB 的相关文件。这是通过 grub-stall 命令实现的。
 
  需要按照要求修改 GRUB 的配置文件,也就是 /boot/gmb/grub.conf。
 
  需要在分区的启动扇区中安装 GRUB,这是通过 grub 命令的交互模式实现的。
 
  MBR中的GRUB被覆盖,需要重新安装GRUB
 
  这种情况最常见的就是先安装了 Linux 系统,后安装了 Windows 系统,导致 MBR 中的 GRUB 被覆盖。而 Windows 系统的启动引导程序又不能识别 Linux 系统,从而导致 Linux 系统不能正常启动。
 
  这种情况解决起来比第一种要简单得多,因为不需要安装 GRUB 的相关文件和修改 GRUB 的配置文件,也就是第一种情况的第一步和第二步不需要执行,因为这是已经安装和修改好的。只需要执行第三步,覆盖 MBR 中的启动引导程序即可。
 
  但是这里的问题是,应该在什么地方启动 GRUB 的交互模式呢?第一种情况是,我们是在 Linux 的命令行中执行 grub 命令,来启动 GRUB 交互模式。第二种情况是已经不能正常启动 Linux 系统了,当然也就没有 Linux 的命令行了。在这种情况下,我们需要先利用 Linux 的光盘修复模式,使用光盘来启动 Linux,进入 Linux 的命令行,再指定 grub 命令。Linux 的光盘修复模式将在后续章节中介绍。
 
  我们先假设已经进入了光盘修复模式中的 Linux 命令行,那么只需执行如下命令即可:
 
  sh-4.1#grub
 
  #启动GRUB交互界面。注意到了吗?提示符不一样了,那是因为系统是从光盘启动的,所以环境变量没有生效
 
  gmb>root (hd0.0)
 
  #同样需要设置GRUB的主目录
 
  grub>setup (hd0)
 
  #直接把GRUB安装到MBR中,所以不需要指定分区
 
  grub>quit
 
  #退出
 
  重启系统之后,就可以发现熟悉的 GRUB 界面又回来了。这种安装 GRUB 的方式要比第一种情况简单,因为这并不是全装,仅仅是覆盖安装而已。
 

(编辑:武林网)

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表