修復 Ubuntu 開機 boot loader

logo-Ubuntu

昨天下午本來想幫自己的筆電 (Ubuntu OS) 升級記憶體,結果因為機型過於老舊,以現在的記憶體時脈 1600 裝上去後,直接讓 Ubuntu 當機,反覆重新開機,無法向下相容,加上現在記憶體狂漲價,找不到更低階的記憶體安裝了,無奈的是,店員幫忙測試筆電,換個記憶體,結果連 Ubuntu 的 boot loader 都可以壞掉。我看店員很緊張的說,不好意思,可以幫忙備份,幫忙我重灌。結果我還是自己拿回家處理比較安心。自己也不知道為什麼換個記憶體,可以讓 boot loader 消失。底下是修復 boot loader 過程

製作 Ubuntu Live USB

請先準備好 Ubuntu Live USB,製作方式很簡單,在 Windows 底下請先下載 unetbootin,以及 Ubuntu 任何一版 Desktop OS,可以參考高登寫的教學: 如何製作 Ubuntu Live USB

修復開機磁區

完成上述步驟後,請使用 USB 開機,選擇 Try Ubuntu Desktop,這時候會進到桌面,接著開啟系統內建的 Terminal,打入 fdisk -l 看看系統磁碟分割狀態

$ fdisk -l

Disk /dev/sda: 320.1 GB, 320072933376 bytes 255 heads, 63 sectors/track, 38913 cylinders, total 625142448 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x0002c315

Device Boot Start End Blocks Id System /dev/sda1 * 2048 194559 96256 83 Linux /dev/sda2 196606 625141759 312472577 5 Extended /dev/sda5 196608 78319615 39061504 82 Linux swap / Solaris /dev/sda6 78321664 117381119 19529728 83 Linux /dev/sda7 117383168 625141759 253879296 83 Linux

上述結果可以發現只有一顆硬碟 /dev/sda 開機磁驅為 /dev/sda1 這是 /boot,而根目錄則是 /dev/sda6,接著將這些磁驅掛載到 /mnt/

$ sudo mount /dev/sda6 /mnt
$ sudo mount /dev/sda1 /boot
$ sudo mount /dev/sda7 /home

使用 grub-install 指令重新製作開機 boot loader

$ sudo grub-install --root-directory=/mnt/ /dev/sda

最後重新啟動系統,將 USB 移除即可,就可以看到登入畫面了


See also