[freebsd] boot

6 views
Skip to first unread message

Nick Kostirya

unread,
Dec 28, 2020, 10:28:56 PM12/28/20
to fre...@uafug.org.ua
Привет.
Неожиданно возникло пару вопросов про загрузку.

На домашнем компьютере у меня установлена с давних времен Windows 7 и FreeBSD.
Загрузка сделана на основе NTLDR, который использует boot1 как простую копию /boot/boot1 в виде C:\bootbsd.bin.

Вопрос. Как boot1 находит boot2?

На ноутбуке у меня установлен boot0 при помощи boot0cfg, и две FreeBSD.
Предполагаю, boot1 ищет boot2 на том же разделе, где сам установлен?

Но как boot1 тогда находит boot2, когда запускается из под NTLDR?

Если я поставлю еще одну FreeBSD и захочу использовать NTLDR, то как boot1 найдет нужный boot2.

Или bsdlabel и gpart не просто копируют /boot/boot1 в нужную область диска, но и прописывают информацию об boot2? И мне нужно будет для NTLDR использовать не оригинальный /boot/boot1, а при помощи dd скопировать boot1 с раздела второй FreeBSD?

Второй вопрос про FreeBSD, установленную на второй диск.
В /usr/share/doc/faq/disks.html#NT-BOOTLOADER говориться, что нужно при помощи boot0cfg подготовить boot0. А как?

Просто указать boot0, что он загружен со второго диска?

boot0cfg -B -d 0x81 -o setdrv,noupdate -s 1

Или так не сработает, и нужно делать обычный boot0 с загрузкой MBR второго диска?

boot0cfg -B -o setdrv,noupdate -s 5


Третий вопрос.
Кстати, если 3 диска и везде стоит boot0, то по F5 они будет грузиться по кругу?
1 -> 2 -> 3 -> 1 -> 2
Или как?


Четвертый вопрос.
На ноутбуке у меня 4 раздела: первые 2 с FreeBSD, третий - зашифрованный home, четвертый большой.
Использую два первых раздела для поочередного обновления. Например, работаю за 11.2, вышла 12.1 - не трогаю 11, а вместо 10 ставлю 12. Если все нормально, что использую ее, иначе продолжаю 11.

Вопрос: на будущем новом ноутбуке стоит ли переходить на GPT или для такого использования нет преимуществ перед MBR? Стоит ли также использовать на ноуте ZFS? С ней не сталкивался подробно, так как не админ, а обычный юзер. :-)

_______________________________________________
freebsd mailing list
fre...@uafug.org.ua
http://mailman.uafug.org.ua/mailman/listinfo/freebsd

Valentin Nechayev

unread,
Dec 29, 2020, 2:29:11 AM12/29/20
to Nick Kostirya, fre...@uafug.org.ua
hi,

Tue, Dec 29, 2020 at 05:28:37, nikolay.kostirya wrote about "[freebsd] boot":

> На домашнем компьютере у меня установлена с давних времен Windows 7 и FreeBSD.
> Загрузка сделана на основе NTLDR, который использует boot1 как простую копию /boot/boot1 в виде C:\bootbsd.bin.
>
> Вопрос. Как boot1 находит boot2?
>
> На ноутбуке у меня установлен boot0 при помощи boot0cfg, и две FreeBSD.
> Предполагаю, boot1 ищет boot2 на том же разделе, где сам установлен?
>
> Но как boot1 тогда находит boot2, когда запускается из под NTLDR?

1. Читается таблица MBR (только 4 первичных раздела) с указанного диска
(его хэндл для BIOS вызовов, обычно 0x80).
2. В таблице ищется первый раздел с id 0xA5 и установленным признаком
"загрузочный" (flags & 0x80).
3. Если в пункте 2 ничего не найдено, ищется первый раздел с id
0xA5, уже не смотря на флаги.
4. С начала раздела грузится 8KB и передаётся управление на начало
boot2 в загруженном.

Из-под чего он запущен, ему пофиг - лишь бы хэндл диска передали
правильный, дальше он сам ищет.

Дальше эта машина работает так: у неё уже есть readonly драйвер UFS.
Она ищет /boot.config на предмет, надо ли заменить текущее устройство
(пока что в понятиях BIOS) и /boot/loader на что-то другое. Если нет,
то ищет его на текущем устройстве. Если не нашло, грузит /boot/kernel,
но уже грузит криво, пригодно только к ремонтным работам.
/boot/loader уже умеет исполнять Forth, и на скриптах написано всё
прочее включая меню с демоном с вилкой.

> Если я поставлю еще одну FreeBSD и захочу использовать NTLDR, то как boot1 найдет нужный boot2.

Никак, он найдёт первый.
Но через флаг активного раздела можно переключать, откуда он будет
брать boot2 (и, что может быть важнее, /boot.config, а уже из этого
файла можно задать, откуда будет браться /boot/loader или что-то
вместо него).

> Или bsdlabel и gpart не просто копируют /boot/boot1 в нужную область диска, но и прописывают информацию об boot2? И мне нужно будет для NTLDR использовать не оригинальный /boot/boot1, а при помощи dd скопировать boot1 с раздела второй FreeBSD?

Нет, на этом уровне такого не делается.

> Второй вопрос про FreeBSD, установленную на второй диск.
> В /usr/share/doc/faq/disks.html#NT-BOOTLOADER говориться, что нужно при помощи boot0cfg подготовить boot0. А как?
>
> Просто указать boot0, что он загружен со второго диска?
>
> boot0cfg -B -d 0x81 -o setdrv,noupdate -s 1
>
> Или так не сработает, и нужно делать обычный boot0 с загрузкой MBR второго диска?
>
> boot0cfg -B -o setdrv,noupdate -s 5

А откуда вообще пойдёт его грузить? По указанию в BIOS?

Если BIOS сразу загрузит со второго диска, то AFAIK эти пляски уже
не нужны, boot0 сразу узнает хэндл диска.
Всё это "-s 5" нужно, если BIOS пошёл грузить первый диск и хочется
через boot0 перекинуть загрузку на второй.

> Третий вопрос.
> Кстати, если 3 диска и везде стоит boot0, то по F5 они будет грузиться по кругу?
> 1 -> 2 -> 3 -> 1 -> 2
> Или как?

После последнего оно идёт на флоповод, а не первый HDD.

=== cut ===
/*
* If it was illegal or we cycled through them, go back to drive 0.
*/
xorb %al,%al # Drive 0
=== end cut ===

> Четвертый вопрос.
> На ноутбуке у меня 4 раздела: первые 2 с FreeBSD, третий - зашифрованный home, четвертый большой.
> Использую два первых раздела для поочередного обновления. Например, работаю за 11.2, вышла 12.1 - не трогаю 11, а вместо 10 ставлю 12. Если все нормально, что использую ее, иначе продолжаю 11.
>
> Вопрос: на будущем новом ноутбуке стоит ли переходить на GPT или для такого использования нет преимуществ перед MBR? Стоит ли также использовать на ноуте ZFS? С ней не сталкивался подробно, так как не админ, а обычный юзер. :-)

Если новый бук умеет только EFI загрузку, у вас альтернативы GPT уже
нет, но тогда надо думать про переходник из EFI. Там гибкости больше,
но технология другая и "не родная".
Если он умеет из MBR, то в случае использования GPT учтите, что boot1
его уже не умеет, там свой аналог в виде gptboot, но ему нужен
отдельный раздел.

Про ZFS пусть расскажут те, кто её плотно мучал, но я помню, что она
хотела много оперативки, а на лаптопах с этим сложнее.


-netch-

Nick Kostirya

unread,
Dec 29, 2020, 3:40:16 AM12/29/20
to fre...@uafug.org.ua
On Tue, 29 Dec 2020 09:28:56 +0200
Valentin Nechayev <ne...@netch.kiev.ua> wrote:

> ...

Спасибо!

Владимир Друзенко

unread,
Dec 30, 2020, 10:42:12 AM12/30/20
to fre...@uafug.org.ua
29.12.2020 10:28, Valentin Nechayev пишет:

Активно использую ZFS, но исключительно на «bare-metal» серверах.
Для файлсерверов ограничения на использование памяти ZFS ставлю
побольше, либо вообще оставляю по умолчанию.
На почтовых серверах не сильно ограничиваю, а вот на серверах
виртуализации (VirtualBox) сильно, но для 12.x это не так важно - уже
нормально отдаёт ARC при необходимости, а не как раньше.
Прописываю в /boot/loader.conf что-то типа:
vfs.zfs.prefetch_disable="1"
vfs.zfs.arc_min="67108864"
vfs.zfs.arc_max="536870912"

Правда в 12.2 намудрили с Wired:
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=252227
Пришлось ещё дополнительно крутить vm.max_wired.

Из основных удобств для меня: soft raid, сжатие lz4, удалённые и
локальные бэкапы снапшотами, интеграция с NFS сервером.

На виртуалках и на рабочих станциях не использую ZFS.
На рабочей станции менее чем с 16GB памяти не стал бы использовать. В
крайнем случае с 8GB. Но это очень сильно зависит от юзкейсов для этой
рабочей станции.

Nick Kostirya

unread,
Jan 2, 2021, 12:24:07 AM1/2/21
to Владимир Друзенко, fre...@uafug.org.ua
On Wed, 30 Dec 2020 18:41:57 +0300
Владимир Друзенко <v...@unislabs.com> wrote:

> Активно использую ZFS, но исключительно на «bare-metal» серверах.
> Для файлсерверов ограничения на использование памяти ZFS ставлю
> побольше, либо вообще оставляю по умолчанию.
> На почтовых серверах не сильно ограничиваю, а вот на серверах
> виртуализации (VirtualBox) сильно, но для 12.x это не так важно - уже
> нормально отдаёт ARC при необходимости, а не как раньше.
> Прописываю в /boot/loader.conf что-то типа:
> vfs.zfs.prefetch_disable="1"
> vfs.zfs.arc_min="67108864"
> vfs.zfs.arc_max="536870912"
>
> Правда в 12.2 намудрили с Wired:
> https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=252227
> Пришлось ещё дополнительно крутить vm.max_wired.
>
> Из основных удобств для меня: soft raid, сжатие lz4, удалённые и
> локальные бэкапы снапшотами, интеграция с NFS сервером.
>
> На виртуалках и на рабочих станциях не использую ZFS.
> На рабочей станции менее чем с 16GB памяти не стал бы использовать. В
> крайнем случае с 8GB. Но это очень сильно зависит от юзкейсов для этой
> рабочей станции.

Спасибо за информацию.

А почему вы используете VirtualBox, а не bhyve? В каких условиях у VirtualBox преимущества и какие?

Интересно также в чем заключается интеграция ZFS и NFS.

Владимир Друзенко

unread,
Jan 2, 2021, 1:51:24 AM1/2/21
to UaFUG
02.01.2021 08:23, Nick Kostirya пишет:

> On Wed, 30 Dec 2020 18:41:57 +0300
> Владимир Друзенко <v...@unislabs.com> wrote:
>
>> Активно использую ZFS, но исключительно на «bare-metal» серверах.
>> Для файлсерверов ограничения на использование памяти ZFS ставлю
>> побольше, либо вообще оставляю по умолчанию.
>> На почтовых серверах не сильно ограничиваю, а вот на серверах
>> виртуализации (VirtualBox) сильно, но для 12.x это не так важно - уже
>> нормально отдаёт ARC при необходимости, а не как раньше.
>> Прописываю в /boot/loader.conf что-то типа:
>> vfs.zfs.prefetch_disable="1"
>> vfs.zfs.arc_min="67108864"
>> vfs.zfs.arc_max="536870912"
>>
>> Правда в 12.2 намудрили с Wired:
>> https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=252227
>> Пришлось ещё дополнительно крутить vm.max_wired.
>>
>> Из основных удобств для меня: soft raid, сжатие lz4, удалённые и
>> локальные бэкапы снапшотами, интеграция с NFS сервером.
>>
>> На виртуалках и на рабочих станциях не использую ZFS.
>> На рабочей станции менее чем с 16GB памяти не стал бы использовать. В
>> крайнем случае с 8GB. Но это очень сильно зависит от юзкейсов для этой
>> рабочей станции.
> Спасибо за информацию.
>
> А почему вы используете VirtualBox, а не bhyve? В каких условиях у VirtualBox преимущества и какие?

1 хост с Q6600 и 3 хоста с i7 920:
https://lists.freebsd.org/pipermail/freebsd-virtualization/2014-March/002429.html

Пролетаю мимо со своим «старьём».

> Интересно также в чем заключается интеграция ZFS и NFS.

zfs set sharenfs="…" zpool/fs

Владимир Друзенко via freebsd

unread,
Jan 20, 2021, 12:06:48 PM1/20/21
to UaFUG
20.01.2021 19:16, Anton Saietskii пишет:
> А почему не ="64M", ="512M"? Давно так можно, а читать удобнее.

Уже видел, но переделывать не стал. Этим записям лет по 10 - не знаю
поддерживалось ли это тогда или нет.

>> Правда в 12.2 намудрили с Wired:
>> https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=252227
>> Пришлось ещё дополнительно крутить vm.max_wired.
>>
>> Из основных удобств для меня: soft raid, сжатие lz4, удалённые и
>> локальные бэкапы снапшотами, интеграция с NFS сервером.
>>
>> На виртуалках и на рабочих станциях не использую ZFS.
>> На рабочей станции менее чем с 16GB памяти не стал бы использовать. В
>> крайнем случае с 8GB. Но это очень сильно зависит от юзкейсов для этой
>> рабочей станции.

> Это, пожалуй, перестало быть актуальным с выходом 9.х. Неужели до сих
> пор ещё смущает, что кэш ФС отображается не в buf/cache, а в отдельной
> строке + wired?

При чём тут смущение? Или это неудачно подобранные слова?
Оно только недавно (12.x?) стало нормально отдавать ARC обратно. Да и
преимущества ZFS перед UFS для десктопных нужд не так очевидны.
Не говоря уже о мелких виртуалках с 1GB памяти и меньше, диски которых и
так лежат на ZFS на хостовой системе.

Reply all
Reply to author
Forward
0 new messages