国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Linux > 正文

Linux GRUB手動安裝方法詳解

2024-08-27 23:56:27
字體:
供稿:網(wǎng)友
需要手工安裝 GRUB 主要有兩種情況:
  1. linux 系統(tǒng)原先不是使用 GRUB 作為引導(dǎo)程序而現(xiàn)在想要使用 GRUB 來作為引導(dǎo)程序;
  2. MBR 中的引導(dǎo)程序被覆蓋,需要在 MBR 中重新安裝 GRUB,如先安裝了 Linux 系統(tǒng),后安裝了 Windows 系統(tǒng)。

下面,我們分別介紹這兩種情況如何手工安裝 GRUB 引導(dǎo)程序。

系統(tǒng)中沒有GRUB,需要手工安裝

我們先來講第一種情況,就是 Linux 系統(tǒng)中沒有安裝 GRUB,我們需要重新安裝 GRUB;或者打算把不是啟動分區(qū)的某個分區(qū)變成啟動分區(qū)。比如我的系統(tǒng)中新建了一個分區(qū) /dev/sdb1,并掛載到了 /tdisk/ 目錄上,我們查看一下新建立的分區(qū),命令如下:

[root@localhost ~]# df
文件系統(tǒng) 1K-塊 已用 可用 已用% 掛載點
/dev/sda3 19923216 1787736 17123412 10% /
tmpfs 312672 0 312672 0% /dev/shm
/dev/sda1 198337 26359 161738 15% /boot
/dev/sdb1 2071384 68632 1897528 4% /tdisk

這個分區(qū)是我手工建立的,當然不是系統(tǒng)的默認啟動分區(qū)(系統(tǒng)默認啟動分區(qū)是 /boot 分區(qū))。我們用這個分區(qū)模擬一個不是采用 GRUB 作為默認引導(dǎo)程序的 Linux 硬盤,在這個分區(qū)中手工安裝 GRUB 引導(dǎo)程序。也就是說,這個實驗成功后,/boot 分區(qū)可以啟動系統(tǒng),/tdisk 分區(qū)也可以啟動系統(tǒng)。

具體安裝步驟如下:

1) 使用 grul-install 命令在要啟動的分區(qū)中安裝 GRUB 相關(guān)文件

在 /boot 分區(qū)中有一個 /boot/grub/ 目錄,這個目錄中保存的就是 GRUB 的相關(guān)文件(如文件系統(tǒng)的 Stage 1.5 文件)。我們查看一下 /boot 分區(qū)中的這個目錄,如下:

[root@localhost ~]#ls /boot/grub/
device.map ffs_stage1_5 jfs_stage1_5 reiserfs_stage1_5 stage2
xfs_stage1_5 e2fs_stage1_5 grub.conf menu.lst splash.xpm.gz
ufs2_stage1_5 fat_stage1_5 iso9660_stage1_5 minix_stage1_5 stage1
vstafs_stage1_5

但是在 /tdisk 目錄中并不存在這些文件,所以第一步就是要在 /tdisk 目錄中安裝這些 GRUB 相關(guān)文件,具體采用 grub-install 命令。這個命令的格式如下:

[root@localhost ~]# grub-install [選項] 設(shè)備文件名

選項:
  • -root-directory=DIR:DIR 為實際目錄,也就是手工指定 GRUB 相關(guān)文件的安裝目錄;

【例 1】命令標準格式。

[root@localhost ~]# gmb-install /dev/sda
#因為默認 GRUB 就是安裝到 /dev/sda 中的,所以不需要指定 --root-directory 選項

我們需要把 GRUB 安裝到 /tdisk 分區(qū),所以需要執(zhí)行以下命令:

[root@localhost ~]# grub-install --root-directory=/tdisk/dev/sdb1
#把GRUB安裝至/tdisk分區(qū)
Probing devices to guess BIOS drives. This may take a long time.
Installation finished. No error reported.
This is the contents of the device map/tdisk/boot/ grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-rnn the script 'grub-install'.
(fd0) /dev/fd0
(hd0) /dev/sda
(hd1) /dev/sdb
#說明安裝的設(shè)備文件名

查看一下:

[root@localhost ~]# ll /tdisk/boot/grub/
總用量272
-rw-r--r--. 1 root root 45 5 月 22 23:51 device.map
-rw-r--r--. 1 root root 13392 5 月 22 23:51 e2fs_stage1_5
-rw-r--r--. 1 root root 12632 5 月 22 23:51 fat_stage1_5
-rw-r--r--. 1 root root 11760 5 月 22 23:51 ffs_stage1_5
-rw-r--r--. 1 root root 11768 5 月 22 23:51 iso9660_stage1_5
-rw-r--r--. 1 root root 13280 5 月 22 23:51 jfs_stage1_5
-rw-r--r--. 1 root root 11968 5 月 22 23:51 minix_stage1_5
-rw-r--r--. 1 root root 14424 5 月 22 23:51 reiserfs_stage1_5
-rw-r--r--. 1 root root 512 5月 22 23:51 stage1
-rw-r--r--. 1 root root 125984 5月 22 23:51 stage2
-rw-r--r--. 1 root root 12036 5 月 22 23:51 ufs2_stage1_5
-rw-r--r--. 1 root root 11376 5 月 22 23:51 vstafs_stage1_5
-rw-r--r--. 1 root root 13976 5 月 22 23:51 xfs_stage1_5

GRUB 的相關(guān)文件已經(jīng)安裝到 /tdisk/boot/grub/ 目錄中。當然,這些文件還是需要 GRUB 的配置文件來讀取的。大家注意到了嗎? /tdisk/boot/grub/ 目錄中沒有 grub.conf 或 menu.lst 配置文件,這些配置文件還是需要依賴 /boot/grub/ 目錄的。

注意,如果系統(tǒng)中沒有 grul-install 命令,則說明沒有 GRUB 軟件,這時可以源碼包安裝,也可以 RPM 包安裝。RPM 包的安裝命令如下:

[root@localhost ~]# rpm -ivh /mnt/cdrom/Packages/ grub-0.97-77.el6.i686.rpm

2) 修改GRUB的配置文件

在我們的實驗中,GRUB 是已經(jīng)安裝好的,所以可以直接修改 /boot/grub/gmb.conf 配置文件。但如果是沒有安裝過 GRUB 的 Linux 系統(tǒng)手工安裝 GURB,就需要自己建立 GRUB 配置文件了。那么我們修改 /boot/grub/grub.conf 配置文件如下:

[root@localhost ~]# vi /boot/gmb/grub.conf
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-279.el6.i686)
root(hd0,0)
kemel/vmlinuz-2.6.32-279.el6.i686 ro
root=UUID=b9a7a1 a8-767f-4a87-8a2ba535edb362c9 rd_NO_LUKS
KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkemel=auto
LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet
initrd/initramfs-2.6.32-279.el6.i686.img title CentOS tdisk #給自己這個啟動分區(qū)起個名字吧
root(hd1,0)
#注意啟動分區(qū)的位置是/dev/sdb1,也就是/tdisk目錄
chainloader +1
#使用當前分區(qū)所在的啟動扇區(qū)啟動系統(tǒng)

在 title CentOS tdisk 段中不能指定內(nèi)核鏡像和 initramfs 虛擬文件系統(tǒng),因為在 /tdisk/boot/ 目錄中只有 grub 目錄,而沒有內(nèi)核鏡像文件和 initramfs 虛擬文件系統(tǒng)的鏡像文件,所以需要通過 chainloader 來調(diào)用啟動扇區(qū)。

3) 安裝GRUB到/dev/sdb1分區(qū)的啟動扇區(qū)中

剛剛通過 GRUB 配置文件中的 chainloader 來調(diào)用啟動扇區(qū),但是 /dev/sdb1 這個分區(qū)是新建立的,它的啟動扇區(qū)中并沒有 GRUB 程序。所以最后一步就是要在 /dev/sdb1 分區(qū)的啟動扇區(qū)中安裝 GRUB。這時就要利用 GRUB 交互模式了,如下:

[root@localhost boot]# grub
#啟動進入GRUB交互模式
grub> root (hd0,0)
root (hd0,0)
Filesystem type is ext2fs, partition type 0x83
#設(shè)定GRUB的主目錄,這里只能是(hd0,0),因為內(nèi)核和虛擬文件系統(tǒng)安裝在/dev/sdal中,也就是/boot分區(qū)中
grub> find /boot/gnab/stagel
find /boot/grub/stagel (hd1,0)
#查詢一下Stage 1安裝的分區(qū)
#好像有一點問題,我們在/boot和/tdisk分區(qū)中都安裝了GRUB,只看到了/tdisk分區(qū)
grub> find /gcub/stagel
find /grub/stagel (hd0,0)
#只有這樣才能看到/boot分區(qū)中的Stage 1。因為/boot分區(qū)是一個單獨分區(qū)。上面能看到是因為/tdisk才是分區(qū),而/boot/grub/只是/tdisk分區(qū)中的目錄
grub> find /vmlinuz-2.6.32-279.el6.1686
find /vmlinuz-2.6.32-279.el6.i686 (hd0,0)
#能夠查到內(nèi)核位置。注意不能通過/boot/vmlinuz-2.6.32-279.el6.i686查詢,還是因為/boot是單獨分區(qū)。但是這次/tdisk分區(qū)中沒有內(nèi)核
grub> setup (hd1,0)
setup (hd1,0)
Checking if "/boot/grub/stagel" exists... no
Checking if "/grub/stagel" exists... yes
Checking if "/grub/stage2" exists... yes
Checking if "/grub/e2fs_stage1_5" exists... yes
Running "embed /grub/e2fs_stage1_5 (hd1,0)"... failed (this is not fatal)
Running "embed /grub/e2fs_stage1_5 (hd0,0)"... failed (this is not fatal)
Running "install /grub/stagel d (hd1,0) /grub/stage2 p /grub/grub.conf "...
succeeded
Done
#在/tdisk分區(qū)的啟動扇區(qū)中安裝GRUB吧。雖然有兩個failed,但這只是兩個文件系統(tǒng)的Stage 1.5文件沒有安裝,并不影響
grub> quit
#退出GRUB交互界面

這時 GRUB 安裝完成了,可以重新啟動試驗一下了。重啟后可以看到圖 1 所示的界面。

圖 1 GRUB界面
當然 /tdisk 分區(qū)中并沒有真正的內(nèi)核,所以最終還是要靠 /boot 分區(qū)啟動。如果是多內(nèi)核并存的,就可以真正啟動了。

總結(jié)一下,在 Linux 系統(tǒng)中安裝 GRUB,或者在新分區(qū)中安裝 GRUB 的步驟如下:
  • 需要在 Linux 系統(tǒng)的指定分區(qū)中安裝 GRUB 的相關(guān)文件。這是通過 grub-stall 命令實現(xiàn)的。
  • 需要按照要求修改 GRUB 的配置文件,也就是 /boot/gmb/grub.conf。
  • 需要在分區(qū)的啟動扇區(qū)中安裝 GRUB,這是通過 grub 命令的交互模式實現(xiàn)的。

MBR中的GRUB被覆蓋,需要重新安裝GRUB

這種情況最常見的就是先安裝了 Linux 系統(tǒng),后安裝了 Windows 系統(tǒng),導(dǎo)致 MBR 中的 GRUB 被覆蓋。而 Windows 系統(tǒng)的啟動引導(dǎo)程序又不能識別 Linux 系統(tǒng),從而導(dǎo)致 Linux 系統(tǒng)不能正常啟動。

這種情況解決起來比第一種要簡單得多,因為不需要安裝 GRUB 的相關(guān)文件和修改 GRUB 的配置文件,也就是第一種情況的第一步和第二步不需要執(zhí)行,因為這是已經(jīng)安裝和修改好的。只需要執(zhí)行第三步,覆蓋 MBR 中的啟動引導(dǎo)程序即可。

但是這里的問題是,應(yīng)該在什么地方啟動 GRUB 的交互模式呢?第一種情況是,我們是在 Linux 的命令行中執(zhí)行 grub 命令,來啟動 GRUB 交互模式。第二種情況是已經(jīng)不能正常啟動 Linux 系統(tǒng)了,當然也就沒有 Linux 的命令行了。在這種情況下,我們需要先利用 Linux 的光盤修復(fù)模式,使用光盤來啟動 Linux,進入 Linux 的命令行,再指定 grub 命令。Linux 的光盤修復(fù)模式將在后續(xù)章節(jié)中介紹。

我們先假設(shè)已經(jīng)進入了光盤修復(fù)模式中的 Linux 命令行,那么只需執(zhí)行如下命令即可:

sh-4.1#grub
#啟動GRUB交互界面。注意到了嗎?提示符不一樣了,那是因為系統(tǒng)是從光盤啟動的,所以環(huán)境變量沒有生效
gmb>root (hd0.0)
#同樣需要設(shè)置GRUB的主目錄
grub>setup (hd0)
#直接把GRUB安裝到MBR中,所以不需要指定分區(qū)
grub>quit
#退出

重啟系統(tǒng)之后,就可以發(fā)現(xiàn)熟悉的 GRUB 界面又回來了。這種安裝 GRUB 的方式要比第一種情況簡單,因為這并不是全裝,僅僅是覆蓋安裝而已。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 泗洪县| 高密市| 长海县| 镇江市| 普洱| 南充市| 湖口县| 始兴县| 武陟县| 无为县| 丰都县| 库尔勒市| 南京市| 固阳县| 巍山| 宁南县| 华亭县| 荔浦县| 尚志市| 个旧市| 诏安县| 革吉县| 永州市| 阿克| 伊吾县| 噶尔县| 罗城| 浑源县| 泰安市| 焦作市| 诸城市| 郯城县| 新巴尔虎右旗| 聊城市| 永年县| 渭南市| 黄龙县| 温泉县| 绵阳市| 尚义县| 黄龙县|