grub的3種安裝方式

來源:互聯網
上載者:User
1. 引言                               

grub是什嗎?最常態的理 解,grub是一個 bootloader或者是一個bootmanager,通過grub可以引導種類豐富的系統,如linux、freebsd、windows等。但一旦 進入linux作業系統(如無特殊聲明,以下提及作業系統或系統皆為linux作業系統),可以敲一個grub命令,就進入”grub>”提示狀 態,然後可以進入操作若干命令。這時候的grub是什嗎?是shell,是一個和bash類似的一個shell。並且提供了兩種工作模式,互動 (interactive)模式和非互動(batch)兩種模式,grub-install命令正是利用了grub的非互動模式,在系統下直接完成了 grub的安裝。IXPUB技術部落格8`8r$~ b t'k u

                               
#^ S n!/ E:X"M P$h q /02. 三種安裝方式                               

安 裝grub其實有3種方式,最常用的是grub-install,其實還有兩種grub>install和grub>setup,其中 grub>install是最底層的方式,grub>setup是更高一層的方式,而grub-install是最進階最簡單的方式。接下來 我們從grub>install開始講,來對3個不同的方式作一下區分:IXPUB技 術部落格 i e ?$i h r

                             IXPUB 技術部落格%}&g {7B H.t K$|
2.1. grub>install                               

進入grub>提示符之後,輸入help install命令,會有如下提示:IXPUB技術部落格;J c*|

install: install [--stage2=STAGE2_FILE] [--force-lba] STAGE1 [d] DEVICE STAGE2 [ADDR] [p] [CONFIG_FILE] [REAL_CONFIG_FILE]其中,STAGE1 DEVICE STAGE2是必不可少的,
以下為樣本:
%n&N { P"X x0      install (hd0,0)/grub/stage1 (hd0) (hd0,0)/grub/stage2
或者可以如下:
&H#G%Q5|0   root (hd0,0)
7J b7B$D+J c0   install /grub/stage1 (hd0) /grub/stage2
通過這樣一種方式可以成功安裝grub,但系統reboot之後,不能進入系統,卻直接進入grub>.why?因為這種安裝方式沒有告知grub 去哪裡找grub.conf,stage2找不到grub.conf就會進入grub>.,用以下形式安裝就ok了。
6a%A { b?K M v0 root (hd0,0)IXPUB技術部落格 j)W @ k ] h%P A
install /grub/stage1 (hd0) /grub/stage2 p /grub/grub.conf                               
b0h f){ X x y0    2.2. grub>setup                               

進入 grub>提示符之後,輸入help setup命令,會有如下提示:IXPUB技術 部落格.r9v M K F

IXPUB技術部落格)~1B z J)h+b j | setup: setup [--prefix=DIR] [--stage2=STAGE2_FILE] [--force-lba] INSTALL_DEVICE[IMAGE_DEVICE]
Set up the installation of GRUB automatically. This command uses the more flexible command "install" in the backend and installsIXPUB技術部落格 C(c;[ u0^;f I w n3F
GRUB into the device INSTALL_DEVICE. 
以上內容我們可以看出,setup是一個自動化(automatically)的grub安裝,它在後台(backend)運行了更靈活多變的 install命令。看樣本:IXPUB技術部落格 E W+E R4_
grub> root (hd0,0)
Filesystem type is ext2fs, partition type 0x83
grub> setup (hd0)
Checking if "/boot/grub/stage1" exists... no
Checking if "/grub/stage1" exists... yes
Checking if "/grub/stage2" exists... yes
Checking if "/grub/e2fs_stage1_5" exists... yes
Running "embed /grub/e2fs_stage1_5 (hd0)"...  16 sectors are embedded.
succeeded
+Q&M U H l U8r ^ p a0    Running "install /grub/stage1 (hd0) (hd0)1+16 p (hd0,0)/grub/stage2 /grub/grub.conf"... succeeded
o3S J u U9]8L0   Done.        
以上可以看出,setup命令將install命令封裝了,使用setup命令比使用install命令簡單很多。但實際的過程比install卻要複 雜一些,其中尤其重要的一點是:使用setup會植入e2fs_stage1_5到硬碟的第一柱面第16扇區之後(這個沒有準確驗證過),這會帶來和通過 install安裝一個很大的區別。
 2.3. grub-install                               

安裝grub最 常用的方式是在進入系統之後,通過grub-install指令碼進行安裝,通過這個指令碼安裝和前兩種方式有何不同呢?IXPUB技術部落格:K h6y O U8q R y l ^

  • 指令碼其實是通過grub的非互動模式,調 用了setup命令安裝grub的。
  • 腳 本的安裝源是/usr/share/grub/i386-redhat/下的stage1、2和各種stage1.5,而前兩種方式使用的源是/boot /grub/下的相同內容。所以通過grub-instal安裝grub,原先在/boot/grub下的stage檔案都刪除也沒關係,該指令碼每次執行 都會刪除這些檔案的。反之,通過前兩種方式安裝的話,相應的stage檔案是不可或缺的,否則會報錯,安裝失敗。
  • 通過grub- install安裝grub之後,如果我們刪除了/boot/grub/下的stage2檔案,系統會無法啟動,報如下錯:                                  GRUB loading stage 1.5
    4K ]8r$o)q h0   GRUB loading, please wait...
    'Y2o4e4| n0   Error 15                                但是,如果是通過grub>install方式安裝的grub,刪除/boot/grub/stage2就沒有問題,why?因為通過 grub>install安裝grub,stage1是直接通過stage2所在的blocklist找stage2,我們刪除或者改名 stage2檔案,檔案的存放位置是不變的,因此能找到。而通過grub-install指令碼,或者grub>setup,會智能的找到相應的 stage1.5,例如:/grub/e2fs_stage1_5,然後通過stage1.5認識檔案系統,是通過檔案名稱去找stage2的,所以通過這 兩種方式安裝的grub,不可刪除或者改名除/boot/grub/stage2。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.