что делать, если FreeBSD установлена на ZFS и мы нечаянно обновили ZFS с v13 на v14

1. Качаем live-cd

Скачать вот отсюда образ: http://mfsbsd.vx.sk/ и нарезать болванку. Ценность данной болванки в том, что в нее уже заинтегрирована 14-я версия ZFS, то есть она будет актульна минимум до появления 8.1-что угодно.iso.

2. Загрузиться с live-cd

Пароль рута — mfsroot.

3. Смотрим какие диски находятся в пуле

Командой gpart show посмотреть, какие диски в пуле, где находится загрузчик. например у меня было:

gpart show
=>       34  625140268  ad10  GPT  (298G)
34        128     1  freebsd-boot  (64K)
162    8388608     2  freebsd-swap  (4.0G)
8388770  616751532     3  freebsd-zfs  (294G)

=>       34  976773101  ad12  GPT  (466G)
34   16777216     1  freebsd-swap  (8.0G)
16777250  959995885     2  freebsd-zfs  (458G)

То есть в массиве два диска, ad10 и ad12, ебучий загрузчик не той версии живет в первом разделе ad10.

4. Монтируем всё

zpool import имя_пула

Примечание: команда zpool import без параметров выдаст все несмонтированные пулы и их имена.

zfs mount -a

Будет смонтировано содержимое пула, причем в корень, с перекрытием имеющейся ФС. «Всем похуй» ©

5. Апгрейдим загрузчик

gpart bootcode -p /boot/gptzfsboot -i 1 adN

где adN — правильное название устройства из пункта 3, где находится загрузчик. В моем случае это было ad10. С удовольствием наблюдал истерику, когда какой-то неведомый дятел тупо копировал строку из примера (где было ad4), не смотря на то, что вывод его gpart-а давал ad0.

6. Завершаем спасательную операцию.

cd /
umount -a
reboot