Если система переносится на ZFS, тогда при выполнении установки grub получаем ошибку: # grub-install --target=x86_64-efi --efi-directory=/mnt/efi_sdc --boot-directory=/mnt/rpool/boot --root-directory=/mnt/rpool --modules=zfs Installing for x86_64-efi platform. grub-install: error: unknown filesystem. При попытке проверить совместимость системы, получаем ошибку: # grub-probe --target=fs /mnt/efi_sdc grub-probe: error: unknown filesystem.
Уточните, пожалуйста, на каком дистрибутиве воспроизводится и подробные шаги для воспроизведения ошибки
Использовал virtualization-pve-11.0-RC1-x86_64.iso 08-May-2025 08:04 2G: Ниже расписаны шаги с описанием, которые применял для получения ошибки (дойти до ошибки можно и с одним диском, создать два раздела, один отправить в vfat второй в zfs, результат будет схожий): ------- Подготовка Проверка текущей системы Убедитесь, что система загружена с /dev/sda (Btrfs) и работает корректно. Проверьте разметку диска /dev/sda: bash lsblk fdisk -l /dev/sda Пример вывода lsblk: text NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 500G 0 disk ├─sda1 8:1 0 512M 0 part /boot/efi ├─sda2 8:2 0 465G 0 part / Запишите размеры и типы разделов, особенно EFI (/boot/efi) и корневого раздела (/). Проверка целевых дисков Убедитесь, что /dev/sdc и /dev/sdd доступны и не содержат важных данных: bash lsblk /dev/sdc /dev/sdd Проверьте, что диски имеют одинаковый размер (или близкий, так как RAID1 использует минимальный размер): bash fdisk -l | grep -E '/dev/sdc|/dev/sdd' Установка необходимых пакетов Проверьте, установлен ли ZFS: bash zfs version Если ZFS не установлен, установите его: bash apt-get update apt-get install zfsutils-linux Убедитесь, что GRUB2 с поддержкой ZFS установлен: bash grub-install --version Если требуется, установите GRUB2: bash apt-get install grub-efi Резервное копирование Создайте резервную копию системы, например, с помощью rsync: bash rsync -aAXv / /mnt/backup (предполагается, что /mnt/backup — внешний диск или другой раздел). Этап 1: Подготовка дисков /dev/sdc и /dev/sdd для ZFS RAID1 Очистка дисков Убедитесь, что на /dev/sdc и /dev/sdd нет важных данных, затем очистите их: bash wipefs -a /dev/sdc wipefs -a /dev/sdd Создание разделов Скопируйте разметку с /dev/sda (EFI и корневой раздел) на /dev/sdc и /dev/sdd: bash sgdisk --replicate=/dev/sdc /dev/sda sgdisk -G /dev/sdc sgdisk --replicate=/dev/sdd /dev/sda sgdisk -G /dev/sdd sgdisk --replicate копирует таблицу разделов. sgdisk -G обновляет GUID для избежания конфликтов. Проверка разметки Убедитесь, что разметка на /dev/sdc и /dev/sdd идентична /dev/sda: bash fdisk -l /dev/sdc fdisk -l /dev/sdd Ожидается: /dev/sdc1 и /dev/sdd1 — EFI (тип EF00, FAT32), /dev/sdc2 и /dev/sdd2 — для ZFS. Форматирование EFI разделов Отформатируйте EFI разделы на /dev/sdc1 и /dev/sdd1: bash mkfs.vfat -F32 /dev/sdc1 mkfs.vfat -F32 /dev/sdd1 Этап 2: Создание ZFS RAID1 пула Создание ZFS пула Создайте ZFS пул с типом RAID1 (mirror) на разделах /dev/sdc2 и /dev/sdd2. Используйте идентификаторы /dev/disk/by-id/: bash zpool create -f -o ashift=12 rpool mirror /dev/disk/by-id/<id-sdc2> /dev/disk/by-id/<id-sdd2> Найдите идентификаторы: bash ls -l /dev/disk/by-id/ Пример: /dev/disk/by-id/ata-WDC_WD5000AAKX-001CA0_WD-WMAY12345678-part2 ashift=12 подходит для дисков с сектором 4K (проверьте спецификации дисков). Создание файловой системы Создайте файловую систему ZFS для корня: bash zfs create rpool/ROOT zfs create rpool/ROOT/alt-1 rpool/ROOT/alt-1 будет корневой файловой системой. Настройка параметров ZFS Установите точку монтирования: bash zfs set mountpoint=/mnt/rpool rpool/ROOT/alt-1 Включите сжатие (рекомендуется): bash zfs set compression=lz4 rpool Проверка пула Убедитесь, что пул создан и работает: bash zpool status rpool Ожидаемый результат: text pool: rpool state: ONLINE config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 sdc2 ONLINE 0 0 0 sdd2 ONLINE 0 0 0 Этап 3: Перенос данных с Btrfs на ZFS Копирование данных Скопируйте данные с текущей системы на ZFS: bash rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / /mnt/rpool Копирование EFI раздела Смонтируйте EFI разделы и скопируйте содержимое: bash mkdir /mnt/efi_sdc /mnt/efi_sdd mount /dev/sdc1 /mnt/efi_sdc mount /dev/sdd1 /mnt/efi_sdd rsync -aAXv /boot/efi/ /mnt/efi_sdc rsync -aAXv /boot/efi/ /mnt/efi_sdd Проверка данных Убедитесь, что данные скопированы корректно: bash ls -l /mnt/rpool ls -l /mnt/efi_sdc/EFI ls -l /mnt/efi_sdd/EFI Этап 4: Настройка загрузки с ZFS RAID1 (ALT Linux с GRUB2) Подготовка GRUB2 для ZFS Убедитесь, что GRUB2 поддерживает ZFS. В ALT Linux это обычно включено, но проверьте: bash grub-probe --target=fs / Если ZFS не поддерживается, установите GRUB2 с поддержкой ZFS: bash apt-get install grub-efi Установка GRUB2 Установите GRUB2 на оба EFI раздела (/dev/sdc1 и /dev/sdd1): bash grub-install --target=x86_64-efi --efi-directory=/mnt/efi_sdc --boot-directory=/mnt/rpool/boot grub-install --target=x86_64-efi --efi-directory=/mnt/efi_sdd --boot-directory=/mnt/rpool/boot Это установит GRUB2 на оба диска для обеспечения отказоустойчивости.
Платформа: virtualization-pve-11.0-RC1-x86_64.iso Пакет: grub 2.12-alt11 Ошибка воспроизвелась по вышеуказанным шагам # grub-install --target=x86_64-efi --efi-directory=/mnt/efi_sdb --boot-directory=/mnt/rpool/boot Выполняется установка для платформы x86_64-efi. grub-install: ошибка: неизвестная файловая система. В Sisyphus не проверялось
Нашел в чем проблема, не хватает коммита c464f1ec3 (fs/zfs/zfs: Mark vdev_zaps_v2 and head_errlog as supported, 2024-05-16) Добавлю в следующий релиз (grub-2.12-alt13)
grub-2.12-alt13 -> p11: Tue Jun 10 2025 Egor Ignatov <egori@altlinux> 2.12-alt13 - fix search by uuid for legacy boot - fix zfs module (closes: #54480) - fix fs write support detection (closes: #54394) - update ALT-specific translations (closes: #54493) Thu May 15 2025 Egor Ignatov <egori@altlinux> 2.12-alt12 - update-grub: use system locale when generating config - fix PXE boot (closes: #54249)