1. 程式人生 > >分割槽、MBR、grub、lilo、uefi 、legacy、grub rescue

分割槽、MBR、grub、lilo、uefi 、legacy、grub rescue

  1. MBR、主分割槽、擴充套件分割槽、邏輯分割槽、活動分割槽、系統分割槽、啟動分割槽解釋
    版本1
    http://blog.51cto.com/matthewfjnd/2294325
    版本2
    https://www.cnblogs.com/wincai/p/5482301.html

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

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

  4. grub和lilo都可以用於linux的系統載入程式,在傳統mbr模式下,它們是在執行mbr載入程式後加載到記憶體執行的,其作用是載入作業系統核心。現在linux用grub引導的居多。

  5. grub rescue修復
    前幾天買了塊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了(有點奇怪)