Обновить
256K+

Linux *

Пишем под *nix

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

Чужой код, свои патчи. Зачем компании инвестируют в open source

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели370

Open source компонент редко остается неизменным после того, как попадает в большой продукт. Если команде не хватает нужной функции, библиотека плохо стыкуется с внутренней системой или выпуск обновления безопасности не укладывается в запланированные сроки, то в ход идет доработка собственными силами. Часть изменений в таком случае отправляется в исходный репозиторий, тогда как остальные годами живут в отдельной ветке.

В конце 2025 года Linux Foundation Research опросила 567 специалистов о том, как их организации работают с такими изменениями. Результаты вошли в февральский отчет «ROI for Open Source Software Contribution». Формально исследование посвящено финансовой выгоде от вложений в open source, но нас в отчете больше всего заинтересовала практическая часть. По таблицам из отчета можно понять, что именно компании дорабатывают, когда отправляют код авторам проекта и в каких случаях сохраняют собственный форк.

Читать далее

Новости

ПЛК перестает быть закрытой коробкой. Зачем контроллеру Linux?

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

Когда мы говорим про ПЛК, обычно представляем достаточно закрытое устройство: подключили модули ввода-вывода, написали программу на ST или LD, загрузили проект - и контроллер годами выполняет один и тот же цикл.

Но современные контроллеры все чаще совмещают PLC-runtime и Linux-среду, в которой можно запускать базы данных, MQTT, VPN, приложения на Python и C++, web-сервисы и даже контейнеры. Разберемся, зачем производители идут в эту сторону, что такая архитектура дает пользователю и какие новые риски создает.

Читать далее

Ubuntu 26.04 как маршрутизатор для GNS3: настраиваем NAT, DHCP и DNS в Hyper-V

Время на прочтение10 мин
Охват и читатели6.1K

Как дать узлам внутри GNS3 доступ в интернет, не используя встроенный NAT Hyper-V?

В этой статье превратим Ubuntu 26.04 в маршрутизатор лабораторного стенда. Настроим NAT, DHCP и DNS только средствами Linux.

В результате Alpine получит сетевые параметры по DHCP, выйдет в интернет и мы установим на него клиент OpenSSH.

Заодно разберем неочевидную проблему с маршрутом по умолчанию в Windows, из-за которой трафик физического хоста может попасть в петлю.

Настраиваем стенд

Как ядро Linux решает, какой процесс «убить» при нехватке памяти

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

В сентябре 2004 года разработчик Томас Хабетс вернулся к рабочей станции и обнаружил, что его экран разблокирован. Память закончилась, OOM Killer выбрал жертву и завершил xlock... Для того, чтобы больше такого не произошло Хабетс предложил список процессов, которые Linux запрещено убивать даже в такой ситуации. Его патч в ядро не вошёл, но позже разработчики добавили настройку приоритетов, поддержку cgroups и отдельный поток для быстрого освобождения памяти. 

Несмотря на это, OOM Killer всё равно может снести важный процесс, ведь ядро видит только объём памяти и заданные администратором правила. Если правил нет, то Linux сам решает, кого «убить». Почему и что делать, чтобы этого не произошло — в статье.  

Читать

Как я написал PID 1 для контейнеров на чистом ассемблере: x86-64 и ARM64

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

Не потому, что контейнерному миру срочно нужен ещё один init. Есть Tini, есть docker run --init, и для большинства production-сценариев я бы по-прежнему начал именно с них.

Мне скорее хотелось разобрать задачу до самого нижнего уровня: без libc, без runtime, напрямую через Linux syscalls. Заодно проверить, насколько сильно будет отличаться одна и та же реализация на x86-64 и ARM64.

В итоге из небольшого эксперимента получился mini-init-asm: PID 1, который запускает приложение в отдельной process group, передаёт сигналы всей группе, собирает zombie-процессы и умеет корректно завершать контейнер с exit code приложения.

Позже туда добавились subreaper mode и простой restart-on-crash. А сам проект в итоге доехал сначала до Debian unstable, а затем и до testing.

Но началось всё с вопроса: что вообще должен уметь нормальный PID 1 внутри контейнера?

Читать далее

Свой видеохостинг с P2P и Fediverse: PeerTube

Уровень сложностиСредний
Время на прочтение17 мин
Охват и читатели90K

Всем привет! Сегодня я хочу вам рассказать о Peertube — некоммерческой децентрализованной видеоплатформе с открытым исходным кодом. В нем есть возможность загрузки контента, комментирования, поиска, а также изменения видео, когда оно уже опубликовано.

Peertube основан на технологии P2P (peer-to-peer) для обмена видео по принципу всех известных торрентов. Исторически PeerTube использовал WebTorrent, но уже несколько лет (начиная с версии 6.0) проект полностью перешел на протокол HLS в связке с WebRTC.

Что лучше — централизация или децентрализация? Что такое Fediverse? И наконец — как создать свой инстанс-сайт для сохранения видео на случай, например, блокировки ютуба? Давайте-ка погрузимся в теорию и практику!

В конце концов мы опубликуем свой децентрализованный видеохостинг!

Читать далее

Создание и подключение ISO образа как репозитория пакетов АСКОН

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели4.5K

Привет Хабр! Этой статьей мы завершаем цикл материалов по развертыванию ПО АСКОН в закрытых внутренних сетях (предыдушие статьи: для Astra Linux, РЕД ОС, Альт Рабочая станция). Ее подготовил руководитель методического направления команды КОМПАС-3D.

Рассмотрим еще один сценарий: как скачанные пакеты КОМПАС-3D «упаковать» в образ ISO и использовать его как готовый локальный репозиторий, не требующий никаких манипуляций на сервере. Не будем вас томить, выпуская отдельные статьи по каждой из поддерживаемых операционок. Расскажем сразу о всех трёх: Astra Linux SE 1.8, Альт 11 и РЕД ОС 8.0.

Читать далее

Почему HTTPS-прокси не видит трафик приложения

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели6.8K

Если вы когда-нибудь пытались просмотреть сетевые запросы десктопного или мобильного приложения через HTTPS-прокси, то наверняка сталкивались со странной ситуацией: прокси настроен, корневой сертификат установлен и доверен, системный прокси прописан, а в списке запросов пусто. Или приложение начинает выдавать ошибку сразу после включения перехвата.

Ниже будет описан набор реальных сценариев, со схемами работы на сетевом уровне и примерами того, как это выглядит в прокси-приложении. Для этого я использую Сольпугу и несколько демо-приложений с разными условиями.

Читать далее

Что такое ARP‑Spoofing и как от него защититься

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели7.7K

«ARP‑Spoofing», или же «Отравление ARP‑кеша» — это тип кибератаки уровня L2, чья работоспособность до сих пор держится лишь на огромной дыре в безопасности Address Resolution Protocol. Основная суть данной атаки — испортить ARP‑кеш устройства путём рассылки пакетов с поддельными данными в своей подсети. В этой статье я по шагам покажу весь процесс этой атаки на своих домашних устройствах типа MITM (Man In The Middle), а также расскажу, как от неё защититься.

Читать далее

Эволюция планировщиков ядра Linux — от O(1) до CFS и EEVDF

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели8.2K

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

Привет! Я Никита, разработчик системного ПО в Selectel. В этой статье рассмотрим эволюцию трех наиболее известных планировщиков Linux: O(1), CFS (Completely Fair Scheduler) и EEVDF (Earliest Eligible Virtual Deadline First).

Читать далее

Stapler: текстовый «рецепт» сборки и управление пакетами в ОС «Альт»

Время на прочтение3 мин
Охват и читатели5.2K

Stapler: текстовый «рецепт» сборки и управление пакетами в ОС «Альт»

Во время установки «Альт Рабочей станции» 11.2 можно загрузить инструмент, позволяющий использовать приложения из различных источников, включая сторонние репозитории. Его также можно установить в других ОС «Альт» на платформе p11. Речь идет о Stapler.

Читать далее

Как я автоматизировал сборку образов с Ansible и Packer и попал в community.ansible

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

Полночь, деплой горит, а ты вручную поднимаешь десятый сервер за неделю: копируешь ISO, тыкаешь Enter в консоли анакон­ды, правишь fstab, чинишь grub — и на утро выясняешь, что забыл gpg-ключ репозитория на трех машинах из десяти. Признавайтесь, бывало? Эта статья для тех, кто устал платить временем и нервными клетками за ручную сборку образов.

В этой статье расскажу, как построил полностью автоматизированный пайплайн для сборки образов закрытого дистрибутива Linux на базе RedHat — без единого ручного клика после старта. Ansible управляет хостом-билдером, Packer с shell-провижионерами собирает сам образ, и в итоге мы получаем готовый RAW, оптимизированный для OpenStack. Подход не привязан к конкретной ОС: если у вас другой дистрибутив, достаточно заменить ks.cfg на preseed.cfg или любой другой автоустановщик — остальная логика пайплайна должна работать без изменений. На десерт расскажу, как оформил часть решения в модуль для Ansible и отправил его в официальную коллекцию community.general.

Читать далее

XDP: практический гайд по разбору сетевого трафика с eBPF

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

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

Разобрать XDP

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

Пишем логи в journald с помощью Logback и FFM API

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

Разворачивать бэкенды для личного использования с помощью systemd удобно, но stdout плохо интегрируется с journald, а устанавливать софт только для просмотра логов не хочется. В статье - простой пример, как можно писать логи из Java-приложения в journald так, чтобы их потом удобно просматривать

Читать далее

OpenClaw и Hermes на одном VPS: чего стоит связать двух агентов безопасно

Уровень сложностиСредний
Время на прочтение18 мин
Охват и читатели8.8K

Поставил OpenClaw и Hermes на один VPS и связал их между собой: первый принимает задачи из Telegram, второй исполняет их в своей песочнице. Через час после установки обнаружил, что панель управления агентом открыта в интернет, а ещё через полчаса — что фаервола на сервере нет вообще. Хроника нескольких вечеров про то, чем ИИ-агент опасен на своём сервере и сколько стоит поставить его по-человечески.

Читать, что сломалось

«Bro, what…?» #1. Первый контакт с crackme на Linux x86-64

Уровень сложностиСредний
Время на прочтение54 мин
Охват и читатели7.5K

Вы запускаете программу, о которой ничего не знаете. Она вежливо просит строку, а в ответ на ваш ввод насмешливо отвечает: «Bro, what are you trying to do?» И правда, что мы пытаемся сделать? Пытаемся понять ее.

Перед нами crackme – программа-головоломка, написанная для тренировки навыков обратной разработки: бинарник под Linux x86-64 без исходников и документации, который издевается над каждым, кто не смог его разгадать. Это первая статья цикла из трех о гибридном анализе крякми Getting Started Keygen (Mazzottis). Мы осмотрим файл штатными утилитами, найдем main в Ghidra, расшифруем «бессмысленные» имена переменных в реальную раскладку стека и подтвердим гипотезы в GDB. По пути встретим оптимизированный пролог без RBP, «хитрое» беззнаковое условие и std::string, спрятавшийся в трех переменных, которые на первый взгляд никак не связаны.

Во второй части цикла – мутационное тестирование и реконструкция скрытой структуры, в третьей – полный разбор хеш-функции и восстановление алгоритма на Python.

Читать первую часть

АКПП Voith не включается выше второй передачи: разбираемся в J1939

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

Изучаю шину CAN J1939 через написание самописных утилит. Целенаправленно отключал датчик наддува для проверки своих программ.

И здесь случай: Идёт выпуск машин на маршрут. На одном из автобусов АКПП не включается выше второй передачи. Сканера нет читать нечем. Но есть C, Linux, CANable, map_id_j1939, viz_j1939.

Читать далее

Как делается каталог на отдельный LVM-том

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

Бывает задача: «каталог лежит в корне, надо чтобы он был отдельно, гигов на пять». Вот как это делается .

Читать далее

Как я починил энергосбережение OnePlus 3T на mainline ядре

Уровень сложностиСложный
Время на прочтение33 мин
Охват и читатели12K

Первая часть закончилась тем, что телефон заработал, и какое-то время этим всё и ограничивалось. postmarketOS на mainline-ядре, сверху Docker, Tailscale и один небольшой сервис, которому от меня ничего не требовалось. Я убрал телефон на полку и перестал о нём думать — ровно этого я от него и хотел.

Сервис работал. Заодно выяснилось, что процессор всё это время держался на 70 °C. Не под нагрузкой, а в покое, днём и ночью, на устройстве без вентилятора и без радиатора, где тепло уходит только через собственный алюминиевый корпус.

Вопрос, который стоило задать сразу: чем он занят, что даёт такую температуру. Дальше — ответ на него.

Читать далее

Как я придумывал замену Redis и что из этого получилось

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели12K

Некоторое время назад мне пришла задача спроектировать высокопроизводительный балансировщик нагрузки для протокола Diameter. Через 3 месяца задача исчезла, так как как оказалось слишком долго и дорого, но в итоге балансировщик был сделан и имеется его MVP которое готово к установке как на реальное железо так и в облаке. В итоге продукт получился неплохим, и он с лихвой выигрывал имееющееся решение в той компании, по производительности был выигрыш раз в 6 по ресурсам раз в 100. Но суть не в этом, а в том что балансировщик был кластерным и умел хранить сессии в Redis. Решение было сделано, оно показало работоспособность, все хорошо, но меня не устраивала производительность. В тот момент я столкнулся с очень интересной проблемой - по каким то причинам я не мог пробить барьер в 5-7К Diameter Transactions per second. В принципе 5-7К TPS было неплохо, но проблемным участком как показал анализ был Redis. Проведя немного времени я смог добиться приемлемого результать и производительность поднялась до 20К TPS но там были другие проблемы.

Читать далее
1
23 ...