Перемещение linux системы на другой диск

Представьте, что вы купили SSD. Или захотели перенести свою установку linux на флэш-накопитель, чтобы им можно было воспользоваться где угодно. Или решили мигрировать между VPS хостингами. В общем, вам понадобилось мигрировать с одного диска на другой, так, чтобы ОС потом запустилась. Что тогда будете делать? В этой статье я продемонстрирую как это можно сделать, на примере Arch Linux системы с загрузкой через BIOS.

Шаг 1. Создать диск в виртуальной машине.

Так как данный процесс я показываю на виртуалке, покупать теробайтник не придется. В общем, вот:
new-drive-arch

Шаг 2. Разметка таблицы разделов на новом диски и их форматирование.

Дальнейшие действия будут проводиться в консоли от имени суперпользователя. Давайте для начала посмотрим текущую конфигурацию.
[root@localhost dmitriy]# ls /dev/sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sda3 /dev/sda4 /dev/sdb
[root@localhost dmitriy]# cat /etc/fstab
# UUID=2a7d7d88-0796-4097-94e6-cff95fe6616d LABEL=root
/dev/sda3 / ext4 rw,relatime,data=ordered 0 1

# UUID=f399afaa-d5a6-4b76-844e-6ebf755c6242 LABEL=var
/dev/sda2 /var ext4 rw,relatime,data=ordered 0 2

# UUID=a6dfd486-8049-430d-a162-8f995d79aa72 LABEL=home
/dev/sda4 /home ext4 rw,relatime,data=ordered 0 2

#UUID=435f27b2-094a-42f2-b167-bd431abf2956 LABEL=swap
/dev/sda1 swap swap defaults 0 0

Имеется два устройства /dev/sda и /dev/sdb. У диска sda имеется четыре раздела, в которые установлена система. Диск sdb таблицы разделов не имеет. Файл /etc/fstab был создан во время установки системы. В нем указано, как монтировать все четыре раздела. В данном случае, в первом столбце указаны разделы по имени устройства в devfs. Я не рекомендую такой вариант fstab’a поскольку в случае смены конфигурации компьютера /dev/sda может стать диском с другим именем (например, /dev/sdb), вместо указанных вами разделов будет сделана попытка примонтировать совсем другие разделы и, в итоге, система не сможет загрузиться. В этом случае, особенно будет проблематично работать с системой, установленной на флэшке. Есть два других способа указания раздела, по UUID и по LABEL и оба работают с ext2/3/4 разделами. UUID генерируется случайно, при форматировании раздела, и имеет крайне низкую вероятность коллизии. Поэтому в fstab рекомендуется указывать разделы именно по ним.
Приступим к разметке /dev/sdb.
[root@localhost dmitriy]# cfdisk /dev/sdb
В предложенном меню, выбираем dos(поскольку у нас BIOS система) и размечаем диск. Я сделал вариант попроще, чем ранее и не стал делать раздел для var.
Следующим шагом, после создание таблицы разделов, является форматирование разделов.
mkfs -t ext4 -L root /dev/sdb1
mkfs -t ext4 -L home /dev/sdb2
mkswap -L swap /dev/sdb3

Результат выполнения комманд
[root@localhost dmitriy]# mkfs -t ext4 -L root /dev/sdb1
mke2fs 1.42.13 (17-May-2015)
Creating filesystem with 786432 4k blocks and 196608 inodes
Filesystem UUID: 526c2488-bb2c-4cc9-aa81-ee838b4b968c
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912

Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done

[root@localhost dmitriy]# mkfs -t ext4 -L home /dev/sdb2
mke2fs 1.42.13 (17-May-2015)
Creating filesystem with 1048576 4k blocks and 262144 inodes
Filesystem UUID: c6b28205-018b-4281-9068-d83477c2daf3
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

[root@localhost dmitriy]# mkswap -L swap /dev/sdb3

Устанавливается пространство для swap версии 1, размер = 1023 MiB (1072689152 байт)
LABEL=swap, UUID=ad35eaee-736f-4829-85a7-f1101ca575de
Обратите внимание, что при создании раздела вам будет напечатан UUID вновь созданного раздела.

Шаг 3. Копирование файлов системы

Для начала, монтируем файловые системы откуда и куда нужно скопировать файлы в той иерархии, в которой они должны быть монтированы.
mkdir /mnt/src
mount /dev/sda3 /mnt/src
mount /dev/sda2 /mnt/src/var
mount /dev/sda4 /mnt/src/home

mkdir /mnt/dst
mount /dev/sdb1 /mnt/dst
mkdir /mnt/dst/home
mount /dev/sdb2 /mnt/dst/home

Кульминация, нужно скопировать файлы. Обратите внимание на флаги cp. -p нужен для того, чтобы файлы сохранили своих владельцев и права доступа. -r для того, чтобы файлы и папки копировались рекурсивно. -v можно опустить, но если вы его напишете, вы увидите, что копируется в данный момент.
cp -prv /mnt/src/* /mnt/dst/

Шаг 4. Привести ОС в работоспособное состояние

После копирования, нужно отредактировать /mnt/dst/etc/fstab. Если вы забыли UUID, их может подсказать программа blkid:
[root@localhost dmitriy]# blkid
/dev/sda1: LABEL="swap" UUID="435f27b2-094a-42f2-b167-bd431abf2956" TYPE="swap" PARTUUID="8a863ec7-01"
/dev/sda2: LABEL="var" UUID="f399afaa-d5a6-4b76-844e-6ebf755c6242" TYPE="ext4" PARTUUID="8a863ec7-02"
/dev/sda3: LABEL="root" UUID="2a7d7d88-0796-4097-94e6-cff95fe6616d" TYPE="ext4" PARTUUID="8a863ec7-03"
/dev/sda4: LABEL="home" UUID="a6dfd486-8049-430d-a162-8f995d79aa72" TYPE="ext4" PARTUUID="8a863ec7-04"
/dev/sdb1: LABEL="root" UUID="526c2488-bb2c-4cc9-aa81-ee838b4b968c" TYPE="ext4" PARTUUID="8de3692f-01"
/dev/sdb2: LABEL="home" UUID="c6b28205-018b-4281-9068-d83477c2daf3" TYPE="ext4" PARTUUID="8de3692f-02"
/dev/sdb3: LABEL="swap" UUID="ad35eaee-736f-4829-85a7-f1101ca575de" TYPE="swap" PARTUUID="8de3692f-03"

У меня получился такой fstab:
UUID=526c2488-bb2c-4cc9-aa81-ee838b4b968c / ext4 rw,relatime,data=ordered 0 1
UUID=c6b28205-018b-4281-9068-d83477c2daf3 /home ext4 rw,relatime,data=ordered 0 2
UUID=ad35eaee-736f-4829-85a7-f1101ca575de swap swap defaults 0 0

Дальнейшие шаги по реанимации проведем в chroot окружении, перед тем, как в него попасть, нужно примонтировать devfs, procfs и sysfs.
[root@localhost dmitriy]# mount --rbind /dev /mnt/dst/dev
[root@localhost dmitriy]# mount --rbind /proc /mnt/dst/proc
[root@localhost dmitriy]# mount --rbind /sys /mnt/dst/sys
chroot /mnt/dst

Будучи только в chroot окружении осталось только установить и скофигурировать GRUB и пересобрать initramfs. Начнем с GRUB:
[root@localhost dmitriy]# grub-install /dev/sdb
Выполняется установка для платформы i386-pc.
Установка завершена. Ошибок нет.
[root@localhost dmitriy]# grub-mkconfig -o /boot/grub/grub.cfg
Генерируется файл настройки grub …
Найден образ linux: /boot/vmlinuz-linux
Найден образ initrd: /boot/initramfs-linux.img
Found fallback initramfs image: /boot/initramfs-linux-fallback.img
завершено

initramfs, нужно пересобрать, поскольку туда попадает fstab где система на рам-диске найдет, как примонтировать корневую ФС. Этот шаг специфичен для дистрибутива. В Arch Linux, например, это делается с помощью mkinitcpio:
mkinitcpio -p linux

Результат выполнения
[root@localhost dmitriy]# mkinitcpio -p linux
==> Building image from preset: /etc/mkinitcpio.d/linux.preset: 'default'
-> -k /boot/vmlinuz-linux -c /etc/mkinitcpio.conf -g /boot/initramfs-linux.img
==> Starting build: 4.4.1-2-ARCH
-> Running build hook: [base] -> Running build hook: [udev] -> Running build hook: [autodetect] -> Running build hook: [modconf] -> Running build hook: [block] -> Running build hook: [filesystems] -> Running build hook: [keyboard] -> Running build hook: [fsck] ==> Generating module dependencies
==> Creating gzip-compressed initcpio image: /boot/initramfs-linux.img
==> Image generation successful
==> Building image from preset: /etc/mkinitcpio.d/linux.preset: 'fallback'
-> -k /boot/vmlinuz-linux -c /etc/mkinitcpio.conf -g /boot/initramfs-linux-fallback.img -S autodetect
==> Starting build: 4.4.1-2-ARCH
-> Running build hook: [base] -> Running build hook: [udev] -> Running build hook: [modconf] -> Running build hook: [block] ==> WARNING: Possibly missing firmware for module: aic94xx
==> WARNING: Possibly missing firmware for module: wd719x
-> Running build hook: [filesystems] -> Running build hook: [keyboard] -> Running build hook: [fsck] ==> Generating module dependencies
==> Creating gzip-compressed initcpio image: /boot/initramfs-linux-fallback.img
==> Image generation successful
Все, уходим, перезагружаемся с другого диска, система работает. В VirtualBox я не нашел другого способа выбрать жесткий диск для загрузки, кроме как убрать предыдущий диск или переткнуть нужный диск на номер по-младше:
new-drive-alone-arch

Итог

В других системах действия могут различаться, но данная статья показывает общую схему мероприятий, которые нужно проделать, чтобы перенести ОС на другой диск. Если разобраться в сути проделанных операций, то аналогичные действия можно проделать с любым другим линуксом.

110 комментариев к “Перемещение linux системы на другой диск

  1. Oh my goodness! Incredible article dude! Thank you, However I am encountering issues with your RSS. I don’t understand the reason why I cannot subscribe to it. Is there anyone else having identical RSS problems? Anyone who knows the solution can you kindly respond? Thanks!!

  2. Howdy! This blog post couldn’t be written any better! Going through this post reminds me of my previous roommate! He constantly kept talking about this. I will forward this post to him. Fairly certain he will have a good read. Many thanks for sharing!

  3. I was more than happy to find this web site. I want to to thank you for your time just for this wonderful read!! I definitely savored every little bit of it and I have you bookmarked to look at new information on your website.

  4. The very next time I read a blog, Hopefully it does not fail me just as much as this particular one. I mean, I know it was my choice to read through, however I truly thought you would probably have something helpful to talk about. All I hear is a bunch of complaining about something that you could possibly fix if you were not too busy seeking attention.

  5. Right here is the right website for anybody who really wants to understand this topic. You understand so much its almost tough to argue with you (not that I personally will need to…HaHa). You definitely put a brand new spin on a subject that has been written about for years. Great stuff, just excellent.

  6. As a person who’s always been cautious regarding my blood sugar level, locating Sugar Defender
    has been an alleviation. I feel a lot a lot more in control, and my recent exams
    have actually shown positive enhancements. Recognizing
    I have a reliable supplement to sustain my routine provides me
    assurance. I’m so happy for Sugar Defender’s influence on my health!

  7. For many years, I have actually battled unpredictable blood sugar swings that left me feeling drained pipes and sluggish.
    But considering that including Sugar Defender into my regular, I’ve observed a significant improvement in my general power and stability.
    The feared mid-day distant memory, and I value that this natural
    remedy accomplishes these results without any undesirable or damaging reactions.

    truthfully been a transformative exploration for me.

  8. Discovering Sugar Protector has actually been a game-changer for me, as
    I have actually constantly been vigilant regarding handling
    my blood sugar levels. With this supplement, I really feel equipped to take charge of my
    health, and my most recent clinical check-ups have actually shown a considerable turn-around.
    Having a reliable ally in my corner supplies me with a complacency and
    peace of mind, and I’m deeply appreciative for the extensive distinction Sugar Protector
    has made in my wellness.

  9. I’ve had problem with blood glucose fluctuations for several
    years, and it truly influenced my energy degrees throughout the day.

    Since beginning Sugar Defender, I feel much more balanced and alert, and I do not
    experience those afternoon sags any longer! I love that it’s an all-natural option that works with no
    severe side effects. It’s absolutely been a game-changer for me

  10. As somebody that’s always bewared about my blood
    sugar level, discovering Sugar Defender has actually been an alleviation. I feel a lot more in control, and my current exams have actually revealed favorable renovations.
    Understanding I have a trusted supplement to sustain my routine provides me comfort.

    I’m so thankful for Sugar Protector’s influence on my health and wellness!

  11. For many years, I’ve fought unforeseeable blood
    sugar level swings that left me really feeling drained
    and inactive. But since including Sugar my power degrees are currently
    stable and consistent, and I no more hit a wall in the mid-days.
    I appreciate that it’s a gentle, natural technique that doesn’t come
    with any kind of undesirable negative effects. It’s truly
    changed my life.

  12. Nice post. I learn something new and challenging on sites I stumbleupon on a daily basis. It’s always useful to read through content from other writers and practice a little something from their sites.

  13. Hi there! This article couldn’t be written much better! Looking at this article reminds me of my previous roommate! He always kept talking about this. I will send this information to him. Pretty sure he’s going to have a good read. Thanks for sharing!

  14. After exploring a handful of the articles on your site, I really appreciate your way of writing a blog. I added it to my bookmark website list and will be checking back in the near future. Take a look at my web site as well and let me know your opinion.

  15. Hi! I could have sworn I’ve been to this website before but after going through some of the articles I realized it’s new to me. Regardless, I’m definitely happy I found it and I’ll be book-marking it and checking back regularly.

  16. This is the perfect website for everyone who would like to understand this topic. You understand so much its almost tough to argue with you (not that I really would want to…HaHa). You certainly put a brand new spin on a topic that’s been discussed for ages. Wonderful stuff, just great.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

*