当前位置: 首页>>技术教程>>正文


将整个Linux安装移动到另一个驱动器

, ,

问题描述

我有Ubuntu 14.04,有很多软件包和工作相关的东西,我很满意。它安装在我的主SSD驱动器上,这是一个120GB的(当我安装ubuntu时我选择了”/”,所以我相信一切都应该在这个驱动器上)。它显示为/dev /sda

现在我已经在我的计算机上添加了另一个SSD,这是一个240Gb。我目前没有任何其他存储介质(例如外置硬盘)。

由于新的240GB驱动器具有明显更大的容量和更快(比我的120GB更新一代),我想将我的Linux移动到这个新驱动器。这个新的驱动器显示为/dev /sdb,目前它没有格式化或任何东西(我现在已经完全解包并插入我的电脑中:P)

如何安全地将我的linux安装移动到新驱动器?

我可以更换SATA电缆,以便新驱动器在必要时显示为/dev /sda。

如果有帮助,这是“fdisk -l”的输出:

Disk /dev/sda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders, total 234441648 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x00076d7a

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048   226064383   113031168   83  Linux
/dev/sda2       226066430   234440703     4187137    5  Extended
Partition 2 does not start on physical sector boundary.
/dev/sda5       226066432   234440703     4187136   82  Linux swap / Solaris

Disk /dev/sdb: 240.1 GB, 240057409536 bytes
255 heads, 63 sectors/track, 29185 cylinders, total 468862128 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: 0x00000000

Disk /dev/sdb doesn't contain a valid partition table

最佳解决思路

您可以使用CLONEZILLA来实现此目的。

Clonezilla是一个免费的分区和磁盘映像/克隆工具,可用于以高度压缩的方式备份所有数据(整个磁盘或分区),然后将其克隆回硬盘以使其完全相同。这比大多数时候安装操作系统要快。

backup,dd,ubuntu

在您的情况下,您也可以使用”device-device”选项,但我不熟悉它。

你可以在这里找到关于Clonezilla的详细指南:http://clonezilla.org

次佳解决思路

它可以通过几种方式完成。但最简单的方法是将所有文件从旧驱动器复制到新驱动器。

  1. 在新驱动器上创建ext4分区和交换分区。

  2. 从LiveUSB启动。

  3. 将旧的Ubuntu分区挂载到某个目录,将新的挂载到其他目录。

  4. 使用cp -a命令将所有文件从旧文件复制到新文件。

  5. Install grub to the new drive

  6. 使用新的UUID更新/etc/fstab

如果事情不明确,我可以添加一些解释。

第三种解决思路

如果你有时间并想要安全:

$ dd if=/dev/sda of=/dev/sdb bs=64K conv=noerror,sync

命令说明:

  • if是输入,of是目的地

  • bs设置块大小。它是读取和写入的块的大小。更高的块大小通常意味着更高的性能,但如果输入磁盘有错误,也会导致更多数据损坏,请参见此处:archwiki on dd

  • noerror继续在r /w-errors中。

  • 如果发生错误,sync会同步偏移量。

这将基本上创建一个磁盘sda的映像并将其写入sdb(相同的分区布局等)。当然,这将写入整个1​​20GB,因为它是file-agnostic。因此,如果您只使用磁盘的一小部分,那么非常安全,但不是最快的。但是,如果输入磁盘已满,则可能更快。

但:

  • 之后,您可能希望调整分区大小,否则您无法利用额外空间。

  • 无论如何,可能需要编辑/etc /fstab文件。如果使用Hardware-IDs识别磁盘,则会出现这种情况。

第四种思路

与其他答案不同,这允许您克隆Linux安装并将其添加到Grub菜单中,当前安装完好无损。此外,它会自动为您修改/etc/fstab并更新grub启动菜单。

提供了一个菜单,可帮助您选择要克隆的正确分区。分区中的克隆是您当前引导的分区。

如果您选择重新放置分区,rsync用于获得最佳速度。如果升级失败,等待错误修复并希望再次运行升级,这将非常有用。同样,您可能在升级期间选择了错误的选项,并希望再次执行此操作。

完整的脚本可以在这里找到:Bash script to clone Ubuntu to new partition for testing 18.04 LTS upgrade,这就是屏幕的样子:

backup,dd,ubuntu

第五种思路

我切换到新硬盘时的方式是:

  • 在新驱动器上创建我想要的分区布局

  • 从Live CD /USB启动或安装,救援等。

  • 挂载要复制到的旧硬盘分区,例如/mnt/a

  • 挂载新的硬盘分区以接收文件,比如说/mnt/b

  • cp -a或使用tar将文件从/mnt/a复制到/mnt/b

  • 在新磁盘¹上安装引导加载程序(lilo或grub)

  • 更新/etc/fstab(您可能希望使用blkid来识别新的UUID)

  • 重新启动并测试一切是否正常

Note¹:

使用以下命令检查所有硬盘和分区:

sudo fdisk -l 

现在请注意安装Ubuntu的分区,如下所示:/dev/sda1

将分区挂载到需要安装GRUB 2(硬盘分区)的位置,文件系统显示在Nautilus中。现在我们必须安装正确的硬盘分区来更改实际的硬盘MBR。为此,我们需要:

sudo mount /dev/sda1 /mnt
mount

现在将分区安装到备用位置

sudo mount /dev/sda1 /mnt/boot

从您启动的实时映像上的/dev文件夹创建一个不可破解的链接到您安装到/mnt的分区上的/dev文件夹

sudo mount --bind /dev /mnt/dev/

现在我们必须将根CD(/)更改为已安装分区的根目录

sudo chroot /mnt

现在您处于新的根shell中,其中已安装的分区是新的根。您可以验证此键入ls。由于我们现在处于已安装的分区中,我们可以提前安装GRUB 2:

sudo grub-install /dev/sda 

安装现在应该完成,没有错误

键入exit或按Ctrl + D退出CHROOT shell,然后返回Live CD /USB Shell

卸载我们之前安装的分区以进行干净重启:

sudo umount /mnt/dev
sudo umount /mnt/boot
sudo umount /mnt

移除Live CD或USB Stick以从硬盘启动后重新启动:

sudo reboot

Source

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/2879.html,未经允许,请勿转载。