grub 启动项,grub命令行启动
Grub可以以某种方式引导多种内核,但是对于一些自由操作系统,我们需要使用特殊的方法。如何启动操作系统:
Grub有两种不同的引导方法。一种是直接引导操作系统,另一种是将引导权交给另一个引导加载程序,后者将引导操作系统。一般来说,前者更令人满意,因为我们不需要安装和维护另一个引导加载程序。Grub足够灵活,可以从单个磁盘或分区加载操作系统。然而,后一种方法也是必要的,因为Grub并不支持所有现有的操作系统。
如何通过Grub直接引导:
Grub支持多种引导格式。为了方便起见,Grub还将支持Linux、FreeBSD、NetBSD和OpenBSD的引导。如果我们想引导其他操作系统,我们必须使用链加载来引导。
通常,Grub的启动步骤如下:
使用root命令将Grub的引导设备设置为存储系统引导映像的驱动器。
使用kernel命令加载内核映像。
如果我们仍然需要模块,使用module命令或modulenounzip命令来加载所需的模块。
运行boot命令。
Linux、FreeBSD、NetBSD、OpenBSD都可以通过类似的简单方法启动。我们使用命令kernel来加载内核,然后运行命令boot。如果内核需要一些参数,只需要在内核的文件名后面加上需要的参数即可。
如果我们想启动一个Grub不支持的操作系统,我们需要用链式加载来启动它。通常,引导程序存储在系统安装分区的引导扇区中。这种系统的引导如下:
1用rootnoverify命令设置Grub的引导设备:
grub rootnoverify (hd0,0)
2使用makeactive命令设置活动标志:
grub makeactive
3使用命令chainloader命令加载启动程序:
grub链式装载机1
表示Grub将从起始分区读取一个扇区。
4执行命令boot
在下面的小节中,我们来谈谈在启动一个具体的系统时应该注意的一些问题:
GNU/Hurd
因为GNU/Hurd适合多次启动,所以我们可以轻松启动,并没有什么特别之处。但是我们不要忘记,我们必须为内核指定引导分区:
1设置Grub的引导设备。通常,我们可以使用以下命令来帮助我们:
find /boot/gnumach
2使用以下命令加载内核和模块:
grub kernel/boot/gnumach root=hd0s 1
grub模块/引导/服务器引导
执行引导命令。
GNU/Linux
我们可以通过Grub轻松启动Linux。启动方法如下:
1设置Grub的引导设备。通常,以下命令可以帮助我们确定引导分区:
find /vmlinuz
2加载内核:
grub内核/vmlinuz root=/dev/hda1
如果我们需要指定一个参数,我们可以像下面这样指定它:
grub内核/vmlinuz root=/dev/hda1 vga=ext
我们可以在Linux的源代码树中获得所有可用的选项。
3如果我们使用initrd,我们将执行initrd命令:
grub initrd /initrd
执行引导命令。
这里我们应该注意的是,如果我们使用mem选项来指定内核使用的内存,我们也应该为Grub指定相同大小的内存。
FreeBSD:
Grub可以以ELF或者a.out格式直接加载到内核中。但是我们不建议这样做,因为有时候FreeBSD的引导接口变化很大,所以有时候Grub传入内核参数不正确。在这种情况下,我们建议使用更灵活的/boot/loader。例如:
grub内核/引导/加载程序
grub靴子
NetBSD:
Grub可以直接以ELF或a.out格式启动NetBSD,我们可以通过以下步骤来实现:
1指定Grub的引导设备。
使用2 kernel命令加载内核。如果我们想以ELF格式开始,我们将添加- type=netbsd选项。例如下面的命令:
grub kernel-type=netbsd/netbsd-elf
执行引导命令。
OpenBSD:
与NetBSD的启动命令相同。
DOS/WINDOWS
Grub不能直接启动WINDOWS,所以我们只能通过链式加载来启动这样的系统。但是,他们的引导程序有一些特殊的定义,所以我们不能仅仅通过使用chainload来做好我们的工作。为了克服这个问题,Grub为我们提供了两个帮助函数。
如果我们没有在第一个硬盘上安装DOS或WINDOWS,就需要使用硬盘交换技术,因为这样的系统只能从第一个硬盘启动,而不能从其他硬盘启动。在Grub中,我们需要使用map命令,如下所示:
grub映射(hd0) (hd1)
grub映射(hd1) (hd0)
这个命令在我们的第一个硬盘和第二个硬盘之间进行虚拟交换。
这里要注意的是,如果系统使用BIOS访问磁盘,这种方法是非常有效的。如果系统使用特殊驱动器,此方法将不起作用。
这里还有一个问题:如果我们在一个硬盘上安装了多个DOS或WINDOWS系统,并且有多个DOS或WINDOWS的主分区,那么启动时就会混淆。我们应该避免这种情况,如果做到了,也可以解决。我们可以使用分区隐藏技术。
如果我们隐藏一个DOS或WINDOWS分区,DOS或WINDOWS系统会忽略这个分区。如果我们取消隐藏一个DOS或WINDOWS分区,DOS或WINDOWS会检测到这个分区。因此,如果我们在第一个硬盘的第一个分区和第二个分区上安装DOS或WINDOWS系统,并且我们想开始复制第一个分区,我们应该这样做:
grub取消隐藏(hd0,0)
幼虫皮(hd0,1)
grub rootnoverify (hd0,0)
grub makeactive
grub靴子
操作系统
要启动这个系统,我们需要使用- force选项来链接loade,如以下命令所示:
grub rootnoverify (hd1,0)
grub链式装载机- force 1
grub makeactive
grub靴子
QNX:
QNX似乎使用了一个更大的引导加载程序,所以我们必须像下面这样引导他:
grub rootnoverify (hd1,1)
grub链式装载机4
grub靴子
个人资料:
从这里我们可以看到,如果我们要启动一个系统,我们必须输入许多命令。Grub为我们提供了一个菜单界面来解决这个问题。从这个启动菜单中,我们可以选择我们想要启动的系统。
从菜单开始,我们需要在启动目录中创建一个名为men.lst的配置文件。我们来分析一下这个配置文件。
该文件头包含一些与菜单界面相关的常规设置和选项。我们可以把这些内容放在任何内容之前。
#
#启动菜单配置文件示例
#
正如我们所想的,这些语句是注释行。Grub会忽略Grub中以#和空格开头的那些。
#默认情况下,引导第一个条目。
默认为0
第一个输入是默认选择。这里要注意的是,它是以0开始的,而不是1。
# 30秒后自动启动。
超时30
如评论所说,默认系统会在30秒后自动在Grub启动,除非我们不得不做出选择。
#退回到第二个条目。
回退1
如果因为某种原因,第一个方案效果不好,我们可以进入第二个系统。
现在我们要开始真正的系统定义了。这里的每一个选择都是由一些特殊的命令开始的:title,然后是动作的描述。这里要注意的是,每个内容后面都没有引导命令。这是因为如果Grub成功加载了其他命令,它将自动执行引导命令。
title命令的参数是启动屏幕上显示的内容。因为title是要显示的参数,所以我们可以在这里写任何内容。
#用于引导GNU/Hurd
标题GNU/Hurd
根(hd0,0)
kernel/boot/gnumach . gz root=hd0s 1
模块/boot/serverboot.gz
这将从第一块硬盘启动GNU/Hurd。
#用于引导GNU/Linux
标题GNU/Linux
内核(hd1,0)/vmlinuz root=/dev/hdb1
这将从第二块硬盘启动GNU/Linux。
#用于启动机器(从软盘获取内核)
标题犹他州Mach4多重引导
根(hd0,2)
暂停插入软盘now^G!
内核(fd0)/引导/内核根=hd0s3
这将启动Mach系统,但是这个系统的内核在软盘上,而文件系统在hd0s3上。它还将包含一个暂停行,这将有助于Grub在执行其他命令之前显示一个提示和暂停。
#用于引导FreeBSD
标题免费b
根(hd0,2,a)
内核/引导/加载程序
这个内容会从第三个硬盘的第三个个人电脑片的一个分区启动FreeBSD .
#用于引导操作系统/2
标题操作系统/2
根(hd0,1)
激活
#从第一个扇区链式加载操作系统/2引导加载程序
链式装载机一
#这类似于“链条负载”,但是加载特定的文件
#chainloader /boot/chain.os2
这个内容会使用链式负载启动操作系统/2
标题视窗NT /视窗95启动菜单
根(hd0,0)
激活
链式装载机一
#如果安装了Windows NT,则用于加载磁盘操作系统
# chainload /bootsect.dos
与上面的内容相同的,只是用来启动窗户。
#用于将食物安装到硬盘中
标题将食物安装到硬盘中
根(hd0,0)
设置(hd0)
这个命令内容会将食物安装在硬盘上。
#改变颜色。
标题改变颜色
颜色浅绿/棕色闪烁-红色/蓝色
在最后的一个内容中我们使用了颜色命令来改变启动菜单的颜色。这是一个相对特殊的命令,因为这个命令可以在命令行和菜单中使用。在食物还有许多类似的命令。