LINUX.ORG.RU

Pizlix — безопасный по памяти дистрибутив GNU/Linux

 fil-c, , ,


1

2

Представлен Pizlix — экспериментальная операционная система, созданная на базе Linux From Scratch (LFS) 12.2. Ключевой особенностью проекта является сборка пространства пользователя (userland) с использованием компилятора Fil-C, что, по заявлениям автора, позволяет получить наиболее безопасный при работе с памятью (memory safe) Linux-подобный дистрибутив из доступных на сегодняшний день.

Разработка Pizlix стала возможной благодаря высокой степени совместимости Fil-C с традиционным кодом на языках C и C++. Большинство пакетов из книги LFS удалось собрать без изменения исходного кода или ограничившись минимальными патчами.

Основные особенности и технические детали:

  • Базовые утилиты сборки (например, ld, make, ninja) и все пользовательские приложения скомпилированы с помощью Fil-C или Fil-C++.

  • Работает безопасный по памяти демон OpenSSH.

  • Поддержка графики: в дистрибутив включены композитный сервер Weston (Wayland) и тулкит GTK 4, что позволяет использовать полностью безопасный по памяти графический интерфейс.

  • Для сборки ядра Linux в системе сохраняется традиционный GCC (расположенный в префиксе /yolo/bin/gcc), так как ядро компилируется в режиме, который автор иронично называет «Yolo-C» (то есть без гарантий безопасности памяти от Fil-C).

  • В архитектуре дистрибутива применяется концепция «libc sandwich»: урезанная версия glibc («yolo glibc») используется рантаймом Fil-C для осуществления системных вызовов, тогда как основная пользовательская glibc 2.40 полностью портирована на Fil-C.

Дистрибутив предназначен для архитектуры x86_64. Образы протестированы для работы в QEMU (рекомендуемый вариант), VMware и Hyper-V. Для желающих собрать дистрибутив самостоятельно предоставляется набор скриптов, выполняющих поэтапную сборку внутри привилегированных контейнеров (Podman) на базе Ubuntu 22 или 24.

>>> Сайт проекта

★★★★

Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 1)

Идея интересная, но что-то самая важная особенность любого дистрибутива - менеджер пакетов - не фигурирует нигде.

Ну и название, конечно, мда :)

Bfgeshka ★★★★★
()
Ответ на: комментарий от Bfgeshka

Дядька говорит, что начал весь этот прикол с memory safe C чтобы доказать себе, что это невозможно и продолжить жить. Полагаю, поэтому он и выбрал самый простой дистрибутив — LFS, — чтобы доказать себе, что это невозможно и жить дальше)

BruteForce ★★★★
() автор топика
Последнее исправление: BruteForce (всего исправлений: 1)

В архитектуре дистрибутива применяется концепция «libc sandwich»

Это нахрена такое? Почему не сделать bootstrap и не пересобрать Fil-C с glibc, собранной с помощью Fil-C?

zabbal ★★★★☆
()

Для сборки ядра Linux в системе сохраняется традиционный GCC (расположенный в префиксе /yolo/bin/gcc), так как ядро компилируется в режиме, который автор иронично называет «Yolo-C» (то есть без гарантий безопасности памяти от Fil-C).

основной квест не пройден - на пересдачу.

etwrq ★★★★★
()

Ну идея здравая, но в разы теряется производительность из-за Fil-C. На встраиваемых решениях может быть интересным.

Как я понимаю, пилит это дело автор Fil-C?

gns ★★★★★
()
Ответ на: комментарий от Bfgeshka

Идея интересная, но что-то самая важная особенность любого дистрибутива - менеджер пакетов - не фигурирует нигде.

LFS — не любой дистрибутив. Это вообще не дитрибутив, а лабораторная работа.

Ну и название, конечно, мда :)

Автора Fil-C зовут Филипп Пизло. Видать, он и пилит.

gns ★★★★★
()

У Неуловимого Джо внезапно обнаружился родной брат - Безопасный Джо. Одного, по легендам, нельзя поймать, другого - победить; проверять этого никто не будет по хорошо известной причине.

thesis ★★★★★
()
Ответ на: комментарий от gns

Как я понимаю, пилит это дело автор Fil-C?

Да!

в разы теряется производительность из-за Fil-C.

Говорит, что юзать emacs и grep ему комфортно. Говорит, что ему сообщали, что некто померили производительность своего проудкта с Fil-C и было на 50% медленнее, но в рамках бюджета, поэтому юзают. Также считает, что производительность можно улучшить, у него даже есть идеи ГДЕ, но нет врмени.

На встраиваемых решениях может быть интересным.

Говорит, что ему сообщали об использовании сего добра на сервере.

BruteForce ★★★★
() автор топика
Ответ на: комментарий от BruteForce

Говорит, что юзать emacs и grep ему комфортно.

Видать, у него емакс не сильно внешними пакетами обмазан.

Говорит, что ему сообщали об использовании сего добра на сервере.

Ну что то был за сервер? Если не особо загружен, то что пуркуа бы и не па? Половина производительности — это многовато будет.

gns ★★★★★
()
Ответ на: комментарий от thesis

Такие странные решения иногда всплывают в не менее странных местах. Будем посмотреть. Как лабораторная работа это уже интересно.

gns ★★★★★
()

сборка пространства пользователя (userland) с использованием компилятора Fil-C

Это как lcc/e2k -m128, только без аппаратной поддержки «длинного» указателя?

И с ядром облом, канешн.

x22 ★★★
()
Ответ на: комментарий от gns

Да, для встраиваемых решений низкопроизводительные дистрибутивы этож самое то.

Pupkind
()

с использованием компилятора Fil-C

Ого, новость за новостью просто. Точно убийца раста растет :)

Gonzo ★★★★★
()
Ответ на: комментарий от zanac1

Ой-вей... Даже не знаю, что сказать... :)

gns ★★★★★
()

безопасный при работе с памятью (memory safe)

безопасный по памяти

Чет не понял, он изобрел MMU? Защита от чего, от переполнений? Он неконтролируемого жора памяти?

I-Love-Microsoft ★★★★★
()
Последнее исправление: I-Love-Microsoft (всего исправлений: 1)
Ответ на: комментарий от Bfgeshka

Не мешает конечно. Но, LFS в качестве базы этому не способствует.

imul ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Защита от производительности.

imul ★★★★★
()
Ответ на: комментарий от thesis

По слухам, есть и третий брат, но никто его никогда не видел, даже как зовут, не знает никто :)

yars068 ★★★★★
()

А что, нормальные дистрибутивы уже закончились и надо плодить Боль_где_незы?

piwww ★★★★
()

Консолька унылая, не судьба раскрасить в цвета?

piwww ★★★★
()

Интересный проект. Я у них в дискорде посвященном Fil-C и этому дистрибутиву видел DJB (yp.to) и Justine.

У DJB есть заметки по этому проекту и он тоже пилит дистрибутив с пакетной базой на этом компиляторе и либц, но не на базе LFS, а на базе Debian.

Я думал попробовать на дженту собрать fil-c, попробовать им собирать пакеты, но во время установки посмотрел что несуществует десктоп профилей под llvm+llvm libc, а тут примерно та же история — llvm и модифицированная musl libc, другое ABI, поэтому я эту попытку забросил.

Ещё ставил дистрибутив в виде /opt/fil и дистрибутива не требующего рута отсюда, но особо не наигрался в это, потому что пока что не разобрался, что мне нужно чтобы на него библиотеку libbsd портировать, которую один из моих пет-проектов использует.

А на дискорд проекта Филипп у себя в твиттере (иксе) ссылку давал.

Очень жаль правда, что сейчас многие опенсорц проекты используют дискорд.

Artsi0m
()
Последнее исправление: Artsi0m (всего исправлений: 1)
Ответ на: комментарий от GFORGX

Компилятор очень просто попробовать, это практически тот же llvm/clang.

Можно отсюда скачать rootless дистрибутив и попробовать, что-нибудь своё собрать, если это что-нибудь использует уже портированные библиотеки.

При этом при портировании чаще всего ничего не приходится менять. Это всё та же сишка с сишным стандартом, но другое ABI. Иногда Филипп фиксил те или иные баги в проектах, когда пересобирал их своим компилятором.

Вот список собранных этим компилятором программ и библиотек, с изменениями, которые были применены:

https://fil-c.org/programs_that_work

Некоторые были собраны без каких-либо изменений.

Artsi0m
()
Последнее исправление: Artsi0m (всего исправлений: 1)
Ответ на: комментарий от I-Love-Microsoft

Вот здесь показано как модель Capabilities для указателей предотвращает привычные для Си баги связанные с отсуствием безопасности по памяти:

https://fil-c.org/invisicaps_by_example

Защита от чего, от переполнений? От неконтролируемого жора памяти?

Да, от переполнений, от утечек памяти, от use after free.

Вот (borretti.me) хорошая статья про системы типов и безопасность по памяти. Ссылаюсь конкретно на параграф описывающий, что должна включать в себя безопасность по памяти.

Artsi0m
()
Последнее исправление: Artsi0m (всего исправлений: 1)
Ответ на: комментарий от ckotctvo

ну он своим Fil-C не собрал ни gcc, ни linux-kernel.
Двоешник! И видимо житель Пи-з-д-б-ска

etwrq ★★★★★
()
Последнее исправление: etwrq (всего исправлений: 2)
Ответ на: комментарий от gns

Можно выбрать два параметра из трёх.

imul ★★★★★
()
Ответ на: комментарий от zanac1

Если он ошибки доступа к памяти ловит и показывает - однозначно нужно. Не с отладчиком же сидеть

Открыли ли вы для себя Address Sanitizer? Если нет, то откройте ;-)

shaplov ★★★
()
Ответ на: комментарий от piwww

Вы это простым пользователям/бухгалтерам/и_прочим объясните необходимость этого поделия.

Если присмотреться, то этот проект на гитхабе выглядит как форк llvm.

У меня к вам встречный вопрос: Сможете объяснить и_прочим зачем этим и_прочим нужен llvm?

Необходимость этого поделия проще всего объяснить другим программистам, потому что конечным пользователем этого проекта будут программисты.

Потому что компилятор это не прикладное, а инструментальное ПО.

Artsi0m
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.