Приветствую, интересует вопрос по созданию subvolume на готовом linux, если это конечно возможно. Мне нужно для снимков в timeshift (@ @home @log) Переискал интернет, самостоятельно найти не могу. Везде инструкции предназначенные для создания сабволов при установки системы. Так уж случилось, что имею только один раздел на диске с корневым каталогом.
sdb 8:16 0 223,6G 0 disk
├─sdb1 8:17 0 100M 0 part /boot/efi
├─sdb2 8:18 0 16M 0 part
├─sdb3 8:19 0 123G 0 part
└─sdb4 8:20 0 100,5G 0 part /
sdb3 - винда. sdb1 - esp, где лежит refind. Grub для linux нет. Первоначально постарался подготовить refind для определения btrfs и его сабволов(уж не знаю как сработает). Рассчитывал, что потом установлю сабволы.
Может найдётся эксперт, и объяснит новичку? Сижу на arch. Сам я в linux сфере около двух месяцев.
UPD
РЕШЕНИЕ:
В общем у меня всё получилось, вопрос закрыт. Специально для этого проводил эксперимент на arch linux в виртуальной машине. Выкладываю сюда мои действия. Может кому-нибудь пригодится. Также расскажу как настроить refind в зависимости от местонахождения boot.
К примеру имею каталог btrfs без сабволов:
/dev/sda3 / btrfs
/dev/sda2 /boot ext4
/dev/sda1 /boot/efi vfat
В процессе произвёл классическую установку refind(только для UEFI):
pacman -S refind gdisk
refind-install
Теперь переходим непосредственно к созданию разделов subvolum
Гружусь с livecd флешки.
Монтирую нужный том btrfs:
mount /dev/sda3 /mnt
lsblk #Проверяю каждый раз, чтобы не ошибиться
cd /mnt
Создаю волюмы:
btrfs su cr @ #Корневой раздел
btrfs su cr @var
btrfs su cr @home
btrfs su cr @snapshots
и теперь грубо перемещаю всё в @, естественно кроме var, home, snapshots, так как для них созданы свои разделы. Предварительно просматриваю всё содержимое корня командой ls, что бы потом перечислить их:
mv {boot,bin,dev,etc,lib,lib64,root,mnt,opt,proc,run,sbin,srv,sys,tmp,usr} @
Копируем всё содержимое папок var, home и .snapshots в @var, @home и @snapshots:
cp var/. @var
cp home/. @home
cp .snapshots/. @snapshots
Проверяем:
ls
у меня выходит так:
home var @ @home @snapshots @var
проверяем отдельно:
ls /mnt/@
ls /mnt/@var
ls /mnt/@home
ls /mnt/@snapshots
в принципе после проверки я лично удалил папки home snapshots var
и получается теперь так:
@ @home @snapshots @var
заранее можно создать пустые папки в каталоге:
mkdir /mnt/@/{var,home,.snapshots}
да-да я нашёл для себя нелёгкий путь, если что можете поправить меня
Выхожу из mnt и отсоединяю
cd ..
umount /mnt
lsblk #проверочка
По новой монтирую, но с учётом сабволов:
mount -o subvol=@ /dev/sda3 /mnt
mount -o subvol=@var /dev/sda3 /mnt/var
mount -o subvol=@home /dev/sda3 /mnt/home
mount -o subvol=@snapshots /dev/sda3 /mnt/.snapshots
mount /dev/sda2 /mnt/boot
mount /dev/sda1 /mnt/boot/efi
lsblk
name SIZE MOUNTPOINTS
sda1 300M /mnt/boot/efi
sda2 500M /mnt /boot
sda3 59.2G /mnt/.snapshots
/mnt/home
/mnt/var
/mnt/
Пытаюсь причрутиться:
arch-chroot /mnt
дальше снова выхожу из чрута, копирую fstab на всякий случай, и создаю новый:
exit
cp /mnt/etc/fstab /mnt #пожалуй оставлю его в корне, вроде не мешает
genfstab -U /mnt > /mnt/etc/fstab
cat /mnt/etc/fstab #Проверяю
Если на этом этапе у вас всё получилось, и создался новый fstab, где соответствуют ваши каталоги и сабволы, то мы продолжаем. Дальше буду настраивать связь с refind.
Сразу рассказываю, есть различия в настройках refind, в зависимости где будет находится boot.
Узнаю UUID раздела с btrfs:
blkid /dev/sda3
Закидываю в папку нужный драйвер:
cp /mnt/usr/share/refind/drivers_x64/btrfs_x64.efi /mnt/boot/efi/EFI/refind/drivers_x64/btrfs_x64.efi
Если boot на отдельном разделе:
nano /mnt/boot/refind_linux.conf
По этому пути у меня находится конфиг
Вношу строчку:
“Boot subvol root” “root=”PARTUUID=******** rw rootflags=subvol=@”
@ - это мой корень
По поводу UUID или PARTUUID для системы не принципиально. Естественно если вы впишите root=PARTUUID, а введёте код UUID, то ничего не найдёт.
Остальные строчки можно закомментить, чтобы не мешали
Если boot в разделе subvolume:
nano /mnt/boot/refind_linux.conf
“Boot subvol root boot” “root=”PARTUUID=******** rw rootflags=subvol=@ initrd=@\boot\initranfs-linux.img”
По идее refind легко находит ядра, даже без дополнительной команды в конфиге, но пускай будет