Обновить
288.02

Linux *

Пишем под *nix

Сначала показывать
Порог рейтинга
Уровень сложности

Мой первый вклад в ядро Linux

Уровень сложностиСредний
Время на прочтение22 мин
Количество просмотров23K

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

Читать далее

Формирование RPM пакета для OC Linux с использованием GitLab CI/CD (часть 2)

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров1K

В предыдущей статье рассмотрены основы сборки RPM пакета и автоматизации процесса.

Данная публикация завершает цикл. Продемонстрировав практическую реализацию готового решения, включая:

Разработку Web сервиса.

Регистрацию сервиса в качестве системной службы с автозагрузкой (systemd) при установке пакета.

Внедрение централизованного логирования через journald.

В результате создана полнофункциональная заготовка для быстрого развертывания сервисов с последующей публикацией их в RPM пакет.

Читать далее

Как защитить Kubernetes на уровне ядра Linux

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров4.7K

Как защитить Kubernetes, если злоумышленник попытается выбраться из контейнера на хост? Рафаэль Натали предлагает многоуровневый подход: настройка Security Context, отказ от лишних прав, запуск контейнеров без root-доступа, а также усиление защиты с помощью AppArmor и seccomp.

Читать далее

OpenBSD: интервью с Вячеславом Воронцовым

Уровень сложностиСредний
Время на прочтение31 мин
Количество просмотров3.3K

Не в то время и не в том формате, но мы это сделали! Если хотя-бы слышали слово «OpenBSD» — стоит прочитать и посмотреть.

Читать далее

Дамп пакетов composer через python-скрипт

Время на прочтение3 мин
Количество просмотров669

Просто оставлю свой скрипт дампа пакетов composer тут. Адаптируйте под свои нужны.

Применял для резервного копирования пакетов, из-за нестабильной работы интернета при получении данных с зарубежных сервисов из-за кривых фильтров РосКомНадзора (РКН).

Читать далее

Из котельной — в Ад: Doom на ПЛК

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров5.2K

Я — инженер техподдержки, наши клиенты знают меня как Aleksandr_Khlebnikov. Одна из задач инженеров в нашей компании — тестировать новое оборудование.  Мы как раз выпустили модуль расширения, добавляющий контроллеру выход HDMI.

Смотреть на веб-интерфейс во время тестирования скучно, и в голову пришла мысль: а что если попробовать запустить на контроллере Doom? В железо я верил, в свои умения — чуть меньше. Все-таки контроллер «заточен» под специфические задачи, а лишняя функциональность в ОС отключена. Но раз внутри работает полноценный Linux — почему бы не попробовать?

Итак, эта история о том, как я подключил к контроллеру HDMI-монитор, как запустил Doom и что из этого вышло. А еще о том, как я сделал геймпад с интерфейсом Modbus RTU.

Читать далее

Рецензия на книгу: Изучаем eBPF: программирование ядра Linux для улучшения безопасности, сетевых функций и наблюдаемости

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров2.8K

В русском переводе вышла книга «Изучаем eBPF» (Learning eBPF) Лиз Райс, главного специалиста по открытым технологиям в компании Isovalent. В ней автор рассказала сисадминам и разработчикам, как можно успешно применять eBPF в своей работе. eBPF (Extended Berkeley Packet Filter) — это технология, позволяющая безопасно и эффективно выполнять свой код в ядре Linux. Хотя у книги небольшой объем (220 стр.), она наверняка будет полезна для сисадминов и ИТ-специалистов по управлению сетями, обеспечению безопасности и мониторингу в сложных системах. 

Читать далее

3 скрипта для диагностики Вашего Linux-сервера

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров15K

Привет, Хабр! Уверен, многие сталкивались с тормозами сервера, долгой загрузкой страниц. Логи молчат, нужно искать виновника. Системный мониторинг демонстрирует, что CPU вроде не загружен, память не полностью израсходована, а отклик системы оставляет желать лучшего.

В такие моменты стандартных утилит вроде top или htop часто недостаточно, нужен более детальный анализ. С этим мне приходится периодически сталкиваться, из-за чего и были написаны 3 bash-скрипта. Они дают сбор ключевых метрик системы для дальнейшего разбора.

Читать далее

Эволюция подходов к написанию корутин от Си до С++20. Часть 1. Функция+макросы=корутина

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров5.8K

Когда речь заходит о корутинах (сопрограммах) на С++, большинство программистов вспоминает фреймворк coroutine_ts, появившийся в стандарте С++20. Многие даже не догадываются о том, что писать корутины можно было задолго до появления упомянутого стандарта. При этом можно было использовать не только С++, но и Си. Данной статьей я открываю серию, в которой хочу описать свой личный опыт изучения корутин и привести примеры их использования. Надеюсь мои статьи помогут начинающим разобраться в этой сложной и интересной теме.

Читать далее

QEMU: как организовать прозрачное взаимодействие с I2C-устройствами

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров4.2K

В разработке ПО для встраиваемых систем все большее значение приобретает возможность эффективной виртуализации оборудования, которая кардинально повышает скорость и гибкость разработки. Не нужно паять платы, ждать поставки железа или бегать между стендами с осциллографом для каждого чипа. Достаточно просто запустить виртуальную машину на ноутбуке. 

Виртуализация позволяет отлаживать драйверы и приложения в идеально воспроизводимых условиях, параллельно работать над разными фичами и начинать писать код еще до того, как готово физическое устройство. Особенно это актуально при разработке и тестировании embedded-решений, где часто требуется работа с периферией — например, I2C-устройствами: датчиками температуры, давления, влажности, EEPROM-памятью и другими компонентами.

Читать далее

glibc-hwcaps и GLIBC_TUNABLES: как включить x86-64-v3 для ваших CLI

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров757

Привет, Хабр!

Обычно я за то, чтобы не усложнять рантайм лишний раз, но здесь случай приятный: можно включить у своих CLI автоматический выбор библиотек под реальные возможности CPU и не ломать обратную совместимость. Механизм называется glibc-hwcaps, появился в glibc 2.33, и он позволяет динамическому загрузчику подбирать lib’ы из специальных поддиректорий по уровню x86-64-v2/v3/v4. Это ровно те уровни, что определены в x86-64 psABI, без частных расширений конкретных вендоров. На практике достаточно положить собранный под v3 lib рядом с обычным, соблюсти SONAME, и ld.so сам подхватит оптимизированный вариант на новых процессорах. На старом железе всё продолжит работать на базовой сборке.

Перейти к статье

Windows и Linux для сервера 1С: преимущества, проблемы и сравнение возможностей

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров8.4K

У нас 1С развёрнут на Linux и PostgreSQL. Всё началось с запроса клиента на развёртывание 1С в Linux-среде. Мы создали первый кластер, а затем перевели всю облачную 1С на open source.

В этой статье расскажем о нашем пути, сложностях и результатах. Больше подробностей об особенностях работы облачной 1С вы узнаете на вебинаре — запись эфира открыта по ссылке

Читать далее

Анализ реверс-шелла под Linux

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров2.2K

Здравствуйте, уважаемые читатели Хабра и любители вирусного анализа!

Сегодня хочу поделиться своим дебютным(на Хабре) разбором простенького семпла шелла под Linux.

Начнём.

Откроем в файл в DIE. Семпл для 32-битной UNIX системы, не упакован.

Читать далее

Ближайшие события

Управляем зависимостями Cи и C++ через Nix

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров3.6K

Рассказ о самой полезной части Nix — управление пакетами из репозитория nixpkgs.

Я использовал и использую разные языки. В Rust есть прекрасный пакетный менеджер cargo и инсталлятор rustup, для JavaScript — npm. Мне также нравится conda в мире Python.

Мне всегда не хватало чего-то подобного для проектов на Си и C++. Пакетные менеджеры для этих языков часто оставляют желать лучшего. Даже если они работают, в их репозиториях может не быть нужных библиотек. Даже если вроде всё работает хорошо, может оказаться, что для работы бинарного кэширования нужно прилагать усилия, а когда это что-то вроде разных версий Qt — собирать всё на машине разработчика неприятно.

Я хотел, чтобы инструмент из коробки давал максимум без дополнительной настройки.

Поэтому я расскажу, как использовать Nix в качестве пакетного менеджера для Си и C++.

Читать далее

Пайплайн цифрового фотографа на LINUX

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров11K

Хочу поделиться своим опытом выстраивания конвейера (pipeline) обработки и каталогизации фотографий. Постарался сделать повествование как можно увлекательнее, заостряя внимание на принципиальной сути, вместо пошагового руководства.

Читать далее

Цифровая зависимость: почему проприетарный софт — тупик для человечества?

Уровень сложностиПростой
Время на прочтение13 мин
Количество просмотров5K

Главной темой и проблемой IT является, необходимость набора софта для осуществления тех или иных целей. Например - графический редактор, редактор/читалка документов, локальный DNS-сервер, система мониторинга, почтовый сервер или вовсе доменный контроллер - зачастую с этого всё и начинается. Всё это вероятнее всего, имеет закрытый код - проприетарный.

В дополнение, многие делают очень весёлую ошибку, пытаясь используя знания и/или специфичную терминологию NT-мира (Windows*) полноценно работать/судить в/о *nix среде. Естественно, ничего не получается, но некоторые особенно упёртые, пытаются заставить работать, например AD (Active Directory) в Linux. В итоге сохраняется базовая функциональность в лице пароль+логин+сертификаты/билеты и не более, потому что закрытый остров Windows, сильно отличается от открытого света.

Собственно, а почему так? А потому что “удобно”, "быстро", "красиво", "едино" и ещё сотня подобных слов, где будет оправдываться монополия Microsoft, а так же зависимости, проприетарность, закрытость и невозможности внесений изменений. Всё это и так же отсутствие стандартизации между проприетарными проектами (Не только в Microsoft), без установки дополнительного софта или даже костылей - не решается. Ну и ещё цена неадекватно большая была примерно... Всегда, за лицензию Windows и уж тем более серверного издания.

Читать подробнее...

Сборка AppImage: Пошаговое руководство с готовыми скриптами

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров3.4K

В этой статье мы рассмотрим процесс создания AppImage — универсального формата для распространения Linux-приложений. Ниже представлена ссылка на набор скриптов, который автоматизирует сборку AppImage, включая поиск зависимостей, копирование библиотек и упаковку приложения.

Читать далее

Linux 6.17: свежие драйверы, быстрые сети и надежная память

Время на прочтение7 мин
Количество просмотров5.4K

29 сентября 2025 года Линус Торвальдс объявил о выходе ядра Linux 6.17. За два месяца работы 2 118 разработчиков внесли 14 334 патча. В общей сложности затронут 12 841 файл. В ядро добавлено 646 тысяч строк кода, удалено около 399 тысяч, а общий объем изменений составил 46 МБ.

Основной фокус релиза — драйверы (43% изменений), сетевой стек (14%), файловые системы (4%) и поддержка архитектур (10%). Собственно, все как всегда. Ну и обновление добавляет поддержку нового оборудования, оптимизацию производительности и исправления, которые делают систему стабильнее. В статье разберем, что нового в Linux 6.17, как улучшения повлияют на работу и почему этот релиз стоит вашего внимания.

Читать далее

Kernel-hack-drill и новый эксплойт для CVE-2024-50264 в ядре Linux

Уровень сложностиСложный
Время на прочтение30 мин
Количество просмотров6.3K

Некоторые уязвимости, связанные с повреждением памяти, невероятно сложны для эксплуатации. Они могут вызывать состояния гонки, приводить к сбоям системы и накладывать разные ограничения, которые усложняют жизнь исследователя. Работа с такими «хрупкими» багами требует значительно больше времени и усилий. CVE-2024-50264 в ядре Linux — как раз одна из таких сложных уязвимостей, которая получила премию Pwnie Award 2025 в категории «Лучшее повышение привилегий» (Best Privilege Escalation). В этой статье я представлю свой проект kernel-hack-drill и покажу, как он помог мне разработать прототип эксплойта для уязвимости CVE-2024-50264.

Поехали!

Архитектура NGFW: опыт использования VPP и DPDK, частые ошибки разработчиков

Уровень сложностиСложный
Время на прочтение29 мин
Количество просмотров6.7K

Всем привет! Меня зовут Константин. Моя карьера в сетевой разработке началась со времен Symbian OS, когда я участвовал в создании сетевого стека этой платформы. С 2010 года я работаю в «Лаборатории Касперского», разрабатывая мобильные и сетевые продукты, а последний год плотно погружен в проект NGFW. В мои задачи входит как проработка архитектурных решений, так и написание кода ключевых модулей. 

В этой статье я хочу рассказать об архитектуре сетевого экрана следующего поколения (NGFW), над которым работаю. В частности, расскажу:

- об архитектуре передающего слоя (data plane) нашего продукта, основанной на связке DPDK/VPP;
- о пути сетевого пакета в рамках data plane NGFW;
- о частых ошибках при разработке решений на базе VPP;
- о разработке и сценариях встраивания в высокоскоростной конвейер обработки пакетов VPP некоторых из наших движков безопасности;
- об истории создания наших собственных движков безопасности DPI и IDPS (хочу выразить благодарность за неоценимую помощь в подготовке материала для данного раздела коллегам из команды IDPS и лично Евгению Прусову);
- об интеграции data plane с протоколами динамической маршрутизации.

Материал будет полезен архитекторам и разработчикам, участвующим в создании высокопроизводительных и отказоустойчивых сетевых решений.

Читать далее

Вклад авторов