#!/bin/bash # == Перенос rootfs с microSD на NVMe == # Работает для Raspberry Pi 4 с подключенным NVMe-диском через USB set -e ### Настройки NVME_DEV="/dev/sda" MOUNT_POINT="/mnt/nvme_root" PARTITION="${NVME_DEV}1" echo "🔍 Проверка текущей корневой файловой системы..." CURRENT_ROOT=$(findmnt / -o SOURCE -n) echo "✅ Сейчас rootfs: $CURRENT_ROOT" if [[ "$CURRENT_ROOT" == "$PARTITION" ]]; then echo "⛔ Уже используется NVMe в качестве корня. Выход." exit 1 fi echo "🧼 Подготовка раздела на NVMe-диске ($NVME_DEV)..." sudo parted -s "$NVME_DEV" mklabel msdos sudo parted -s "$NVME_DEV" mkpart primary ext4 1MiB 100% sudo mkfs.ext4 "$PARTITION" -F -L rootfs-nvme echo "📂 Монтируем $PARTITION в $MOUNT_POINT..." sudo mkdir -p "$MOUNT_POINT" sudo mount "$PARTITION" "$MOUNT_POINT" echo "📦 Копируем текущую файловую систему на NVMe..." sudo rsync -aAXv / "$MOUNT_POINT" \ --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/boot/*"} echo "🛠 Обновляем fstab на NVMe..." UUID=$(sudo blkid -s UUID -o value "$PARTITION") echo "UUID=$UUID / ext4 defaults,noatime 0 1" | sudo tee "$MOUNT_POINT/etc/fstab" > /dev/null echo "💾 Резервное копирование и правка cmdline.txt..." BOOT_PART="/boot" CMDLINE="$BOOT_PART/cmdline.txt" BACKUP="$BOOT_PART/cmdline.backup.txt" sudo cp "$CMDLINE" "$BACKUP" sudo sed -i "s|root=[^ ]*|root=UUID=$UUID|" "$CMDLINE" echo "✅ Завершено! Теперь:" echo " - Загрузка будет идти с SD" echo " - RootFS — с NVMe" echo " - Старый rootfs не удалён, можно откатиться" echo " - Оригинальный cmdline.txt сохранён как cmdline.backup.txt" echo "🔁 Перезагрузись командой: sudo reboot"