[freebsd] boot

Владимир Друзенко vvd at unislabs.com
Wed Dec 30 17:41:57 EET 2020


29.12.2020 10:28, Valentin Nechayev пишет:
> 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-

Активно использую 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. Но это очень сильно зависит от юзкейсов для этой 
рабочей станции.



More information about the freebsd mailing list