Linux перенос системы ssd

Перенос Линукс с HDD на SSD

Расскажу подробно, как я делал перенос своих настроенных систем Линукс, установленных на HDD, на купленный SSD. В теорию, как обычно, вдаваться не буду, только практика.

Итак, купил я SSD 480 Гб. Естественно, SSD нужен не для хранения фильмов и музыки, а для установки операционной системы, так как именно твердотельные накопители обеспечивают быструю работу системы. У меня на жёстких дисках были установлены, настроены и прекрасно работали три ОС Линукс: Debian Buster, Arch Linux и Calculate Linux. Понятно, что мне совершенно не улыбалось переустанавливать и перенастраивать рабочие системы. Оставался простой выход — перенести системы на SSD как есть, грубо говоря, скопировать. Опыт работы с cp, tar, rsync и Clonezilla у меня был, оставалось выбрать один из этих способов и применить.

Cp — шелл-команду копирования я применять не стал, не знаю, почему. Просто не захотел. Хотя она наверняка сработала бы без проблем. Нужно было лишь смонтировать разделы в точки монтирования и написать в консоли команду sudo cp -a /mnt/XXX /mnt1/XXX (о том, как и что монтировать, скажу ниже) — и далее.

Архиваторы tar и Clonezilla я не стал применять потому, что потребовалось бы куда-то записать архив (лишнее место), а потом его разархивировать.

Остановился я на утилите синхронизации rsync.

Скорее всего, rsync не установлен в системе по умолчанию, значит, надо его установить. Что проще? Соответствующей своей ОС командой установки (apt — Debian, pacman — Arch, yum — RHEL, urpmi — Rosa, zypper — OpenSuse, в общем, каждый должен уже знать, какой командой в его системе устанавливаются программы) устанавливаем rsync. Для Дебиан и всех его производных: sudo apt install rsync. Всё, rsync установлен.

Теперь нужно подготовить новый SSD (если кто-то решил переносить на HDD никакой разницы нет). То есть нужно создать необходимые разделы на диске. Можно воспользоваться консолью или консольными программами cfdisk, parted, но мне в данном случае удобнее использовать графический GParted — так всё нагляднее, меньше шанс сделать ошибку. Поскольку я переносил 3 системы, разбивка была достаточно сложной, но обычно люди пользуются одной ОС, поэтому для простоты я опишу перенос одной ОС.

Итак, запускаем GParted и создаём разделы. Понятно, сперва выбираем свою разметку: MBR или GPT, — затем уже разделы. Можно сделать один общий раздел, можно хоть 5-6 разделов для одной системы, но я обычно делаю три раздела: /boot, /, /home. Но в самом начале диска я оставляю 1-2Мб неразмеченного пространства (для MBR, в GPT нужно размечать немного иначе). Затем создать /boot размером 500МБ — 1Гб в файловой системе ext2, / (корневой раздел) размером от 20 до 50 ГБ (у меня в файловой системе btrfs (самый оптимальный вариант для SSD), но никто не мешает Вам форматировать / в другую ФС: ext4 или reiserfs, кому что больше нравится). И наконец /home, размер которого определяете исходя из возможностей и надобностей. У меня /home 100Гб и тоже в btrfs. И, что бы там ни говорили о том, что производители SSD уже резервируют часть диска для переопределения испорченных ячеек, я всё же оставляю гигабайт 15-20 неразмеченными в конце диска.

Читайте также:  Загрузка модуля в линукс

Допустим, у Вас получилось так (просто пишу для удобства дальнейшего изложения, конечно, у Вас может быть по-другому; ориентируйтесь на свою разбивку диска):

Поскольку у меня btrfs, и я хочу использовать все возможности этой ФС, теперь я применяю сжатие и создаю подтом:

sudo mount /dev/sdb2 /mnt

sudo btrfs property set /mnt compression zstd (можно использовать сжатие lzo)

Проверяю, что сжатие включено:

sudo btrfs property get /mnt

Увидев, что compression=zstd , создаю подтом

sudo btrfs sub create /mnt/@

Вижу: @, значит, всё в порядке.

Для /home проделываю то же самое, только монтирую, понятно, /dev/sdb3 и создаю подтом @_home.

Теперь смонтируем свой работающий корень в точку монтирования:

sudo mount /dev/sda2 /mnt (для примера, у Вас свой раздел, не обязательно /sda2).

Подготовленный раздел монтирую в другую точку:

sudo mount /dev/sdb2 /mnt1

sudo rsync -avhH /mnt/ /mnt1/@ (перенос всего из /mnt — последний слеш обязателен, внутрь подтома @ в /mnt1).

Если работающая система тоже на ФС btrfs и тоже на подтоме, то команда будет sudo rsync -avhH /mnt/@/ /mnt1/@

Далее то же самое для /home.

Если создали 1 раздел для / и /home на btrfs, то в разделе /dev/sdb2 нужно было создать оба подтома сразу и переносить в каждый соответственно / и /home. Если работающая система, которую переносите, на одном разделе, а нужно перенести на 2 раздела или в 2 подтома одного раздела, команды будут несколько иные:

sudo rsync -avhH —exclude=’/home’ /mnt/ /mnt1/@ (перенос корня с исключением /home в корневой подтом)

sudo rsync -avhH /mnt/home/ /mnt1/@_home (перенос домашнего раздела в подтом домашнего раздела).

Аналогично переносим /boot, только проще, ибо там подтомов нет: смонтировать в точки монтирования исходный и записываемый разделы и

sudo rsync -avhHAX /mnt/ /mnt1 (по этому же типу копируем систему, если и в исходном и в конечном разделе всего 1 раздел, например в ext4).

Перенос файлов завершён. Но новая система, естественно, не запустится, потому что простое копирование файлов не есть установка. Во-первых, в новозаписанной системе неправильно прописано монтирование в файле /etc/fstab, во-вторых, неправильно прописан файл /grub.cfg в /boot, в-третьих, собственно не установлен загрузчик grub2. Будем всё это исправлять.

Читайте также:  Защита файлов от копирования linux

Смонтируем новый корень в /mnt или через графический Проводник откроем наш /dev/sdb2, найдём файл /etc/fstab, редактируем его. Для этого командой

выясняем UUID наших новых разделов и заменяем или дописываем необходимые разделы для монтирования и их опции (я подробно описывал этот процесс в другой статье «Линукс Минт в BTRFS на SSD» , повторяться не буду). Итак fstab исправлен. Теперь нужно установить grub2 и переписать /boot.

Для этого нужно смонтировать новую систему и войти в неё через chroot. Делается это так (описываю процесс для подтома btrfs):

монтируем корень в точку монтирования:

sudo mount -o subvol=@ /dev/sdb2 /mnt

(для системы без подтома, просто sudo mount /dev/sdb2 /mnt)

Мы должны увидеть список разделов ФС: /bin, /boot, /etc и т. д.

sudo mount -o subvol=@_home /dev/sdb3 /mnt/home

sudo mount /dev/sdb1 /mnt/boot

Монтируем псевдофайловые системы

sudo mount -o bind /sys /mnt/sys

sudo mount -o bind /dev /mnt/dev

sudo mount -o bind /proc /mnt/proc (в Арч Линукс последние три монтирования не требуются)

Приглашение консоли должно измениться. Всё, мы в переписанной системе. Устанавливаем grub2:

grub-install /dev/sdb (загрузчик устанавливается не в раздел, а на диск. Главное, не перепутайте, на какой).

grub-mkconfig -o /boot/grub/grub.cfg или

grub2-mkconfig -o /boot/grub2/grub.cfg (нужно предварительно посмотреть в /boot: если там каталог grub, то первая команда, если grub2 — вторая).

Почти закончили. Осталось выйти из chroot

Отмонтировать все разделы в обратном монтированию порядке:

sudo umount /mnt/proc и далее, до

Всё, можно перезагружаться, выбрав при перезагрузке в BIOS наш новый диск, на который только что установили grub.

Про то, что лучше вынести торренты, загрузки на HDD, а некоторые разделы монтировать в tmpfs, я писал в вышеназванной статье, если нужно, посмотрите её.

Источник

Как я переносил рабочую систему Ubuntu MATE 14.04 на новый SSD-диск

Как-то, работая, заметил, что мой личный ноутбук на i5-ом, с 8 гигабайтами ОЗУ на Linux уступает служебной, менее мощной, «лошадке».

Было решено сделать «ход конём»: вместо старого SATA HDD был приобретен новый SSD диск. Админы по сути своей существа ленивые, и я не стал исключением. Вспоминать все, что было сделано заново, выстраивая свою рабочую среду, не хотелось от слова совсем, и перенос операционной системы был наименее беспроблемным вариантом в моем случае. Итак, приступим.

В ноутбук, через переходник-контроллер в слот DVD-привода, был подключен вторым новый SSD-диск на 60 Гб, определившийся в системе как /dev/sdb.

На старом 320 Гб HDD-диске /dev/sda было три раздела: /dev/sda1 (swap — предварительно отключен), /dev/sda2 (/корневой раздел), /dev/sda3 (/home). Полный объем всех данных на всех разделах занимал около 50 Гб.

Загрузился в режим LiveUSB, на Ubuntu MATE 14.04 с usb-флешки. Gparted-ом создал раздел sdb1 на SSD-диске. Флаги не ставил. Входим в привилегированный режим root:

Читайте также:  Linux mount all disks

Проверяем есть ли поддержка TRIM:

hdparm -I /dev/sdb | grep -i trim 

* Data Set Management TRIM supported (limit 1 block).

Вывод листинга означает, что поддержка TRIM есть и она активна.

Проверяем выравнивание разделов:

parted /dev/sdb align-check opt 1 

Если 1 выровнено или 1 aligned, то все в порядке.

Создаем каталоги точек монтирования:

mount /dev/sdb1 /mnt/sdb1 mount /dev/sda2 /mnt/sda2 

Переносим, синхронизируя данные с корневого раздела:

rsync -qaHEAXh /mnt/sda2/* /mnt/sdb1 

где:
-q — уменьшить уровень подробностей
-a — архивный режим
-H — сохранять жесткие ссылки
-E — сохранить исполняемость файлов
-A — сохранить списки ACL
-X — сохранить расширенные атрибуты
-h — выходные числа в легко воспринимаемом формате

Монтируем раздел с каталогом пользователя и также переносим с него данные:

mount /dev/sda3 /mnt/sda3 rsync -qaHEAXh /mnt/sda3/* /mnt/sdb1/home 

Для большей сохранности от случайных ошибок отмонтируем разделы исходного HDD-диска:

umount /mnt/sda2 umount /mnt/sda3 

Монтируем файловые системы нативной ОС, в которую перенесли данные:

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

Операцией chroot изменяем рабочий корневой каталог на тот, в который переносим данные:

Бекапим один из конфигурационных файлов со сведениями о файловых системах:

Добавляем актуальную метку UUID раздела sdb1 в fstab:

ls -l /dev/disk/by-uuid |grep sdb >> /etc/fstab 

И приводим его к примерному виду:

# / was on /dev/sdb1 during installation
UUID=c45939b4-3a58-4873-aa6e-247746hgftb5 / ext4 errors=remount-ro 0 1

Обновляем конфигурационный файл загрузчика Linux:

Проверяем, правильно ли выставлены значения UUID раздела в конфигурационном файле grub.cfg:

cat /boot/grub/grub.cfg | grep «uuid sda2» 

где вместо «uuid sda2» подставляйте свое значение uuid-раздела. У меня остались старые значения, поэтому:

Отмонтируем файловые системы:

umount /mnt/sdb1/sys umount /mnt/sdb1/dev umount /mnt/sdb1/proc 

Меняем в grub.cfg все старые значения uuid раздела sda2, на новые значения uuid раздела sdb1. Мне проще было сделать так. Вы можете сделать это по своему.

Ставим сервер mysql, в котором есть утилита replace (пароль любой, одинаковый — не пригодится):

apt-get install mysql-server-5.5 
replace 'old_uuid' 'new_uuid' -- /mnt/sdb1/boot/grub/grub.cfg 

где old_uuid и new_uuid, старое и новое значения соответственно.

Проверяем поменялись ли значения в grub.cfg:

cat /mnt/sdb1/boot/grub/grub.cfg | grep «uuid sdb1» 

Заново монтируем файловые системы и chroot-имся:

mount --bind /proc /mnt/sdb1/proc mount --bind /dev /mnt/sdb1/dev mount --bind /sys /mnt/sdb1/sys chroot /mnt/sdb1 

Устанавливаем сам загрузчик на sdb:

Размонтируем всё смонтированное:

umount /mnt/sdb1/sys umount /mnt/sdb1/dev umount /mnt/sdb1/proc umount /mnt/sdb1 

Выходим из привилегированного режима root-а:

Перегружаемся в новую систему. При перезагрузке в BIOS не забываем выбрать и установить загрузку с нового устройства.

Источник

Оцените статью
Adblock
detector