久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

轉(zhuǎn):grub2基礎(chǔ)教程

 DCW 2010-11-01
轉(zhuǎn):grub2基礎(chǔ)教程-修訂版
來源: ChinaUnix博客  日期: 2009.12.01 16:01 (共有1條評論) 我要評論
 
grub2基礎(chǔ)教程-修訂版
     
                                 smallapple
目錄
一,、grub2
新特性
二,、grub2
安裝與啟動
三、grub2
配置文件詳解

四,、腳本修改

五,、使用grub2
常見錯誤及修復(fù)方法
一、grub2新特性
1,、grub2grub有很多不同的地方
a)圖形接口
b)使用了模塊機制,,通過動態(tài)加載需要的模塊來擴(kuò)展功能
c)支持腳本語言,例如條件判斷,,循環(huán),、變量和函數(shù)
d)支持rescue模式,可用于系統(tǒng)無法引導(dǎo)的情況
e)國際化語言,。包括支持非ASCII的字符集和類似gettext的消息分類,,字體,圖形控制臺等等
f)有一個靈活的命令行接口,。如果沒有配置文件存在,,GRUB會自動進(jìn)入命令模式
g)針對文件系統(tǒng)、文件、設(shè)備,、驅(qū)動,、終端、命令,、分區(qū)表,、os loder的模塊化、層次化,、基于對象的框架
h)支持多種文件系統(tǒng)格式
i)可訪問已經(jīng)安裝的設(shè)備上的數(shù)據(jù)
j)支持自動解壓
2,、設(shè)備的命名
grub2同樣以fd表示軟盤,hd表示硬盤(包含IDE和SCSI硬盤),。設(shè)備是從0開始編號,,分區(qū)則是從1開始,主分區(qū)從1-4,,邏輯分區(qū)從5開始,,而grub分區(qū)編號是從0開始的。下面給出幾個例子 :
(fd0):表示整個軟盤
(hd0,1):表示BIOS中的第一個硬盤的第1個分區(qū)
(hd0,5)/boot/vmlinuz:表示BIOS中的第一個硬盤的第一個邏輯分區(qū)下的boot目錄下的vmlinuz文件
二,、grub2安裝與啟動
1,、安裝ubuntu9.10時,grub默認(rèn)安裝在第一硬盤(hd0)的mbr,,其實就是把引導(dǎo)文件boot.img寫入硬盤的mbr,,當(dāng)然,用戶也可以選擇不寫入硬盤mbr而是寫入linux分區(qū)的引導(dǎo)扇區(qū),。啟動時根據(jù)mbr所提供信息找到啟動分區(qū)后,,加載分區(qū)內(nèi)的grub核心文件core.img和配置文件grub.cfg,進(jìn)入選擇菜單畫面,,在菜單畫面,,按上下箭號選擇需要系統(tǒng)菜單項,按Enter進(jìn)入選項,。

按e進(jìn)入己選擇菜單的編輯狀態(tài),,在編輯狀態(tài)下,由上下左右箭號來移動光標(biāo),,enter鍵換行,,ctrl+x以編輯的內(nèi)容啟動,ctrl+c進(jìn)命令行狀態(tài),,按Esc退出,,回到菜單項。
在需要使用額外的內(nèi)核參數(shù)啟動時,,比如要加上acpi=off時,,把光標(biāo)移動到linux這一行最后,,在splash后加上一空格再輸入acpi=off,然后按ctrl+x啟動,。

按c進(jìn)入命令行狀態(tài),,按Tab鍵可查看所有可用的命令。

在命令行狀態(tài),,可以根據(jù)需要加載或移除相應(yīng)模塊,,也可用來啟動在菜單沒有顯現(xiàn)的的系統(tǒng)。
比如,,在第一硬盤的第一分區(qū)上裝有windows xp系統(tǒng),,但在菜單上沒顯示出來,我們可以命令行狀態(tài)下輸入命令啟動:
    grub>set root=(hd0,1)
    grub>chainloader +1
    grub>boot
又比如啟動第二硬盤第一邏輯分區(qū)上的ubuntu系統(tǒng):
    grub>set root=(hd1,5)
    grub>linux /boot/vmlinuz-xxx-xxx root=/dev/sdb5
    grub>initrd /boot/initrd.img-xxx-xxx
    grub>boot
其中內(nèi)核vmlinuz和initrd.img的版本號可用按Tab鍵自動查看,。
2,、下面介紹下在grub2中一些常用的命令
    1)help
        查看命令用法,如
    help search:查看search命令詳細(xì)用法
    2)set
        設(shè)置變量值,,如
    set default=0
    set timeout=5
    set root=(hd0,3)等等
        需要調(diào)用變量AA的值時,,使用${AA},如set root=(hd1,1),,則${root}=(hd1,1)
    3)default
        定義默認(rèn)引導(dǎo)的操作系統(tǒng),。0 表示第一個操作系統(tǒng),1表示第2個,,依此類推
    4)timeout
        定義在時間內(nèi)用戶沒有按下鍵盤上的某個按鍵,,自動引導(dǎo)default指定的操作系統(tǒng)。
    5)root
        指定用于啟動系統(tǒng)的分區(qū),。
    6)insmod和rmmod
        加載或移除某模塊,,如
insmod jpeg
insmod png
insmod ntfs
rmmod png

7)drivemap
drivemap兼容grub的map,主要用于只能從第一硬盤(hd0)引導(dǎo)啟動的系統(tǒng)如 win2000 xp 2003,,比如要添加第二硬盤第一分區(qū)上的xp系統(tǒng):
menuentry "Windows XP" {
set root=(hd1,1)
drivemap -s (hd0) ${root}
chainloader +1
}
    8)ls
        列出當(dāng)前的所有設(shè)備。如(hd0),,(hd0,1),,(hd0,5),(hd1),,(hd1,1),,(hd1,2)等
    ls -l
        詳細(xì)列出當(dāng)前的所有設(shè)備。對于分區(qū),,會顯示其label及uuid,。
    ls /
        列出當(dāng)前設(shè)為root的分區(qū)下的文件
    ls (hd1,1)/
        列出(hd1,1)分區(qū)根目錄的文件
    9)search
    search -f /ntldr
        列出根目錄里包含ntldr文件的分區(qū),返回為分區(qū)號
    search -l LINUX
        搜索label是LINUX的分區(qū),。
    search --set -f /ntldr
        搜索根目錄包含ntldr文件的分區(qū)并設(shè)為root,,注意如果多個分區(qū)含有ntldr文件,
    set失去作用。
    10)loopback
    loopback命令可用于建立回放設(shè)備,,如
    loopback lo0 (hd1,1)/abc.iso
        可以使用lo0設(shè)備來訪問abc.iso里的內(nèi)容,,比如說,可以從abc.iso里的軟盤映像中啟動
    loopback lo0 (hd1,1)/aa.iso
    linux (lo0)/memdisk
    initrd (lo0)/abc.img
        要刪除某一回放設(shè)備,,可以使用-d參數(shù):
    loopback -d lo0
    11)pager
        分頁顯示,。
    set pager=1
        顯示滿一頁時暫停,按space繼續(xù)
    set pager=0
        取消分頁顯示
    12)linux
        用linux命令取代grub中的kernel命令
    13)chainloader
        調(diào)用另一個啟動器,,如
    chainloader (hd0,1)+1
        調(diào)用第一硬盤第一分區(qū)引導(dǎo)扇區(qū)內(nèi)的啟動器,,可以是windows或linux的啟動器
三、grub2配置文件詳解
    grub2改用grub.cfg為配置文件,,配置文件包含以下基本內(nèi)容:(紅色為解釋部分)
### BEGIN /etc/grub.d/00_header ###
load_env
#加載變量,,如果在grubenv保存變量,則啟動時裝載
set default="0"
#設(shè)置默認(rèn)引導(dǎo)項,,默認(rèn)值為0
insmod ext2

#插入文件系統(tǒng)支持的模塊,,除了用作啟動的分區(qū)外,其他分區(qū)格式可在menuentry底下再添加
set root=(hd0,8)

# 指定系統(tǒng)root分區(qū),,也就是 / 分區(qū)
search --no-floppy --fs-uuid --set 2d61e5f9-1d2a-4167-a6f1-b991ba00878b

#指定uuid=2d61e5f9-1d2a-4167-a6f1-b991ba00878b的分區(qū)為root分區(qū),,如果前面的分區(qū)號(hd0,8)的#uuid與這里的uuid一致,這兩句作用一樣,,如果不一致,,則指定uuid的起作用。
if loadfont /usr/share/grub/unicode.pf2 ; then
#設(shè)置終端字體,,unicode.pf2支持中文字符顯示
set gfxmode=640x480

#設(shè)置顯示分辨率,,默認(rèn)為640x480,可用800x600,,1024x768,,建議跟你想設(shè)定的圖片大小一致
insmod gfxterm

#插入終端模塊gfxterm,支持中文字符顯示和支持24位圖像
insmod vbe

#插入vbe模塊,,GRUB2引入模塊化機制,,要使用它,需要在這里加入
if terminal_output gfxterm ; then true ; else
# For backward compatibility with versions of terminal.mod that don't
# understand terminal_output
terminal gfxterm

#設(shè)定grub2終端為gfxterm
fi
fi
set timeout=10

#設(shè)定默認(rèn)啟動前等待時間,,默認(rèn)為10
### END /etc/grub.d/00_header ###
### BEGIN /etc/grub.d/05_debian_theme ###set menu_color_normal=white/black

#設(shè)定菜單字體及背景顏色
set menu_color_highlight=black/blue

#設(shè)定選擇項字體及背景顏色
#如果使用默認(rèn),,背景將完全被藍(lán)色擋住了,需要修改blue為black,,背景圖片才能顯示
### END /etc/grub.d/05_debian_theme ###

### BEGIN /etc/grub.d/10_linux ###
#10_linux為系統(tǒng)自動添加的當(dāng)前root分區(qū)linux引導(dǎo)項
#每個菜單項要包括menuentry雙引號" "和大括號{ }才完整,,否則不顯示菜單
menuentry "Ubuntu, Linux 2.6.31-10-generic" {
set quiet=1
insmod ext2
set root=(hd0,8)
search --no-floppy --fs-uuid --set 2d61e5f9-1d2a-4167-a6f1-b991ba00878b

#這句與set root=(hd0,8)效果一樣,可刪除其一,,二者不一致以這句為準(zhǔn)
linux /boot/vmlinuz-2.6.31-10-generic root=UUID=2d61e5f9-1d2a-4167-a6f1-b991ba00878b ro quiet splash

#不喜歡看到一長串的,, roo=UUID=***可用root=/dev/sda8(/分區(qū)的分區(qū)號)代替
initrd /boot/initrd.img-2.6.31-10-generic
}


### END /etc/grub.d/10_linux ###
#20_memtest86+為系統(tǒng)自動添加的內(nèi)存測試菜單項
### BEGIN /etc/grub.d/20_memtest86+ ###menuentry "Memory test (memtest86+)" {linux16 /boot/memtest86+.bin}menuentry "Memory test (memtest86+, serial console 115200)" {linux16 /boot/memtest86+.bin console=ttyS0,115200n8}### END /etc/grub.d/20_memtest86+ ###
#30_os-prober
或30_others為系統(tǒng)自動查找并添加其他系統(tǒng)菜單項,,按windows,linux,,macos順序
#查找并添加,,支持windows 7識別
### BEGIN /etc/grub.d/30_os-prober ###
### END /etc/grub.d/30_os-prober ###
### BEGIN /etc/grub.d/30_otheros ###
# This entry automatically added by the Debian installer for a non-linux OS
# on /dev/sda1
menuentry "Microsoft Windows XP Professional" {
set root=(hd0,1)
search --no-floppy --fs-uuid --set e852-230b
drivemap -s (hd0) $root

#對以ntldr引導(dǎo)的系統(tǒng)如win2000,xp,,win2003,,因其引導(dǎo)機制只能從第一硬盤啟動,系統(tǒng)會自動添加#映射命令,,對vista和win7就沒有這句命令
chainloader +1}### END /etc/grub.d/30_otheros ###
#40_custom
為自定義的啟動項,,如啟動cdlinux
### BEGIN /etc/grub.d/40_custom ###

menuentry "CDLinux"{
set root=(hd0,8)
linux /CDlinux/bzImage root=/dev/ram0 vga=791 CDL_LANG=zh_CN.UTF-8
initrd /CDlinux/initrd
}
### END /etc/grub.d/40_custom ###
定制個性化的配置文件,可以加入背景圖片,,使用中文字符,,讓啟動畫面獨具特色,而不是單調(diào)的黑,、白,、藍(lán)三色。下面是一張經(jīng)美化啟動畫面:

四,、腳本修改
該怎樣定制個性化的配置文件呢?
系統(tǒng)安裝完成后,,用戶就會發(fā)現(xiàn)/boot/grub/grub.cfg文件只有root權(quán)限可讀,如果要直接修改grub.cfg文件,,要先修改其權(quán)限,。好不容易把grub.cfg修改好了,系統(tǒng)內(nèi)核或grub升級時,,會自動執(zhí)行update-grub,,grub.cfg文件就會被打回原形,如何保證修改后的配置文件能一直保留下來呢,?
其實不用修改grub.cfg,,只要把個性化配置寫入/etc/default/目錄下的grub和/etc/gurb.d目錄下的腳本文件,以后不管升級內(nèi)核或者是升級grub所執(zhí)行的update-grub,,都會按要求創(chuàng)建個性化的grub.cfg,。
1、首先看下 /etc/default/grub,,先從應(yīng)用程序-附件里打開終端,,輸入
            sudo gedit /etc/default/grub
                  用戶密碼



看看打開的文件可作什么修改:
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
GRUB_DEFAULT=0 ->設(shè)置默認(rèn)啟動項,,按menuentry順序,。比如要默認(rèn)從第四個菜單項啟動,數(shù)字改為3,,若改為 saved,,則默認(rèn)為上次啟動項,。
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true ->隱藏菜單,grub2不再使用,,不管
GRUB_TIMEOUT="3" ->設(shè)置進(jìn)入默認(rèn)啟動項的等候時間,,默認(rèn)值10秒,按自己需要修改
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" ->添加內(nèi)核啟動參數(shù),,這個為默認(rèn)
GRUB_CMDLINE_LINUX="noresume" ->手動添加內(nèi)核啟動參數(shù),,比如 acpi=off noapic等可在這里添加
# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console ->設(shè)置是否使用圖形介面。去除前面#,,僅使用控制臺終端,,不使用圖形介面
# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480 設(shè)定圖形介面分辨率,如不使用默認(rèn),,把前面#去掉,,把分辨率改為800x600或1024x768
# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true ->設(shè)置grub命令是否使用UUID,去掉#,,使用root=/dev/sdax而不用root=UUDI=xxx
# Uncomment to disable generation of recovery mode menu entrys
#GRUB_DISABLE_LINUX_RECOVERY="true" ->設(shè)定是否創(chuàng)建修復(fù)模式菜單項
2,、再看下/etc/grub.d目錄下的腳本文件:



00_header,05_debian_theme,,10_linux,,20_memtest86+,30_os- prober,,40_custom這五個腳本對應(yīng)grub.cfg上的各個部分,,有的版本的grub可能把30_os-prober分出另一部分為 30_os-others,這并不影響,。怎樣修改這些腳本文件才能保證不會破壞update-grub的運行,,又能讓生成的grub.cfg合乎意愿呢? 其實很簡單,,只要在腳本文件中找到
    cat 其他使用變量的語句不要隨變做修改,,除非你清楚修改后會有什么結(jié)果。



1)看看00_header,,一樣在終端中打開sudo gedit /etc/grub.d/00_header,,找到這部分
cat 加載由save_env保存在grubenv的變量
set default="${GRUB_DEFAULT}" ->使用/etc/default/grub中的設(shè)定值
if [ \${prev_saved_entry} ]; then
  saved_entry=\${prev_saved_entry}
  save_env saved_entry
  prev_saved_entry= ->變里設(shè)置的變量由下句保存到grubenv
  save_env prev_saved_entry
fi ->這里回車添加新行后可插入需要添加的模塊
insmod jpeg ->添加背景圖片格式支持,如jpeg,,png,,tga等。
insmod fat ->添加文件系統(tǒng)格式支持如fat,,ntfs,,也可在menuentry下添加
EOF
再看看最后這一段
cat 設(shè)定為若有啟動失敗記錄,就顯示菜單,,需手動選擇才能啟動選擇項
else
  set timeout=${GRUB_TIMEOUT} ->使用/etc/default/grub中的設(shè)定值
fi ->這行后添加行
background_image (hd0,7)/boot/images/002.jpg ->添加背景圖片的絕對路徑
EOF
2)05_debian_theme修改字體及背景顏色
先打開文件 sudo gedit /etc/grub.d/05_debian_theme
看這里
  cat 設(shè)置菜單項的字體和背景顏色
set menu_color_highlight=black/white ->設(shè)置選擇項的字體和背景顏色,。
EOF
可供使用菜單顏色有:
black,,blue,green,,cyan,,red,magenta,,brown,,light-gray,dark-gray,,light-blue,,light-green,light-cyan,,light-red,,light-magenta,yellow,,white
3)10_linux這部分是自動搜索當(dāng)前系統(tǒng),,建立當(dāng)前系統(tǒng)的啟動菜單,包括系統(tǒng)頭,,內(nèi)核等信息,,不要隨便修改,要使用個性菜單名,,比如中文菜單,,可適當(dāng)添加:
先打開文件 sudo gedit /etc/grub.d/10_linux,找到
        cat 雙引號內(nèi)可添加個性化字符,,$1變量也可改為定值,,如改為menuentry "啟動 Ubuntu Karmic" {
        recordfail=1
        save_env recordfail ->如不要保存啟動失敗記錄的,這兩句可刪除
EOF
  if [ "x$3" = "xquiet" ]; then
    cat 啟動畫面不用splash,,要用跳動字符的,,這段可刪除
個性化菜單項也可在這里修改,即上面的menuenrty "$1"不變,,修改下面的數(shù)值:
  linux_entry "${OS}, Linux ${version}" \ ->可改為 linux_entry "啟動 Ubuntu, Linux ${version}"\
      "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_EXTRA} ${GRUB_CMDLINE_LINUX_DEFAULT}" \
      quiet
  if [ "x${GRUB_DISABLE_LINUX_RECOVERY}" != "xtrue" ]; then
    linux_entry "${OS}, Linux ${version} (recovery mode)" \ ->可改為 linux_entry "啟動 Ubuntu, Linux ${version} (修復(fù)模式)"\
    "single ${GRUB_CMDLINE_LINUX}"
  fi
注意只修改引號內(nèi)的字符,,前面的menuentry,linux_entry和后面的\不要做修改,。
4)20_memtest86+自動添加內(nèi)存測試啟動項
打開文件 sudo gedit /etc/grub.d/20_memtest86+,,找到
  cat 雙引號內(nèi)可添加個性字符如menuentry "啟動 內(nèi)存測試"
    linux16    $MEMTESTPATH
}
menuentry "Memory test (memtest86+, serial console 115200)" {
    linux16    $MEMTESTPATH console=ttyS0,115200n8
}
EOF
上面有兩內(nèi)存測試項,可刪除其中一個,。
5)30_os-prober查找其他分區(qū)中存在的系統(tǒng)并建立菜單項,,依次為windows,linux,macos,。
對于單系統(tǒng),默認(rèn)會隱藏菜單,,可在這里去掉隱藏
先打開文件 sudo gedit /etc/grub.d/30_os-prober
單ubuntu系統(tǒng)會自動隱藏菜單,,要取消隱藏菜單,可把這部份的三個timeout=0改為和/etc/default/grub中的timeout一致,,比如timeout=10,。
    cat 比如改為menuentry "啟動 Windows XP" {
EOF
linux啟動項
    linux)
      LINUXPROBED="`linux-boot-prober ${DEVICE} 2> /dev/null | tr ' ' '^' | paste -s -d ' '`"
    ......
        if [ -z "${LLABEL}" ] ; then
          LLABEL="${LONGNAME}"
        fi
        cat 比如改為menuentry "啟動 Mandriva" {
EOF
macos啟動項
    macosx)
      OSXUUID="`grub-probe --target=fs_uuid --device ${DEVICE} 2> /dev/null`"
        cat 比如改為menuentry "啟動 MacOS" {
EOF
6)40_custom 自定義啟動項,按菜單標(biāo)準(zhǔn)格式在后面添加即可,,如
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
menuentry "啟動 Veket" {
    set root=(hd0,8)
    linux /veket/vmlinuz root=/dev/ram0 PMEDIA=hd
    initrd /veket/initrd.gz
}
menuentry "啟動 CDLinux" {
    set root=(hd0,8)
    linux /CDlinux/bzImage root=/dev/ram0 vga=791 CDL_LANG=zh_CN.UTF-8
    initrd /CDlinux/initrd
}

3,、把各項腳本修改保存后,在終端執(zhí)行
sudo update-grub
再執(zhí)行

sudo gedit /boot/grub/grub.cfg
看看配置文件是不是和你想要的一樣了,。
如果有不夠滿意的地方,,重新修改下腳本文件,再執(zhí)行sudo update-grub

4,、ubuntu和windows雙系統(tǒng),,怎樣讓系統(tǒng)默認(rèn)為從windows啟動
在 /etc/grub.d目錄中的腳本文件的文件名都是以數(shù)字開頭,這確定了在執(zhí)行update-grub時各文件內(nèi)容被執(zhí)行的順序,,我們只要把 30_os-prober這個文件名的數(shù)字30改為05到10之間的數(shù)字即可(沒多少可選06,、07、08,、09),,比如改為08_os-prober, 這樣創(chuàng)建出來的grub.cfg內(nèi)的菜單項,,windows的排序就會自動在ubuntu之前,。
五、使用grub2常見錯誤及修復(fù)方法
1,、雙系統(tǒng),,重裝windows引起沒有ubuntu啟動項
使用安裝版的windows重裝windows時會改寫mbr,造成grub丟失,,可以用grub4dos引導(dǎo)進(jìn)入ubuntu后修復(fù)grub或用livecd啟動后修復(fù)grub,。
1)用grub4dos修復(fù)ubuntu
先下載最新版的grub4dos,下載地址http:///grub4dos/ ,,如果是xp系統(tǒng),,把grub4dos壓縮包內(nèi)的grldr復(fù)制到C盤根目錄下,修改boot.ini,,在最后加上一行 c:\grldr="grub4dos",,

對 于vista/win7系統(tǒng),把壓縮包內(nèi)的grldr.mbr和grldr復(fù)制到C盤根目錄下,,在C盤自己建立一個boot.ini文件,,若有boot隱 藏分區(qū)的,,先給boot分區(qū)分配盤符,再把grldr,,grldr.mbr和boot.ini放在boot分區(qū)下,,boot.ini內(nèi)容如下:
     Win7使用軟改激活的請不要使用此方法,否則會造成win7不能啟動,。

然后在根目錄新建一個menu.lst,,內(nèi)容為
        timeout 0
        default 0
        title grub2
        find --set-root /boot/grub/core.img
        kernel /boot/grub/core.img
        boot
        (有/boot分區(qū)的改為
        find –set-root /grub/core.img
        kernel /grub/core.img)
重啟后選擇Grub4Dos會自動轉(zhuǎn)入grub2,從grub2菜單項選擇ubuntu啟動后,,在終端執(zhí)行
        sudo grub-install /dev/sda
將grub裝入第一硬盤的mbr,,如要裝入第二硬盤的mbr把sda改為sdb,第三硬盤為sdc,,類推,。
至于要把grub裝到sda或sdb或sdc的mbr上,需根據(jù)自己情況確定,,看看要設(shè)置哪一塊硬盤為啟動盤,,就把grub裝到那塊硬盤的mbr上。
2)用livecd修復(fù)grub
用ubuntu9.10的livecd啟動后,,打開終端
假如你的ubuntu的 / 分區(qū)是sda7,,又假如 /boot分區(qū)是 sda6,用livecd啟動,,在終端下輸入
    sudo -i
    mount /dev/sda7 /mnt
    mount /dev/sda6 /mnt/boot (如果沒 /boot 單獨分區(qū)這步跳過)
    grub-install --root-directory=/mnt  /dev/sda
  
     和前面一樣,,要裝入第二硬盤的把sda改為sdb。
如果grub.cfg己丟失,,需要重建的還要執(zhí)行
    mount --bind /proc /mnt/proc
    mount --bind /dev /mnt/dev
    mount --bind /sys /mnt/sys
    chroot /mnt update-grub
    umount /mnt/sys
    umount /mnt/dev
    umount /mnt/proc
        exit
3)用帶grub啟動的光盤或U盤修復(fù)
如果手上有g(shù)rub啟動的工具盤,,用工具盤啟動,在grub菜單上按c進(jìn)入命令行狀態(tài),,
在grub>提示符下輸入
    grub>find /boot/grub/core.img (有/boot分區(qū)的用find /grub/core.img)
    (hdx,y) (顯示查找到的分區(qū)號)
    grub>root (hdx,y)
    grub>kernel /boot/grub/core.img (/boot分區(qū)的用 kernel /grub/core.img)
    grub>boot
執(zhí)行boot后能轉(zhuǎn)入grub2菜單,,啟動ubuntu后,再在ubuntu終端下執(zhí)行
    sudo grub-install /dev/sda (或sdb,,sdc等)修復(fù)grub,。
    如果ubuntu的啟動分區(qū)使用ext4格式,要有支持ext4格式的grub才能修復(fù),。
4)沒安裝引導(dǎo)器的 grub4dos引導(dǎo)ubuntu的方法
    按第一步的方法使用 boot.ini 建立grub4dos引導(dǎo)項,,自己編寫 menu.lst,內(nèi)容如下
   
timeout 3
default 0
title Ubuntu 9.10
root (hdx,y)  --------> (hd0x,y) 為 /boot分區(qū)的分區(qū)號
kernel /vmlinuz-xxx-generic root=/dev/sdxy   ------->/dev/sdxy 為 / 分區(qū)的分區(qū)號
initrd /initrd.img-xxx-generic
沒 /boot 分區(qū)的用
timeout 3
default 0
title Ubuntu 9.10
root (hdx,y)
kernel /boot/vmlinuz-xxx-generic root=/dev/sdxy
initrd /boot/initrd.img-xxx-generic
2,、安裝時grub沒裝在mbr上而選擇裝在linux分區(qū)的pbr上,,怎么引導(dǎo)ubuntu
1)按前面的方法一,以grub4dos引導(dǎo)轉(zhuǎn)入grub2。
2)把ubuntu分區(qū)/boot/grub目錄下的boot.img提取出來,,放到C盤根目錄下,,然后修改boot.ini,在最后添加一行 C:\boot.img="grub2"
對vista/7可在C盤新建一個boot.ini,,內(nèi)容為
    [boot loader]
    timeout=0
    default=c:\boot.img
     [operating systems]
    c:\boot.img="grub2"
重啟后選擇grub2就可進(jìn)入grub2菜單,。
此法兼容性較差,成功率低,,僅供測試。
3,、由于分區(qū)調(diào)整引起分區(qū)號或分區(qū)UUID改變造成的grub2不能正常啟動
己安裝好系統(tǒng),,對硬盤再次進(jìn)行分區(qū)調(diào)整時可能會改變現(xiàn)有分區(qū)的分區(qū)號發(fā)生變化,或者某種原因改變啟動分區(qū)的UUID,,都會造成grub2不能正常啟動,,而啟動進(jìn)入修復(fù)模式(grub rescue),這時就要對grub進(jìn)行修復(fù),。
1)用ubuntu9.10的livecd光盤啟動,,進(jìn)入試用桌面系統(tǒng)后,再修復(fù)grub,,操作方法如第一種情況的第二種方法—
2)在rescue模式下啟動并修復(fù)
由于分區(qū)問題,,啟動時會自動進(jìn)入rescue模式,只要grub核心文件還在分區(qū)內(nèi),,就能由rescue模式轉(zhuǎn)到normal模式,,進(jìn)而通過命令進(jìn)入系統(tǒng)。下面這個就是rescue介面:

由于在rescue模式下,,只有少量的基本命令可用,,必須通過一定的操作才能加載正常模塊,然后進(jìn)入正常模式,。
rescue模式下可使用的命令有:set,,ls,insmod,,root,,prefix(設(shè)置啟動路徑)
先假設(shè)grub2的核心文件在(hd0,8)分區(qū),再來看看怎樣從rescue模式進(jìn)入從(hd0,8)啟動的正常模式(normal),。
在rescue模式下search命令不能用,,對不清楚grub2文件處于哪個分區(qū)的,可以用ls命令查看,,比如
    ls (hd0,8)/ 查看(hd0,8)分區(qū)根目錄,,看看有沒有boot文件夾
    ls (hd0,8)/boot/ 查看(hd0,8)分區(qū)的/boot目錄下文件
    ls (hd0,8)/boot/grub/ 查看(hd0,8)分區(qū)/boot/grub目錄下文件
通過文件查看,可以確定grub2核心文件處于哪個分區(qū),接下來就可以進(jìn)行從rescue到normal的轉(zhuǎn)變動作:

1)分區(qū)號(hd0,8)在單獨使用時可以不加小括弧,,在使用路徑是必須加小括弧,,如第2和第3步。
2)由于grub2版本的的不一致,,有的可能在第9步insmod normal.mod加載正常模塊后直接進(jìn)入normal模式,,即出現(xiàn)了normal grub>的提示符,這種情況就不能執(zhí)行第10步,,即可以跳過normal命令的輸入,。
3)雖然輸入normal命令會出現(xiàn)菜單,但由于缺少加載內(nèi)核的Linux命令,,直接從菜單不能進(jìn)入系統(tǒng),,需要按c在命令行繼續(xù)操作。
4)使用/boot單獨分區(qū)的,,要正確修改路徑,,如
    prefix=(hd0,8)/grub
    insmod /grub/normal.mod
另外root=/dev/sda8也要修改根分區(qū)的分區(qū)號。
5)按boot啟動系統(tǒng)后,,再在系統(tǒng)下打開終端,,執(zhí)行命令修復(fù)grub
重建配置文件grub.cfg
    sudo update-grub
重建grub到第一硬盤mbr
    sudo grub-install /dev/sda
4,、雙硬盤雙系統(tǒng) Grub Loading時間過長的解決方案
grub2的boot.img設(shè)定root的uuid從第一分區(qū)開始搜索分區(qū)的/boot/grub下的模塊并加載, 如果linux分區(qū)處于第二硬盤甚至第三硬盤,會導(dǎo)致搜索時間過長而,,出現(xiàn)菜單時間會長達(dá)10多秒,。
對雙(多)硬盤的情況建議把grub安裝在ubuntu所在硬盤的mbr上,,/boot分區(qū)或 / 分區(qū) 盡量靠前,,并設(shè)該硬盤為啟動盤,會大大縮短啟動時間,。
5,、重復(fù)一下,單linux系統(tǒng)或硬盤安裝時iso放在C盤,,umount /isodevice引起的誤認(rèn)為單系統(tǒng)不能出現(xiàn)菜單項的幾種處理方法,。
1. 開機自檢后時按幾下shift鍵,可調(diào)出菜單項
2. sudo update-grub
重建grub.cfg,,會發(fā)現(xiàn)新的系統(tǒng)而改寫grub.cfg,,一般能出現(xiàn)菜單項。
3.如第二種方法不能解決,,直接修改grub.cfg
把在### BEGIN /etc/grub.d/30_os-prober 中的這一段
if keystatus; then
if keystatus --shift; then
set timeout=-1
else
set timeout=0
fi
else
if sleep$verbose --interruptible 3 ; then
set timeout=0
fi
fi
整段刪除或修改三處set timeout=,,再執(zhí)行
sudo update-grub
6、安裝 ubuntu 9.10 后出現(xiàn) Error : No such device: xxx-xxx-xxx,,不能啟動的修復(fù)辦法(未經(jīng)實機測試)
由于grub2兼容性問題,,少部分電腦安裝完ubuntu9.10重啟時會出現(xiàn)
Error:no such device:3c7c1d30-86c7-4ea3-ac16-30d6b0371b02
Failed to boot default entries.
Press any key to continue.
原因是電腦不支持 uuid的搜索,, soier 的修復(fù)過程證實了這個問題,見 http://forum./viewtopic.php?f=139&t=238346
[url=http://forum./viewtopic.php?f=77&t=238175][/url]
原貼使用的是 live DVD進(jìn)入修復(fù)系統(tǒng)模式,,的shell 下change root 修復(fù),,livecd 沒有修復(fù)系統(tǒng)模式,現(xiàn)的根據(jù)他的方法寫個 livecd (能支持ext4讀寫的其他版本的live Linux一可以)下的修復(fù)辦法,,希望有這個問題的朋友測試下看行不行(我電腦沒這個問題,,沒辦法測試  ):
1)、livecd 啟動進(jìn)入試用系統(tǒng)
2),、掛載 / 分區(qū),,比如 / 分區(qū)為 /dev/sda7
sudo mount /dev/sda7 /mnt
如果有 /boot 單獨分區(qū),則掛載 /boot 分區(qū)
3),、修改 grub.cfg
sudo chmod +w /mnt/boot/grub/grub.cfg
sudo chmod +w /mnt/grub/grub.cfg (/boot 單獨分區(qū)的)
sudo gedit /mnt/boot/grub/grub.cfg
sudo gedit /mnt/grub/grub.cfg (/boot 單獨分區(qū)的)
找到 grub.cfg 可所有的這句
search --no-floppy --fs-uuid --set 3c7c1d30-86c7-4ea3-ac16-30d6b0371b02
的前面加上 # 號注釋掉
# search --no-floppy --fs-uuid --set 3c7c1d30-86c7-4ea3-ac16-30d6b0371b02
這句的grub.cfg中有好幾處,,后面的uuid不盡相同,要全部找到并注釋掉
4),、重啟試試能否進(jìn)入系統(tǒng),,可這進(jìn)系統(tǒng)再進(jìn)行下個步
5),、sudo gedit /usr/lib/grub/grub-mkconfig_lib
找到173-175行
if fs_uuid="`${grub_probe} --device ${device} --target=fs_uuid 2> /dev/null`" ; then
echo "search --no-floppy --fs-uuid --set ${fs_uuid}"
fi
前面全部加#注釋掉,,記住從 if 開始到 fi結(jié)束,以防止語法錯誤
# if fs_uuid="`${grub_probe} --device ${device} --target=fs_uuid 2> /dev/null`" ; then
# echo "search --no-floppy --fs-uuid --set ${fs_uuid}"
# fi
然后
sudo update-grub
這樣重建出來的 grub.cfg 就沒有
search --no-floppy --fs-uuid --set 3c7c1d30-86c7-4ea3-ac16-30d6b0371b02
的語句
7,、如何從grub2回到grub (wubi使用者勿試)
sudo apt-get purge grub-pc   ------>清除grub2
sudo rm -fr /boot/grub/*
sudo apt-get install grub  ------->安裝 grub
sudo grub-install /dev/sda  -------->安裝grub到第一硬盤mbr,,第二硬盤為/dev/sdb,若安裝到分區(qū)引導(dǎo)扇區(qū)則為分區(qū)號如 /dev/sda7等
sudo update-grub -------->重建menu.lst
參考論壇資料: http://bbs./forumdisplay.php?fid=57&page=1
               
               
               

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多