Fedora 使用 LiveCD 修復 GRUB2 引導

用 LiveCD 啓動以後,首先應該明確的是你的 Fedora 裝在哪一個分區,如今的硬盤都應該是 SATA 的吧,那麼就對應 /dev/sda#,#是個數字,1~4表示主分區,5開始是邏輯分區。若是你在可伶的用着 IDE 硬盤,那麼就對應/dev/hda#。 shell

打開你的磁盤實用工具,或者叫 Disk unity,找到 Fedora 安裝所在分區,個人在 sda10,因此下面就拿這個說明了。 app

su
mount-t ext4 -o rw/dev/sda10/media


把 Fedora 的安裝分區掛載到當前的 LiveCD 文件系統下,固然若是你比較偷懶的話,好比我:),直接在文件管理器裏面雙擊一下那個分區,而後就會在/media/_FEDORA_*** 下掛載了。 工具

原來安裝在硬盤上的 Fedora只是把文件目錄掛上來了,一點硬件資源也木有,啥事也幹不了,只能用來 copy/paste 一下數據,如今把當前系統的資源給他: this

su
mount-t proc none/media/proc
mount-o bind/dev/media/dev
mount-o bind/sys/media/sys
mount-t devpts devpts/media/dev/pts

特別看清楚上面的指令,千萬別把 /dev 寫成了 /dev/,若是這樣就會出現:/dev is not a block device 了。 google

掛完後用 chroot 命令切換到原來的 Fedora 中去: spa

su
chroot/media
grub2-install/dev/sda

固然上述指令是講 grub2 安裝到硬盤 MBR 上恢復引導,若是你想裝在當前分區中讓其餘軟件來引導就應該是: code

grub2-install /dev/sda10 資源

OK,作下掃尾工做: it

exit
umount/media/proc
umount/media/dev/pts
umount/media/sys
umount/media/dev
umount/media
reboot


固然,上述修復的 grub 是原來的 grub,其實grub2很強大,能自動識別 N 多系統,只需從新生成配置
文件便可: io

su
grub2-mkconfig  -o /boot/grub2/grub.cfg
reboot


Congratulations!

今天在幫別人修復的時候,又遇到一些問題,寫下來分享:

首先,這臺電腦的分區並非我上面寫的簡單的一個 / 分區,用的 LVM 和一個 boot 分區 sda8,那麼在掛載的時候就要分別掛載了。在 LVM 裏有一個 root 的邏輯卷組和一個 swap 卷組,位於 /dev/mapper/vg_fedora_root,和 /dev/mapper/vg_fedora_swap(這個的取名是本身定義的,若是採用系統本身默認的分區安裝,不是手動的話,名字不一樣)

su
mount-o rw /dev/mapper/vg_fedora_root/media
mount-o rw/dev/sda8/media/boot

而後掛載上述寫的資源。

其次,在執行grub2-install 的時候,遇到錯誤:

[root@localhost]# grub2-install /dev/sda
/sbin/grub2-setup: warn: Your embedding area is unusually small.  core.img won't fitinit..
/sbin/grub2-setup: warn: Embedding is not possible.  GRUB can only be installedinthis setup by using blocklists.  However, blocklists are UNRELIABLE and their use is discouraged..
/sbin/grub2-setup: error: will not proceed with blocklists.

網上查的是 MBR 和 sda1 之間的那塊 embedding area 過小了,應該是默認的 63,若是是 32 的話會出現這個問題,可是我執行 fdisk  -lu,顯示這電腦已是 63 了,不明緣由。
google了一把,沒找到解決方案仍是安裝不上去,後來我在wiki上面,看到了這個用法,強制安裝。

grub2-install--force /dev/sda

居然能夠裝上去,而且成功啓動~

相關文章
相關標籤/搜索