Перенос Linux с одного диска на другой Debian 10

Blog by Mikro
Для переноса системы с диска на новый диск или ССД диск потребуется сделать несколько шагов.
Разметка диска MBR.
После подключения нового диска к старой системе Linux на примере старенькой Debian 10 требуется:
  • Разметить и форматировать новый диск.
  • Перенести данные вместе с ОС.
  • Перейти через chroot в папку c перенесённой ОС.
  • Поменять fstab.
  • Установить загрузчик Grub.
  • готово.

Каждый делает это как считает нужным. В данном примере простая ОС Debian 10 amd64 с простой файловой системой и без понтофф.

Коротко о старой разметке диска.
sda1 /boot
sda2 /
sda3 SWAP
sda4 /tmp
Почему так разбито было не знаю или не помню.
В теории это неважно, можно было разбить только на два раздела
/ и SWAP, всё будет работать. Это так называемый тип — всё на одном разделе.

Тут я просто повторю разметку не сильно запариваясь по размеру разделов.
В общем SDA это старый диск, SDB новый.

Разметить и форматировать новый диск.

Кто-то делает через fdisk, я делаю разметку чистого диска через parted.
Можно рассчитывать размер мегабайтами, гигабайтами ну или процентами, как удобно.

parted /dev/sdb
(parted) mkpart primary ext4 1Mib 2GB
(parted) mkpart primary ext4 2GB 90%
(parted) mkpart primary ext4 90% 95%
(parted) mkpart primary ext4 95% 100%
(parted) print
(parted) q

если у Вас диск был как-то разбит то через print смотрите номера разделов и трёте например d 1…

Форматирование созданных дисков
mkfs.ext4 /dev/sdb1 
mkfs.ext4 /dev/sdb2 
mkfs.ext4 /dev/sdb4
mkswap /dev/sdb3


Перенос данных вместе с ОС Linux на новый диск.


Так как раздел boot был на отдельном разделе, пусть так и будет.
mount /dev/sdb1 /mnt
rsync -avAXHP --exclude={"/boot/lost+found"} /boot/* /mnt
umount /mnt

Если есть ещё такие разделы например отдельно /home ,/boot/efi то можно так-же перетянуть.

Теперь перенос основной системы из корневой системы.
Можно конечно разные службы типа сервера БД или Апач тормознуть на момент переноса, но вроде и так сойдёт.
root
mount /dev/sdb2 /mnt

rsync -avAXHP --exclude={"/dev/*","/proc/*","/sys/*","/run/*","/media/*","/lost+found","/var/lib/pacman/sync/*","/var/tmp/*","/boot/*","/mnr/*","/mnt1/*","/mnt/*","/tmp/*","/var/cache/*"} /* /mnt

Перейти через chroot в папку c перенесённой ОС.


mount /dev/sdb1 /mnt/boot

mount -o bind /sys /mnt/sys
mount -o bind /dev /mnt/dev
mount -o bind /proc /mnt/proc 

chroot /mnt

В некоторых случаях надо монтировать и /mnt/boot/efi, смотрите по своей разметке и тд.

Смотрим UIID дисков которые надо поменять в файле FSTAB.
blkid

Выдаёт что-то типа того
/dev/sdb3: UUID=«cb946050-c72e-4d8c-a268-61e2befbc155» TYPE=«swap» PARTUUID=«b34cb34c-03»
/dev/sdb4: UUID=«76fd2c9e-7d46-422a-9bb9-3a54d22840a3» TYPE=«ext4» PARTUUID=«b34cb34c-04»
/dev/sdb1: UUID=«cf5cb8b5-4cc7-4574-ac2e-a888bf8e63bf» TYPE=«ext4» PARTUUID=«b34cb34c-01»
/dev/sdb2: UUID=«1d38ed9a-f2f3-45d1-a4ce-09ed8ee501b0» TYPE=«ext4» PARTUUID=«b34cb34c-02»
открываем на редактирование файл /etc/fstab
nano /etc/fstab

Меняем id на наши новые.
в общем тут всё ясно.?!

Установить загрузчик Grub.

grub-install /dev/sdb
update-grub2 

exit
umount -a
systemctl poweroff

Готово.


Если при установке grub-install возникает ошибка.
Выполняется установка для платформы i386-pc.
grub-install: предупреждение: метка раздела GPT не имеет BIOS Boot Partition; встраивание невозможно.
grub-install: предупреждение: Встраивание невозможно. При имеющихся параметрах GRUB можно установить только с помощью списка блоков (blocklists). Однако, список блоков является НЕНАДЁЖНЫМ механизмом и его лучше не использо
вать…
grub-install: ошибка: не будет продолжена с использованием blocklists.

Проблема в том что диск был размечен как GPT а не MBR.
Вобщем чёто можно попробовать сделать но лучше не переносить систему с мбр в ЖПТ
у меня сходу невышло. но подёргался можно

umount /dev/sdb1
mkfs.fat -F32 /dev/sdb1
mkdir /boot/efi
mount /dev/sdb1 /boot/efi

зайти в parted
print
по очереди 1 2 3 4 5… будут разделы. например наш /dev/sdb1 под номером 5
(parted) set 5 boot on
дальше выходим из parted командой q


apt install grub-efi grub-efi-amd64 efibootmgr
update-grub
grub-install /boot/efi

mount -t efivarfs efivarfs /sys/firmware/efi/efivars
 modprobe efivarfs

grub-install --boot-directory=/boot --bootloader-id=Debian --target=x86_64-efi --efi-directory=/boot/efi --recheck

!

0 комментариев

Автор топика запретил добавлять комментарии