# Перенос системы на новый раздел

```shell
❯ lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINTS
NAME        FSTYPE   SIZE MOUNTPOINTS
nvme0n1            953,9G 
├─nvme0n1p1 vfat     499M /boot/efi
├─nvme0n1p2 ext4     100G 
├─nvme0n1p3 ext4     400G /home/da2001/oldhome
└─nvme0n1p4 ext4   453,4G /
❯ df -h | grep nvm
/dev/nvme0n1p4     446G         121G  302G           29% /
/dev/nvme0n1p3     393G         254G  120G           68% /home/da2001/oldhome
```

```shell
❯ cat /etc/fstab
proc            /proc                   proc    nosuid,noexec,gid=proc                          0 0
devpts          /dev/pts                devpts  nosuid,noexec,gid=tty,mode=620,ptmxmode=0666    0 0
#tmpfs          /tmp                    tmpfs   nosuid                                          0 0
UUID=11cb9b94-71bd-4ed2-9467-9e9172525593       /       ext4    relatime        1       1
UUID=39FA-63AA  /boot/efi       vfat    umask=0,quiet,showexec,iocharset=utf8,codepage=866      1       2
# installer-feature-swapfile
/swap   swap    swap    defaults        0       0
UUID=b1493839-453c-455e-8850-1ab33ca3f511    /home/da2001/oldhome    ext4    relatime    0    0
```

```shell
❯ ls -ln /home
итого 4
drwx------ 40 1000 1000 4096 мар 26 15:12 da2001
```

***

Задача сделать следующую разметку:

```shell
nvme0n1            953,9G 
├─nvme0n1p1 vfat     499M /boot/efi
├─nvme0n1p2 ext4     100G /
├─nvme0n1p3 ext4     400G /home
└─nvme0n1p4 ext4   453,4G /other
```

## План действий

### Создание снимка всего диска с помощью Clonezilla на NAS

| Параметр     | Значение                          |
|--------------|-----------------------------------|
| DNS          | 192.168.13.1                      |
| NAS          | nas.dav.lan или 192.168.13.5      |
| Пользователь | da2001                            |
| Путь         | /mnt/main/data/Backup/bkp_sapelen |

### Копирование текущей системы в LiveUSB на NAS

1. Смонтировать текущий корневой раздел в /mnt

```shell
mount /dev/nvme0n1p4 /mnt
```

2. Скопировать текущую систему на NAS

```shell
rsync -ahHAXS --numeric-ids --info=progress2 --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*"} -e "ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" /mnt da2001@192.168.13.5:/mnt/main/data/Backup/bkp_sapelen
```

### Подготовка разделов (LiveUSB)

1. Форматируем `nvme0n1p2` (новый корень)

```shell
mkfs.ext4 /dev/nvme0n1p2
```

2. Форматируем `nvme0n1p3` (новый `/home`) — на нём сейчас `oldhome` - уже не нужен

```shell
mkfs.ext4 /dev/nvme0n1p3
```

3. `nvme0n1p4` (старый корень) **!НЕ ФОРМАТИРУЕМ!** — на нём текущая система

На завершающем шаге смотнируем его в `/other`, данные сохранятся

4. Копирование системы

- Создаём точки монтирования

```shell
umount /mnt
mkdir -p /mnt/new_root /mnt/old_root
```

- Монтируем новый корень

```shell
mount /dev/nvme0n1p2 /mnt/new_root
```

- Монтируем старый корень (текущая система) только для чтения

```shell
mount -o ro /dev/nvme0n1p4 /mnt/old_root
```

- Копируем систему на новый раздел

```shell
rsync -ahHAXS --numeric-ids --info=progress2 \
    /mnt/old_root/ /mnt/new_root/ \
    --exclude=/home
```

- Настройка fstab

```shell
blkid
vim /mnt/new_root/etc/fstab
```

```shell
UUID=<UUID-nvme0n1p1>       /boot/efi      vfat    umask=0,quiet,showexec,iocharset=utf8,codepage=866      1       2
UUID=<UUID-nvme0n1p2>       /              ext4    relatime                                                1       1
UUID=<UUID-nvme0n1p3>       /home          ext4    relatime                                                1       2
UUID=<UUID-nvme0n1p4>       /other         ext4    relatime                                                0       0
```

5. Перенос `/home`

- Монтируем новый home раздел

```shell
mount /dev/nvme0n1p3 /mnt/new_root/home
```

- Копируем данные в новый home

```shell
rsync -ahHAXS --numeric-ids --info=progress2 /mnt/old_root/home/da2001/ /mnt/new_root/home/da2001/
chown -R 1000:1000 /mnt/new_root/home/da2001
```

6. Обновление загрузчика

- Монтируем системные каталоги

```shell
# mount /dev/nvme0n1p2 /mnt/new_root - уже должен быть смонтирован
mount --bind /dev /mnt/new_root/dev
mount --bind /proc /mnt/new_root/proc
mount --bind /sys /mnt/new_root/sys
mount /dev/nvme0n1p1 /mnt/new_root/boot/efi
```

- Меняем корень - chroot

```shell
chroot /mnt/new_root
```

- Внутри chroot — проверка текущего состояния

```shell
# Проверяем, что видим правильные разделы
lsblk

# Проверяем, что EFI раздел примонтирован
mount | grep efi
```

- Генерируем новую конфигурацию GRUB

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

- Устанавливаем загрузчик в EFI

```shell
grub-install --target=x86_64-efi \
             --efi-directory=/boot/efi \
             --bootloader-id=altlinux \
             --recheck
```

Можно перезагружать систему и проверять.

После успешной загрузки стоит удалить лишние записи

```shell
sudo efibootmgr -v
```

и исправить меню grub, также удалить лишнее
