Клонирование системы Windows + Linux с одного NVME SSD на другой

Вот уже некоторое время работаю за ноутбуком Lenovo Thinkpad T490 (Intel, 16GB RAM, 256GB NVME SSD). При покупке стояла ОС Windows 10. Не стал ее удалять. Подвинул немного и на оставшиеся 100+ GB поставил Kubuntu 20.04 LTS. Привычный Debian не стал ставить -- захотелось попробовать на более новом железе версию ядра и KDE поновее. Да и сочетание LTS релиза QT и KDE с LTS Plasma подкупили долгим сроком 5 лет поддержки. Пока полет нормальный, все работает, переставлять не буду.

100 GB места очень быстро кончились. Тем более, что до этого у меня на Thinkpad T420s стоял 1TB SSD от Western Digital и я даже все файлы со старого ноутбука скопировать не смог. Поэтому решил сделать апгрейд места. В T490 нет слота под 2.5" SSD и только один рабочий слот M.2 NVME 2280. Возможно надо было покупать предыдущую модель T480 т.к. есть модификации с местом под 2.5" SSD + 2240 SATA M.2 SSD. Но я взял поновее модель, с полноразмерным и быстрым слотом M.2 2280 под апгрейд.

Апгрейдиться решил по максимуму, чтобы скопировать все файлы со старого компьютера, скопировать Windows 10 на всякий случай и еще чтобы место осталось -- взял Samsung 970 EVO Plus 2 TB. За одно еще взял 32Gb оперативки в свободный слот. Соответственно стояла задача клонировать старую систему с 256GB NVME диска на новый 2TB NVME диск и расширить разделы.

Для этого купил внешний бокс M.2 NVME SSD модель 31UBNV1C от Age Star с кабелем в комплекте USB Type-C -> USB3.1.

Миграцию выполнил успешно следующим образом:

1. Сделал загрузочную USB флешку с Clonezilla. В инструкции по загрузке с флешки на сайте у них какая-то дичь, видимо чтобы флешки продавать загрузочные :) Флешку сделал из iso-образа Live CD командой sudo dd if=clonezilla.iso of-/dev/sda1

2. Подключил 2TB диск через бокс, загрузился с Clonezilla и склонировал 256GB на 2TB в режиме Drive to Drive без расширения разделов. Скопировалось все, включая EFI раздел, скрытый раздел восстановления Windows, разделы с Windows и Linux и т.д. При клоноровании была какая-то ошибка, что-то на счет несовпадения UUID EFI разделов.

3. На диске 2TB сдвинул и поменял размер разделов как мне нужно программой KDE Partition Manager (аналог GParted). Получилось все, кроме ресайза основного раздела Windows 10, так как он имел тип Bitlocker, а не NTFS, хотя я его не шифровал явно в Windows. Соответственно пришлось загрузиться в Windows, с помощью оснастки работы с дисками примонтировать новый диск и поменять размер раздела склонированной Windows 10. В итоге на диске получились такие разделы:

Device Start End Sectors Size Type
/dev/nvme0n1p1 2048 534527 532480 260M EFI System
/dev/nvme0n1p2 534528 567295 32768 16M Microsoft reserved
/dev/nvme0n1p3 567296 530833407 530266112 252,9G Microsoft basic data
/dev/nvme0n1p4 3904980992 3907028991 2048000 1000M Windows recovery environment
/dev/nvme0n1p5 530835456 3904980991 3374145536 1,6T Linux filesystem

4. Раскрутил и вскрыл ноутбук пластиковой картой. Это можно аккуратно сделать, начиная с задней стенки, в интернете есть видео. Заменил диск. В результате, конечно, с копии не получилось загрузиться. Вместо GRUB2 стартовал поломанный загрузчик Windows с ошибкой про winload.efi, для восстановления загрузки пришлось шаманить.

5. Восстановил загрузчик Windows. Для этого переставил старый диск обратно, загрузился в Windows 10 и сделал USB-флешку восстановления системы (почему-то только со второго раза сделалалась). Переставил снова новый диск. Загрузился с флешки, запустил консоль и выполнил:

diskpart
list volume (посмотрел номер раздела EFI, в моем случае 1)
select volume 1
assign letter w
exit
bcdboot C:\Windows /s w: /f UEFI

Более подробная инструкция на этот шаг: https://superuser.com/questions/1093305/windows-10-fails-to-boot-after-hdd-clone-to-ssd

6. Восстановил GRUB2. Для этого сделал загрузочную флешку Ubuntu командой sudo dd if=ubuntu.iso of=/dev/sda1, загрузился с нее и сделал grub-install из chroot вот так:

sudo fdisk -l (посмотрел как называются разделы с EFI и EXT4 основного раздела Linux)
sudo mount /dev/nvme0n1p5 /mnt
sudo mount /dev/nvme0n1p1 /mnt/boot/efi
for i in /sys /proc /run /dev; do sudo mount --bind "$i" "/mnt$i"; done
sudo chroot /mnt
update-grub
grub-install /dev/nvme0n1

Более подробная инструкция на этот шаг: https://askubuntu.com/questions/88384/how-can-i-repair-grub-how-to-get-ubuntu-back-after-installing-windows

Собрал ноутбук, переставил диск 256GB в коробку USB. Осталось с помощью него скинуть файлы со старого рабочего ноута. 1.6TB свободно. Этого апгрейда по месту и памяти должно на несколько лет хватить. Хотя тормоза Zoom + Slack на процессоре i5 восьмого поколения немного подбешивают. У Кати теперь Lenovo ThinkBook на AMD Ryzen 5 4600u. Очень тихий и быстрый. Следующий Thinkpad наверно возьму на AMD.

Блог: RU Linux