Перенос системы с одного железа на другое может понадобиться в самый неожиданный момент. Может вы, наконец, поменяли свой ноутбук на более современный, или перешли с HDD на SSD. Ну или хотите залить вашу ОСь в облако, пересечь границу с чистым девайсом, и развернуться уже в нужном месте с привычной системой. В общем, каждый сходит с ума по-своему. А вот на вопрос, как же перенести любимый или не очень Linux с одной машины на другую, нашим Unix-гуру приходиться отвечать всем одинаково (и очень часто). Сегодня мы решили пойти на решительный шаг и записать данную инструкцию, опубликовав её для всех на самом видном месте.
Итак, дано:
- диск с системой
- диск, на который мы систему будем переносить
- загрузочная флешка
Для начала нам понадобиться сам "страшный зверь сквош", он же squash. Squashfs поставляется с пакетом squashfs-tools. Загружаемся с флешки, ищем в репозитории нужный пакет.
Создаём папку для монтирования:
mkdir /mnt/myOS
Монтируем систему, которую будем переносить:
mount /dev/sda1 /mnt/myOS
Создаём директорию, для сборки нашего squash. Я буду сохранять на соседний диск:
mkdir /mnt/mysquash
mount /dev/sdc1 /mnt/mysquash
Собираем:
mksquashfs /mnt/myOS /mnt/mysquash/os.squashfs -progress -comp xz
Ждём сборки. This may take some time! (c)
Теперь у нас есть файл, который можно хранить на флешке, на диске, в облаке, или зашифровать и отправить на космической ракете к внеземным цивилизациям. Но самое главное - из этого файла вы можете развернуть свою систему на любом подходящем носителе. Давайте это и проделаем.
Подготавливаем новый диск. Для простоты примера я буду использовать простую разметку. Но ничего не мешает вам разделывать диск на свой вкус.
parted /dev/sdb mklabel msdos mkpart primary ext4 0% 100%
mkfs.ext4 /dev/sdb1
Монтируем:
mkdir /mnt/newOS
mount /dev/sdb1 /mnt/newOS
И распаковываем:
unsquashfs -f -u -d /mnt/newOS /mnt/mysquash/os.squashfs
Биндим псевдо-fs:
for i in dev proc run sys ; do mount -bind /$i /mnt/newOS/$i ; done
Hint. Делаем lsblk -f и записываем UUID нового тома.
Заходим в развёрнутую систему:
chroot /mnt/newOS /bin/bash
Редактируем fstab:
vim /etc/fstab ,
и меняем название тома (или томов) на новое.
Генерируем конфиг grub:
grub-mkconfig -o /boot/grub/grub.cfg
Записываем загрузчик:
grub-install /dev/sdb
Выходим:
exit
Всё, поздравляем, система успешно перенесена на новый диск.