Статья - квинтессценция нейрослопа. Три слова постояно переставляются местами и так по всем терминам. Статья не проясняет ничего кроме того, что ACPI создан для управления питанием. Но это и ёжу понятно, и просто следует из названия. Масса терминов переведенны на русский с очень низким качеством - понять по ним нельзя ровным счетом ничего. Нет ни строки кода примера демонстрирующего хотя бы базовые вещи. Автору толстый минус в карму за такую статью!
На форуме FreeBSD есть ветка годичной давности про карту DG2 Arc310. Там народ ставит и пробует разные версии drm-kmod, но 14.3 и 15.0 паникует. Попробуйте собрать последний drm-kmod из исходников с Github-е - возможно проблема уже исправлена.
SSL/TLS высислительно емкие алгоритмы, их реализация на i486 возможна, но скорость шифрования/дешифрования трафика будет катастрофически низкой, вы не сможете дождаться загрузки даже 100К страницы.
Кстати, это не сложно проверить. Лостаточно установить на этот ПК современную ОС Linux или FreeBSD и прогнать тесты OpenSSL.
Я буквально вчера пытался ставить 15.0 на вполне стандартный ПК и не смог - не видит Ethernet, какие-то косяки в инсталлере. Похоже эта версия еще требуется доработки. 14.3 взлетела с пол пинка. :-)
Трамплин на переход в "long mode" (64 бит) действительно находится в /boot/loader, я нашел как это выглядит.
/boot/loader является 32-х битным приложением, у него есть конфигурационный массив struct file_format *file_formats[] который заполнется указателями на функции загрузки и исполнения ELF модуля (или ядра) для различных архитектур:
Согласно статье в Handbook-е, boot2 состоит из следующих частей: boot2 релокатора, BTX-клиента и BTX-сервера. Переход в защищенный режим прозводиться в BTX сервере - он работает в 0-м кольце. Сервер нужен для возврата в 16-ти битный режим и вызова функций BIOS. BTX-клиент работает в 3-м кольце, он загружает загрузчик четвертой стадии /boot/loader. А этот уже загружает и запускает ядро. Это только часть схемы для MBR. Для других вариантов загрузки все подругому. Я нагуглил статью про процессы загрузки FreeBSD, пытаюсь из неё что-то понять.
Для загрузки с GPT используется отдельный загрузчик gptboot, он имеется в двух вариантах для UEFI и для BIOS.
Функция elf64_exec() это трамплин, её вызов присутствует в нескольких загрузчиках, в том числе в UEFI, gptboot, userboot, но её вызова нет из boot1-boot2 (MBR загрузчик). Код boot1, boot2 и BTX весь 32-х битный. Этот загрузчик хорошо задокументирован - есть большая с статья с описанием в Handbook-е. Про устройство остальных загрузчиков информации мало, надо изучать код.
В статье я описывал, что занимался сборкой ядер, драйверов и системных приложений для FreeBSD, у меня установлены ВСЕ необходимые для этого тулы. rustc среди них пока что не замечен, кода на Rust в ядре нет! (три раза сплюнул)
Я кое-что протестировал и вот что обнаружил. Старая машинка у меня всё же оказалась с UEFI, c 32-х битным, в ней AMD E-350 где-то 2011 года. Так вот, при попытке установить 64-х битную FreeBSD 15.0-RELEASE в раздел MBR, фрюшный Инсталлер добросовестно предупреждает, что загружаться система НЕ будет:
Фото 1
И действительно, после завершения установки и перезагрузки, от BIOS вывалило следующее сообщение:
Фото 2
То есть возвращаясь к изначальному вопросу пользователя @unreal_undead2 , ответ следующий: 64-х битная FreeBSD на 32-х битном и на 64-х битном UEFI в режиме BIOS (CSM) не загружается!
А вот с GPT таблицей разделов - очень даже загружается! Но как я отмечал в статье, старые макбуки не распознают диск с таблицей GPT как загрузочный! Поэтому, выходов у меня было два: либо ставить 32-х битную FreeBSD, либо патчить загрузчик loader_ia32.efi чтобы установить 64-х битную. Я проделал оба варианта.
Как ведет себя 64-х битная FreeBSD на машинах без UEFI я пока проверить не могу. Но я потратил некоторое время на чтение исходных кодов загрузчиков, которые используются при старте из MBR, и я пока НЕ вижу там кода "трамплина" для перехода в "long mode" (64-х битный режим). Там есть код перехода в 32-х битный "Protected Mode" - но это позволяет стартовать только 32-х битные ядра. Определенно есть какой-то нюанс, я попытаюсь в нем разобраться.
Сразу видно, что Вы "юнит не нашего комьюнити". ;-)
Статья - квинтессценция нейрослопа. Три слова постояно переставляются местами и так по всем терминам. Статья не проясняет ничего кроме того, что ACPI создан для управления питанием. Но это и ёжу понятно, и просто следует из названия. Масса терминов переведенны на русский с очень низким качеством - понять по ним нельзя ровным счетом ничего. Нет ни строки кода примера демонстрирующего хотя бы базовые вещи. Автору толстый минус в карму за такую статью!
Автор наделал кучу ошибок и на них построил систему доказательств очевидного. Так и хочется сказать: "Спасибо, Кэп!"
На форуме FreeBSD есть ветка годичной давности про карту DG2 Arc310. Там народ ставит и пробует разные версии drm-kmod, но 14.3 и 15.0 паникует. Попробуйте собрать последний drm-kmod из исходников с Github-е - возможно проблема уже исправлена.
SSL/TLS высислительно емкие алгоритмы, их реализация на i486 возможна, но скорость шифрования/дешифрования трафика будет катастрофически низкой, вы не сможете дождаться загрузки даже 100К страницы.
Кстати, это не сложно проверить. Лостаточно установить на этот ПК современную ОС Linux или FreeBSD и прогнать тесты OpenSSL.
А какая карта у Вас ? Что показывает
pciconf -lv | grep -A 4 vga?Дело не в размере страниц, а в протоколе SSL.
У нас тут в сибири морозы за -30С уже вторую неделю стоят, владельцы электричек и прочих гибридов сильно негодуют. :)
Пишите в личку если возникнут проблемы - помогу чем смогу. :)
bsdinstall. Новый модный молодёжный пока не пробовал.
Приходится констатировать, что HTTPS сделал Web полностью недоступным для маломощных машин.
Я буквально вчера пытался ставить 15.0 на вполне стандартный ПК и не смог - не видит Ethernet, какие-то косяки в инсталлере. Похоже эта версия еще требуется доработки. 14.3 взлетела с пол пинка. :-)
Трамплин на переход в "long mode" (64 бит) действительно находится в /boot/loader, я нашел как это выглядит.
/boot/loader является 32-х битным приложением, у него есть конфигурационный массив struct file_format *file_formats[] который заполнется указателями на функции загрузки и исполнения ELF модуля (или ядра) для различных архитектур:
В свою очередь amd64_elf это структура с двумя указателями на функции загрузки и исполнения:
А elf64_exec это указатель на функцию которая содержит вызов трамплина amd64_tramp().
Получается, что /boot/loader загруженный через MBR может запускать 64-х битные ядра.
Осталось выяснить, почему схема boot0->boot1-boot2->loader не срабатывает в режиме совместимости BIOS (CSM).
Согласно статье в Handbook-е, boot2 состоит из следующих частей: boot2 релокатора, BTX-клиента и BTX-сервера. Переход в защищенный режим прозводиться в BTX сервере - он работает в 0-м кольце. Сервер нужен для возврата в 16-ти битный режим и вызова функций BIOS. BTX-клиент работает в 3-м кольце, он загружает загрузчик четвертой стадии /boot/loader. А этот уже загружает и запускает ядро. Это только часть схемы для MBR. Для других вариантов загрузки все подругому. Я нагуглил статью про процессы загрузки FreeBSD, пытаюсь из неё что-то понять.
Вот, кстати, все схемы по стадиям:
Схемы загрузки FreeBSD
Нет. ZFS, кстати, надо будет попробовать.
Для загрузки с GPT используется отдельный загрузчик gptboot, он имеется в двух вариантах для UEFI и для BIOS.
Функция elf64_exec() это трамплин, её вызов присутствует в нескольких загрузчиках, в том числе в UEFI, gptboot, userboot, но её вызова нет из boot1-boot2 (MBR загрузчик). Код boot1, boot2 и BTX весь 32-х битный. Этот загрузчик хорошо задокументирован - есть большая с статья с описанием в Handbook-е. Про устройство остальных загрузчиков информации мало, надо изучать код.
Что такое userboot мне пока не понятно.
Спасибо, но причем тут FreeBSD ? 32-х битная FreeBSD загружается без танцев с подменой загрузчика - это на случай если Вы статью не читали.
Так Вы напишите пару интересных статей в песочницу, и желательно без нейрослопа. И будет Вам кармы хоть на рынке торгуй. :)
В статье я описывал, что занимался сборкой ядер, драйверов и системных приложений для FreeBSD, у меня установлены ВСЕ необходимые для этого тулы. rustc среди них пока что не замечен, кода на Rust в ядре нет! (три раза сплюнул)
Я кое-что протестировал и вот что обнаружил. Старая машинка у меня всё же оказалась с UEFI, c 32-х битным, в ней AMD E-350 где-то 2011 года. Так вот, при попытке установить 64-х битную FreeBSD 15.0-RELEASE в раздел MBR, фрюшный Инсталлер добросовестно предупреждает, что загружаться система НЕ будет:
Фото 1
И действительно, после завершения установки и перезагрузки, от BIOS вывалило следующее сообщение:
Фото 2
То есть возвращаясь к изначальному вопросу пользователя @unreal_undead2 , ответ следующий: 64-х битная FreeBSD на 32-х битном и на 64-х битном UEFI в режиме BIOS (CSM) не загружается!
А вот с GPT таблицей разделов - очень даже загружается! Но как я отмечал в статье, старые макбуки не распознают диск с таблицей GPT как загрузочный! Поэтому, выходов у меня было два: либо ставить 32-х битную FreeBSD, либо патчить загрузчик loader_ia32.efi чтобы установить 64-х битную. Я проделал оба варианта.
Как ведет себя 64-х битная FreeBSD на машинах без UEFI я пока проверить не могу. Но я потратил некоторое время на чтение исходных кодов загрузчиков, которые используются при старте из MBR, и я пока НЕ вижу там кода "трамплина" для перехода в "long mode" (64-х битный режим). Там есть код перехода в 32-х битный "Protected Mode" - но это позволяет стартовать только 32-х битные ядра. Определенно есть какой-то нюанс, я попытаюсь в нем разобраться.