Все об Arch Linux

Arch Linux будет тем, что вы из него сделаете!

Перенос Arch Linux на другой диск или SSD

Перенести готовую установку Arch Linux на другой диск или SSD можно двумя способами: склонировать весь диск через dd или перенести файлы через rsync на новую разметку. Второй способ надёжнее: он не тащит мусор, позволяет изменить размеры разделов и файловые системы, а после него остаётся пересобрать загрузчик и поправить fstab. Ниже — полный порядок, проверенный на реальных переносах.

Как перенести Arch на другой диск или SSD

Сначала реши, что тебе нужно. Если новый диск такой же или больше старого и нужна точная копия «как есть» — подойдёт dd. Если хочешь заодно переразметить диск, поменять файловую систему или избавиться от хлама — rsync.

В обоих случаях работаем с live-USB: загружаемся с установочного образа Arch, как при обычной установке. Если забыл последовательность шагов, освежи в памяти чек-лист установки или установку за 15 минут — перенос повторяет её вторую половину.

Что копировать и как: dd или rsync

Вариант 1. dd — клонирование всего диска

Простой и грубый способ. Копируется всё побайтово: разметка, загрузчик, разделы, включая пустые места и удалённые файлы.

sudo dd if=/dev/sda of=/dev/sdb bs=64M conv=fsync status=progress

Здесь /dev/sda — старый диск, /dev/sdb — новый. Внимание: of должен быть именно тем диском, куда переносишь, иначе затрёшь не то. После клонирования разделы на новом диске имеют те же размеры. Если новый диск больше, свободное место осваивается через resize2fs или btrfs filesystem resize.

Минусы dd: копируется весь мусор, разделы фиксированы, а UUID дублируются. Если старый диск остаётся в машине, система запутается — два раздела с одинаковыми UUID. Меняются они через tune2fs или xfs_admin.

Вариант 2. rsync — перенос на разметку «с нуля»

Рекомендуемый путь. Размечаешь новый диск как при установке с нуля — про разметку GPT и MBR, размеры разделов и swap читай в гайде по разметке диска. Создаёшь файловые системы, монтируешь:

sudo mount /dev/sdb2 /mnt
sudo mount --mkdir /dev/sdb1 /mnt/boot

И переносишь файлы:

sudo rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / /mnt/

Флаги -aAX сохраняют права, владельцев, ACL и расширенные атрибуты — без них система на новом диске не заведётся. Исключения нужны, чтобы не копировать виртуальные файловые системы и сам каталог /mnt, иначе rsync зациклится.

Хочешь чистые метаданные пакетов — сначала pacstrap -K /mnt base linux linux-firmware, потом rsync поверх. Так новые разделы получают свежие метаданные, а конфиги переносятся файлами.

Если переносишь на зашифрованный диск, сначала настрой LUKS на новом разделе, открой его и монтируй уже маппер. Про keyfile и смену паролей при таком переносе — в статье про LUKS2.

Как пересобрать загрузчик после переноса

После копирования файлов заходим в новую систему:

sudo arch-chroot /mnt

Внутри chroot первым делом пересобираем initramfs:

mkinitcpio -P

Потом загрузчик. Для GRUB:

grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
grub-mkconfig -o /boot/grub/grub.cfg

Для systemd-boot:

bootctl install

Если переходишь с BIOS на UEFI или наоборот, загрузчик ставится заново целиком — старые записи в NVRAM не переживут смену режима. После пересборки выходи из chroot, отмонтируй разделы и пробуй грузиться.

Почему после переноса не грузится

Самая частая причина — UUID в fstab. После rsync файл /etc/fstab на новом диске остался старым: он указывает на UUID разделов старого диска. Новые разделы получили новые UUID, и система не находит корень.

Лечится просто. В live-окружении, когда новый корень смонтирован в /mnt, сгенерируй fstab заново:

sudo genfstab -U /mnt >> /mnt/etc/fstab

Но сначала удали старые строки, иначе в fstab окажутся и старые, и новые записи. Открой файл и оставь только нужное: корень, boot, home, swap. Про каждое поле fstab — в статье про fstab на ArchWiki.

Вторая причина — неверные HOOKS в /etc/mkinitcpio.conf. Если корень на btrfs, нужен хук btrfs; если диск зашифрован — encrypt или systemd с LUKS2. После правки — mkinitcpio -P.

Третья — загрузчик не переустановлен. GRUB, скопированный файлами, не работает: ему нужны модули в целевом каталоге и запись в NVRAM. Поэтому grub-install обязателен, а не только grub-mkconfig.

Частые вопросы

Можно ли перенести Arch на диск меньшего размера? Да, если данные помещаются. dd тут не подойдёт — ему нужен диск не меньше исходного. rsync перенесёт только файлы и на меньший диск работает без проблем.

Нужно ли переустанавливать пакеты после переноса? Нет. rsync копирует всю систему, включая пакеты в /usr. Достаточно пересобрать initramfs и загрузчик.

Что делать, если старый и новый диск стоят в одной машине? После dd у них одинаковые UUID — система может загрузиться не с того диска. Поменяй UUID на новом: sudo tune2fs -U random /dev/sdb2. После rsync этой проблемы нет, UUID у новых разделов уже свои.

Перенос затронет данные на старом диске? Нет, оба способа только читают старый диск. Но не перепутай if и of в dd — тогда старый диск будет затёрт.

Как проверить перенос до перезагрузки? Смонтируй новый корень в /mnt, проверь findmnt --verify --verbose внутри chroot и убедись через blkid, что fstab указывает на новые UUID.

Заключение

Перенос Arch на новый диск — это копирование файлов с сохранением атрибутов, пересборка initramfs и загрузчика и правильный fstab. rsync с флагами -aAX делает основную работу, genfstab -U чинит UUID, mkinitcpio -P и grub-install возвращают системе способность загружаться. Если после переноса система не стартует — в девяти случаях из десяти виноват fstab со старыми UUID. Полный порядок — в руководстве по миграции на ArchWiki.

Полезные ресурсы



Не получилось? Поможем настроить

Задай вопрос в чате — отвечаем быстро, по делу и без воды.

Читайте также

Комментарии

Загрузка…

Откроется GitHub: создайте новый issue с вашим комментарием (кнопка «Submit new issue»). После отправки обновите эту страницу — комментарий появится ниже.

Telegram Max