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

相關文章
相關標籤/搜索