АЙТИШНЫЙ САЙТ ПЕТРА СЕМИЛЕТОВА

ПЕТР СЕМИЛЕТОВ

КАК ПЕРЕНЕСТИ ARCH LINUX НА ДРУГОЙ ВИНТ (С BIOS на UEFI)

В рамках текущего-грядущего апгрейда я переношу установленную систему Arch Linux со старого винта на новый (установленный еще в старом железе, ибо нового пока нет).

Комп загружался в старом добром режиме BIOS (через CSM), без UEFI. Предвидя трудности с загрузкой, основанной на BIOS (на новом железе), я решил на старом переключиться в режим UEFI и перенести систему на новый винт. Конечно, я мог установить ее с нуля, но не хотелось потом переустанавливать софт и всё настраивать.

Итак, я поступил следующим образом.

Шаг 1: Подключив новый SSD-винт, я запустил GParted и разбил новый винт на разделы следующим образом

/dev/sdf1 - загрузочный раздел EFI, 512 мб, FAT32

/dev/sdf2 - будущий раздел рут, ext4, 190 гб

/dev/sdf3 - Linux swap,  32,8 гб

Шаг 2: Затем я скопировал текущую систему на новый рутовый раздел командой:

rsync -axHAXv --exclude={"/dev/*","boot","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / /mnt/newroot

Где /mnt/newroot - директория, к которой подмонтирован новый рут.

Шаг 3: После этого я узнал UUID’ы разделов нового винта. Это можно сделать командами:

blkid

или

fdisk -l

Отмечу, что UUID меняется при форматировании раздела.

Шаг 4: Пришло время править файл fstab на новом руте - /mnt/newroot/etc/fstab:

Я добавил туда разделы с sdf (убрав старый рут).

UUID=810B-5669 /boot vfat defaults 0 1
UUID=97093d4a-383a-433f-8e5d-c45df0664f99 /              ext4    defaults,noatime 0 1
UUID=0f47b80b-1860-453f-bf47-b7e50bbcba59 none swap defaults 0 0

Шаг 5: Завершив эти приготовления в старой системе, я вставил флэшку с установщиком Arch, перезагрузился, зашел в настройки материнки и включил UEFI. После чего сохранил настройки и снова перезагрузился.

Шаг 6: Из запущенного с флэшки Arch, я подмонтировал разделы нового винта командами:

mount /dev/sdf2 /mnt
mount --mkdir /dev/sdf1 /mnt/boot

То есть, рутовый раздел нового винта подмонтирован сейчас к mnt, а загрузочный раздел EFI - к /mnt/boot

Шаг 7: Затем я вошел в систему, скопированную на рутовый раздел нового винта:

arch-chroot /mnt

Теперь я “внутри” Линукса на новом рутовом разделе, и он для меня сейчас - / (sdf2), а boot это sdf1.

Шаг 8: Следующим шагом надо переустановить ядро и вообще метапакет Linux:

yay -S linux

либо

pacman -S linux

Шаг 9: Устанавливаем загрузчик grub в каталог /boot (на EFI-раздел sdf1):

grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB

Шаг 10: Генерируем конфиг для grub:

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

Шаг 11: Выходим из новой системы в систему, что запущена с флэшки:

exit

Шаг 12: Размонтируем разделы:

umount -R /mnt/boot
umount -R /mnt

Шаг 13: Вынимаем флэшку, перезагружаемся:

reboot

Всё!

//22.11.2022