From: kmeaw
Date: 2022-11-24 19:28:11Z
А атрибут "EFI System Partition" на разделе стоит? В gptfdisk (gdisk)
это делается через x, a, $partno, 0.
Я бы сказал, что схема с UEFI выглядит более понятной и расширяемой -
больше не нужны пляски с stage1/1.5/2 загрузчиками, теперь прошивка
может сразу загрузить ядро ОС, если оно влезает в два гигабайта. И схема
никак не меняется при портировании ОС на AArch64, например.
В Linux для этого есть опция CONFIG_EFI_STUB, которая включена в
большинстве дистрибутивов - она добавляет в ядро необходимые заголовки и
предзагрузчик, делая его UEFI-приложением, которое прошивка может
запустить без всяких загрузчиков-прослоек. Для Secure boot сильно проще
выглядит подпись - не надо по кусочкам дотягивать chain of trust до
ядра.
И теперь больше не надо заниматься копированием загрузочных областей (и
в некоторых случаях - LILO, GRUB embedding - править записанные в них
смещения) для того, чтобы новый диск стал загрузочным. Достаточно либо
положить ядро (или загрузчик) в специфичное для архитектуры место (для
PC/amd64 это $esp/EFI/boot/bootx64.efi) или записать путь до него в
NVRAM. А ещё, наконец-то, прошивки научились качать ядра по HTTP,
который сильно проще дотянуть до целевой машины, чем TFTP - а на
high-latency high-bandwidth каналах ещё и скорость нормальная получится,
не нужно больше дополнительного этапа с {i,g}PXE/EtherBoot. Даже IPv6 во
многих прошивках из коробки поддерживается.
Из бонусов - появляется возможность независимо от ОС (и загрузчика, если
он есть) выбрать систему для следующего запуска на один раз, что полезно
для схем с A/B-загрузкой.
From: Sergey Matveev
Date: 2022-11-24 19:50:43Z
*** kmeaw [2022-11-24 19:27]:
>А атрибут "EFI System Partition" на разделе стоит?
При указании "efi" типа в gpart-е (FreeBSD-specific) -- это делается,
да. Загружаемую через UEFI систему (FreeBSD) то я делал много раз, это
тривиально, на всём моём железе работало, которое было новее этих
сервачков. Это явно в них какая-то странность, точно не в моих руках ;-)
(какие-то UEFI образы дистрибутивов на них, помню, тоже не грузились).
>Я бы сказал, что схема с UEFI выглядит более понятной и расширяемой [...]
Согласен. Использовать UEFI то я стал, насколько помню, вынужденно ещё
на старом ноутбуке. Если загрузиться не в UEFI, то будет только VESA
режим графики доступен, который тормозит так, что работать нельзя. А под
UEFI доступен scfb драйвер X11, который годился и для просмотра фильмов
без проблем. А потом увидев, что и устанавливать "загрузчик" UEFI более
чем просто (man uefi), плюс лёгкость загрузки разношёрстных ОС, плюсов в
CSM режиме уже не перестал видеть.
>А ещё, наконец-то, прошивки научились качать ядра по HTTP,
>который сильно проще дотянуть до целевой машины, чем TFTP - а на
>high-latency high-bandwidth каналах ещё и скорость нормальная получится,
>не нужно больше дополнительного этапа с {i,g}PXE/EtherBoot. Даже IPv6 во
>многих прошивках из коробки поддерживается.
Даже по iSCSI я видел (слышал) умеют загружать. А у TFTP ещё и
ограничение на максимальный размер ощутимое (насколько помню, 32MiB, но
даже до 2010-х этого уже бывало не хватает).
Я то всеми руками за UEFI. Прежде я на него ещё косо смотрел потому что
FreeBSD можно на ZFS поставить вообще без каких-либо таблиц разделов.
ZFS и самое начало диска не трогает (куда можно первичный загрузчик
поместить), и имеет пару мегабайт зарезервированного пространства, куда
можно вторичный засунуть. https://www.unix.com/man-page/freebsd/8/zfsboot/
Никаких MBR/GPT, только ZFS и всё грузится и работает. Приятно. Но...
swap всё равно лучше вне ZFS размещать, плюс label на диск удобно (я бы
сказал must-have) навешивать. Плюс не забывать выравнивать по 4K
границам. Вот и получается что всё равно GPT стоит добавлять. А раз он
есть, то и смысла не использовать UEFI тоже уже и нет.