在自制Linux盘上安装GRUB

原创 2007年09月28日 13:07:00
     本人在一块硬盘上攒出一个Linux系统盘,但没有引导程序,因此该硬盘不能独立启动。为此希望将GRUB安装到自制Linux系统的硬盘上。本人参照文[1]安装GRUB,由于安装环境和作者的不同,在安装过程中出现了些问题。后来反复阅读和查找资料,终于正确安装GRUB,并在自制Linux盘中独立启动了Linux系统。现在将制作过程记录如下:

第1步:先确定硬盘标识。

用命令fdisk查看当前的所以硬盘情况。

[root@localhost root]# fdisk -l

Disk /dev/hda: 255 heads, 63 sectors, 1305 cylinders
Units = cylinders of 16065 * 512 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/hda1   *         1      1273  10225341   83  Linux
/dev/hda2          1274      1305    257040   82  Linux swap

Disk /dev/hdb: 16 heads, 63 sectors, 8322 cylinders
Units = cylinders of 1008 * 512 bytes

   Device Boot    Start       End    Blocks   Id  System
/dev/hdb1   *         1      8322   4194256+  83  Linux

[root@localhost root]#

从上诉显示中,确定我们需要安装GRUB的硬盘标识为/dev/hdb。

第2步:安装GRUB的配置。

本人参照文[1],在系统提示符下键入grub-install命令。
[root@localhost root]# grub-install /dev/hdb
/dev/hdb does not have any corresponding BIOS drive.
[root@localhost root]#
系统提示错误。

通过阅读其它资料,发现需要指定grub安装的根目录。若未指定根目录,则系统默认安装在系统的根目录下,即目录"/"下,则grub将被安装在目录/boot/grub中。但目录/boot/grub是在设备/dev/hda上,而不是我们指定的设备/dev/hdb。所以就产生了上述错误提示。

为了能正确安装GRUB的配置,则需要将/dev/hdb挂接到系统的目录中,使系统可以读写该设备,同时通过grub-install的参数指定根目录。具体操作如下:
[root@localhost root]# mkdir /mnt/boot
[root@localhost root]# mount /dev/hdb1 /mnt/boot
[root@localhost root]# grub-install --root-directory=/mnt /dev/hdb
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 /mnt/boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install'.

(fd0)   /dev/fd0
(hd0)   /dev/hda
(hd1)   /dev/hdb

[root@localhost root]#

grub-install命令是将grub的配置安装在指定根目录的/boot/grub子目录中。因为本人制作的Linux系统盘为/boot分区,所以将设备/dev/hdb1挂接到目录/mnt/boot上,而在grub-install中指定根目录为目录/mnt。

第3步:设定GRUB的/boot分区并写入MBR

用gurb命令设定GRUB的/boot分区并写入MBR。

[root@localhost root]# grub

    GRUB  version 0.92  (640K lower / 3072K upper memory)

 [ Minimal BASH-like line editing is supported.  For the first word, TAB
   lists possible command completions.  Anywhere else TAB lists the possible
   completions of a device/filename. ]

grub> root (hd1,0)
 Filesystem type is ext2fs, partition type 0x83

grub> setup (hd1)
 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 (hd1)"...  22 sectors are embedded.
succeeded
 Running "install /grub/stage1 (hd1) (hd1)1+22 p (hd1,0)/grub/stage2 /grub/grub
.conf"... succeeded
Done.

grub> quit

[root@localhost root]#

第4步:配置GRUB

现在剩下最后一步,编辑GRUB配置文件。

[root@localhost root]# vi /mnt/boot/grub/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You do not have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /, eg.
#          root (hd0,0)
#          kernel /boot/vmlinuz-version ro root=/dev/hda1
#          initrd /boot/initrd-version.img
#boot=/dev/hda
default=0
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title linux
        root (hd0,0)
        kernel /vmlinuz ro root=/dev/ram0
        initrd /initrd.img

[root@localhost root]#

按上述配置编辑文件grub.conf,并保存。

注意:GRUB 0.92默认的配置文件名是grub.conf,而GRUB 0.97默认的配置文件名是menu.lst。
若使用的GRUB的版本为0.97,还需要执行以下命令:
[root@localhost root]# ln -fs grub.conf /mnt/boot/grub/menu.lst

按以上4步即完成了GRUB的安装。用自制Linux盘启动,出现了"login:"的提示。大功告成:))

参考文献:
[1] "系统引导管理器GRUB,为初学者指南", http://www.linuxsir.org/main/?q=node/129

U盘安装RHEL6.4引导安装在U盘上

今天用U盘安装HREL6.4,用U盘引导,网络安装,结果不料,一不小心吧引导却安装到了U盘上。 第一步,用U盘引导,重新安装grub [root@C6 ~]# grub-install --r...
  • caiwenguang1992
  • caiwenguang1992
  • 2014年03月17日 17:03
  • 1088

Linux下安装GRUB

链接:http://phoenix007.iteye.com/blog/259311 (一)安装linux时安装grub.   安装redhat linux时会提示安装引导程序,如果选择gru...
  • chuncaijiayou
  • chuncaijiayou
  • 2014年01月07日 14:47
  • 6009

linux系统grub的重新安装

本文适用于一下三种情况 1.用tar恢复备份后grub出现问题,无法启动,这个在分区更改过后比较常见 2.启动linux时出现 minimal bash-like line editing is ...
  • XianBT
  • XianBT
  • 2014年02月02日 17:53
  • 2069

U盘安装Linux启动失败问题(grub)

使用U盘安装Linux系统时,当安装所有的包后,点击reboot重启(重启后还需要对系统进行时间,其他用户等等的设定),发现启动时进入了grub> 界面。原来是使用U盘进行Linux安装时,默认启动位...
  • xuzhouweihao
  • xuzhouweihao
  • 2014年11月12日 19:55
  • 2879

RedHat Server 7 单独安装图形系统 X11

转自: http://blog.itpub.net/27771627/viewspace-1223155/ RHEL7 默认是最小化安装(Minimal Install),没有图形界面, ...
  • robinjwong
  • robinjwong
  • 2015年11月27日 17:51
  • 4324

计算机启动流程:BIOS和Grub

当我们按下电源键启动计算机的过错
  • trylive
  • trylive
  • 2014年06月23日 18:58
  • 1160

Linux下安装GRUB

链接:http://phoenix007.iteye.com/blog/259311 (一)安装linux时安装grub.   安装redhat linux时会提示安装引导程序,如果选择gru...
  • chuncaijiayou
  • chuncaijiayou
  • 2014年01月07日 14:47
  • 6009

U盘安装Linux启动失败问题(grub)

使用U盘安装Linux系统时,当安装所有的包后,点击reboot重启(重启后还需要对系统进行时间,其他用户等等的设定),发现启动时进入了grub> 界面。原来是使用U盘进行Linux安装时,默认启动位...
  • xuzhouweihao
  • xuzhouweihao
  • 2014年11月12日 19:55
  • 2879

引导加载程序之争: LILO 和 GRUB

在不考虑他们的工作或专业情况下,所有 Linux 用户都会使用的是哪个工具?引导加载程序。通过本文了解引导加载程序的工作原理,认识两个流行的引导加载程序 LILO(LInux LOader)和 GNU...
  • mao0514
  • mao0514
  • 2015年11月21日 09:30
  • 2030

Linux之grub的运行机制及grub修复

理论区: GNU GRUB(GRand Unified Bootloader简称“GRUB”)是一个来自GNU项目的多操作系统启动程序。GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥...
  • lovemysea
  • lovemysea
  • 2017年02月12日 14:13
  • 807
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在自制Linux盘上安装GRUB
举报原因:
原因补充:

(最多只允许输入30个字)