В даній статті ми вже говорили про те, як перенести систему Linux на інший диск. Там ми використовували диск, на який переносили систему, більшого розміру ніж той, на якому ця система стояла. В цій статті хочу продемонструвати ще один спосіб, як можна вирішити цю проблему.
Додаємо в систему ще один диск меншого об’єму і маємо наступну картину:
/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
Нас цікавить UUID диска /dev/sda2
. Копіюємо його і вставляємо у файлі /etc/fstab замість UUID’а попереднього диска.
Після цього встановлюємо завантажувальник GRUB на диск /dev/sda:
grub-install /dev/sda
На цьому все. Тепер відмонтовуємо всі розділи і перезавантажуємо систему. В BIOS міняємо порядок завантаження дисків і вантажимось з диска 10G. Якщо все зробили вірно, система завантажиться і буде працювати.