Pull to refresh

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

Reading time 3 min
Views 36K
Как-то, работая, заметил, что мой личный ноутбук на 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:

sudo -i

Проверяем есть ли поддержка 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, то все в порядке.

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

mkdir /mnt/{sda2,sda3,sdb1}

Монтируем нужные разделы:

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 изменяем рабочий корневой каталог на тот, в который переносим данные:

chroot /mnt/sdb1

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

cp /etc/fstab{,.bak}

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

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

Редактируем fstab:

nano /etc/fstab

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

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

где UUID=значение sdb1

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

update-grub

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

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

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

Выходим из chroot:

exit

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

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

Меняем UUID-ы:

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:

grub-install /dev/sdb

Выходим из chroot:

exit

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

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

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

exit

Перегружаемся в новую систему. При перезагрузке в BIOS не забываем выбрать и установить загрузку с нового устройства.
Tags:
Hubs:
+4
Comments 35
Comments Comments 35

Articles