GRUB的命令.docx
《GRUB的命令.docx》由会员分享,可在线阅读,更多相关《GRUB的命令.docx(21页珍藏版)》请在冰豆网上搜索。
GRUB的命令
GRUB的命令,如果知道怎么用命令行来启动操作系统,那理解menu.lst的写法也不难;也就是说在开机的时候,不用GRUB的菜单,通过GRUB的命令也是一样能把操作系统引导起来。
因为menu.lst的内容就是GRUB的一个一个的指令集合;是不是Linux这玩意很神奇?
1、为什么需要学习GRUB的命令行;
当我们把GRUB的menu.lst写错的时候,或者丢掉了menu.lst的时,比方在开机的时候,GRUB会出现grub>类似的命令提示符,这时需要我们用命令行启动系统;当然您可以不用定义GRUB的菜单,直接用命令行来启动系统,比方我现在就是,为了写GRUB的文档,就把menu.lst删除了,直接用命令来启动系统;
2、用命令行来引导Linux操作系统的步骤;通过命令行来引导操作系统的流程,也没有什么难的;无非是把指令手工输入到grub>提示符的后面;在这个过程中,tab键的命令补齐功能就显得很重要了。
如果您不知道有哪些命令,可以输入help;
1〕进入GRUB的命令行模式grub>
如果开机时,GRUB出现的是grub>,说明你没有/etc/grub/menu.lst,您需要自己写一个才会GRUB的菜单,让我们来选择进入哪个系统。
如果有GRUB的菜单,您可以按Ctrl+c组合键进入GRUB的命令行模式,会出现grub>提示符;grub>
2〕获取帮助GRUB的help只要您在grub>提示符的后面输入help就能得到GRUB所有的命令提示;grub>help
blocklistFILE boot
catFILE chainloader[--force]FILE
clear colorNORMAL[HIGHLIGHT]
configfileFILE deviceDRIVEDEVICE
displayapm displaymem
findFILENAME geometryDRIVE[CYLINDERHEADSECTOR[
halt[--no-apm] help[--all][PATTERN...]
hidePARTITION initrdFILE[ARG...]
kernel[--no-mem-option][--type=TYPE]makeactive
mapTO_DRIVEFROM_DRIVE md5crypt
moduleFILE[ARG...] modulenounzipFILE[ARG...]
pager[FLAG] partnewPARTTYPESTARTLEN
parttypePARTTYPE quit
reboot root[DEVICE[HDBIAS]]
rootnoverify[DEVICE[HDBIAS]] serial[--unit=UNIT][--port=PORT][--
setkey[TO_KEYFROM_KEY] setup[--prefix=DIR][--stage2=STAGE2_
terminal[--dumb][--no-echo][--no-edterminfo[--name=NAME--cursor-address
testvbeMODE unhidePARTITION
uppermemKBYTES vbeprobe[MODE]如果需要得到某个指令的帮助,就在help后面空一格,然后输入指令,比方;grub>helpkernel
3〕cat的用法;cat指令是用来查看文件内容的,有时我们不知道Linux的/boot分区,以及/根分区所在的位置,要查看/etc/fstab的内容来得知,这时,我们就要用到cat(hd[0-n],y)/etc/fstab来获得这些内容;注意要学会用tab键命令补齐的功能;grub>cat( 按tab键会出来hd0或hd1之类的;
grub>cat(hd0,注:
输入hd0,然后再按tab键;会出来分区之类的;
grub>cat(hd0,6)
Possiblepartitionsare:
Partitionnum:
0, Filesystemtypeunknown,partitiontype0x7
Partitionnum:
4, Filesystemtypeisfat,partitiontype0xb
Partitionnum:
5, Filesystemtypeisreiserfs,partitiontype0x83
Partitionnum:
6, Filesystemtypeisext2fs,partitiontype0x83
Partitionnum:
7, Filesystemtypeunknown,partitiontype0x83
Partitionnum:
8, Filesystemtypeisreiserfs,partitiontype0x83
Partitionnum:
9, Filesystemtypeunknown,partitiontype0x82
grub>cat(hd0,6)/etc/fstab注:
比方我想查看一下(hd0,6)/etc/fstab的内容就这样输入
LABEL=/ / ext3 defaults 11
/dev/devpts /dev/pts devpts gid=5,mode=620 00
/dev/shm /dev/shm tmpfs defaults 00
/dev/proc /proc proc defaults 00
/dev/sys /sys sysfs defaults 00
LABEL=SWAP-hda1 swap swap defaults 00
/dev/hdc /media/cdrecorder auto pamconsole,exec,noauto,
managed00有的弟兄可能会说,我不知道Linux安装在了哪个分区。
那根据文件系统来判断一个一个的尝试总可以吧我;只要能cat出/etc/fstab就能为以后引导带来方便;主要查看/etc/fstab中的内容,主要是Linux的/分区及/boot是否是独立的分区;如果没有/boot类似的行,证明/boot和Linux的/处于同一个硬盘分区;比方上面的例子中LABEL=/这行是极为重要的;说明Linux系统就安在标签为LABEL=/的分区中;如果您的Linux系统/boot和/没有位于同一个分区,可能cat(hd[a-n],y)查到的是类似下面的;LABEL=/ / ext3 defaults 11
LABEL=/boot /boot ext3 defaults 12
4〕root(hd[0-n,y)指令来指定/boot所在的分区;其实这个root(hd[0,n],y)是可以省略的,如果省略了,我们要在kerenl命令中指定;我们前面已经说过(hd[0-n],y)硬盘分区的表示方法的用途;主要是用来指定/boot所在的分区;比方我们确认/boot和(hd0,6),所以就可以这样来输入root(hd0,6)grub>root(hd0,6)如果发现不对,可以重新来过;没有什么大不了的;
5〕kernel指令,用来指定Linux的内核,及/所在的分区;kernel这个指令可能初学者有点怕,不知道内核在哪个分区,及内核文件名的全称是什么。
不要忘记tab键的命令补齐的应用;
如果我们已经通过root(hd[0-n],y)指定了/boot所在的分区,语法有两个:
如果/boot和Linux的/位于同一个分区,应该是下面的一种格式;
kernel/boot/vmlinuz在这里按tab键来补齐,就看到内核全称了roroot=/dev/hd[a-z]X
如果/boot有自己独立的分区,应该是;
kernel/vmlinuz在这里按tab键来补齐,就看到内核全称了roroot=/dev/hd[a-z]X在这里root=/dev/hd[a-z]X是Linux的/根所位于的分区,如果不知道是哪个分区,就用tab出来的来计算,一个一个的尝试;或用cat(hd[0-n],y)/etc/fstab中得到Linux的/所在的分区或分区的标签;grub>kernel/boot/在这里按tab键;这样就列出/boot中的文件了;
Possiblefilesare:
grubinitrd-2.6.11-1.1369_FC4.imgSystem.map-2.6.11-1.1369
_FC4config-2.6.11-1.1369_FC4vmlinuz-2.6.11-1.1369_FC4grubBAKmemtest86+-1.55
.1xen-symsxen.gz
grub>kernel/boot/vmlinuz-2.6.11-1.1369_FC4roroot=LABEL=/
[Linux-bzImage,setup=0x1e00,size=0x18e473]注解:
root=LABEL=/是Linux的/所在的分区的文件系统的标签;如果您知道Linux的/在哪个具体的分区,用root=/dev/hd[a-z]X来指定也行。
比方下面的一行也是可以的;grub>kernel/boot/vmlinuz-2.6.11-1.1369_FC4roroot=/dev/hda7也可以把/boot所在的分区的指定root(hd[0-n],y)这行省掉,直接在kernel中指定/boot所在的分区;所以就在下面的语法;如果是/boot和Linux的根同处一个分区;kernel(hd[0-n],y)/boot/vmlinuzroroot=/dev/hd[a-z]X比方:
grub>kernel如果是/boot和Linux所在的根不在一个分区;则是;kernel(hd[0-n],y)/vmlinuz roroot=/dev/hd[a-z]Xgrub>kernel(hd0,6)/boot/vmlinuz-2.6.11-1.1369_FC4roroot=/dev/hda7
[Linux-bzImage,setup=0x1e00,size=0x18e473]或下面的输入,以cat出/etc/fstab内容为准;grub>kernel(hd0,6)/boot/vmlinuz-2.6.11-1.1369_FC4roroot=LABEL=/
[Linux-bzImage,setup=0x1e00,size=0x18e473]
6〕initrd命令行来指定initrd文件;grub>initrd/boot/initrd在这里tab来补齐;
grub>initrd/boot/initrd-2.6.11-1.1369_FC4.img
[Linux-initrd@0x2e1000,0x10e685bytes]如果/boot是独立的一个分区,应该是如下样子的语法;比方下面的;grub>initrd/initrd在这里tab来补齐;
grub>initrd/initrd-2.6.11-1.1369_FC4.img
[Linux-initrd@0x2e1000,0x10e685bytes]
7〕boot引导系统;grub>boot前面的几个步骤都弄好。
就进入引导;尝试一下就知道了。
。
8〕引导Linux系统实例全程回放;实例:
/boot和Linux的/处于同一个硬盘分区;grub>cat(hd0,6)/etc/fstab
#Thisfileiseditedbyfstab-sync-see'manfstab-sync'fordetails
LABEL=/ / ext3 defaults 11
/dev/devpts /dev/pts devpts gid=5,mode=620 00
/dev/shm /dev/shm tmpfs defaults 00
/dev/proc /proc proc defaults 00
/dev/sys /sys sysfs defaults 00
LABEL=SWAP-hda1 swap swap defaults 00
/dev/hdc /media/cdrecorder auto pamconsole,exec,noauto,managed00
grub>root(hd0,6)
Filesystemtypeisext2fs,partitiontype0x83
grub>kernel/boot/在这里按tab补齐,全列出/boot所有的文件;
Possiblefilesare:
grubinitrd-2.6.11-1.1369_FC4.imgSystem.map-2.6.11-1.1369_FC4config-2.6.11-1.1369_FC4vmlinuz-2.6.11-1.1369_FC4
memtest86+-1.55.1xen-symsxen.gz
grub>kernel/boot/vmlinuz-2.6.11-1.1369_FC4roroot=/dev/hda7 注:
输入
[Linux-bzImage,setup=0x1e00,size=0x18e473]
grub>initrd/boot/在这里按tab补齐
Possiblefilesare:
grubinitrd-2.6.11-1.1369_FC4.imgSystem.map-2.6.11-1.1369_FC4config-2.6.11-1.1369_FC4vmlinuz-2.6.11-1.1369_FC4
memtest86+-1.55.1xen-symsxen.gz
grub>initrd/boot/initrd-2.6.11-1.1369_FC4.img注;输入intrd文件名的全名;
[Linux-initrd@0x2e1000,0x10e685bytes]
grub>boot我们指定Linux的根时,可以用cat出来的fstab的内容中Linux的/分区文件系统标签来替代;也就是kernel那行中root=/dev/hd[a-z]X;grub>cat(hd0,6)/etc/fstab
#Thisfileiseditedbyfstab-sync-see'manfstab-sync'fordetails
LABEL=/ / ext3 defaults 11
/dev/devpts /dev/pts devpts gid=5,mode=620 00
/dev/shm /dev/shm tmpfs defaults 00
/dev/proc /proc proc defaults 00
/dev/sys /sys sysfs defaults 00
LABEL=SWAP-hda1 swap swap defaults 00
/dev/hdc /media/cdrecorder auto pamconsole,exec,noauto,managed00
grub>root(hd0,6)
Filesystemtypeisext2fs,partitiontype0x83
grub>kernel/boot/在这里按tab补齐,全列出/boot所有的文件;
Possiblefilesare:
grubinitrd-2.6.11-1.1369_FC4.imgSystem.map-2.6.11-1.1369_FC4config-2.6.11-1.1369_FC4vmlinuz-2.6.11-1.1369_FC4
memtest86+-1.55.1xen-symsxen.gz
grub>kernel/boot/vmlinuz-2.6.11-1.1369_FC4roroot=LABEL=/
[Linux-bzImage,setup=0x1e00,size=0x18e473]
grub>initrd/boot/在这里按tab补齐
Possiblefilesare:
grubinitrd-2.6.11-1.1369_FC4.imgSystem.map-2.6.11-1.1369_FC4config-2.6.11-1.1369_FC4vmlinuz-2.6.11-1.1369_FC4grubBAK
memtest86+-1.55.1xen-symsxen.gz
grub>initrd/boot/initrd-2.6.11-1.1369_FC4.img注;输入intrd文件名的全名;
[Linux-initrd@0x2e1000,0x10e685bytes]
grub>boot如果是/boot和Linux的根分区不在同一个分区,要把kernel和initrd指令中的/boot去掉,也就是/vmlinuzMMMMMM或/initrdNNNN也可以不用root(hd[0-n]来指定/boot所在分区,要在kernel和initrd中指定;比方Linux的/根所位于的分区和/boot所位于的分区都是(hd0,6),并且我们cat出来的/etc/fstab是Linux的/根分区的文件系统的标签为LABEL=/,引导操作系统的例子如下;grub>kernel(hd0,6)/boot/vmlinuz-2.6.11-1.1369_FC4roroot=LABEL=/
grub>initrd(hd0,6)/boot/initrd-2.6.11-1.1369_FC4.img
grub>boot或grub>kernel(hd0,6)/boot/vmlinuz-2.6.11-1.1369_FC4roroot=/dev/hda7
grub>initrd(hd0,6)/boot/initrd-2.6.11-1.1369_FC4.img
grub>boot如果/boot位于/dev/hda6,也就是(hd0,5),Linux的根/位于分区/dev/hda7,并且我们cat出来的/etc/fstab中/分区的标签为LABEL=/。
下面的两种方法都可以引导;grub>kernel(hd0,5)/vmlinuz-2.6.11-1.1369_FC4roroot=LABEL=/
grub>initrd(hd0,5)/initrd-2.6.11-1.1369_FC4.img
grub>boot
或grub>kernel(hd0,5)/vmlinuz-2.6.11-1.1369_FC4roroot=/dev/hda7
grub>initrd(hd0,5)/initrd-2.6.11-1.1369_FC4.img
grub>boot
系统引导管理器GRUB--深入学习
来源:
ChinaUnix博客 日期:
2007.07.0711:
27 (共有0条评论)我要评论
GRUB软件包版本选择和安装;
1、GRUB的版本选择,Linux版本的GRUB及Windows版本的GRUB的说明;
GRUB不但有Linux版本,也有Windows版本;现我们一一介绍;
如前面所说,目前在在Unix类的操作系统中,大多是都有GRUB;GRUB几乎能引导所有X86架构的操作系统;功能之强,使用简单是GRUB最大的卖点;由于Windows操作系统的先入为主的优势,使得大家对Windows的NTLOADER了解的比较多,而对开源社区的GRUB显得有点寞生,由此而带来使用上的“心理恐惧”;究其初学者对GRUB“恐惧”的主要原因还是对GRUB没有太多的了解和深入;无论是WINGRUB还是Linux版本的GRUB,最方便的还是对GRUB命令行的操作;一谈到命令行〔Command〕的操作,可能初学者对此恐惧;其实没有什么难的,象北南这样低级的写手,还能操作得起来,您也应该能行;