我对 Ubuntu 还比较陌生,使用 12.04 LTS 已经有几个月了。我把它安装在 160GB Seagate 旋转媒体驱动器上,与 Windows Vista 进行双启动,一切运行良好。我最近安装了 120GB Kingston HyperX ssd,并使用 Clonezilla 将 Ubuntu 分区克隆到 ssd。这很顺利,只要连接 Kingston,我就可以毫无问题地启动它。
最终我打算从金士顿固态硬盘启动并使用希捷存储数据,偶尔启动到 Vista。(将原始 Ubuntu 安装保留在希捷存储上作为备份)
当我的电脑启动时,我按下 esc 键来获取启动菜单,选择金士顿,获取 grub 菜单,并且间歇性地它似乎实际上是从 Seagate 启动的;我知道这一点,因为我可以听到正在访问的磁盘以及在系统监视器中看到 Ubuntu 可用的空间。
仅连接金士顿时,Ubuntu 启动正常,因此我知道它可以运行 - 但是当也连接希捷时,我认为 Ubuntu 在 grub 菜单中感到困惑,有时从希捷启动,有时从金士顿启动。
我的问题是(除了删除 Seagate 上的 Ubuntu 安装之外)您是否认为我需要运行 grub 更新,只连接金士顿,以让系统重新适应新家?
提前致谢。
答案1
我认为发生了以下情况:克隆导致两个分区具有相同的 UUID。因此启动时 Grub 或安装时 OS 无法区分它们。
- 使用实时 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/
是其安装的位置。将 root 行中的旧 UUID 用复制的 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,其中列出了所有操作系统。