GRUB的命令,如果知道怎么用命令行來(lái)啟動(dòng)操作系統,那理解menu.lst的寫(xiě)法也不難;也就是說(shuō)在開(kāi)機的時(shí)候,不用GRUB的菜單,通過(guò)GRUB的命令也是一樣能把操作系統引導起來(lái)。因為menu.lst的內容就是GRUB的一個(gè)一個(gè)的指令集合;是不是Linux這玩意很神奇?
1、為什么需要學(xué)習GRUB的命令行;
當我們把GRUB的menu.lst寫(xiě)錯的時(shí)候,或者丟掉了menu.lst的時(shí),比如在開(kāi)機的時(shí)候,GRUB會(huì )出現grub>類(lèi)似的命令提示符,這時(shí)需要我們用命令行啟動(dòng)系統;當然您可以不用定義GRUB的菜單 ,直接用命令行來(lái)啟動(dòng)系統,比如我現在就是,為了寫(xiě)GRUB的文檔,就把menu.lst 刪除了,直接用命令來(lái)啟動(dòng)系統;
2、用命令行來(lái)引導Linux操作系統的步驟;通過(guò)命令行來(lái)引導操作系統的流程,也沒(méi)有什么難的;無(wú)非是把指令手工輸入到grub>提示符的后面;在這個(gè)過(guò)程中,tab鍵的命令補齊功能就顯得很重要了。如果您不知道有哪些命令,可以輸入help;
1)進(jìn)入GRUB的命令行模式 grub>
如果開(kāi)機時(shí),GRUB出現的是grub>,說(shuō)明你沒(méi)有/etc/grub/menu.lst ,您需要自己寫(xiě)一個(gè)才會(huì )GRUB的菜單,讓我們來(lái)選擇進(jìn)入哪個(gè)系統。如果有GRUB的菜單,您可以按Ctrl+c組合鍵進(jìn)入GRUB的命令行模式,會(huì )出現grub> 提示符;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]如果需要得到某個(gè)指令的幫助,就在 help 后面空一格,然后輸入指令,比如;grub>help kernel
3)cat的用法;cat指令是用來(lái)查看文件內容的,有時(shí)我們不知道Linux的/boot分區,以及/根分區所在的位置,要查看/etc/fstab的內容來(lái)得知,這時(shí),我們就要用到cat (hd[0-n],y)/etc/fstab 來(lái)獲得這些內容;注意要學(xué)會(huì )用tab鍵命令補齊的功能;grub> cat ( 按tab 鍵會(huì )出來(lái)hd0或hd1之類(lèi)的;
grub> cat (hd0, 注:輸入hd0,然后再按tab鍵;會(huì )出來(lái)分區之類(lèi)的;
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有的弟兄可能會(huì )說(shuō),我不知道Linux安裝在了哪個(gè)分區。那根據文件系統來(lái)判斷一個(gè)一個(gè)的嘗試總可以吧我;只要能cat出/etc/fstab就能為以后引導帶來(lái)方便;主要查看/etc/fstab中的內容,主要是Linux的/分區及/boot是否是獨立的分區;如果沒(méi)有/boot類(lèi)似的行,證明/boot和Linux的/處于同一個(gè)硬盤(pán)分區;比如上面的例子中LABEL=/ 這行是極為重要的;說(shuō)明Linux系統就安在標簽為LABEL=/的分區中;如果您的Linux系統/boot和/沒(méi)有位于同一個(gè)分區,可能cat (hd[a-n],y) 查到的是類(lèi)似下面的;LABEL=/ / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
4) root (hd[0-n,y) 指令來(lái)指定/boot所在的分區;其實(shí)這個(gè)root (hd[0,n],y)是可以省略的,如果省略了,我們要在kerenl 命令中指定;我們前面已經(jīng)說(shuō)過(guò) (hd[0-n],y) 硬盤(pán)分區的表示方法的用途;主要是用來(lái)指定 /boot所在的分區;比如我們確認/boot和 (hd0,6),所以就可以這樣來(lái)輸入root (hd0,6)grub> root (hd0,6)如果發(fā)現不對,可以重新來(lái)過(guò);沒(méi)有什么大不了的;
5) kernel 指令,用來(lái)指定Linux的內核,及/所在的分區;kernel 這個(gè)指令可能初學(xué)者有點(diǎn)怕,不知道內核在哪個(gè)分區,及內核文件名的全稱(chēng)是什么。不要忘記tab鍵的命令補齊的應用;
如果我們已經(jīng)通過(guò)root (hd[0-n],y) 指定了/boot所在的分區,語(yǔ)法有兩個(gè):
如果/boot和Linux的/位于同一個(gè)分區,應該是下面的一種格式;
kernel /boot/vmlinuz在這里按tab鍵來(lái)補齊,就看到內核全稱(chēng)了 ro root=/dev/hd[a-z]X
如果/boot有自己獨立的分區,應該是;
kernel /vmlinuz在這里按tab鍵來(lái)補齊,就看到內核全稱(chēng)了 ro root=/dev/hd[a-z]X在這里 root=/dev/hd[a-z]X 是Linux 的/根所位于的分區,如果不知道是哪個(gè)分區,就用tab出來(lái)的來(lái)計算,一個(gè)一個(gè)的嘗試;或用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的/在哪個(gè)具體的分區,用root=/dev/hd[a-z]X來(lái)指定也行。比如下面的一行也是可以的;grub> kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/hda7也可以把/boot所在的分區的指定 root (hd[0-n],y)這行省掉,直接在kernel 中指定/boot所在的分區;所以就在下面的語(yǔ)法;如果是/boot和Linux的根同處一個(gè)分區;kernel (hd[0-n],y)/boot/vmlinuz ro root=/dev/hd[a-z]X比如:grub>kernel 如果是/boot和Linux所在的根不在一個(gè)分區;則是;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 命令行來(lái)指定initrd文件;grub> initrd /boot/initrd在這里tab 來(lái)補齊;
grub> initrd /boot/initrd-2.6.11-1.1369_FC4.img
[Linux-initrd @ 0x2e1000, 0x10e685 bytes]如果/boot是獨立的一個(gè)分區,應該是如下樣子的語(yǔ)法;比如下面的;grub> initrd /initrd在這里tab 來(lái)補齊;
grub> initrd /initrd-2.6.11-1.1369_FC4.img
[Linux-initrd @ 0x2e1000, 0x10e685 bytes]
7)boot 引導系統;grub>boot 前面的幾個(gè)步驟都弄好 。就進(jìn)入引導;嘗試一下就知道了。。
8)引導Linux系統實(shí)例全程回放;實(shí)例:/boot和Linux的/處于同一個(gè)硬盤(pán)分區;grub> cat (hd0,6)/etc/fstab
# This file is edited by fstab-sync - see 'man fstab-sync' for details
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
grub> root (hd0,6)
Filesystem type is ext2fs, partition type 0x83
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
memtest86+-1.55.1 xen-syms xen.gz
grub> kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/hda7 注:輸入
[Linux-bzImage, setup=0x1e00, size=0x18e473]
grub> initrd /boot/在這里按tab補齊
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
memtest86+-1.55.1 xen-syms xen.gz
grub> initrd /boot/initrd-2.6.11-1.1369_FC4.img 注;輸入intrd文件名的全名;
[Linux-initrd @ 0x2e1000, 0x10e685 bytes]
grub> boot我們指定Linux的根時(shí),可以用cat出來(lái)的fstab的內容中Linux的/分區文件系統標簽來(lái)替代;也就是kernel 那行中 root=/dev/hd[a-z]X; grub> cat (hd0,6)/etc/fstab
# This file is edited by fstab-sync - see 'man fstab-sync' for details
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
grub> root (hd0,6)
Filesystem type is ext2fs, partition type 0x83
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
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]
grub> initrd /boot/在這里按tab補齊
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> initrd /boot/initrd-2.6.11-1.1369_FC4.img 注;輸入intrd文件名的全名;
[Linux-initrd @ 0x2e1000, 0x10e685 bytes]
grub> boot如果是/boot和Linux的根分區不在同一個(gè)分區,要把kernel和initrd 指令中的/boot去掉,也就是/vmlinuzMMMMMM 或 /initrdNNNN也可以不用root (hd[0-n]來(lái)指定/boot所在分區,要在kernel 和initrd 中指定;比如Linux的/根所位于的分區和/boot所位于的分區都是(hd0,6),并且我們cat出來(lái)的/etc/fstab是Linux的/根分區的文件系統的標簽為LABEL=/,引導操作系統的例子如下;grub>kernel (hd0,6)/boot/vmlinuz-2.6.11-1.1369_FC4 ro root=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_FC4 ro root=/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 出來(lái)的/etc/fstab 中/分區的標簽為 LABEL=/。下面的兩種方法都可以引導;grub>kernel (hd0,5)/vmlinuz-2.6.11-1.1369_FC4 ro root=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_FC4 ro root=/dev/hda7
grub>initrd (hd0,5)/initrd-2.6.11-1.1369_FC4.img
grub>boot
系統引導管理器GRUB--深入學(xué)習
來(lái)源: ChinaUnix博客 日期: 2007.07.07 11:27 (共有0條評論) 我要評論
GRUB軟件包版本選擇和安裝;
1、GRUB的版本選擇,Linux版本的GRUB及Windows版本的GRUB的說(shuō)明;
GRUB不但有Linux版本,也有Windows版本;現我們一一介紹;
如前面所說(shuō),目前在在Unix類(lèi)的操作系統中,大多是都有GRUB;GRUB幾乎能引導所有X86架構的操作系統;功能之強,使用簡(jiǎn)單是GRUB最大的賣(mài)點(diǎn);由于Windows 操作系統的先入為主的優(yōu)勢,使得大家對Windows的NTLOADER了解的比較多,而對開(kāi)源社區的GRUB顯得有點(diǎn)寞生,由此而帶來(lái)使用上的“心理恐懼”;究其初學(xué)者對GRUB“恐懼”的主要原因還是對GRUB沒(méi)有太多的了解和深入;無(wú)論是WINGRUB還是Linux版本的GRUB,最方便的還是對GRUB命令行的操作;一談到命令行(Command)的操作,可能初學(xué)者對此恐懼;其實(shí)沒(méi)有什么難的,象北南這樣低級的寫(xiě)手,還能操作得起來(lái),您也應該能行;
2、GRUB的Windows版本WINGRUB;
請參考:
《以WINGRUB 引導安裝Fedora 4.0 為例,詳述用WINGRUB來(lái)引導Linux的安裝》
3、GRUB的Linux版本軟件包的安裝;
其實(shí)對于Linux的GRUB,幾乎所有的Linux主流發(fā)行版都有打包,如果您安裝了Linux,并且在開(kāi)機后出現GRUB字樣的,證明您已經(jīng)安裝了GRUB;而無(wú)需再次安裝;Linux的GRUB軟件包安裝部份并不是本文的重點(diǎn);
如果您的Linux系統沒(méi)有安裝GRUB,或者采用的是LILO,而您想用GRUB,可以用系統安裝盤(pán)自帶GRUB軟件包來(lái)安裝,或者到相關(guān)發(fā)行版本的軟件倉庫下載后安裝;
GRUB 的Linux版本目前在各大發(fā)行版中都有打包;比如Fedora/Redhat/Centos/Mandrive/Mandriva/SuSE等以RPM包管理機制的系統,可以通過(guò)如下的命令來(lái)安裝;
請參考
《Fedora / Redhat 軟件包管理指南》
[root@localhost ~]# rpm -ivh grub*.rpm
如果是Slackware 您可以用如下的辦法來(lái)安裝;
[root@localhost ~]# installpkg grub*.tgz
其它的發(fā)行版本請用其自己特色的軟件包管理工具來(lái)安裝;
當然您也可以通過(guò)源碼包,在任何Linux的發(fā)行版上安裝;至于源碼包的安裝方法;
請參考:
《如何編譯安裝源碼包軟件》
[root@localhost ~]#tar zxvf grub*.tar.gz
[root@localhost ~]#cd grub-xxx
[root@localhost ~]#./configure;make;make install
確認您是否成功安裝了GRUB,您可以測試是否有如下兩個(gè)命令;
[root@localhost ~]# grub
[root@localhost ~]# grub-install
如果您不能找到這兩個(gè)命令,可能您的可執行程序的路徑?jīng)]有設置;
請參考:
《設置可執行程序路徑》
,當然您可以用絕對路徑;比如下面的;
[root@localhost ~]# /usr/sbin/grub
[root@localhost ~]# /usr/sbin/grub-install
如果您還是找不到GRUB軟件包安裝在哪了;您可以用下面的命令來(lái)解決和查找;
[root@localhost ~]# updatedb 注:這個(gè)要花很長(cháng)時(shí)間;是索引slocate 的庫,然后再通過(guò)locate來(lái)查找;
[root@localhost ~]# locate grub
比如找到的是有類(lèi)似如下的;
[root@localhost ~]# locate grub
/sbin/grub-md5-crypt
/sbin/grub
/sbin/grub-install
/sbin/grub-terminfo
在一般情況下,在路徑中帶有bin或sbin中字樣的,這些路徑下都是可執行程序;sbin 是超級權限用戶(hù)才能使用的管理命令;要使用這些命令一般的情況下得切換到root用戶(hù)下才能使用;比如
[beinan@localhost ~]$ su - 注:切換到root用戶(hù),并且切換到其家目錄;
Password:
[root@localhost ~]#/sbin/grub 注:用絕對路徑來(lái)運行grub命令;
三、在Linux中,GRUB的配置中的安裝和寫(xiě)入硬盤(pán)的MBR;
1、在Linux中,GRUB配置過(guò)程中的安裝grub-install;
grub-install 命令有何用呢?其實(shí)就是把我們前面已經(jīng)安裝的軟件包中的一些文件復制到 /boot/grub中;對于新安裝GRUB軟件包后,也是一個(gè)必經(jīng)的過(guò)程;我們前面所說(shuō)的GRUB軟件包的安裝;而現在我們說(shuō)的是GRUB配置的過(guò)程中的安裝;雖然在洋文中都是install ,但表達的意思是不一樣的;
我們首先要運行 fdisk -l 來(lái)確認到底是硬盤(pán)的標識;
這個(gè)過(guò)程主要是確認硬盤(pán)的標識是哪個(gè)調備,到底是/dev/hda還是/dev/hdb 還是其它的;
[root@localhost ~]# fdisk -l
Disk /dev/hda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 970 7791493+ 7 HPFS/NTFS
/dev/hda2 971 9729 70356667+ 5 Extended
/dev/hda5 971 2915 15623181 b W95 FAT32
/dev/hda6 2916 4131 9767488+ 83 Linux
/dev/hda7 4132 5590 11719386 83 Linux
/dev/hda8 5591 6806 9767488+ 83 Linux
/dev/hda9 6807 9657 22900626 83 Linux
/dev/hda10 9658 9729 578308+ 82 Linux swap / Solaris
如果通過(guò)fdisk -l 出現有/dev/hda字樣的,我們就要用下面的命令來(lái)安裝;
[root@localhost ~]# grub-install /dev/hda
Installation finished. No error reported.
This is the contents of the device map /boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install'.
(fd0) /dev/fd0
(hd0) /dev/hda
如果是您fdisk -l 出現的有/dev/hdb呢,那就如下運行;
[root@localhost ~]# grub-install /dev/hdb
如果既有/dev/hda和/dev/hdb 就安裝到/dev/hda中;
[root@localhost ~]# grub-install /dev/hda
值得注意的是如果您有一個(gè)/boot分區,應該用如下的辦法來(lái)安裝;
[root@localhost ~]#grub-install --root-directory=/boot /dev/hda
[root@localhost ~]#grub-install --root-directory=/boot /dev/hdb
注解:具體是/dev/hda還是/dev/hdb,請以fdisk -l 為準;如果兩個(gè)都有,就看您把/boot分區是放在第一塊硬盤(pán)還是第二塊硬盤(pán)上了,以實(shí)際情況為準;
2、設定GRUB的/boot分區并寫(xiě)入MBR;;
在Linux中,GRUB軟件包的安裝,及在配置過(guò)程中安裝grub到 /boot中還是不夠的, 還要把GRUB,寫(xiě)入MBR才行;有時(shí)我們重新安裝了Windows,Windows會(huì )把MBR 重寫(xiě),這樣GRUB就消失了;如果您出現這樣的情況,就要進(jìn)行這個(gè)過(guò)程;
[root@localhost ~]# grub
會(huì )出現grub>提示符,這是grub命令行模式 ,如果能在開(kāi)機中出現提示符,沒(méi)有引導不起來(lái)的系統,除非您的系統破壞的極為嚴重。如果僅僅是GRUB被破壞了,GRUB命令行是能讓操作系統引導起來(lái)的;
接著(zhù)看例子,我們要找到 /boot/grub/stage1的,在grub>后面輸入;
grub> find /boot/grub/stage1
(hd0,6)
(fd0) 注:這個(gè)是軟驅?zhuān)滑F在很少用軟驅了,如果您有這方面的需要,自己看GRUB的DOC吧;
注解:
(hd0,6) 這是/boot所在的分區;不要誤解為是Linux 的/所在的分區,這是值得注意的;
(fd0) 注:這個(gè)是軟驅?zhuān)滑F在很少用軟驅了,如果您有這方面的需要,自己看GRUB的DOC吧;
grub>root (hd0,6) 注:這是/boot所在的分區;
grub>setup (hd0) 注:把GRUB寫(xiě)到MBR上;
注解:
上面這步驟是根據 find /boot/stage1而來(lái)的,仔細看一下就明白了;現在我們一般安裝很少會(huì )把/boot分區列為一個(gè)單獨的分區;不過(guò)有的弟兄可能也喜歡這么做;所以還是有必要說(shuō)一下為好;
四、GRUB的配置文件的menu.lst的寫(xiě)法;
對于GRUB來(lái)說(shuō),如果沒(méi)有配置menu.lst,無(wú)論是Linux版本的GRUB,還是WINGRUB,都會(huì )有命令行可用,通過(guò)命令行是一樣能把操作系統引導起來(lái)的;有些弟兄總以為menu.lst 配置錯了, 或者在機器啟動(dòng)后出現grub>命令行模式就要重新安裝系統,其實(shí)根本沒(méi)有這個(gè)必要;只要學(xué)會(huì )GRUB的命令行的用法,根本沒(méi)有必要重裝系統;
menu.lst 位于/boot/grub目錄中,也就是/boot/grub/menu.lst 文件;您可以用vi或您喜歡的編輯器來(lái)編輯他;如果您不會(huì )用vi,還是去學(xué)習一下吧;簡(jiǎn)單的用法怎么也得會(huì ),對不對?畢竟這個(gè)文檔不是講vi的用法的;
有的弟兄會(huì )說(shuō),我沒(méi)有menu.lst怎么辦?那就創(chuàng )建一個(gè);用下面的命令;
[root@localhost ~]# touch /boot/grub/menu.lst
然后我們再做一個(gè)/boot/grub/menu.lst 的鏈接 /boot/grub/grub.conf
[root@localhost ~]# cd /boot/grub
[root@localhost ~]# ln -s menu.lst grub.conf
現在我們來(lái)寫(xiě)GRUB的menu.lst了,因為/boot/grub/grub.conf是 /boot/grub/menu.lst的鏈接文件,改哪個(gè)都行。鏈接文件相當于Windows的快捷方式,這樣可能能更好的理解;
1、menu.lst的寫(xiě)法之一;
首先我們看一下我的Fedora 4.0 中的/boot/grub/menu.lst 的內容;
default=0
timeout=5
#splashimage=(hd0,6)/boot/grub/splash.xpm.gz
hiddenmenu
title Fedora Core (2.6.11-1.1369_FC4)
root (hd0,6)
kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/
initrd /boot/initrd-2.6.11-1.1369_FC4.img
title WinXp
rootnoverify (hd0,0)
chainloader +1
注解:
default=0
default=0 是默認啟動(dòng)哪個(gè)系統,從0開(kāi)始;每個(gè)操作系統的啟動(dòng)的定義都從title開(kāi)始的,第一個(gè)title 在GRUB的啟動(dòng)菜單上顯示為0,第二個(gè)啟動(dòng)為1,以此類(lèi)推;
timeout=5
注:表示在開(kāi)機后,GRUB畫(huà)面出現幾秒后開(kāi)始以默認啟動(dòng);如果在啟動(dòng)時(shí),移動(dòng)上下鍵,則解除這一規則;
#splashimage=(hd0,6)/boot/grub/splash.xpm.gz 注:GRUB的背景畫(huà)面,這個(gè)是可選項;我不喜歡GRUB的背景畫(huà)面,所以加#號注掉,也可以刪除;
hiddenmenu
注解:隱藏GRUB的啟動(dòng)菜單,這項也是可選的,也可以用#號注掉;
一般的情況下對Linux操作系統的啟動(dòng),一般要包括四行;title 行;root行;kernel 行;initrd 行;
1)在menu.lst中 ,通過(guò) root (hd[0-n],y)來(lái)指定/boot 所在的分區;
title XXXXX 注:title 后面加一個(gè)空格,title 是小寫(xiě)的,后面可以自己定義;比如FC4,自己定義一個(gè)名字就行;
root (hd[0-n],y) ,在本例中,我們看到的是root (hd0,6) ,root (hd[0-n],y)表示的是/boot所在的分區;有時(shí)我們安裝Linux的時(shí)候,大多是不設置/boot的,這時(shí)/boot和/所在的同一個(gè)分區; 這個(gè)root (hd[0-n],y)很重要,因為/boot目錄中雖然有grub目錄,最為重要的是還有kernel 和initrd文件,這是Linux能啟動(dòng)起來(lái)最為重要東西;
有的弟兄會(huì )問(wèn),root (hd[0-n],y)是怎么來(lái)的?
請參考:
《在Linux系統中存儲設備的兩種表示方法》
2)在menu.lst中,kernel 命令行的寫(xiě)法;
kernel 一行,是通指定內核及Linux的/分區所在位置;
比如例子中是;
kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/
在這里以kernel 起始,指定Linux的內核的文件所處的絕對路徑;因為內核是處在/boot目錄中的, 如果/boot是獨立的一個(gè)分區,則需要把boot省略;如果/boot是獨立的分區,這行要寫(xiě)成:
kernel /vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/
因為/boot所處的分區已經(jīng)在title 下一行root (hd[0-n],y)中指定了,所以就無(wú)需要再指明內核處在哪個(gè)分區了;另外Linux系統的硬盤(pán)分區的掛載配置文件在/etc/fstab ,原理是通過(guò) mount /dev/hd[a-z]X /boot 來(lái)進(jìn)行的;您可以對照著(zhù)來(lái)理解;
ro 表示只讀; root=LABEL=/ 來(lái)表示Linux的根所處的分區。LABEL=/ 這是硬盤(pán)分區格式化為相應文件系統后所加的標簽;如果您不了解什么是標簽,也可以直接以/dev/hd[a-z]X 或者/dev/sd[a-z]X來(lái)表示;就看您的Linux是根分區是在哪個(gè)分區了。比如我的是在/dev/hda7 , 那這里就可以寫(xiě)成root=/dev/hda7;
如果查看系統運行所掛載的分區,請用 df -lh 來(lái)查看,就能明白是不是/boot是獨立的分區,或者查看/etc/fstab也能知道;
[root@localhost ~]# df -lh
Filesystem 容量 已用 可用 已用% 掛載點(diǎn)
/dev/hda7 11G 9.2G 1.2G 90% /
/dev/shm 236M 0 236M 0% /dev/shm
在這個(gè)例子中,我們可以發(fā)現 /boot并沒(méi)有出現只有/dev/hda7,這表示/boot并不是獨立的一個(gè)分區;所有的東西都包含在/中;于是我們在/boot中查看內核版本;
[root@localhost ~]# ls /boot/vmlinuz*
/boot/vmlinuz-2.6.11-1.1369_FC4 注:看到內核vmlinuz所處的目錄;
于是我們就可以這樣kernel 這行了;
kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/hda7
3)initrd 命令行的寫(xiě)法;
如果是/boot獨立一個(gè)分區,initrd 一行要把/boot中省略;如果/boot不是處于一個(gè)分區,而是和Linux的/分區處于同一分區,不應該省略;
比如我們在2)中用的例子;現在拿到這里,我們應該首先查看 /boot中的initrd的文件名到底是什么;
[root@localhost ~]# ls /boot/initrd*
/boot/initrd-2.6.11-1.1369_FC4.img
如果是通過(guò)df -lh 得知或查看/etc/fstab 也行, 得知/boot是獨立的分區;這時(shí)initrd 應該寫(xiě)成;
initrd /initrd-2.6.11-1.1369_FC4.img
如果是 /boot不是獨處一個(gè)分區,而是在/同一處一個(gè)分區, 則要寫(xiě)成;
initrd /boot/initrd-2.6.11-1.1369_FC4.img
4)menu.lst第一種寫(xiě)法的總結和實(shí)踐;
在這里,我們只說(shuō)重要的,不重要的就一帶而過(guò)了;
1]用fdisk -l ;df -lh ;more /etc/fstab來(lái)確認分區情況;
我們過(guò)fdisk -l ;df -lh ; more /etc/fstab 來(lái)確認/boot所在的分區,及Linux的根分區所在位置;
比如我們確認/boot和Linux的/分區同處一個(gè)分區;
[root@localhost ~]# df -lh
Filesystem 容量 已用 可用 已用% 掛載點(diǎn)
/dev/hda7 11G 9.2G 1.2G 90% /
/dev/shm 236M 0 236M 0% /dev/shm
然后我們/etc/fstab 中,查看/分所在的分區或分區標簽是什么;
[root@localhost ~]# more /etc/fstab
# This file is edited by fstab-sync - see 'man fstab-sync' for details
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
經(jīng)過(guò)上面的df -lh 和more /etc/fstab 的對照中得知,/boot并是獨處一個(gè)分區,而是和/在同一個(gè)分區;這個(gè)Linux系統安裝在/dev/hda7上,文件系統(此分區)的標簽為LABEL=/ ,/boot也是處于/dev/hda7 ,/dev/hda7也可以說(shuō)是 root (hd0,6);
2]查看內核vmlinuz的和initrd文件名的全稱(chēng);
[root@localhost ~]# ls -lh /boot/vmlinuz*
-rw-r--r-- 1 root root 1.6M 2005-06-03 /boot/vmlinuz-2.6.11-1.1369_FC4
[root@localhost ~]# ls -lh /boot/initrd*
-rw-r--r-- 1 root root 1.1M 11月 26 22:30 /boot/initrd-2.6.11-1.1369_FC4.img
3]開(kāi)始寫(xiě)menu.lst ;
我們根據上面所提到的,可以寫(xiě)成如下的樣子;
default=0
timeout=5
title FC4
root (hd0,6)
kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/
initrd /boot/initrd-2.6.11-1.1369_FC4.img
也可以寫(xiě)成;
default=0
timeout=5
title FC4
root (hd0,6)
kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/hda7
initrd /boot/initrd-2.6.11-1.1369_FC4.img
注解:上面兩個(gè)不同之處在于一指定Linux的根/所在的分區時(shí),一個(gè)是用了文件系統的標簽,另一個(gè)沒(méi)有用標簽;
2、menu.lst的寫(xiě)法之二,精簡(jiǎn)型;
本寫(xiě)法主要是把指定/boot所位于的所分區直接寫(xiě)入kernel 指令行;這樣就省略了通過(guò)root (hd[0-n],y)來(lái)指定/boot所位于的分區;
1)第一種情況:/boot和Linux的/根分區在同一個(gè)分區;
有前面的那么多的講解,menu.lst寫(xiě)法之二就好理解多了;也得分兩種情況,咱們先把/boot并不是獨處一個(gè)分區,而是和Linux的根分區處于同一個(gè)分區;我們以 4)menu.lst第一種方法的寫(xiě)法總結 的實(shí)例為例子;
default=0
timeout=5
title FC4x
kernel (hd0,6)/boot/vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/hda7
initrd (hd0,6)/boot/initrd-2.6.11-1.1369_FC4.img
注解:
title FC4x 注:自己為這個(gè)Linux 起個(gè)簡(jiǎn)單的名,以title開(kāi)頭,然后一個(gè)空格,后面就自己發(fā)揮吧,FC4或FC4x都行;
kernel 空格 (hd0,6)/boot/vmlinuz-2.6.11-1.1369_FC4 空格 ro 空格 root=/dev/hda7
kernel 這行這樣理解 kernel (boot所在的分區)/boot/內核文件件全稱(chēng) ro root=Linux根所位于的分區或標簽
initrd 空格 (hd0,6)/boot/initrd-2.6.11-1.1369_FC4.img
initrd 這行可以這樣理解 initrd (/boot所在的分區)/boot/內核文件名全稱(chēng)
2)第二種情況:/boot獨立一個(gè)分區,和Linux的根分區不是同一個(gè)分區;
比如我們查看到df -lh 得到的是
[root@localhost ~]# df -lh
Filesystem 容量 已用 可用 已用% 掛載點(diǎn)
/dev/hda6 200M 120M 80M 60% /boot
/dev/hda7 11G 9.2G 1.2G 90% /
我們再進(jìn)一行查看/etc/fstab 得知;
LABEL=/ / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
所以我們應該寫(xiě)成如下的;
title FC4x
kernel (hd0,5)/vmlinuz-2.6.11-1.1369_FC4 ro root=LABEL=/
initrd (hd0,5)/initrd-2.6.11-1.1369_FC4.img
因為Linux的根分區是/dev/hda7,通過(guò)/etc/fstab和df -h的內容得知標簽為 LABEL=/的分區就是/dev/hda7 ,所以有;
title FC4x
kernel (hd0,5)/vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/hda7
initrd (hd0,5)/initrd-2.6.11-1.1369_FC4.img
五、通過(guò)GRUB命令行來(lái)啟動(dòng)Linux操作系統;
GRUB的命令行才是王道,如果知道怎么用命令行來(lái)啟動(dòng)操作系統,那理解menu.lst的寫(xiě)法也不難;也就是說(shuō)在開(kāi)機的時(shí)候,不用GRUB的菜單,通過(guò)GRUB的命令也是一樣能把操作系統引導起來(lái)。
因為menu.lst的內容就是GRUB的一個(gè)一個(gè)的指令集合;是不是Linux這玩意很神奇?
1、為什么需要學(xué)習GRUB的命令行;
當我們把GRUB的menu.lst寫(xiě)錯的時(shí)候,或者丟掉了menu.lst的時(shí),比如在開(kāi)機的時(shí)候,GRUB會(huì )出現grub>類(lèi)似的命令提示符,這時(shí)需要我們用命令行啟動(dòng)系統;當然您可以不用定義GRUB的菜單 ,直接用命令行來(lái)啟動(dòng)系統,比如我現在就是,為了寫(xiě)GRUB的文檔,就把menu.lst 刪除了,直接用命令來(lái)啟動(dòng)系統;
2、用命令行來(lái)引導Linux操作系統的步驟;
通過(guò)命令行來(lái)引導操作系統的流程,也沒(méi)有什么難的;無(wú)非是把指令手工輸入到grub>提示符的后面;在這個(gè)過(guò)程中,tab鍵的命令補齊功能就顯得很重要了。如果您不知道有哪些命令,可以輸入help;
1)進(jìn)入GRUB的命令行模式 grub>
如果開(kāi)機時(shí),GRUB出現的是grub>,說(shuō)明你沒(méi)有/etc/grub/menu.lst ,您需要自己寫(xiě)一個(gè)才會(huì )GRUB的菜單,讓我們來(lái)選擇進(jìn)入哪個(gè)系統。如果有GRUB的菜單,您可以按Ctrl+c組合鍵進(jìn)入GRUB的命令行模式,會(huì )出現grub> 提示符;
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]
如果需要得到某個(gè)指令的幫助,就在 help 后面空一格,然后輸入指令,比如;
grub>help kernel
3)cat的用法;
cat指令是用來(lái)查看文件內容的,有時(shí)我們不知道Linux的/boot分區,以及/根分區所在的位置,要查看/etc/fstab的內容來(lái)得知,這時(shí),我們就要用到cat (hd[0-n],y)/etc/fstab 來(lái)獲得這些內容;注意要學(xué)會(huì )用tab鍵命令補齊的功能;
grub> cat ( 按tab 鍵會(huì )出來(lái)hd0或hd1之類(lèi)的;
grub> cat (hd0, 注:輸入hd0,然后再按tab鍵;會(huì )出來(lái)分區之類(lèi)的;
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
有的弟兄可能會(huì )說(shuō),我不知道Linux安裝在了哪個(gè)分區。那根據文件系統來(lái)判斷一個(gè)一個(gè)的嘗試總可以吧我;只要能cat出/etc/fstab就能為以后引導帶來(lái)方便;
主要查看/etc/fstab中的內容,主要是Linux的/分區及/boot是否是獨立的分區;如果沒(méi)有/boot類(lèi)似的行,證明/boot和Linux的/處于同一個(gè)硬盤(pán)分區;比如上面的例子中LABEL=/ 這行是極為重要的;說(shuō)明Linux系統就安在標簽為LABEL=/的分區中;
如果您的Linux系統/boot和/沒(méi)有位于同一個(gè)分區,可能cat (hd[a-n],y) 查到的是類(lèi)似下面的;
LABEL=/ / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
4) root (hd[0-n,y) 指令來(lái)指定/boot所在的分區;
其實(shí)這個(gè)root (hd[0,n],y)是可以省略的,如果省略了,我們要在kerenl 命令中指定;我們前面已經(jīng)說(shuō)過(guò) (hd[0-n],y) 硬盤(pán)分區的表示方法的用途;主要是用來(lái)指定 /boot所在的分區;
比如我們確認/boot和 (hd0,6),所以就可以這樣來(lái)輸入root (hd0,6)
grub> root (hd0,6)
如果發(fā)現不對,可以重新來(lái)過(guò);沒(méi)有什么大不了的;
5) kernel 指令,用來(lái)指定Linux的內核,及/所在的分區;
kernel 這個(gè)指令可能初學(xué)者有點(diǎn)怕,不知道內核在哪個(gè)分區,及內核文件名的全稱(chēng)是什么。不要忘記tab鍵的命令補齊的應用;
如果我們已經(jīng)通過(guò)root (hd[0-n],y) 指定了/boot所在的分區,語(yǔ)法有兩個(gè):
如果/boot和Linux的/位于同一個(gè)分區,應該是下面的一種格式;
kernel /boot/vmlinuz在這里按tab鍵來(lái)補齊,就看到內核全稱(chēng)了 ro root=/dev/hd[a-z]X
如果/boot有自己獨立的分區,應該是;
kernel /vmlinuz在這里按tab鍵來(lái)補齊,就看到內核全稱(chēng)了 ro root=/dev/hd[a-z]X
在這里 root=/dev/hd[a-z]X 是Linux 的/根所位于的分區,如果不知道是哪個(gè)分區,就用tab出來(lái)的來(lái)計算,一個(gè)一個(gè)的嘗試;或用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的/在哪個(gè)具體的分區,用root=/dev/hd[a-z]X來(lái)指定也行。比如下面的一行也是可以的;
grub> kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/hda7
也可以把/boot所在的分區的指定 root (hd[0-n],y)這行省掉,直接在kernel 中指定/boot所在的分區;所以就在下面的語(yǔ)法;
如果是/boot和Linux的根同處一個(gè)分區;
kernel (hd[0-n],y)/boot/vmlinuz ro root=/dev/hd[a-z]X
比如:
grub>kernel
如果是/boot和Linux所在的根不在一個(gè)分區;則是;
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 命令行來(lái)指定initrd文件;
grub> initrd /boot/initrd在這里tab 來(lái)補齊;
grub> initrd /boot/initrd-2.6.11-1.1369_FC4.img
[Linux-initrd @ 0x2e1000, 0x10e685 bytes]
如果/boot是獨立的一個(gè)分區,應該是如下樣子的語(yǔ)法;比如下面的;
grub> initrd /initrd在這里tab 來(lái)補齊;
grub> initrd /initrd-2.6.11-1.1369_FC4.img
[Linux-initrd @ 0x2e1000, 0x10e685 bytes]
7)boot 引導系統;
grub>boot
前面的幾個(gè)步驟都弄好 。就進(jìn)入引導;嘗試一下就知道了。。
8)引導Linux系統實(shí)例全程回放;
實(shí)例:/boot和Linux的/處于同一個(gè)硬盤(pán)分區;
grub> cat (hd0,6)/etc/fstab
# This file is edited by fstab-sync - see 'man fstab-sync' for details
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
grub> root (hd0,6)
Filesystem type is ext2fs, partition type 0x83
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
memtest86+-1.55.1 xen-syms xen.gz
grub> kernel /boot/vmlinuz-2.6.11-1.1369_FC4 ro root=/dev/hda7 注:輸入
[Linux-bzImage, setup=0x1e00, size=0x18e473]
grub> initrd /boot/在這里按tab補齊
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
memtest86+-1.55.1 xen-syms xen.gz
grub> initrd /boot/initrd-2.6.11-1.1369_FC4.img 注;輸入intrd文件名的全名;
[Linux-initrd @ 0x2e1000, 0x10e685 bytes]
grub> boot
我們指定Linux的根時(shí),可以用cat出來(lái)的fstab的內容中Linux的/分區文件系統標簽來(lái)替代;也就是kernel 那行中 root=/dev/hd[a-z]X;
grub> cat (hd0,6)/etc/fstab
# This file is edited by fstab-sync - see 'man fstab-sync' for details
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
grub> root (hd0,6)
Filesystem type is ext2fs, partition type 0x83
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
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]
grub> initrd /boot/在這里按tab補齊
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> initrd /boot/initrd-2.6.11-1.1369_FC4.img 注;輸入intrd文件名的全名;
[Linux-initrd @ 0x2e1000, 0x10e685 bytes]
grub> boot
如果是/boot和Linux的根分區不在同一個(gè)分區,要把kernel和initrd 指令中的/boot去掉,也就是/vmlinuzMMMMMM 或 /initrdNNNN
也可以不用root (hd[0-n]來(lái)指定/boot所在分區,要在kernel 和initrd 中指定;比如Linux的/根所位于的分區和/boot所位于的分區都是(hd0,6),并且我們cat出來(lái)的/etc/fstab是Linux的/根分區的文件系統的標簽為LABEL=/,引導操作系統的例子如下;
grub>kernel (hd0,6)/boot/vmlinuz-2.6.11-1.1369_FC4 ro root=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_FC4 ro root=/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 出來(lái)的/etc/fstab 中/分區的標簽為 LABEL=/。下面的兩種方法都可以引導;
grub>kernel (hd0,5)/vmlinuz-2.6.11-1.1369_FC4 ro root=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_FC4 ro root=/dev/hda7
grub>initrd (hd0,5)/initrd-2.6.11-1.1369_FC4.img
grub>boot
六、通過(guò)GRUB引導Windows操作系統;
1、通過(guò)編輯 menu.lst 來(lái)引導Windows 系統;
如果您的Windows所處于的分區在(hd0,0),可以在menu.lst 加如下的一段就能引導起來(lái)了;
title WinXp
rootnoverify (hd0,0)
chainloader +1
如果您的機器有兩塊硬盤(pán),而Windows 位于第二個(gè)硬盤(pán)的第一個(gè)分區,也就是(hd1,0)
您可以用grub的map來(lái)指令來(lái)操作把兩塊硬盤(pán)的序列對調,這樣就不用在BIOS中設置了;在menu.lst中加如下的內容,比如下面的;
title WinXp
map (hd0) (hd1)
map (hd1) (hd0)
rootnoverify (hd0,0)
chainloader +1
makeactive
如果Windows的分區不位于硬盤(pán)的第一個(gè)分區怎么辦呢?比如在(hd0,2);
這個(gè)也好辦吧,把rootnoverify 這行的(hd0,0)改為 (hd0,2)
title WinXp
rootnoverify (hd0,2)
chainloader +1
makeactive
如果Windows的在第二個(gè)硬盤(pán)的某個(gè)分區,比如說(shuō)是位于(hd1,2),則要用到map指令;
title WinXp
map (hd0) (hd1)
map (hd1) (hd0)
rootnoverify (hd1,2)
chainloader +1
makeactive
如果有多個(gè)Windows 系統,怎么才能引導出來(lái)呢?應該用hide 和unhide指令操作;比如我們安裝了兩個(gè)Windows ,一個(gè)是位于(hd0,0)的windows 98 ,另一個(gè)是安裝的是位于(hd0,1)的WindowsXP;這時(shí)我們就要用到hide指令了;
title Win98
unhide (hd0,0)
hide (hd0,1)
rootnoverify (hd0,0)
chainloader +1
makeactive
title WinXP
unhide (hd0,1)
hide (hd0,0)
rootnoverify (hd0,1)
chainloader +1
makeactive
2、通過(guò)GRUB指令來(lái)引導Windows ;
其實(shí)我們會(huì )寫(xiě)menu.lst了,在menu.lst中的除了title外,都是一條條指令;如果我們啟動(dòng)Windows ,只是輸入指令就行了;
比如 Windows的分區在 (hd0,0),我們在開(kāi)機后,按ctrl+c ,進(jìn)入GRUB的命令模式;就可以用下面的
grub> rootnoverify (hd0,0)
grub> chainloader +1
grub> boot
其它同理... ...
七、GRUB丟失或損壞的應對策略;
如果GRUB是Linux版本才出會(huì )這樣的問(wèn)題;WINGRUB可以不寫(xiě)在MBR上;所以不會(huì )出現這樣的問(wèn)題。WINGRUB用起來(lái)比較簡(jiǎn)單。menu.lst 和命令行的用法和Linux版本的GRUB是一樣的;
1、由于重新安裝Windows或其它未知原因而導致GRUB的丟失;
您可以通過(guò)系統安裝盤(pán)、livecd進(jìn)入修復模式;
請參考:
《Linux 系統的單用戶(hù)模式、修復模式、跨控制臺登錄在系統修復中的運用》
首先:您根據前面所說(shuō)grub-install來(lái)安裝GRUB到/boot所在的分區;要仔細看文檔,/boot是不是處于一個(gè)獨立的分區是重要的,執行的命令也不同;
其次:要執行grub ,然后通過(guò) root (hd[0-n],y)來(lái)指定/boot所位于的分區,然后接著(zhù)執行 setup (hd0),這樣就寫(xiě)入MBR了,比如下面的例子;
grub>root (hd0,6)
grub>setup (hd0)
grub>quit
重新引導就會(huì )再次出現MBR的菜單了或命令行的提示符了;
2、如果出現GRUB提示符,而不出現GRUB的菜單,如何引導系統;
存在的問(wèn)題可能是/boot/grub/menu.lst丟失,要自己寫(xiě)一個(gè)才行;您可以用命令行來(lái)啟動(dòng)系統,進(jìn)入系統后寫(xiě)一寫(xiě)menu.lst就OK了。前面已經(jīng)談過(guò)了;
寫(xiě)好后還要建一個(gè)grub.conf的鏈接,如下:
[root@localhost ~]# cd /boot/grub
[root@localhost grub]# ln -s menu.lst grub.conf
Win PE Ubuntu live 雙啟動(dòng)U盤(pán)的制作(Ubuntu U盤(pán)安裝詳解)
Ubuntu的更新比較頻繁,每次更新,都得刻一張盤(pán),太麻煩了,所以想到將其放進(jìn)U盤(pán)安裝,既不用刻盤(pán),攜帶也比較方便,和PE合盤(pán)制成雙啟動(dòng),可以實(shí)現以下功能
1,啟動(dòng)PE后,可以在PE中安裝,XP VistaWindows 7
2,既可以從U盤(pán)啟動(dòng)到PE也可以從U盤(pán)至Live Ubuntu,對系統作簡(jiǎn)單的維護
3,可以從U盤(pán)安裝Ubuntu
以下為制作步驟大綱
1,將U盤(pán)設置為可引導
2,將PE放進(jìn)U盤(pán)交使之能引導至PE
3,將Ubuntu放進(jìn)U盤(pán),并使之能引導Live Ubuntu
需要的軟件
1,grub4dos
2,grubinst
3,Winrar
4,PE鏡像
5,ubuntup安裝鏡像
PE鏡像請自行在論壇下載
Ubuntu鏡像請自行到官網(wǎng)下載
下面開(kāi)始制作
一,將U盤(pán)置為可引導
我使用的是Netac的U盤(pán),帶有讀寫(xiě)保護開(kāi)關(guān),維護機子時(shí)比較方便,避免感染病毒
U盤(pán)是USB-FDD模式,個(gè)人感覺(jué)這個(gè)模式兼容性不好,所以使用了官網(wǎng)上的格式化工具,將其格式為HDD模式
如果使用其他品牌的U盤(pán),可以下載相應的量產(chǎn)工具量產(chǎn)成HDD模式
已經(jīng)格成HDD模式,在磁盤(pán)管理器中顯示的是本地磁盤(pán)
接下來(lái),在系統中將其格式化成FAT32,不要格成NTFS,否則Linux中讀寫(xiě)有麻煩
然后用grubinst,將MBR寫(xiě)入U盤(pán)
打開(kāi)grubinst目錄執行grubinst_gui.exe
在這里一定要當心。
一定要注意磁盤(pán)不要選錯了,寫(xiě)進(jìn)硬盤(pán)就麻煩了
點(diǎn)擊安裝
ok寫(xiě)入成功
然后將grub4dos解壓,將其中的grldr和 menu.lst 兩個(gè)文件復制到U盤(pán)根目錄下
OK,第一步就完成了,現在U盤(pán)已經(jīng)可以引導到GRUB4DOS了
第二步將PE做進(jìn)U盤(pán)中
這里用的是本論壇 Lrbin50版主的PE,在此表示感謝
用winrar將PE鏡像打開(kāi)
將圖中紅框中的文件復制到U盤(pán)根目錄
然后用記事本打U盤(pán)根目錄中的menu.lst
將內容全部清空,然后寫(xiě)入如下代碼
timeout 15
find --set-root /grldr
title Winpe
chainloader /AXPE/SETUPLDR.BIN
復制代碼
保存,退出
OK,現在U盤(pán)可以啟動(dòng)PE
接下來(lái)把UBUNTU 9.04和PE合盤(pán),做成雙啟動(dòng)
在官網(wǎng)上把9.04下載回來(lái)
用WINRAR把鏡像打開(kāi)
打開(kāi)casper目錄
將initrd.gz和vmlinuz兩個(gè)文件復制到U盤(pán)根目錄下
再將ubuntu 9.04的ISO鏡像文件復制到U盤(pán)根目錄下
復制完后的U盤(pán)下應該有這些文件
再用記事本打開(kāi)menu.lst
在剛才編輯的代碼下再加如下代碼
timeout 30
find --set-root /grldr
title Winpe
chainloader /AXPE/SETUPLDR.BIN
title Ubuntu 9.04 Live USB
kernel /vmlinuz boot=casper iso-scan/filename=/ubuntu-9.04-desktop-i386.iso quiet splash ro locale=zh_CN.UTF-8
initrd /initrd.gz
boot 復制代碼
保存退出
現在雙啟動(dòng)U盤(pán)就做好了
重啟電腦,在開(kāi)機啟動(dòng)菜單中選擇U盤(pán)
進(jìn)入gurb啟動(dòng)菜單
選擇啟動(dòng)pe
啟動(dòng)進(jìn)PE了
現在將電腦重啟,選擇U盤(pán)啟動(dòng)后在GRUB菜單選擇UBUNTU
選擇UBUNTU 9.04
好了,現在雙啟動(dòng)U盤(pán)就制作完畢了
可以啟動(dòng)進(jìn)PE,也可以啟動(dòng)進(jìn)UBUNTU live中,進(jìn)行簡(jiǎn)單的維護
U盤(pán)安裝XP VISTA可以在PE中進(jìn)行
如果要在U盤(pán)中安裝ubuntu
在LIVE ubuntu桌面上選擇"安裝"
然后就和光盤(pán)安裝一模一樣的
http://hi.baidu.com/kalcaddle/blog/category/%C4%AC%C8%CF%B7%D6%C0%E0http://cang.baidu.com/do/add(責任編輯:admin)
聯(lián)系客服