Мігруємо Linux на диск меншого розміру

В даній статті ми вже говорили про те, як перенести систему Linux на інший диск. Там ми використовували диск, на який переносили систему, більшого розміру ніж той, на якому ця система стояла. В цій статті хочу продемонструвати ще один спосіб, як можна вирішити цю проблему.

Додаємо в систему ще один диск меншого об’єму і маємо наступну картину:

fdisk -l

/dev/sdb1 - розділ EFI розміром 1М. Він потрібен для завантаження системи в режимі UEFI
/dev/sdb2 - розділ розміром 15G, на якому власне і живе наша система

Диск /dev/sda розміром 10G. На нього і знесемо нашу систему.

Для початку розмічаємо новий диск аналогічними розділами за допомогою утиліти fdisk. Як це правильно зробити, описано тут, тому не буду акцентувати на цьому увагу.

В результаті маємо наступне:

Тепер створюємо файлову систему на розділі /dev/sda2 аналогічній тій, що на робочому /dev/sdb2. В моєму випадку це ext4.

mkfs.ext4 /dev/sda2

Далі за допомогою dd клонуємо розділ /dev/sdb1:

dd if=/dev/sdb1 of=/dev/sda1

Тепер щоб коректно все це перенести необхідно завантажитись з будь якого LiveCD з ОС Linux. Підкидаємо  LiveCD з Ubuntu(в моєму випадку) і shutdown -r now.

Завантажились з LiveCD і найперше що робимо, це створюємо директорії, в які будемо монтувати стару і нову системи.

mkdir /mnt/old_system
mkdir /mnt/new_system

Також в каталозі /mnt/new_system потрібно створити додатково 3 каталоги – dev, proc, sys.

/dev – містить точки монтування фізичних та віртуальних пристроїв
/proc – схожий на каталог /dev, тому що він містить не звичайні файли, а спеціальні файли, що надають інформацію про запущені процеси та стан ядра. Вміст каталогу /proc використовується різними утилітами для отримання системної інформації етапу часу виконання.
/sys –  містить дані безпосередньо про систему. Тут можна дізнатися інформацію про ядро, драйвери та пристрої

Монтуємо розділ /dev/sdb2 в /mnt/old_system і /dev/sda2 в /mnt/new_system відповідно

mount /dev/sdb2 /mnt/old_system
mount /dev/sda2 /mnt/new_system

Далі за допомогою команди cp -av /mnt/old_system/* /mnt/new_system копіюємо всі файли системи зі старого диска на новий.

Після завершення процесу копіювання підмонтовуємо директорії /dev, /proc, /sys з нашого LiveCD в /mnt/new_system/dev(proc та sys відповідно)

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

Тепер залишається змінити в файлі fstab UUID диска, з якого будемо завантажуватись, на новий і встановити завантажувальник GRUB.

Змінюємо кореневий каталог на /mnt/new_system

chroot /mnt/new_system

Підглянемо UUID диска за допомогою blkid

blkid

Нас цікавить UUID диска /dev/sda2. Копіюємо його і вставляємо у  файлі /etc/fstab замість UUID’а попереднього диска.

Після цього встановлюємо завантажувальник GRUB на диск /dev/sda:

grub-install /dev/sda

На цьому все. Тепер відмонтовуємо всі розділи і перезавантажуємо систему. В BIOS міняємо порядок завантаження дисків і вантажимось з диска 10G. Якщо все зробили вірно, система завантажиться і буде працювати.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *