我對 Ubuntu 比較陌生,已經使用 12.04 LTS 幾個月了。我將其安裝在 160GB 希捷旋轉媒體驅動器上,並透過 Windows Vista 雙啟動,一切進展順利。我最近安裝了 120GB 金士頓 HyperX 固態硬碟,並使用 Clonezilla 將 Ubuntu 分割區複製到固態硬碟。這工作得很好,只要連接金士頓,我就可以毫無問題地啟動它。
最終我打算從金士頓SSD啟動並使用希捷數據,偶爾啟動到Vista。 (保留希捷上原始 Ubuntu 安裝作為備份)
當我的電腦啟動時,我按 esc 獲取啟動選單,選擇 Kingston,取得 grub 選單,間歇性地似乎實際上是從 Seagate 啟動的;我知道這一點是因為我可以聽到磁碟被存取的聲音以及在系統監視器中看到 Ubuntu 的可用空間。
僅連接了金士頓的 Ubuntu 啟動正常,所以我知道它可以正常工作 - 但也連接了希捷,我認為 Ubuntu 在 grub 選單中變得混亂,有時從希捷啟動,有時從金士頓啟動。
我的問題是(除了在 Seagate 上安裝 Ubuntu 之外)你認為我需要在僅連接 Kingston 的情況下運行 grub 更新,讓系統重新定位到它的新家嗎?
提前致謝。
答案1
我認為發生了什麼,克隆結果是兩個具有相同 UUID 的分區。因此引導時的 Grub 或掛載時的作業系統無法區分它們。
- 使用 Live CD 或 USB 隨身碟啟動。
- 卸載任何自動安裝的分割區。
- 打開終端,運行
sudo fdisk -l
查看你的SSD分區設備路徑。 為 SSD 複製分割區產生新的 UUID(
/dev/sda1
在您的情況下)tune2fs /dev/sdxy -U random
從下列位置複製該 UUID:
sudo blkid /dev/sdxy
掛載 SSD 分割區 (/dev/sda1),編輯
/etc/fstab
以將舊 UUID 更新為新 UUID:sudo nano /media/ssd_part/etc/fstab
/media/ssd_part/
是它安裝的地方。將舊的 UUID 更改為 root 行中複製的 UUID
/
。例子:# /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=4c0c4c6d-708b-45b0-b9e9-a5e6a7de491e / ext4 errors=remount-ro 0 1 # /media/sneetsher/gnu_files/ was on /dev/sda5 during installation UUID=bf958b50-c15a-45fd-b946-36ab1612045b /media/sneetsher/gnu_files/ ext4 defaults 0 2 # swap was on /dev/sda2 during installation UUID=d15727d5-78c2-4a46-aa67-66895d7f6371 none swap sw 0 0
在這個例子,看到這一行有掛載點是
/
UUID=4c0c4c6d-708b-45b0-b9e9-a5e6a7de491e / ext4 errors=remount-ro 0 1
在 SSD 上重新安裝 Grub
sudo grub-install --root-directory=/media/ssd_part /dev/sdx
此時 SSD 上的 grub 可以辨識所有作業系統。而 HDD 中的 grub 仍然不列出 SSD 中的 Ubuntu。
如果每個磁碟機都有一個帶有引導標誌的分割區。 BIOS 將啟動啟動順序清單中的第一個磁碟機。因此,如果您從舊硬碟啟動,請更新其 grub。
sudo update-grub2
然後兩個驅動器都有 grub 並列出所有作業系統。