ZFS+UEFI+GPT+upgrade 11.1 -> 11.2: как обновить загрузчик

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
avama
проходил мимо
Сообщения: 4
Зарегистрирован: 2018-08-26 18:06:29

ZFS+UEFI+GPT+upgrade 11.1 -> 11.2: как обновить загрузчик

Непрочитанное сообщение avama » 2018-08-26 18:30:45

Здравствуйте.

Имелась установленная с нуля FreeBSD 11.1 (AMD64). Загрузка UEFI + BIOS, GPT, ZFS mirror - конфигурация создана установщиком. Текущий тип загрузки - UEFI.
Выполнил бинарный апгрейд до 11.2 по хэндбуку (https://www.freebsd.org/releases/11.2R/ ... ation.html). Все прошло хорошо, система грузится, работает.
Версия ZFS-пула была на момент апгрейда системы актуальной, теперь zpool status намекает на его апгрейд.
Вопрос: как теперь аккуратно обновить загрузчики (efi и freebsd-boot) на дисках? Апгрейдить ZFS-пул до выполнения этого действия не хочется.

Разделы:

Код: Выделить всё

root# gpart show
=>        40  5860533088  ada0  GPT  (2.7T)
          40      409600     1  efi  (200M)
      409640        1024     2  freebsd-boot  (512K)
      410664         984        - free -  (492K)
      411648    16777216     3  freebsd-swap  (8.0G)
    17188864  5843343360     4  freebsd-zfs  (2.7T)
  5860532224         904        - free -  (452K)

=>        40  5860533088  ada1  GPT  (2.7T)
          40      409600     1  efi  (200M)
      409640        1024     2  freebsd-boot  (512K)
      410664         984        - free -  (492K)
      411648    16777216     3  freebsd-swap  (8.0G)
    17188864  5843343360     4  freebsd-zfs  (2.7T)
  5860532224         904        - free -  (452K)
Пул:

Код: Выделить всё

root# zpool status
  pool: zroot
 state: ONLINE
status: Some supported features are not enabled on the pool. The pool can
        still be used, but some features are unavailable.
action: Enable all features using 'zpool upgrade'. Once this is done,
        the pool may no longer be accessible by software that does not support
        the features. See zpool-features(7) for details.
  scan: scrub repaired 0 in 2h25m with 0 errors on Tue Mar 27 06:17:37 2018
config:

        NAME        STATE     READ WRITE CKSUM
        zroot       ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            ada0p4  ONLINE       0     0     0
            ada1p4  ONLINE       0     0     0

errors: No known data errors
Лог загрузки:

Код: Выделить всё

root# dmesg | grep ZFS
ZFS filesystem version: 5
ZFS storage pool version: features support (5000)
Сведения в интернетах разноречивые:
gpart bootcode -p /boot/boot1.efi -i1 ada0/ada1 - не упомянут ZFS,
gpart bootcode -p /boot/gptzfsboot -i 1 ada0/ada1 - не UEFI

Именно моей комбинации не нашел, решил посоветоваться.
Как сделать правильно?

Заранее спасибо.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

guest
проходил мимо

ZFS+UEFI+GPT+upgrade 11.1 -> 11.2: как обновить загрузчик

Непрочитанное сообщение guest » 2018-08-26 21:01:59

Разумете разницу между:
- загрузчиком
и
- файловой системой zfs
?

# zpool status сообщает об изменениях в zfs и намекает что для
использования новых features/возможностей необходимо
выполнить:
# zpool upgrade
# zfs upgrade

В /usr/src/UPDATING расписана процедура связанная с апгрейдом
загрузчика gptzfsboot, которая НИКАКОГО ОТНОШЕНИЯ к UEFI Boot НЕ ИМЕЕТ:

Код: Выделить всё

        ZFS notes
        ---------
        When upgrading the boot ZFS pool to a new version, always follow
        these two steps:

        1.) recompile and reinstall the ZFS boot loader and boot block
        (this is part of "make buildworld" and "make installworld")

        2.) update the ZFS boot block on your boot drive

        The following example updates the ZFS boot block on the first
        partition (freebsd-boot) of a GPT partitioned drive ada0:
        "gpart bootcode -p /boot/gptzfsboot -i 1 ada0"

        Non-boot pools do not need these updates.
перевести или сами осилите?

efiboot != gptzfsboot

# man uefi

Код: Выделить всё

     /boot/boot1.efi
                   First stage UEFI bootstrap
     /boot/loader.efi
                   Final stage bootstrap
     /boot/boot1.efifat
                   msdosfs(5) FAT file system image containing boot1.efi for
                   use by bsdinstall(8) and the bootcode argument to gpart(8).
/boot/boot1.efifat - это готовый образ FAT с загрузчиком bootx64.efi, который можно
на партицию записать посредством dd
/boot/boot1.efi == bootx64.efi - ищет ZFS и загружает с него загрузчик loader.efi

Итого, если у нас UEFI BIOS, он ищет FAT16 или FAT32, на нем ищет /efi/boot/BOOTx64.efi
который загружает в память и передает ему управление
/efi/boot/BOOTx64.efi (он же /boot/boot1.efi) - ищет ZFS, на ZFS находит /boot/loader.efi
и загружает его и передает ему управление,
/boot/loader.efi - загружает систему

Так как EFI загрузчик не особо обновляется, то можно его не обновлять, но можно
и обновить.

Закрепим, обновление ЗАГРУЗЧИКА при апгрейде FreeBSD с zroot (если корень на ZFS):
- в случае традиционного BIOS и GPT, ОБЯЗАТЕЛЬНО нужно обновлять загрузчик gptzfsboot
- в случае UEFI BIOS обновить можно (при желании) /efi/boot/BOOTx64.efi == /boot/boot1.efi

Обновление ZFS:
# zpool upgrade
# zfs upgrade

man zpool
man zfs
man uefi

Итог: в случае загрузки FreeBSD с UEFI, можно не обновлять загрузчик, но нужно обновить
ZFS если был апгрейд FreeBSD с релиза на релиз.

про UEFI:
freebsd-unix-dlya-nachinayuschih-f53/ka ... 44619.html
http://unix1.jinr.ru/~lavr/uefi.html

avama
проходил мимо
Сообщения: 4
Зарегистрирован: 2018-08-26 18:06:29

ZFS+UEFI+GPT+upgrade 11.1 -> 11.2: как обновить загрузчик

Непрочитанное сообщение avama » 2018-08-27 14:58:53

guest писал(а):
2018-08-26 21:01:59
Разумете разницу между:
- загрузчиком
и
- файловой системой zfs
?
Я имел в виду, что при расссогласовании обновлений загрузчика и корневого пула ZFS можно потом и не загрузиться. Примеров в сети много.

Также см. https://www.freebsd.org/releases/11.2R/relnotes.html, пункт 9.1.
перевести или сами осилите?
efiboot != gptzfsboot
Не трудитесь. Как можно видеть, на моих дисках лежат оба загрузчика. С этих дисков можно загружаться как на MB с UEFI, так и без него.
Вопрос был о том, как обновить оба, не испортив ни одного. Ответ - ключ -i, спасибо, увидел.
Так как EFI загрузчик не особо обновляется, то можно его не обновлять, но можно
и обновить.
В этот раз он обновился.
Файлы в /boot/

Код: Выделить всё

boot1.efi
boot1.efifat
обновлены, размер нового boot1.efi больше почти на 20кб.

Итак, ответ на мой вопрос:

Код: Выделить всё

gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 2 ada0/ada1
gpart bootcode -p /boot/boot1.efifat -i 1 ada0/ada1
(pmbr не обновлялся, но он там тоже должен быть для загрузки c GPT без UEFI, так что ничему не мешает)
Проверил (сначала на виртуалках с UEFI и без), все в порядке.

Тема закрыта, благодарю за разъяснения.

P.S.
Кстати, если кому интересно: новые zpool features в 11.2 (в сравнении с 11.1):
device-removal
obsolete-counts
zpool-checkpoints

Аватара пользователя
xM
ст. лейтенант
Сообщения: 1316
Зарегистрирован: 2009-01-15 23:57:41
Откуда: Königsberg
Контактная информация:

ZFS+UEFI+GPT+upgrade 11.1 -> 11.2: как обновить загрузчик

Непрочитанное сообщение xM » 2018-09-03 19:55:11

Проделывал то же самое где-то с месяц назад на своих серверах с ZFS. Всё правильно разобрались.
Единственный момент что для RAID1 надо загрузчик(-и) обновлять на обоих дисках.
IT voodoo blog https://kostikov.co