我在旧的 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
在我克隆分区之后,出现了几个错误,但我都没有意识到。
在 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
重新安装来完成(交换分区也用于存储休眠数据)。此后,交换分区正确加载并且启动很快。
在 Windows
System Restore
分区上克隆了但未标记为活动 - 因此系统修复工具无法检测到它并修复 MBR 设置。我不得不:- 打开命令行(对于未知系统),
- 跑步
diskpart
, - 用 找出正确的磁盘
list disk
并用 选择它select disk [NUMBER]
, - 用 找出正确的分区
list partition
并用 选择它select partition [NUMBER]
, - 使用以下方式将当前分区标记为活动分区
active
: - 重新启动,再次加载系统修复工具并让它们修复所有问题(
bootrec /fixmbr
可能bootrec /fixboot
会派上用场)。
当然与此同时我必须恢复 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