admin管理员组

文章数量:1543652

linux发行版本

1.RedHat * 官方主页:http://www.redhat/ * http://www.redhat2.Debain * 官方主页:http://www.debian/ 3.国内的版本

  • 官方主页:http://www.linuxfans/
  • 官方主页:http://www.linuxforum/
  • 官方主页:http://www.linuxeden/forum/
  • 官方主页:http://www.newsmth /

GRUB

GNU GRUB(GRand Unified Bootloader简称“GRUB”)是一个来自GNU项目的多操作系统启动程序。GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。

与GRUB类似的工具

Windows也有类似的工具NTLOADER;比如我们在机器中安装了Windows 98后,我们再安装一个Windows XP ,在机器启动的会有一个菜单让我们选择进入是进入Windows 98 还是进入Windows XP。NTLOADER就是一个多系统启动引导管理器,NTLOADER 同样也能引导Linux,只是极为麻烦罢了;在Powerpc 架构的机器中,如果安装了Linux的Powerpc 版本,大多是用yaboot 多重引导管理器,比如Apple机目前用的是IBM Powerpc处理器,所以在如果想在Apple机上,安装Macos 和Linux Powerpc 版本,大多是用yaboot来引导多个操作系统

 

GRUB 的Linux版本目前在各大发行版中都有打包;比如Fedora/Redhat/Centos/Mandrive/Mandriva/SuSE等以RPM包管理机制的系统,可以通过如下的命令来安装;* [root@localhost ~]# rpm -ivh grub*.rpm

如果是Slackware 您可以用如下的办法来安装;

  • [root@localhost ~]# installpkg grub*.tgz

其它的发行版本请用其自己特色的软件包管理工具来安装;

当然您也可以通过源码包,在任何Linux的发行版上安装;至于源码包的安装方法; 请参考:《如何编译安装源码包软件》

  • [root@localhost ~]#tar zxvf grub*.tar.gz
  • [root@localhost ~]#cd grub-xxx
  • [root@localhost ~]#./configure;make;make install

确认您是否成功安装了GRUB,您可以测试是否有如下两个命令;

  • [root@localhost ~]# grub
  • [root@localhost ~]# grub-install

如果您不能找到这两个命令,可能您的可执行程序的路径没有设置;

请参考:《设置可执行程序路径》,当然您可以用绝对路径;比如下面的; * [root@localhost ~]# /usr/sbin/grub * [root@localhost ~]# /usr/sbin/grub-install

如果您还是找不到GRUB软件包安装在哪了;您可以用下面的命令来解决和查找;

  • [root@localhost ~]# updatedb
  • 注:这个要花很长时间;是索引slocate 的库,然后再通过locate来查找;
  • [root@localhost ~]# locate grub

比如找到的是有类似如下的;

  • [root@localhost ~]# locate grub /sbin/grub-md5-crypt /sbin/grub /sbin/grub-install /sbin/grub-terminfo

在一般情况下,在路径中带有bin或sbin中字样的,这些路径下都是可执行程序;sbin 是超级权限用户才能使用的管理命令;要使用这些命令一般的情况下得切换到root用户下才能使用;比如

  • [beinan@localhost ~]$ su - 注:切换到root用户,并且切换到其家目录; Password:
  • [root@localhost ~]#/sbin/grub 注:用绝对路径来运行grub命令;grub-install 命令有何用呢?其实就是把我们前面已经安装的软件包中的一些文件复制到 /boot/grub中;对于新安装GRUB软件包后,也是一个必经的过程;我们前面所说的GRUB软件包的安装;而现在我们说的是GRUB配置的过程中的安装;虽然在洋文中都是install ,但表达的意思是不一样的;

我们首先要运行 fdisk -l 来确认到底是硬盘的标识;

这个过程主要是确认硬盘的标识是哪个调备,到底是/dev/hda还是/dev/hdb 还是其它的;

  • [root@localhost ~]# fdisk -l

``` Disk /dev/hda: 80.0 GB, 80026361856 bytes 255 heads, 63 sectors/track, 9729 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System /dev/hda1 * 1 970 7791493+ 7 HPFS/NTFS /dev/hda2 971 9729 70356667+ 5 Extended /dev/hda5 971 2915 15623181 b W95 FAT32 /dev/hda6 2916 4131 9767488+ 83 Linux /dev/hda7 4132 5590 11719386 83 Linux /dev/hda8 5591 6806 9767488+ 83 Linux /dev/hda9 6807 9657 22900626 83 Linux /dev/hda10 9658 9729 578308+ 82 Linux swap / Solaris ```

如果通过fdisk -l 出现有/dev/hda字样的,我们就要用下面的命令来安装;

  • [root@localhost ~]# grub-install /dev/hda ``` Installation finished. No error reported. This is the contents of the device map /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 ```

如果是您fdisk -l 出现的有/dev/hdb呢,那就如下运行;

``` 如果是您fdisk -l 出现的有/dev/hdb呢,那就如下运行;

[root@localhost ~]# grub-install /dev/hdb ```

如果既有/dev/hda和/dev/hdb 就安装到/dev/hda中;

  • [root@localhost ~]# grub-install /dev/hda

值得注意的是如果您有一个/boot分区,应该用如下的办法来安装;

  • [root@localhost ~]#grub-install --root-directory=/boot /dev/hda

  • [root@localhost ~]#grub-install --root-directory=/boot /dev/hdb

在Linux中,GRUB软件包的安装,及在配置过程中安装grub到 /boot中还是不够的, 还要把GRUB,写入MBR才行;有时我们重新安装了Windows,Windows会把MBR 重写,这样GRUB就消失了;如果您出现这样的情况,就要进行这个过程;

  • [root@localhost ~]# grub

会出现grub>提示符,这是grub命令行模式 ,如果能在开机中出现提示符,没有引导不起来的系统,除非您的系统破坏的极为严重。如果仅仅是GRUB被破坏了,GRUB命令行是能让操作系统引导起来的;

接着看例子,我们要找到 /boot/grub/stage1的,在grub>后面输入;大白菜官网

  • grub> find /boot/grub/stage1 (hd0,6) (fd0)

注:这个是软驱;现在很少用软驱了,如果您有这方面的需要,自己看GRUB的DOC吧;

注解:

(hd0,6) 这是/boot所在的分区;不要误解为是Linux 的/所在的分区,这是值得注意的; (fd0) 注:这个是软驱;现在很少用软驱了,如果您有这方面的需要,自己看GRUB的DOC吧;

  • grub>root (hd0,6) 注:这是/boot所在的分区;
  • grub>setup (hd0) 注:把GRUB写到MBR上;

GRUB的配置文件的menu.lst的写法;

menu.lst 位于/boot/grub目录中,也就是/boot/grub/menu.lst 文件;您可以用vi或您喜欢的编辑器来编辑他;如果您不会用vi,还是去学习一下吧;简单的用法怎么也得会,对不对?毕竟这个文档不是讲vi的用法的

有的弟兄会说,我没有menu.lst怎么办?那就创建一个;用下面的命令;

  • [root@localhost ~]# touch /boot/grub/menu.lst

然后我们再做一个/boot/grub/menu.lst 的链接 /boot/grub/grub.conf

  • [root@localhost ~]# cd /boot/grub
  • [root@localhost ~]# ln -s menu.lst grub.conf ``` 1、menu.lst的写法之一; 首先我们看一下我的Fedora 4.0 中的/boot/grub/menu.lst 的内容;

default=0 timeout=5

splashimage=(hd0,6)/boot/grub/splash.xpm.gz

hiddenmenu title Fedora Core (2.6.11-1.1369FC4) root (hd0,6) kernel /boot/vmlinuz-2.6.11-1.1369FC4 ro root=LABEL=/ initrd /boot/initrd-2.6.11-1.1369_FC4.img title WinXp rootnoverify (hd0,0) chainloader +1 注解: default=0

default=0 是默认启动哪个系统,从0开始;每个操作系统的启动的定义都从title开始的,第一个title 在GRUB的启动菜单上显示为0,第二个启动为1,以此类推;

timeout=5

注:表示在开机后,GRUB画面出现几秒后开始以默认启动;如果在启动时,移动上下键,则解除这一规则;

splashimage=(hd0,6)/boot/grub/splash.xpm.gz 注:GRUB的背景画面,这个是可选项;我不喜欢GRUB的背景画面,所以加#号注掉,也可以删除;

hiddenmenu

注解:隐藏GRUB的启动菜单,这项也是可选的,也可以用#号注掉; 一般的情况下对Linux操作系统的启动,一般要包括四行;title 行;root行;kernel 行;initrd 行;

1)在menu.lst中 ,通过 root (hd[0-n],y)来指定/boot 所在的分区; title XXXXX 注:title 后面加一个空格,title 是小写的,后面可以自己定义&#

本文标签: 浅谈系统