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)
Ответ на: комментарий от piwww

System D скует всех цепью единой, вяленый всех объединит, и увидит Майкрософт что сие есть хорошо - всех хомячков переведет на онтопик. Так и наступит конец всех времён, всех войн и вражды древней!

zanac1
()

Грустно-то как. Отдельный дистрибутив для безопасности памяти. Пойду кофе выпью.

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

Если на входе в дистрибутив нет рамок металлоискателя и рентгена для багажа, он по определению не может быть безопасным!

Smacker ★★★★★
()

вот это маркетинг!! продвинутое продвижение

а так смешной проект :-) много шума из ничего. То есть там нет ничего вообще.

Там внутри обычный clang из транка и небольшой рантайм-довесок в стиле memory-leak detectors который будет обязательно вставлен. Причём он с обычными мутексами внутри (вокруг собственных хеш-таблиц) и втормозит любой приклад

и ещё есть очень прикольные идентификаторы:

#if USE_LIBC
void pizlonated___libc_start_main();
#endif /* USE_LIBC */
void pizlonated_main();

«пизлонейтед майн» - это сильно

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

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

Ага, Филипп Пизло.

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

Будет? Win10 уже с нами :) 11 оффтопик далее продолжит радовать пользователей %)

zanac1
()

Вейленд и гтк4 фу, вообще выброси, вот что интеиесно, так это браузер на первом скринк. Что за браузер?

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

Systemd D скуёт вскх цепью единой, вяленый привяжет грузики, и отправят они линукс в озерцо глубокое.

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

вяленый всех объединит

Ну нет, с ним все наоборот, расцветают сотни цветов, и все на могилке унификации)

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

смешной проект :-) много шума из ничего. То есть там нет ничего вообще.

Проект очень интересный и там есть очень много чего.

Чего есть:

  • compile time анализ кода для определения границ куска памяти к кот. может обращаться каждый указатель и сохранения этой иформации в capabilities каждого указателя.
  • run time обязательная проверка capabilities каждого указателя при каждом обращении к памяти через этот указатель
  • GC. Если сделать malloc и не вызывать free GC освободит память. Утечек нет.

Там внутри обычный clang из транка

clang модифицирован для внедрения capabilities

и небольшой рантайм-довесок в стиле memory-leak detectors

Весь рантайм пересобран с capabilities и GC. Если вы собираете свою приложеньку с fil-c то не только ваш код становится memory safe, весь код от кот. зависит ваша приложенька заранее собран memory safe. Не как rust приложения кот. зависят от не memory safe библиотек.

и втормозит любой приклад

Фил Пизло признает тормоза. Сейчас он занимается совместимостью, производительность правит когда тормоза ему мешают.

Источники информации:

В ролике на youtube рассказ более подробный. А еще там есть Кейси Муратори.

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

Отличный проект!

Чувак реально озаботился безопасностью в отличии от любиетелей обмазывать жирные небезопасные рантаймы тоненьким слоем «безопасного» кода.

И заметьте, не надо ничего специально перепысывать, по заявлению Филтиппа:

  • половина программ на C/C++ вообще заводится без изменений;
  • три четверти от второй половины портируются заменой вызова самописных аллокаторов на вызовы местного malloc;
  • остальное использует целые для хранения указателей и там нужна небольшая доработка напильником.

Это не идёт ни в какое сравнение с «Перепиши всё на нашем самом безопасном %langname%».

Потому что переписать можно только саму программу, а весь стек библиотек, которые она использует, переписать уже не получится.

shkolnick-kun ★★★★★
()
Последнее исправление: shkolnick-kun (всего исправлений: 1)
Ответ на: комментарий от gns

Это если компилятор не упал в процессе поиска этого бага :)

Да и пусть его падает!.. Лишь бы не на ногу.... :))

Somebody ★★★★
()
Ответ на: комментарий от shkolnick-kun

Точнее так: в списке программ на сайте 153 позиции, из них:

  1. Программы, работающие без изменений — 62 (40.5%)

  2. Программы, требующие изменений только в системе сборки — 25 (16.3%)

  3. Программы с незначительными изменениями исходного кода — 50 (32.7%)

  4. Программы со значительными изменениями исходного кода — 16 (10.5%)

shkolnick-kun ★★★★★
()
Ответ на: комментарий от Somebody

Я не жадный, я реалистичный! Мы умеем делать работу быстро, дешево и качественно. Выбирай два любых требования :)

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

Это не идёт ни в какое сравнение с «Перепиши всё на нашем самом безопасном %langname%».

Всё таки недостатки тоже есть. Рантайм-проверки означают, что прога просто упадёт. Раст же пытался сделать так, что, если прога собралась, то она уже будет работать без ошибок памяти, и, соответственно, никогда на них не упадёт.

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

В системах уровня линуксового юзерленда с динамическими библиотеками рантайм-проверки будут по любому.

И ещё неизвестно, где будет хуже.

Понятно, что сейчас Fil-C медленне, иногда в

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

А всем известные поделия сделали на деньги корпорастов и пропихивают везде корпорасты же.

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

Понятно, что сейчас Fil-C медленне, иногда в десятки раз, но эту штуку написал за три года один человек без помощи корпорастров.

Это может быть быстро, только если аппаратная поддержка сего изделия появится. А она появится ещё не скоро. Она пока только на стадии симуляции разработана: https://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-951.pdf

В рамках текущего железа, скорее всего, это не взлетит, так как 128битные поинтеры будут софтварными и медленными ещё очень долго.

Да и я вообще не про скорость говорил. Рантайм-проверки означают, что прога будет прибиваться. А компайл-тайм - что она, по определению, не будет содержать подобных ошибок.

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

так как 128битные поинтеры будут софтварными и медленными ещё очень долго

В Fil-C сейчас нет 128-битных указателей. Сейчас там InvisiCaps которые пришли на смену MonoCaps, которые использования 128-битные указатели.

Рантайм проверки есть и в тех языках, которые сейчас везде пропихивают.

С моей точки зрения если это будет на 20 - 50 % медленнее Си, это уже будет лютый вин!

Уже не надо будет почти ничего переписывать.

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

shkolnick-kun ★★★★★
()
Последнее исправление: shkolnick-kun (всего исправлений: 3)
Ответ на: комментарий от shkolnick-kun

С моей точки зрения если это будет на 20 - 50 % медленнее Си, это уже будет лютый вин! Уже не надо будет почти ничего переписывать.

Если бы проблемы заканчивались на «небольшом переписывании» и «небольших тормозах», то можно было бы в это всё поверить. Но вы упорно забываете про то, что рантайм-проверки просто приведут к падению совта на ошибках. А так же и на не-ошибках, а на разного рода грязных хаках. И эти падения не будут выловлены теми, кто по-быстрому пытается 1000+ пакетов спортировать на эту штуку. Софт просто станет падучим, пока его авторы ни соизволят сесть за отладку.

По этому, тут вопросы. А авторы - сядут за отладку? А в железе это всё будет поддержано, и когда? А не раньше ли на расте всё перепишут? (нет, не раньше, иначе бы эта штука точно не взлетела, а так - х/з)

Это отличный первый шаг, но нужна аппаратная поддержка. Если она будет - все люто ломанутся отлаживать свой совт на этом, а не будет - так и не ломанутся.

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

Да понятное дело, по тому, что это железо и так в 100 раз быстрее CHERI. А с этой штукой - всего лишь в 50 раз. :)

Тут реальная проблема в том, что его нельзя даже как санитайзер использовать: надо перебилдить всю систему, а не только свою прогу. Это неудобно, мягко так выражаясь. Иначе бы был отличный санитайзер.

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

В других языках тоже есть panic.

Программы будут падать с коркой, по которой будет водно строку. В итоге код станет чище и прямее.

Это отличный первый шаг, но нужна аппаратная поддержка.

Есть CHERI, правда на практике это медленнее, чем Fil-C на x86_64.

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

Где он есть то? Чери - исследовательский проект.

Программы будут падать с коркой, по которой будет водно строку.

Не будут, по тому, что надо всю систему пересобрать. Если я правильно понял, нельзя просто «запустить прогу». Иначе бы это был хотя бы санитайзер, а так - только ждать аппаратной поддержки.

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

Только прогу и её зависимости, систему можешь оставить как есть.

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