Grub命令行

  今天电脑平白无故没法正常启动,只提示 GRUB>

 

看来是GRUB引导出问题了,要解决下。ide

先 想到用制做U盘启动盘来启动,参照网上的方法,很简单用USBBOOT软件作了一个U盘启动盘,按F11在别的电脑上能够用U盘启动,说明制做启动盘成 功。而后放公司电脑上,发现选择U盘启动后仍是进入到了GRUB,看来GRUB优先级别比U盘启动盘高,这个方法只能算失败了。ui

 

后来在网上参考GRUB命令行格式,解决掉了,步骤以下:操作系统


grub> rootnoverify (hd0,0)
grub> chainloader +1
grub> boot命令行

 

说明:若是不知道命令的参数,好比是用(hd0,0)仍是(hd1,2),能够在命令后面按TAB键,这样就会出现可选参数的列表,再根据列表进行选择就能够了。
 ip


参考的GRUB文章全文以下:md5

grub 命令行用法terminal

 

一、用命令行来引导Linux操做系统的步骤it

经过命令行来引导操做系统的流程,也没有什么难的;无非是把指令手工输入到grub>提示符的后面;在这个过程当中,tab键的命令补齐功能就显得很重要了。若是您不知道有哪些命令,能够输入help;io


1)进入GRUB的命令行模式 grub>
如 果开机时,GRUB出现的是grub>,说明你没有/etc/grub/menu.lst ,您须要本身写一个才会GRUB的菜单,让咱们来选择进入哪一个系统。若是有GRUB的菜单,您能够按Ctrl+c组合键进入GRUB的命令行模式,会出现 grub> 提示符;console

grub>


2)获取帮助GRUB的 help

只要您在grub>提示符的后面输入help 就能获得GRUB全部的命令提示;

grub> help
blocklist FILE boot
cat FILE chainloader [--force] FILE
clear color NORMAL [HIGHLIGHT]
configfile FILE device DRIVE DEVICE
displayapm displaymem
find FILENAME geometry DRIVE [CYLINDER HEAD SECTOR [
halt [--no-apm] help [--all] [PATTERN ...]
hide PARTITION initrd FILE [ARG ...]
kernel [--no-mem-option] [--type=TYPE] makeactive
map TO_DRIVE FROM_DRIVE md5crypt
module FILE [ARG ...] modulenounzip FILE [ARG ...]
pager [FLAG] partnew PART TYPE START LEN
parttype PART TYPE quit
reboot root [DEVICE [HDBIAS]]
rootnoverify [DEVICE [HDBIAS]] serial [--unit=UNIT] [--port=PORT] [--
setkey [TO_KEY FROM_KEY] setup [--prefix=DIR] [--stage2=STAGE2_
terminal [--dumb] [--no-echo] [--no-ed terminfo [--name=NAME --cursor-address
testvbe MODE unhide PARTITION
uppermem KBYTES vbeprobe [MODE]

若是须要获得某个指令的帮助,就在 help 后面空一格,而后输入指令,好比;

grub>help kernel


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)
Possible partitions are:
    Partition num: 0, Filesystem type unknown, partition type 0x7
    Partition num: 4, Filesystem type is fat, partition type 0xb
    Partition num: 5, Filesystem type is reiserfs, partition type 0x83
    Partition num: 6, Filesystem type is ext2fs, partition type 0x83
    Partition num: 7, Filesystem type unknown, partition type 0x83
    Partition num: 8, Filesystem type is reiserfs, partition type 0x83
    Partition num: 9, Filesystem type unknown, partition type 0x82
grub> cat (hd0,6)/etc/fstab 注:好比我想查看一下 (hd0,6)/etc/fstab的内容就这样输入;
LABEL=/ / ext3 defaults 1 1
/dev/devpts /dev/pts devpts gid=5,mode=620 0 0
/dev/shm /dev/shm tmpfs defaults 0 0
/dev/proc /proc proc defaults 0 0
/dev/sys /sys sysfs defaults 0 0
LABEL=SWAP-hda1 swap swap defaults 0 0
/dev/hdc /media/cdrecorder auto pamconsole,exec,noauto,
managed 0 0

有的弟兄可能会说,我不知道Linux安装在了哪一个分区。那根据文件系统来判断一个一个的尝试总能够吧我;只要能cat出/etc/fstab就能为之后引导带来方便;

主 要查看/etc/fstab中的内容,主要是Linux的/分区及/boot是不是独立的分区;若是没有/boot相似的行,证实/boot和Linux 的/处于同一个硬盘分区;好比上面的例子中LABEL=/ 这行是极为重要的;说明Linux系统就安在标签为LABEL=/的分区中;

若是您的Linux系统/boot和/没有位于同一个分区,可能cat (hd[a-n],y) 查到的是相似下面的;

LABEL=/ / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2


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键来补齐,就看到内核全称了 ro root=/dev/hd[a-z]X
若是/boot有本身独立的分区,应该是;
kernel /vmlinuz在这里按tab键来补齐,就看到内核全称了 ro root=/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中的文件了;
Possible files are: grub initrd-2.6.11-1.1369_FC4.img System.map-2.6.11-1.1369
_FC4 config-2.6.11-1.1369_FC4 vmlinuz-2.6.11-1.1369_FC4 grubBAK memtest86+-1.55
.1 xen-syms xen.gz
grub> kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=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_FC4 ro root=/dev/hda7

也能够把/boot所在的分区的指定 root (hd[0-n],y)这行省掉,直接在kernel 中指定/boot所在的分区;因此就在下面的语法;

若是是/boot和Linux的根同处一个分区;

kernel (hd[0-n],y)/boot/vmlinuz ro root=/dev/hd[a-z]X

好比:

grub>kernel

若是是/boot和Linux所在的根不在一个分区;则是;

kernel (hd[0-n],y)/vmlinuz ro root=/dev/hd[a-z]X

grub> kernel (hd0,6)/boot/vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/hda7
    [Linux-bzImage, setup=0x1e00, size=0x18e473]

或下面的输入,以cat 出/etc/fstab内容为准;

grub> kernel (hd0,6)/boot/vmlinuz-2.6.11-1.1369_FC4 ro root=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, 0x10e685 bytes]

若是/boot是独立的一个分区,应该是以下样子的语法;好比下面的;

grub> initrd /initrd在这里tab 来补齐;
grub> initrd /initrd-2.6.11-1.1369_FC4.img
    [Linux-initrd @ 0x2e1000, 0x10e685 bytes]


7)boot 引导系统;

grub>boot

二、经过GRUB指令来引导Windows ;

其实咱们会写menu.lst了,在menu.lst中的除了title外,都是一条条指令;若是咱们启动Windows ,只是输入指令就好了;

好比 Windows的分区在 (hd0,0),咱们在开机后,按ctrl+c ,进入GRUB的命令模式;就能够用下面的

grub> rootnoverify (hd0,0)grub> chainloader +1grub> boot

相关文章
相关标签/搜索