Перенос Fedora c SATA на M.2
Команды в основном описаны в документации, за исключением несостыковки в использовании luks и создании нового раздела.
Рассматривается ситуация, при которой существовал раздел /boot без efi.
Перенести все данные через clonezilla на носитель, у которого есть 512Мб+ свободного места;
Загрузиться с live-дистрибутива Fedora;
Через gparted или что угодно еще посмотреть список разделов (запомнить раздел для /boot);
Создать новый раздел (для этого и требуется дополнительное свободное место) fat32 для будущего /boot/efi;
В случае, если используется luks, выполнить последовательность команд;
cryptsetup luksOpen /dev/mapper/fedora_localhost--live-root myvolume vgchange -ay fedora_localhost-live mkdir -p /mnt/root mount /dev/mapper/myvolume /mnt/root
Если luks не используется, вместо /dev/mapper/myvolume указать свое устройство.
Примонтировать остальные разделы;
mount /dev/nvme0n1p1 /mnt/root/boot/ mount -o bind /dev /mnt/root/dev mount -o bind /proc /mnt/root/proc mount -o bind /sys /mnt/root/sys mount -o bind /run /mnt/root/run mount -o bind /sys/firmware/efi/efivars /mnt/root/sys/firmware/efi/efivars/ mount /dev/nvme0n1p4 /mnt/root/boot/efi
Переходим в примонтированное окружение и переустанавливаем grub;
chroot /mnt/root dnf reinstall shim-* grub2-efi-* grub2-common
Обновляем initramfs (актуально при запуске на новом железе).
dracut --kver kernel-6.4.15-100.fc37.x86_64 --force sync && exit
После можно перезагружаться и пробовать загрузку с диска.