Итоги разработки GNU Hurd за 4 квартал 2023 года
9 января в официальном новостном разделе проекта GNU Hurd были опубликованы итоговые новости за 3 квартал 2024 года:
- Сэмюэл Тибо (Samuel Thibault) исправил default PIE Hurd по умолчанию для gcc и добавил поддержку static PIE. Он также добавил whatis-команду в отладчик ядра GNU Mach, которая может определить, на что указывает адрес (стек? порт? kalloc?…). Была добавлена поддержка hurd-amd64 в GCC.
- Также Сэмюэл попросил команду Hurd организовать непрерывную интеграцию (continuous integration) — чтобы в момент, когда разработчики вносят изменения в код, они могли быть уверены, что ничего не сломали.
«Оказывается, Hurd поддерживает несколько разных сред: 32 бит, 64 бит, 32 на 64 бит, ACPI, не-ACPI, SMP, не-SMP, Xen и т. д. Судя по всему у одного из разработчиков Hurd Флавио (Flavio) существует персональный CI, но он настроен независимым от Debian способом. Если вы заинтересованы в помощи проекту Hurd в создании CI, свяжитесь с нами!»
- Лука Дарис (Luca Dariz) работал над добавлением нескольких простых тестов пользовательского пространства GNU Mach. При работающем MiG, машина GNU/Linux может запустить команду make check исходного кода GNU Mach, которая запустит qemu, чтобы убедиться, что 32-битный (PAE и не-PAE), 32-битный на 64-битном и полный 64-битный GNU Mach работает. В настоящее время мы проводим тестирование на GNU/Linux, поскольку qemu в Hurd не функционирует.
- Большое количество людей работали над новой поддержкой x86_64 бит в Hurd. Сэмюэл сообщил о том, что 64-битный порт GNU Hurd теперь имеет достаточно пакетов в архиве debian-ports, чтобы возможно было загрузить chroot. Демон сборки 64-битной версии Debian + GNU Hurd находится в стадии настройки, и также ведутся другие работы по инфраструктуре. Тибо отметил:
«Сборка пакетов не очень стабильна. Я пытаюсь собрать gcc-13 уже пару недель, но пока безуспешно. Есть различные сбои, чаще всего странные ошибки в скрипте libtool, которые являются признаком того, что сама система ведет себя неправильно. Способ воспроизвести проблему состоит в том, чтобы просто повторно собрать пакет, использующий libtool, и рано или поздно это приведет к очень странному сбою.
Это означает, что, хотя buildd уже готов, мне действительно неудобно его запускать, зная, что он может вести себя беспорядочно. Когда я собрал первоначальный набор пакетов для debian-портов (~100 пакетов), у меня было где-то 5–10 таких сбоев, это довольно высокий показатель:/» - Флавио Круз (Flavio Cruz) улучшил IPC GNU Mach, изменив порядок полей mach_msg_type_t для выравнивания по байтам msgt_name и msgt_size. Он также создал серию патчей, позволяющих избежать изменения размера сообщений для x86_64. Он удалил нетипизированный код Mach RPC:
«GNU Mach использует типизированный IPC. Hurd может поддерживать как типизированный, так и нетипизированный вызов, но, похоже, Hurd использует только типизированный RPC. Поэтому лучше всего удалить любой нетипизированный код RPC.»
- Сергей Бугаев (Sergey Bugaev) добавил поддержку повторного объединения записей GNU Mach. Mach не всегда мог объединить две записи виртуальной машины, сделанные рядом друг с другом, что замедляло работу ext2, bash и т.д. Сергей же позволил GNU Mach объединять записи в обычных случаях, что очень помогало, например, в ext2fs.
- Также Сергей работает над портированием веб-браузера Ladybird под Hurd. Автор этого поста (очевидно, имеется в виду оригинальный пост на gnu.org — прим.ред.) использует веб-браузер netsurf под Hurd, который работает на простых веб-сайтах (таких как Википедия), но плохо отображает страницы с большим количеством JavaScript, что делает многие веб-сайты непригодными для использования. Если Сергею удастся портировать Ladybird, пользователи Hurd смогут начать использовать такие сетевые ресурсы, как Github! Стоит отметить, что кто-то должен обновить и порт Firefox.
- Ещё Бугаев начал портировать Hurd на AArch64! И хотя порт на RISC-V может выглядеть более интересным, стоит всё же отметить то, что AArch64 более известен. Что интересно, Сергей уже умеет собирать серверы Hurd для AArch64! Обычно для запуска двоичных файлов нужно портировать GNU Mach на AArch64, но к счастью для нас, он обратился к GDB и напрямую запустил двоичный файл Hurd AArch64 «Hello World» в Linux! Это помогло ему исправить некоторые ошибки. Пока что предстоит определить ABI и завершить порт GNU Mach, но на данный момент это потрясающие новости!
- Тобиас Платен (Tobias Platen) начал портировать GNU Mach на платформу Power9.
В случае, если у кого-либо возникло желание проверить работоспособность любимых пакетов под Hurd и их способствование использованию всей системы GNU для более широкого круга людей — пожалуйста, проверьте страницу участия.
Для справки: GNU Hurd (или просто Hurd) — это проект по разработке свободного программного обеспечения, целью которого является замена ядра Unix для Unix-подобных операционных систем. Разработка Hurd ведётся начиная с 1990 года проектом GNU и Фондом свободного программного обеспечения. Прогресс ведётся медленно по причине существования Linux — уже готовой свободной замены ядрам Unix-систем. Подробности можно посмотреть как в Википедии, так и на официальной странице проекта GNU Hurd.
В свою очередь GNU Mach — это реализация микроядра Mach, которое по-умолчанию есть в составе GNU Hurd.
>>> Подробности на официальной странице проекта