`
mylxiaoyi
  • 浏览: 327656 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Grub系统的启动及启动文件的配置

阅读更多
Grub可以以一定的方式引导多种内核,但是对于一些自由操作系统我们需要使用特殊的方法.如何启动操作系统:
Grub有两种不同的启动方法.一种就是直接启动操作系统,另一种方法就是将启动引导权将给另一个启动引导程序,由他来引导操作系统.一般而言,前者是更令人满意,因为我们不需安装和维护另一个启动引导程序.Grub是足够的灵活可以从单一的磁盘或是分区装入操作系统.然而后一种方法也是需要的,因为Grub并不会支持现在存在的所有的操作系统.
如何由Grub直接引导:
多种启动是Grub所支持的启动格式.为了方便,Grub还会支持Linux,FreeBSD,NetBSD,OpenBSD的启动.如果我们要启动其他的操作系统,我们就不得不使用chain-load来启动了.
一般情况下,Grub的启动步骤如下:
1 用root命令设置Grub的启动设备为存放系统启动镜像的驱动器.
2 用kernel命令装入内核镜像.
3 如果我们还需要模块,用module命令或是modulenounzip命令装入所需要的模块.
4 运行boot命令.
Linux,FreeBSD,NetBSD,OpenBSD可以用类似的简单方法进行启动.我们用命令kernel命令装入内核,然后运行命令boot.如果内核需要一些参数,只要在内核的文件名后加上所需要的参数就可以了.
如果我们要启动Grub不支持的操作系统,我们要用chain-load来启动.一般情况下,启动引导程序存入在系统安装分区的启动扇区.这样的系统的启动如下:
1 用rootnoverify命令设置Grub的启动设备:
grub> rootnoverify (hd0,0)
2 用makeactive命令设置活动标记:
grub> makeactive
3 用命令chainloader命令装入启动程序:
grub> chainloader +1
+1表明Grub要从开始的分区读入一个扇区.
4 执行命令boot
下面的部分我们来谈一些我们在启动特定系统时要注意的一些问题:
GNU/Hurd
因为GNU/Hurd是适应多重引导的,所以我们可以很容易的来启动他,在这一点并没有什么特殊的内容.但是我们不要忘记我们要为内核指定启动分区:
1 设置Grub的启动设备.一般情况下,我们可以用下面的命令来帮助我们:
find /boot/gnumach
2 用下面的命令装入内核及模块:
grub> kernel /boot/gnumach root=hd0s1
grub> module /boot/serverboot
3 执行boot命令.
GNU/Linux
我们可以很容易的由Grub来启动Linux.其启动方法如下:
1 设置Grub的启动设备.一般情况下,下面的命令可以帮助我们确定启动分区:
find /vmlinuz
2 装入内核:
grub> kernel /vmlinuz root=/dev/hda1
如果我们需要指定一参数,我们可以像下面的命令一样来指定:
grub>kernel /vmlinuz root=/dev/hda1 vga=ext
我们可以在Linux的源码树中得到所有的可用的选项.
3 如果我们使用initrd,我们要执行initrd命令:
grub> initrd /initrd
4 执行boot命令.
在这里我们要注意的就是如果我们用mem选项来指定内核所使用的内存时,我们要同时为Grub指定同样大小的内存.
FreeBSD:
Grub可以以ELF或是a.out格式直接装入内核.但是我们并不会推荐这样的做,因为有时FreeBSD的启动接口改动较大,所以有时Grub并不会正确的传入内核参数.在这样的情况下,我们推荐更为灵活的/boot/loader来代替.如下面的例子:
grub> kernel /boot/loader
grub> boot
NetBSD:
Grub可以以ELF或是a.out的格式直接启动NetBSD.我们可以用下面的步骤来做到:
1 指定Grub的启动设备
2 用kernel命令装入内核.如果我们要以ELF的格式启动,我们要加上--type=netbsd选项.如下面的命令:
grub> kernel --type=netbsd /netbsd-elf
3 执行boot命令.
OpenBSD:
与NetBSD的启动命令相同.
DOS/WINDOWS
Grub并不可以直接启动WINDOWS,所以我们要由chain load来启动这样的系统.然而他们的启动引导程序有一些特殊的定义,所以我们仅仅是使用chain-load并不可以很好的来完成工作.为了克服这样的问题,Grub为我们提供了两个帮助函数.
如果我们并不是在第一块硬盘上安装了DOS或是WINDOWS,我们需要使用硬盘交换技术,因为这样的系统只可以从第一个硬盘启动,而不可以从其他的硬盘启动.在Grub中我们要使用map命令,如下:
grub> map (hd0) (hd1)
grub> map (hd1) (hd0)
这样的命令在我们的第一个硬盘和第二个硬盘间进行了一次虚拟交换.
在这里我们要注意的就是如果系统使用BIOS来访问磁盘,这样的方法是很好效的.如果系统是使用特殊的驱动器,这样的方法就不可以起作用了.
而在这里出现的另一个问题:如果我们在一个硬盘上安装了多个DOS或是WINDOWS系统,而对于DOS或是WINDOWS来说有多个主分区,那么他们在启动时就会发生混乱.我们应避免这样的情况,如果我们确实这样做了,我们也是有解决办法的.我们可以使用分区的隐藏技术.
如果我们隐藏(hide)了一个DOS或是WINDOWS分区,DOS或是WINDOWS系统就会忽略这个分区.如果我们开放(unhide)了一个DOS或是WINDOWS分区,DOS或是WINDOWS就会检测这个分区.所以如果我们在我们的第一个硬盘上的第一个分区和第二个分区安装了DOS或是WINDOWS系统,而我们要启动第一个分区的拷贝,我们这样的来做:
grub> unhide (hd0,0)
grub> hide (hd0,1)
grub> rootnoverify (hd0,0)
grub> makeactive
grub> boot
SCO UnixWare
这个系统的启动我们要使用--force选项来进行chain loade,如下面的命令:
grub> rootnoverify (hd1,0)
grub> chainloader --force +1
grub> makeactive
grub> boot
QNX:
QNX似乎是要使用更大的启动引导程序,所以我们要像下面的这样的来引导他:
grub> rootnoverify (hd1,1)
grub> chainloader +4
grub> boot
配置文件:
从这里我们可以看到如果我们要启动一个系统,我们要输入许多的命令.Grub为我们提供了一个菜单的接口来解决这个问题.从这个启动菜单我们可以来选择我们要启动的系统.
使用菜单启动,我们需要在启动目录下建立一个名为men.lst的配置文件.下面我们来分析一下这个配置文件.
在这个文件的头部包含一些一般的设置以及和菜单接口相关的选项.我们可以在任何内容之前放入这些内容.
#
# Sample boot menu configuration file
#
正如我们想到的,这些语句是注释行.在Grub中以#及空格开头的会被Grub忽略掉.
# By default, boot the first entry.
default 0
第一个输入是默认的选择,在这里我们要注意的是这里由0开始而不是由1开始.
# Boot automatically after 30 secs.
timeout 30
正如在注释中所说的,Grub中会自动在30秒后启动默认的系统,除非我们要做出选择.
# Fallback to the second entry.
fallback 1
如果因为某些原因,第一个选择不可以很好的工作,我们可以进入第二个系统.
现在我们要开始我们真正的系统定义了.这里的每一个选择都是由一些特殊的命令开始的:title,而动作的描述则是放在其后.在这里我们要注意的是在每一个内容的后面并没有boot命令.这里因为如果Grub成功的装入了其他的命令以后就会自动执行boot命令.
命令title的参数是在启动画面上显示的内容.因为title是要显示的参数,所以我们可以在这里写上任何的内容.
# For booting GNU/Hurd
title GNU/Hurd
root (hd0,0)
kernel /boot/gnumach.gz root=hd0s1
module /boot/serverboot.gz
这会从第一个硬盘启动GNU/Hurd.
# For booting GNU/Linux
title GNU/Linux
kernel (hd1,0)/vmlinuz root=/dev/hdb1
这会从第二个硬盘启动GNU/Linux
# For booting Mach (getting kernel from floppy)
title Utah Mach4 multiboot
root (hd0,2)
pause Insert the diskette now^G!!
kernel (fd0)/boot/kernel root=hd0s3
这个会启动Mach系统,但是这个系统的内核是在软盘上而文件系统却是在hd0s3上.他也会包含一个暂停行,这会便利Grub显示一个提示,并在执行的其他的命令之前暂停.
# For booting FreeBSD
title FreeBSD
root (hd0,2,a)
kernel /boot/loader
这个内容会从第三个硬盘的第三个PC片的'a'分区启动FreeBSD.
# For booting OS/2
title OS/2
root (hd0,1)
makeactive
# chainload OS/2 bootloader from the first sector
chainloader +1
# This is similar to "chainload", but loads a specific file
#chainloader /boot/chain.os2
这个内容会使用chain load启动OS/2
title Windows NT / Windows 95 boot menu
root (hd0,0)
makeactive
chainloader +1
# For loading DOS if Windows NT is installed
# chainload /bootsect.dos
与上面的内容相同的,只是用来启动Windows.
# For installing GRUB into the hard disk
title Install GRUB into the hard disk
root (hd0,0)
setup (hd0)
这个命令内容会将GRUB安装在硬盘上.
# Change the colors.
title Change the colors
color light-green/brown blink-red/blue
在最后的一个内容中我们使用了color命令来改变启动菜单的颜色.这是一个相对特殊的命令,因为这个命令可以在命令行和菜单中使用.在GRUB还有许多类似的命令.
分享到:
评论

相关推荐

    修改Ubuntu 的Grub2启动项

    ### 修改Ubuntu的Grub2启动项 在使用Ubuntu双系统环境下,...需要注意的是,在编辑grub配置文件时一定要小心谨慎,避免因误操作导致系统无法正常启动。如果遇到任何问题,可以通过查阅官方文档或寻求社区帮助来解决。

    grub修改ubuntu启动项

    总的来说,Grub 2提供了一种更为灵活和安全的方式来管理Ubuntu的启动项,通过修改 `/etc/default/grub` 文件,用户可以在不丢失系统更新带来的配置变更的前提下,轻松调整启动选项。尽管Grub 2的配置相对复杂,但它...

    自己制作的grub启动配置文件

    自己制作的grub启动配置文件。经过几个月的努力算是基本掌握了grub.cfg的基本语法,并经过研究,探索了windows7以上,和fedora、debian、centos的启动方法。

    grub引导U盘启动

    这个文件定义了GRUB启动时显示的菜单项和对应的启动命令。 6. **添加系统映像**:如果你计划从U盘启动Linux ISO文件,可以将其复制到U盘上,并在`menu.lst`中添加相应的配置,使GRUB能够加载并启动ISO内的引导程序...

    系统启动界面需要文件_grub.rar

    GRUB(Grand Unified Bootloader)是Linux系统中广泛使用的引导加载器,它的主要任务是在计算机启动时提供一个...在实际操作中,务必谨慎编辑配置文件,并确保在修改后正确更新GRUB设置,以免导致无法正常启动系统。

    使用多重启动管理器GRUB引导Linux系统.pdf

    在 `grub.conf` 文件中,default 参数指定默认启动的操作系统,timeout 参数指定 GRUB 运行后的等待时间,splashimage 指定 GRUB 的背景画面,hiddenmenu 隐藏 GRUB 的菜单选择项。每个操作系统的启动定义从 title ...

    Grub.conf文件修改Linux系统

    GRUB.conf文件是GRUB配置的核心,它定义了系统启动时的菜单项、内核参数以及引导流程。本文将深入探讨GRUB.conf的结构、内容以及如何进行修改。 ### 一、GRUB基本概念 1. **GRUB的作用**:GRUB允许用户在多操作...

    grub2文件系统下载

    GRUB2的配置文件主要位于`/etc/default/grub`,在这里可以设置启动菜单的选项,比如默认操作系统、启动参数等。修改完配置文件后,需要使用`grub2-mkconfig`命令生成新的GRUB配置,然后用`grub2-install`命令将GRUB...

    四步实现Grub4DOS引导img文件打造启动U盘

    4. 创建一个名为`menu.lst`的配置文件,这是Grub4DOS的启动菜单配置。在这个文件中,你可以定义启动项,比如加载img文件的命令: ```text title 启动你的系统 map --mem /path/to/your/image.img (0xff) map --hook...

    最精简启动efi包含grub程序和配置.zip

    标题中的“最精简启动efi包含grub程序和配置.zip”表明这是一个包含GRUB(Grand Unified Bootloader)启动加载器以及EFI(Extensible Firmware Interface)相关配置的压缩包文件,用于创建一个能够启动Linux操作系统...

    grub 完美教程 学习grub多启动设置方法

    下面是 GRUB 的详细教程,涵盖了 GRUB 的基本概念、多系统引导的实现、GRUB 的安装和配置等。 硬件基础 -------- 在了解 GRUB 之前,需要了解硬件基础知识。硬盘的起始部分扇区为主引导扇区(MBR),包括主引导...

    linux 在grub2中添加windows启动项

    这个过程涉及到对GRUB2配置文件的编辑以及对系统引导扇区的更新。 首先,我们需要理解GRUB2的工作原理。GRUB2是一个预启动加载器,它在操作系统启动之前加载内核和初始化程序。它通过读取配置文件`/etc/default/...

    grub常用命令的使用与内核启动

    GRUB 配置文件 menu.lst 是一个文本文件,包含了启动菜单的配置信息。用户可以根据需要编辑该文件来自定义启动过程。例如,以下是一个基本的 GRUB 菜单配置文件: ``` default=linux timeout=10 color=green/black ...

    改变启动顺序以及grub2 配置技巧

    对于那些同时安装了Windows 7和Fedora的用户来说,掌握如何更改默认启动顺序及配置grub2是非常有用的技能。下面将详细介绍这一过程中的关键知识点。 #### 一、理解grub2 Grub2是GRand Unified Bootloader version ...

    GRUB2_启动引导器

    通过合理的配置,GRUB2能够智能地检测并列出系统中所有可用的操作系统,确保用户在启动时有充分的选择权。 #### 4. 定制GRUB菜单 ##### 编辑启动选项 通过编辑`/etc/default/grub`,用户可以定制启动菜单的外观与...

    修改ubuntu开机启动项顺序 grub设置 删除多余内核

    修改 Ubuntu 开机启动项顺序 GRUB 设置删除多余内核 GRUB(Grand Unified Bootloader)是 Ubuntu 中的开机引导程序,它负责在系统启动时加载...用户需要小心编辑 GRUB 的配置文件,以免错误的配置导致系统无法启动。

    修改Grub启动时的背景图片

    Grub 是 Linux 系统中常用的引导加载程序,其中的启动背景图片可以被修改和自定义。本文将介绍如何安装和修改 Grub 启动时的背景图片,以及相关的技术要点。 一、Grub 启动背景图片的安装 要安装 Grub 启动背景...

    绿色精简版 启动引导程序Grub

    Grub的配置文件`menu.lst`(或`grub.cfg`,取决于Grub版本)允许用户自定义启动菜单,包括设置操作系统的默认启动项、调整启动参数、加载驱动程序等。通过修改这个文件,你可以控制Grub的行为,比如添加新的操作系统...

    用grub取代grub2启动ubuntu 10

    Ubuntu 10.04 LTS版本默认采用了GRUB2作为启动加载器,这导致一些用户无法适应其变化,特别是对于那些习惯于使用GRUB Legacy通过`menu.lst`文件来管理启动项的老用户来说,这是一个不小的挑战。GRUB2不再直接使用`...

Global site tag (gtag.js) - Google Analytics