Автор Тема: Установка системы на zfs  (Прочитано 1278 раз)

Оффлайн hasculdr

  • Завсегдатай
  • *
  • Сообщений: 672
Установка системы на zfs
« : 13.12.2021 19:28:40 »
Как можно установить alt на zfs? По статьям для других дистрибутивов выполняется установка необходимых модулей ядра и пакетов на live-системе, подключается модуль ядра и выполняется "ручная" разметка диска. Далее по одной из статей система, установленная на "обычную" ФС переносится на заранее подготовленный диск. Второй вариант (статья от 15 года) уже без дополнительной установки системы, но я не понял в этом месте:
Цитировать
Только что мы подготовили пространство для нашей новой системы. Теперь иницилизируем и установим в нее основной репозиторий, а затем и саму систему с ядром:

rpm --root=/mnt --rebuilddb
curl -O http://mirror.yandex.ru/centos/7/os/x86_64/Packages/centos-release-7-1.1503.el7.centos.2.8.x86_64.rpm
rpm --root /mnt -ivh centos-release-*.rpm
yum -y --installroot=/mnt groupinstall base
yum -y --installroot=/mnt install kernel
В альтах подобное возможно? Или, может быть, уже есть более удобные способы установки на zfs?

Оффлайн yaleks

  • Мастер
  • ***
  • Сообщений: 6 222
Re: Установка системы на zfs
« Ответ #1 : 13.12.2021 22:47:26 »
Далее по одной из статей система, установленная на "обычную" ФС переносится на заранее подготовленный диск.
так можно, да. И наверно самый реализуемый вариант.

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 099
Re: Установка системы на zfs
« Ответ #2 : 13.12.2021 23:16:18 »
Есть LiveCD, с которых возможна установка. Даже если там нет модуля zfs, его можно дустановить. Дальше подготовить hdd и сделать установку. Может быть что-то получится. Может быть надо будет отдельный /boot не с zfs.

Оффлайн trs

  • Давно тут
  • **
  • Сообщений: 284
Re: Установка системы на zfs
« Ответ #3 : 14.12.2021 14:21:44 »
Если опыта работы с zfs нет, скорее всего, окажется проще ставить систему на обычную ФС, потренироваться с монтированием без legacy и fstab, после чего переносить.
« Последнее редактирование: 14.12.2021 14:23:21 от trs »

Оффлайн Kalt

  • Завсегдатай
  • *
  • Сообщений: 996
Re: Установка системы на zfs
« Ответ #4 : 14.12.2021 15:19:19 »
Попробовал на Btrfs ставить. По моим ощущениям она помедленнее работает...
Intel Xeon X3440 2,53GHz, MSI H55- G43, DDR3- 4x2GB, GF GT710

Оффлайн hasculdr

  • Завсегдатай
  • *
  • Сообщений: 672
Re: Установка системы на zfs
« Ответ #5 : 16.12.2021 10:35:31 »
Есть LiveCD, с которых возможна установка. Даже если там нет модуля zfs, его можно дустановить. Дальше подготовить hdd и сделать установку. Может быть что-то получится. Может быть надо будет отдельный /boot не с zfs.
Я попробовал - альтовый установщик не распознал zfs-разметку.

Оффлайн hasculdr

  • Завсегдатай
  • *
  • Сообщений: 672
Re: Установка системы на zfs
« Ответ #6 : 18.10.2022 21:23:29 »
Делаю еще одну попытку переезда на zfs, руководствуюсь оф. мануалом для дебиана. Систему переношу с помощью rsync, далее chroot и первый затык на дебиановском # update-initramfs -c -k allДелаю # make-initrd --kernel=$(uname -r)
# update-grub
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=alt --recheck --no-floppy
При попытке загрузки перенесенной системы получаю grub rescue mode, загрузчик не распознает zfs-разделы (unknown filesystem). При этом insmod zfs - не может найти модуль, insmod part_gpt - может. Здесь у меня опыта и знаний нет - какая это стадия загрузки? Модули могут загружаться из образа initrd?
Хочу узнать, собран ли образ initrd с поддержкой zfs - для других дистров по инструкции нужно добавлять поддержку zfs в dracut и т.п.
# make-initrd --kernel=$(uname -r)
[00:00:00] Config file: /etc/initrd.mk
[00:00:01] Generating module dependencies on host ...
[00:00:17] Used features: add-modules add-udev-rules buildinfo cleanup compress depmod-image gpu-drm kbd locales network plymouth rdshell rootfs system-glibc ucode
[00:00:17] Packed modules: af_packet amdgpu cec drm drm_kms_helper drm_ttm_helper evdev gpu-sched hid hid-generic hwmon i2c-algo-bit input-leds intel-agp intel-gtt iommu_v2 rc-core serio_raw sis-agp ttm via-agp
[00:00:17] Unpacked size: 58M
[00:00:17] Image size: 1,0K
[00:00:17] Image is saved as /boot/initrd-5.15.72-un-def-alt1.img

[root@host-41 default]#
[root@host-41 etc]# cat /etc/initrd.mk
# trying to detect modules and features to access to root volume
AUTODETECT = all
FEATURES += plymouth

Оффлайн trs

  • Давно тут
  • **
  • Сообщений: 284
Re: Установка системы на zfs
« Ответ #7 : 19.10.2022 11:24:09 »
При этом insmod zfs - не может найти модуль
Что бы находил, требуется собирать GRUB с поддержкой ZFS. Если я правильно понимаю, таковая не задействована. Следовательно, варианта два: самому собрать GRUB с libzfs (не стоит), либо создать отдельный раздел boot с ext4, как это обычно делается для экзотических файловых систем. Таким образом будет загружено ядро и initrd.

Что бы дальше загружать систему с ZFS, нужно упаковать модуль ядра в initrd. Для чего в /etc/initrd.mk (либо в отдельный файл в initrd.mk.d/) надо написать MODULES_ADD += zfs
Но этого мало, надо ещё как-то смонтировать корень. dracut на эту тему содержит какой-то код. В make-initrd, как я понял, нет поддержки.

Получается, что ZFS возможна, но не для корневого раздела?

Оффлайн Антон Мидюков

  • alt linux team
  • ***
  • Сообщений: 5 183
  • antohami@
Re: Установка системы на zfs
« Ответ #8 : 19.10.2022 12:18:55 »
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=alt --recheck --no-floppy

Нужно устанавливать неподписанный grub с опцией --no-uefi-secure-boot, тогда теоретически, если модуль доступен, то он добавится в начальный образ grub. Модуль будто есть:
/usr/lib64/grub/x86_64-efi/zfs.mod
/usr/lib64/grub/x86_64-efi/zfs.module
/usr/lib64/grub/x86_64-efi/zfscrypt.mod
/usr/lib64/grub/x86_64-efi/zfscrypt.module
/usr/lib64/grub/x86_64-efi/zfsinfo.mod
/usr/lib64/grub/x86_64-efi/zfsinfo.module
« Последнее редактирование: 19.10.2022 15:10:55 от Антон Мидюков »

Оффлайн hasculdr

  • Завсегдатай
  • *
  • Сообщений: 672
Re: Установка системы на zfs
« Ответ #9 : 19.10.2022 14:10:29 »
Благодарю, вечером продолжу эксперименты. Вариант с загрузочным разделом на ext2 оставлю на случай с окончательной неудачей загрузки с zfs-раздела.
Думаю, нужно еще пробовать костыли из arch-инструкции:
# GRUB fails to detect rpool name, hard code as "rpool"
sed -i "s|rpool=.*|rpool=rpool|"  /etc/grub.d/10_linux

echo GRUB_CMDLINE_LINUX=\"zfs_import_dir=/dev/disk/by-id/\" >> /etc/default/grub
Файл 10_linux будет перезаписан при обновлении пакета grub, верно?
Нужно устанавливать неподписанный grub с опцией --no-uefi-secure-boot
При дальнейшем обновлении ядер эта опция сохранится?
« Последнее редактирование: 19.10.2022 14:40:47 от hasculdr »

Оффлайн Антон Мидюков

  • alt linux team
  • ***
  • Сообщений: 5 183
  • antohami@
Re: Установка системы на zfs
« Ответ #10 : 19.10.2022 15:12:00 »
При дальнейшем обновлении ядер эта опция сохранится?

Начальный загрузчик обновится только при обновлении grub, так что не скоро узнаем.

Оффлайн hasculdr

  • Завсегдатай
  • *
  • Сообщений: 672
Re: Установка системы на zfs
« Ответ #11 : 19.10.2022 19:07:41 »
Нужно устанавливать неподписанный grub с опцией --no-uefi-secure-boot, тогда теоретически, если модуль доступен, то он добавится в начальный образ grub.
Так дошло до загрузки initramfs! Сейчас циклическое сообщение
Цитировать
initramfs: waiting for root...
В /etc/grub.d/10_linux ничего не правил. Буду пробовать собирать initramfs с модулем zfs.

Оффлайн hasculdr

  • Завсегдатай
  • *
  • Сообщений: 672
Re: Установка системы на zfs
« Ответ #12 : 19.10.2022 19:58:27 »
Код: (в системном файле ничего не менял) [Выделить]
# cat /etc/initrd.mk
# trying to detect modules and features to access to root volume
AUTODETECT = all

FEATURES += plymouth
Код: (все дописки тут) [Выделить]
# cat /etc/initrd.mk.d/zfs.mk
include /etc/initrd.mk

IMAGE_SUFFIX = -zfs

MODULES_ADD += zfs
В arch-инструкции настройка сборщика initrd:
tee /mnt/etc/mkinitcpio.conf <<EOF
HOOKS=(base udev autodetect modconf block keyboard zfs filesystems)
EOF
Стоит пытаться добавить их в конфиг? Вместо udev и keyboard вижу Used features: add-udev-rules и kbd. Возможно это одно и то же. Features посмотрел на alt-wiki, где посмотреть какие модули можно добавить make-initrd? /lib/modules/5.15.72-un-def-alt1/modules.alias (или .builtin)?
Первая попытка была без строчки про суффикс, была ошибка про невозможность перезаписать образ initrd.
Вот вывод сборки образа:
Код: (жирным выделил получившиеся добавки) [Выделить]
# make-initrd --kernel=$(uname -r)
[00:00:00] Config file: /etc/initrd.mk
[00:00:01] Generating module dependencies on host ...
[00:00:15] Used features: add-modules add-udev-rules buildinfo cleanup compress depmod-image gpu-drm kbd locales network plymouth rdshell rootfs system-glibc ucode
[00:00:15] Packed modules: af_packet amdgpu cec drm drm_kms_helper drm_ttm_helper evdev gpu-sched hid hid-generic hwmon i2c-algo-bit input-leds intel-agp intel-gtt iommu_v2 rc-core serio_raw sis-agp ttm via-agp
[00:00:15] Unpacked size: 58M
[00:00:15] Image size: 1,0K
[00:00:16] Image is saved as /boot/initrd-5.15.72-un-def-alt1.img

[00:00:00] Config file: /etc/initrd.mk.d/zfs.mk
[00:00:00] Generating module dependencies on host ...
[00:00:16] Used features: add-modules add-udev-rules buildinfo cleanup compress depmod-image gpu-drm kbd locales network plymouth rdshell rootfs system-glibc ucode
[00:00:16] Packed modules: af_packet amdgpu cec drm drm_kms_helper drm_ttm_helper evdev gpu-sched hid hid-generic hwmon i2c-algo-bit [b]icp[/b] input-leds intel-agp intel-gtt iommu_v2 rc-core serio_raw sis-agp [b]spl[/b] ttm via-agp [b]zavl zcommon zfs zlua znvpair zunicode zzstd[/b]
[00:00:16] Unpacked size: 61M
[00:00:16] Image size: 1,0K
[00:00:16] Image is saved as /boot/initrd-5.15.72-un-def-alt1-zfs.img
Обновление груба не увидело мой образ:
# update-grub
Generating grub configuration file ...
/usr/sbin/grub-probe: error: unknown filesystem.
/usr/sbin/grub-probe: error: unknown filesystem.
/usr/sbin/grub-probe: error: unknown filesystem.
/usr/sbin/grub-probe: error: unknown filesystem.
Found linux image: /boot/vmlinuz-un-def
skipping symlink: /boot/vmlinuz-un-def
Found linux image: /boot/vmlinuz
Found initrd image: /boot/initrd.img
Found linux image: /boot/vmlinuz-5.15.72-un-def-alt1
Found initrd image: /boot/initrd-5.15.72-un-def-alt1.img
Found linux image: /boot/vmlinuz-5.15.63-un-def-alt1
Found initrd image: /boot/initrd-5.15.63-un-def-alt1.img
Found ALT Workstation K 10.1  (Sorbaronia Mitschurinii) on /dev/sdb2 < это второй ssd, с которого сделан клон системы для zfs
Adding boot menu entry for UEFI Firmware Settings ...
Skipping memtest image in EFI mode
done
Код: (вывод без chroot, поэтому префикс /mnt) [Выделить]
# ls -l /mnt/boot/ | grep initrd
-rw------- 1 root root 38132629 окт 16 18:34 initrd-5.15.63-un-def-alt1.img
-rw------- 1 root root 38846482 окт 19 20:25 initrd-5.15.72-un-def-alt1.img
-rw------- 1 root root 40805848 окт 19 20:25 initrd-5.15.72-un-def-alt1-zfs.img
lrwxrwxrwx 1 root root       30 окт 16 18:40 initrd.img -> initrd-5.15.72-un-def-alt1.img
lrwxrwxrwx 1 root root       30 окт 16 18:40 initrd-un-def.img -> initrd-5.15.72-un-def-alt1.img
# ls -l /mnt/boot/ | grep vmlinuz
lrwxrwxrwx 1 root root       27 окт 16 18:40 vmlinuz -> vmlinuz-5.15.72-un-def-alt1
-rw-r--r-- 1 root root  7812888 авг 31 18:37 vmlinuz-5.15.63-un-def-alt1
-rw-r--r-- 1 root root  7813304 окт 10 20:29 vmlinuz-5.15.72-un-def-alt1
lrwxrwxrwx 1 root root       27 окт 16 18:40 vmlinuz-un-def -> vmlinuz-5.15.72-un-def-alt1
Должно быть и ядро с таким же суффиксом?
« Последнее редактирование: 19.10.2022 20:12:17 от hasculdr »

Оффлайн hasculdr

  • Завсегдатай
  • *
  • Сообщений: 672
Re: Установка системы на zfs
« Ответ #13 : 20.10.2022 20:14:41 »
Должно быть и ядро с таким же суффиксом?
Нет. Не должно быть дополнительных конфигов в /etc/initrd.mk.d, все дописки должны быть в /etc/initrd.mk. Образ пересобран, груб обновлен, но видимых изменений нет, толи initrd не видит пул, толи не научен zfs до конца.

Оффлайн tarkhil

  • Начинающий
  • *
  • Сообщений: 1
    • Email
Re: Установка системы на zfs
« Ответ #14 : 06.02.2023 14:42:56 »
Дальше продвинуться удалось?