В рамках текущего-грядущего апгрейда я переношу установленную систему 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