磁盘克隆后无法启动

磁盘克隆后无法启动

我在旧的 160GB 磁盘上有以下分区配置:

/sda
  /sda1 - 100MB  - NTFS - System Recovery (hidden Windows partition)
  /sda2 - 75GB   - NTFS - Windows
  /sda3 - extended partition
    /sda5 - 75GB - EXT4 - Debian
    /sda6 - 8GB  - swap - swap partition

我使用 GPart 准备了新的 500GB 磁盘,其相应分区的顺序相同但大小不同(并且在 and 处有 1 个附加分区) - 我打算使用 Clonezilla 逐个克隆它们:

/sda
  /sda1 - 100MB   - NTFS - System Recovery (hidden Windows partition)
  /sda2 - 160GB   - NTFS - Windows
  /sda3 - extended partition
    /sda5 - 160GB - EXT4 - Debian
    /sda6 - 32GB  - swap - swap partition
    /sda7 - 110GB - NTFS - additional partition

到目前为止,一切都按预期进行。我将旧的克隆sda1到新的sda1,将旧的sda2克隆到新的sda2,将旧的克隆sda5到新的sda5。它没有克隆引导加载,我不得不用一些实时 CD 手动恢复它:

mount /devsda5 /mnt
--bind /dev /mnt/dev
--bind /proc /mnt/proc
--bind /sys /mnt/sys
chroot /mnt
grub-install /dev/sda5
update-grub

它正确检测了我安装的内核以及 Windows 分区。

当我尝试启动 Debian 时,问题出现了。使用最新内核启动时卡在Loading please wait...屏幕上。以问题解决模式启动时卡在Running /script/local-premount。同样,尝试启动 Windows 时,出现有关安装损坏的消息。

令人惊讶的是,我能够使用较旧的内核(目前在 Jessie 上是 Wheezy 的旧内核)启动 Debian。但是,在这种情况下,无法安装其他分区,即使是存储在其他物理驱动器上的分区,由于该分区是一次性从计算机中删除的,因此不会受到此过程的影响。

问题的根源可能是什么?我可以提供哪些信息来帮助解决问题?

编辑:

我设法了解到,不带quiet选项启动最新内核的结果与恢复模式相同。等待一段时间(几分钟)后,我收到另一条消息:

Begin: Running /scripts/local-premount ... resume: Could not stat the resume device file: '/dev/disk/by-uuid/[uuid]'
        Please type in the full path name to try again
        or press ENTER to boot the system:

在我按下回车键后,系统终于启动了。然而,结果发现缺少的分区是交换分区:

$cat /proc/meminfo | grep Mem # I have 8GBs of RAM
MemTotal:        8154632 kB
MemFree:         1367032 kB
MemAvailable:    4750344 kB
$ cat /proc/swaps
Filename                Type        Size    Used    Priority
/dev/sda6                               partition   33554428    0   -1

在哪里我可以确定该分区确实被使用了?

答案1

在我克隆分区之后,出现了几个错误,但我都没有意识到。

  1. 在 Linux 上,一些程序依赖设备 UUID 而不是/dev/sdX符号。事实上,例如,/etc/fstab这是推荐的方式。在我的例子中,这是关于交换分区的条目,因此初始化脚本在挂载它时卡住了一段时间,然后放弃并继续。

    我找到了所有使用旧交换分区的地方。我将文件中的grep -r [UUID] /值替换为匹配的值:sudo blkid

    /etc/blkid.tab                # swap partition
    /etc/uswsusp.conf             # hibernation device
    /var/cache/debconf/config.dat
    /etc/initramfs-tools/conf.d/resume
    

    然后我必须确保这些值已进入 initrc 脚本。可以通过手动调用它们或(就我而言)卸载并uswsusp重新安装来完成(交换分区也用于存储休眠数据)。

    此后,交换分区正确加载并且启动很快。

  2. 在 WindowsSystem Restore分区上克隆了但未标记为活动 - 因此系统修复工具无法检测到它并修复 MBR 设置。我不得不:

    • 打开命令行(对于未知系统),
    • 跑步diskpart
    • 用 找出正确的磁盘list disk并用 选择它select disk [NUMBER]
    • 用 找出正确的分区list partition并用 选择它select partition [NUMBER]
    • 使用以下方式将当前分区标记为活动分区active
    • 重新启动,再次加载系统修复工具并让它们修复所有问题(bootrec /fixmbr可能bootrec /fixboot会派上用场)。
  3. 当然与此同时我必须恢复 Grub 因为我没有克隆它:

    mount /dev/sda5 /mnt
    mount --bind /dev /mnt/dev
    mount --bind /proc /mnt/proc
    mount --bind /sys /mnt/sys
    chroot /mnt
    grup-install /dev/sda5
    update-grub 
    

相关内容