Фон:
grub-probe
ошибка коры упомянута вышеСуществует дискуссия здесь о grub-probe
и как это должно "просто быть лучше", но это помогает, пока это не приходит. Я получил идею от того обсуждения.
Больше детали: полный экземпляр ошибки (для моей системы) похож:
/usr/sbin/grub-probe: error: failed to get canonical path of `/dev/ata-ADATA_SP550_2G1520009135-part1'.
Это прокладывается под землей в убивании детали, извергнутой дальше от способной команды для установки графических драйверов (но это не важно).
Этот диск соответствует одному из моих разделов ZIL. Я добавил ZIL и кэш после завершенной установки, таким образом, я предполагаю вот почему, что я не видел проблемы прежде. Я еще не перезагрузил, и вот почему я вижу проблему вообще. Да, можно перезагрузить для фиксации всего этого, но принятие Вас не хочет делать это, продолжать читать:
Если я смотрю в/dev, я вижу ссылки на все свои диски ZFS, которые похожи:
lrwxrwxrwx 1 root root 4 Sep 16 23:31 ata-WDC_WD10EARS-00Y5B1_WD-WMAV51436394-part1 -> sdc1
lrwxrwxrwx 1 root root 4 Sep 16 23:31 ata-WDC_WD20EZRX-00D8PB0_WD-WCC4MK86SWX7-part1 -> sdd1
lrwxrwxrwx 1 root root 4 Sep 16 23:31 ata-WDC_WD20EZRX-00D8PB0_WD-WCC4N1085683-part1 -> sde1
lrwxrwxrwx 1 root root 4 Sep 16 23:31 ata-WDC_WD2500JS-22MHB0_WD-WCANK4053187-part1 -> sda1
... но особенно ни один для разделов ZIL.
Я могу протестировать ситуацию путем выполнения:
$ sudo grub-probe /
grub-probe: error: failed to get canonical path of `/dev/ata-ADATA_SP550_2G1520009135-part1'.
Таким образом, вопрос: как решить эту проблему так grub-probe
ведет себя?
Существует переменная среды, которая фиксирует это. Проблема от моего чтения, кажется, что Grub нравится идея 'поддерживать' zfs, но не идею устранить проблемы, связанные с zfs в Grub. Конкретно его плохая обработка ошибок с точки зрения нахождения вещей.
, Например, инструменты личинки, которые поставлются с Ubuntu 16.x, не найдут начальную загрузку / на объеме ZFS без некоторого вмешательства пользователя, и затем счастливо записать некоторым (но не все) необходимый вывод файлов от любой утилиты Вы используете для папки начальной загрузки/, что это просто сказало Вам, что не могло найти.
В любом случае...
http://list.zfsonlinux.org/pipermail/zfs-discuss/2016-June/025765.html
To check if you have commit (should see full paths):
ZPOOL_VDEV_NAME_PATH=1 zpool status
If so you can do:
ZPOOL_VDEV_NAME_PATH=1 grub-whatevs ....
можно передать переменную как вход к необходимым утилитам личинки, или можно указать его как переменную оболочки в .bashrc или .profile корня или некоторых такой с...
export ZPOOL_VDEV_NAME_PATH=YES
переменная шпулька причин для создания отчетов о полных путях, а не относительных путях/dev к дискам, которые могут или не могут работать правильно с zfs. Утилиты Grub проверяют состояние шпульки на пулы zfs для нахождения дисков, которые содержат их. Поэтому изменение вывода состояния шпульки фиксирует личинку.
я соглашаюсь, что пользователям не придется иметь дело с этим, в отношении комментария femulator. Действительное решение? То же как любой проект с открытым исходным кодом, который томится в ошибках, которые никогда не исправляются. Разветвите его, зафиксируйте его сами и прекратите использовать источник project/library/whatever. Способ FOSS "уволить" кого-то, другими словами, ;). По-видимому, Debian знал об этой конкретной ошибке семь лет назад.
Это было единственной вещью, останавливающей меня от успешной миграции пула начальной загрузки FreeBSD RaidZ к Ubuntu. Если кто-либо еще делает попытку чего-то подобного, процесс относительно прост, пока Вы понимаете ZFS достаточно хорошо для игнорирования частей документации от Grub и zfsonlinux, которые являются неправильными (такие как установка корневого набора данных, чтобы не автосмонтироваться, а...? Как точно это собирается загрузиться затем?). Несколько нелепо, что Ubuntu указывает в их документах, что загрузчик является большей частью небезопасной 'функции' Linux, которая верна, что я предполагаю, но в этом случае это - также явный дефект Ubuntu. Мне потребовался бы час или два для миграции пула BSD ZFS в другую ОС, если я, возможно, сделал это с помощью утилит Sun/Solaris, это на самом деле работает. Проблема, я должен был использовать утилиты Linux (как Grub), которые не делают (или едва) работы в какой-то момент, таким образом, там находится отказ в течение других двух дней, я потратил фиксацию этого. Ubuntu была бы намного лучше, если бы она не должна была копаться для начальной загрузки...
Каков ZFS, прослушивают/устраняют для этого? пользователям не придется иметь дело с этим-> https://github.com/zfsonlinux/grub/issues/5
Принятие Вас не хочет перезагружать (см. ниже), ответ на это оказывается создающими подобными ссылками для дисков, которые отсутствуют. Для меня и моей системы, это означало добавлять эти ссылки:
$ cd /dev
$ sudo ln -sf sdf1 /dev/disk/by-id/ata-ADATA_SP550_2G1520009135-part1
$ sudo ln -sf sdf3 /dev/disk/by-id/ata-ADATA_SP550_2G1520009135-part3
$ sudo ln -sf sdg1 /dev/disk/by-id/ata-SPCC_Solid_State_Disk_EB84076413B201101308-part1
$ sudo ln -sf sdg3 /dev/disk/by-id/ata-SPCC_Solid_State_Disk_EB84076413B201101308-part3
(раздел 2 на обоих дисках зеркально отражается, чтобы быть ZIL для home
, но grub-probe
не заботится об этом),
Формула для этого должна определить который диски grub-probe
потребности, затем создайте символьные ссылки для них согласно шаблону:
$ sudo ln -sf {sdname}{partN} /dev/disk/by-id/{diskid}-part{partN}
Можно определить диски, требуемые путем повторения команды $ sudo grub-probe /
и создание ссылок, пока это не счастливо и в конечном счете сообщает:
$ sudo grub-probe /
zfs
Пока это не будет счастливо, Вы будете видеть жалобы, которые похожи:
$ sudo grub-probe /
grub-probe: error: failed to get canonical path of `/dev/disk/by-id/ata-ADATA_SP550_2G1520009135-part3'.
Обратите внимание, что это жалуется конкретно на -part3
и дисковое имя ata-ADATA_SP550...
Создайте ссылку:
Найдите дисковое соответствие ata-ADATA_SP....
путем выполнения:
$ ls -l /dev/disk/by-id | grep ata-ADATA_SP
lrwxrwxrwx 1 root root 9 Sep 17 13:45 ata-ADATA_SP550_2G1520009135 -> ../../sdf
lrwxrwxrwx 1 root root 10 Sep 17 13:49 ata-ADATA_SP550_2G1520009135-part1 -> ../../sdf1
lrwxrwxrwx 1 root root 10 Sep 17 13:51 ata-ADATA_SP550_2G1520009135-part2 -> ../../sdf2
lrwxrwxrwx 1 root root 10 Sep 17 13:50 ata-ADATA_SP550_2G1520009135-part3 -> ../../sdf3
Обратите внимание, что это - sdf, таким образом, Ваша команда ссылки становится:
$ sudo ln -sf /dev/sdf3 /dev/disk/by-id/ata-ADATA_SP550_2G1520009135-part3
Промывка и повторение до grub-probe
команда успешно выполняется. Если Вы знаете то, что Вы делаете, и Вы знаете, какие разделы используются любыми дисками, участвующими в ROOT
пул, любой ценой пойдите непосредственно в конец и свяжите тех, которые вместо использования grub-probe
сказать Вам, что сделать.
Можно думать, что это ниспровергало бы причину, Вы использовали их /dev/disk/by-id/*
имена во-первых. Если /dev/sd*
изменение путей, Вы политы из шланга и должны сделать ссылки снова, правильно? Оказывается, что альтернатива всему этому должна перезагрузить хост: это создает ссылки на перезагрузку.