1. 程式人生 > >CentOS5及6上安裝Grub

CentOS5及6上安裝Grub

如何重新安裝開機管理程式(GRUB)

一、光碟重新安裝開機管理程式(GRUB)

請執行下列步驟:

  1. 用 CentOS 安裝碟片開機(例如首張 CD 或 DVD)。
  2. CentOS-4 或 CentOS-5 請在 boot: 提示輸入linux rescue。CentOS-6 請從開機選單選擇 Rescue installed system。

  3. 以讀寫模式掛載所有檔案系統。
  4. chroot 到你硬碟內的真正根目錄('/')。

    # chroot /mnt/sysimage
    
  5. 重新安裝開機管理程式(GRUB)。
    • 若果你要在 SCSI 硬碟或 SATA 硬碟的 MBR(/dev/sda)重新安裝 GRUB:

      # grub-install /dev/sda
      
    • 若果你要在 SCSI 硬碟或 SATA 硬碟的第二個分割槽內的 PBR(/dev/sda2)重新安裝 GRUB:

      # grub-install /dev/sda2
      
    • 若果你要在 IDE 硬碟的 MBR(/dev/hda)重新安裝 GRUB:

      # grub-install /dev/hda
      
    • 若果你要在 HP Smart Array 磁碟陣列的 MBR(/dev/c0d0)重新安裝 GRUB:

      # grub-install /dev/cciss/c0d0

二、CentOS 5 及 6 上安裝 GRUB

此檔案解釋如何在 CentOS 5 或 6 上安裝或重灌 Grub 開機程式。如果你的開機程式曾被毀壞或破壞 —— 譬如安裝了不相容的作業系統 —— 你必須重新安裝 Grub 開機程式。

安裝 Grub 涉及三個步驟:

  1. 建立 /boot/grub/grub.conf 配置檔案。

  2. /boot/grub 安裝 Grub 檔案。

  3. 安裝 Grub 開機程式

第二及第三步可以通過 grub-install 單一個指令來完成。 另外,第二步亦可通過 grub 這個指令來完成。

1. Grub 慣用名稱

Grub 按以下方式為碟盤及分割槽命名:

  1. 不論碟盤是 IDE(PATA)、SATA 或 SCSI 碟盤,也不論它們的普遍稱謂是 {{hd}} 或 {{sd}},所有碟盤一律稱為 {{hd}}。
  2. 所有碟盤及分割槽一律以 0 而不是 1 開始編號。
  3. 不論碟盤上有多少個主分割槽,擴充套件分割槽一律以 4 開始編號。
  4. 第一個數字代表碟盤;第二個數字(存在的話)代表分割槽。

樣例:

Grub 稱謂

意思

普遍稱謂

(hd0)

第一個碟盤

/dev/sda(或 /dev/hda)

(hd1)

第二個碟盤

/dev/sdb(或 /dev/hdb)

(hd0,0)

第一個碟盤,第一個分割槽

/dev/sda1(或 /dev/hda1)

(hd1,0)

第二個碟盤,第一個分割槽

/dev/sdb1(或 /dev/hdb1)

(hd1,1)

第二個碟盤,第二個分割槽

/dev/sdb2(或 /dev/hdb2)

2. 建立或編輯 /boot/grub/grub.conf 配置檔案

首先,你應該建立或編輯 /boot/grub/grub.conf 這個配置檔案。要是你的碟盤未曾安裝 Grub 開機程式,你應該先建立配置檔案,然後才安裝開機程式。

在某些發行版本下,配置檔名為 /boot/grub/menu.lst。在 CentOS 下,/boot/grub/menu.lst 是條連結,它指向正式配置檔案/boot/grub/grub.conf

此檔案含有以下資訊:

  1. 預設的開機分割槽

  2. 等候多久才自動引導預設的分割槽。

  3. 選擇性地提供一個開機劃面,在等候使用者輸入時顯示出來。

  4. 可供使用者選擇的各個開機分割槽

樣例:

(請勿輸入行首的數字。它們索引樣例檔後的解釋。)

1 default=0
2 timeout=10
3 splashimage=(hd0,5)/boot/grub/splash.xpm.gz

4 title CentOS 5.6 i686
5   root (hd0,5)
6   kernel /boot/vmlinuz-2.6.18-238.19.1.el5.centos.plusPAE ro root=/dev/sda6 rhgb noquiet
7   initrd /boot/initrd-2.6.18-238.19.1.el5.centos.plusPAE.img

8 title Linux Mint 11
9   root (hd0,9)
10  kernel /boot/vmlinuz-2.6.32-26-generic-pae ro root=/dev/sda10
11  initrd /boot/initrd.img-2.6.32-26-generic-pae

假若你把 /boot 放在獨立的分割槽內,請參閱以下的備註

解釋:

1. 預設引導清單內的首個分割槽。請注意 Grub 的編號以 0 開始,而不是 1。

2. 停頓 10 秒等候使用者輸入,然後引導預設分割槽。

3. 等候使用者輸入時顯示開機劃面(選擇性的)。

4. 第一個可用的開機分割槽。在此樣例中,它是預設的分割槽(見行 1)。

5. 按 Grub 的命名方式指定主分割槽。

6. 此行包含以下 5 部份:

kernel /boot/vmlinuz-2.6.18-238.19.1.el5.centos.plusPAE

以慣用的命名方式指出核心(vmlinuz)的位置。

ro

首先以 ro(只讀)方式掛載分割槽,以便在有需要時執行 fsck

root=/dev/sda6

以慣用的命名方式指出主分割槽的位置。你也可通過檔案系統的 UUID(通用唯一標識碼)來指定主分割槽,例如:root=UUID=134d2a24-2699-4b0c-823b-1e13633f3b07。CentOS 現在預設採用 UUID。你可以利用這個指命來找出一個檔案系統的 UUID:tune2fs -l /dev/sda6

rhgb

採用影象式開機(Red Hat 影象式開機)。需要文字模式開機時可刪除。

noquiet

輸出詳細資訊。刪除後可減低詳細度。

7. 以慣用的命名方式指出初始化 ramdisk initrd initramfs 的位置。

8. 第二個可用的開機分割槽。

9. 按 Grub 的命名方式指定主分割槽。

10. 此行包含以下 3 部份:

kernel /boot/vmlinuz-2.6.32-26-generic-pae

以慣用的命名方式指出核心(vmlinuz)的位置。

ro

首先以 ro(只讀)方式掛載分割槽,以便在有需要時執行 fsck

root=/dev/sda10

以慣用的命名方式指出主分割槽的位置。另外請參閱第 6 項有關 UUID 的備註。

11. 以慣用的命名方式指出初始化 ramdisk initrd initramfs 的位置。

3. 利用 grub-install 安裝 Grub

當可行時,安裝 Grub 的最簡易方法是利用 grub-install 這個指令。

此指令將會:

  1. 在現有分割槽的 /boot/grub 內安裝所需檔案。

  2. 在通過傳統命名方式所指定的位置安裝開機程式。

樣例:

指令

含意

grub-install /dev/sda

在現有分割槽的 /boot/grub 目錄內安裝 Grub 的檔案。在首個碟盤的主引導記錄(MBR)內安裝開機程式。這是安裝 Grub 的推薦方式。

grub-install /dev/sda1

在現有分割槽的 /boot/grub 目錄內安裝 Grub 的檔案。在首個碟盤的第一個分割槽內安裝開機程式。

grub-install /dev/sda2

在現有分割槽的 /boot/grub 目錄內安裝 Grub 的檔案。在首個碟盤的第二個分割槽內安裝開機程式。

[[email protected] ~]# grub-install /dev/sda
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'.

# this device map was generated by anaconda
(hd0)     /dev/sda
[[email protected] ~]# 

4. 替換方法:單單利用 grub 安裝開機程式

你也可利用 grub 這個指令來安裝開機程式,它卻不會在 /boot/grub 內安裝 Grub 的檔案。要是開機程式被蓋過或損壞了,此方法可修復 Grub 的安裝。

  1. 執行 grub

  2. 你可選擇執行 find /boot/grub/stage1 尋找哪個分割槽在/boot/grub 內含有 Grub 所需的檔案。如果你的/boot 採用獨立分割槽,請執行find /grub/stage1

  3. 執行 root [按 Grub 方式命名的分割槽] 來指定哪個分割槽的 /boot/grub 內含有 Grub 檔案及備有 /boot/grub/grub.conf

  4. 利用 setup [按 Grub 方式命名的開機程式位置] 來安裝開機程式。

  5. 執行 quit 來離開 Grub 程式。

樣例:

[[email protected] ~]# grub
Probing devices to guess BIOS drives. This may take a long time.

    GNU GRUB  version 0.97  (640K lower / 3072K upper memory)

 [ Minimal BASH-like line editing is supported.  For the first word, TAB
   lists possible command completions.  Anywhere else TAB lists the possible
   completions of a device/filename.]

grub> find /boot/grub/stage1
 (hd0,5)
 (hd0,9)

grub> root (hd0,5)
 Filesystem type is ext2fs, partition type 0x83

grub> setup (hd0)
 Checking if "/boot/grub/stage1" exists... yes
 Checking if "/boot/grub/stage2" exists... yes
 Checking if "/boot/grub/e2fs_stage1_5" exists... yes
 Running "embed /boot/grub/e2fs_stage1_5 (hd0)"...  15 sectors are embedded.
succeeded
 Running "install /boot/grub/stage1 (hd0) (hd0)1+15 p
(hd0,5)/boot/grub/stage2
/boot/grub/grub.conf"... succeeded
Done.

grub> quit

5. 備註及警告

5.1. 以獨立分割槽存放 /boot

要是你的 /boot 放在獨立的分割槽內,/boot/grub/grub.conf 內以 rootkernelinitrd 起首的行必須有下列改動:

  • root 起首的那一行必須指定 /boot 的分割槽,而不是/ 的分割槽。

  • kernel 起首的那一行必須假設核心(vmlinuz)位於/,而不是/boot。然而,該行中root 指令必須指定/ 的分割槽,而不是/boot 的分割槽。

  • initrd 起首的那一行必須假設初始化 ramdisk(initrdinitramfs)位於/,而不是/boot

樣例:

/boot 的分割槽/dev/sda1,或 hd(0,0)/ 的分割槽/dev/sda2,或 hd(0,1)/boot/grub/grub.conf 檔須含有下列設定:

title CentOS 5.6 i686
  root (hd0,0)
  kernel /vmlinuz-2.6.18-238.19.1.el5.centos.plusPAE ro root=/dev/sda2
  initrd /initrd-2.6.18-238.19.1.el5.centos.plusPAE.img

5.2. Grub 及 ext4fs

CentOS 5 的 Grub 並不相容 ext4fs。更準確來說,它不能讀入 ext4fs 預設採用的256-byte inodes

可行的解決方法有兩個:

  • 採用 CentOS 6 的 Grub,它能正確地支援 ext4fs。
  • 利用 mkfs.ext4 -I 128 這個指令建立一個擁有 128-byte inodes 的 ext4 檔案系統。這卻意味某些 ext4fs 功能將不可使用。

5.3. 在開機程式運用 Grub 的命令列

你可在開機程式內直接輸入 Grub 的指令。在開機選單按 c,然後輸入那些出現在/boot/grub/grub.conf 配置檔案內的 Grub 指令。

當配置檔案出錯時,這個功能很有用。

樣例:

grub> find /boot/grub/stage1
 (hd0,5)

grub> root (hd0,5)

grub> kernel /boot/vmlinuz-2.6.18-238.19.1.el5.centos.plusPAE ro root=/dev/sda6

grub> initrd /boot/initrd-2.6.18-238.19.1.el5.centos.plusPAE.img

grub> boot

你也可以通過 e 這個指令在 Grub 開機程式內編輯 /boot/grub/grub.conf 內的某行。舉個例說,要令 Linux 以單一使用者模式(runlevel 1)引導,編輯含有kernel 的那一行並在行末加入1。按著按b 來引導它。

5.4. 利用 Grub 來引導 Windows 分割槽

要使用 Grub 來引導一個 Windows 分割槽,請在 /boot/grub/grub.conf 加入類似以下的內容:

樣例:

title Windows
  rootnoverify (hd0,0)
  makeactive
  chainloader +1
參看官方網站:

相關推薦

CentOS56安裝Grub

如何重新安裝開機管理程式(GRUB) 一、光碟重新安裝開機管理程式(GRUB) 請執行下列步驟: 用 CentOS 安裝碟片開機(例如首張 CD 或 DVD)。 CentOS-4 或 CentOS-5 請在 boot: 提示輸入linux rescue。CentOS-

在CentOS 6安裝Apache和PHP

lis col conf -a 主機 依賴 cache 5.6 正常 本文演示如何在CentOS 6上安裝Apache和PHP。CentOS 6自帶的是Apache 2.2.3和PHP 5.1.6,您可以使用默認的CentOS包管理器進行安裝yum。使用yum(而不是使用源

什麽是EPEL Centos安裝EPEL(轉)

pyc TP repos -- i386 性能 centos6 pycurl 問題 什麽是EPEL 及 Centos上安裝EPEL 轉自:http://www.unxmail.com/read.php?67RHEL以及他的衍生發行版如CentOS、Scientific Li

centos 6 安裝jdk1.8 為指定使用者配置jdk版本

** centos 6 上安裝jdk1.8 為指定使用者配置jdk版本 ** 自己在jdk官網下載jdk1.8的版本,傳到伺服器或者直接在伺服器上進行下載 一般的下載目錄是usr/local/java 下載完成後 進行解壓 或者jdk1.8資料夾 vim /etc/profile

python 3.7極速入門教程1安裝:Linux(Ubuntu 18.04)Windows安裝Anaconda

安裝 Linux安裝 Anaconda是最受歡迎的python資料科學和機器學習平臺,用於大規模資料處理,預測分析和科學計算。Anaconda發行版附帶了1,000多個數據包,conda命令列工具和Anaconda Navigator的桌面圖形使用者介面。一般而言,使用Anaconda比直接

RHEL 6 安裝 yum 以及 epel源的使用方法

這幾天在虛擬機器上安裝了 rhel 6.3 ,準確版本資訊是: [[email protected] ~]# uname -a Linux Chaos 2.6.32-279.el6.x86_64 #1 SMP Wed Jun 13 18:24:36 EDT 2

在Linux CentOS 6.6安裝Python 2.7.9

CentOS 6.6自帶的是Python 2.6.6,而編譯llvm需要Python 2.7以上。 checking for python... /usr/bin/python checking for python >= 2.7... not found configure: error:

MacOS High Sierra 10.13.6安裝LeanCloud命令列工具CLI

簡介 根據本人分析(供參考),LeanCloud和mbmod是時下國內非常流行的兩家雲API供應商,其主要市場瞄準移動開發。有關細節在此不贅述,有興趣的朋友可以參考官方網站有關資料。本文介紹在MacOS High Sierra 10.13.6上安裝LeanCloud命令列工具CLI的注意事項。 命令列

在自制Linux盤安裝GRUB

     本人在一塊硬碟上攢出一個Linux系統盤,但沒有載入程式,因此該硬碟不能獨立啟動。為此希望將GRUB安裝到自制Linux系統的硬碟上。本人蔘照文[1]安裝GRUB,由於安裝環境和作者的不同,在安裝過程中出現了些問題。後來反覆閱讀和查詢資料,終於正確安裝GRUB,並在

mysql在linuxwindows安裝遠端連線

1、mysql 在linux端安裝 yum list installed mysql*  # 檢視有沒有安裝過 yum -y install mysql-server  # 伺服器端 yum -y install mysql-devel   # 伺服器端 yum -y in

Fedora Core 6 安裝 beast (3)

覺得 pound + lighttpd 太麻煩嗎?又翻到一個應該不錯的選擇,是一個俄國人寫的 http server, 也具有 reverse proxy 和load balancing 的能力。godfat ~ 3.2$ port info nginxnginx 0.5.2

什麼是EPEL Centos安裝EPEL

RHEL以及他的衍生髮行版如CentOS、Scientific Linux為了穩定,官方的rpm repository提供的rpm包往往是很滯後的,當然了,這樣做這是無可厚非的,畢竟這是伺服器版本,安全穩定是重點,官方的rpm repository提供的rpm包也不夠豐

在redhat 6.6安裝Docker

安裝環境 支援Docker的RHEL版本 Red Hat Enterprise Linux 7 (64-bit) Red Hat Enterprise Linux 6.5 (64-bit) 或更高版本 不論是RHEL的哪個版本,Docker都要求是6

在U盤安裝grub

Disk /dev/sdb: 2096 MB, 2096898048 bytes 64 heads, 63 sectors/track, 1015 cylinders Units = cylinders of 4032 * 512 = 2064384 bytes Sector size (logical/ph

OpenVas在centos 6安裝過程

OpenVAS for CentOS via Atomic Step 1: Configure Atomicorp Repository (as user root, only once) wget -q -O - http://www.atomicorp.com/inst

Centos 7安裝配置MySQL 5.6.26

1、解除安裝系統自帶Mariadb Centos7 已經不自帶MySQL,自帶內部集成了Mariadb,而安裝MySQL的話會和Mariadb的檔案衝突,所以需要先解除安裝掉Mariadb,再安裝MySQL。 [[email protected] ~]

Redhat6.3安裝配置mysql5.6.13版本配置埠自定義資料檔案目錄問題

記錄一下自己在Redhat6.3上安裝配置mysql遇到的種種問題 首先下載檔案不用說了,網上鍊接很多 我用的的5.6.13 一共是三個檔案 MySQL-client-5.6.13-1.el6.x86_64.rpm MySQL-devel-5.6.13-1.el6.x8

如何在CentOS 6.x/7.x安裝git最新版

原始碼包安裝 步驟1. 安裝依賴包 # yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel # yum install  gcc perl-ExtUtils-MakeMaker

Centos7安裝 elasticsearch-6.2.2相關外掛

原文地址 elasticsearch是一個開源的搜尋伺服器,提供了一個分散式多使用者能力的全文搜尋引擎,下面是我的安裝筆記 準備工作 java版本 jdk版本必須是1.8及1.8以上 [[email protected] ~]# java -version java version "1.

Centos7安裝 elasticsearch-6.2.2相關插件

als 測試 內存大小 server 安裝和使用 earch sport ava map 原文地址 elasticsearch是一個開源的搜索服務器,提供了一個分布式多用戶能力的全文搜索引擎,下面是我的安裝筆記 準備工作 java版本 jdk版本必須是1.8及1.8以上 [