sata硬盤和nvme硬盤grub rescue以及MBR、grub、lilo、uefi 、legacy的解釋

01 grub rescue修復–sata接口的硬盤(適用於sata固態和機械硬盤)
  前幾天買了塊SSD回來,想把之前的win10+ubuntu16.04都遷移到SSD上。做法是下載分區助手,完成了win10系統C盤和軟件盤D盤的遷移,但是ubuntu則是不能用分區助手遷移的,因爲分區助手就沒有linux版,所以ubuntu就必須重裝到ssd上。重裝的時候,採用了uefi方式安裝,安裝好後重啓系統,發現無法進入bios,只出現grub rescue界面,在網上看了一些教程,說什麼拔硬盤、給bios rom放電、裝ubunt到u盤上然後從u盤進入ubuntu,嚇了我一跳。當時確實有點慌了,因爲我的觀點是裝系統可以隨便玩,只要不去動bios就行,而這次竟然進不了bios所以有點頭疼,以爲得去維修店刷bios了。其實不然,出現grub rescue命令行,只要之前安裝的ubuntu還在,就修復一下grub即可。方法如下:

ls		#列出磁盤上的所有分區
ls (hd0,msdos12)		#查看msdos12是否是ext文件系統,假設是則下面都用msdos12,如果不是則繼續查看(hd0,msdosXX)XX是ls中列出的數字序號
ls (hd0,msdos12)/grub	#我目前的硬盤上是hd0 12和hd0 5上有ubuntu
ls (hd0,msdos12)/boot/grub
set root=(hd0,msdos12)		#這條命令可以沒有
set prefix=(hd0,msdos12)/boot/grub	#如果是第四行沒有顯示unknow file,如果是第三行顯示unknow file則/boot/grub改成 /grub
insmod normal
normal		#就可以進入那個熟悉的grub菜單界面了
#在進入ubuntu後需要執行以下兩條命令
sudo update-grub
sudo grub-install /dev/sda		#sda後不加數字

幾點注意的地方:
1)ls (hd0,msdos12)/grub #ls後有一個空格,中間的逗號後邊沒有空格,右括號後也沒有空格,如果是多加或少寫了空格會出現 unknown command,即命令輸錯了,而不會是unknown file 和unknown file system
2)ls (hd0,msdos12)可以寫成ls(hd0,12),即省略掉msdos這幾個字符
3)可以先ls (hd0,12)看是否是ext文件系統,如果是再去檢查/grub或者/boot/grub是否含有grub的引導文件 ,這樣會比較節省時間
4) 在修復好grub後,也能正常進入bios了(有點奇怪)

02 grub rescue修復–nvme協議m.2接口的硬盤
方法和上面的是一樣的,只是需要根據nvme硬盤的特點做一點修改

ls # 列出所有分區,因爲我是nvme+gpt+efi模式,所以顯示的是(hd0,gpt1)這種形式
ls (hd0,gpt2)/efi # 因爲我的ubuntu引導分區efi在(hd0,gpt2),就是第一塊硬盤的2分區,所以此處直接用它示範了
# 輸出: ubuntu/ boot/
set root=(hd0,gpt2)
set prefix=(hd0,gpt2)/efi/ubuntu	# 因爲grub在efi/ubuntu目錄下
insmod normal
normal
#在進入ubuntu後同樣需要執行下面的命令
sudo update-grub
sudo grub-install /dev/nvme0n1	# 這裏的設備號nvme0n1很關鍵,因爲我的efi分區裝在nvme0n1p2中的,所以此處是nvme0n1

需要注意的是:
  (01) ls找efi分區時,只要efi下有ubuntu的,那就是它了,如果您記得是在那個硬盤哪個分區,就直接ls它確認下即可.
  (02) 比較坑的一點是,我經過上面的操作後,重啓系統又進入了grub rescue,後來發現是因爲我有兩塊硬盤,但是bios中的默認啓動順序不是nvme0n1, 而是另一塊硬盤,所以如果您也有這個問題的話,則需要設置bios的啓動順序

03 MBR、主分區、擴展分區、邏輯分區、活動分區、系統分區、啓動分區解釋
版本1
http://blog.51cto.com/matthewfjnd/2294325
版本2
https://www.cnblogs.com/wincai/p/5482301.html

04 Linux啓動過程
https://www.ibm.com/developerworks/cn/linux/l-linuxboot/

05 uefi bios和legacy bios mbr和gpt
這兩個都是bios,legacy是傳統的bios,而uefi則是新出的bios標準
https://blog.csdn.net/a3192048/article/details/82975745

06 grub和lilo都可以用於linux的系統加載程序,在傳統mbr模式下,它們是在執行mbr引導程序後加載到內存執行的,其作用是加載操作系統內核。現在linux用grub引導的居多。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章