歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Ubuntu Linux

ubuntu系統之難

聲明

筆者最近意外的發現 筆者的個人網站 http://tiankonguse.com/ 的很多文章被其它網站轉載,但是轉載時未聲明文章來源或參考自 http://tiankonguse.com/ 網站,因此,筆者添加此條聲明。

鄭重聲明:這篇記錄《ubuntu系統之難》轉載自 http://tiankonguse.com/ 的這條記錄:http://tiankonguse.com/record/record.php?id=677

前言

心中再次想起那句話,既然自己選擇了這樣做,就要准備好承受做這件事的一切代價。

一次錯誤的記憶和操作,使得整個boot分區被刪除。

一次無意的撤銷操作,使得系統依賴錯誤。

正文

背景

先說說背景吧。

我的電腦安裝了三個系統: ubuntu12.04, ubuntu14.04 和 centOS。

其中 ubuntu12.04 是我一直使用的系統,上次裝完這個系統使用時長至少一年了吧。

ubuntu14.04 這個系統我把windows刪除的時候,使用這個系統覆蓋的。

centOS安裝也有半年了。

現在我的ubuntu12.04這個系統的磁盤不足了,於是我想刪除其它兩個系統。

於是我做了一個U盤版的GParted軟件。

查看分區情況

sda1 是主分區(以前是windows7,現實在 ubuntu14.04了)。
sda3是我的D盤,ntfs格式。
sda4是一個ext4格式分區(boot分區)。
sda5是一個swap分區。
sda6是一個ext4格式的分區(ubuntu 12.04 分區)
sda7是一個ext4格式的分區(Home分區)。
sda8是一個swap分區。
sda9是一個ext4格式的分區(centOS系統)。
sda10是一個swap分區

第一次誤操作

看到這些分區,我想起一件事,當時安裝 ubuntu14.04的時候,為了系統的安全,我把boot,home和根分開了,分了三個分區。

於是我就果斷的把sda8和sda4刪了,後來想交換分區也沒算什麼用,於是把三個交換分區也刪了。對於home分區,我想再看看到底是不是,畢竟裡面可能有重要的文件。

於是關機重啟,然後出現了久違的 grub rescue 錯誤。

新的grub錯誤

第一行有個錯誤

/grub/i386pc/normal.mod not found.

還好,以前我遇到這個錯誤好多次,於是找到曾經的記錄http://tiankonguse.com/record/record.php?id=194。

但是執行到 insmod /boot/grub/normal.mod 時竟然提示找不到 normal.mod。

還好,我嘗試使用 insmod normal 試試,竟然成功了,原來現在的系統,改成 /boot/grub/i386-pc/normal.mod 了。

然後我興高采烈的執行 normal 命令。

但是執行後,提示

error symbol 'grub_term_highlight_color' not found。

怎麼會這樣呢?

於是使用360搜索一下。

找到這個論壇(http://forum.ubuntu.org.cn/viewtopic.php?t=458570).
說是系統的一個 bug, 需要使用 live 系統重裝 grub2 .

我做了一個ubuntu 系統的U盤。
然後把U盤裡的boot復制到我的那個 ubuntu 12.04 系統。
開機後還是 grub rescue, 然後使用上面的方法後竟然進去到U盤系統了。
原來grub還沒有更新。

然後更新的時候提示下面錯誤:

ubuntu@ubuntu:~$ sudo update-grub
/usr/sbin/grub-probe: error: failed to get canonical path of /cow.
ubuntu@ubuntu:~$ sudo grub-install /dev/sda
Path `/boot/grub' is not readable by GRUB on boot. Installation is impossible. Aborting.
然後我在ubuntu的一個論壇上找到一個方法(http://askubuntu.com/questions/197833/recovering-from-grub-rescue-crash)

核心命令時
sudo mount /dev/sdXY /mnt
sudo grub-install --root-directory=/mnt /dev/sdX

Where /dev/sdX is the disk where Ubuntu is installed, and /dev/sdXY is the partition on the disk where Ubuntu is installed. In other words, /dev/sdXY contains /boot and so on.

Use fdisk -l to verify the Ubuntu installation location.

但是我執行的時候,提示
ubuntu@ubuntu:~$ sudo mount /dev/sda /mnt
mount: /dev/sda already mounted or /mnt busy

在bug論壇看到各種解決方法,大家可以去看看(https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1289977)。
sudo fdisk -l
And find your Ubuntu partition (should be /dev/sda1 if it is the first partition)

sudo mount /dev/sda1 /mnt
sudo mount --bind /sys /mnt/sys
sudo mount --bind /proc /mnt/proc
sudo mount --bind /dev /mnt/dev
sudo chroot /mnt
Now reinstall Grub2

sudo apt-get install --reinstall grub2
blkid 查看各個分區的UUID 

此時我突然意識到一個問題,我這是U盤,不是 live 系統,裡面的文件自然不全了。

於是我嘗試先修復另一個系統,結果可以了。

然後進入那個系統,把boot目錄全部拷貝過去。

重啟選擇這個系統,竟然進入的是新的系統。 

手動設置分區

此時我意識到一個問題,我的這個舊的系統有三個分區:根分區, boot 分區, home 分區。

那一定有一個地方來儲存這三個分區在那裡儲存,還真找到了。

執行這個命令

tiankonguse@tiankonguse:~$ sudo vi /etc/fstab
可以看到分區的掛載點

下面的是我修復完的內容

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda1 during installation
UUID=65a7fc16-a481-4f77-97b6-59731143f930 /               ext4    errors=remount-ro 0       1
# swap was on /dev/sda12 during installation
#UUID=7b08a45e-34f2-4ea2-900e-579c5a3bddca none            swap    sw              0       0
# swap was on /dev/sda6 during installation
#UUID=99d228d4-f996-4970-ba48-f6950e3a0b69 none            swap    sw              0       0

# /home was on /dev/sda7 during installation
UUID=aef790b3-32e8-4060-8542-bafeedcbac98 /home           ext4    defaults        0       2

關於 UUID 可以使用上面提到的blkid來查詢

tiankonguse@tiankonguse:~$ sudo blkid
/dev/sda1: UUID="65a7fc16-a481-4f77-97b6-59731143f930" TYPE="ext4" 
/dev/sda5: LABEL="E" UUID="3816A47016A43134" TYPE="ntfs" 
/dev/sda6: UUID="aef790b3-32e8-4060-8542-bafeedcbac98" TYPE="ext4"

配置為自己需要的,舊的系統的home目錄就掛到新的系統上去了。

Copyright © Linux教程網 All Rights Reserved