<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
  <channel>
    <language>ru</language>
    <title>Linux</title>
    <description>Новости разработки ядра Linux и обучающая информация о дистрибутивах на его основе.</description>
    <link>https://tproger.ru/tag/linux</link>
    <atom:link href="https://tproger.ru/tag/linux/feed" rel="self" type="application/rss+xml"/>
    <lastBuildDate>Sun, 04 Oct 2026 18:17:03 GMT</lastBuildDate>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>12</sy:updateFrequency>
    <image>
      <title>Linux</title>
      <link>https://tproger.ru</link>
      <url>https://tproger.ru/apple-touch-icon.png</url>
    </image>
    <item>
      <title>Простой RPC на Си для Linux-приложений</title>
      <link>https://tproger.ru/articles/prostoj-rpc-na-si-dlya-linux-prilozhenij</link>
      <comments>https://tproger.ru/articles/prostoj-rpc-na-si-dlya-linux-prilozhenij?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[dsn76]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/prostoj-rpc-na-si-dlya-linux-prilozhenij</guid>
      <description><![CDATA[<p>Как просто вызвать функцию из другого приложения на Linux.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/prostoj-rpc-na-si-dlya-linux-prilozhenij">Простой RPC на Си для Linux-приложений</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Язык Си]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 10 Sep 2026 17:38:38 GMT</pubDate>
      <content:encoded><![CDATA[<p>Терминал один: ./log (можно запустить несколько экземпляров). Терминал два: ./clc (-//-), Терминал три: ./app . В выводе первого появляется LOG("Hello, world, from app! my pid=..."). Вызовы log_write("Hello") и calc_add(1, 2) в app — обычные С-функции, но выполняются они в процессах log и clc . Вся сериализация параметров функций скрыта в X-макросах, вручную это делать не нужно. Для ипользования в своих приложениях: подключить в свои исходники #include "libsrpc.h", описать прототипы экспортируемых функций в ./src/libsrpc_rpc_functions.h (это часть исходников самой библиотеки, а не отдельный публичный API-заголовок), пересобрать libsrpc.so и слинковать её в своё приложение с флагом -Wl,--no-as-needed . Подробнее — в ./example.</p><p>Есть классическая проблема: изолированные процессы — хорошо для надёжности, но хочется иногда позвать функцию из соседа, как будто она лежала в той же библиотеке. Стандартные IPC — это всегда протокол: описал интерфейс, сгенерировал стабы, поднял сервер, прописал адреса. simplerpc предлагает путь короче: ты пишешь обычную функцию на Си, линкуешь библиотеку — и она автоматически становится RPC-методом, доступным другим процессам на той же машине.</p><p>Архитектура держится на трёх решениях. Во-первых, данные едут не через сокет, а по разделяемой памяти — SHMEM. Аргументы вызова лежат в общем сегменте, отображённом по одному виртуальному адресу во всех процессах, и копирования между адресными пространствами нет. Сокет используется только для сигналов: регистрация функций, передача дескриптора памяти (SCM_RIGHTS), обнаружение смерти клиента. Во-вторых, свой аллокатор — транзакционный TLSF с откатом при падении процесса. Межпроцессный мьютекс встроен прямо в структуру пула, а если владелец мьютекса погибает, следующий автоматически откатывает незавершённую транзакцию. Пул консистентен без внешнего сторожа. В-третьих, вместо стандартных примитивов синхронизации — POSIX-семафоры в разделяемой памяти и lock-free MPMC-очередь для передачи задач от клиента к воркерам.</p><p>Но самое интересное — как демон оказывается в системе. Исполняемый файл демона не лежит на диске. Он встроен в libsrpc.so в виде C-массива, записывается в анонимный memfd целиком в оперативной памяти и запускается через fexecve(). При загрузке библиотеки любым приложением автоматически форкается демон. Если процессов несколько — проигравший гонку bind() на абстрактном Unix-сокете молча завершается. Когда последний клиент отключается — демон выходит, а память исчезает вместе с последней ссылкой на memfd. Никакого PID-файла, никакого init-скрипта, никакого сервиса. Библиотека сама себя разворачивает.</p><p>Библиотека организована так: guard daemon (фоновый координатор), транспорт (Unix-сокеты и SCM_RIGHTS), аллокатор TLSF с транзакциями, сборщик мусора в разделяемой памяти с hazard pointers, RPC через X-макросы (один файл — единственный источник истины), динамическая линковка через weak alias, дескрипторы процессов и потоков, lock-free очереди и синхронизация. Всё это — в bench/ можно найти бенчмарки, если захотите сравнить сами.</p><p>Попробовать три команды: mkdir build &amp;&amp; cd build &amp;&amp; cmake .. &amp;&amp; make, затем в одном терминале ./log, в другом ./app. Готово.</p><p>Ограничения: только Linux, только локальные процессы на одной машине, ранняя стадия развития — API стабильностью не отличается. Функции с переменным числом аргументов не поддерживаются, указатели осмыслены только если адресуют разделяемый пул.</p><p>Репозиторий: <a href="https://github.com/dsn76/simplerpc" rel="nofollow">github</a>, лицензия Apache-2.0. Если интересно — смотрите код на Си.</p>]]></content:encoded>
    </item>
    <item>
      <title>Asahi Linux заработал на Mac с M3, но сон и производительное 3D-ускорение пока недоступны</title>
      <link>https://tproger.ru/news/asahi-linux-zarabotala-na-mac-s-m3-no-so-snom-i-grafikoj-pridyot</link>
      <comments>https://tproger.ru/news/asahi-linux-zarabotala-na-mac-s-m3-no-so-snom-i-grafikoj-pridyot?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/asahi-linux-zarabotala-na-mac-s-m3-no-so-snom-i-grafikoj-pridyot</guid>
      <description><![CDATA[<p>Asahi Linux объявила поддержку Mac с M3, M3 Pro и M3 Max в режиме Expert. В анонсе заявлены Wi-Fi и AV1, но сон, HDMI и GPU ограничены. Проверьте детали</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/asahi-linux-zarabotala-na-mac-s-m3-no-so-snom-i-grafikoj-pridyot">Asahi Linux заработал на Mac с M3, но сон и производительное 3D-ускорение пока недоступны</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Apple]]></category>
      <category><![CDATA[macOS]]></category>
      <category><![CDATA[MacBook]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 07 Sep 2026 06:05:19 GMT</pubDate>
      <content:encoded><![CDATA[<p>На MacBook и iMac с M3 теперь можно поставить Linux через официальный установщик <a href="https://asahilinux.org/">Asahi Linux</a>, но для повседневной работы остаются серьёзные ограничения. 6 сентября команда <a href="https://asahilinux.org/2026/09/m2-episode-1/">объявила о добавлении поддержки M3, M3 Pro и M3 Max</a>. Пока она доступна только в режиме Expert — экспериментальном пути установки.</p><ul><li>В анонсе 6 сентября заявлены камера, микрофоны, Wi-Fi, Bluetooth и аппаратное декодирование видео, включая AV1. В официальной таблице функций есть расхождения; перед установкой проверьте свою модель.</li><li>По анонсу, режим сна не работает, а HDMI отключён на MacBook, где он предусмотрен. GPU и полная поддержка DCP остаются незавершёнными.</li><li>Mac Studio с M3 Ultra пока не поддерживается.</li></ul><h2>Что работает в Asahi Linux на M3</h2><p>Согласно анонсу команды от 6 сентября, доступна почти вся функциональность, уже поддерживаемая на M1 и M2. Кроме камеры, встроенных микрофонов и беспроводной связи, заявлены USB со скоростью до 10 Гбит/с и аппаратное декодирование видео, включая AV1. Декодирование видеопотока и отрисовка 3D-сцен используют разные возможности чипа.</p><p>Крупные незавершённые части порта — графический процессор и полная поддержка DCP, сопроцессора управления дисплеем. По анонсу, из-за ограничений кадрового буфера, предоставляемого прошивкой, <b>режим сна не работает</b>, а HDMI-порт на оснащённых им MacBook отключён. Автор анонса Джеймс Каллигерос предупреждает об ограничениях графики. Ниже — перевод его слов.</p><blockquote>Сейчас не стоит ожидать производительного или энергоэффективного 3D-ускорения.</blockquote><p><b>В документации есть расхождения.</b><br />На момент подготовки новости <a href="https://asahilinux.org/docs/platform/feature-support/m3/">официальная таблица M3</a> ещё указывает отсутствие AV1 и незавершённую поддержку USB, а сон отмечает как доступный. Перечень возможностей и ограничений выше приведён по анонсу 6 сентября. Таблица может обновляться с задержкой; перед установкой проверяйте свежие сообщения проекта.</p><h2>Как попробовать экспериментальную поддержку</h2><p>В <a href="https://asahilinux.org/2026/09/m2-episode-1/">официальном анонсе</a> приведена команда для терминала macOS. Она скачивает и сразу запускает удалённый скрипт установки с включённым Expert. Убедитесь, что адрес совпадает с официальным <a href="https://alx.sh/">alx.sh</a>. Перед изменением разделов сохраните резервную копию данных и прочитайте подсказки установщика.</p><p>После установки команда проекта просит обновить систему:</p><p><a href="https://asahilinux.org/2026/09/m2-episode-1/">Ограничение Expert планируют снять к выходу беты Fedora Linux 45</a>, ориентировочно через пару недель после анонса. <a href="https://fedoraproject.org/">Fedora</a> — дистрибутив, на котором основана пользовательская версия Asahi. План зависит от отсутствия серьёзных регрессий и других блокирующих проблем; обещания одновременно исправить сон, HDMI и графику в анонсе нет.</p><p>Поддержка M3 в Asahi Linux уже пригодна для практических экспериментов. Перед установкой сопоставьте свой рабочий сценарий с <a href="https://asahilinux.org/2026/09/m2-episode-1/">ограничениями, указанными в анонсе 6 сентября</a>, и проверьте последующие обновления проекта.</p>]]></content:encoded>
    </item>
    <item>
      <title>CERN переводит 2200 компьютеров ускорителей с CentOS на Debian 13</title>
      <link>https://tproger.ru/news/cern-perevodit-2200-kompyuterov-uskoritelej-s-centos-na-debian-1</link>
      <comments>https://tproger.ru/news/cern-perevodit-2200-kompyuterov-uskoritelej-s-centos-na-debian-1?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Tproger]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/cern-perevodit-2200-kompyuterov-uskoritelej-s-centos-na-debian-1</guid>
      <description><![CDATA[<p>CERN мигрирует 2200 с лишним промышленных компьютеров ускорителей на Debian 13 до конца 2026 года. Последней каплей стал флаг -march=x86-64-v2 в RHEL.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/cern-perevodit-2200-kompyuterov-uskoritelej-s-centos-na-debian-1">CERN переводит 2200 компьютеров ускорителей с CentOS на Debian 13</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Open Source]]></category>
      <category><![CDATA[Hardware]]></category>
      <category><![CDATA[DevOps]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 03 Sep 2026 04:40:04 GMT</pubDate>
      <content:encoded><![CDATA[<p>CERN, Европейская организация по ядерным исследованиям, переводит промышленные компьютеры управления ускорителями с CentOS на Debian 13. Об этом инженеры организации рассказали на MiniDebConf в Винтертуре (Швейцария), а 2 сентября <a href="https://www.phoronix.com/news/CERN-Goes-Debian-Leaving-RHEL">пересказал</a> Phoronix. Речь о более чем 2200 промышленных компьютерах и встраиваемых системах; миграцию планируют завершить до конца 2026 года.</p><p>Последняя капля, как её назвали инженеры CERN (перевод редакции), знакома всем, кто держит парк старого железа: RHEL и его производные собираются с флагом компилятора -march=x86-64-v2, и процессоры без нужных инструкций перестают загружать систему. В CERN это назвали принудительным устареванием. Для админа с парком машин десятилетней давности вопрос тот же: какую ветку дистрибутивов под них выбирать.</p><ul><li>Мигрируют 2200 с лишним промышленных компьютеров и встраиваемых систем управления ускорителями; срок до конца 2026 года; целевая система Debian 13.</li><li>Дата-центры и вычислительная инфраструктура экспериментов остаются на RHEL и AlmaLinux, уточнение опубликовано отдельно.</li><li>CERN около десяти лет использовала Scientific Linux, которую сама сопровождала, затем с 2015 года CentOS.</li><li>Рассматривали CentOS Stream как естественное продолжение, но решающим стал флаг -march=x86-64-v2 по умолчанию в RHEL.</li><li>Названные проблемы Debian: нет стандартного инструментария для автоматической сборки и публикации пакетов и для хранения нескольких версий одного пакета.</li></ul><h2>Что такое x86-64-v2 и почему он отсекает железо</h2><p>Уровни микроархитектуры x86-64-v2, v3 и v4 описывают наборы инструкций, на которые компилятор может рассчитывать. Уровень v2 требует, среди прочего, SSE4.2 и POPCNT; это процессоры примерно 2009 года и новее. RHEL 9 и производные (AlmaLinux, Rocky, CentOS Stream 9) собираются под v2, поэтому на более старых CPU ядро и пользовательские программы просто не запускаются. Промышленные контроллеры и встраиваемые машины у ускорителей меняются редко: оборудование сертифицировано, проверено годами и работает. Debian по-прежнему собирает amd64 под базовый уровень x86-64, что и делает его вариантом для такого парка.</p><h2>Чего CERN не хватило в Debian</h2><p>По пересказу Phoronix, инженеры назвали два пробела. Первый: в экосистеме Debian нет стандартного инструментария для автоматической сборки и публикации собственных пакетов уровня того, к чему привыкли в мире RPM (Koji, Copr, mock). Второй: инструменты репозиториев плохо поддерживают хранение нескольких версий одного и того же пакета, что нужно для контролируемого отката на промышленных системах. Оба пробела CERN закрывает своими средствами; подробности обещаны в видеозаписи доклада с MiniDebConf.</p><h2>Что остаётся на RHEL</h2><p>Важное уточнение, которое Phoronix добавил после публикации: миграция касается только промышленных компьютеров управления ускорителями. Дата-центры CERN и вычислительная инфраструктура экспериментов остаются на RHEL и AlmaLinux. То есть это не «CERN уходит с Red Hat», а выбор дистрибутива под конкретный класс машин со старым железом.</p><h2>Что это значит для своего парка</h2><ul><li>Проверить, проходят ли ваши серверы уровень v2: /lib64/ld-linux-x86-64.so.2 --help | grep supported на любой glibc новее 2.33 покажет поддерживаемые уровни.</li><li>Если в парке есть машины ниже v2, ветка RHEL 9 и новее для них закрыта; варианты: Debian, Ubuntu (тоже базовый x86-64) или остаться на RHEL 8-совместимых системах до конца их поддержки.</li><li>Для промышленных систем ключевой вопрос не дистрибутив, а инструменты сборки пакетов и отката: под Debian их придётся собирать самим, как это делает CERN.</li><li>Debian 13 вышел летом 2025 года и будет получать обновления безопасности до 2028 года, затем LTS; для сравнения, поддержка Debian 11 <a href="https://tproger.ru/news/debian-11-bullseye-ostalsya-bez-obnovlenij-bezopasnosti-lts-zako">закончилась</a> 31 августа.</li></ul><p>Слайды и видео доклада CERN с MiniDebConf на момент публикации доступны через страницу конференции, отдельного пресс-релиза организация не выпускала. На сайте мы недавно разбирали другой пример влияния сборочных флагов на скорость: <a href="https://tproger.ru/news/rust-coreutils-0-11-pokazyvaet-owibku-karetkoj-i-uskoryaet-cp-na">Rust Coreutils 0.11</a> и разницу производительности бинарников в Alpine из-за libc.</p><p>Источник: <a href="https://www.phoronix.com/news/CERN-Goes-Debian-Leaving-RHEL">Phoronix: CERN Transitioning Industrial Computers To Debian</a></p><p>Изображение на обложке: Debian Project, логотип Debian Open Use</p>]]></content:encoded>
    </item>
    <item>
      <title>Selectel добавил в SELECTOS терминального ИИ-агента aish</title>
      <link>https://tproger.ru/news/selectel-dobavil-v-selectos-terminalnogo-ii-agenta-aish</link>
      <comments>https://tproger.ru/news/selectel-dobavil-v-selectos-terminalnogo-ii-agenta-aish?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Tproger]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/selectel-dobavil-v-selectos-terminalnogo-ii-agenta-aish</guid>
      <description><![CDATA[<p>Selectel добавил в SELECTOS терминального ИИ-агента aish: он собирает контекст, предлагает команды и выполняет их после подтверждения. Модель развёрнута на серверах Selectel. Установка через apt, что умеет и чего не сказано.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/selectel-dobavil-v-selectos-terminalnogo-ii-agenta-aish">Selectel добавил в SELECTOS терминального ИИ-агента aish</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Нейронные сети]]></category>
      <category><![CDATA[Системное администрирование]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 02 Sep 2026 01:34:38 GMT</pubDate>
      <content:encoded><![CDATA[<p>Selectel 1 сентября <a href="https://habr.com/ru/companies/selectel/articles/1076854/">рассказал</a> в своём блоге на Хабре о aish, терминальном ИИ-агенте для системных администраторов, который вошёл в открытый репозиторий SELECTOS, дистрибутива Linux компании. Агент принимает задачу на естественном языке, собирает контекст с сервера, предлагает команды и выполняет их только после подтверждения оператора. Модель, по словам компании, развёрнута на серверах Selectel, так что содержимое логов и конфигураций не уходит зарубежным провайдерам.</p><p>Для российских администраторов это готовый инструмент такого класса от отечественного хостера: аналоги вроде Warp AI или встроенных ассистентов в облачных консолях работают через зарубежные модели, и отправлять туда серверный контекст многим компаниям запрещено политиками безопасности.</p><ul><li>aish доступен во всех версиях SELECTOS; установка: sudo apt update, sudo apt install aish, запуск командой aish.</li><li>Сценарии: не запускается сервис, закончилось место на диске, нужно проверить логи или конфигурацию.</li><li>Агент предлагает команды и выполняет их только после согласия пользователя.</li><li>Модель развёрнута локально на серверах Selectel; подключение других моделей обещано в будущих релизах.</li><li>О работе на сторонних дистрибутивах компания не сообщает.</li></ul><h2>Как это работает</h2><p>Автор публикации Наталия Бажан, менеджер проектов SELECTOS, описывает цикл так: администратор пишет в терминале задачу, например «сайт на nginx не открывается», агент сам смотрит состояние сервисов, порты, логи и конфигурацию, формулирует гипотезу и предлагает конкретные команды. Каждая команда показывается до выполнения, и без явного согласия оператора ничего не запускается. Это принципиальное отличие от автономных агентов: aish задуман как помощник с правом совещательного голоса.</p><p>В демонстрации из статьи агент поднимает сайт на nginx: проверяет установку, пишет конфигурацию, перезапускает сервис. Компания подчёркивает, что серверный контекст не покидает инфраструктуру Selectel. Что именно за модель используется, её размер и как устроена изоляция данных между клиентами, в публикации не раскрыто.</p><figure><img src="https://media.tproger.ru/user-uploads/133946/2026-09-02/19ded24a-3568-4bf6-9750-b5f6470d0897.webp" alt="Терминал с агентом aish: предложение команд для запуска сайта на nginx" /><figcaption>Кадр из демонстрации Selectel: aish предлагает команды для запуска nginx. Изображение: Selectel</figcaption></figure><h2>Установка и ограничения</h2><p>На SELECTOS установка сводится к трём командам из документации:</p><p>Агент доступен во всех версиях SELECTOS. Про установку на Ubuntu, Debian или другие российские дистрибутивы компания не пишет; пакет живёт в репозитории SELECTOS, и, по нашей оценке, за пределами этого дистрибутива его работа не гарантирована. Не сказано и о стоимости: обращения к модели идут на серверы Selectel, и остаётся вопрос, будет ли сервис бесплатным для всех пользователей SELECTOS, включая тех, кто ставит его не на серверах Selectel.</p><p>Selectel обещает в будущих релизах возможность подключать другие модели. Это открыло бы путь к полностью локальной работе с собственной моделью на своём железе, но сроков компания не называет.</p><h2>Что стоит проверить перед использованием на боевом сервере</h2><ol><li>Какие данные агент собирает для контекста и уходят ли в модель содержимое конфигураций с секретами; политика обработки в публикации не описана.</li><li>Права: запускать aish под учётной записью с ограниченным sudo, а не под root, пока не ясно, какие команды он склонен предлагать.</li><li>Журналирование: фиксировать все выполненные по подсказке агента команды, чтобы разбирать инциденты.</li><li>Сеть: серверы за пределами инфраструктуры Selectel должны иметь доступ к её API; адреса и порты в документации стоит уточнить.</li></ol><h2>Контекст</h2><p>SELECTOS, дистрибутив Selectel на базе Debian, развивается как открытый проект с собственным репозиторием; aish добавили в него в августе 2026 года, а публичный анонс вышел сейчас. Появление терминальных агентов у хостеров укладывается в общую тенденцию: похожие ассистенты встраивают в консоли крупные облака, но там речь о зарубежных моделях и зарубежной юрисдикции данных. Редакция проверит, появится ли aish за пределами SELECTOS и раскроет ли Selectel используемую модель.</p><p>Источники: <a href="https://habr.com/ru/companies/selectel/articles/1076854/">Публикация Selectel на Хабре: aish</a>, <a href="https://docs.selectos.selectel-lab.ru/">Документация SELECTOS</a></p><p>Изображение на обложке: Selectel</p>]]></content:encoded>
    </item>
    <item>
      <title>Rust Coreutils 0.11 показывает ошибку кареткой и ускоряет cp на треть</title>
      <link>https://tproger.ru/news/rust-coreutils-0-11-pokazyvaet-owibku-karetkoj-i-uskoryaet-cp-na</link>
      <comments>https://tproger.ru/news/rust-coreutils-0-11-pokazyvaet-owibku-karetkoj-i-uskoryaet-cp-na?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Tproger]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/rust-coreutils-0-11-pokazyvaet-owibku-karetkoj-i-uskoryaet-cp-na</guid>
      <description><![CDATA[<p>Вышел Rust Coreutils 0.11.0: сообщения об ошибках с указателем на проблемный символ в 28 утилитах, PGO-сборки до 31% быстрее, cp ускорен на 32,93%, совместимость с GNU 653 из 685 тестов.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/rust-coreutils-0-11-pokazyvaet-owibku-karetkoj-i-uskoryaet-cp-na">Rust Coreutils 0.11 показывает ошибку кареткой и ускоряет cp на треть</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Инструменты командной строки]]></category>
      <category><![CDATA[Rust]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 02 Sep 2026 01:34:15 GMT</pubDate>
      <content:encoded><![CDATA[<p>Проект uutils 31 августа <a href="https://github.com/uutils/coreutils/releases/tag/0.11.0">выпустил</a> Rust Coreutils 0.11.0, переписанный на Rust набор базовых утилит Linux. Главное изменение видно сразу: cut, chmod, sort и ещё 25 утилит при ошибке в аргументах показывают строку с указателем на проблемный символ, как это делают компиляторы Rust и Clang. Плюс сборки с PGO, которые, по данным команды, дают до 31% прироста, и cp, ускоренный на 32,93%.</p><p>Для тех, кто пользуется обычными GNU Coreutils, ничего не меняется, пока дистрибутив не переключится сам. Но тенденция понятна: Ubuntu уже ставит Rust-реализацию по умолчанию, и вопрос «а чем это отличается» становится практическим. Ответ версии 0.11: сообщениями об ошибках, скоростью и очередным шагом к полной совместимости с GNU.</p><ul><li>Новый диагностический движок на библиотеке ariadne: подсказки с указателем в 28 утилитах.</li><li>Переменная UUTILS_DIAG принимает always, never и auto; в скриптах и пайпах по умолчанию сохраняется однострочное сообщение.</li><li>PGO-сборки для Linux, macOS и Windows дают до 31% прироста; cp ускорен на 32,93%, join в одном сценарии в 2,5 раза быстрее GNU.</li><li>Совместимость с тестами GNU: 653 успешных, 22 неудачных, 10 пропущенных из 685; было 645 и 28.</li><li>Исправлены TOCTOU-проблемы в mv, cp, rm и chmod; 358 pull request от 26 новых участников.</li></ul><h2>Как выглядит новая ошибка</h2><p>Идея, описанная Сильвестром Ледрю в <a href="https://uutils.org/blog/2026-08-error-diagnostics/">блоге проекта</a>, проста: GNU-утилиты десятилетиями отвечали на опечатку сухой строкой вроде «invalid field specification», и пользователь сам искал, где именно ошибся. Теперь под командой печатается сама команда, а под ней каретка, указывающая на неверный символ, и короткое объяснение. Реализовано это на библиотеке ariadne, той же, что используют некоторые парсеры на Rust.</p><p>Важная деталь для тех, кто пишет скрипты: многострочная диагностика включается только в интерактивном терминале. В пайпах и при перенаправлении вывода по умолчанию остаётся привычное однострочное сообщение, поэтому парсеры stderr не сломаются. Управляет этим переменная окружения UUTILS_DIAG со значениями always, never и auto. Попробовать без установки можно в <a href="https://uutils.org/playground/?cmd=sort%20-k2.3x%20notes.txt">браузерной песочнице</a> проекта.</p><h2>Скорость: «медленнее GNU теперь считается багом»</h2><p>Команда прямо формулирует новую политику: «утилита, которая значительно медленнее GNU, теперь считается багом» (перевод редакции). В релизе это подкреплено PGO-сборками для Linux, macOS и Windows, которые, по замерам проекта, дают до 31% прироста. Отдельно названы cp, ускоренный на 32,93%, и join, который в одном из сценариев работает в 2,5 раза быстрее GNU-версии. Это замеры самого проекта на его наборах; на других данных разница будет иной.</p><h2>Совместимость с GNU</h2><p>Таблица в релизе сравнивает результаты на тестовом наборе GNU Coreutils: в 0.10.0 было 645 успешных и 28 неудачных тестов из 683, в 0.11.0 стало 653 успешных, 22 неудачных и 10 пропущенных из 685. Оставшиеся расхождения касаются редких флагов и краевых случаев, но именно они всплывают в старых скриптах, поэтому перед заменой системных утилит стоит прогнать свои сценарии.</p><p>Из исправлений безопасности названы TOCTOU-проблемы, то есть гонки между проверкой и использованием файла, в mv, cp, rm и chmod; также закрыты зависания и переполнения. Реализации kill и uptime доработаны для Windows.</p><h2>Как попробовать</h2><p>Проект распространяется под лицензией MIT и рассчитан на Linux, Windows, Redox и Fuchsia. Самый безопасный способ познакомиться: поставить uutils рядом с системными утилитами, а не вместо них. По README проекта, сборка из исходников выполняется через cargo, а в ряде дистрибутивов пакет называется uutils-coreutils или rust-coreutils и ставит бинарники в отдельный каталог. Точные имена пакетов зависят от дистрибутива, поэтому проверять их стоит в его репозитории.</p><p>Если ваши скрипты парсят stderr утилит, оставьте UUTILS_DIAG в значении auto: тогда в неинтерактивном режиме формат ошибок не изменится.</p><p>В релиз вошли 358 pull request от 26 новых участников; всего в проекте отметились более 1000 контрибьюторов. Редакция проверит, как изменится таблица совместимости в 0.12.</p><p>Источники: <a href="https://github.com/uutils/coreutils/releases/tag/0.11.0">Релиз 0.11.0 на GitHub</a>, <a href="https://uutils.org/blog/2026-08-error-diagnostics/">Блог uutils: новая диагностика ошибок</a></p><p>Изображение на обложке: uutils</p>]]></content:encoded>
    </item>
    <item>
      <title>Proxmox VE 7 атакуют через обход пароля в API, патча для ветки нет</title>
      <link>https://tproger.ru/news/proxmox-ve-7-atakuyut-cherez-obhod-parolya-v-api-patcha-dlya-vetki-n</link>
      <comments>https://tproger.ru/news/proxmox-ve-7-atakuyut-cherez-obhod-parolya-v-api-patcha-dlya-vetki-n?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Tproger]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/proxmox-ve-7-atakuyut-cherez-obhod-parolya-v-api-patcha-dlya-vetki-n</guid>
      <description><![CDATA[<p>Proxmox опубликовал advisory PSA-2026-00043-1: старые Proxmox VE 7 и ранний VE 8.0 пропускают вход без пароля через параметр tfa-challenge. Уязвимость уже эксплуатируют. Что проверить и как закрыть.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/proxmox-ve-7-atakuyut-cherez-obhod-parolya-v-api-patcha-dlya-vetki-n">Proxmox VE 7 атакуют через обход пароля в API, патча для ветки нет</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Безопасность]]></category>
      <category><![CDATA[Уязвимость]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 02 Sep 2026 01:32:08 GMT</pubDate>
      <content:encoded><![CDATA[<p>Компания Proxmox 1 сентября <a href="https://forum.proxmox.com/threads/proxmox-virtual-environment-security-advisories.149331/page-4#post-867929">опубликовала</a> advisory PSA-2026-00043-1: в устаревших Proxmox VE 7 и в самом первом Proxmox VE 8.0 API входа принимал произвольный параметр tfa-challenge и в некоторых случаях пропускал проверку пароля. По словам компании, за последние два дня к ней пришло много независимых сообщений, в которых говорится и об эксплуатации уязвимости в реальных атаках.</p><p>Если у вас где-то остался Proxmox VE 7 с доступным снаружи портом 8006, это тот случай, когда сначала закрывают доступ, а потом читают дальше. Атакующему достаточно сетевого доступа к API, чтобы войти под любым включённым пользователем без настроенной двухфакторной аутентификации, а к таким по умолчанию относится root@pam.</p><ul><li>Уязвим пакет libpve-access-control версий от 7.0-7 до 8.0.4 не включительно: это Proxmox VE 7.0–7.4 и начальный VE 8.0.</li><li>Исправление вошло в libpve-access-control 8.0.4 ещё 20 июля 2023 года; ни один поддерживаемый релиз Proxmox VE сейчас не уязвим.</li><li>Уязвимость требует доступа к API на порту 8006 напрямую или через reverse proxy и затрагивает только пользователей без 2FA.</li><li>Proxmox VE 7 снят с поддержки в июле 2024 года, патча для ветки не будет; есть только временная правка одного файла.</li><li>Единственное надёжное решение по advisory: обновиться до поддерживаемой версии Proxmox VE.</li></ul><h2>Кто затронут и что сделать в первую очередь</h2><p>Проверка занимает одну команду на каждом узле:</p><p>Если версия от 7.0-7 включительно и ниже 8.0.4, узел уязвим. Дальше по цепочке: доступен ли порт 8006 из недоверенных сетей, есть ли пользователи без двухфакторной аутентификации, и что показывают журналы входов за последние дни. Proxmox указывает, что пользователи с любой настроенной 2FA не затронуты, поэтому включение второго фактора для всех учётных записей закрывает дыру даже без обновления пакета.</p><p>Advisory описывает уязвимый endpoint как POST /api2/json/access/ticket. Это тот самый вызов, через который веб-интерфейс и клиенты получают билет сессии. Проблемный параметр tfa-challenge задуман для второго шага двухфакторного входа, но старый код принимал его от кого угодно и при определённых условиях переходил к выдаче билета, не проверив пароль.</p><h2>Почему исправление есть с 2023 года, а advisory вышел только сейчас</h2><p>Уязвимый путь в коде был закрыт 20 июля 2023 года в libpve-access-control 8.0.4, и произошло это, по описанию Proxmox, как побочный эффект переработки механизма 2FA, а не как осознанное исправление уязвимости. Тогда проблему не квалифицировали как дыру в безопасности, поэтому исправление не переносили в ветку Proxmox VE 7. Ветка 7 завершила жизненный цикл в июле 2024 года, и обновлений для неё уже не выпускают.</p><p>Так уязвимость прожила больше двух лет в установках, которые никто не обновлял. Proxmox пишет, что узнала о проблеме сейчас, «через много независимых сообщений за последние два дня, которые также сообщают об эксплуатации в реальных атаках» (перевод редакции). Что именно делали атакующие после входа, в advisory не описано; независимого подтверждения масштаба атак на момент публикации нет.</p><h2>Временная защита, если обновиться сегодня нельзя</h2><p>Для тех, кто не может сразу мигрировать, Proxmox предлагает ручную правку: добавить вызов verify_ticket(...) в файл AccessControl.pm в указанном в advisory месте. После правки компания рекомендует проверить результат через grep: вхождений должно быть ровно три. Точный фрагмент кода и место вставки приведены в самом advisory; копировать его по памяти не стоит.</p><p>Ручная правка защищает только от этого конкретного обхода. Proxmox называет переход на поддерживаемый релиз «единственным долговременным исправлением»: в снятой с поддержки ветке остаются и другие незакрытые проблемы.</p><h2>Что проверить в журналах</h2><ul><li>Успешные входы под root@pam и другими пользователями без 2FA с незнакомых адресов в журнале pveproxy и в системном журнале аутентификации.</li><li>Новые пользователи, токены API и изменения в правах доступа, которых никто не создавал.</li><li>Неожиданные виртуальные машины, контейнеры, задачи резервного копирования и изменения в хранилищах.</li><li>Исходящие соединения с узла к неизвестным адресам: после входа с правами root@pam атакующий получает полный контроль над гипервизором.</li></ul><p>По нашей оценке, именно узлы «поставили и забыли» с открытым 8006 на публичном адресе и составляют группу риска.</p><p>Идентификатор CVE в advisory на момент публикации не указан. Редакция проверит, появится ли он, и есть ли у Proxmox дополнительные данные о характере атак.</p><p>Источник: <a href="https://forum.proxmox.com/threads/proxmox-virtual-environment-security-advisories.149331/page-4#post-867929">Proxmox Security Advisory PSA-2026-00043-1 на форуме Proxmox</a></p><p>Изображение на обложке: Proxmox Server Solutions</p>]]></content:encoded>
    </item>
    <item>
      <title>Debian 11 Bullseye остался без обновлений безопасности: LTS закончился</title>
      <link>https://tproger.ru/news/debian-11-bullseye-ostalsya-bez-obnovlenij-bezopasnosti-lts-zako</link>
      <comments>https://tproger.ru/news/debian-11-bullseye-ostalsya-bez-obnovlenij-bezopasnosti-lts-zako?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Tproger]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/debian-11-bullseye-ostalsya-bez-obnovlenij-bezopasnosti-lts-zako</guid>
      <description><![CDATA[<p>31 августа 2026 года закончилась LTS-поддержка Debian 11 Bullseye. С сентября Debian не выпускает для него обновлений безопасности. Как найти такие серверы и образы, куда обновляться, что такое Extended LTS и как пройти путь bullseye, bookworm, trixie.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/debian-11-bullseye-ostalsya-bez-obnovlenij-bezopasnosti-lts-zako">Debian 11 Bullseye остался без обновлений безопасности: LTS закончился</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Безопасность]]></category>
      <category><![CDATA[DevOps]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 01 Sep 2026 17:27:02 GMT</pubDate>
      <content:encoded><![CDATA[<p>Команда Debian LTS 31 августа <a href="https://www.debian.org/News/2026/20260831">объявила</a> о конце поддержки <b>Debian 11 Bullseye</b>. Дистрибутив вышел 14 августа 2021 года, три года его сопровождали основные команды Debian, ещё два — команда LTS из волонтёров и заинтересованных компаний. С сентября Debian не выпускает для него обновлений безопасности: новая уязвимость в ядре, OpenSSL, nginx или PostgreSQL из репозиториев Bullseye исправления от проекта Debian не получит; для части пакетов остаётся платный Extended LTS сторонних компаний.</p><p>Практическая проблема в том, что Bullseye — не экзотика. Это образы VPS у хостеров, базовые слои Docker-образов, которые никто не пересобирал два года, и «тот сервер, который просто работает». Задача на сентябрь простая: найти их все и решить, куда переезжать.</p><ul><li>LTS Debian 11 длился с 15 августа 2024 по 31 августа 2026 года для amd64, i386, arm64 и armhf; всего Bullseye прожил пять лет.</li><li>С сентября Debian не выпускает для него обновления безопасности; часть пакетов могут поддерживать сторонние компании через платный Extended LTS.</li><li>Debian 12 Bookworm получает LTS до 30 июня 2028 года (amd64, i386, arm64, armhf, ppc64el); Debian 13 Trixie вышел 9 августа 2025 года.</li><li>Проверка одной командой: cat /etc/debian_version, ищите 11.x; в образах — grep по Dockerfile на bullseye.</li><li>Путь обновления: 11, затем 12, затем 13, по одному мажорному шагу, с бэкапом перед каждым.</li></ul><h2>Чем LTS отличается от обычной поддержки</h2><p>Стабильный выпуск Debian живёт три года под присмотром команд Security и Release. После этого дистрибутив передают в LTS — проект, который ведут волонтёры и заинтересованные компании, а не основные команды Debian; так описывает его <a href="https://wiki.debian.org/LTS/">вики проекта</a>. LTS добавляет ещё два года обновлений безопасности, но уже не для всех архитектур и не для всех пакетов. Для Bullseye этот срок закончился.</p><blockquote>Starting in September, Debian will not provide further security updates for Debian 11.</blockquote><p>После LTS есть ещё одна ступень — Extended LTS. Это не часть Debian: несколько компаний за деньги продолжают чинить ограниченный набор пакетов для клиентов, которым переезд обходится дороже. Полного покрытия там нет, и рассчитывать на него как на бесплатную отсрочку не стоит.</p><h2>Где искать Bullseye у себя</h2><p>Три типичных места. Первое: старые VPS и физические серверы, поставленные в 2021–2023 годах. Второе: Docker-образы с базой debian:bullseye, python:3.x-bullseye или node:xx-bullseye, которые собраны один раз и с тех пор только тегаются заново. Третье: встроенные системы и Raspberry Pi, где Raspberry Pi OS на базе Bullseye стоял по умолчанию до конца 2023 года.</p><h2>Куда обновляться</h2><p>Прямого пути с 11 на 13 нет: Debian поддерживает обновление только на следующий мажорный выпуск. Значит, сначала bullseye на bookworm, потом при желании bookworm на trixie. Debian 12 Bookworm — безопасный промежуточный вариант: у него LTS до 30 июня 2028 года, а из архитектур в LTS заявлены amd64, i386, arm64, armhf и ppc64el. Для второго шага есть отдельные release notes Trixie. Для Docker-образов проще: сменить тег базового образа на bookworm или trixie и пересобрать.</p><ul><li>Сделайте снимок или бэкап, затем apt update &amp;&amp; apt full-upgrade в текущей версии, чтобы уйти с чистой точки.</li><li>Сторонние репозитории (Docker, PostgreSQL, nginx) перед обновлением отключите, как советуют <a href="https://www.debian.org/releases/bookworm/i386/release-notes/ch-upgrading.en.html">release notes</a>, а после перехода подключите их версии для bookworm.</li><li>Замените bullseye на bookworm в /etc/apt/sources.list и файлах в sources.list.d; для Bookworm секция non-free-firmware добавляется отдельно.</li><li>apt update &amp;&amp; apt upgrade --without-new-pkgs, затем apt full-upgrade, перезагрузка, проверка сервисов.</li><li>В CI запретите тег bullseye в базовых образах линтером Dockerfile, чтобы он не вернулся через полгода.</li></ul><p>Любое зеркало Debian продолжит раздавать пакеты Bullseye, но новых обновлений безопасности от проекта в них не появится, так что «репозиторий работает» не означает «сервер защищён». При заказе нового VPS выбирайте образы Debian 12 или 13, если хостер ещё предлагает 11.</p><h2>Что дальше</h2><p>Следующий такой рубеж — 30 июня 2028 года, когда закончится LTS у Bookworm, то есть меньше чем через два года. Если вы переезжаете сейчас, разумно сразу планировать повтор процедуры к этой дате и держать обновление ОС в регулярном графике, а не как аварийную операцию раз в пять лет.</p><p>Источники: <a href="https://www.debian.org/News/2026/20260831">Debian 11 Long Term Support reaching end-of-life (Debian News)</a>, <a href="https://wiki.debian.org/LTS/">Debian LTS Wiki</a>, <a href="https://www.debian.org/releases/bookworm/i386/release-notes/ch-upgrading.en.html">Release notes Debian 12: upgrading</a></p><p>Изображение на обложке: Debian Project</p>]]></content:encoded>
    </item>
    <item>
      <title>Угон BGP-маршрута подменил обновления Virtualizor без взлома серверов</title>
      <link>https://tproger.ru/news/ugon-bgp-marwruta-podmenil-obnovleniya-virtualizor-okolo-22-chaso</link>
      <comments>https://tproger.ru/news/ugon-bgp-marwruta-podmenil-obnovleniya-virtualizor-okolo-22-chaso?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Tproger]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/ugon-bgp-marwruta-podmenil-obnovleniya-virtualizor-okolo-22-chaso</guid>
      <description><![CDATA[<p>С 28 по 30 августа злоумышленник объявлял чужой префикс 162.55.80.0/24, получил валидный сертификат Let's Encrypt и раздал вредоносное обновление Virtualizor. Хронология, механизм угона маршрута, индикаторы компрометации и что делать администраторам.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/ugon-bgp-marwruta-podmenil-obnovleniya-virtualizor-okolo-22-chaso">Угон BGP-маршрута подменил обновления Virtualizor без взлома серверов</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Безопасность]]></category>
      <category><![CDATA[DevOps]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 01 Sep 2026 17:26:35 GMT</pubDate>
      <content:encoded><![CDATA[<p>Softaculous, разработчик панели Virtualizor для управления виртуальными серверами, 31 августа <a href="https://www.virtualizor.com/blog/security-incident-bgp-hijacking/">признал инцидент</a>: с вечера 28 августа по утро 30-го неизвестный объявлял в BGP чужой префикс 162.55.80.0/24, где живут серверы обновлений, клиентская зона и биллинг компании. Часть интернета поверила подмене, атакующий получил настоящий сертификат Let's Encrypt для доменов Virtualizor и раздал «небольшому числу» установок вредоносное обновление.</p><p>Подтверждённый вектор атаки не требовал взлома серверов Softaculous: она прошла на уровне маршрутизации интернета и сработала потому, что клиент обновлений Virtualizor не проверял криптографическую подпись пакета, ему хватало валидного TLS. Если у вас стоит Virtualizor, а его используют многие хостинги, включая российские, компания просит проверить сервер по опубликованному индикатору, даже если обновление вручную вы не запускали.</p><ul><li>Окно инцидента около 33 часов: с 28 августа 20:57 UTC до 30 августа 06:10 UTC; активный перехват шёл двумя волнами общей длиной около 22 часов с перерывами, маршрут постоянно менялся.</li><li>Поддельный маршрут /24 был специфичнее легитимного /16 Hetzner; все 368 peers RIPE RIS видели его хотя бы в один момент за окно инцидента; медианное число перенаправленных peers во время активной волны — 266 (около 72%).</li><li>Через перехваченный трафик атакующий прошёл проверку Let's Encrypt и получил технически валидный сертификат для доменов Virtualizor.</li><li>Вредоносное обновление подтверждено для Virtualizor; для других продуктов Softaculous таких пакетов не подтверждено. Индикатор компрометации: служба java-jre-update.service; выпущена версия 3.2.9.9 с инструментом устранения последствий и cleaning script, подпись пакетов обещана.</li><li>Клиент обновлений не проверял подпись пакета; компания не может составить полный список затронутых серверов.</li></ul><h2>Как работает угон маршрута</h2><p>BGP — протокол, по которому сети-операторы сообщают друг другу, через кого достижимы те или иные диапазоны IP-адресов. Доверие в нём во многом строится на честном слове: если кто-то объявляет, что диапазон живёт у него, соседи обычно верят. А если объявленный диапазон меньше (специфичнее) настоящего, маршрутизаторы предпочитают именно его. Так и произошло: Hetzner (AS24940) легитимно объявляет 162.55.0.0/16, атакующий объявил внутри него 162.55.80.0/24, и более точный маршрут победил.</p><p>В объявлении фигурировали AS62390 (NexonHost) и AS6204 (Zet.net), а в конце пути был оставлен Hetzner как видимый источник, чтобы подмена выглядела правдоподобно. По публичным данным RIPE RIS все 368 peers видели маршрут хотя бы в один момент за окно инцидента, а медианное число перенаправленных peers во время активной волны составляло 266. Перехват шёл двумя волнами общей продолжительностью около 22 часов с паузой примерно в 11 часов между ними, и для отдельных сетей он был прерывистым: маршрут то появлялся, то исчезал.</p><h2>Почему сертификат оказался настоящим</h2><p>Let's Encrypt подтверждает владение доменом, обращаясь к нему по HTTP. Если в этот момент трафик к домену идёт на сервер атакующего, проверка проходит, и сертификат выдаётся ему. Именно это и случилось: компания пишет, что злоумышленник получил «технически действительный TLS-сертификат для наших доменов» (перевод редакции). Браузеры и клиенты обновлений видели зелёный замок и доверяли ответам подменённого сервера.</p><blockquote>The attacker obtained a technically valid TLS certificate for our domains.</blockquote><p>Дальше сработало самое слабое звено: клиент обновлений Virtualizor доверял серверу по TLS и не проверял подпись самого пакета. Правильная схема, при которой пакет подписан офлайн-ключом разработчика и проверяется на сервере клиента, не спасла бы от перехвата трафика, но сделала бы подмену пакета невозможной. Компания обещала внедрить подпись для всех пакетов; срок и реализацию она не назвала.</p><h2>Кого это задело</h2><p>По словам компании, вредоносный пакет получила «горстка серверов», а не вся база пользователей Virtualizor. При этом Softaculous прямо признаёт: «Мы не можем составить окончательный список затронутых серверов» (перевод редакции), потому что подмена происходила на сетевом уровне и следов на стороне компании не оставила. Для Softaculous, Webuzo и других продуктов вредоносных пакетов не подтверждено, но те же адреса использовались и для их обновлений. Индикатор компрометации, который называет компания, — служба java-jre-update.service в системе. Softaculous выпустила Virtualizor 3.2.9.9 с инструментом устранения последствий и отдельный cleaning script, но просит при обнаружении индикатора не удалять службу самостоятельно, а связаться с поддержкой.</p><h2>Что делать администратору</h2><ul><li>Если у вас Virtualizor: обновитесь до 3.2.9.9, поищите службу java-jre-update.service и при её наличии свяжитесь с поддержкой Softaculous, как просит компания; проверять стоит, даже если обновления вы не запускали, автообновление могло сработать само.</li><li>Сверьте по логам, не обращался ли сервер к 162.55.80.0/24 между 28 августа 20:57 UTC и 30 августа 06:10 UTC.</li><li>Смените учётные данные панели, API-ключи и пароли, которые могли пройти через клиентскую зону или биллинг в этот период.</li><li>Для собственных систем обновлений: подписывайте пакеты отдельным ключом и проверяйте подпись на клиенте; TLS защищает канал, но не содержимое.</li><li>Если управляете своей сетью: включите RPKI Origin Validation и задайте свои ROA с точной длиной префикса. Оговорка: атакующий оставил Hetzner видимым origin, и без строгого maxLength в ROA такой маршрут ROV не отбросит.</li></ul><h2>Что дальше</h2><p>Компания продолжает расследование; индикатор компрометации, версия 3.2.9.9 и cleaning script уже опубликованы. Открытых вопросов два: почему сети-транзиты пропустили объявление чужого /24 без проверки и когда и как будет внедрена обещанная подпись пакетов. Пока её нет, любой повторный угон маршрута снова превратится в атаку на цепочку поставок.</p><p>Источник: <a href="https://www.virtualizor.com/blog/security-incident-bgp-hijacking/">Security incident: BGP hijacking (Virtualizor)</a></p><p>Изображение на обложке: скриншот bgp.tools</p>]]></content:encoded>
    </item>
    <item>
      <title>Линкер mold переписывают на Rust: версия 3.0 научится собирать ядра</title>
      <link>https://tproger.ru/news/linker-mold-perepisyvayut-na-rust-versiya-3-0-poluchit-linker-skri</link>
      <comments>https://tproger.ru/news/linker-mold-perepisyvayut-na-rust-versiya-3-0-poluchit-linker-skri?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Tproger]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/linker-mold-perepisyvayut-na-rust-versiya-3-0-poluchit-linker-skri</guid>
      <description><![CDATA[<p>Руи Уэяма объявил, что линкер mold переписывают на Rust. В версии 3.0 появится поддержка линкер-скриптов, чтобы mold мог заменить GNU ld при сборке ядер и встраиваемых программ. Свежие бенчмарки против lld и wild, как включить mold сегодня и кому ждать 3.0.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/linker-mold-perepisyvayut-na-rust-versiya-3-0-poluchit-linker-skri">Линкер mold переписывают на Rust: версия 3.0 научится собирать ядра</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Open Source]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Компиляторы]]></category>
      <category><![CDATA[Rust]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 01 Sep 2026 17:25:37 GMT</pubDate>
      <content:encoded><![CDATA[<p>Руи Уэяма, автор линкера <b>mold</b> и один из создателей LLVM lld, 1 сентября <a href="https://x.com/rui314/status/2094677980857680052">сообщил</a>, что mold переписывают на Rust. Будущая версия получит номер 3.0 и главную недостающую функцию: поддержку линкер-скриптов, без которой mold нельзя было использовать для сборки ядер операционных систем и встраиваемых программ. Сроков выхода автор не назвал.</p><p>Линкер склеивает скомпилированные объектные файлы в исполняемый файл, и на больших проектах это минуты ожидания при каждой пересборке. mold появился в 2021 году именно как ответ на это: по свежему бенчмарку автора он в 4,9 раза быстрее lld по медиане. Но проекты, которые собираются через сложные линкер-скрипты GNU ld, вроде ядра Linux, до сих пор были для него закрыты; 3.0 должна это изменить.</p><ul><li>mold переписывают на Rust; новая версия выйдет как mold 3.0, дата не названа.</li><li>Цель: поддержка линкер-скриптов, чтобы mold собирал всё, что умеет GNU ld, включая ядра и прошивки.</li><li>Текущий mold написан на C++20; по бенчмарку августа 2026 года он быстрее lld в 4,9 раза, а wild в 1,9 раза по медиане.</li><li>Debug-сборка Chromium 145 на Threadripper 7980X: lld 16,64 с, wild 3,98 с, mold 1,65 с; TensorFlow 2.21: lld 50,73 с, mold 3,15 с.</li><li>Текущий mold продолжает работать как замена ld и lld; включается флагом -fuse-ld=mold или через .cargo/config.toml.</li></ul><h2>Зачем линкеру скрипты</h2><p>Линкер-скрипт описывает, как раскладывать секции кода и данных по адресам памяти. Обычному приложению это не нужно: там всё решает стандартная раскладка. Ядру, загрузчику или прошивке микроконтроллера критично, чтобы таблица прерываний лежала по конкретному адресу, а код инициализации попал в нужную область флеш-памяти. Всё это описывается на языке скриптов GNU ld, и до сих пор mold понимал лишь их малую часть: в собственной документации проект называет этот язык переусложнённым и ещё недавно прямо писал, что расширять поддержку не планирует.</p><p>Уэяма пишет, что цель новой версии — совместимость со всем, что умеет собирать GNU ld. Именно это открывает дорогу к тому, чтобы дистрибутивы Linux сделали mold линкером по умолчанию: пока хоть один важный пакет не собирается, менять умолчание никто не будет. Конкретных дистрибутивов с такими планами в README пока не названо.</p><blockquote>We are rewriting the mold linker in Rust. This will be mold 3.0.</blockquote><h2>Насколько mold быстрее сегодня</h2><p>Автор обновил бенчмарки в <a href="https://github.com/rui314/mold">README репозитория</a> в августе: девять крупных программ, медиана трёх запусков после прогрева, два стенда — Threadripper 7980X с 64 ядрами и Apple M1 Ultra, у которого использовались 16 производительных ядер. Сравнивались lld, wild (ещё один линкер на Rust) и mold. Результаты на Threadripper выглядят так.</p><figure><img src="https://media.tproger.ru/user-uploads/133946/2026-09-02/cd378d06-61ff-4b48-ba6c-22b4678f3f27.webp" alt="Столбчатая диаграмма времени линковки debug-сборок Chromium 145 и TensorFlow 2.21 линкерами lld, wild и mold" /><figcaption>Время линковки debug-сборок на Threadripper 7980X, секунды. График: Tproger по данным README mold, бенчмарк августа 2026 года.</figcaption></figure><p>На Chromium 145 lld тратит 16,64 секунды, wild 3,98, mold 1,65. На TensorFlow 2.21 разрыв ещё больше: 50,73 секунды у lld против 3,15 у mold. На Apple M1 Ultra картина ровнее: debug-сборка Clang 21 линкуется за 2,96 секунды у mold, 4,40 у lld и 2,78 у wild, то есть в этом тесте конкурент на Rust слегка впереди, хотя на большинстве остальных задач M1-стенда mold быстрее. Артефакты бенчмарка опубликованы на Zenodo, их можно повторить.</p><h2>Почему Rust, если и так быстро</h2><p>В сообщении Уэямы причин не названо. Из README видно другое: текущий mold требует GCC 10.2 или Clang 16 и написан на C++20, а конкурент wild с самого начала на Rust и на части задач уже догоняет. Переписывание с добавлением линкер-скриптов означает во многом новую кодовую базу, и выбор языка для неё делается один раз. Всё остальное — предположения, и мы их не делаем.</p><h2>Как включить mold сегодня</h2><p>Для C и C++ с GCC или Clang достаточно флага компоновки -fuse-ld=mold. Для Rust README предлагает настройку в .cargo/config.toml:</p><ul><li>Проекты с собственными линкер-скриптами (ядра, прошивки, загрузчики) пока остаются на GNU ld; ждите mold 3.0.</li><li>Если пользуетесь wild, сравните на своём проекте: на M1 Ultra он выигрывает лишь в части тестов, по общей медиане бенчмарка mold быстрее в 1,9 раза.</li><li>mold распространяется под лицензией MIT через GitHub и пакеты дистрибутивов; наличие пакета в репозиториях Astra Linux и РЕД ОС проверяйте отдельно, в README они не перечислены.</li></ul><h2>Что дальше</h2><p>mold используется в проде с 2021 года, и текущая C++-версия никуда не денется до выхода 3.0. Следить стоит за двумя сигналами: появится ли в репозитории ветка на Rust с первыми тестами линкер-скриптов и объявит ли какой-нибудь дистрибутив о планах сделать mold линкером по умолчанию. Второе и будет настоящей новостью.</p><p>Источники: <a href="https://x.com/rui314/status/2094677980857680052">Сообщение Руи Уэямы в X</a>, <a href="https://github.com/rui314/mold">Репозиторий mold с бенчмарками</a></p><p>Изображение на обложке: Tproger по данным README mold</p>]]></content:encoded>
    </item>
    <item>
      <title>Своя self-hosted двухсерверная VPN-архитектура. Подробный путь разработки и ошибки, с которыми вы можете столкнуться</title>
      <link>https://tproger.ru/articles/svoya-self-hosted-dvuhservernaya-vpn-arhitektura-podrobnyj-put-r</link>
      <comments>https://tproger.ru/articles/svoya-self-hosted-dvuhservernaya-vpn-arhitektura-podrobnyj-put-r?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Роман Фролов]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/svoya-self-hosted-dvuhservernaya-vpn-arhitektura-podrobnyj-put-r</guid>
      <description><![CDATA[<p>Проект представляет из себя быстрый способ воссоздать архитектуру состоящую из 2 серверов (локальный + удаленный) с определенными сервисами, которые решают специфические задачи. Проект сделан прежде всего для меня, а также для людей которые хотят свой готовый self-hosted сервер из коробки с полной системой обслуживания</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/svoya-self-hosted-dvuhservernaya-vpn-arhitektura-podrobnyj-put-r">Своя self-hosted двухсерверная VPN-архитектура. Подробный путь разработки и ошибки, с которыми вы можете столкнуться</a>»</p>]]></description>
      <category><![CDATA[API]]></category>
      <category><![CDATA[Тестирование]]></category>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Git]]></category>
      <category><![CDATA[Безопасность]]></category>
      <category><![CDATA[Python]]></category>
      <category><![CDATA[Ruby]]></category>
      <category><![CDATA[unix]]></category>
      <category><![CDATA[IDE]]></category>
      <category><![CDATA[Музыка]]></category>
      <category><![CDATA[Работа]]></category>
      <category><![CDATA[HTML]]></category>
      <category><![CDATA[DIY]]></category>
      <category><![CDATA[GitHub]]></category>
      <category><![CDATA[Навыки]]></category>
      <category><![CDATA[VPN]]></category>
      <category><![CDATA[Telegram]]></category>
      <category><![CDATA[Сервисы]]></category>
      <category><![CDATA[Docker]]></category>
      <category><![CDATA[Cloudflare]]></category>
      <category><![CDATA[Фронтенд]]></category>
      <category><![CDATA[Redis]]></category>
      <category><![CDATA[QA]]></category>
      <category><![CDATA[Мессенджер]]></category>
      <category><![CDATA[Разработка]]></category>
      <category><![CDATA[Сервер]]></category>
      <category><![CDATA[NFT]]></category>
      <category><![CDATA[Машин]]></category>
      <category><![CDATA[1C]]></category>
      <category><![CDATA[DeFi]]></category>
      <category><![CDATA[Grafana]]></category>
      <category><![CDATA[VPS]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sun, 26 Jul 2026 15:46:26 GMT</pubDate>
      <content:encoded><![CDATA[<p>Всё
 началось с того, что меня перестал устраивать мой подход к 
развертыванию личных сервисов. Я решил переписать всё с нуля. К тому же 
это был отличный повод получить новые навыки и попробовать инструменты, 
до которых давно не доходили руки.</p><p>Арендовать мощные VPS под 
ресурсоемкие задачи в текущих реалиях выходит неоправданно дорого. При 
этом дома у меня уже был выделенный неттоп (мини-ПК) с 16 ГБ оперативной
 памяти на базе энергоэффективного процессора Intel N95.</p><p>Пройдя 
путь от простых Bash-скриптов и сторонних туннелей до полностью 
автоматизированной инфраструктуры, я создал проект ServeHub-2. В этой 
статье я подробно разберу, как эволюционировала сеть проекта, почему 
декларативный подход победил императивный и с какими неочевидными багами
 пришлось столкнуться в процессе автоматизации.</p><h2>История настройки сетевой архитектуры</h2><h3>Использование Tuna</h3><p>В
 самом начале проекта я еще не думал о VPN как о способе пробития NAT и 
основе, на которой будет строиться вся система. Первое, к чему я пришел —
 сервис Tuna. Если кратко, это аналог Cloudflare Tunnel за условные 300 
рублей. У него очень приятный веб-интерфейс и невероятно простая 
настройка. Однако для полноценной независимой архитектуры он не подошел 
по двум причинам:</p><ul><li>Сервера Tuna находятся вне контроля пользователя.</li><li>На удаленном сервере нельзя развернуть свои сопутствующие сервисы.</li></ul><p>В целом сервис действительно удобный, но для моих задач он оказался слишком ограничивающим.</p><p>Вот
 пример конфига для tuna (все максимально просто, создаем контейнеры для
 ssh туннеля, чтобы был доступ ssh, а также основной http туннель с 
привязкой к nginx или любому другому прокси если такой есть):</p><h3>В поисках гибкости: тесты Pangolin и переход к FRP</h3><p>После Tuna я решил двигаться в сторону собственного контроля и попробовал Pangolin.
 Однако решение быстро отвалилось: для дешёвого сервера оно оказалось 
слишком «тяжёлым» и избыточным. Главные минусы — ощутимый оверхед по 
ресурсам и лишний слой принудительной веб-аутентификации перед самими 
сервисами. Это ломало нормальное взаимодействие с родными мобильными 
клиентами (вроде Element для Matrix или Bitwarden для паролей), где 
повторная авторизация в браузере просто не нужна.</p><p>На смену пришел FRP (Fast Reverse Proxy).
 Он выполнял ту же функцию проброса, но хостил я его уже на собственном 
арендованном VPS в режиме Layer 4 (TCP). Это дало абсолютную гибкость: 
внешний VPS не заглядывал внутрь пакетов и ничего не расшифровывал, а 
просто пересылал сырой поток домой. Кроме того, это отлично 
оптимизировало расходы: вместо 300 рублей за Tuna и ещё 300 рублей за 
отдельный VPN, я стал платить всего 500 рублей за один стойкий VPS, 
который мог настраивать как хочу. (к тому же можно было обойтись даже 
дешевле, так как VPS с 4 гб оперативки загружен всего лишь на 40%, 
процессор всего на 20%-40%)</p><p>FRP состоит из 2 конфигурационных 
файлов (один на удаленном сервере frp server, другой на локальном frp 
client), все также довольно просто, однако его можно использовать на 
разных слоях. У меня он брал трафик за стандартный TCP и передавал его 
на локальный сервер.</p><p>Также доп. фишка в том что основная 
конфигурация происходит именно в frpc, который, в свою очередь, передает
 часть настроек на frp на удаленном сервере.</p><p>frpc.toml:</p><p>frps.toml:</p><h3>Полноценный переезд на WireGuard (AmneziaWG) и 8 часов отладки</h3><p>Со временем архитектура эволюционировала в сторону полноценной VPN-сети на базе WireGuard, а точнее — его модификации AmneziaWG. Причин для этого шага было несколько:</p><ul><li>Безопасность: FRP всё же открывал внутренние ресурсы в публичный интернет, оставляя их доступными для сканеров портов.</li><li>Удобство маршрутизации:
 Все участники сети стали равноправными узлами в одной виртуальной 
локальной подсети. Больше не нужно было настраивать постоянные 
односторонние пробросы.</li><li>Дополнительный бонус:
 Поскольку удаленный VPS был куплен в Нидерландах, через этот же VPN я 
автоматически получил безопасный доступ ко всем зарубежным ресурсам.</li></ul><p>Для реализации схемы на удаленном VPS был развернут контейнер wg-easy с поддержкой AmneziaWG, а на домашнем мини-ПК — клиентский контейнер Amnezia (сборка из Dockerfile с использованием amnezia-tools  и модулем ядра хоста).</p><p>И
 именно здесь я поймал самый изнурительный баг проекта. После 
развертывания трафик упорно шёл только в одну сторону. Часов 8 ушло на 
диагностику iptables, маршрутов и чтение зарубежных форумов (что 
бесполезно, учитывая специфику наших блокировок). Оказалось, провайдер 
просто дропал обратный трафик стандартного WireGuard, так как пакеты шли
 без маскировки. Причина крылась в docker-compose.yml: у меня было прописано image: ghcr.io/wg-easy/wg-easy:latest. Как выяснилось, тег latest  на Docker Hub намертво прилип к старой 14-й версии, а поддержка параметров AmneziaWG появилась только в ветке 15.x. Изменение тега на конкретную версию (15.3) решило проблему за секунду.</p><p>Благодаря
 переходу конфигурация получилась максимально простой, основные отличия 
от стандартной документации выделил в коде: (в основном то, на что 
пришлось долго рыть информацию)</p><h3>Настройка Nginx</h3><p>Чтобы
 сервисы были доступны исключительно внутри подсети VPN, я задействовал 
Nginx. Доступ к приложениям был жестко ограничен на уровне конфигурации —
 веб-сервер принимает запросы только из диапазона IP-адресов 10.8.0.0/24. Любые попытки постучаться на сервер из внешнего интернета без активного VPN-туннеля автоматически сбрасываются Nginx.</p><p>Логика
 распределения завязана на proxy-протоколе: Nginx на удаленном VPS 
выступает основным входным узлом, принимает зашифрованный трафик, 
заворачивает его в заголовки с реальным IP-адресом клиента и через 
туннель перекидывает на локальный Nginx домашнего сервера. Локальный 
веб-сервер уже сам расшифровывает SSL и распределяет трафик по конечным 
Docker-контейнерам, сохраняя реальные IP в логах безопасности.</p><p>Вставлю
 один кусок кода из nginx на удаленной машине для примера, так все 
остальное примерно похоже (конфиги использовались в виде .template):</p><h3>SSL-сертификаты</h3><p>Для получения валидных SSL-сертификатов я настроил работу через автоматический Certbot по challenge-валидации DNS-01 c API Webnames. Сам домен привязан к внутреннему IP-адресу 10.8.0.1.
 Проверка через DNS позволила выпустить единый wildcard-сертификат на 
весь домен и его поддомены без необходимости держать открытым 80-й порт 
веб-сервера наружу.</p><p>Уточню, что certbot запускается автоматически 
во время выполнения Ansible плейбука, поэтому самому кроме указания 
переменных ничего делать не нужно.</p><p>В
 итоге получилась схема, при которой все сервисы доступны по красивым 
доменным именам с HTTPS, но абсолютно невидимы для внешнего интернета.</p><p>Вот настройка certbot:</p><h2>История софта</h2><p>Параллельно
 с сетевой структурой развивался и сам набор приложений. Изначально я 
хотел собрать в одном месте утилиты, которыми пользуюсь каждый день, но в
 процессе селфхостинга быстро понимаешь: нельзя просто накидать 
контейнеров и надеяться, что мини-ПК справится, а конфигурационные файлы
 не превратятся в кашу.</p><h3>Первый стек и оптимизация</h3><p>Первыми на домашнем сервере прижились медиа-сервисы: Navidrome для стриминга музыки и Audiobookshelf
 для аудиокниг и подкастов. Они легковесные, имеют отличные мобильные 
клиенты с синхронизацией прогресса и полностью закрывают мои 
потребности. Позже к ним добавился Nextcloud как единое независимое облако для файлов, контактов и семейных документов.</p><p>Затем встал вопрос безопасного хранения паролей. Сначала я смотрел в сторону оригинального Bitwarden, но в итоге я выбрал Vaultwarden
 — альтернативный сервер на Rust, полностью совместимый с API Bitwarden.
 Он потребляет считанные мегабайты оперативной памяти и работает 
идеально. Дополнительно для удобства управления всей этой распределенной
 Docker-инфраструктурой в локальный стек был добавлен Portainer. (+ Portainer Agent на удаленный сервер)</p><p>Из интересных моментов, где мне пришлось немного больше возиться, чем с остальными сервисами это nextcloud настройка:</p><h3>Ошибки проектирования: почему я удалил Matrix (Synapse)</h3><p>Не все решения прошли проверку временем. На этапе использования Tuna и FRP я развернул сервер Matrix (Synapse)
 для защищенного обмена сообщениями. Мне казалось это крутой идеей, но 
когда я окончательно перешел на AmneziaWG, целесообразность мессенджера 
внутри закрытого туннеля сошла на нет.</p><p>Synapse требовал слишком 
много ресурсов, впустую расходовал оперативку домашнего ПК и усложнял 
конфиг Nginx. При этом реальной пользы для семьи он не приносил. Для 
критических алертов инфраструктуры и повседневного общения проще и 
эффективнее оказалось использовать Telegram. (плюс алертинг настроен 
именно через него) В итоге я полностью выпилил Synapse из стека, 
освободив ресурсы.</p><p>Вместо него я добавил в связку к wg-easy локальный AdGuard Home.
 Теперь он работает прямо внутри VPN-сети: очищает весь трафик от 
рекламы и трекеров на лету, кэширует DNS-запросы и не дает истории 
веб-серфинга улетать внешним провайдерам.</p><p>Основной проблемой с 
которой я столкнулся при использовании AdGuard Home, так это то что я 
так и не понял как заставить использовать AmneziaVPN клиент AdGuard как 
основной DNS, при этом AmneziaWG работает прекрасно. Как я понимаю дело в
 том что AmneziaWG работает намного проще на уровне ip и у него нету 
никаких доп фильтров, настроек и подобного, поэтому он просто берет 
данные из конфига.</p><h3>От костылей на Bash к декларативному Ansible</h3><p>Весь
 стек на обоих серверах разворачивался через bash скрипты, что было уж 
очень плохо с точки зрения идемпотентности. Во первых из-за bash мне 
постоянно приходилось очищать сервера, так как нормальных проверок у 
меня не было и писать я их не хотел, а также было много костылей с 
импортом переменных, записями в файлы и подобным.</p><p>Так я пришел к декларативному подходу и Ansible.
 Теперь вся конфигурация описывается в виде плейбуков и ролей, 
отражающих конечное желаемое состояние серверов. Конфиденциальные данные
 перенесены в файл secrets.yml, а хрупкие конструкции 
автоматизированы через шаблоны Jinja2. Проект стал идемпотентным: если 
шаги уже выполнены, Ansible их просто пропускает.</p><p>В итоге 
получилось несколько yaml файлов для стандартной настройки системы 
(bootstrap_os.yml) и для настройки каждого из хостов (setup_local.yml и 
setup_remote.yml). В итоге теперь все что нужно чтобы полностью с нуля 
развернуть проект - скачать Ansible, несколько других зависимостей на 
свой рабочий пк и запустить один manage_deploy.sh, в котором можно будет
 выбрать сценарий как будет вести себя Ansible и спокойно дождаться 
разворачивания сервисов.</p><p>Также благодаря Ansible я удобно 
реализовал переносимость проекта. Так как я решил не использовать тома 
docker, и вместо этого храню все в папках, чтобы перенести старые данные
 проекта нужно просто скопировать папку apps-data и положить ее в нужное
 место и все само заработает после повторного развертывания проекта. В 
Ansible выделяется отдельная пауза для этого.</p><p>Вот пример основного плейбука deploy.yml:</p><h3>Тестирование мультидистрибутивности с помощью Vagrant</h3><p>Проект
 изначально затачивался под работу на трех дистрибутивах: Ubuntu, Debian
 и Arch Linux. Тестировать Ansible-плейбуки прямо на рабочей локальной 
машине (в моем случае — EndeavourOS) слишком рискованно, а создавать 
виртуальные машины руками — долго и неудобно.</p><p>Решением стал Vagrant,
 позволяющий за пару минут развернуть чистые ОС в VirtualBox из готовых 
образов. Но в процессе настройки мультивендорного стенда в режиме 
сетевого моста (public_network) всплыли две критические проблемы:</p><ol><li>Конфликт DNS:
 По умолчанию Vagrant создает NAT-интерфейс для управления нодой. При 
включении второго (публичного) интерфейса для локальной сети ломался 
дефолтный DNS-резолвер. Проблему пришлось решать принудительной очисткой
 и перезаписью файла /etc/resolv.conf через inline-скрипт автоматизации Vagrant.</li><li>Проблема с GRUB на Debian: В используемом базовом образе generic/debian12
 конфигурация GRUB сохраняла жесткую привязку к конкретному имени диска 
из окружения сборщика. При повторном развертывании плейбуков на тестовом
 стенде это приводило к сбоям загрузчика. Чтобы автоматизировать 
очистку, пришлось внедрить скрипт, который на лету определяет имя 
системного диска через lsblk и автоматически передает правильные параметры в загрузчик через утилиту debconf-set-selections.</li></ol><p>Вот код Vagrantfile: (в node.vm.provision происходит основное решение ошибок)</p><p>Надежная система бэкапов на базе BorgmaticДля создания резервных копий я внедрил Borgmatic
 (удобную надстройку над дедуплицирующим инструментом Borg Backup). Весь
 процесс автоматизирован с помощью связки системных юнитов borgmatic.service и borgmatic.timer. В бэкап уходят две ключевые директории: apps-data (конфигурации приложений и баз данных) и PersonalData (медиатека: музыка, книги, подкасты, файлы Nextcloud).</p><p>Развертывание
 системы бэкапов полностью берет на себя Ansible. Мне достаточно указать
 UUID внешнего жесткого диска — скрипт сам проверит его наличие в 
системе, примонтирует в нужную директорию, создаст зашифрованный 
репозиторий и настроит политику ротации (хранение 7 ежедневных, 4 
еженедельных и 6 ежемесячных копий). Также в Prometheus выведен 
мониторинг самого репозитория .borg для отслеживания его размера и статуса успешности архивации.</p><p>Главная
 проблема при бэкапе работающих Docker-контейнеров — риск скопировать 
базу данных в «битом» или неконсистентном состоянии, если в момент 
создания архива в нее шла активная запись. Чтобы решить эту проблему, я 
задействовал механизм хуков в конфигурации Borgmatic.</p><p>Перед началом резервного копирования автоматически срабатывает команда остановки контейнеров проекта (docker-compose down),
 а после успешного завершения (или в случае возникновения непредвиденной
 ошибки) контейнеры автоматически поднимаются обратно в фоновом режиме. 
Для удобного просмотра архивов и быстрого восстановления файлов я 
развернул веб-интерфейс Borg UI.</p><p>Конфигурация borgmatic: (использую как Jinja2 шаблон, чтобы Ansible в плейбуках сам подставил переменные)</p><h2>Наблюдаемость (Observability) уровня Enterprise</h2><p>В последних релизах (v1.2.0 и v1.3.0) фокус проекта сместился на мониторинг и работу с логами.</p><h3>Эволюция алертинга и переход на Gatus</h3><p>Изначально для мониторинга доступности я смотрел на Uptime Kuma, но отказался из-за отсутствия удобной декларативной настройки через конфиги. Затем я развернул связку Blackbox Exporter и Alertmanager
 с уведомлениями в Matrix. Но тут крылась логическая несостыковка: весь 
алертинг был завязан на локальном ПК, и в случае его аппаратного отказа я
 бы просто лишился уведомлений.</p><p>Тогда я решил вернуть Uptime Kuma,
 но развернуть его на удаленном VPS в качестве внешнего «сторожа» и 
автоматизировать его настройку через Python-скрипт с библиотекой uptime-kuma-api. Но и тут ждали «грабли» — библиотека не обновлялась три года и намертво ломалась на свежих версиях Kuma.</p><p>В итоге идеальным решением стал Gatus.
 Он изначально проектировался под управление через YAML-конфиги и 
поддерживает отправку алертов, если сервер не отвечает. Из-за специфики 
фронтенда Gatus (он не умеет работать из подкаталога типа /gatus), мне пришлось перенести его и wg-easy на полноценные субдомены gatus. и wireguard.</p><p>Для Gatus получился простой конфиг:</p><p>Для мониторинга аппаратных ресурсов удаленного и локального серверов была развернута связка node-exporter + cAdvisor. Все уведомления теперь приходят мгновенно в Telegram-бота. Чтобы 
избежать лавины одинаковых сообщений (например, при перезагрузке хоста),
 в Alertmanager настроена жесткая группировка и дедупликация событий. 
Также добавлен экспортер для AdGuard Home, выводящий статистику 
заблокированных запросов в Grafana.</p><h3>Централизованные логи: Loki + Grafana Alloy</h3><p>В релизе v1.3.0 в стек была добавлена централизованная система сбора логов Loki. Вместо устаревшего Promtail в качестве агента сбора я применил Grafana Alloy.</p><p>Он
 эффективно собирает логи со всех запущенных Docker-контейнеров, парсит 
их и передает в Loki. Теперь вся история событий, ошибок веб-сервера 
Nginx или падений внутренних приложений доступна в едином интерфейсе 
Grafana с возможностью удобной фильтрации через LogQL, что значительно 
упрощает отладку.</p><p>Конфиг Loki:</p><p>Конфиг Grafana Alloy: (локальный конфиг)</p><h2>Интерфейс: переход на Homepage</h2><p>Изначально для 
домашней страницы я написал кастомную минималистичную HTML-панель с 
Glassmorphism-дизайном. Выглядело это красиво, но добавлять новые 
сервисы вручную через постоянную правку исходного кода было крайне 
неудобно.</p><figure><img src="https://media.tproger.ru/user-uploads/139471/2026-07-15/8a8f2752-8aac-4aa5-898e-98affd01cdff.webp" alt="" /><figcaption>HTML + CSS</figcaption></figure><p>В итоге я заменил самописную страницу на полноценный комьюнити-проект Homepage.
 Это дало некоторую гибкость: вся панель настраивается через простые 
YAML-файлы и поддерживает встроенные виджеты интеграции. Пока что она 
простенькая, но возможно в будущем сделаю что-то более продвинутое.</p><figure><img src="https://media.tproger.ru/user-uploads/139471/2026-07-15/90c65d4a-1310-4a30-b1ad-9e4d3083959d.webp" alt="" /><figcaption>Homepage</figcaption></figure><h2>Заключение</h2><p>Постарался
 подробно рассказать о структуре проекта и как я к этому пришел, очень 
много я не добавил, если пост зайдет, то я обязательно более подробно 
пройдусь по некоторым моментам: как я настраивал Matrix и на каком 
моменте я решил его убрать, как собирал локальный amnezia 
контейнер-клиент, что нового я добавил в релизе 1.4.0 и другое.</p><p>Также
 я перешел с manage_deploy.sh на отдельный GUI клиент, который 
будет полностью автоматизировать процесс подготовки к deploy. (написан на Go Wails). Про это тоже возможно сделаю статью.</p><p>Вся кодовая база проекта, подробная документация, инструкции по развертыванию открыты и доступны для сообщества:</p><p>🔗 GitHub-репозиторий: <a href="https://github.com/canntstand/ServeHub-2" rel="noopener noreferrer nofollow">https://github.com/canntstand/ServeHub-2</a></p><p>Это
 моя первая статья на этом сайте и в то же время первый личный проект, которому я 
отдал так много времени (3 месяца). Буду рад вашему фидбеку в 
комментариях!</p>]]></content:encoded>
    </item>
    <item>
      <title>Кроах-Хартман: Rust поможет Linux и делает кодинг веселее</title>
      <link>https://tproger.ru/news/kroah-hartman-rust-pomozhet-linux-i-delaet-koding-veselee</link>
      <comments>https://tproger.ru/news/kroah-hartman-rust-pomozhet-linux-i-delaet-koding-veselee?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/kroah-hartman-rust-pomozhet-linux-i-delaet-koding-veselee</guid>
      <description><![CDATA[<p>Грег Кроах-Хартман заявил, что Rust становится частью Linux и поможет убрать до 80% уязвимостей ядра. Рассказываем, что это значит.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/kroah-hartman-rust-pomozhet-linux-i-delaet-koding-veselee">Кроах-Хартман: Rust поможет Linux и делает кодинг веселее</a>»</p>]]></description>
      <category><![CDATA[Безопасный код]]></category>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Open Source]]></category>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Языки программирования]]></category>
      <category><![CDATA[Rust]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 20 Jul 2026 08:09:48 GMT</pubDate>
      <content:encoded><![CDATA[<p>Один из главных мейнтейнеров стабильной ветки ядра Linux <b>Грег Кроах-Хартман</b> заявил, что Rust уже не эксперимент, а часть долгосрочной стратегии экосистемы. По его словам, переход на Rust поможет убрать львиную долю рутинных уязвимостей ядра и облегчит жизнь мейнтейнерам.</p><p>На конференции <b>Open Source Summit India 2026</b> в Мумбаи Кроах-Хартман выступил с докладом <a href="https://www.youtube.com/watch?v=1nYl_9wBBhE&amp;list=PLEAGIV5X5B1U&amp;index=19">«Rust and Linux: How the Rust Language is Going to Help Linux Succeed»</a>. В нём он признался, что поначалу относился к языку скептически и считал, что всё необходимое уже есть в C. Сейчас он считает иначе: Rust действительно делает программирование интереснее и безопаснее.</p><ul><li>Грег Кроах-Хартман назвал Rust постоянной частью Linux, а не временным экспериментом.</li><li>По его оценке, около 80% уязвимостей ядра за последние 25 лет можно было бы поймать на этапе компиляции Rust.</li><li>Linux получает около 13 CVE в день и почти 9 изменений в час на протяжении десяти лет и более.</li><li>Binder — ключевой механизм IPC Android — уже имеет параллельную реализацию на Rust, а C-версия скоро уйдёт.</li><li>Git и ряд других крупных проектов также движутся в сторону Rust.</li></ul><h2>От скептицизма к поддержке</h2><p>Кроах-Хартман рассказал, что несколько лет назад друг советовал ему попробовать Rust, но он отмахнулся: C казался достаточным. Со временем он изменил мнение. «Он был прав. Я должен был сделать это тогда. Rust на самом деле весёлый. Он заставляет программирование быть весёлым», — сказал мейнтейнер.</p><p>Главное преимущество языка в ядерной разработке — владение и типизация, которые убирают массу мелких ошибок: непроверенные указатели, забытые разблокировки, неправильная очистка ресурсов. Именно такие баги, по словам Кроах-Хартмана, составляют большинство ежедневных CVE.</p><h2>Масштаб проблемы</h2><p>Linux развивается с огромной скоростью. Кроах-Хартман привёл цифры: ядро набирает примерно <b>девять изменений в час</b> уже больше десяти лет, а количество публично раскрываемых уязвимостей держится на уровне <b>около 13 CVE в день</b>. Большая часть из них — не сложные атаки, а простые ошибки в C-коде.</p><blockquote>Я видел каждую CVE ядра за последние 25 лет. Думаю, 80% исчезли бы просто потому, что Rust поймал бы их.</blockquote><h2>Что уже меняется в ядре</h2><p>Rust постепенно становится обязательным выбором для отдельных подсистем. Кроах-Хартман отметил, что <b>новые драйверы некоторых подсистем будут приниматься только на Rust</b>. Яркий пример — Binder, межпроцессный механизм Android, от которого зависят миллиарды устройств. В ядре уже существуют параллельные реализации Binder на C и Rust, и C-версия «скоро исчезнет».</p><p>Это означает, что Rust станет фундаментом не только для экспериментальных модулей, но и для ключевой инфраструктуры мобильной экосистемы.</p><p><b>Контекст:</b><br />Binder — это механизм межпроцессного взаимодействия (IPC) в Android. Он позволяет приложениям и системным сервисам безопасно обмениваться данными. Переписывание Binder на Rust напрямую влияет на безопасность и стабильность почти всех Android-устройств.</p><h2>Выводы</h2><p>Позиция Кроах-Хартмана — ещё один сигнал того, что Rust перешёл из разряда «перспективного языка» в разряд инфраструктурного инструмента. Если оценка в 80% CVE верна, массовый переход на Rust в ядре может существенно снизить количество исправлений безопасности и освободить время мейнтейнеров для сложных логических задач.</p><p>Источник: <a href="https://developers.slashdot.org/story/26/07/20/0417244/rust-will-help-linux-succeed-and-makes-coding-fun-says-greg-kroah-hartman">Slashdot</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Кроссплатформенный VPS: 6 провайдеров с Linux и Windows в 2026 году</title>
      <link>https://tproger.ru/digest/krossplatformennyj-vps-4-provajdera-s-linux-i-windows-v-2026-go</link>
      <comments>https://tproger.ru/digest/krossplatformennyj-vps-4-provajdera-s-linux-i-windows-v-2026-go?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/digest/krossplatformennyj-vps-4-provajdera-s-linux-i-windows-v-2026-go</guid>
      <description><![CDATA[<p>Сравнили 6 провайдеров VPS с Linux и Windows: Рувеб, UFO.Hosting, Timeweb Cloud, PSB Hosting, Selectel и RUVDS. Цены, ОС, лицензии, бэкапы и поддержка.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/digest/krossplatformennyj-vps-4-provajdera-s-linux-i-windows-v-2026-go">Кроссплатформенный VPS: 6 провайдеров с Linux и Windows в 2026 году</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[DevOps]]></category>
      <category><![CDATA[Сервер]]></category>
      <category><![CDATA[VPS]]></category>
      <category><![CDATA[Инфраструктура]]></category>
      <category><![CDATA[Подборки]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 30 Jun 2026 09:43:25 GMT</pubDate>
      <content:encoded><![CDATA[<p>Кроссплатформенный VPS позволяет держать Linux-серверы для сайтов, ботов и backend'ов рядом с Windows-машинами для 1С, удалённого рабочего стола и специфического ПО. В подборке — шесть провайдеров с разным балансом цены, географии и удобства управления, где можно запустить обе операционные системы в одном аккаунте.</p><p><b>Рувеб</b> — Windows в тарифе и бюджетный старт.</p><p><b>UFO.Hosting</b> — своя панель VMmanager и широкий выбор ОС.</p><p><b>Timeweb Cloud</b> — масштабируемое облако с почасовой оплатой.</p><p><b>PSB Hosting</b> — зарубежные локации и безлимитный трафик.</p><p><b>Selectel</b> — корпоративное облако с 152-ФЗ и экосистемой сервисов.</p><p><b>RUVDS</b> — быстрый старт, низкая цена входа и тест на 3 дня.</p><h2>Кому нужен кроссплатформенный VPS</h2><p>Разработчики и системные администраторы часто работают сразу с двумя экосистемами: Linux доминирует в вебе, DevOps и контейнерах, а Windows остаётся стандартом для корпоративного ПО, 1С, MS SQL и тестирования десктопных приложений. Кроссплатформенный VPS избавляет от необходимости заводить отдельные аккаунты у разных провайдеров: Linux- и Windows-машины управляются из одной панели, а переключение между ОС занимает минуты.</p><h2>1. Рувеб — Windows в тарифе</h2><figure><img src="https://media.tproger.ru/user-uploads/133946/2026-06-22/68714e19-7688-449c-83c9-99936aaa0fdf.webp" alt="Страница выбора ОС при заказе VPS на Рувеб" /><figcaption>В заказе Рувеб можно выбрать AlmaLinux, Debian, Ubuntu, Windows 11 и панели управления.</figcaption></figure><p>Российский провайдер с собственными серверами в Москве и Амстердаме. Позиционируется как недорогой хостинг с прозрачными тарифами: минимальный Linux-VPS стоит меньше 400 ₽ в месяц, а лицензия Microsoft для Windows-шаблонов уже включена в стоимость.</p><h3>Кейсы клиентов и кому подойдёт</h3><p>По данным компании, типичный сценарий — совместное использование Linux и Windows на одном аккаунте: Linux-VPS работает как хост для сайта и Telegram-ботов, а Windows-машина используется для удалённого доступа и запуска ПО, которого нет под Linux. Также провайдер подходит разработчикам, которым нужен недорогой Ubuntu-сервер для production и отдельный Windows-VPS для тестирования совместимости.</p><h3>Что можно развернуть</h3><ul><li>Linux: AlmaLinux 8/9/10, CentOS Stream 9, CentOS 9 VMBitrix, Debian 11/12/13, Ubuntu 22.04/24.04, FreeBSD 14, Mikrotik CHR.</li><li>Windows: Windows Server 2016/2019/2022, Windows 11.</li><li>Панели управления: ISPmanager для AlmaLinux, Debian, Ubuntu; FastPanel для AlmaLinux 8 и Debian 11 (ISPmanager оплачивается отдельно).</li><li>Доступ: root по SSH для Linux, RDP из коробки для Windows, веб-консоль для аварийного доступа.</li></ul><h3>Инфраструктура и экосистема</h3><p>Серверы размещены в дата-центрах DataHouse в Москве и в Амстердаме, оба соответствуют уровню Tier 3. Виртуализация — KVM, диски — SSD и NVMe в зависимости от линейки. Провайдер работает по 152-ФЗ, зарегистрирован в реестре хостинг-провайдеров и предоставляет закрывающие документы для юрлиц.</p><h3>Отзывы и репутация</h3><p>На сайте компании публикуются отзывы клиентов со средней оценкой 4,5 из 5. Пользователи отмечают оперативную техническую поддержку и соотношение цены и качества, хотя встречаются упоминания о плановых переездах между дата-центрами с кратковременными перерывами.</p><h3>Поддержка и каналы связи</h3><p>Техническая поддержка работает через систему тикетов и онлайн-чат на сайте круглосуточно. Доступен бесплатный звонок по России по номеру 8(800) 505-93-34. Среднее время первого ответа — 10–30 минут. Для корпоративных клиентов и крупных проектов возможно закрепление персонального менеджера.</p><h3>Тарифы, ограничения и условия</h3><figure><img src="https://media.tproger.ru/user-uploads/115582/2026-06-26/43608ed4-1d5d-4e2e-83ec-cbecb636fc35.webp" alt="Тарифы VPS на Linux у Рувеб" /><figcaption>Linux-VPS у Рувеб: линейка KVMv от NANO до MEDIUM, трафик неограничен.</figcaption></figure><figure><img src="https://media.tproger.ru/user-uploads/115582/2026-06-26/15898346-d6b8-4042-b6a5-e4880a122ef1.webp" alt="Тарифы VPS на Windows у Рувеб" /><figcaption>Windows-VPS у Рувеб: тарифы от KVMv-LIGHT до KVMv-MEGA с включённой лицензией.</figcaption></figure><ul><li>Linux: KVMv-NANO — 1 CPU, 0,5 ГБ RAM, 12 ГБ SSD — 393 ₽/мес; KVMv-LIGHT — 2 CPU, 4 ГБ RAM, 80 ГБ SSD — 1672 ₽/мес.</li><li>Windows: лицензия Microsoft входит в стоимость; Windows 11 доступна на тарифах от 1422 ₽/мес при оплате за год.</li><li>Скидки за предоплату: 3 месяца — 5%, 6 месяцев — 10%, год — 15%, два года — 25%.</li><li>Тестовый период: 6 дней для Linux, 3 дня для Windows; активируется после пополнения баланса на 300 ₽.</li><li>Трафик: до 50 000 ГБ/мес на полной скорости по Fair Use Policy, далее возможно временное снижение скорости.</li><li>Бэкапы: вручную в панели, 1 ₽ за 1 ГБ; снапшоты бесплатны, но требуют аренду места.</li><li>Ограничения: на тарифах NANO, MICRO и посуточных по умолчанию закрыты исходящие порты 25 и 465.</li></ul><h2>2. UFO.Hosting — своя панель VMmanager</h2><figure><img src="https://media.tproger.ru/user-uploads/133946/2026-06-22/1a669430-60e9-4a2a-a9c2-592f90162893.webp" alt="Выбор операционной системы в панели UFO.Hosting" /><figcaption>UFO.Hosting предлагает AlmaLinux, CentOS, Ubuntu, Debian, Windows 11, FreeBSD и Astra Linux.</figcaption></figure><p>Российский провайдер с собственной панелью управления на базе VMmanager. Отличается большим списком шаблонов ОС — от AlmaLinux и Astra Linux до Windows 10/11 и FreeBSD ZFS. Подходит тем, кому важна гибкость выбора операционной системы.</p><h3>Кейсы клиентов и кому подойдёт</h3><p>Провайдер описывает типичные сценарии: бухгалтерская фирма разворачивает 1С:Предприятие на Windows Server 2022 с RDP для нескольких сотрудников; разработчик держит production на Linux, а для тестирования Windows-сборок поднимает отдельный VPS. Также UFO.Hosting удобен для проектов, где нужны нестандартные дистрибутивы или десктопная Windows.</p><h3>Что можно развернуть</h3><ul><li>Linux: AlmaLinux 8/9/10, CentOS 7/8 Stream/9 Stream/10 Stream, Oracle Linux 8/9, Rocky Linux 8/9/10, Ubuntu 20.04/22.04/24.04, Debian 11/12/13, FreeBSD 13/14 ZFS, Astra Linux CE.</li><li>Windows: Windows Server 2016/2019/2022 (включая Datacenter, Core, RUS, GPT), Windows 10/11.</li><li>Панели: Vesta, Hestia, CyberPanel, Virtualmin, ISPmanager; первый месяц ISPmanager бесплатно, далее 400 ₽/мес.</li><li>Доступ: SSH с ключами для Linux, RDP из коробки для Windows, VNC-консоль в панели, мультипользовательский RDP на Windows Server.</li></ul><h3>Инфраструктура и экосистема</h3><figure><img src="https://media.tproger.ru/user-uploads/133946/2026-06-22/8c139639-174b-4057-8dcc-cc5d32a0d3a8.webp" alt="Список виртуальных машин в панели VMmanager UFO.Hosting" /><figcaption>Панель VMmanager показывает активные Windows-VM, IP-адреса и потребление ресурсов.</figcaption></figure><figure><img src="https://media.tproger.ru/user-uploads/133946/2026-06-22/330443bf-6c9a-4aa7-9984-b2fccf6eaa80.webp" alt="Детали виртуальной машины в VMmanager UFO.Hosting" /><figcaption>В карточке VM видны uptime, загрузка CPU/RAM/disk и доступ к VNC-консоли.</figcaption></figure><p>Оборудование расположено в московском дата-центре IXcellerate уровня Tier 3. Виртуализация — KVM, диски — NVMe. В одном личном кабинете доступны VPS/VDS, выделенные серверы, домены, SSL-сертификаты и DNS-хостинг. Провайдер зарегистрирован в реестре хостинг-провайдеров, работает по 152-ФЗ, но сертификации ФСТЭК не имеет.</p><h3>Отзывы и репутация</h3><p>Публичные агрегированные рейтинги в предоставленных источниках не указаны. Компания позиционирует себя как провайдер с активацией серверов до 15 минут и помощью в миграции сайтов.</p><h3>Поддержка и каналы связи</h3><p>Техническая поддержка работает круглосуточно через онлайн-чат на сайте и тикет-систему в биллинге. Телефонная поддержка доступна в будни с 9:00 до 18:00. Поддержка в Telegram не осуществляется. Есть база знаний; выделенный менеджер для B2B планируется.</p><h3>Тарифы, ограничения и условия</h3><ul><li>Linux: тариф Naos — 1 CPU, 1 ГБ RAM, 25 ГБ NVMe — от 577 ₽/мес при оплате за 3 месяца; Brachium — 2 CPU, 4 ГБ RAM, 60 ГБ NVMe — от 977 ₽/мес.</li><li>Windows: доступна для установки от тарифа Brachium, стоимость — от 1025 ₽/мес.</li><li>Лицензия Windows: не входит в стоимость, ОС предоставляется в Trial-версии; для легального использования лицензию приобретают самостоятельно.</li><li>Скидки за предоплату: 3 месяца — 5%, 6 месяцев — 10%, год — 15%.</li><li>Тестовый период: 3 дня на любой VPS-тариф; требуется верификация аккаунта (email, телефон, KYC).</li><li>Трафик: 32 ТБ/мес, после превышения скорость ограничивается до 100 Мбит/с; на выделенных серверах трафик безлимитный.</li><li>Бэкапы: ежедневные — 525 ₽/мес, еженедельные — 262,5 ₽/мес; восстановление через панель или поддержку.</li><li>Ограничения: VPN запрещён, так как он заменяет сетевые настройки; исходящий SMTP-порт 25 закрыт по умолчанию.</li></ul><h2>3. Timeweb Cloud — масштабируемое облако</h2><p>Крупнейший российский облачный провайдер с собственной инфраструктурой VAPI Stack. Подходит для проектов, которым нужно масштабирование ресурсов, API, Terraform и возможность загружать собственные образы.</p><h3>Кейсы клиентов и кому подойдёт</h3><p>Timeweb Cloud ориентирован на разработчиков, SaaS-стартапы и компании, которым нужна гибкая инфраструктура. Почасовая оплата позволяет запускать тестовые окружения на короткий срок, а API и Terraform упрощают автоматизацию. Провайдер также подходит для размещения сайтов, интернет-магазинов, баз данных и CI/CD-конвейеров.</p><h3>Что можно развернуть</h3><ul><li>Linux: Ubuntu, Debian, CentOS, Astra Linux CE, собственные образы.</li><li>Windows: Windows Server, готовые образы в маркетплейсе.</li><li>Инструменты управления: панель Timeweb Cloud, API, Terraform, CLI, Cloud-init.</li><li>Дополнительно: бэкапы, снапшоты, образы дисков, DDoS-защита, балансировщики, Kubernetes, managed-базы данных.</li></ul><h3>Инфраструктура и экосистема</h3><p>Серверы размещены в дата-центрах Tier 3 в России (Москва, Санкт-Петербург, Новосибирск), Казахстане (Алматы), Германии (Франкфурт) и Нидерландах (Амстердам). Виртуализация — KVM, диски — NVMe. Дата-центры сертифицированы по ISO и PCI DSS, инфраструктура соответствует 152-ФЗ. Провайдер заявляет о 150 000+ клиентах и статусе лауреата Премии Рунета.</p><h3>Отзывы и репутация</h3><p>На страницах услуг публикуются недавние отзывы пользователей: клиенты отмечают скорость работы серверов, удобство панели и оперативность поддержки. Провайдер заявляет о доступности серверов на уровне 99,98% по SLA с финансовыми гарантиями.</p><h3>Поддержка и каналы связи</h3><p>Поддержка работает 24/7 через чат, мессенджеры, социальные сети, тикеты и телефон. Провайдер бесплатно помогает с миграцией данных с других площадок и предлагает услуги администрирования.</p><h3>Тарифы, ограничения и условия</h3><ul><li>Linux: VPS с предустановленной Ubuntu — от 169 ₽/мес при оплате за год или от 477 ₽/мес помесячно; типовой тариф Cloud MSK 40 — 2 CPU, 2 ГБ RAM, 40 ГБ NVMe — 882 ₽/мес.</li><li>Windows: Windows Server доступен в конфигураторе; точные цены уточняйте на сайте.</li><li>Лицензия Windows: условия лицензирования Microsoft уточняйте в поддержке.</li><li>Оплата: почасовой биллинг, минимальный платёж — 50 ₽.</li><li>Тестовый период: возможность бесплатного тестирования рассматривается индивидуально.</li><li>Трафик: безлимитный на всех тарифах.</li><li>Бэкапы: 6 ₽/ГБ/мес; образы — 3 ₽/ГБ/мес; снапшоты бесплатны, один на сервер, хранятся 7 дней.</li><li>Ограничения: диск можно увеличить, но не уменьшить; для уменьшения — обращение в поддержку.</li></ul><h2>4. PSB Hosting — зарубежные локации</h2><p>Международный хостинг-провайдер с фокусом на Европу и США. Подходит для проектов, где важна география серверов, безлимитный трафик и анонимная оплата криптовалютой.</p><h3>Кейсы клиентов и кому подойдёт</h3><p>PSB Hosting ориентирован на пользователей, которым нужны серверы за пределами России: международные SaaS-платформы, сервисы с аудиторией в Европе и США, VPN-инфраструктура и проекты, где критична скорость отклика для зарубежных пользователей. Клиенты сами выбирают конфигурацию под свои задачи.</p><h3>Что можно развернуть</h3><ul><li>Linux: Ubuntu, Debian, CentOS, AlmaLinux, Rocky Linux, Oracle Linux, FreeBSD, Astra Linux.</li><li>Windows: Windows Server 2016/2019/2022, Windows 10/11.</li><li>Предустановленное ПО: Docker, Django, WordPress, OpenVPN, WireGuard, FastPanel, HestiaCP.</li><li>Доступ: root по SSH для Linux, RDP из коробки для Windows, веб-консоль в панели.</li></ul><h3>Инфраструктура и экосистема</h3><p>Серверы расположены в дата-центрах класса Tier 3+ и 4 в Амстердаме, Франкфурте, Хельсинки и Нью-Йорке. Платформа построена на процессорах AMD и Intel с DDR5-памятью и NVMe-дисками; для высоконагруженных задач есть линейка HI-CPU VPS на базе AMD Ryzen 7950X. Провайдер предоставляет подсеть /64 IPv6 на всех тарифах и полноценную панель управления DNS-записями доменов.</p><h3>Отзывы и репутация</h3><p>На сайте размещены ссылки на отзывы на площадках OtzyvMarketing.ru (4,8), In-Scale.ru (5,0), Aff1.ru (5,0) и 101Poisk.ru (4,89). Публичных агрегированных рейтингов на независимых площадках в предоставленных источниках не указано.</p><h3>Поддержка и каналы связи</h3><p>Техническая поддержка работает круглосуточно через тикеты и Telegram. Время ответа зависит от загрузки. Для B2B-клиентов доступен персональный менеджер. Документация включает API и базу знаний.</p><h3>Тарифы, ограничения и условия</h3><ul><li>Цены: конкретные тарифы в предоставленных источниках не указаны; стоимость не зависит от выбора ОС. Уточняйте на сайте.</li><li>Лицензия Windows: покупается отдельно.</li><li>Оплата: почасовая; принимаются карты России, СНГ и ЕС, Qiwi, криптовалюта (Bitcoin, Ethereum, Litecoin, USDT).</li><li>Тестовый период: не предоставляется.</li><li>Трафик: безлимитный на всех тарифах; порт до 10 Гбит/с, на VPS выделяется до 300 Мбит/с.</li><li>Бэкапы: платно; неограниченное количество резервных копий; восстановление через панель.</li><li>Ограничения: запрещён неправомерный контент; порт 25 открывается через службу поддержки; мультипользовательский RDP — 1 сессия.</li></ul><h2>5. Selectel — корпоративное облако с 152-ФЗ</h2><p>Крупный российский облачный провайдер для команд, которым важны не только Linux- и Windows-серверы, но и инфраструктура вокруг них: сети, бэкапы, мониторинг, хранение данных и требования к персональным данным. Selectel подходит для проектов, где VPS быстро перерастает в полноценную облачную инфраструктуру.</p><h3>Кейсы клиентов и кому подойдёт</h3><p>Selectel стоит рассматривать компаниям, которые держат production и staging в одном облаке, работают с персональными данными или хотят запускать Linux- и Windows-серверы рядом с управляемыми сервисами. Это вариант для SaaS, внутренних корпоративных систем, CI/CD-инфраструктуры и проектов, которым нужны предсказуемые российские дата-центры.</p><h3>Что можно развернуть</h3><ul><li>Linux: Ubuntu, Debian, Fedora CoreOS, CentOS, SelectOS, Astra Linux, Alma Linux, Rocky Linux, Fedora, Oracle Linux.</li><li>Windows: образы Windows доступны в каталоге облачных серверов; также можно использовать собственные образы, включая лицензированное ПО Microsoft, приобретённое у другого провайдера.</li><li>Инфраструктура: виртуальные машины, сетевые диски, бэкапы, балансировщики, S3, базы данных, Kubernetes и инструменты мониторинга.</li><li>Доступ: управление через панель Selectel; для автоматизации доступны облачные API и типовые сценарии DevOps-инфраструктуры.</li></ul><h3>Инфраструктура и экосистема</h3><p>На официальной странице облачных серверов Selectel подчёркивает моментальное масштабирование, соответствие 152-ФЗ и размещение виртуальных выделенных серверов в дата-центрах уровня Tier III. Вокруг серверов есть отдельные сервисы хранения, резервного копирования, сетевой связности и информационной безопасности.</p><h3>Отзывы и репутация</h3><p>В эту подборку Selectel включён как инфраструктурный провайдер с официальной линейкой облачных серверов и широким набором смежных сервисов. Публичные пользовательские рейтинги в рамках этой правки отдельно не сравнивались.</p><h3>Поддержка и каналы связи</h3><p>На сайте указаны канал продаж sales@selectel.ru и телефон 8 800 555-06-75. Для действующих клиентов поддержка и управление услугами доступны через личный кабинет Selectel.</p><h3>Тарифы, ограничения и условия</h3><ul><li>Цены: рассчитываются в конфигураторе облачных серверов и зависят от vCPU, RAM, дисков, региона и дополнительных сервисов.</li><li>Лицензия Windows: условия зависят от выбранного образа и лицензии; можно использовать собственные лицензированные образы Microsoft.</li><li>Оплата: облачная модель с гибкой конфигурацией ресурсов; итоговую стоимость нужно проверять в панели перед запуском сервера.</li><li>Трафик: условия зависят от сетевой конфигурации и выбранных сервисов.</li><li>Бэкапы: доступны отдельные сервисы резервного копирования и сетевые диски; стоимость зависит от объёма хранения.</li><li>Ограничения: это более инфраструктурный вариант, чем простой VPS-хостинг, поэтому для маленьких проектов конфигуратор может быть избыточен.</li></ul><h2>6. RUVDS — быстрый старт и тест на 3 дня</h2><p>Российский VPS-провайдер для быстрого запуска виртуального сервера без длинной настройки инфраструктуры. RUVDS подойдёт, если нужно недорого проверить идею, поднять Linux-сервер для небольшого сервиса или взять Windows-VPS под RDP и прикладное ПО.</p><h3>Кейсы клиентов и кому подойдёт</h3><p>Сильная сторона RUVDS — низкий порог входа и возможность быстро протестировать сервер. Это сценарии для небольших сайтов, Telegram-ботов, учебных окружений, тестовых стендов, удалённого рабочего места и проектов, где важно сначала попробовать конфигурацию, а потом масштабироваться.</p><h3>Что можно развернуть</h3><ul><li>Linux: VPS-линейки для веб-сервисов, ботов, тестовых стендов и небольших backend-проектов.</li><li>Windows: отдельная линейка VPS Windows для задач с RDP, корпоративным ПО и Windows-приложениями.</li><li>Производительность: доступны варианты с быстрыми NVMe-дисками.</li><li>Доступ: стандартные сценарии SSH для Linux и RDP для Windows; управление сервером через личный кабинет провайдера.</li></ul><h3>Инфраструктура и экосистема</h3><p>На официальной странице RUVDS указывает 22 дата-центра уровня Tier III в 9 странах, отдельные линейки для Windows и быстрых NVMe-серверов, а также помощь с аттестацией по ФСТЭК для инфраструктурных задач с повышенными требованиями.</p><h3>Отзывы и репутация</h3><p>В подборку RUVDS добавлен как массовый VPS-провайдер с низкой стартовой ценой и тестовым периодом. Независимые пользовательские рейтинги в рамках этой правки отдельно не сравнивались.</p><h3>Поддержка и каналы связи</h3><p>На сайте указан бесплатный телефон 8 (800) 775-97-42 и круглосуточный формат связи. Для рабочих инцидентов условия реакции стоит проверять в SLA и правилах выбранного тарифа.</p><h3>Тарифы, ограничения и условия</h3><ul><li>Цены: VPS Start — от 139 ₽/мес; итог зависит от выбранной линейки и конфигурации.</li><li>Тестовый период: новым пользователям доступен бесплатный тест на 3 дня для сервера стоимостью до 3000 ₽.</li><li>Лицензия Windows: условия зависят от выбранной Windows-линейки и конфигурации.</li><li>Трафик и диски: параметры зависят от тарифа; для задач с дисковой нагрузкой есть NVMe-линейка.</li><li>Бэкапы: условия резервного копирования нужно проверять в панели и описании конкретного тарифа.</li><li>Ограничения: минимальная цена полезна для старта, но производительные Windows-сценарии потребуют более дорогой конфигурации.</li></ul><h2>Сравнение по ключевым критериям</h2><figure><img src="https://media.tproger.ru/user-uploads/133946/2026-06-30/f1de0405-f12e-4cb8-9f90-95c4ada16d9a.webp" alt="Сравнительная таблица шести VPS и VDS провайдеров с Linux и Windows по цене, лицензиям, смене ОС, трафику, бэкапам и сценариям использования" /><figcaption>Сравнительная таблица шести VPS/VDS-провайдеров с Linux и Windows.</figcaption></figure><p>Ниже — текстовое сравнение по ценам, лицензиям, смене ОС и условиям для всех шести участников.</p><h3>Цены и лицензии</h3><p><b>Минимальный Linux-VPS:</b> Рувеб — 393 ₽/мес; UFO.Hosting — от 577 ₽/мес; Timeweb Cloud — от 169 ₽/мес при оплате за год; PSB Hosting — уточняется на сайте; Selectel — рассчитывается в конфигураторе облачных серверов; RUVDS — VPS Start от 139 ₽/мес. <b>Windows-VPS:</b> Рувеб — от 1422 ₽/мес с включённой лицензией; UFO.Hosting — от 1025 ₽/мес, но лицензию нужно покупать отдельно; Timeweb Cloud, PSB Hosting, Selectel и RUVDS — по конфигуратору или Windows-линейке.</p><p><b>Лицензия Windows:</b> у Рувеб она включена в стоимость тарифа. У UFO.Hosting ОС предоставляется в Trial-версии, у PSB Hosting — покупается отдельно, у Timeweb Cloud условия уточняются в поддержке. У Selectel можно использовать Windows-образы и собственные лицензированные образы Microsoft; у RUVDS условия зависят от выбранной Windows-линейки.</p><h3>Смена ОС и управление</h3><p><b>Смена ОС:</b> у Рувеб и Timeweb Cloud доступна переустановка с потерей данных; у UFO.Hosting — через панель за ~20 минут; у PSB Hosting — через панель с пересозданием сервера; у Selectel и RUVDS сценарий зависит от выбранного образа и обычно решается созданием или пересозданием сервера. <b>Панель:</b> Рувеб использует сторонний биллинг, UFO.Hosting — собственный VMmanager, Timeweb Cloud, PSB Hosting, Selectel и RUVDS — собственные панели или конфигураторы.</p><h3>Трафик, бэкапы и поддержка</h3><p><b>Трафик:</b> Timeweb Cloud и PSB Hosting предлагают безлимитный трафик; Рувеб — до 50 ТБ/мес по Fair Use Policy; UFO.Hosting — 32 ТБ/мес с ограничением скорости после превышения; Selectel и RUVDS зависят от выбранной конфигурации и сетевых условий тарифа. <b>Бэкапы:</b> у всех провайдеров платные или тарифицируются по объёму; Timeweb Cloud и PSB Hosting также предлагают снапшоты, Selectel выделяет резервное копирование в отдельный сервис. <b>Поддержка:</b> у всех участников есть официальные каналы связи, но формат SLA и скорость реакции лучше проверять перед заказом.</p><h2>Вывод</h2><p>Для бюджетного старта с готовой Windows-лицензией подойдёт Рувеб: минимальный Linux-VPS дешевле 400 ₽, а Windows 11 уже включена в тариф. Если важен широкий выбор ОС и собственная панель VMmanager — смотрите на UFO.Hosting, но учитывайте, что лицензию Microsoft придётся покупать отдельно. RUVDS стоит рассмотреть, когда нужен самый быстрый вход, тест на 3 дня и отдельная Windows-линейка.</p><p>Timeweb Cloud выигрывает у масштабируемости, API и почасовой оплаты: это вариант для растущих проектов и команд с DevOps-практиками. Selectel сильнее в корпоративных сценариях, где нужны 152-ФЗ, Tier III, бэкапы и смежные облачные сервисы. PSB Hosting стоит рассмотреть, если нужны зарубежные локации, безлимитный трафик и оплата криптовалютой — но конкретные тарифы и условия лицензирования лучше уточнить перед заказом.</p><p>Все шесть провайдеров позволяют держать Linux и Windows в одном аккаунте, но баланс цены, удобства, лицензий и инфраструктурных возможностей у каждого свой. Перед выбором советуем проверить тестовый период или минимальный депозит и протестировать сценарии, критичные для вашего проекта.</p>]]></content:encoded>
    </item>
    <item>
      <title>Как выбрать VPS/VDS под свой проект: гайд по параметрам и 6 провайдеров</title>
      <link>https://tproger.ru/digest/kak-vybrat-vps-vds-pod-svoj-proekt-gajd-po-parametram</link>
      <comments>https://tproger.ru/digest/kak-vybrat-vps-vds-pod-svoj-proekt-gajd-po-parametram?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/digest/kak-vybrat-vps-vds-pod-svoj-proekt-gajd-po-parametram</guid>
      <description><![CDATA[<p>Разбираем, как подобрать VPS/VDS под проект по CPU, RAM, дискам и трафику. Сравнили Макхост, UFO.Hosting, SmartApe, PSB Hosting, FirstVDS и Hetzner Cloud.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/digest/kak-vybrat-vps-vds-pod-svoj-proekt-gajd-po-parametram">Как выбрать VPS/VDS под свой проект: гайд по параметрам и 6 провайдеров</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Практика]]></category>
      <category><![CDATA[DevOps]]></category>
      <category><![CDATA[Сервисы]]></category>
      <category><![CDATA[Облачные технологии]]></category>
      <category><![CDATA[Сервер]]></category>
      <category><![CDATA[VPS]]></category>
      <category><![CDATA[Подборки]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 30 Jun 2026 09:26:50 GMT</pubDate>
      <content:encoded><![CDATA[<p>Выбирать VPS или VDS стоит не по цене за гигабайт диска, а по сочетанию CPU, RAM, типа накопителя и трафика под конкретный проект. В подборке — шесть провайдеров с разными акцентами: бюджетный старт, российские документы, зарубежные локации, гибкие ресурсы и облачная инфраструктура.</p><p><b>Макхост</b> — низкий порог входа и российские документы.</p><p><b>UFO.Hosting</b> — широкая линейка VPS и выделенных серверов.</p><p><b>SmartApe</b> — гибкие конфигурации и быстрый старт.</p><p><b>PSB Hosting</b> — зарубежные локации и безлимитный трафик.</p><p><b>FirstVDS</b> — бюджетный массовый вариант для простых проектов.</p><p><b>Hetzner Cloud</b> — иностранная облачная альтернатива с ограничениями для РФ.</p><h2>Как мы выбирали</h2><p>В подборку вошли провайдеры, которые подтвердили ключевые параметры в брифах и предоставили актуальную информацию о тарифах, инфраструктуре и поддержке. Мы ориентировались на прозрачность конфигураций, наличие российских локаций или документов для юрлиц, а также на реальные сценарии использования — от лендинга и телеграм-бота до 1С и высоконагруженных баз данных.</p><h2>1. Макхост — низкий порог входа</h2><p>Макхост — российский хостинг-провайдер с собственными панелями управления и низким стартовым тарифом. Входит в реестр хостинг-провайдеров, работает с юрлицами и предлагает VPS в России и Европе.</p><h3>Кейсы клиентов и кому подойдёт</h3><ul><li>Сайты-визитки и лендинги на минимальной конфигурации с 1 CPU и 1 GB RAM.</li><li>Интернет-магазины на популярных CMS и телеграм-боты: по данным провайдера, часто выбирают KVM-2 с 2 GB RAM.</li><li>1С:Предприятие и корпоративные сайты с модулем синхронизации: рекомендуют конфигурации от 4 GB RAM.</li><li>VPN-серверы личного использования и небольшие тестовые окружения.</li></ul><h3>Что можно развернуть</h3><ul><li>Операционные системы: Ubuntu, Debian, AlmaLinux, CentOS Stream.</li><li>Панели управления: ISPmanager, FastPanel; на тарифах VPS первый месяц ISPmanager 6 в подарок.</li><li>Готовые образы и стеки: WordPress, 1С, Docker, LAMP, почта, DNS, SSL.</li><li>SSH и root-доступ для произвольной настройки окружения.</li></ul><h3>Инфраструктура и экосистема</h3><ul><li>Виртуализация KVM с гарантированными ресурсами.</li><li>Дата-центры: DataPro в Москве и площадка в Амстердаме.</li><li>Диски: NVMe и DDR4 на всех VPS-тарифах, кроме самого дешёвого KVM-NEW с SSD.</li><li>Сеть: порт до 1 Гбит/с, безлимитный трафик на всех тарифах, кроме KVM-NEW (2 ТБ).</li><li>Соответствие 152-ФЗ, реестр хостинг-провайдеров; закрывающие документы для юрлиц.</li></ul><h3>Отзывы и репутация</h3><p>На странице VPS у Макхоста указана средняя оценка 5 на основе 13 оценок. Пользователи отмечают круглосуточную поддержку и быструю помощь в сложных ситуациях; провайдер позиционирует себя как лидер авторитетных рейтингов.</p><h3>Поддержка и каналы связи</h3><ul><li>Каналы: тикет-система и онлайн-чат на сайте.</li><li>Среднее время первого ответа: 10–20 минут.</li><li>Для корпоративных клиентов и крупных проектов возможен персональный менеджер.</li><li>База знаний, блог со статьями и платное администрирование VPS при необходимости.</li></ul><h3>Тарифы, ограничения и условия</h3><ul><li>Стартовый KVM-NEW: 1 CPU, 0.6 GB RAM, 5 GB SSD, 2 ТБ трафика — 143 ₽/мес.</li><li>Популярный KVM-2: 1 CPU, 2 GB RAM, 30–60 GB NVMe — от 693 ₽/мес при оплате за год.</li><li>Топовый VPS KVM-12: 6 CPU, 12 GB RAM, 180–360 GB NVMe — от 3465 ₽/мес при оплате за год.</li><li>Скидки за предоплату: 3%, 6%, 12%, 24% за 3, 6, 12, 24 месяца соответственно.</li><li>Тестовый период: 3 дня с активационным платежом 290 ₽, который остаётся на балансе.</li><li>Апгрейд без пересоздания сервера, обычно с кратковременной перезагрузкой.</li></ul><figure><img src="https://media.tproger.ru/user-uploads/133946/2026-06-22/3db7d571-bf7d-42d2-b2fb-bd0cd9e35169.webp" alt="Тарифная сетка VPS Макхост" /><figcaption>Тарифная сетка VPS Макхост</figcaption></figure><figure><img src="https://media.tproger.ru/user-uploads/133946/2026-06-22/21161d7e-7ce2-4ea0-91c6-c0a9f9f9a919.webp" alt="Панель управления Макхост" /><figcaption>Панель управления Макхост</figcaption></figure><p>Официальный сайт: <a href="https://mchost.ru/services/linux-vps/?utm_source=tproger&amp;utm_medium=article&amp;utm_campaign=kak_vybrat_vps_vds">Макхост</a></p><h2>2. UFO.Hosting — широкая линейка</h2><p>UFO.Hosting предлагает виртуальные и выделенные серверы в России с акцентом на широкую линейку конфигураций и NVMe-диски. Подходит тем, кто рассматривает и VPS, и bare-metal в одном кабинете.</p><h3>Кейсы клиентов и кому подойдёт</h3><ul><li>Небольшие проекты и сайты-визитки на тарифе Naos с 1 CPU и 1 GB RAM.</li><li>Интернет-магазины, корпоративные сайты и телеграм-боты с вебхуками на Brachium с 2 CPU и 4 GB RAM.</li><li>1С:Предприятие и нагруженные CMS: рекомендуют от 4 CPU и 8 GB RAM.</li><li>Проекты, которым нужны выделенные серверы без соседей.</li></ul><h3>Что можно развернуть</h3><ul><li>Операционные системы: различные дистрибутивы Linux и Windows (ISO-образы доступны на старших тарифах).</li><li>Панели управления: ISPmanager, Vesta, Hestia, Cyberpanel, Virtualmin.</li><li>Готовые шаблоны ПО в зависимости от выбранной ОС.</li><li>Дополнительные IP-адреса, аренда подсетей, настройка BGP.</li></ul><h3>Инфраструктура и экосистема</h3><ul><li>Виртуализация KVM; процессоры Intel Xeon E5-2697A v4.</li><li>Дата-центр IXcellerate в Москве, сертифицированный Tier III+.</li><li>NVMe-диски в RAID10 на VPS/VDS; Enterprise SSD на выделенных серверах.</li><li>Сеть: порт до 10 Гбит/с на ноде, 32 ТБ трафика в месяц на VPS (далее ограничение 100 Мбит/с); на выделенных серверах — без ограничений.</li><li>Работа по 152-ФЗ, реестр хостинг-провайдеров; документы для юрлиц через ЭДО.</li></ul><h3>Отзывы и репутация</h3><p>Публичные отзывы и агрегированные рейтинги в предоставленных материалах не указаны. Провайдер акцентирует внимание на Tier III+ инфраструктуре и запуске серверов до 15 минут.</p><h3>Поддержка и каналы связи</h3><ul><li>Каналы: онлайн-чат на сайте и тикет-система в биллинге 24/7; телефон в будни с 9:00 до 18:00.</li><li>Среднее время первого ответа: не более 30 минут в любое время суток.</li><li>База знаний в блоге ufo.hosting/blog.</li><li>Продажи и поддержка готовы консультировать B2B-клиентов.</li></ul><h3>Тарифы, ограничения и условия</h3><ul><li>Минимальный VPS Naos: 1 vCPU, 1 GB RAM, 25 GB NVMe — 605.85 ₽/мес.</li><li>Популярный Brachium: 2 vCPU, 4 GB RAM, 60 GB NVMe — 1025.85 ₽/мес.</li><li>Топовый VPS Intercrus: 32 vCPU, 64 GB RAM, 510 GB NVMe — 16 800 ₽/мес.</li><li>Выделенный сервер Восток-1: 2x E5-2697v4, 384 GB RAM ECC, 4x960 GB Enterprise SSD — 43 050 ₽/мес.</li><li>Скидки за предоплату: 5%, 10%, 15% за 3, 6, 12 месяцев.</li><li>Тестовый период: 3 дня на VPS после полной верификации аккаунта; на выделенных серверах — обсуждается персонально.</li><li>Апгрейд тарифа из личного кабинета без пересоздания сервера, вступает в силу после перезагрузки.</li></ul><figure><img src="https://media.tproger.ru/user-uploads/133946/2026-06-22/cca3508e-09e1-432d-89e7-57efb6843a61.webp" alt="Тарифы виртуальных серверов UFO.Hosting" /><figcaption>Тарифы виртуальных серверов UFO.Hosting</figcaption></figure><figure><img src="https://media.tproger.ru/user-uploads/133946/2026-06-22/29c559f2-0a56-4b7c-a5b1-79cd16c7347f.webp" alt="Тарифы VPS/VDS Hi-CPU UFO.Hosting" /><figcaption>Тарифы VPS/VDS Hi-CPU UFO.Hosting</figcaption></figure><figure><img src="https://media.tproger.ru/user-uploads/133946/2026-06-22/851bd0b3-9ee8-43b5-91ff-9341f54ccf29.webp" alt="Выделенные серверы UFO.Hosting" /><figcaption>Выделенные серверы UFO.Hosting</figcaption></figure><p>Официальный сайт: <a href="https://ufo.hosting/?from=1982260">UFO.Hosting</a></p><h2>3. SmartApe — гибкие конфигурации</h2><p>SmartApe делает ставку на гибкость: кроме фиксированных линеек есть полностью конфигурируемые тарифы, где можно менять ресурсы под задачу. Провайдер использует процессоры Intel Xeon Platinum, AMD EPYC и AMD Ryzen.</p><h3>Кейсы клиентов и кому подойдёт</h3><ul><li>Лендинги и сайты-визитки на минимальных конфигурациях с 2 CPU и 1 GB RAM.</li><li>WordPress, корпоративные сайты и интернет-магазины до 10 тыс. посетителей в сутки.</li><li>Bitrix, CRM, ERP и 1С: рекомендуют от 4 CPU и 8 GB RAM.</li><li>Нагруженные API, базы данных и высоконагруженные проекты на конфигурируемых тарифах.</li></ul><h3>Что можно развернуть</h3><ul><li>Linux- и Windows-серверы, панели управления ISPmanager, Hestia и другие.</li><li>Готовые стеки под Docker, базы данных, веб-приложения.</li><li>Автоматическое развёртывание сервера за 1–2 минуты; бесплатная помощь с переносом сайтов при использовании ISPmanager или Hestia.</li></ul><h3>Инфраструктура и экосистема</h3><ul><li>Виртуализация KVM с изоляцией и гарантированными ресурсами.</li><li>Процессоры: Intel Xeon E5-2696 v4, Intel Xeon Platinum, AMD EPYC, AMD Ryzen 9.</li><li>Диски: серверные NVMe SSD или HDD + SSD-кэш, RAID-10.</li><li>Дата-центры: DataPro Moscow I, II, III в России; Host-Telecom в Чехии; Partner Group в Израиле; уровни Tier III и Tier IV.</li><li>Сеть: безлимитный трафик на всех VPS, канал до 200 Мбит/с.</li><li>SLA 99.9%, заявленный фактический uptime 99.982%.</li><li>Соблюдение 152-ФЗ, договор на обработку персональных данных.</li></ul><h3>Отзывы и репутация</h3><p>Публичные отзывы и рейтинги в предоставленных материалах не указаны. Провайдер акцентирует внимание на показателях NVMe-хранилища: до 680 тыс. IOPS на чтение и до 185 тыс. IOPS на запись.</p><h3>Поддержка и каналы связи</h3><ul><li>Каналы: тикеты в личном кабинете, онлайн-чат, телефон.</li><li>Среднее время первого ответа: 10–15 минут.</li><li>Раздел помощи на smartape.ru/help.</li><li>Персональный менеджер обсуждается индивидуально для B2B.</li></ul><h3>Тарифы, ограничения и условия</h3><ul><li>Минимальные тарифы: HDD S1 (2 CPU, 1 GB RAM, 50 GB HDD+SSD) — 345 ₽/мес; NVMe X1 (2 CPU, 1 GB RAM, 10 GB NVMe) — 495 ₽/мес; Turbo R1 AMD Ryzen (2 CPU, 1 GB RAM, 20 GB NVMe) — 645 ₽/мес.</li><li>Топовый VPS NVMe X64: 24 CPU, 64 GB RAM, 640 GB NVMe — 11 870 ₽/мес.</li><li>Скидки за предоплату: 5%, 15%, 30%, 50% за 3, 6, 12, 24 месяца.</li><li>Тестовый период: 10 дней без привязки банковской карты, нужно подтверждение номера телефона.</li><li>Резервное копирование со стороны провайдера не предусмотрено; можно настроить самостоятельно или заказать FTP-хранилище.</li><li>Апгрейд фиксированных тарифов — по запросу в поддержку с перезагрузкой; конфигурируемые тарифы меняются в личном кабинете.</li></ul><figure><img src="https://media.tproger.ru/user-uploads/133946/2026-06-22/cb58575b-0b21-4f8e-9192-2467ea34b98c.webp" alt="Список операционных систем и шаблонов SmartApe" /><figcaption>Список операционных систем и шаблонов SmartApe</figcaption></figure><p>Официальный сайт: <a href="https://smartape.ru/">SmartApe</a></p><h2>4. PSB Hosting — зарубежные локации</h2><p>PSB Hosting ориентирован на международные дата-центры и широкий выбор операционных систем. Подходит проектам, которым важны европейские и американские площадки, безлимитный трафик и подсеть IPv6 /64 на всех тарифах.</p><h3>Кейсы клиентов и кому подойдёт</h3><ul><li>Сайты и веб-приложения, ориентированные на аудиторию в Европе и США.</li><li>VPN-серверы, прокси и сетевые сервисы благодаря безлимитному трафику и IPv6 /64.</li><li>Проекты на Node.js, Django, Docker, WordPress и других стеках.</li><li>Разработчики, которым нужна нестандартная ОС или загрузка собственного ISO.</li></ul><h3>Что можно развернуть</h3><ul><li>Операционные системы: Ubuntu, Debian, CentOS, Windows, Astra Linux, AlmaLinux, Rocky Linux, FreeBSD, Oracle Linux; можно загрузить свою ОС через ISO.</li><li>Предустановленное ПО: Docker, LAMP, Keitaro, FastPanel, Node.js, Portainer, WordPress, Django, Outline, OpenVPN, Wireguard, HestiaCP, VestaCP, Bitrix.</li><li>Полноценная панель управления DNS-записями доменов.</li></ul><h3>Инфраструктура и экосистема</h3><ul><li>Виртуализация KVM, NVMe-диски.</li><li>Дата-центры: euNetworks в Амстердаме, Frankfurt 1 Data Center в Германии, Digita в Хельсинки, Long Island Interconnect в Нью-Йорке.</li><li>Сеть: порт до 10 Гбит/с, безлимитный трафик, подсеть /64 IPv6 на всех тарифах.</li><li>SLA 99.7%; мониторинг состояния сервера встроен в панель.</li><li>Договор на обработку персональных данных; оплата картами РФ, СНГ, ЕС и криптовалютой.</li></ul><h3>Отзывы и репутация</h3><p>Публичные отзывы и агрегированные рейтинги в предоставленных материалах не указаны. Провайдер позиционирует себя через широкий выбор ОС, безлимитный трафик и неограниченное количество резервных копий.</p><h3>Поддержка и каналы связи</h3><ul><li>Каналы: тикеты и Telegram 24/7.</li><li>Время ответа зависит от загрузки; поддержка работает круглосуточно.</li><li>Документация и API на сайте.</li><li>Персональный менеджер доступен для B2B-клиентов.</li></ul><h3>Тарифы, ограничения и условия</h3><ul><li>Популярная конфигурация: 4 vCPU, 8 GB RAM, 100 GB SSD — $25/мес.</li><li>Скидки за предоплату: 5%, 10%, 15% за 3, 6, 12 месяцев.</li><li>Бесплатного тестового периода нет.</li><li>Резервные копии платные, создаются ежедневно; количество не ограничено.</li><li>Апгрейд без потери данных с перезагрузкой сервера.</li><li>Сервер выделяется за 5–10 минут после установки ОС.</li></ul><figure><img src="https://media.tproger.ru/user-uploads/133946/2026-06-22/ecf706ec-fc5e-4552-a4fd-2d7ed2552a56.webp" alt="Список виртуальных машин в панели PSB Hosting" /><figcaption>Список виртуальных машин в панели PSB Hosting</figcaption></figure><figure><img src="https://media.tproger.ru/user-uploads/133946/2026-06-22/42924f0e-4efe-4074-a52f-137c4907797a.webp" alt="Детали виртуальной машины в панели PSB Hosting" /><figcaption>Детали виртуальной машины в панели PSB Hosting</figcaption></figure><figure><img src="https://media.tproger.ru/user-uploads/133946/2026-06-22/44f4ffda-188d-4a54-b51f-ac9fabb45ee7.webp" alt="Выбор операционной системы PSB Hosting" /><figcaption>Выбор операционной системы PSB Hosting</figcaption></figure><p>Официальный сайт: <a href="https://psb.hosting/">PSB Hosting</a></p><h2>5. FirstVDS — бюджетный VPS/VDS для простого старта</h2><p>FirstVDS — российский VPS/VDS-провайдер с готовыми тарифами и быстрым запуском сервера. Он подходит для простых веб-проектов, тестовых окружений и задач, где важны понятная стартовая цена, российские площадки и базовые дополнительные услуги.</p><h3>Кейсы клиентов и кому подойдёт</h3><ul><li>Небольшие сайты, pet-проекты, тестовые стенды и простые backend-сервисы.</li><li>Проекты, где важнее низкая цена входа и быстрый запуск, чем детальный подбор ресурсов под нагрузку.</li><li>Сценарии, где можно начать с готового тарифа и позже мигрировать на более производительную линейку.</li></ul><h3>Что можно развернуть</h3><ul><li>Linux/VDS для сайтов, блогов, небольших баз данных и веб-приложений.</li><li>Windows-серверы: на сайте есть отдельная линейка VDS для Windows Server 2019 и 2022.</li><li>Дополнительные услуги: S3, автоматическое резервное копирование, администрирование, DDoS-защита, мониторинг сайтов.</li></ul><h3>Инфраструктура и экосистема</h3><p>На официальной странице FirstVDS указаны серверы в России, Нидерландах и Казахстане, запуск готового сервера за 2 минуты, отдельные линейки VDS Форсаж, CPU.Турбо, VDS Atlant, Storage и GPU. Это вариант для тех, кто хочет выбрать готовую линейку, а не собирать конфигурацию вручную.</p><figure><img src="https://media.tproger.ru/user-uploads/115582/2026-06-30/b5ae6b6a-ee36-4bcf-adfe-f652b858ef34.webp" alt="Тарифы на готовые серверы FirstVDS" /><figcaption>Тарифы на готовые серверы FirstVDS</figcaption></figure><h3>Тарифы и ограничения</h3><ul><li>Стартовая цена на сайте: VPS/VDS от 249 ₽/мес.</li><li>Плюс: круглосуточный бесплатный телефон 8 800 775-38-37 и большое количество отзывов на сайте.</li><li>Особенность: параметры под конкретный сценарий лучше дополнительно проверять в конфигураторе и на тестовой конфигурации.</li></ul><p>Официальный сайт: <a href="https://firstvds.ru/">FirstVDS</a></p><h2>6. Hetzner Cloud — зарубежное облако для международных проектов</h2><p>Hetzner Cloud — европейский облачный провайдер с API и дата-центрами в Германии, Финляндии, США и Сингапуре. Он подходит для международных проектов, тестовых окружений и команд, которым важны автоматизация, сети, firewalls и понятная облачная модель. Для российских юридических и регуляторных требований условия нужно проверять отдельно.</p><h3>Кейсы клиентов и кому подойдёт</h3><ul><li>Тестовые окружения, личные проекты, международные веб-сервисы и инфраструктура для разработчиков.</li><li>Команды, которым нужны API, CLI, Terraform/Ansible-интеграции, private networks и firewalls.</li><li>Проекты с аудиторией в Европе, США или Азии, где российская юрисдикция и документы не критичны.</li></ul><h3>Что можно развернуть</h3><ul><li>Linux-дистрибутивы: Ubuntu, Debian, Fedora и другие образы.</li><li>One-click apps: Docker, WordPress, Nextcloud, GitLab, Grafana, Jitsi Meet, WireGuard и другие.</li><li>Облачная инфраструктура с networks, firewalls, load balancers, API, CLI и интеграциями для CI/CD.</li></ul><h3>Инфраструктура и экосистема</h3><p>Hetzner описывает shared cloud как вариант для разработки, тестов, личных сайтов, небольших баз данных и веб-серверов со средней нагрузкой. Dedicated cloud рассчитан на бизнес-приложения и устойчивую высокую нагрузку. На сайте также указаны GDPR, ISO/IEC 27001 для дата-центров в Германии и Финляндии, 99,9% uptime и поддержка 24/7 по email.</p><figure><img src="https://media.tproger.ru/user-uploads/115582/2026-06-30/00f6e9b6-01aa-4620-acfd-883382765ea4.webp" alt="Тарифы на серверы Hetzner Cloud" /><figcaption>Тарифы на серверы Hetzner Cloud</figcaption></figure><h3>Тарифы и ограничения</h3><ul><li>Цены и конфигурации зависят от выбранной страны, валюты и типа cloud-сервера; в статье лучше считать их отдельно в калькуляторе Hetzner.</li><li>Плюс: зрелая европейская облачная экосистема и сильная автоматизация.</li><li>Особенность: иностранная юрисдикция и документы отличаются от российских провайдеров, поэтому для проектов с персональными данными и 152-ФЗ условия нужно проверять отдельно.</li></ul><p>Официальный сайт: <a href="https://www.hetzner.com/cloud/">Hetzner Cloud</a></p><h2>Сравнение по ключевым критериям</h2><figure><img src="https://media.tproger.ru/user-uploads/133946/2026-06-30/8c6a63a1-9829-440f-bdd3-d97af4ab404a.webp" alt="Сравнительная таблица шести VPS и VDS провайдеров по цене, конфигурациям, дискам, трафику, тестовому периоду и географии" /><figcaption>Сравнительная таблица шести VPS/VDS-провайдеров из подборки.</figcaption></figure><p>Минимальный вход: у Макхоста самый дешёвый стартовый тариф — 143 ₽/мес, но с ограниченным трафиком и SSD. SmartApe предлагает старт от 345 ₽/мес с двумя ядрами и HDD+SSD-кэшем; FirstVDS начинается от 249 ₽/мес и подходит как бюджетная точка входа. UFO.Hosting, PSB Hosting и Hetzner Cloud стоит считать по конфигурации и требованиям к географии.</p><p>Популярные конфигурации: Макхост и UFO.Hosting выделяют тарифы с 2 GB RAM для магазинов и CMS; у SmartApe стартовый NVMe-тариф даёт 2 CPU и 1 GB RAM; у PSB Hosting популярный тариф — 4 CPU и 8 GB RAM за $25/мес. FirstVDS удобен для простых стартовых задач, а Hetzner Cloud — для международных проектов и команд, которым нужны API, сети и автоматизация.</p><p>Диски и трафик: у каждого провайдера разные акценты по дискам, портам, бэкапам и ограничениям. FirstVDS даёт массовую VPS/VDS-линейку и дополнительные сервисы вроде S3, бэкапов и мониторинга. Hetzner Cloud силён по API, сетям, firewalls и included traffic; его условия нужно пересчитывать отдельно под регион и валюту.</p><p>Тестовый период: SmartApe даёт 10 дней без карты, Макхост и UFO.Hosting — 3 дня с условиями, PSB Hosting — не предусмотрен. Для FirstVDS и Hetzner Cloud тестовый период и условия пробного запуска лучше проверять на момент заказа.</p><p>География и документы: Макхост, UFO.Hosting и SmartApe подтверждают работу по 152-ФЗ и наличие российских площадок; PSB Hosting работает только из зарубежных дата-центров и предлагает оплату криптовалютой. FirstVDS имеет российские и зарубежные площадки. Hetzner Cloud работает в иностранной юрисдикции, поэтому для проектов с персональными данными россиян нужно заранее проверить документы, обработку данных и требования 152-ФЗ.</p><h2>Выводы</h2><p>Выбор VPS начинается с честной оценки нагрузки: 1 CPU и 1 GB RAM хватит для статического лендинга или простого бота, но для CMS с плагинами, интернет-магазина или 1С стоит закладывать минимум 2 CPU и 4 GB RAM, а лучше — тестировать реальную нагрузку на выбранной панели.</p><p>Если важен минимальный бюджет и российские документы — смотрите на Макхост. Если нужна широкая линейка от VPS до выделенных серверов в одном кабинете — на UFO.Hosting. Для гибкого подбора ресурсов под растущую нагрузку подойдёт SmartApe. Если проект ориентирован на зарубежную аудиторию и нужен безлимитный трафик — PSB Hosting.</p><p>FirstVDS подойдёт для недорогих и простых запусков с российскими и зарубежными площадками. Hetzner Cloud — для международной инфраструктуры, где важны API, сети и дата-центры за пределами России; юридические и регуляторные требования нужно проверять отдельно.</p><p>Перед покупкой всегда используйте тестовый период или минимальную конфигурацию: реальная скорость диска, отклик панели и качество поддержки часто важнее цифр в прайсе.</p>]]></content:encoded>
    </item>
    <item>
      <title>VPS vs VDS vs виртуальный хостинг: что выбрать в 2026 году</title>
      <link>https://tproger.ru/digest/vps-vs-vds-vs-virtualnyj-hosting-chto-vybrat-v-2026-godu</link>
      <comments>https://tproger.ru/digest/vps-vs-vds-vs-virtualnyj-hosting-chto-vybrat-v-2026-godu?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/digest/vps-vs-vds-vs-virtualnyj-hosting-chto-vybrat-v-2026-godu</guid>
      <description><![CDATA[<p>Сравнили VPS, VDS и виртуальный хостинг: чем отличаются, кому что подходит и сколько стоит. Подборка провайдеров с ценами и условиями.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/digest/vps-vs-vds-vs-virtualnyj-hosting-chto-vybrat-v-2026-godu">VPS vs VDS vs виртуальный хостинг: что выбрать в 2026 году</a>»</p>]]></description>
      <category><![CDATA[Интернет]]></category>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[Безопасность]]></category>
      <category><![CDATA[DevOps]]></category>
      <category><![CDATA[Сервер]]></category>
      <category><![CDATA[VPS]]></category>
      <category><![CDATA[Инфраструктура]]></category>
      <category><![CDATA[Подборки]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 30 Jun 2026 04:40:29 GMT</pubDate>
      <content:encoded><![CDATA[<p>Виртуальный хостинг, VPS и VDS часто выбирают по цене, но потом выясняется, что проекту не хватает ресурсов, гибкости или поддержки. Разобрались, чем эти три формата отличаются на практике, и собрали шесть провайдеров с разным подходом: от бюджетного старта до зарубежных локаций.</p><ul><li>Виртуальный хостинг — сайты соседствуют на одном сервере, управляет провайдер. Дешёвый старт, но ограниченная конфигурация.</li><li>VPS и VDS — почти всегда синонимы: изолированные виртуальные серверы с root-доступом и гарантированными ресурсами.</li><li>Выделенный сервер — отдельное железо, максимум контроля и цены, требует администрирования.</li><li>В подборке: Интернет Хостинг Центр, UFO.Hosting, SpaceWeb, PSB Hosting, AdminVPS и FirstVDS.</li></ul><h2>Как мы выбирали участников</h2><p>Отбирали провайдеров, которые явно работают с тремя категориями или хотя бы с двумя и могут показать читателю реальную разницу. Важны были прозрачные цены и лимиты, география дата-центров, скорость и каналы поддержки, тестовые периоды и документы для юрлиц. Факты сверяли по официальным страницам, документации, тарифам и публичным данным провайдеров.</p><h2>1. Интернет Хостинг Центр — гибкие конфигурации</h2><p>Российский провайдер, у которого VPS и VDS — это одна услуга. Можно выбрать виртуализацию под задачу (KVM или Virtuozzo), собрать конфигурацию от минимальной до высоконагруженной и расти внутри одной платформы до выделенного сервера.</p><h3>Кейсы клиентов и кому подойдёт</h3><ul><li>Небольшой сайт компании на WordPress с 300–500 посетителей в сутки спокойно живёт на виртуальном хостинге; при росте трафика переходят на VPS.</li><li>Интернет-магазин на 1С-Битрикс с 500–1000 пользователями в день переносят на VPS/VDS, когда подключают CRM и платёжные системы.</li><li>Разработчик с несколькими проектами берёт VPS/VDS под API, базу данных и тестовые окружения — виртуальный хостинг здесь слишком ограничен.</li></ul><h3>Что можно развернуть</h3><p>На виртуальном хостинге — сайты на PHP 5.2–8.2 с MySQL, панели IHC, cPanel или ISPmanager. На VPS/VDS — любые Linux-дистрибутивы, Windows, WireGuard, MikroTik Router, панели ispmanager/FastPanel, VPN-шаблоны, CMS вроде 1С-Битрикс.</p><h3>Инфраструктура и экосистема</h3><p>Дата-центры Tier III в Москве (DataPRO и IXcellerate Moscow One) и в Амстердаме. Виртуализация — KVM или Virtuozzo. Защита от DDoS входит во все тарифы, IPv6-сети /64 доступны за доплату. Есть партнёрская программа с выплатами до 50% от привлечённых оплат.</p><h3>Отзывы и репутация</h3><p>На сайте публикуются отзывы с внешних площадок: средняя оценка 4,8 по 20 оценкам. Клиенты отмечают стабильную работу и скорость техподдержки.</p><h3>Поддержка и каналы связи</h3><p>Тикеты через личный кабинет, онлайн-чат на сайте, Telegram @IHC_Support_Bot, телефоны в Москве, Санкт-Петербурге и бесплатный номер для регионов. Первый ответ обычно приходит за 10–30 минут в рабочее время. Для корпоративных клиентов доступно сопровождение через отдел продаж и аккаунт-менеджеров.</p><h3>Тарифы, ограничения и условия</h3><ul><li>Виртуальный хостинг: тариф IHC-2 — от 123 ₽/мес при оплате за год или 147 ₽/мес помесячно; 2 сайта, 2 ГБ SSD, 150 МБ под БД, домен .RU в подарок при оплате за 2 года.</li><li>VPS/VDS: минимальная конфигурация ssdVPS:1 — 1 ГБ RAM, 20 ГБ SSD, 1 CPU, безлимитный трафик со снижением скорости после 20 ТБ — от 317 ₽/мес за год или 380 ₽/мес помесячно.</li><li>Типовая конфигурация для небольшого проекта — 2 ГБ RAM, 1–2 CPU, 30–45 ГБ NVMe — от 609 ₽/мес за год или 700 ₽/мес помесячно.</li><li>Тестовый период: 7 дней на виртуальном хостинге, 3 дня на VPS/VDS; для активации нужно пополнить баланс на 100 ₽, которые можно вернуть или потратить.</li><li>Бэкапы: место под резервные копии — от 52,5 ₽/мес за 5 ГБ; снапшоты зависят от платформы.</li><li>Работа по 152-ФЗ, есть реестр хостинг-провайдеров; закрывающие документы для юрлиц доступны.</li></ul><figure><img src="https://media.tproger.ru/user-uploads/133946/2026-06-22/0af1599e-dc11-44e3-8794-9213246cf720.webp" alt="Тарифы виртуального хостинга ИХЦ" /><figcaption>Тарифы виртуального хостинга Интернет Хостинг Центр.</figcaption></figure><p>Официальный сайт: <a href="https://www.ihc.ru/vps.html?utm_source=tproger&amp;utm_medium=article&amp;utm_campaign=vps_vs_vds_vs_virt_hosting">ihc.ru</a></p><h2>2. UFO.Hosting — космическая экосистема</h2><p>Провайдер, который объединяет VPS/VDS, выделенные серверы, защиту сайтов, DNS-хостинг, аренду IP, лицензии ISPmanager и домены в одном личном кабинете. Для UFO.Hosting VPS и VDS — два названия одной услуги; разница только в терминологии.</p><h3>Кейсы клиентов и кому подойдёт</h3><ul><li>Интернет-магазин с трафиком 10–50 тыс. посетителей в день — VPS даёт стабильность при пиковых нагрузках и возможность настроить SSL, СУБД и кэширование.</li><li>Веб-студии и агентства выбирают VPS/VDS ради изоляции ресурсов: проблемы одного клиента не влияют на соседние проекты.</li><li>CRM-системы, лендинги с формами заявок и приложения с умеренной нагрузкой — удобно масштабировать RAM и CPU без переплаты за железо.</li><li>Выделенные серверы берут под крупный e-commerce с интенсивным чтением/записью, проекты с жёсткими требованиями к безопасности и задачи с огромными объёмами дисков.</li></ul><h3>Что можно развернуть</h3><p>VPS/VDS на Linux и Windows, панели Vesta, Hestia, CyberPanel, Virtualmin, ISPmanager. Можно поднять веб-серверы, базы данных, VPN, контейнеры, игровые серверы, DNS-зоны, а рядом заказать защиту сайта от DDoS L7 и внешнее FTP-хранилище.</p><h3>Инфраструктура и экосистема</h3><p>Серверы стоят в дата-центре IXcellerate в Москве, соответствующем Tier III. Сеть ноды VPS/VDS — 10 Гбит/с, распределяется между серверами по тарифу. Доступны обычные конфигурации на Intel Xeon, Hi-CPU на Ryzen и Storage-линейка с расширенным хранилищем.</p><h3>Отзывы и репутация</h3><p>Публичных агрегированных рейтингов в предоставленных источниках не указано. Провайдер позиционируется как экосистемный игрок с акцентом на удобное управление всеми услугами из одного кабинета.</p><h3>Поддержка и каналы связи</h3><p>Техподдержка 24/7 через онлайн-чат на сайте и тикет-систему в биллинге. Телефонная поддержка работает в будни с 9:00 до 18:00; Telegram не используется. Фактическое время ответа — не более 30 минут в любое время суток. Есть база знаний и блог.</p><h3>Тарифы, ограничения и условия</h3><ul><li>Минимальная конфигурация VPS/VDS Naos (Intel Xeon E5-2697A v4) — 1 vCore, 1 ГБ RAM, 25 ГБ NVMe — 605,85 ₽/мес.</li><li>Типовая конфигурация Brachium (Intel Xeon E5-2697A v4) — 2 vCore, 4 ГБ RAM, 60 ГБ NVMe — 1025,85 ₽/мес.</li><li>Скидки за предоплату: 3 месяца — 5%, 6 месяцев — 10%, 12 месяцев — 15%.</li><li>Тестовый период — до 3 дней на любой тариф VPS; требуется верификация аккаунта (email, телефон, KYC). На выделенные серверы — до 3 дней по договорённости.</li><li>Трафик безлимитный с порогом 32 ТБ/мес; после превышения скорость ограничивается 100 Мбит/с.</li><li>Root-доступ полный. На тарифах Naos и Haedus выбор ОС ограничен списком провайдера; на остальных можно ставить любую ОС.</li><li>Бэкапы платные: ежедневные — 525 ₽/мес, еженедельные — 262,5 ₽/мес; снапшотов нет, есть услуга бэкапов.</li><li>Работа по 152-ФЗ, сертификатов ФСТЭК нет; есть реестр хостинг-провайдеров. Для юрлиц — договор и ЭДО, постоплата недоступна.</li></ul><figure><img src="https://media.tproger.ru/user-uploads/133946/2026-06-22/294b50fd-7642-4b85-a416-e7a021dee5ba.webp" alt="Тарифы VPS/VDS UFO.Hosting" /><figcaption>Тарифы VPS/VDS UFO.Hosting в российском дата-центре.</figcaption></figure><p>Официальный сайт: <a href="https://ufo.hosting/?from=1982260">ufo.hosting</a></p><h2>3. SpaceWeb — посуточная тарификация</h2><p>Один из старейших российских хостеров, у которого можно начать с виртуального хостинга, перейти на VPS/VDS с посуточной оплатой и докупать IP, SSL и защиту от DDoS. Удобен тем, кто хочет платить только за фактическое потребление ресурсов VPS.</p><h3>Кейсы клиентов и кому подойдёт</h3><ul><li>Лендинг, блог или сайт-визитка с небольшой посещаемостью — хватит виртуального хостинга с автоустановкой CMS.</li><li>Интернет-магазин и корпоративный сайт на 1С-Битрикс — тарифы повышенной мощности с выделенными CPU и приоритетной поддержкой.</li><li>Проект с непредсказуемой нагрузкой — VPS/VDS с посуточной тарификацией и изменением ресурсов «на лету».</li></ul><h3>Что можно развернуть</h3><p>На хостинге — WordPress, Joomla, Drupal, 1С-Битрикс, OpenCart, MODx, Laravel, Django и другие CMS и фреймворки. Поддерживаются PHP 5.x–8.4, MySQL 8/5.7, PostgreSQL 14.4, Perl, Python, Ruby. На VPS/VDS — Ubuntu, Debian, CentOS, AlmaLinux, Rocky Linux, панели Hestia, FASTPANEL, ISPmanager, Docker.</p><h3>Инфраструктура и экосистема</h3><p>Дата-центры Tier III в Санкт-Петербурге, Москве и Амстердаме. Собственная SPA-панель управления, VNC-консоль, DNS-редактор, статистика, логи, бэкапы и снапшоты. На всех сайтах включена изоляция для защиты от вредоносного ПО и защита от DDoS L3-4; защиту L7 можно докупить от 290 ₽/мес.</p><h3>Отзывы и репутация</h3><p>На сайте публикуются отзывы клиентов: отмечают стабильную работу, быструю техподдержку и удобную панель. Некоторые пользователи работают с провайдером с 2016 года.</p><h3>Поддержка и каналы связи</h3><p>Email, телефон, онлайн-чат и ВКонтакте. Среднее время ответа: 1–2 минуты по телефону, в чате и ВКонтакте; до 60 минут по почте. Поддержка помогает с переносом проектов, диагностикой и администрированием серверов с ISPmanager.</p><h3>Тарифы, ограничения и условия</h3><ul><li>Виртуальный хостинг: тариф «Старт» — 1 ГБ NVMe SSD, 1 база данных, ∞ FTP и почтовых ящиков, 120 CP — 149 ₽/мес; «Взлёт» — 311 ₽/мес, «Ракета» — 530 ₽/мес, «Космос» — 755 ₽/мес.</li><li>VPS/VDS: посуточная тарификация, параметры CPU/RAM/диска меняются «на лету»; конкретную стоимость конфигурации проверяйте в калькуляторе на сайте.</li><li>Тестовый период: 14 дней на виртуальном хостинге и на VPS/VDS.</li><li>Ежедневное резервное копирование включено на хостинге; резервные копии VPS — от 45 ₽/мес за 3 копии.</li><li>Дополнительный IP — 130 ₽/мес, SSL GlobalSign — от 1 900 ₽/год, домен .RU — 179 ₽/год.</li><li>Работа с юрлицами через договор оферты, безналичные платежи и ЭДО.</li></ul><p>Официальный сайт: <a href="https://spaceweb.ru/vds/">spaceweb.ru</a></p><figure><img src="https://media.tproger.ru/user-uploads/133946/2026-06-22/09d49f48-c058-403a-87e9-3e828ef338e2.webp" alt="Тарифы SpaceWeb для хостинга и VPS" /><figcaption>Сводка тарифов и условий SpaceWeb по данным карточки провайдера.</figcaption></figure><h2>4. PSB Hosting — зарубежные локации</h2><p>Провайдер с фокусом на VPS в Европе и США: Amsterdam, Frankfurt, Helsinki, New York. Не предлагает виртуальный хостинг в привычном понимании, зато даёт полный root, /64 IPv6 на всех тарифах, неограниченные резервные копии и оплату криптовалютой.</p><h3>Кейсы клиентов и кому подойдёт</h3><ul><li>Небольшие интернет-магазины на WordPress или 1С-Битрикс, лендинги, корпоративные сайты и блоги.</li><li>Проекты с Telegram-ботами, API-сервисами и другой автоматизацией.</li><li>Команды, которым важны зарубежные локации и гибкие способы оплаты, включая криптовалюту.</li></ul><h3>Что можно развернуть</h3><p>VPS под Linux, Windows или FreeBSD с предустановленным ПО: Bitrix, Django, Docker, FastPanel, HestiaCP, Keitaro, LAMP, Node, OpenVPN, Outline, Portainer, VestaCP, WireGuard, WordPress. Подходит под сайты, backend-приложения, VPN, корпоративные системы, базы данных и тестовые среды.</p><h3>Инфраструктура и экосистема</h3><p>Серверы размещены в дата-центрах euNetworks (Amsterdam), Frankfurt 1 Data Center, Digita (Helsinki) и Long Island Interconnect (New York). Оборудование — AMD и Intel с DDR5 и NVMe, RAID 10. Безлимитный трафик, порт ноды 10 Гбит/с, на VPS выделяется 300 Мбит/с. Полноценная панель управления DNS-записями доменов.</p><h3>Отзывы и репутация</h3><p>На сайте указаны рейтинги на независимых площадках: OtzovikMarketing.ru — 4,8, In-Scale.ru — 5,0, Aff1.ru — 5,0, 101Poisk.ru — 4,89. Провайдер позиционируется как решение для бизнеса, разработки и высоконагруженных проектов.</p><h3>Поддержка и каналы связи</h3><p>Поддержка работает круглосуточно через тикеты и Telegram; время ответа зависит от загрузки. Есть документация и API. Для B2B-клиентов предусмотрен менеджер.</p><h3>Тарифы, ограничения и условия</h3><ul><li>VPS: минимальный тариф на странице VPS — от 8 USD; есть High-CPU VPS на AMD Ryzen 7950X.</li><li>Почасовая оплата доступна; скидки за предоплату: 3 месяца — 5%, 6 месяцев — 10%, 12 месяцев — 15%.</li><li>Бесплатного тестового периода нет.</li><li>Безлимитный трафик, порт VPS — 300 Мбит/с; можно установить любую ОС; полный root-доступ.</li><li>Бэкапы платные, снапшоты есть.</li><li>IPv6-подсеть /64 на всех тарифах, неограниченное количество резервных копий.</li><li>Не работает по 152-ФЗ, сертификатов ФСТЭК нет, в реестре отечественного ПО нет. Оплата картами РФ/СНГ/ЕС и криптовалютой.</li></ul><figure><img src="https://media.tproger.ru/user-uploads/133946/2026-06-22/df620a3c-35c1-452b-a81f-f7ffc156cfbc.webp" alt="Тарифы PSB Hosting для VPS" /><figcaption>Сводка тарифов и условий PSB Hosting по данным карточки провайдера.</figcaption></figure><p>Официальный сайт: <a href="https://psb.hosting/">psb.hosting</a></p><h2>5. AdminVPS — VPS и хостинг в одном кабинете</h2><p>Провайдер с виртуальным хостингом, VPS/VDS, выделенными серверами, доменами, SSL и дополнительными сервисами в одном аккаунте. В подборке он закрывает сценарий, когда проекту нужен обычный хостинг для сайта и отдельный VPS под приложение, базу данных или тестовую среду.</p><h3>Кейсы клиентов и кому подойдёт</h3><ul><li>Сайты на CMS и небольшие магазины, которые начинают с виртуального хостинга и постепенно переходят на VPS.</li><li>Команды, которым нужны домены, SSL, хостинг и серверы в одном личном кабинете.</li><li>Проекты, где важна российская площадка и возможность подобрать конфигурацию VPS под нагрузку.</li></ul><h3>Что можно развернуть</h3><p>На виртуальном хостинге — сайты на популярных CMS и почту на домене. На VPS/VDS — Linux-серверы под сайты, backend, базы данных, тестовые окружения и сервисы с root-доступом. В экосистеме также есть домены, SSL-сертификаты, резервное хранилище, объектное хранилище и защита от DDoS.</p><h3>Инфраструктура и экосистема</h3><p>На странице VPS в России указано размещение в Москве, процессоры Intel Xeon Gold и AMD EPYC, NVMe-диски, тарифы с портом от 100 Мбит/с до 1 Гбит/с и включённым месячным трафиком. В меню также есть VPS в Германии, Нидерландах, Польше, Испании, Беларуси, Казахстане, Финляндии, Великобритании и Франции.</p><h3>Отзывы и репутация</h3><p>На странице VPS указана агрегированная оценка 4,9 и несколько сотен отзывов. Провайдер позиционируется как универсальная площадка для сайтов, серверов и сопутствующих услуг.</p><h3>Поддержка и каналы связи</h3><p>Поддержка работает круглосуточно через тикет-систему в личном кабинете. Отдел продаж доступен по телефону и через запрос на сайте.</p><h3>Тарифы, ограничения и условия</h3><ul><li>VPS/VDS в России: конфигуратор стартует от 500 ₽/мес; в готовых тарифах есть Lite с 1 CPU, 1 ГБ RAM и 15 ГБ NVMe.</li><li>Виртуальный хостинг и CMS-хостинг доступны отдельными услугами.</li><li>В тарифах VPS указаны месячные пакеты трафика; на младшем Lite — 1 ТБ и порт 100 Мбит/с.</li><li>Бэкапы зависят от тарифа: для части тарифов платно, для части включены.</li><li>Есть скидки за предоплату на 6, 12 и 24 месяца.</li><li>На странице указано соответствие требованиям РФ по 152-ФЗ.</li></ul><p>Официальный сайт: <a href="https://adminvps.ru/vps/vps_russia.php">adminvps.ru</a></p><h2>6. FirstVDS — готовые VDS/VPS-конфигурации</h2><p>Провайдер с фокусом на виртуальные серверы: готовые VDS/VPS, отдельные линейки для высоких CPU-частот, storage-сценариев, GPU и Windows. В подборке это вариант для тех, кто выбирает именно VPS/VDS и сопутствующие услуги, а не классический shared-хостинг.</p><h3>Кейсы клиентов и кому подойдёт</h3><ul><li>Небольшие сайты и сервисы, которым нужен отдельный сервер вместо виртуального хостинга.</li><li>Разработчики, которым важны готовые Linux-образы, SSH-доступ и быстрый запуск сервера.</li><li>Проекты, где позже могут понадобиться Windows-серверы, storage-линейка или зарубежная локация.</li></ul><h3>Что можно развернуть</h3><p>На VPS/VDS доступны Linux-дистрибутивы Debian, Ubuntu, FreeBSD, CentOS и Alma, платная Windows, панели ispmanager и дополнительные IP. В линейке есть VDS для Windows, VDS в Нидерландах и Алматы, storage-серверы, GPU-серверы и объектное хранилище S3.</p><h3>Инфраструктура и экосистема</h3><p>На сайте указаны дата-центры в России, Нидерландах и Казахстане. Для VDS в Москве доступны каналы до 100 Мбит/с с безлимитным трафиком или до 1 Гбит/с с пакетом 32 ТБ в месяц; для Амстердама и Казахстана условия отличаются.</p><h3>Отзывы и репутация</h3><p>FirstVDS работает как отдельный бренд виртуальных серверов и указывает награды отраслевой премии ЦОДы.рф. На сайте также опубликованы пользовательские отзывы и раздел базы знаний.</p><h3>Поддержка и каналы связи</h3><p>На сайте указан бесплатный круглосуточный телефон 8 800 775-38-37, база знаний и служба поддержки. Для серверов доступны дополнительные услуги администрирования и технического сопровождения.</p><h3>Тарифы, ограничения и условия</h3><ul><li>Готовые VDS/VPS — от 249 ₽/мес; запуск сервера заявлен за несколько минут.</li><li>Бесплатно с сервером: 1 выделенный IP-адрес, ispmanager 6 lite на 1 месяц, установка ОС на выбор и полный SSH-доступ.</li><li>Тестовый период предоставляется по согласованию.</li><li>Windows тарифицируется отдельно: на странице указано 680 ₽/мес за 1 ядро, недоступно для VDS в Амстердаме и Алматы.</li><li>Для VDS в Москве возможен канал до 100 Мбит/с с безлимитным трафиком или до 1 Гбит/с с лимитом 32 ТБ/мес.</li><li>Дополнительные услуги: бэкап, мониторинг, BitNinja, DDoS-защита, домены, SSL и DNS-хостинг.</li></ul><p>Официальный сайт: <a href="https://firstvds.ru/products/vds_vps_hosting">firstvds.ru</a></p><h2>Сравнение по ключевым критериям</h2><figure><img src="https://media.tproger.ru/user-uploads/133946/2026-06-30/6b343a98-7cea-4190-9154-005b10c5cab8.webp" alt="Сравнительная таблица шести провайдеров VPS, VDS и виртуального хостинга" /><figcaption>Сравнительная таблица сервисов из подборки.</figcaption></figure><p>Ниже — сводка по ценам, лимитам и условиям, которые чаще всего влияют на выбор.</p><ul><li>Минимальный виртуальный хостинг: ИХЦ — от 123 ₽/мес (при оплате за год), SpaceWeb — от 149 ₽/мес; AdminVPS предлагает виртуальный/CMS-хостинг отдельной линейкой; UFO.Hosting, PSB Hosting и FirstVDS в подборке рассматриваются прежде всего как VPS/VDS-провайдеры.</li><li>Минимальный VPS/VDS: ИХЦ — от 317 ₽/мес (за год), UFO.Hosting — 605,85 ₽/мес, SpaceWeb — цена в калькуляторе с посуточной тарификацией, PSB Hosting — от 8 USD, AdminVPS — от 500 ₽/мес в конфигураторе, FirstVDS — от 249 ₽/мес.</li><li>Виртуализация: ИХЦ — KVM/Virtuozzo на выбор; UFO.Hosting — Intel Xeon и Ryzen линейки; SpaceWeb — собственная облачная платформа; PSB Hosting — KVM; AdminVPS и FirstVDS предлагают готовые VPS/VDS-линейки с Linux-образами.</li><li>Трафик: ИХЦ и PSB Hosting — безлимитный (у ИХЦ снижение скорости после 20 ТБ); UFO.Hosting — безлимитный с порогом 32 ТБ; SpaceWeb — параметры уточняйте в конфигураторе; AdminVPS указывает месячные пакеты трафика; FirstVDS разделяет безлимитный канал 100 Мбит/с и пакеты трафика на более быстрых каналах.</li><li>Root и ОС: полный root у всех шести; ИХЦ и PSB Hosting позволяют загружать собственные ISO; UFO.Hosting ограничивает список ОС на младших тарифах; у FirstVDS Windows и панели управления идут как платные дополнения.</li><li>Бэкапы: SpaceWeb включает ежедневные бэкапы на хостинге; ИХЦ и PSB Hosting — платно; UFO.Hosting — платная услуга резервного копирования; AdminVPS и FirstVDS предлагают бэкапы как тарифную или дополнительную опцию.</li><li>Тестовый период: SpaceWeb — 14 дней на хостинге и VPS; ИХЦ — 7 дней хостинг / 3 дня VPS; UFO.Hosting — до 3 дней VPS; FirstVDS — по согласованию; PSB Hosting — нет; условия AdminVPS зависят от акции и выбранной услуги.</li><li>Дата-центры: ИХЦ — Москва + Амстердам; UFO.Hosting — Москва; SpaceWeb — Москва, Санкт-Петербург, Амстердам; PSB Hosting — Amsterdam, Frankfurt, Helsinki, New York; AdminVPS предлагает VPS в разных странах; FirstVDS указывает Россию, Нидерланды и Казахстан.</li><li>Юридика: ИХЦ, UFO.Hosting, SpaceWeb и AdminVPS работают с российской юридической рамкой; PSB Hosting ориентирован на зарубежные локации; для FirstVDS условия документов и лицензий зависят от выбранных услуг.</li></ul><h2>Вывод</h2><p>Виртуальный хостинг остаётся самым простым стартом для сайта-визитки, блога или небольшого магазина: не нужно администрировать сервер, всё настроено провайдером. VPS/VDS стоит брать, когда проекту нужна изоляция, root-доступ, нестандартное ПО или рост нагрузки. Выделенный сервер — следующий шаг, когда виртуализация уже не тянет задачу.</p><p>Если приоритет — российская юридика и плавный рост от хостинга до железа, смотрите на <b>Интернет Хостинг Центр</b> или <b>SpaceWeb</b>. Если важна экосистема из доменов, защиты и серверов в одном кабинете — <b>UFO.Hosting</b> или <b>AdminVPS</b>. Если нужен недорогой вход именно в VPS/VDS — можно сравнить <b>FirstVDS</b> с базовыми тарифами других участников. Если нужны зарубежные локации и гибкая оплата — <b>PSB Hosting</b>. Перед покупкой всегда берите тестовый период и проверяйте реальную производительность под вашей нагрузкой.</p>]]></content:encoded>
    </item>
    <item>
      <title>Как я ужал NixOS ISO с 458 МБ до 183 МБ</title>
      <link>https://tproger.ru/articles/kak-ya-uzhal-nixos-iso-s-458-mb-do-183-mb</link>
      <comments>https://tproger.ru/articles/kak-ya-uzhal-nixos-iso-s-458-mb-do-183-mb?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/kak-ya-uzhal-nixos-iso-s-458-mb-do-183-mb</guid>
      <description><![CDATA[<p>Разбираем эксперимент: отключаем Nix, SSH, GRUB, модули ядра и Perl-активацию. Уменьшаем ISO NixOS почти в 2,5 раза и объясняем, почему это не для продакшена.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/kak-ya-uzhal-nixos-iso-s-458-mb-do-183-mb">Как я ужал NixOS ISO с 458 МБ до 183 МБ</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Open Source]]></category>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Оптимизация]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[DevOps]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 29 Jun 2026 04:39:16 GMT</pubDate>
      <content:encoded><![CDATA[<p>Базовый установочный ISO <b>NixOS</b> весит <b>458 МБ</b> — и в нём даже нет vim. Для сравнения, Alpine Linux укладывается примерно в <b>66 МБ</b>. Разбираем, как автор блога natkr.com уменьшил NixOS почти в 2,5 раза, и где здесь подвох.</p><h2>Что такое NixOS</h2><p><b>NixOS</b> — это дистрибутив Linux, в котором всё системное окружение описывается декларативно на языке <b>Nix</b> и воспроизводится из одного конфигурационного файла. Каждая сборка помещает зависимости в /nix/store, что даёт атомарные откаты и воспроизводимость, но при этом легко разрастается размер.</p><p>Одна из удобных фич — команда nixos-rebuild build-vm: она превращает конфигурацию в виртуальную машину. Но иногда нужен не «тонкий» образ, привязанный к хосту, а самодостаточный ISO, который можно записать на флешку или загрузить в облаке.</p><ul><li>Базовый NixOS ISO занимает 458 МБ: 416 МБ — squashfs с пользовательским окружением, 26 МБ — initrd, 13 МБ — ядро.</li><li>Главные «тяжеловесы» внутри образа: модули ядра (144 МБ), Python 3 (128 МБ), systemd (60 МБ), Perl (56 МБ), GRUB (около 62 МБ).</li><li>Отключение Nix, документации, SSH, firewall и лишних зависимостей сокращает ISO до 197 МБ.</li><li>Замена Perl-активации на экспериментальные system.etc.overlay и services.userborn даёт финальный размер около 183 МБ.</li><li>Это игрушечный эксперимент: для десктопа и сервера такие отсечения небезопасны, но полезны как источник идей.</li></ul><h2>От VM к ISO за несколько строк</h2><p>Минимальная виртуальная машина на NixOS собирается из файла примерно такого вида:</p><p>Запуск: $(nix-build basic-vm.nix --attr vm --no-out-link)/bin/run-nixos-vm. При этом /nix/store монтируется с хоста, поэтому VM «тонкая». Для независимого ISO импортируем модуль iso-image.nix и собираем атрибут isoImage:</p><p>ISO собирается, загружается в QEMU, но размер сразу бросается в глаза.</p><h2>458 МБ — из чего они сложились</h2><p>Автор примонтировал полученный ISO и посмотрел распределение места. Вот ключевые цифры:</p><ul><li><b>416 МБ</b> — сжатый nix-store.squashfs с пользовательским окружением.</li><li><b>26 МБ</b> — начальная загрузочная среда initrd.</li><li><b>13 МБ</b> — ядро Linux.</li><li><b>3 МБ</b> — загрузчик isolinux.</li></ul><p>При распаковке squashfs картина ещё интереснее:</p><ul><li><b>144 МБ</b> — модули ядра (linux-6.18.35-modules).</li><li><b>128 МБ</b> — Python 3.13.</li><li><b>60 МБ</b> — systemd.</li><li><b>56 МБ</b> — Perl.</li><li><b>~62 МБ</b> суммарно — две копии GRUB (UEFI + BIOS).</li></ul><p>Поскольку ISO собирается локально, все пакеты из него есть и в хостовом /nix/store. Это позволяет использовать nix why-depends, чтобы найти, кто тащит каждую зависимость.</p><h2>Отключаем Nix, документацию и лишние сервисы</h2><p>Первый очевидный шаг — отказаться от демона Nix внутри ISO, ведь мы строим автономный образ, а не полноценную NixOS для работы с пакетами. Достаточно двух опций:</p><p>Результат: <b>384 МБ</b>. Экономия скромная, потому что часть зависимостей Nix всё ещё тянется через сервис register-nix-paths. Он регистрирует содержимое хранилища ISO при загрузке — но Nix-то мы уже убрали. Отключаем и его:</p><p>Теперь ISO уменьшился до <b>360 МБ</b>, а зависимость от Boost исчезла полностью.</p><h2>SSH: модуль без выключателя</h2><p>Следующий кандидат на удаление — OpenSSH-клиент. Проблема в том, что модуль programs/ssh.nix добавляет его в environment.corePackages, а отдельного переключателя programs.ssh.enable нет.</p><p>Попытка полностью исключить модуль через disabledModules ломает другие модули, например Plasma 6, которые ожидают существования опций programs.ssh. Выход — подменить опцию «пустышкой», не затрагивающей реальную конфигурацию:</p><p>Параллельно автор убрал firewall, documentation.man.enable и принудительно очистил environment.defaultPackages.</p><h2>GRUB: зачем две копии загрузчика</h2><p>ISO-пресет NixOS включает сразу и UEFI-, и BIOS-версии GRUB — отсюда около 62 МБ. Чёткого флага для отключения одной из них нет, поэтому автор пошёл грубым путём: сбросил system.extraDependencies и environment.systemPackages, оставив только environment.corePackages, чтобы shell хотя бы стартовал.</p><h2>Ядерные модули: четверть образа</h2><p>Модули ядра весили <b>144 МБ</b> — больше, чем весь Alpine ISO. NixOS не предоставляет удобного способа ограничить их набор для runtime, поэтому автор просто удалил папку модулей из системы после сборки:</p><p>Это полностью отключает динамическую загрузку модулей. Если что-то нужно — оно должно оказаться в boot.initrd.kernelModules или availableKernelModules. После этого образ уменьшился до <b>197 МБ</b>.</p><h2>Perl: заменяем активацию системы</h2><p>Perl в образе нужен только для скриптов активации: настройки /etc и создания пользователей. В nixpkgs уже есть экспериментальные замены — system.etc.overlay и нативный менеджер пользователей userborn.</p><p>Оба механизма помечены как экспериментальные, но в контексте «самодельного минимального ISO» это уже не самая безумная идея. Финальный размер: <b>183 МБ</b>.</p><h2>Что получилось и стоит ли повторять</h2><p>За несколько итераций образ сократился с <b>458 МБ</b> до <b>183 МБ</b> — почти в 2,5 раза. При этом система всё ещё загружается, автор смог залогиниться под root, правда разрешение экрана перестало переключаться.</p><p><b>Важно:</b> конфигурация выше — это не рецепт для продакшена. Отсутствие Nix, SSH, модулей ядра и Perl-активации ломает массу сценариев. Результат интересен скорее как демонстрация границ NixOS, чем как готовый шаблон.</p><p>Автор сама отмечает: для рабочего десктопа или сервера так делать не стоит. Но если вам нужен крошечный live-образ под единичный эксперимент — здесь много идей, с которых можно начать.</p><h2>Выводы</h2><p>Эксперимент показывает, что NixOS позволяет не только собирать сложные системы, но и жёстко урезать их — иногда в ущерб удобству. Главный инструмент здесь не волшебная опция, а последовательный анализ: смотреть, что занимает место, находить виновника через nix why-depends и решать, готовы ли вы от него отказаться.</p><blockquote>«At some point I just kept going because I got curious.»</blockquote><p>Если захотите повторить — начните с отключения Nix и документации, а дальше решайте, какие модули и пакеты действительно нужны в вашем live-образе. Исходный материал — в блоге автора: <a href="https://natkr.com/2026-06-19-nixos-but-smol/">I can haz smoller NixOS ISOs?</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Линус Торвальдс назвал «мерзкой» раскладку файлов sched_ext в Linux — код уже переложили по папкам</title>
      <link>https://tproger.ru/news/linus-torvalds-nazval-merzkoj-raskladku-fajlov-sched-ext-v-li</link>
      <comments>https://tproger.ru/news/linus-torvalds-nazval-merzkoj-raskladku-fajlov-sched-ext-v-li?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/linus-torvalds-nazval-merzkoj-raskladku-fajlov-sched-ext-v-li</guid>
      <description><![CDATA[<p>Линус Торвальдс назвал «мерзкой» раскладку файлов sched_ext в Linux и потребовал переложить их в отдельную папку. Разбираем, что изменилось в Linux 7.2.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/linus-torvalds-nazval-merzkoj-raskladku-fajlov-sched-ext-v-li">Линус Торвальдс назвал «мерзкой» раскладку файлов sched_ext в Linux — код уже переложили по папкам</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Open Source]]></category>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Производительность]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 26 Jun 2026 10:49:58 GMT</pubDate>
      <content:encoded><![CDATA[<p>Линус Торвальдс <a href="https://lore.kernel.org/lkml/CAHk-=wghMm2c+AYEcwYY7drSVXB27DYqc-ZXpFiq=XFs-w59wA@mail.gmail.com/">публично раскритиковал</a> структуру новых исходников sched_ext, которые вошли в Linux 7.2: вместо отдельной директории авторы рассовали файлы с префиксом ext_ прямо в kernel/sched. Он назвал это «мерзким» и потребовал убрать — и разработчики уже переложили код в kernel/sched/ext/.</p><p>В Linux 7.2 код расширяемого планировщика sched_ext изначально появился в виде файлов ext_arena.c, ext_cid.c, ext_types.h и других прямо в kernel/sched.</p><p>Линус Торвальдс слил изменения «под протестом», указав, что префиксы вместо директорий — это неправильный способ группировки.</p><p>Новый pull request перенёс файлы в kernel/sched/ext/; Торвальдс уже принял эту реструктуризацию.</p><h2>Что случилось</h2><p>На прошлой неделе в основную ветку Linux 7.2 попал основной набор изменений sched_ext — фреймворка, который позволяет реализовывать политики планирования в пользовательских программах BPF. К патчам не было претензий по функциональности, но Торвальдса возмутила организация файлов.</p><p>Вместо того чтобы создать поддиректорию kernel/sched/ext/, авторы добавили в kernel/sched несколько файлов с префиксом ext_: ext_arena.c, ext_arena.h, ext_cid.c, ext_cid.h и ext_types.h.</p><blockquote>Please don't do this disgusting thing. There's a reason we have subdirectories: it's to group files together and separate them out. Using name prefixing instead of directories is disgusting and wrong. If you have this many random sched-ext files, it damn well should be cleaned up and not be this kind of mess. I've pulled this, but under protest. Proper hierarchical filesystems have been available since 1965.</blockquote><h2>Как исправили</h2><p>В ответ разработчики отправили <a href="https://lore.kernel.org/lkml/e10b2679e4d0882e6d690c55c3efaa74@kernel.org/">новый pull request</a>, который перекладывает все sched_ext-файлы в отдельную директорию kernel/sched/ext/. Торвальдс уже <a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7603d8e78023e5883e075b4625fbdf059c6384f7">принял</a> реструктуризацию.</p><figure><img src="https://media.tproger.ru/user-uploads/133946/2026-06-26/89512d36-a006-490f-b024-cd83152e9bd5.webp" alt="Список файлов sched_ext, перенесённых в kernel/sched/ext/" /><figcaption>Так теперь выглядит перенос файлов sched_ext в отдельную директорию.</figcaption></figure><h2>Почему это важно</h2><p>С точки зрения пользователя разница кажется косметической, но для ядра это вопрос сопровождаемости. Иерархические директории — стандартный способ группировки связанного кода, а префиксы в общей папке быстро превращаются в беспорядок. Реакция Торвальдса подчёркивает, что даже мелкие архитектурные решения в Linux принимаются строго.</p><h2>Выводы</h2><p>История с sched_ext — хороший пример того, как в Linux следят за чистотой кодовой базы. Технически патчи работали, но неправильная организация файлов оказалась достаточно серьёзной проблемой, чтобы Торвальдс потребовал исправлений. Теперь код лежит там, где ему положено — в отдельной директории.</p><h2>Источники</h2><ul><li><a href="https://www.phoronix.com/news/Linux-Sched-Ext-Restructured">Phoronix: "Disgusting" Linux sched_ext Source Code Restructured</a></li><li><a href="https://lore.kernel.org/lkml/CAHk-=wghMm2c+AYEcwYY7drSVXB27DYqc-ZXpFiq=XFs-w59wA@mail.gmail.com/">Письмо Линуса Торвальдса в lkml</a></li><li><a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7603d8e78023e5883e075b4625fbdf059c6384f7">Коммит реструктуризации в git.kernel.org</a></li></ul>]]></content:encoded>
    </item>
    <item>
      <title>Как поднять свой S3-совместимый объектный склад на MinIO для staging</title>
      <link>https://tproger.ru/articles/kak-podnyat-svoj-s3-sovmestimyj-obektnyj-sklad-na-minio-dlya-sta</link>
      <comments>https://tproger.ru/articles/kak-podnyat-svoj-s3-sovmestimyj-obektnyj-sklad-na-minio-dlya-sta?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/kak-podnyat-svoj-s3-sovmestimyj-obektnyj-sklad-na-minio-dlya-sta</guid>
      <description><![CDATA[<p>Разворачиваем MinIO на VPS, настраиваем HTTPS через Traefik и presigned URL для загрузки файлов. Экономим на облачном S3 на этапе разработки.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/kak-podnyat-svoj-s3-sovmestimyj-obektnyj-sklad-na-minio-dlya-sta">Как поднять свой S3-совместимый объектный склад на MinIO для staging</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[DevOps]]></category>
      <category><![CDATA[Docker]]></category>
      <category><![CDATA[Облачные технологии]]></category>
      <category><![CDATA[Бэкенд]]></category>
      <category><![CDATA[Сервер]]></category>
      <category><![CDATA[Инфраструктура]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 25 Jun 2026 12:23:08 GMT</pubDate>
      <content:encoded><![CDATA[<p>Если в приложении есть загрузка файлов — аватары, документы, отчёты, записи звонков — каждый тестовый файл на staging утекает в облачный счёт. AWS S3, Cloudflare R2 и Yandex Object Storage берут деньги за хранение и трафик, а в staging это чистый перерасход: тут нет SLA, зато полно битых загрузок, ночных сбросов базы и файлов, которые никто не удаляет.</p><p>Выход — поднять собственное S3-совместимое хранилище на том же VPS, где крутится staging. <b>MinIO</b> реализует API Amazon S3, понимает те же SDK и presigned URL, но стоит ровно столько, сколько стоит диск сервера. Один и тот же код приложения работает и с MinIO на dev, и с R2 в проде — меняются только переменные окружения.</p><h2>Что такое MinIO и почему он подходит для staging</h2><p>MinIO — это open-source сервер объектного хранилища, написанный на Go. Он поддерживает основные операции S3: бакеты, объекты, multipart upload, versioning, lifecycle, шифрование SSE-S3, CORS и IAM-политики. Для приложения он выглядит как обычный S3-эндпоинт, поэтому подходит почти любой SDK: AWS SDK, boto3, minio-js, aws-sdk-go.</p><p>На staging важно не столько масштабирование, сколько идентичность поведения продакшена. Если в проде R2 или S3, а в staging — локальная файловая система, вы тестируете не тот код. MinIO закрывает этот разрыв: тот же PutObjectCommand, те же presigned URL, те же ошибки SignatureDoesNotMatch.</p><ul><li>MinIO — полноценный S3-совместимый сервер, который можно развернуть в Docker на VPS за 10–15 минут.</li><li>Для staging это экономия на хранении тестовых файлов и единый код с продакшеном.</li><li>HTTPS и домен лучше отдавать reverse proxy — Traefik или NGINX — с Let’s Encrypt.</li><li>Presigned URL позволяют загружать и скачивать файлы напрямую из браузера, не проксируя байты через бэкенд.</li><li>Root-ключи MinIO нельзя отдавать приложению: создавайте отдельного пользователя с IAM-политикой только на нужный бакет.</li></ul><h2>Архитектура: прод против staging</h2><p>В продакшене обычно используется управляемое хранилище: AWS S3, Cloudflare R2, Yandex Object Storage, Hetzner Object Storage. Там работают репликация, резервное копирование и чужой дежурный. В staging достаточно одного MinIO-контейнера на сервере с регулярным зеркалированием в дешёвое холодное хранилище.</p><p>Приложение не знает, с кем оно говорит: код инициализации клиента одинаков. Разница только в переменных окружения: эндпоинте, регионе, ключах и флаге forcePathStyle, который нужен большинству S3-совместимых сервисов, включая MinIO и R2.</p><p><b>Важно:</b> виртуальный хостинг bucket.example.com в MinIO работает, но на staging проще включить path-style и не мучиться с DNS-записями под каждый бакет.</p><h2>Что понадобится</h2><ul><li>VPS с Linux, публичным IP и открытыми портами 80/443.</li><li>Два A-записи: minio-staging.example.com и minio-console.example.com.</li><li>Docker и Docker Compose v2.</li><li>Reverse proxy с TLS — в примере Traefik v2 + Let’s Encrypt.</li><li>Около 10 ГБ свободного места под тестовые данные.</li></ul><h2>Разворачиваем MinIO в Docker Compose</h2><p>Минимальный docker-compose.staging.yml заводит один контейнер, внешнюю сеть для Traefik и именованный том для данных.</p><p>Два параметра критичны для presigned URL. MINIO_SERVER_URL говорит серверу, на каком публичном домене подписывать ссылки. Без него ссылка будет подписана для http://minio:9000 и браузер отклонит подпись. MINIO_BROWSER_REDIRECT_URL нужен для корректных редиректов веб-консоли.</p><h2>Прокидываем HTTPS через Traefik</h2><p>Добавляем лейблы к сервису minio, чтобы Traefik маршрутизировал API и консоль на разные порты и автоматически выпускал сертификаты.</p><p>Проверяем здоровье сервера с локальной машины: curl -I https://minio-staging.example.com/minio/health/live должен вернуть HTTP 200.</p><p><b>Cloudflare:</b> для поддомена с API лучше выключить оранжевое облако. Бесплатный тариф Cloudflare обрезает тело запроса на 100 МБ и может убирать S3-заголовки, из-за чего ломается подпись.</p><h2>Бакеты, политики и отдельный пользователь для приложения</h2><p>После запуска создаём бакет и отдельного IAM-пользователя. Делать это root-ключами приложения — плохая идея: root может удалить всё.</p><p>Теперь создаём пользователя staging-app и IAM-политику, ограничивающую права только этим бакетом.</p><p>Логин staging-app и его секрет — это и есть S3_ACCESS_KEY и S3_SECRET_KEY для приложения.</p><h2>Код приложения не меняется</h2><p>Пример на AWS SDK v3 для Node.js. Обратите внимание на forcePathStyle: true: без него SDK попытается обратиться к bucket.minio-staging.example.com, и запрос уйдёт в никуда.</p><p>Переменные для staging:</p><p>Для продакшена — только другой набор значений, код идентичен.</p><h2>Presigned URL: загрузка и скачивание без проксирования</h2><p>Presigned URL — это обычный HTTPS URL с короткой подписью в query string. Кто угодно может выполнить ровно то действие, на которое выдана подпись: PUT для загрузки или GET для скачивания. Бэкенд проверяет права, подписывает URL и отдаёт клиенту — сам файл идёт напрямую в MinIO.</p><h3>Загрузка из браузера</h3><p>Важный подводный камень: Content-Type, который браузер отправляет при PUT, должен точно совпадать с тем, что было передано в PutObjectCommand. Иначе MinIO вернёт SignatureDoesNotMatch.</p><h3>Скачивание приватных файлов</h3><p><b>Почему это лучше проксирования:</b> при прямой загрузке через ваше API все байты проходят через приложение, съедая CPU, RAM и пропускную способность. С presigned URL трафик идёт между клиентом и MinIO — бэкенд только подписывает ссылку.</p><h2>CORS, lifecycle и безопасность</h2><p>Несколько команд, которые стоит выполнить сразу после создания бакета.</p><h3>CORS для браузерных загрузок</h3><h3>Автоудаление старых тестовых файлов</h3><h3>Шифрование данных в покое</h3><p>И ещё раз: root-ключи храните в менеджере секретов и используйте только для mc admin. Консоль MinIO, если она доступна из интернета, закрывайте IP-allowlist или базовой авторизацией на уровне Traefik.</p><h2>Бэкапы и мониторинг</h2><p>Staging не должен хранить что-то ценное, но периодическое зеркалирование в дешёвое холодное хранилище спасает от случайного удаления. Команда mc mirror синхронизирует бакет в Backblaze B2, Yandex Object Storage или другой S3-совместимый бэкенд.</p><p>Для метрик MinIO отдаёт Prometheus-экспортёр по пути /minio/v2/metrics/cluster. В Grafana можно импортировать дашборд ID 13502 и сразу видеть занятое место, RPS, задержки и ошибки.</p><h2>Типичные проблемы</h2><ul><li><b>SignatureDoesNotMatch при PUT</b> — браузер отправил Content-Type, отличный от подписанного. Проверьте заголовок PUT.</li><li><b>Подписанная ссылка работает локально, но не в браузере</b> — не задан MINIO_SERVER_URL. Ссылка подписана для внутреннего http://minio:9000.</li><li><b>403 после Cloudflare</b> — бесплатный тариф Cloudflare модифицирует заголовки. Переведите A-запись в режим DNS-only.</li><li><b>CORS preflight failed</b> — на бакете не настроены CORS-правила.</li><li><b>Консоль редиректит на http://minio:9001</b> — не задан MINIO_BROWSER_REDIRECT_URL.</li></ul><h2>Выводы</h2><p>Self-hosted MinIO на staging — это не попытка заменить облако, а способ сделать тестовую среду дешевле и ближе к продакшену. Тот же API, те же SDK, те же presigned URL, но без счетов за хранение битых файлов и ночных сбросов базы.</p><p>Ключевые моменты, которые стоит запомнить: всегда указывайте MINIO_SERVER_URL для корректных подписей, не используйте root-ключи в приложении, включайте path-style на staging и настраивайте lifecycle, чтобы мусор не копился.</p><blockquote>Самое дорогое в staging — не железо, а различия в кодовых путях между dev и prod. MinIO помогает убрать одну из этих разниц почти бесплатно.</blockquote><p>Источник: <a href="https://www.freecodecamp.org/news/how-to-self-host-an-s3-compatible-object-store-with-minio-on-your-staging-server/">freeCodeCamp — How to Self-Host an S3-Compatible Object Store with MinIO on Your Staging Server</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>В Linux 7.2 улучшили EROFS для разреженных AI-датасетов и эффективного ввода-вывода</title>
      <link>https://tproger.ru/news/v-linux-7-2-uluchwili-erofs-dlya-razrezhennyh-ai-datasetov-i-effekt</link>
      <comments>https://tproger.ru/news/v-linux-7-2-uluchwili-erofs-dlya-razrezhennyh-ai-datasetov-i-effekt?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/v-linux-7-2-uluchwili-erofs-dlya-razrezhennyh-ai-datasetov-i-effekt</guid>
      <description><![CDATA[<p>В ядре Linux 7.2 файловая система EROFS получила поддержку разреженных данных и ускорение I/O. Разбираем, зачем это нужно для AI-моделей.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/v-linux-7-2-uluchwili-erofs-dlya-razrezhennyh-ai-datasetov-i-effekt">В Linux 7.2 улучшили EROFS для разреженных AI-датасетов и эффективного ввода-вывода</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Open Source]]></category>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Оптимизация]]></category>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 25 Jun 2026 08:58:12 GMT</pubDate>
      <content:encoded><![CDATA[<p>В ядро <b>Linux 7.2</b> вошли обновления файловой системы <b>EROFS</b>, которые делают её удобнее для хранения больших разреженных наборов данных — например, датасетов для обучения ИИ. Главное изменение — поддержка SEEK_HOLE в компоновке физических кластеров (pcluster), что позволяет сохранять «дыры» в файлах вместо их сжатия в нули.</p><p><b>EROFS</b> (<i>Enhanced Read-Only File System</i>) — это доступная с Linux 4.19 файловая система только для чтения, заточенная под производительность и компактное хранение образов контейнеров, систем Android и, всё чаще, AI-моделей.</p><ul><li>Linux 7.2 получил два ключевых улучшения EROFS: разреженные pcluster и оптимизированное отображение chunk-based inode.</li><li>Поддержка sparse-данных помогает экономить место при копировании в overlayfs и корректно работать с SEEK_HOLE.</li><li>Удалён устаревший бэкенд FSCACHE — его функциональность заменяют файловые монтирования и fanotify.</li><li>Патчи подготовил мейнтейнер EROFS Гао Сян из Alibaba.</li></ul><h2>Зачем нужна поддержка разреженных данных</h2><p>Разреженные (sparse) файлы содержат пустые участки, которые не занимают место на диске. EROFS уже умеет прозрачно сжимать нули, но для AI-датасетов важно именно <b>сохранять дыры</b>: иначе overlayfs при копировании «вверх» распределит под них реальное пространство, а системный вызов SEEK_HOLE не найдёт ни одной «дыры».</p><p>Мейнтейнер EROFS Гао Сян из Alibaba <a href="https://lore.kernel.org/all/20260621194414.489939-1-hsiangkao@linux.alibaba.com/">пояснил в патчах</a>, что новый код отмечает целые pcluster как «дыры» двумя разными способами. Это особенно полезно для огромных AI-датасетов, где нулевые или неинициализированные фрагменты встречаются часто.</p><h2>Оптимизация ввода-вывода и удаление FSCACHE</h2><p>Помимо sparse-поддержки, EROFS в Linux 7.2 получила оптимизированное отображение запросов для inode на основе чанков. Разработчики сообщают, что новый код erofs_map_chunks() делает ввод-вывод более эффективным, хотя точных бенчмарков в анонсе не приводится.</p><p>Также из ядра окончательно удалили бэкенд <b>FSCACHE</b> для EROFS. Он раньше использовался для ленивой подгрузки образов, но после того как FSCACHE сделал NETFS обязательной зависимостью, функцию признали устаревшей. Похожее поведение теперь реализуют через монтирование файлов и хуки fanotify.</p><h2>Итог</h2><p>Обновления EROFS в Linux 7.2 делают эту файловую систему более удобной для больших AI-датасетов: разреженные данные теперь не превращаются в лишние мегабайты при копировании, а ввод-вывод для chunk-based inode стал эффективнее. Для разработчиков, которые используют EROFS в контейнерных и ML-окружениях, это повод проверить свои сборки ядра.</p><p>Источник: <a href="https://www.phoronix.com/news/EROFS-Sparse-AI-Datasets">Phoronix</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>incident.io рассказала, как меряет надёжность on-call: клиент важнее контроля</title>
      <link>https://tproger.ru/articles/incident-io-rasskazala-kak-meryaet-nadyozhnost-on-call-klient-va</link>
      <comments>https://tproger.ru/articles/incident-io-rasskazala-kak-meryaet-nadyozhnost-on-call-klient-va?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/incident-io-rasskazala-kak-meryaet-nadyozhnost-on-call-klient-va</guid>
      <description><![CDATA[<p>Разбираем подход incident.io к SLO on-call: почему uptime API недостаточно, зачем вычитать пользовательские задержки и как redundancy спасает при сбоях провайдеров.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/incident-io-rasskazala-kak-meryaet-nadyozhnost-on-call-klient-va">incident.io рассказала, как меряет надёжность on-call: клиент важнее контроля</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[DevOps]]></category>
      <category><![CDATA[Сервер]]></category>
      <category><![CDATA[Инфраструктура]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 19 Jun 2026 08:35:55 GMT</pubDate>
      <content:encoded><![CDATA[<p>Когда сервис пишет в SLA 99,99% uptime, это звучит убедительно. Но представьте: API работает, алерт ушёл, а дежурный не проснулся, потому что push-уведомление застряло в единственном провайдере. Для инцидента разницы нет: он не был обнаружен вовремя.</p><p>Компания <b>incident.io</b>, которая делает платформу для управления инцидентами и дежурствами, опубликовала разбор того, как её команда измеряет надёжность продукта <b>On-call</b>. Главный тезис: мерять нужно не то, что контролируешь, а то, что чувствует клиент.</p><p>incident.io сводит надёжность on-call к двум вещам: приём алертов и доставка уведомлений дежурным.</p><p>Вместо uptime API они меряют «хорошие минуты»: долю времени, когда ошибка приёма алертов ниже 10%.</p><p>За сбои сторонних провайдеров отвечает сам сервис: active-active redundancy для SMS/звонков.</p><p>Пользовательские задержки в escalation-цепочках вычитаются из общей задержки, чтобы измерять реальное время обработки.</p><p>Цель SLO — 99,99% в месяц для приёма алертов и для задержки уведомлений менее 5 минут.</p><h2>Две метрики, которые на самом деле важны</h2><p>У on-call продукта много функций: расписания дежурств, запросы замены, escalation-цепочки. Но с точки зрения надёжности incident.io оставляет только две критические операции: <b>приём алертов</b> и <b>своевременная доставка уведомлений</b>.</p><p>Для них выбраны два SLI — индикатора уровня сервиса: доступность приёма алертов и доля уведомлений, доставленных быстрее 5 минут. Внутренний SLO для обоих — <b>99,99% в месяц</b>.</p><h2>Приём алертов: измеряйте «хорошие минуты»</h2><p>Классический SLI для HTTP API — доля ответов без ошибок:</p><p>Проблема в том, что эта метрика не видит ситуаций, когда запрос не дошёл до приложения. Например, если load balancer неправильно маршрутизирует трафик, application-метрики покажут ноль ошибок — просто потому, что запросов не было.</p><p>incident.io наблюдает трафик на уровне GCP load balancer — ближе к клиенту, чем application layer. Но и здесь есть шум: кратковременные сетевые блики, которые самолечатся за секунды. Чтобы не гоняться за каждым пиком, они меряют не запросы, а минуты:</p><p>Месяц делится на минуты. Минутка считается «хорошей», если доля ошибок в ней меньше 10%. Такой подход мотивирует и клиентов строить отказоустойчивую отправку алертов — с retries и backoff.</p><h2>Третьи стороны: «не наша вина» не работает</h2><p>Со стороны уведомлений вопрос сложнее: когда останавливать таймер? Простой ответ — когда уведомление передано провайдеру вроде Twilio или APNs. Если провайдер упал, разве это вина сервиса?</p><p>incident.io считает, что вина не важна — важен результат. Для SMS и звонков они используют двух провайдеров active-active: если один не справляется, срабатывает другой. Этот пробел они закрыли после инцидента в октябре 2025 года, когда единственный telecom-провайдер попал под AWS-аутедж.</p><p>Для push-уведомлений на iOS есть только один APNs, поэтому полную redundancy не построишь. Выход — подталкивать пользователей настроить несколько каналов: push, SMS и звонок одновременно. Так уведомление считается доставленным, когда его подтвердил хотя бы один провайдер.</p><h2>Пользовательские задержки: как мерить то, что спрятано</h2><p>Продукт позволяет гибко настраивать escalation. Например: сначала push и SMS, через 2 минуты — звонок. Если мерить время от алерта до звонка наивно, получится ложная задержка в те самые 2 минуты.</p><p>incident.io вычитает все намеренные задержки из общего времени:</p><p>Это означает: если звонок должен был прийти через 2 минуты, а пришёл через 7, — реальная задержка 5 минут, а не 7. «Это сложно мерить» не проходит краснолицый тест: компания сама рекомендует многоуровневые уведомления, поэтому должна нести ответственность и за их надёжность.</p><h2>А что в России?</h2><p>У нас типичная картина: Prometheus + Alertmanager шлют алерты в Telegram-бот или корпоративный мессенджер. Часто дежурство сводится к «если бот молчит — значит, всё нормально». Но мало кто меряет, <b>доходит ли уведомление до человека</b>, а не просто уходит ли HTTP-запрос.</p><p>Из статьи incident.io можно вынести три практических шага для российских команд:</p><ol><li>Меряйте доставку уведомлений, а не только отправку. Если дежурный не подтвердил получение — это инцидент для мониторинга.</li><li>Стройте redundancy каналов. Telegram, SMS через провайдера, звонок — минимум два независимых пути.</li><li>Учитывайте настроенные задержки в SLO. Иначе вы будете наказывать себя за собственные best practices.</li></ol><p>Ещё один момент: российские облачные провайдеры и telecom-операторы тоже падают. Поэтому active-active между двумя SMS-провайдерами или fallback на звонок — не перестраховка, а норма.</p><h2>Выводы</h2><p>Подход incident.io — хороший пример того, как техническая метрика перестраивается в метрику клиентского опыта. Вместо «наш API работает» — «алерт дошёл и дежурный его увидел вовремя». Вместо «провайдер виноват» — «у нас есть fallback». Вместо «это сложно мерить» — «мы меряем честно».</p><blockquote>Customer outcomes matter more than any individual piece of the machine.</blockquote><p>Источник: <a href="https://incident.io/blog/customers-over-control">incident.io — Customers over control: how we measure On-call reliability</a>.</p><p>Если у вас есть дежурства, пересмотрите свои SLO: они меряют опыт пользователя или просто красивые цифры для дашборда?</p>]]></content:encoded>
    </item>
    <item>
      <title>Netflix построила Service Topology: живая карта микросервисов</title>
      <link>https://tproger.ru/articles/netflix-postroila-zhivuyu-kartu-servisov-kak-ustroena-service-top</link>
      <comments>https://tproger.ru/articles/netflix-postroila-zhivuyu-kartu-servisov-kak-ustroena-service-top?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/netflix-postroila-zhivuyu-kartu-servisov-kak-ustroena-service-top</guid>
      <description><![CDATA[<p>Как Netflix объединяет eBPF, IPC-метрики и tracing в единую карту зависимостей. Разбираем, почему статические схемы устарели и что перенести в свою систему.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/netflix-postroila-zhivuyu-kartu-servisov-kak-ustroena-service-top">Netflix построила Service Topology: живая карта микросервисов</a>»</p>]]></description>
      <category><![CDATA[API]]></category>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Производительность]]></category>
      <category><![CDATA[Микросервисы]]></category>
      <category><![CDATA[Архитектура ПО]]></category>
      <category><![CDATA[DevOps]]></category>
      <category><![CDATA[Графы]]></category>
      <category><![CDATA[Архитектура приложений]]></category>
      <category><![CDATA[Инфраструктура]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 19 Jun 2026 07:47:47 GMT</pubDate>
      <content:encoded><![CDATA[<p>Если вы хоть раз отлаживали микросервис ночью, знаете главный вопрос: это мой сервис сломался или его уронило что-то выше по течению? В системе из тысяч сервисов ответ приходится искать по кускам — метрики, логи и трейсы показывают симптомы, но не дают единой карту зависимостей. Netflix столкнулась с этой же болью и построила инструмент под названием Service Topology, который рисует живую карту зависимостей в реальном времени.</p><p>Service Topology — это не статическая схема из вики, а динамическая карта связей между сервисами. Она обновляется по мере того, как меняется трафик, появляются новые зависимости или старые исчезают. Карта показывает не только «кто с кем говорит», но и контекст: уровень доступности, бизнес-домен, владельца и текущее состояние здоровья.</p><p>Если тема микросервисов для вас новая, начните с базового разбора <a href="https://tproger.ru/articles/chto-takoe-mikroservisy--arhitektura--plyusy-i-minusy--primery">«Что такое микросервисы»</a>, а если выбираете архитектуру для проекта — сравните варианты в материале <a href="https://tproger.ru/articles/monolit-ili-mikroservisy--kak-vybrat-arhitekturu-dlya-novogo-proekta">«Монолит или микросервисы»</a>. Авторский разбор внутреннего устройства Netflix читайте в статье <a href="https://tproger.ru/articles/razrabotchik-izuchal-sistemu-rekomendacij-netflix-mesyacami--vot-chto-skryvaetsya-vnutri">«Разработчик изучал систему рекомендаций Netflix месяцами»</a>.</p><ul><li>Netflix объединила три источника данных: eBPF-сетевые потоки, IPC-метрики и распределённые трейсы.</li><li>Каждый источник строит свой граф; общий вид получается параллельным слиянием слоёв.</li><li>Карта обновляется почти в реальном времени и отвечает на запросы быстрее секунды.</li><li>Инженеры используют её для поиска причин сбоев, оценки зоны поражения и планирования изменений.</li><li>Подход можно перенести в любую распределённую систему, где нужно понимать зависимости.</li></ul><h2>Почему обычной наблюдаемости мало</h2><p>Традиционные инструменты наблюдаемости показывают фрагменты картины. Метрики говорят, что что-то болит. Логи рассказывают, что конкретно произошло в одном сервисе. Трейсы прослеживают путь отдельного запроса. Но ни один из этих сигналов не показывает полную топологию зависимостей — ту самую основу, на которой держится распределённая архитектуры.</p><p>Инженеру в три часа ночи приходится мысленно склеивать данные из разных источников. Это медленно, чревато ошибками и добавляет стресса. Netflix проанализировала тысячи обращений в поддержку за четыре года и увидела повторяющиеся вопросы: кто мои upstream и downstream, что упадёт вместе со мной, почему сервис отображается в панели мониторинга как Unknown (неизвестный сервис). Ответы на них требовали единого представления о зависимостях.</p><h2>Три источника данных Service Topology</h2><p>Главный вывод Netflix: ни один источник не рассказывает всю историю. Поэтому система строит три независимых графа и объединяет их по запросу.</p><h3>Сетевые потоки eBPF</h3><p>На сетевом уровне Netflix собирает потоки ядра через eBPF. Это даёт полноту: сюда попадают все соединения, независимо от того, инструментирован сервис или нет. Слой показывает связи между кластерами и приложениями такими, какими они есть на самом деле. Недостаток — не хватает прикладного контекста: видно, что сервис А достучался до IP-адреса сервиса Б, но неизвестно, какой конкретно endpoint вызывался.</p><h3>IPC-метрики</h3><p>На прикладном уровне собираются метрики межпроцессного взаимодействия. Когда сервис обращается к другому через gRPC, GraphQL или REST, он фиксирует endpoint, ошибки, задержки и протокол. Этот слой даёт детали, которых нет у сетевого: какой именно путь вызывается и с какой вероятностью ошибки. Ограничение очевидно: если сервис не отправляет метрики, его вызовов здесь не будет.</p><h3>Распределённые трейсы</h3><p>Третий слой — трейсинг запросов от начала до конца. Он показывает не «может ли сервис А позвонить сервису Б», а «звонил ли он в рамках этого конкретного пользовательского запроса». Это помогает увидеть поведение во время выполнения, ветвления, фича-флаги и редкие пути. Поскольку трейсы собирают выборочно, редкие сценарии могут не попасть в агрегированный вид.</p><p>Когда инженер запрашивает общую картину, система обходит все три графа параллельно и сливает результаты. Сеть обеспечивает полноту, IPC добавляет контекст, трейсы показывают реальное поведение. Каждый источник компенсирует слабости остальных.</p><h2>Как собирают Service Topology</h2><h3>Приём и обработка потоков</h3><p>За кулисами работает конвейер, который держит миллионы событий в секунду. Потоки сетевых логов читаются из Kafka в нескольких регионах AWS. Для обработки Netflix использует Apache Pekko Streams — форк Akka, который разбивает нагрузку по группам автомасштабирования и сам управляет обратным давлением.</p><h3>Восстановление прямых связей</h3><p>Сетевой лог показывает отдельные сетевые прыжки: например, приложение → балансировщик → приложение или приложение → NAT-шлюз → приложение. Чтобы получить настоящие связи, запускается трёхступенчатая агрегация. Первая стадия забирает сырые записи, вторая распознаёт посредников и восстанавливает прямые пути между приложениями, третья финализирует агрегаты и добавляет статус здоровья. Такой градуированный подход раскидывает нагрузку и не даёт горячим узлам уронить весь конвейер.</p><p>Готовая топология хранится в графовой базе Netflix — абстракции поверх распределённого хранилища «ключ — значение». Она заточена под быстрый обход графа в несколько хопов. Поверх базы — gRPC-API с фильтрами по уровню доступности и домену, постраничным выводом больших выборок и ответом менее чем за секунду.</p><h3>Хранение и API</h3><p>Отдельно стоит возможность «путешествия во времени». Система не хранит каждый момент отдельно, а накапливает данные в скользящих окнах. Это позволяет спросить «как выглядела топология вчера в полночь» без взрыва объёмов хранения.</p><h2>Что даёт инженерам</h2><p>Интерфейс и API дают инженерам несколько рабочих сценариев — от ручного расследования до автоматических проверок.</p><ul><li>Видеть upstream и downstream для любого сервиса с фильтрами по уровню доступности и домену.</li><li>Переключаться между единым видом и отдельными слоями: только сеть, только IPC или только трейсы.</li><li>Одним кликом переходить от узла топологии к логам, трейсам и детальным метрикам.</li><li>Оценивать зону поражения перед отключением сервиса на обслуживание и понимать, кого уведомлять.</li><li>Накладывать статус здоровья на граф и быстро понимать, локальная ли это проблема или каскадный сбой.</li><li>Обращаться к топологии программно — например, чтобы автоматически проверять классификацию доступности критичных сервисов.</li><li>Смотреть историю зависимостей и находить, что изменилось перед инцидентом.</li></ul><h2>Как перенести в свою систему</h2><p>Не каждая компания работает в масштабе Netflix, но логика подхода универсальна. Если у вас десятки сервисов, уже появляется эффект «тысячи кусочков пазла». Начать можно с малого: собрать список зависимостей из существующих источников и периодически сверять его с реальным трафиком.</p><p><b>Чек-лист для первых шагов:</b><br />1. Выберите один настоящий источник связей: логи балансировщика, агент на хосте или метрики вызовов.<br />2. Не пытайтесь сразу построить идеальную модель — начните с автоматически обнаруженных рёбер.<br />3. Добавьте контекст: владельца сервиса, уровень критичности и домен.<br />4. Сделайте карту доступной программно, а не только в интерфейсе — инцидент-боты и скрипты будут благодарны.<br />5. Проверяйте актуальность: в динамичной среде карты, устаревшие на несколько часов, быстро теряют ценность.</p><p>Для иллюстрации вот минимальный скрипт, который строит рёбра графа из логов балансировщика:</p><h2>Часто задаваемые вопросы</h2><h2>Выводы</h2><p>Service Topology — не просто красивая картинка для панели мониторинга. Это операционная основа, которая ускоряет расследования, снижает риск изменений и даёт автоматическим системам общую картину инфраструктуры. Netflix называет её knowledge graph foundation — фундаментом для интеллектуальной автоматизации, в том числе для автоматического поиска первопричины сбоев.</p><blockquote>Service topology provides the knowledge graph foundation that makes this kind of intelligent automation possible.</blockquote><p>Для российских команд, где инфраструктура тоже стремительно усложняется, главный урок в другом: не ждите идеальной полноты данных. Начните с одного реального источника, добавьте контекст, сделайте карту программно доступной — и она начнёт приносить пользу раньше, чем вы построите «полноценную» систему.</p><h2>Источники</h2><ul><li><a href="https://medium.com/netflix-techblog/from-silos-to-service-topology-why-netflix-built-a-real-time-service-map-0165ba13a7bc">From Silos to Service Topology: Why Netflix Built a Real-Time Service Map</a></li></ul>]]></content:encoded>
    </item>
    <item>
      <title>История CentOS: хобби биохимика стало стандартом серверов</title>
      <link>https://tproger.ru/articles/istoriya-centos-kak-hobbi-biohimika-stalo-standartom-serverov</link>
      <comments>https://tproger.ru/articles/istoriya-centos-kak-hobbi-biohimika-stalo-standartom-serverov?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/istoriya-centos-kak-hobbi-biohimika-stalo-standartom-serverov</guid>
      <description><![CDATA[<p>Грегори Куртцер пришёл из биохимии и создал ОС для дата-центров. Разбираем, почему CentOS стал стандартом enterprise и как он выручил Red Hat. Читайте разбор.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/istoriya-centos-kak-hobbi-biohimika-stalo-standartom-serverov">История CentOS: хобби биохимика стало стандартом серверов</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Open Source]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 09 Jun 2026 07:25:20 GMT</pubDate>
      <content:encoded><![CDATA[<p>Представьте: вы — биохимик, который занимается геномикой и запускает тяжелые вычислительные задачи на системах SGI. Однажды партнер говорит: «А давай попробуем Linux». Вы едете в магазин электроники, скупаете железа, скачиваете бесплатную ОС из интернета — и понимаете, что она способна запускать серьёзные научные задачи. История Грегори Куртцера начиналась именно так. А закончилась тем, что его проект CentOS стал фактическим стандартом для корпоративных дата-центров по всему миру.</p><p><b>CentOS</b> (Community Enterprise Operating System) — это бесплатный клон Red Hat Enterprise Linux (RHEL), собираемый сообществом из открытых исходников. Он обеспечивает бинарную совместимость (то есть программы из RHEL запускаются без пересборки) с коммерческим дистрибутивом, но не требует подписки. Для многих компаний это был способ запускать единую серверную платформу везде, платя только за ту часть инфраструктуры, где критически важна техподдержка вендора.</p><p>В недавнем интервью <i>The Register</i> Куртцер, основатель CentOS, рассказал, как хобби-проект биохимика вырос в экосистему, которая определила судьбу корпоративного Linux на два десятилетия. Мы переплавили его рассказ в разбор того, почему CentOS был не врагом Red Hat, а, парадоксально, одним из главных факторов ее успеха.</p><p>CentOS появился в 2004 году как ответ сообщества на прекращение развития Red Hat Linux в пользу платной RHEL (для домашних пользователей его заменила Fedora) и переход к платной RHEL.</p><p>Основатель Грегори Куртцер пришел в мир Linux из биохимии и геномики, вдохновившись идеей открытого кода.</p><p>Первым успешным клоном RHEL был White Box Enterprise Linux, но он не выдержал нагрузки популярности.</p><p>К 2014 году CentOS стал настолько важен, что Red Hat официально спонсировала проект, наняв его небольшую команду.</p><p>Поворот к CentOS Stream в декабре 2020 года привел к рождению Rocky Linux и AlmaLinux — новых наследников идеи бесплатного RHEL-клона.</p><h2>Красная шляпа бросает вызов сообществу</h2><p>В 2003 году Red Hat приняла решение, которое взбесило тысячи пользователей. Компания свернула разработку Red Hat Linux — дружелюбной к домашним пользователям системы — в пользу корпоративной <a href="https://tproger.ru/news/ibm-buy-redhat">Red Hat</a> Enterprise Linux. Бизнес-логика была безупречной: стабильность, сертификации, платная поддержка. Но сообщество восприняло это как предательство. Особенно после слов тогдашнего CEO Мэттью Сулика, который заявил, что для домашних пользователей Windows — «вероятно, правильная линейка продуктов». Эта фраза стала мемом и катализатором.</p><p>Параллельно с этим на почтовом списке рассылки уже зародилось движение rebuild — энтузиасты пересобирали исходные пакеты RHEL в независимые дистрибутивы. Среди них были VA Linux, компания Atipa (где работал Роки МакГо, впоследствии увековеченный в названии Rocky Linux), Джон Моррис с White Box Enterprise Linux и Дэвид Парсли с Tao Linux. Первым взорвал интернет именно White Box: после упоминания на Slashdot на него обрушился такой поток пользователей, что Моррис не справился с инфраструктурной нагрузкой и отказался от лидерства.</p><h2>Из Caos в CentOS</h2><p>Грегори Куртцер к тому моменту уже создал свой дистрибутив — <b>Caos</b> (Community Assembled Operating System). Работая в лаборатории Беркли при Министерстве энергетики США, он скучал по экосистеме Debian и менеджеру пакетов apt. «Почему вокруг RPM-мира нет такого же сообщества?» — задавался он вопросом. Ответом стал Caos: некоммерческий проект с собственными сборщиками и зеркалами, использовавший Red Hat как базу, но с расширенным набором пакетов сообщества.</p><p>Когда Red Hat закрыла бесплатную линейку, команда Caos оказалась в уникальном положении: у нее уже была инфраструктура для сборки и распространения. «Мы уже имели своих сборщиков, свои зеркала, мы уже собирали пакеты из Red Hat Linux и RHEL», — вспоминает Куртцер. Несколько членов команды предложили запустить проект, который станет преемником идеи свободного enterprise-дистрибутива. Так родился CentOS.</p><h3>Почему версия 3, а не 1</h3><p>Любопытный факт: CentOS версии 1 и 2 никогда не существовало. Проект стартовал сразу с третьей версии, потому что наиболее острой потребности в версии 3 и не существовало RHEL 1. «CentOS 3 разрабатывался почти полностью Роки», — отмечает Куртцер. Релиз состоялся <b>19 марта 2004 года</b>. Позже Tao Linux и White Box мирно передали своих пользователей CentOS, предоставив планы миграции.</p><h2>Как CentOS стал де-факто стандартом</h2><p>Куртцер уверен: CentOS не был конкурентом Red Hat, а, напротив, помогал ей выживать. Модель подписки RHEL делала операционную систему дорогой для масштабирования. Организации выстроили двухуровневую стратегию: CentOS на основной массе серверов, RHEL — на критически важных узлах, где нужна валидация и поддержка. «Без CentOS большинство компаний, вероятно, перешли бы на Debian и Ubuntu, потому что никто не станет платить за поддержку всей инфраструктуры, построенной на бесплатном продукте», — считает основатель.</p><p>Переломный момент произошел на конференции по супервычислениям в Фениксе в середине 2000-х. Куртцер разговаривал с вендором, как к ним подошел незнакомец и спросил: «Почему вы не поддерживаете CentOS?» Это был первый раз, когда кто-то извне требовал поддержки проекта, не будучи частью узкого круга разработчиков. «Я подумал: вау, это круто», — вспоминает он. Вскоре CentOS начал появляться в резюме и вакансиях, а к началу 2010-х он был буквально повсюду.</p><h2>Red Hat берёт под крыло — и отпускает</h2><p>К 2014 году CentOS поддерживала крошечная команда энтузиастов, работавших бесплатно на благо индустрии. Red Hat предложила им официальное спонсорство и зарплаты. Многие увидели в этом попытку поглощения, но Куртцер был прагматичен: «Они жертвовали личной жизнью ради сообщества. Это была справедливая возможность получить работу и не отказываться от домашней жизни». На несколько лет ситуация стабилизировалась: задержки релизов сократились, документация улучшилась.</p><p>Однако в декабре 2020 года Red Hat объявила о повороте к <b>CentOS Stream</b> — платформе непрерывного выпуска, находящейся upstream относительно стабильного RHEL. Фактический конец поддержки CentOS Linux 8 наступил в конце 2021 года. Сообщество восприняло это как конец CentOS: «Общий консенсус заключался в том, что CentOS умер, и его заменяет какая-то rolling beta», — говорит Куртцер. Блог-пост с анонсом собрал рекордное количество комментариев, большинство из которых были гневными.</p><h2>Роки возвращается: рождение Rocky Linux</h2><p>К тому времени Куртцер управлял компанией CIQ, занимавшейся высокопроизводительными вычислениями. Его команда уже задумывалась над планом Б на случай исчезновения CentOS. Поэтому в течение двух часов после публикации блога он написал: «Привет всем, я основатель CentOS. Я собираюсь воссоздать проект. Присоединяйтесь ко мне в Slack». За четыре-шесть недель туда вошло более <b>10 000 человек</b>. Платформа не справлялась с лимитом в 10 000 сообщений, но этого хватило, чтобы сформировать команды: релиз-инженерия, тестирование, брендинг, веб-разработка.</p><p>«У нас были футболки и мерч задолго до того, как появился код», — смеется Куртцер. Первые майки гласили: Rocky Linux с пометкой early supporter в скобках. Так появился Rocky Linux. За ним последовал AlmaLinux и ряд других клонов. Куртцер сравнивает конкуренцию между дистрибутивами с футбольными соперничествами, но подчеркивает: «Если что-то случится с Alma, на месте Rocky; если с Rocky — Alma; если с обоими, есть Oracle (при этом Oracle Linux также доступен бесплатно для использования). Это гарантирует стабильность экосистемы».</p><h2>Выводы</h2><p>История CentOS — это не просто хронология технических релизов. Это пример того, как бизнес-модель вендора порождает экосистему, которую сам вендор не в состоянии контролировать. Red Hat создала превосходный enterprise-продукт, но ее ценообразование оставило нишу, которую заполнили энтузиасты. В итоге CentOS не отнял у Red Hat клиентов — он подготовил рынок, приучил инженеров к RPM-стеку и сделал миграцию на платную поддержку логичным следующим шагом.</p><p>Сегодня, когда Rocky Linux и AlmaLinux продолжают дело пересборки RHEL, мы видим тот же принцип: открытые исходники нельзя вернуть в бутылку. Сообщество всегда найдет способ превратить код, «просто лежащий на сервере», в полноценную операционную систему. И, возможно, главный урок истории Куртцера в том, что иногда для создания чего-то масштабного достаточно просто не мешать.</p><blockquote>Я искренне верю, что CentOS был очень полезен для RHEL в целом, учитывая выбор именно такой бизнес-модели.</blockquote><p>Источники: интервью Грегори Куртцера изданию <a href="https://www.theregister.com/os-platforms/2026/06/08/history-of-centos-how-a-biochemists-linux-hobby-project-became-the-enterprise-worlds-default-operating-system/5251530">The Register</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>IPv6-зоны в URL: почему Go падает на fe80::%eth0 и как это чинить</title>
      <link>https://tproger.ru/articles/ipv6-zony-v-url-pochemu-go-padaet-na-fe80-eth0-i-kak-eto-chinit</link>
      <comments>https://tproger.ru/articles/ipv6-zony-v-url-pochemu-go-padaet-na-fe80-eth0-i-kak-eto-chinit?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/ipv6-zony-v-url-pochemu-go-padaet-na-fe80-eth0-i-kak-eto-chinit</guid>
      <description><![CDATA[<p>Разбираем, как IPv6 link-local адреса с зонами ломают парсинг URL в Go, nginx и Python. Почему % нужно кодировать как %25 по RFC 6874 с 2013 года. Узнайте, как правильно собирать URL и не сломать продакшен.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/ipv6-zony-v-url-pochemu-go-padaet-na-fe80-eth0-i-kak-eto-chinit">IPv6-зоны в URL: почему Go падает на fe80::%eth0 и как это чинить</a>»</p>]]></description>
      <category><![CDATA[Интернет]]></category>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Open Source]]></category>
      <category><![CDATA[Веб-разработка]]></category>
      <category><![CDATA[Языки программирования]]></category>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Golang]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 05 Jun 2026 12:56:04 GMT</pubDate>
      <content:encoded><![CDATA[<p>В URL с IPv6 link-local адресами символ % зоны интерфейса нужно кодировать как %25 — иначе парсер Go выбросит ошибку. Если вы пишете сервис, который ходит по локальной сети через IPv6, и ловите странную ошибку парсинга URL, скорее всего, вы столкнулись с одним из самых неочевидных граничных случаев современной работы с сетями.</p><p>В IPv6 каждый сетевой интерфейс получает <b>link-local адрес</b> из диапазона fe80::/10 (первые 10 бит фиксированы, остальное — адрес интерфейса). Если у машины два интерфейса — например, Ethernet и Wi-Fi — оба будут в одном и том же префиксе. Вопрос: как операционная система понимает, к какому именно интерфейсу адресовать пакет? Ответ — <b>зоны (scopes)</b>.</p><p>В IPv6 зона интерфейса записывается через %: fe80::4%eth0. Это нужно, чтобы различать link-local адреса на разных сетевых интерфейсах.</p><p>В URL зона попадает внутрь квадратных скобок: [fe80::4%eth0]:80. Но символ % в URL — это начало percent-encoding, поэтому парсер ломается.</p><p>Решение — экранировать % как %25: [fe80::4%25eth0]:80. Это поведение зафиксировано в RFC 6874.</p><p>Проблема затрагивает не только Go, но и nginx, Python requests и браузеры. Поддержка зон в HTTP-клиентах остаётся фрагментарной.</p><h2>Как зоны работают в IPv6</h2><p>Зона (или scope ID) — это механизм, позволяющий ядру отличать адреса из пересекающихся диапазонов. Для link-local адресов fe80::/10 он критичен: без него роутинговая таблица не поймёт, через какой интерфейс отправлять трафик.</p><p>Формат зоны зависит от ОС. В Linux это имя интерфейса — eth0, wlan0, ens192. В Windows — числовой идентификатор интерфейса. Полный адрес выглядит так:</p><p>Квадратные скобки отделяют хост от порта — иначе двоеточия IPv6-адреса спутаются с разделителем порта.</p><h2>Конфликт зон и URL</h2><p>Теперь вставим этот адрес в URL. На первый взгляд всё просто:</p><p>Но попробуем распарсить его в Go:</p><p>Получаем ошибку:</p><p>Что произошло? В URL любой символ, не входящий в разрешённый набор, должен быть <b>percent-encoded</b>. Пробел превращается в %20, кириллица — в последовательности вроде %D0%90. Парсер видит %e и пытается декодировать его как hex-последовательность. et — не валидный байт, поэтому URL отклоняется.</p><h2>Почему Go падает и как это чинить</h2><p>С точки зрения стандарта Go ведёт себя корректно. RFC 3986 определяет URL-грамматику, а RFC 6874 специально дополняет её для IPv6-зон: символ % перед zone ID должен быть сам закодирован как %25.</p><p>Правильный URL выглядит так:</p><p>Проверяем в Go:</p><p>Вывод:</p><p>Go корректно декодирует %25 обратно в % при извлечении хоста. То есть библиотека поддерживает RFC 6874, но <b>требует от вызывающего кода заранее закодировать зону</b>.</p><h2>RFC 6874: это не баг, а фича</h2><p>В RFC 6874 формально описан синтаксис IPv6-адресов с зонами в литералах URL. Ключевой фрагмент:</p><p>То есть зона записывается не как %eth0, а как %25eth0. Это выглядит ужасно с точки зрения пользовательского опыта, но таково решение стандартизации: совместимость с существующей URL-грамматикой важнее эргономики.</p><blockquote>Наша индустрия меня удивляет. Стандарт говорит: чтобы записать обычный символ процента в адресе, нужно его самого закодировать процентами. Это ужасно, но, похоже, это граничный случай, который касается не только Go.</blockquote><p>И действительно, та же проблема есть и в других инструментах:</p><ul><li><b>nginx</b> — <a href="https://trac.nginx.org/nginx/ticket/623">тикет #623</a>, созданный более десяти лет назад; проблема отсутствия поддержки link-local адресов с зонами до сих пор актуальна.</li><li><b>Python requests</b> — <a href="https://github.com/psf/requests/issues/6808">issue #6808</a>: даже при ручном кодировании % как %25 библиотека некорректно обрабатывает IPv6-зоны в URL, потому что urllib3 декодирует %25 обратно в %.</li><li><b>Браузеры</b> — draft Schinazi объясняет, почему зоны ломают концепцию origin, и рекомендует использовать mDNS вместо прямого указания link-local адресов в URI.</li></ul><h2>Что делать разработчику</h2><p>Если ваше Go-приложение работает с локальными IPv6-адресами — например, подключается к сервисам в Docker-сети, IoT-устройствам или внутренним API через link-local — учитывайте следующее:</p><ol><li>Перед передачей IPv6-адреса с зоной в url.Parse всегда экранируйте % как %25.</li><li>Используйте net.JoinHostPort для сборки host:port — он корректно оборачивает IPv6 в скобки, но не кодирует зону. Дополнительное кодирование остаётся на вас.</li><li>Если адрес приходит от пользователя, валидируйте его до парсинга: зона должна содержать только допустимые символы (имя интерфейса в Linux, числовой ID в Windows).</li><li>Тестируйте на реальных интерфейсах с разными зонами, чтобы убедиться, что кодирование работает корректно в вашей среде.</li></ol><p><b>На заметку:</b><br />Если вы пишете HTTP-клиент для embedded-устройств или промышленных контроллеров, которые общаются через link-local IPv6, ручное кодирование зоны — не костыль, а необходимость. Большинство библиотек не делают этого автоматически.</p><h2>FAQ</h2><h2>Выводы</h2><p>IPv6-зоны — редкий, но живучий граничный случай. Если вы пишете сетевой код на Go, который должен работать в гетерогенных средах — Docker, Kubernetes, embedded-системы, промышленные сети — знайте, что fe80::1%eth0 в URL превращается в fe80::1%25eth0. Это не баг парсера, а требование стандарта RFC 6874.</p><p>Инкапсулируйте кодирование зоны во вспомогательную функцию и всегда прогоняйте IPv6-адреса через неё перед сборкой URL. Экономия пяти минут сейчас обернётся часом отладки в продакшене, когда сервис внезапно не сможет достучаться до соседнего контейнера по link-local.</p><p><b>Источники:</b><br />• <a href="https://xeiaso.net/notes/2026/ipv6-zones-go-url/">Xe Iaso — IPv6 zones in Go URLs</a><br />• <a href="https://datatracker.ietf.org/doc/html/rfc6874">RFC 6874 — Representing IPv6 Zone Identifiers in Address Literals and Uniform Resource Identifiers</a><br />• <a href="https://datatracker.ietf.org/doc/html/draft-schinazi-httpbis-link-local-uri-bcp-03">draft-schinazi-httpbis-link-local-uri-bcp-03 — IPv6 Link-Local URIs</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Linux-ядро сделает TSC обязательным требованием для x86-процессоров</title>
      <link>https://tproger.ru/news/linux-yadro-sdelaet-tsc-obyazatelnym-trebovaniem-dlya-x86-processo</link>
      <comments>https://tproger.ru/news/linux-yadro-sdelaet-tsc-obyazatelnym-trebovaniem-dlya-x86-processo?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/linux-yadro-sdelaet-tsc-obyazatelnym-trebovaniem-dlya-x86-processo</guid>
      <description><![CDATA[<p>Разработчики Linux-ядра готовятся сделать поддержку TSC безусловным требованием для x86. Узнайте, какие процессоры потеряют поддержку и когда ждать изменений.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/linux-yadro-sdelaet-tsc-obyazatelnym-trebovaniem-dlya-x86-processo">Linux-ядро сделает TSC обязательным требованием для x86-процессоров</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Legacy]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 03 Jun 2026 08:00:49 GMT</pubDate>
      <content:encoded><![CDATA[<p>Разработчики ядра Linux готовятся сделать поддержку TSC безусловным требованием для всех x86-процессоров. Это стало возможным после снятия поддержки устаревших чипов: Intel 486 уже исключён из кодовой базы, а поддержка AMD K5 и AMD Elan находится в процессе удаления.</p><p>TSC (Time Stamp Counter) — это высокоточный счётчик тактов процессора, появившийся ещё во времена Intel Pentium. Он позволяет ядру измерять время с минимальными накладными расходами и используется в задачах от профилирования до планирования процессов.</p><p>Ранее код ядра содержал альтернативные пути для систем без TSC, поскольку поддержка распространялась на процессоры i486 и другие старые чипы, где счётчик отсутствовал. Теперь, когда эти архаичные платформы исключены из кодовой базы, мейнтейнеры подготовили патч, который делает TSC обязательным через систему конфигурации ядра (Kconfig).</p><p>Параллельно из ядра вырежут альтернативные ветви кода без TSC: лишние проверки и резервные реализации уйдут, что упростит кодовую базу.</p><p>Ядро Linux готовится сделать TSC безусловным требованием для x86-процессоров.</p><p>Решение стало возможно благодаря снятию поддержки устаревших чипов: Intel 486, AMD K5 и AMD Elan.</p><p>Патч уже находится в подготовительной ветке ядра и ожидается в цикле разработки Linux 7.2.</p><p>Удаление альтернативных ветвей кода упростит кодовую базу.</p><h2>Что изменится для x86-процессоров в Linux</h2><p>Для современного железа — ничего: все актуальные x86-процессоры (от Intel Core и Xeon до AMD Ryzen и EPYC) давно имеют TSC. Изменение затронет только разработчиков, которые всё ещё собирают ядро для ретро-совместимости.</p><p>Поддержка Intel 486 держалась в ядре десятилетиями из-за принципа максимальной совместимости, но в 2025–2026 годах мейнтейнеры начали массовую чистку legacy-кода. Удаление non-TSC путей — логичное продолжение этого процесса: раз чипов без счётчика больше не поддерживают, зачем тащить обходные механизмы?</p><h2>Выводы</h2><p>Отказ от альтернативных ветвей кода без TSC — ещё один шаг к чистке legacy-кода в Linux. Упрощение архитектуры x86-платформы ускорит дальнейшую разработку ядра и снизит нагрузку на мейнтейнеров, которые больше не будут тестировать редкие конфигурации без счётчика тактов.</p><p>Источник: <a href="https://www.phoronix.com/news/Linux-Kernel-TSC-Unconditional" rel="noopener noreferrer">Phoronix</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Vim Classic 8.3: стабильный форк Vim без Vim9 script</title>
      <link>https://tproger.ru/news/vim-classic-8-3-stabilnyj-fork-vim-bez-vim9-script</link>
      <comments>https://tproger.ru/news/vim-classic-8-3-stabilnyj-fork-vim-bez-vim9-script?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/vim-classic-8-3-stabilnyj-fork-vim-bez-vim9-script</guid>
      <description><![CDATA[<p>Drew DeVault выпустил Vim Classic 8.3.0 — LTS-форк классического редактора на базе Vim 8.2 с бэкпортированными патчами. Узнайте, чем он отличается от оригинала.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/vim-classic-8-3-stabilnyj-fork-vim-bez-vim9-script">Vim Classic 8.3: стабильный форк Vim без Vim9 script</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Open Source]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Разработка]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 03 Jun 2026 06:45:56 GMT</pubDate>
      <content:encoded><![CDATA[<p>Если вы предпочитаете классический Vim и не готовы к Vim9 script — у Drew DeVault появился подарок. Выпущен стабильный LTS-форк <b>Vim Classic 8.3.0</b>, который развивает редактор в «параллельной вселенной» без революционных изменений.</p><p>Vim Classic — это форк текстового редактора Vim, поддерживаемый без помощи генеративного ИИ. Проект возглавляет известный разработчик open source Дрю Дево (Drew DeVault). Цель форка — сохранить и поддерживать классическую версию Vim, которую считают стабильной и предсказуемой.</p><p>Релиз Vim Classic 8.3.0 основан на Vim 8.2.0148. Разработчики консервативно перенесли (бэкпортировали) исправления ошибок и патчи безопасности из последующих версий оригинального Vim. При этом в форке намеренно не используется Vim9 script — относительно новый диалект скриптования, который появился в Vim 9 и вызвал дискуссии в сообществе.</p><p>Vim Classic 8.3.0 — стабильный LTS-форк классического Vim от Drew DeVault.</p><p>Основан на Vim 8.2.0148 с бэкпортом багфиксов и патчей безопасности.</p><p>В форке намеренно нет Vim9 script — только классический синтаксис.</p><p>Отдельные плагины могут быть несовместимы из-за отсутствия новых фич.</p><p>Проект рекомендуется для энтузиастов, готовых к возможным рискам.</p><h2>Почему появился форк</h2><p>В 2022 году Bram Moolenaar выпустил Vim 9 с новым диалектом Vim9 script. Он обещал прирост производительности в 10–100 раз по сравнению с классического скриптования. При этом новый диалект не обеспечил полную обратную совместимость, поэтому для полного использования преимуществ плагины желательно адаптировать. Часть сообщества восприняла это как разрыв с традициями.</p><p>Drew DeVault, создатель платформы SourceHut и автор оконного менеджера Sway, предложил альтернативу: взять проверенную базу Vim 8.2, аккуратно добавить важные исправления и выпустить её как Vim 8.3 — ту версию, которой, по его мнению, мог бы быть Vim без революционных изменений.</p><h2>Что внутри Vim Classic 8.3</h2><ul><li>Стабильная кодовая база Vim 8.2.0148.</li><li>Перенесённые патчи безопасности (CVE, выявленные между версиями 8.2 и современным Vim).</li><li>Сохранение классического скриптового движка без Vim9 script.</li><li>Поддержка благотворительности в Уганде (charityware), как и в оригинальном Vim.</li></ul><p>Разработчики признают, что не оценили все тысячи патчей, вышедших с момента Vim 8.2, поэтому старые баги могут всплыть. Пользователей просят помогать с выявлением и обратным портированием исправлений.</p><h2>FAQ</h2><h2>Выводы</h2><p>Vim Classic 8.3.0 — интересный эксперимент для тех, кто ценит стабильность и привычный интерфейс классического Vim. Форк не пытается заменить оригинал, а предлагает альтернативную ветку развития без спешки и революций.</p><blockquote>Мы представляем альтернативную историю, в которой Vim 8.3 был выпущен без Vim9 script.</blockquote><p>Источник: <a href="https://vim-classic.org/news/vim-8.3-released.html">vim-classic.org</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Вышел Wine 11.10 с VKD3D 2.0 и улучшенной совместимостью VBScript</title>
      <link>https://tproger.ru/news/vywel-wine-11-10-s-vkd3d-2-0-i-uluchwennoj-sovmestimostyu-vbscrip</link>
      <comments>https://tproger.ru/news/vywel-wine-11-10-s-vkd3d-2-0-i-uluchwennoj-sovmestimostyu-vbscrip?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/vywel-wine-11-10-s-vkd3d-2-0-i-uluchwennoj-sovmestimostyu-vbscrip</guid>
      <description><![CDATA[<p>Wine 11.10 получил обновление до VKD3D 2.0 для Direct3D 12 через Vulkan, встроенную поддержку XPath и улучшения VBScript. Разбираем ключевые изменения.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/vywel-wine-11-10-s-vkd3d-2-0-i-uluchwennoj-sovmestimostyu-vbscrip">Вышел Wine 11.10 с VKD3D 2.0 и улучшенной совместимостью VBScript</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Windows]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sun, 31 May 2026 07:23:59 GMT</pubDate>
      <content:encoded><![CDATA[<p>Вышел очередной двухнедельный developmental-релиз <b>Wine 11.10</b> — слоя совместимости для запуска Windows-приложений и игр на Linux, macOS и других платформах. Ключевое новшество — обновление библиотеки VKD3D до версии 2.0, которая отвечает за реализацию Direct3D 12 поверх Vulkan.</p><p><b>Wine</b> (Wine Is Not an Emulator) — это open-source реализация Windows API, позволяющая запускать Windows-программы на Unix-подобных системах без виртуализации и ощутимой потери производительности.</p><p>Версия 11.10 интегрирует <a href="https://www.winehq.org/">WineHQ</a> свежий релиз <b>VKD3D 2.0</b>. Библиотека, вышедшая на прошлой неделе, получила улучшенную обработку HLSL-шейдеров, более корректную работу с legacy-байткодом Direct3D, доработки эффектов и интеграции DXIL. Также добавлена экспериментальная поддержка генерации шейдеров в Metal Shading Language для устройств Apple — это отдельный upstream-проект, не связанный с VKD3D-Proton от Valve/CodeWeavers, который используется в Steam Play (Proton).</p><p>Помимо графики, разработчики реализовали поддержку <b>XPath</b> без привязки к внешней библиотеке libxml2 — теперь соответствующие операции выполняются встроенными средствами. Кроме того, в релиз вошли многочисленные улучшения совместимости с <b>VBScript</b>.</p><p><b>Wine 11.10</b> — developmental-релиз от 29 мая 2026 года.</p><p>Обновление <b>VKD3D до 2.0</b> для Direct3D 12 поверх Vulkan.</p><p>Экспериментальная поддержка <b>Metal Shading Language</b> для Apple-устройств.</p><p>Нативная реализация <b>XPath</b> без зависимости от libxml2.</p><p><b>17 исправлений</b> багов для конкретных игр и приложений.</p><h2>Что нового в Wine 11.10</h2><h3>VKD3D 2.0 и Direct3D 12</h3><p>VKD3D — это официальная upstream-реализация Direct3D 12 через Vulkan от команды Wine. Версия 2.0 приносит:</p><ul><li>улучшенную обработку HLSL-шейдеров;</li><li>лучшую поддержку legacy-байткода Direct3D;</li><li>новые возможности эффектов и улучшенную интеграцию DXIL;</li><li>экспериментальную генерацию шейдеров в Metal Shading Language для macOS и iOS.</li></ul><p>Важно: для игр на Linux через Steam продолжает использоваться <b>VKD3D-Proton</b> — downstream-форк от Valve и CodeWeavers, который развивается отдельно и оптимизирован под игровые сценарии.</p><h3>XPath без libxml2</h3><p>Wine 11.10 получил собственную реализацию языка запросов <b>XPath</b> для работы с XML-документами. Ранее для этой функциональности требовалась внешняя библиотека libxml2, теперь зависимость устранена — это упрощает сборку и снижает поверхность для потенциальных проблем совместимости.</p><h3>VBScript и исправления</h3><p>Релиз содержит ряд улучшений совместимости с <b>VBScript</b> — языком сценариев Microsoft, который до сих пор используется в унаследованных корпоративных приложениях и системах администрирования Windows.</p><p>Также закрыто <b>17 известных ошибок</b>, влияющих на работу конкретных игр и программ. Полный список доступен в <a href="https://www.winehq.org/announce/11.10">официальном анонсе</a> на WineHQ.org.</p><h2>FAQ</h2><h2>Выводы</h2><p>Wine 11.10 — типичный двухнедельный developmental-релиз: без революций, но с важными инкрементальными улучшениями. Обновление VKD3D до 2.0, нативная поддержка XPath и доработки VBScript делают слой совместимости чуть более зрелым и самодостаточным.</p><blockquote>Wine продолжает закрывать разрыв между Windows-экосистемой и открытыми платформами — не через эмуляцию, а через тщательную реализацию нативных API.</blockquote><p>Источник: <a href="https://www.phoronix.com/news/Wine-11.10-Released">Phoronix</a>. Подробности и загрузки — на <a href="https://www.winehq.org/announce/11.10">WineHQ.org</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Уязвимость Fragnasia позволяет получить root на Linux без состояния гонки</title>
      <link>https://tproger.ru/news/uyazvimost-fragnesia-pozvolyaet-poluchit-root-na-linux-bez-gonki</link>
      <comments>https://tproger.ru/news/uyazvimost-fragnesia-pozvolyaet-poluchit-root-na-linux-bez-gonki?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/uyazvimost-fragnesia-pozvolyaet-poluchit-root-na-linux-bez-gonki</guid>
      <description><![CDATA[<p>Fragnasia (CVE-2026-46300): баг в ядре Linux даёт локальному пользователю root без состояния гонки. Все ядра до 13 мая 2026 уязвимы, PoC опубликован — обновитесь.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/uyazvimost-fragnesia-pozvolyaet-poluchit-root-na-linux-bez-gonki">Уязвимость Fragnasia позволяет получить root на Linux без состояния гонки</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Уязвимость]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 14 May 2026 10:17:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>Обновите ядро Linux: исследователь Zellic обнаружил новую уязвимость класса Dirty Frag, получившую имя Fragnasia и идентификатор <b>CVE-2026-46300</b>. Она затрагивает все ядра, выпущенные до 13 мая 2026 года, и позволяет непривилегированному локальному пользователю повысить привилегии до root — без состояния гонки и без предварительных прав.</p><p>Fragnasia — самостоятельная логическая ошибка в подсистеме <b>XFRM ESP-in-TCP</b> ядра Linux. Используя её, атакующий может записывать произвольные байты в кэш страниц доступных только для чтения файлов (page cache), в том числе системных бинарников, и таким образом, например, подменить содержимое /usr/bin/su, чтобы получить оболочку с правами root.</p><p>CVE-2026-46300 затрагивает все ядра Linux до 13 мая 2026 года.</p><p>Уязвимость позволяет локальному пользователю получить root без состояния гонки.</p><p>Эксплойт PoC уже опубликован исследователем William Bowling (Zellic).</p><p>Fragnasia относится к классу Dirty Frag, но это отдельный баг с отдельным патчем.</p><p>Временная мера: выгрузить модули esp4, esp6, rxrpc (ломает IPsec и AFS).</p><h2>Что такое Fragnasia и как она связана с Dirty Frag</h2><p>Уязвимость была раскрыта Уильямом Боулингом, руководителем направления assurance в компании Zellic, 13 мая 2026 года. Вместе с отчётом он опубликовал рабочий proof-of-concept эксплойт: он записывает примитив memory-write в ядро, затем через него портит page cache бинарника /usr/bin/su, чтобы получить root-оболочку.</p><p>Fragnasia принадлежит к новому классу уязвимостей <b>Dirty Frag</b>, который был раскрыт неделей ранее. Dirty Frag объединяет баги в том же XFRM-коде, позволяющие модифицировать защищённые системные файлы в памяти. Однако в отличие от оригинального Dirty Frag, который цепляет два отдельных CVE (<a href="https://www.bleepingcomputer.com/news/security/new-linux-dirty-frag-zero-day-gives-root-on-all-major-distros/">CVE-2026-43284</a> и CVE-2026-43500) через состояние гонки, Fragnasia — самостоятельный баг, требующий отдельного патча.</p><blockquote>Fragnasia — член класса уязвимостей Dirty Frag. Это отдельный баг в ESP/XFRM, отличный от dirtyfrag, с собственным патчем. Однако он находится в той же поверхности атаки, и митигация для него такая же, как для dirtyfrag. Он злоупотребляет логической ошибкой в подсистеме Linux XFRM ESP-in-TCP для произвольной побайтовой записи в page cache файлов только для чтения — без какой-либо состояния гонки.</blockquote><h2>Как работает эксплойт Fragnasia: технические детали CVE-2026-46300</h2><p>Ошибка находится в подсистеме <b>XFRM</b> — фреймворке трансформации пакетов ядра Linux, используемом для реализации IPsec. Конкретно затронут путь обработки ESP-пакетов поверх TCP-соединений (ESP-in-TCP). Логический баг позволяет выйти за пределы разрешённых операций записи и изменить содержимое страниц в page cache — включая страницы, отображённые из файлов, которые открыты только на чтение (O_RDONLY).</p><p>Механизм эксплойта PoC: злоупотребляя этим примитивом записи, атакующий перезаписывает page cache системного бинарника /usr/bin/su. Поскольку запись происходит в памяти (а не на диске), после перезагрузки бинарник восстанавливается. Для сервера с непрерывной работой это сценарий полного захвата: root-доступ без следов на диске.</p><h2>Как защититься</h2><p>Полная защита — обновление ядра до версии, выпущенной 13 мая 2026 года или позже. Дистрибутивы Linux уже выпускают патчи. Если обновление невозможно немедленно, применяйте временную митигацию:</p><p><b>Важно:</b> выгрузка модулей сломает AFS (распределённая файловая система) и IPsec VPN. Оцените последствия перед применением в продакшне.</p><p>Эти же команды используются для митигации Dirty Frag — они отключают уязвимые модули ядра и запрещают их повторную загрузку через /etc/modprobe.d/dirtyfrag.conf.</p><ol><li>Проверьте версию ядра: uname -r</li><li>Обновитесь через менеджер пакетов: apt upgrade / dnf upgrade / yum update</li><li>Перезагрузите систему для загрузки нового ядра</li><li>Если обновление невозможно — выгрузите esp4, esp6, rxrpc командами выше</li></ol><h2>Контекст: волна уязвимостей класса Dirty Frag</h2><p>Раскрытие Fragnasia происходит на фоне нескольких недавних серьёзных уязвимостей в ядре Linux:</p><ul><li><b>Dirty Frag</b> (CVE-2026-43284 + CVE-2026-43500) — предшественник Fragnasia, раскрыт неделей ранее. Публичный PoC эксплойт доступен.</li><li><b>Copy Fail</b> — ещё одна уязвимость повышения привилегий, сейчас активно эксплуатируется в атаках. 1 мая 2026 CISA добавило её в каталог известных эксплуатируемых уязвимостей (KEV) и обязало федеральные агентства США закрыть её до 15 мая.</li><li><b>Pack2TheRoot</b> — уязвимость в демоне PackageKit, присутствовавшая незамеченной десять лет. Закрыта в апреле 2026.</li></ul><p>Все три уязвимости — локальное повышение привилегий до root. Наличие публичных PoC для Fragnasia и Dirty Frag делает их особенно опасными для систем с ненадёжными локальными пользователями (shared hosting, контейнерные среды).</p><h2>Итого</h2><p>Fragnasia — третья за месяц серьёзная уязвимость повышения привилегий в ядре Linux, и первая в новом классе Dirty Frag с публичным PoC без состояния гонки. Обновите ядро в первую очередь на серверах с доступом нескольких пользователей, в контейнерных окружениях (если namespace-изоляции недостаточно) и там, где уже применялась митигация для Copy Fail.</p><p>Подробнее — в <a href="https://www.bleepingcomputer.com/news/security/new-fragnasia-linux-flaw-lets-attackers-gain-root-privileges/">материале BleepingComputer</a>. База уязвимостей NVD: <a href="https://nvd.nist.gov/vuln/detail/CVE-2026-46300">CVE-2026-46300 на NIST</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>OwnCloud – аналог Nextcloud: для чего использовать и как настроить облачное хранилище</title>
      <link>https://tproger.ru/articles/owncloud-analog-nextcloud-dlya-chego-ispolzovat-i-kak-nastroi</link>
      <comments>https://tproger.ru/articles/owncloud-analog-nextcloud-dlya-chego-ispolzovat-i-kak-nastroi?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Oksana Karelina]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/articles/owncloud-analog-nextcloud-dlya-chego-ispolzovat-i-kak-nastroi</guid>
      <description><![CDATA[<p>ownCloud vs Nextcloud, что лучше? Какое облачное хранилище выбрать? Как может помочь связка S3 с ownCloud?
</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/articles/owncloud-analog-nextcloud-dlya-chego-ispolzovat-i-kak-nastroi">OwnCloud – аналог Nextcloud: для чего использовать и как настроить облачное хранилище</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Android]]></category>
      <category><![CDATA[Опрос]]></category>
      <category><![CDATA[MySQL]]></category>
      <category><![CDATA[Конференции]]></category>
      <category><![CDATA[IDE]]></category>
      <category><![CDATA[SQL]]></category>
      <category><![CDATA[Windows]]></category>
      <category><![CDATA[iOS]]></category>
      <category><![CDATA[Работа]]></category>
      <category><![CDATA[Tor]]></category>
      <category><![CDATA[Боты]]></category>
      <category><![CDATA[Rust]]></category>
      <category><![CDATA[HR]]></category>
      <category><![CDATA[Docker]]></category>
      <category><![CDATA[macOS]]></category>
      <category><![CDATA[ICO]]></category>
      <category><![CDATA[Redis]]></category>
      <category><![CDATA[Маркетинг]]></category>
      <category><![CDATA[QA]]></category>
      <category><![CDATA[Мессенджер]]></category>
      <category><![CDATA[Персональные данные]]></category>
      <category><![CDATA[Сервер]]></category>
      <category><![CDATA[Дизайн]]></category>
      <category><![CDATA[Машин]]></category>
      <category><![CDATA[1C]]></category>
      <category><![CDATA[Бизнес]]></category>
      <category><![CDATA[Статьи]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 07 May 2026 08:40:02 GMT</pubDate>
      <content:encoded><![CDATA[<p>Вы когда-нибудь задумывались, сколько информации производит человечество?</p><p>Если верить статистике, сейчас ежедневно создается около <a href="https://explodingtopics.com/blog/data-generated-per-day">402,74</a> миллионов терабайт данных.</p><p>Согласитесь, довольно внушительная цифра.</p><p>В этих реалиях, когда объем данных постоянно растет, у каждого из нас рано или поздно может возникнуть вопрос – где хранить рабочие и личные файлы, да еще и так, чтобы сохранить абсолютный контроль над ними.</p><p>Меня зовут Оксана, я маркетолог в Beget и в этой статье хочу поделиться решением, которое мы выбрали у себя в отделе для хранения файлов, когда заметили, что их стало слишком много.</p><p>Мы решили перейти на гибкое объектное хранилище S3 – чтобы централизовано хранить и управлять текстами, креативами, отчетами и другими маркетинговыми материалами с удобным доступом внутри команды, ведь S3 позволяет хранить файлы любого типа и объема и масштабируется автоматически. Осталось только выбрать ПО для хранения файлов в облаке, к которому можно подключить S3.</p><p>Ранее у нас был опыт использования Nextcloud, однако его функционал, подобный швейцарскому ножу (встроенные календарь, конференции, таск-трекер и т. д.), оказался слишком объемен для нашей, по сути, скромной задачи – удобного и стабильного хранения файлов.</p><p>Вот почему мы подыскали аналог Nextcloud – ownCloud. В отличие от более функционального <a href="https://beget.com/ru/cloud/marketplace/nextcloud">Nextcloud</a>, ownCloud заточен исключительно на работу с файлами. И при этом он поддерживает подключение облачного объектного хранилища S3. Поэтому для нас в сравнении Nextcloud vs ownCloud выбор был очевиден.</p><p>В этой статье я расскажу, какие возможности есть у ownCloud, почему это ПО может быть полезно и как настроить связку ownCloud и S3. Если вы хотите организовать безопасное, контролируемое хранение и обмен данными на работе или дома, то этот материал будет для вас полезен.</p><h2>Что может ownCloud</h2><p>Для начала – буквально несколько слов об ownCloud и его возможностях.</p><p>Это программное обеспечение с открытым исходным кодом для хранения, синхронизации и обмена файлами появилось в 2010 году благодаря усилиям разработчика KDE Франка Карличека, который <a href="https://ru.wikipedia.org/wiki/OwnCloud">стремился</a> создать бесплатную альтернативу коммерческим облачным сервисам хранения данных.</p><h3>OwnCloud позволяет:</h3><ol><li>получать доступ к данным из любой точки мира и хранить файлы на собственном сервере – под вашим полным контролем;</li><li>синхронизировать данные между устройствами – доступ к файлам возможен с компьютеров (Windows, macOS, Linux), смартфонов (iOS, Android) и через браузер, изменения на одном устройстве мгновенно появляются на всех остальных;</li><li>делиться файлами и папками по ссылке, настраивая права доступа, пароли и срок действия ссылок;</li><li>совместно работать с документами, отслеживать историю изменений и возвращаться к любой предыдущей версии файла.</li></ol><blockquote>Только ownCloud сочетает в себе полный контроль над данными с простыми в использовании функциями обмена файлами, делая совместную работу более эффективной и безопасной.</blockquote><p>Сегодня ownCloud используют <a href="https://owncloud.com/customers/">компании</a> (Philips, Nationwide, Zeppelin и др.) в самых разных сферах (IT, машиностроение, медицина и т. д.).</p><p>При этом решение подходит не только для работы, но и для личных целей, когда нужно обменяться фото и видео с родственниками и друзьями, ведь, по мнению пользователей, среди преимуществ ownCloud – <a href="https://www.capterra.com/p/176602/ownCloud/reviews/">простота настройки</a> и <a href="https://www.temjournal.com/content/102/TEMJournalMay2021_954_960.pdf">удобная синхронизация с различными гаджетами</a>.</p><blockquote>С ownCloud мне не нужно слепо доверять какой-то неопределенной организации. Я контролирую, как происходит обмен файлами, и ownCloud помогает мне на каждом этапе.</blockquote><p>OwnCloud позволяет решать самые разные задачи, связанные с работой с файлами, – расскажем на примере трех кейсов, как это облачное хранилище помогает нам в отделе маркетинга.</p><h2>Для каких задач мы используем ownCloud и S3</h2><h3>1. Централизованное управление материалами</h3><p>Мы часто работаем с текстами, изображениями и презентациями. Дизайнеры и авторы загружают эти материалы в ownCloud, файлы автоматически сохраняются в S3, а для удобства поиска у нас настроены теги.</p><p>В итоге каждый член команды может видеть версии файлов (это важно для правок), нет хаоса в почте и мессенджерах.</p><h3>2. Безопасное взаимодействие с подрядчиками</h3><p>Связка ownCloud и S3 позволяет выгружать внешним специалистам материалы и получать результаты работ без прямого доступа к внутренней сети компании. Мы создали папку с публичной ссылкой, но жесткими ограничениями – паролем, сроком жизни ссылки в течение нескольких дней и разрешением на загрузку файлов без права просмотра папки.</p><p>На практике это работает так: менеджер создает ссылку и отправляет подрядчику, подрядчик переходит по ссылке и загружает архив с готовыми материалами, файл попадает в ownCloud, а его содержимое сохраняется в S3. Таким образом, подрядчик не видит, какие еще файлы лежат в папке, а мы контролируем, кто, что и когда загрузил.</p><h3>3. Долгосрочный архив креативов и отчетов</h3><p>По закону (152-ФЗ в РФ или GDPR в Европе) компания обязана хранить персональные данные клиентов, а также отчеты о рассылках и рекламных акциях на протяжении определенного времени.</p><p>Для решения этой задачи мы настроили правило: файлы старше 90 дней автоматически перемещаются в S3 Glacier (холодное хранилище) – этот класс снижает стоимость хранения, а если, например, юристу понадобится скачать какой-нибудь отчет спустя 2–3 года, он просто выгрузит его из ownCloud буквально за 5–10 минут.</p><p>Теперь – в деталях и по шагам о том, как начать использовать ownCloud в связке с S3.</p><h2>Как развернуть ownCloud и подключить S3</h2><p>OwnCloud удобно использовать с объектным хранилищем S3 – таким образом можно:</p><ol><li>масштабировать систему – S3 расширяется автоматически и не имеет ограничений по объему и количеству размещаемых данных и файлов;</li><li>оптимизировать затраты – можно платить не за дорогую конфигурацию виртуального сервера с большим объемом диска, а лишь за фактически занимаемое место, по модели pay as you go (оплата по мере потребления);</li><li>повысить надежность хранения – за счет встроенной в S3 тройной репликации данных (файлы хранятся в 3 копиях и размещаются на независимых серверах в разных стойках для абсолютной сохранности данных).</li></ol><h3>Итак, разберем, как настроить связку ownCloud и S3.</h3><p>Разработчики ownCloud предлагают два варианта установки. Можно скачать ownCloud и установить его вручную или использовать Docker-контейнеры. Мы выберем второй вариант.</p><p>Для размещения ownCloud в нашем примере создадим виртуальный сервер на базе <a href="https://beget.com/ru/cloud/marketplace/docker">готового решения Docker</a>.</p><p>Можно подключиться к серверу по SSH или с помощью терминала в панели управления.</p><p>Для размещения файлов создайте бакет объектного хранилища S3. Реквизиты доступа к нему будут в карточке бакета в панели:</p><figure><img src="https://media.tproger.ru/user-uploads/105012/2026-04-29/ee49d00b-7e32-4b8d-8ad4-bbbaeb0c3bb0.webp" alt="" /></figure><p>Создайте директорию для размещения конфигурационных файлов проекта и перейдите в нее:</p><p>Затем вставьте в файл docker-compose.yml следующее содержимое с помощью любого текстового редактора:</p><p>После этого создайте файл .env, в котором будут храниться значения переменных. Шаблон файла следующий:</p><p>Теперь необходимо отредактировать эти строки:</p><ol><li>ownCloud_DOMAIN и ownCloud_TRUSTED_DOMAINS – укажите домен (так как ownCloud будет размещен за обратным прокси, указывать рабочий порт здесь не требуется);</li><li>ADMIN_USERNAME – логин администратора;</li><li>ADMIN_PASSWORD – пароль администратора.</li></ol><p><i>Обратите внимание! Изменение ADMIN_USERNAME и ADMIN_PASSWORD уже после развертывания контейнеров не возымеет эффекта. Изменить пароль администратора вы можете в настройках пользователя в веб-интерфейсе.</i></p><p>Далее необходимо указать параметры подключения к S3.</p><ul><li>ownCloud_OBJECTSTORE_BUCKET – имя бакета S3;</li><li>ownCloud_OBJECTSTORE_ENDPOINT – эндпоинт хранилища (например, https://s3.ru1.storage.beget.cloud);</li><li>ownCloud_OBJECTSTORE_REGION – регион (ru1 для Beget);</li><li>ownCloud_OBJECTSTORE_KEY – Access key бакета;</li><li>ownCloud_OBJECTSTORE_SECRET – Secret key бакета.</li></ul><p>Сохраните файл.</p><p>Остается лишь добавить файл конфигурации для Caddy – обратного прокси, через который пользователи будут получать доступ к ownCloud.</p><p>Создайте директорию config:</p><p>После чего создайте в ней файл конфигурации Caddyfile. Добавьте в него следующее содержимое, указав вместо ownCloud.betutorial.ru ваш домен ownCloud:</p><p><i>Обратите внимание! Caddy выпустит SSL-сертификат на домен автоматически.</i></p><p>Все запросы к домену будут проксироваться в контейнер ownCloud_server.</p><p>На этом настройка конфигурационных файлов завершена, можно запускать контейнеры:</p><p>Потребуется несколько минут, чтобы docker загрузил образ и развернул контейнеры.</p><p>После запуска перейдите по домену, чтобы проверить работу хранилища:</p><figure><img src="https://media.tproger.ru/user-uploads/105012/2026-04-29/934faf67-2939-40f3-840e-88af18ebfde3.webp" alt="" /></figure><p>Выполните вход со стандартными доступами.</p><p><i>Обратите внимание! Если ownCloud недоступен или вы получаете ошибку при входе со стандартными доступами, проверьте корректность конфигурационных файлов. После внесения изменений перезапустите контейнеры.</i></p><p>После входа вы попадете на главную страницу ownCloud. Перед началом работы мы крайне рекомендуем сменить стандартный пароль администратора. Сделать это можно, нажав на кнопку с именем пользователя в верхней правой части страницы и открыв раздел настроек.</p><figure><img src="https://media.tproger.ru/user-uploads/105012/2026-04-29/9f93c25a-3922-4223-b3bd-b45aaaf61edf.webp" alt="" /></figure><p>Теперь проверим работу объектного хранилища – перейдем на главную страницу и загрузим файлы:</p><figure><img src="https://media.tproger.ru/user-uploads/105012/2026-04-29/51a6e16f-ee9b-4e96-9a5c-7ef765f62286.webp" alt="" /></figure><p>Файлы также появились и в объектном хранилище:</p><figure><img src="https://media.tproger.ru/user-uploads/105012/2026-04-29/16e65ad7-28f9-462c-9af6-990d2cf3c878.webp" alt="" /></figure><p><i>Обратите внимание! Файлы, которые вы удалите в ownCloud, будут перемещены в корзину и останутся в S3. Для их полного удаления очистите корзину ownCloud.</i></p><p>Чтобы делиться паролями с новыми пользователями, необходимо настроить отправку почты в ownCloud, сделать это можно в разделе Settings&gt;General.</p><p>В нашем примере мы настроим отправку через SMTP:</p><figure><img src="https://media.tproger.ru/user-uploads/105012/2026-04-29/45e39a41-4bb1-4d19-9bfe-1e1db3afc4a6.webp" alt="" /></figure><p>После указания данных введите тестовый email и нажмите “Send email”. Если отправка успешна, вы получите уведомление об этом:</p><figure><img src="https://media.tproger.ru/user-uploads/105012/2026-04-29/5a22786d-3995-4e86-9b48-0a17363c8a18.webp" alt="" /></figure><p>А на почтовый ящик поступит письмо:</p><figure><img src="https://media.tproger.ru/user-uploads/105012/2026-04-29/f4043b49-9a17-42ed-a627-34502c2a16e8.webp" alt="" /></figure><p>На этом настройка завершена – можно начинать работать с файлами, используя связку ownCloud и S3.</p><h2>Заключение</h2><p>Если вы ловите себя на мысли, что данных стало настолько много, что поиск нужного файла порой происходит дольше, чем работа с ним (особенно если одни файлы хранятся на почте или в мессенджере, а другие – на ноутбуке или флешке), облачное хранилище может вам помочь.</p><p>Подобное ПО пригодится как для личных целей, так и для бизнеса – недаром в 2025 году в нашей стране был <a href="https://www.kommersant.ru/doc/8178724">зафиксирован</a> рост интереса крупного и среднего бизнеса к технологии облачного хранилища.</p><p>Надеюсь, эта статья была для вас полезна, а облачные хранилища помогут сделать ежедневную работу комфортнее.</p>]]></content:encoded>
    </item>
    <item>
      <title>Linux kernel «Copy Fail»: уязвимость CVE-2026-31431 даёт root через AF_ALG, патчей пока нет</title>
      <link>https://tproger.ru/news/linux-kernel-copy-fail-uyazvimost-cve-2026-31431-dayot-root-che</link>
      <comments>https://tproger.ru/news/linux-kernel-copy-fail-uyazvimost-cve-2026-31431-dayot-root-che?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/linux-kernel-copy-fail-uyazvimost-cve-2026-31431-dayot-root-che</guid>
      <description><![CDATA[<p>CVE-2026-31431 (Copy Fail) — 4-байтная privesc-уязвимость в algif_aead ядра Linux. Ubuntu, RHEL, SUSE без патчей. Разбираем эксплойт и mitigation.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/linux-kernel-copy-fail-uyazvimost-cve-2026-31431-dayot-root-che">Linux kernel «Copy Fail»: уязвимость CVE-2026-31431 даёт root через AF_ALG, патчей пока нет</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Уязвимость]]></category>
      <category><![CDATA[Безопасность]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 30 Apr 2026 12:37:02 GMT</pubDate>
      <content:encoded><![CDATA[<p>На Ubuntu 24.04, RHEL 10.1, SUSE 16 и Amazon Linux 2023 любой пользователь без прав root может стать root за несколько секунд — патча для уязвимости пока нет ни в одном дистрибутиве. <a href="https://cert.europa.eu/publications/security-advisories/2026-005/">CERT-EU выпустил advisory 2026-005</a> 29 апреля и настоятельно рекомендует временные меры для Kubernetes-нод и CI/CD-раннеров с непроверенными нагрузками.</p><p>Уязвимость CVE-2026-31431 по прозвищу <b>Copy Fail</b> — это локальный privilege escalation в ядре Linux с CVSS 7.8. Исследователи опубликовали <a href="https://copy.fail">подробное описание и рабочий PoC</a>; mainline-фикс влит 1 апреля 2026 года, но ни Ubuntu, ни Amazon, ни SUSE до сих пор не выпустили обновлённый пакет ядра.</p><p>Под ударом — все основные дистрибутивы с ядром, собранным с 2017 года. Эксплойт цепляет AF_ALG-сокет с системным вызовом splice(), выполняет произвольную 4-байтовую запись в страницу page-cache, затем подменяет байты в /usr/bin/su — и запускает root-шелл.</p><p><b>CVE-2026-31431 (Copy Fail)</b> — локальный privesc в ядре Linux, CVSS 7.8. Опубликован 29 апреля 2026 года, есть рабочий PoC.</p><p><b>Дыра в модуле algif_aead</b> — часть userspace crypto API ядра. Появилась в 2017 году с коммитом 72548b093ee3.</p><p><b>Затронуты ядра 2017–2026.</b> Подтверждено: Ubuntu 24.04 (6.17), Amazon Linux 2023 (6.18), RHEL 10.1 (6.12), SUSE 16 (6.12). Ubuntu 26.04 «Resolute» и новее — нет.</p><p><b>Патчей нет ни у кого.</b> Mainline-фикс — коммит a664bf3d603d от 1 апреля, но Ubuntu, Amazon, SUSE на 30 апреля статус — «No fix available».</p><p><b>Что делать сейчас:</b> отключить модуль algif_aead через modprobe.d, в контейнерах — блокировать AF_ALG-сокеты через seccomp-профиль.</p><h2>Что такое AF_ALG и где это в системе</h2><p>AF_ALG — это семейство сокетов в ядре Linux, через которое userspace-программы получают доступ к криптографическому API ядра без libcrypto. Открываете сокет с типом AF_ALG, говорите ядру «дай мне AES-GCM», передаёте данные через обычный read/write — и получаете шифрованные обратно. Никаких прав и привилегий не требуется: интерфейс задумывался для удобства, чтобы криптографию можно было дёргать из любой программы.</p><p>Уязвимый компонент — модуль algif_aead, обработчик AEAD-операций (Authenticated Encryption with Associated Data — это AES-GCM, ChaCha20-Poly1305 и подобные алгоритмы). В нём в 2017 году появилась оптимизация: вместо того чтобы копировать данные пользователя в служебный буфер, ядро стало работать прямо со страницами page-cache — кэшем файловой системы. Идея была разумной: убрать лишнюю копию, ускорить шифрование больших файлов. Через девять лет выяснилось, чем это обернулось.</p><h2>Технический разбор: четыре байта в чужой странице</h2><p>Атака собирается из двух примитивов. Первый — AF_ALG-сокет, который из-за оптимизации 2017 года готов писать результат шифрования в любую page-cache-страницу, переданную в scatterlist назначения. Второй — системный вызов splice(), через который непривилегированный процесс может протолкнуть в этот scatterlist страницу из произвольного файла, который разрешено читать.</p><p>Контролировать запись на байт получается так: исследователи подбирают входные данные для AEAD-операции так, чтобы первые четыре байта зашифрованного результата совпали с нужным значением. Эти четыре байта ядро без проверок пишет в указанную страницу — а страница, благодаря splice(), оказывается куском исполняемого файла. Цель — /usr/bin/su: в нужное место кода вставляется четыре байта, которые превращают проверку пароля в return 0. После этого su root пускает любого пользователя без пароля.</p><p>Mainline-фикс — коммит a664bf3d603d, влитый 1 апреля 2026 года, — отменяет ту самую оптимизацию 2017 года: модуль снова работает через служебный буфер, и страницы page-cache в scatterlist назначения больше не попадают.</p><blockquote>На дистрибутивах с включённым AF_ALG это даже не эксплойт в классическом смысле. Это корректное использование документированного интерфейса ядра — просто результат корректного использования оказывается «root».</blockquote><h2>Кого это касается</h2><p>Подтверждённые исследователями системы (с конкретной версией ядра, на которой воспроизвели PoC):</p><ul><li>Ubuntu 24.04 LTS — ядро 6.17.0-1007-aws</li><li>Amazon Linux 2023 — ядро 6.18.8-9.213.amzn2023</li><li>RHEL 10.1 — ядро 6.12.0-124.45.1.el10_1</li><li>SUSE Linux Enterprise 16 — ядро 6.12.0-160000.9-default</li></ul><p>Все остальные дистрибутивы с ядром, собранным между 2017 и текущим релизом, скорее всего, тоже уязвимы: Debian, Arch Linux, Fedora, Rocky Linux, AlmaLinux, Oracle Linux, плюс embedded-сборки. Не затронуто только ядро Ubuntu 26.04 «Resolute» и новее.</p><p>Статус патчей у вендоров на 30 апреля 2026 года:</p><ul><li>Ubuntu 20.04–24.04 — патча нет</li><li>Amazon Linux 2023 — патча нет</li><li>SUSE Linux Enterprise — патча нет</li><li>Red Hat Enterprise Linux — статус неизвестен</li></ul><p>В первую очередь под угрозой — Kubernetes-кластеры и CI/CD-раннеры, где запускаются чужие контейнеры или скрипты: им достаточно AF_ALG-сокета, доступного по умолчанию, чтобы получить root на ноде. Облачные ВМ, где соседствуют разные пользователи и где shared-tenancy не отключён, тоже в группе риска.</p><h2>Что делать прямо сейчас</h2><h3>Отключить модуль algif_aead</h3><p>CERT-EU рекомендует отключать модуль персистентно — через modprobe.d и сразу же выгрузить из памяти, если он уже загружен:</p><p>После этого попытка загрузить модуль вернётся ошибкой, и приложения не смогут открыть AF_ALG-сокет с типом aead. На dm-crypt/LUKS, kTLS, IPsec/XFRM, OpenSSL, GnuTLS, NSS и SSH это никак не повлияет — все они работают через другие интерфейсы. Под удар попадают только программы, которые явно настроены на afalg-движок или открывают сокеты aead/skcipher/hash напрямую. Проверить, кто использует, можно так:</p><h3>Заблокировать AF_ALG в контейнерах через seccomp</h3><p>Эксплойт начинается с открытия AF_ALG-сокета, поэтому в контейнерах достаточно запретить системный вызов socket() для этого семейства. CERT-EU рекомендует это делать на всех контейнеризованных нагрузках вне зависимости от того, пропатчено ядро или нет — это работает и как mitigation, и как defense-in-depth. Минимальный seccomp-профиль:</p><p>Значение 38 — это константа AF_ALG в linux/socket.h. Профиль подключается через --security-opt seccomp=... в Docker и Podman, в Kubernetes — через securityContext.seccompProfile.</p><h2>Выводы</h2><p>Copy Fail — типовая история про оптимизацию ради скорости, которая девять лет хранила в себе одну из самых удобных лазеек к root. Ничего сложного для атакующего, ничего сильно ломающегося при mitigation — а вендоры всё равно опаздывают с патчами. До тех пор, пока в apt update или dnf upgrade не появится новое ядро, защита лежит на админах: один modprobe-блок и один seccomp-профиль закрывают вектор полностью.</p><p>Источники: <a href="https://cert.europa.eu/publications/security-advisories/2026-005/">CERT-EU Security Advisory 2026-005</a>, <a href="https://copy.fail">copy.fail — описание и PoC исследователей</a>, трекеры вендоров: <a href="https://ubuntu.com/security/CVE-2026-31431">Ubuntu</a>, <a href="https://www.suse.com/security/cve/CVE-2026-31431">SUSE</a>, <a href="https://access.redhat.com/security/cve/CVE-2026-31431">Red Hat</a>.</p><p>Проверьте свои ноды и контейнеры прямо сейчас — пропатченных ядер для большинства дистрибутивов всё ещё нет, и ситуация не изменится в ближайшие сутки.</p>]]></content:encoded>
    </item>
    <item>
      <title>Вышел Ubuntu 26.04 LTS «Resolute Raccoon» — Rust в core, Wayland-only и ARM64 desktop</title>
      <link>https://tproger.ru/news/vywel-ubuntu-26-04-lts-resolute-raccoon-rust-v-core-wayland</link>
      <comments>https://tproger.ru/news/vywel-ubuntu-26-04-lts-resolute-raccoon-rust-v-core-wayland?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/vywel-ubuntu-26-04-lts-resolute-raccoon-rust-v-core-wayland</guid>
      <description><![CDATA[<p>Canonical выпустила Ubuntu 26.04 LTS Resolute Raccoon: ядро Linux 7.0, GNOME 50 на Wayland, утилиты на Rust, ARM64 desktop ISO впервые. Поддержка до 2031 года.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/vywel-ubuntu-26-04-lts-resolute-raccoon-rust-v-core-wayland">Вышел Ubuntu 26.04 LTS «Resolute Raccoon» — Rust в core, Wayland-only и ARM64 desktop</a>»</p>]]></description>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Rust]]></category>
      <category><![CDATA[Hardware]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 22 Apr 2026 15:00:05 GMT</pubDate>
      <content:encoded><![CDATA[<p>Если держите сервер или ноутбук на Ubuntu LTS — 23 апреля у вас появилась новая опция. <a href="https://documentation.ubuntu.com/release-notes/26.04/" rel="nofollow">Ubuntu 26.04 LTS «Resolute Raccoon»</a> пришёл с ядром Linux 7.0, десктоп-оболочкой GNOME 50, Rust-переписанными системными утилитами и, впервые в истории Ubuntu, официальным ARM64 desktop ISO. Поддержка — до апреля 2031 года, с подпиской Ubuntu Pro — до апреля 2036 года.</p><p>Релиз замыкает двухлетний LTS-цикл: между Ubuntu 24.04 LTS «Noble Numbat» и 26.04 LTS вышли три промежуточных релиза (24.10, 25.04, 25.10), и именно в них Canonical обкатал большую часть изменений — от замены классических GNOME-приложений на Rust-варианты до Wayland-only сессии и NTSYNC-драйвера для Windows-игр в Proton. К моменту LTS эти переходы уже прошли стадию «сыро» — в 26.04 они приходят готовыми.</p><p><b>Ядро и безопасность</b>: Linux 7.0 как дефолтное ядро, post-quantum подписи модулей (ML-DSA), OpenSSH 10.2p1 с гибридным обменом ключами mlkem768x25519-sha256.</p><p><b>Десктоп</b>: GNOME 50 на Wayland-only сессии, GIMP 3.0, LibreOffice 25.8, Firefox 149, Thunderbird 140 «Eclipse».</p><p><b>Rust в ядре системы</b>: новый монитор ресурсов Resources (с трекингом NPU), PDF-вьюер Papers, просмотрщик картинок Loupe, терминал Ptyxis с интеграцией podman и distrobox — все переписаны на Rust.</p><p><b>Железо</b>: официальный ARM64 desktop ISO с поддержкой Snapdragon X Elite, полноценный Wayland на NVIDIA, apt install rocm для AMD GPU из коробки.</p><p><b>Поддержка</b>: security-обновления до 2031 года, до 2036 года — с Ubuntu Pro ESM.</p><h2>Rust въехал в базовые утилиты — и это главное изменение</h2><p>Главный технический сдвиг 26.04 — системные утилиты GNOME переписываются на Rust. Это не эксперимент энтузиастов, а дефолт новой LTS. Вот что поменялось на вашем рабочем столе:</p><ul><li><b>Resources</b> заменяет System Monitor и Power Statistics. Группирует процессы в приложения, трекает использование GPU (включая видеокодеры), NPU, частоты CPU/GPU/памяти. Написан на Rust с GTK 4.</li><li><b>Papers</b> пришёл на смену Evince как дефолтный PDF-вьюер. Перенесён на GTK4 и частично переписан на Rust.</li><li><b>Loupe</b> вместо Eye of GNOME для картинок — чистый Rust поверх библиотеки Glycin.</li><li><b>Ptyxis</b> заменяет GNOME Terminal. Из интересного — прямая интеграция с podman, toolbox и distrobox (вкладка сразу в контейнере), session-save для восстановления вкладок после перезапуска.</li><li><b>gst-thumbnailers</b> генерирует превью для видео и аудио — через Rust-биндинги к GStreamer. Лучше находит «интересные» кадры, чем Totem.</li></ul><p>Параллельно ядро Linux 7.0 окончательно признало Rust-драйверы как часть основного дерева ядра — они собираются вместе с остальными модулями без отдельных галок в конфиге. Это тот момент, когда «Rust в Linux» перестаёт быть новостью и становится инфраструктурой.</p><h2>Wayland-only, ARM64 desktop и NVIDIA</h2><p>Ubuntu 26.04 окончательно выкидывает X.org-сессию из GDM — десктоп GNOME запускается только под Wayland. Приложения под X.org продолжат работать через XWayland-слой совместимости, а если нужен именно X11 — остаются сессии KDE on X11, Xfce, MATE, i3 и другие.</p><p>Для NVIDIA это первый LTS с полной поддержкой Wayland — включая то, что раньше ломало композитор: XID-ошибки GPU, suspend/resume, Secure Boot-модули. Работает без возни.</p><p>Отдельный пункт — первый в истории Ubuntu официальный ARM64 Desktop ISO. Прицел на виртуальные машины, ACPI+EFI-платформы и устройства на Snapdragon (включая Snapdragon X Elite). Это запуск Ubuntu Desktop как гражданина первого класса на ARM-ноутбуках с UEFI.</p><p>Для AMD ROCm теперь ставится <a href="https://rocm.docs.amd.com/" rel="nofollow">прямо из репозиториев Ubuntu</a> — одной командой sudo apt install rocm. До 26.04 нужно было подключать сторонний репо от AMD и следить за версией — теперь это стандартный deb-пакет.</p><h2>Серверная часть: OpenSSH, post-quantum и разблокировка DSA</h2><p>OpenSSH прыгнул с 9.6p1 в 24.04 LTS до 10.2p1. Главные изменения — про криптографию следующих десяти лет:</p><ul><li>Поддержка гибридного post-quantum обмена ключами <b>mlkem768x25519-sha256</b> — по умолчанию. Это та самая защита от «harvest now, decrypt later».</li><li>Предупреждение при подключении без post-quantum-алгоритмов — чтобы администраторы видели устаревающие SSH-конфиги.</li><li>Слабый DSA-алгоритм подписи <b>удалён</b>. Если у вас где-то остались DSA-ключи — не обновляйте хосты без миграции на ed25519 или RSA.</li><li><b>PerSourcePenalties</b> штрафует IP, которые не дожимают аутентификацию — мягкий встроенный fail2ban.</li><li>Хост-ключи DSA больше не генерируются при установке.</li></ul><p>На уровне ядра появились post-quantum подписи модулей через ML-DSA — CA для kernel modules защищён от будущих квантовых атак. Не ваша ежедневная боль, но LTS со сроком до 2036 обязана это учитывать.</p><h2>Игры под Windows и ускорение видео</h2><p>Для пользователей Steam Play и Wine в Ubuntu 26.04 — новый драйвер NTSYNC, эмулирующий примитивы синхронизации Windows NT. На синтетических тестах даёт заметный прирост FPS в играх, использующих многопоточность через WaitForSingleObject и подобные API.</p><p>Hardware-accelerated video encoding и decoding теперь включены по умолчанию для AMD и Intel через VA-API — никаких дополнительных пакетов. JPEG XL поддерживается из коробки.</p><p>Для Windows-пользователей, которые ставят Ubuntu рядом — улучшен dual boot с BitLocker. Установщик теперь видит зашифрованные разделы и корректно рядом с ними размещается.</p><h2>Как обновиться и что проверить до апдейта</h2><p>Путь обновления с точки зрения Canonical:</p><ol><li>С Ubuntu 24.04 LTS (Noble Numbat) — прямое обновление через do-release-upgrade, Canonical запустит автоматическое предложение через пару недель после релиза.</li><li>С Ubuntu 25.10 (Questing Quokka) — тоже прямое обновление.</li><li>С Ubuntu 22.04 LTS (Jammy Jellyfish) — только через промежуточный апгрейд до 24.04 LTS, и уже потом на 26.04 LTS.</li><li>С Ubuntu 25.04 (EOL с января 2026) — сначала на 25.10, затем на 26.04 LTS. Либо — чистая переустановка.</li><li>Требования: для десктопа нужен двухъядерный 2 GHz, минимум 4 ГБ RAM и 25 ГБ свободного места. Если меньше — смотрите в сторону Xubuntu или Lubuntu.</li></ol><p>Что стоит проверить до нажатия кнопки:</p><ul><li>Кастомные X11-утилиты, которые вы использовали годами, — под Wayland не все работают. Если зависите от autokey, xbindkeys или специфичных скриншотилок — протестируйте в live-сессии сначала.</li><li>Кастомные сборки ядра или out-of-tree модули — Linux 7.0 требует обновления драйверов.</li><li>DSA-ключи в SSH — мигрируйте на ed25519 до апдейта.</li><li>NVIDIA-сетапы с проприетарным драйвером — Canonical обещает полный Wayland, но протестировать на своём железе безопаснее отдельно.</li></ul><h2>Выводы</h2><p>Ubuntu 26.04 LTS — это не «ещё один LTS с обновлёнными пакетами». Это точка, в которой Canonical одновременно закрывает три длинных перехода: Wayland-only на десктопе, Rust в системных утилитах и официальная ARM64-платформа для десктопа. Плюс криптография нового поколения в SSH и ядре, которая закладывает основу на десятилетие вперёд — как раз под срок поддержки LTS.</p><p>Если вы в продакшне на 22.04 LTS — теперь двигаться через 24.04 LTS к 26.04 LTS без спешки, но планово: 22.04 LTS теряет стандартную поддержку в апреле 2027. Если на 24.04 LTS — обновление посимпатичнее, потому что промежуточные релизы пропустили большую часть «переходных болей».</p><p>Источники: <a href="https://documentation.ubuntu.com/release-notes/26.04/" rel="nofollow">Ubuntu 26.04 LTS release notes</a>, <a href="https://documentation.ubuntu.com/release-notes/26.04/summary-for-lts-users/" rel="nofollow">Summary for LTS users</a>, <a href="https://kernel.org/category/releases.html" rel="nofollow">The Linux Kernel Archives</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>В терминале всего 33 Ctrl-шортката — разбор от Julia Evans</title>
      <link>https://tproger.ru/translations/v-terminale-vsego-33-ctrl-wortkata-razbor-ascii-control-charac</link>
      <comments>https://tproger.ru/translations/v-terminale-vsego-33-ctrl-wortkata-razbor-ascii-control-charac?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/translations/v-terminale-vsego-33-ctrl-wortkata-razbor-ascii-control-charac</guid>
      <description><![CDATA[<p>Почему Ctrl-M = Enter, где обрабатываются Ctrl-C и Ctrl-W, как canonical mode отличается от noncanonical и что умеет stty. Перевод Julia Evans.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/translations/v-terminale-vsego-33-ctrl-wortkata-razbor-ascii-control-charac">В терминале всего 33 Ctrl-шортката — разбор от Julia Evans</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Операционные системы]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Переводы]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 20 Apr 2026 10:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>Если вы когда-нибудь нажимали Ctrl-1 в терминале и удивлялись, почему ничего не происходит — это не баг, а ограничение ASCII: только 33 комбинации с Ctrl дают различимый control-код, остальные терминал пропускает как обычный ввод или превращает в ANSI escape-последовательность. Понимание этой таблицы помогает в тех самых моментах, когда терминал «сломан», Ctrl-S внезапно всё заморозил, а Ctrl-W в одной программе удаляет слово, а в другой — закрывает окно. Julia Evans, автор блога <a href="https://jvns.ca/">jvns.ca</a> и <a href="https://wizardzines.com/">иллюстрированных гайдов (zines) про Linux и командную строку</a>, объяснила, почему Ctrl-M — это Enter, а Ctrl-S замораживает терминал. Ниже — перевод её <a href="https://jvns.ca/blog/2024/10/31/ascii-control-characters/">разбора</a>.</p><p>Недавно я много думала про терминал, и вчера мне стало интересно: что вообще происходит со всеми этими «control codes» — Ctrl-A, Ctrl-C, Ctrl-W и так далее? Я собрала таблицу всех 33 ASCII control characters и того, что они делают на моей машине (macOS). Оговорок там миллион, но ниже я расскажу, что это всё значит и какие есть нюансы.</p><ul><li>В ASCII всего <b>33 control-кода</b>: A–Z (26 штук) плюс 7 дополнительных (@, [, \, ], ^, _, ?). Сделать Ctrl-1 как шорткат невозможно.</li><li>Коды обрабатываются <b>в трёх разных местах</b>: OS terminal driver (например, Ctrl-C → SIGINT), библиотека readline (Ctrl-A, Ctrl-E) или само приложение (emacs использует Ctrl-X).</li><li>Ctrl-M = Enter, Ctrl-I = Tab — поэтому их нельзя использовать как отдельные шорткаты без спец-настройки эмулятора.</li><li>Режим терминала — <b>canonical</b> или <b>noncanonical</b> — определяет, кто обрабатывает Backspace, Ctrl-W и Ctrl-U: OS или сама программа. Разбор обоих режимов — в теле статьи.</li><li>Утилита stty -a показывает текущие маппинги OS-кодов, а stty sane лечит «сломанный» терминал.</li><li>Backspace на разных системах посылает либо байт 127, либо 8 — отсюда исторические войны и конфигурации через stty erase.</li></ul><h2>Коды обрабатываются в разных местах</h2><p>Первое, что меня удивило: 33 control-кода делятся (очень условно) на три категории в зависимости от того, где они обрабатываются.</p><ul><li><b>Обрабатываются OS terminal driver</b> — например, когда ОС видит байт 3 (Ctrl-C), она посылает сигнал SIGINT текущей программе.</li><li><b>Передаются приложению как есть</b>, и приложение делает с ними что хочет. Внутри этой группы ещё три подгруппы: соответствуют реальной клавише (Enter → байт 13, Tab, Backspace); используются библиотекой <b>readline</b> для редактирования строки (Ctrl-A, Ctrl-E, Ctrl-W); используются конкретными приложениями (Ctrl-X в emacs).</li></ul><p>Никакой логики в том, какой код к какой категории относится, нет — просто так исторически сложилось.</p><h2>Почему именно 33 — и почему «Ctrl-1» не существует</h2><p>Ещё один сюрприз: control-кодов всего 33 штуки — буквы A–Z плюс семь дополнительных символов (@, [, \, ], ^, _, ?). Это значит, что если вы хотите сделать Ctrl-1 шорткатом в терминальном приложении — такого шортката просто не существует. На моей машине Ctrl-1 — это ровно то же самое, что нажать 1, а Ctrl-3 эквивалентно Ctrl-[.</p><p>Ctrl+Shift+C тоже не control-код — это комбинация, которую обрабатывает сам эмулятор терминала. В Linux Ctrl+Shift+X часто используется эмулятором для копирования, открытия новой вкладки или вставки — до TTY они не доходят.</p><p>Я всё время использую Ctrl+Left Arrow, но это тоже не control-код — это ANSI escape sequence (ESC[1;5D, где ESC — это сам байт 27 = Ctrl-[), совсем другая история.</p><p>Это устроено совсем не так, как шорткаты в GUI, где можно сделать Ctrl+любая клавиша.</p><h2>Официальные ASCII-имена бесполезны</h2><p>Каждый из 33 control-кодов имеет имя в ASCII (например, байт 3 — это ETX). Но эти имена придумывали не для компьютеров, а для телеграфа. Когда коды перешли в UNIX-терминалы, половина из них сменила смысл. В итоге ASCII-имена сегодня бесполезны в 50% случаев — проще вообще игнорировать их, чем пытаться понять, какие имена ещё соответствуют оригинальному значению.</p><h2>Почему Ctrl-M и Ctrl-I — это Enter и Tab</h2><p>Ctrl-M буквально идентичен Enter, а Ctrl-I — это Tab. Это делает их почти непригодными для шорткатов.</p><p>Некоторые всё равно используют Ctrl-I и Ctrl-M как шорткаты, но для этого надо настроить эмулятор терминала, чтобы он обрабатывал эти нажатия иначе, чем по умолчанию. Основной вывод: если пишете терминальное приложение — не используйте Ctrl-I и Ctrl-M как шорткаты.</p><h2>Как узнать, какой именно код посылается</h2><p>Пока я писала этот разбор, мне пришлось много экспериментировать с разными комбинациями клавиш. Я написала <a href="https://gist.github.com/jvns/fd2b56ada7b10bcc6fe5ec99e9a4be0d">маленький Python-скрипт echo-key.py</a>, который распечатывает получаемые байты. Наверняка есть более официальный способ, но мне удобнее иметь скрипт, который можно подкрутить под себя.</p><h2>Оговорка: canonical vs noncanonical mode</h2><p>Два кода — Ctrl-W и Ctrl-U — я в таблице пометила как «обрабатываются OS». На самом деле это не всегда так — зависит от режима терминала.</p><p>В <b>canonical mode</b> (построчный ввод) программа получает ввод только после нажатия Enter — до этого OS сама обрабатывает Backspace, Ctrl-W и другие правки. В <b>noncanonical mode</b> (посимвольный ввод) программа получает каждое нажатие сразу, и коды Ctrl-W и Ctrl-U проходят в программу, которая обрабатывает их как хочет.</p><p>Примеры программ в canonical mode:</p><ul><li>Любые неинтерактивные утилиты вроде grep или cat.</li><li>git, по моему опыту.</li></ul><p>В noncanonical mode:</p><ul><li>python3, irb и другие REPL.</li><li>Ваш шелл.</li><li>Любой полноэкранный TUI (less, vim).</li></ul><h2>Оговорка: все OS-коды настраиваются через stty</h2><p>Я написала «Ctrl-C посылает SIGINT», но технически это не обязательно так. Все коды, которые обрабатывает OS terminal driver, плюс Backspace, можно переназначить утилитой stty. Текущие маппинги смотрят через stty -a.</p><p>Я лично ни разу ничего не переопределяла через stty и не могу придумать, зачем бы мне это делать — это рецепт для путаницы и катастрофы. Но когда я спросила в Mastodon, люди назвали такие сценарии:</p><ul><li>Починить сломанный терминал через stty sane.</li><li>Настроить работу Backspace: stty erase ^H.</li><li>Включить поток управления: stty ixoff.</li><li>Некоторые даже переназначают SIGINT на другую клавишу, например на DELETE.</li></ul><h2>Оговорка: сигналы можно отключить</h2><ul><li>Если режим терминала ISIG (флаг, разрешающий сигналы от Ctrl-C и Ctrl-Z) выключен, OS вообще не посылает сигналы. Vim, например, отключает ISIG при запуске.</li><li>На macOS и других BSD-системах есть дополнительный control-код Ctrl-T, который посылает SIGINFO.</li></ul><p>Какие режимы ставит программа, можно посмотреть через strace: режимы терминала устанавливаются системным вызовом ioctl.</p><p>Комбинация режимов, которую ставит vim при запуске, по сути и есть так называемый «raw mode» — подробности в man cfmakeraw.</p><h2>Конфликтов очень много</h2><p>Раз кодов всего 33, конфликтов за один и тот же код — навалом. По умолчанию Ctrl-S замораживает экран, но если выключить этот flow-control, readline использует Ctrl-S для forward search.</p><p>Другой пример: Ctrl-T на моей машине то посылает SIGINFO, то переставляет местами два последних символа, то делает что-то совсем третье — в зависимости от того, установлен ли в программе ISIG и использует ли она readline (или имитирует его поведение).</p><h2>Backspace, «другой» Backspace и историческая боль</h2><p>В таблице я пометила байт 127 как «backspace», а байт 8 как «другой backspace». История оказалась настолько запутанной, что именно этот пункт собрал больше всего откликов в Mastodon.</p><p>Вот как это работает на моей машине:</p><ol><li>Я нажимаю клавишу Backspace.</li><li>В TTY уходит байт 127, в ASCII он называется DEL.</li><li>OS terminal driver и readline оба замапили 127 на «удалить символ» — работает и в canonical, и в noncanonical mode.</li><li>Предыдущий символ исчезает.</li></ol><p>Если нажать Ctrl+H, в readline-приложении это сработает как Backspace, а в программе без readline (например, cat) просто напечатается ^H.</p><p>У кого-то шаг 2 другой: клавиша Backspace посылает байт 8 вместо 127, и чтобы она работала, надо настроить OS через stty erase ^H. В Debian Policy Manual есть целый раздел про конфигурацию клавиатуры — по моему пониманию, его написали в 90-х, когда царила путаница с тем, что должен делать Backspace, и нужен был какой-то стандарт, чтобы всё заработало.</p><h2>На разных машинах всё по-разному</h2><p>Я почти наверняка упустила ещё десяток способов, которыми «как это работает на моей машине» может отличаться от «как это работает у других», и в моих описаниях тоже могут быть неточности. По stty -a у меня есть ещё три экзотических маппинга — Ctrl-O как «discard», Ctrl-R как «reprint» и Ctrl-Y как «dsusp» — но на практике они редко что-то делают и чаще всего проходят в приложение как есть.</p><h2>Честно говоря, это необязательно знать</h2><blockquote>Мне кажется, содержимое этого поста интересное, но не обязательно <i>полезное</i>. Я использовала терминал каждый день последние 20 лет, не зная почти ничего из этого — я просто знала на практике, что делают Ctrl-C, Ctrl-D, Ctrl-Z, Ctrl-R, Ctrl-L (ну и Ctrl-A, Ctrl-E, Ctrl-W), и не задумывалась о деталях. Этого почти всегда хватало, кроме случая, когда я возилась с xterm.js.</blockquote><p><i>От редакции:</i> знание это становится практическим в одном-двух сценариях, и их стоит держать в голове. Во-первых, когда терминал «ломается» — ввод не виден, Enter работает странно — вместо перезапуска шелла поможет stty sane или reset: теперь понятно, что именно они восстанавливают. Во-вторых, Ctrl-S, «замораживающий» терминал, — не баг, а реликт аппаратного flow control: отключить его навсегда можно через stty -ixon в .bashrc / .zshrc. Остальное — любопытная инженерная археология.</p><h2>Итог</h2><p>ASCII control characters — это слоёный пирог из трёх эпох: телеграфные корни 60-х, POSIX-терминалы 80-х и GUI-эмуляторы 2020-х, которые поверх всего этого ещё накручивают свою логику. Когда Ctrl-S внезапно замораживает экран, а Ctrl-T делает разные вещи в разных программах — это не баг, а побочный эффект 60 лет совместимости.</p><p>Оригинал: <a href="https://jvns.ca/blog/2024/10/31/ascii-control-characters/">jvns.ca — ASCII control characters in my terminal</a>. Также читайте на tproger: <a href="https://tproger.ru/news/ot-ffmpeg-do-torrentov-dlya-terminala--7-novyh-tui-instrumentov--kotorye-sovetuem">7 новых TUI-инструментов для терминала</a> и <a href="https://tproger.ru/news/15-poleznyh-komand-terminala-macos-dlya-novichkov">15 полезных команд терминала macOS</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Wake-on-LAN: как включить компьютер по сети и написать WOL-инструмент на Go</title>
      <link>https://tproger.ru/translations/wake-on-lan-kak-vklyuchit-kompyuter-po-seti-i-napisat-wol-instr</link>
      <comments>https://tproger.ru/translations/wake-on-lan-kak-vklyuchit-kompyuter-po-seti-i-napisat-wol-instr?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/translations/wake-on-lan-kak-vklyuchit-kompyuter-po-seti-i-napisat-wol-instr</guid>
      <description><![CDATA[<p>Разбираем Wake-on-LAN изнутри: Magic Packet, UDP-отправка, ограничения протокола и рабочая реализация на Go. Напишите свой WOL-инструмент за 30 строк кода.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/translations/wake-on-lan-kak-vklyuchit-kompyuter-po-seti-i-napisat-wol-instr">Wake-on-LAN: как включить компьютер по сети и написать WOL-инструмент на Go</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[Практика]]></category>
      <category><![CDATA[Golang]]></category>
      <category><![CDATA[Системное администрирование]]></category>
      <category><![CDATA[Переводы]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 16 Apr 2026 13:30:04 GMT</pubDate>
      <content:encoded><![CDATA[<p>Wake-on-LAN (WOL) — сетевой протокол, который позволяет включить любой компьютер в локальной сети одной командой, без физического доступа к кнопке питания. Удобно, когда нужно срочно добраться до файла на выключенной рабочей машине или запустить ночные обновления на сотне серверов, не обходя каждый.</p><ul><li>Wake-on-LAN — сетевой протокол для удалённого включения компьютера через Magic Packet.</li><li>Magic Packet: 6 байт 0xFF + MAC-адрес, повторённый 16 раз.</li><li>Пакет отправляется по UDP на широковещательный адрес 255.255.255.255, де-факто стандарт — порт 9.</li><li>Ограничения: только в пределах одной сети или VLAN, только по Ethernet, нет подтверждения доставки.</li><li>Реализуем собственный WOL-инструмент на Go с нуля.</li></ul><h2>Что такое Wake-on-LAN</h2><p>Wake-on-LAN (WOL) — протокол канального уровня, который будит компьютер или сервер, когда сетевой интерфейс получает специальный Magic Packet. Сетевая карта с активированной функцией WOL постоянно прослушивает широковещательный трафик даже когда компьютер выключен, но подключён к сети. При обнаружении Magic Packet она посылает сигнал на BIOS, и система загружается.</p><p>Для работы WOL необходимо, во-первых, включить поддержку в BIOS или UEFI (обычно называется Wake-on-LAN или Power On by PCI-E); во-вторых, активировать её в операционной системе для нужного сетевого адаптера. На Linux это делается одной командой:</p><p>Здесь g — режим MagicPacket. Проверить текущее состояние — ethtool eth0 | grep Wake. На Windows нужную опцию ищите в «Свойства сетевого адаптера → Управление электропитанием → Разрешить этому устройству выводить компьютер из ждущего режима».</p><h2>Как устроен Magic Packet</h2><p>Magic Packet — бинарный фрейм с жёстко заданной структурой. Сначала идёт синхропоследовательность: 6 байт 0xFF. Эти байты сигнализируют сетевой карте о начале нового фрейма.</p><p>Сразу после синхропоследовательности — MAC-адрес целевой машины, повторённый 16 раз без пробелов и разделителей. Именно по нему сетевая карта понимает, что пакет адресован ей. В итоге Magic Packet занимает 102 байта: 6 байт синхропоследовательности плюс 6 байт MAC × 16 повторений.</p><p>Пример реального Magic Packet с MAC-адресом 12:34:56:78:9a:bc, захваченного в Wireshark:</p><p>Некоторые реализации WOL поддерживают опциональный пароль в конце пакета — для защиты от несанкционированного включения. Механизм SecureOn использует 6 байт, AMD-спецификация допускает 4 байта. Однако не каждый BIOS поддерживает эту функцию.</p><h2>Как отправить Magic Packet</h2><p>Magic Packet может быть передан поверх любого сетевого протокола — сетевой карте достаточно найти нужную последовательность байт в полученном фрейме. На практике пакет отправляют как UDP-датаграмму на широковещательный адрес.</p><p>Для IPv4 используется широковещательный адрес 255.255.255.255 — он охватывает всю локальную сеть или сегмент. IPv6 вместо broadcast использует multicast. Де-факто стандарт для порта назначения — 9 (Discard Protocol), реже используют 7 или 0.</p><h2>Ограничения Wake-on-LAN</h2><p>Прежде чем настраивать WOL в продакшне, важно понять его ограничения:</p><ul><li><b>Только одна сеть или VLAN.</b> Magic Packet не маршрутизируется — получить его может лишь устройство в той же локальной сети или VLAN, что и отправитель. Для удалённого включения через интернет нужен промежуточный узел в этой сети: VPN, Raspberry Pi или роутер с поддержкой WOL.</li><li><b>Нужен MAC-адрес.</b> WOL работает на канальном уровне, поэтому нельзя разбудить компьютер, зная только его IP-адрес.</li><li><b>Только проводной Ethernet.</b> Большинство Wi-Fi-адаптеров не поддерживают WOL. Исключение — устройства с поддержкой стандарта WoWLAN (Wake on Wireless LAN), но на практике их мало, и настройка требует совместимого драйвера.</li><li><b>Нет подтверждения доставки.</b> UDP — протокол без установления соединения, поэтому после отправки Magic Packet невозможно узнать, получил ли его компьютер и включился ли он.</li><li><b>Зависимость от BIOS.</b> Некоторые материнские платы пробуждаются только из состояний S3 или S4, но не из полного выключения S5. Проверяйте документацию к платформе.</li></ul><h2>Реализация на Go</h2><p>Напишем собственный WOL-инструмент на Go — одна из немногих задач, где стандартной библиотеки хватает полностью. Если хочется погрузиться в Go глубже, у нас есть <a href="https://tproger.ru/articles/sravnenie-golang-veb-frejmvorkov-2026-goda--top-5-luchwih-variant">обзор Golang-фреймворков 2026 года</a>. Нам понадобятся две функции: CreateMagicPacket для формирования пакета и SendMagicPacket для его отправки.</p><h3>CreateMagicPacket: формируем пакет</h3><p>Функция принимает MAC-адрес строкой и возвращает готовый байтовый срез или ошибку. Первым делом проверяем валидность MAC-адреса с помощью регулярного выражения:</p><p>После валидации убираем разделители из MAC-адреса, затем повторяем его 16 раз:</p><p>Объединяем синхропоследовательность с повторённым MAC-адресом и декодируем hex-строку в байтовый срез:</p><h3>SendMagicPacket: отправляем пакет</h3><p>Функция принимает Magic Packet ([]byte), IP-адрес назначения и порт. Сначала проверяем валидность IP через стандартную функцию net.ParseIP — в отличие от regex, она корректно обрабатывает и IPv4, и IPv6:</p><p>Открываем UDP-соединение через net.Dial. WOL не требует установления соединения — UDP идеально подходит: быстро, без handshake. Ключевое слово defer гарантирует закрытие соединения по завершении функции:</p><p>Отправляем Magic Packet в сеть через conn.Write. Если функция возвращает nil — пакет ушёл в сеть. Получил ли его компьютер и включился ли — WOL не сообщает, это ограничение протокола:</p><p>Полный рабочий код обеих функций и готовую утилиту командной строки можно найти на GitHub: <a href="https://github.com/xaner4/Gowakeup">xaner4/Gowakeup</a>. Типичный вызов после сборки — ./gowakeup -mac AA:BB:CC:DD:EE:FF.</p><h2>Выводы</h2><p>Wake-on-LAN — простой и элегантный протокол канального уровня. Всего 102 байта — и компьютер включается по сети без дополнительной инфраструктуры. Ограничения (только Ethernet, только локальная сеть, нет подтверждения) — следствие намеренной простоты протокола: он работает даже тогда, когда ОС не загружена. В отличие от устаревших сетевых стеков, которые <a href="https://tproger.ru/news/iz-linux-udalili-nebezopasnyj-setevoj-protokol----kotoryj-vse-eshhe-ispolzuetsya-v-windows-11">ядро Linux постепенно отбрасывает</a>, WOL остаётся в строю уже третье десятилетие.</p><p>Реализация на Go показывает, как стандартная библиотека net и базовые операции со строками позволяют собрать рабочий сетевой инструмент в нескольких десятках строк. Готовый проект: <a href="https://github.com/xaner4/Gowakeup">github.com/xaner4/Gowakeup</a>. Исходная статья: <a href="https://blog.xaner.dev/post/wake-on-lan/">blog.xaner.dev</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Первый RISC-V RVA23 чип входит в mainline Linux: что это значит для embedded</title>
      <link>https://tproger.ru/news/pervyj-risc-v-rva23-chip-vhodit-v-mainline-linux-chto-eto-znachit</link>
      <comments>https://tproger.ru/news/pervyj-risc-v-rva23-chip-vhodit-v-mainline-linux-chto-eto-znachit?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/pervyj-risc-v-rva23-chip-vhodit-v-mainline-linux-chto-eto-znachit</guid>
      <description><![CDATA[<p>SpacemiT K3 — первый в мире RISC-V SoC на профиле RVA23 — входит в mainline Linux 7.0. Ubuntu 26.04 LTS заявляет поддержку чипа, расширение — в Linux 7.1.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/pervyj-risc-v-rva23-chip-vhodit-v-mainline-linux-chto-eto-znachit">Первый RISC-V RVA23 чип входит в mainline Linux: что это значит для embedded</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Open Source]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 10 Apr 2026 12:22:21 GMT</pubDate>
      <content:encoded><![CDATA[<p>Если вы собираете продукт на RISC-V и устали от фрагментации ISA — следующий релиз ядра закрывает главный блокер. Linux 7.0, который выходит в апреле 2026 года, приносит первоначальную поддержку SpacemiT K3 — первого в мире коммерческого SoC на профиле <b>RVA23</b>. В merge window Linux 7.1, которое откроется сразу после этого, ожидается расширение функциональности чипа.</p><p>Об этом 10 апреля 2026 года <a href="https://www.phoronix.com/news/SpacemiT-K3-RVA23-Linux-7.1">пишет</a> Phoronix. Главная новость не в самом чипе — SpacemiT уже несколько лет выпускает RISC-V железо, — а в том, что K3 реализует профиль RVA23: стандартизированный набор расширений, который ратифицировала <a href="https://riscv.org/announcements/2024/10/risc-v-ratifies-23-new-specifications/">RISC-V International</a> в октябре 2024 года. До этого каждый вендор сам решал, какие расширения добавлять — и любой универсальный RISC-V-бинарь рисковал упасть на соседнем чипе.</p><ul><li><b>Linux 7.0</b> (апрель 2026) получает начальную поддержку SpacemiT K3 в mainline</li><li>В <b>Linux 7.1</b> merge window добавят ещё функциональности K3 — драйверы, DT-биндинги, поддержка периферии</li><li>SpacemiT K3 — <b>первый коммерческий SoC</b> на профиле RVA23, ратифицированном в октябре 2024 года</li><li><b>Ubuntu 26.04 LTS</b> заявляет поддержку K3 как одной из первых RVA23-платформ</li><li>RVA23 закрывает главную боль RISC-V для embedded: <b>стабильный ISA-таргет</b> с векторными, битовыми и криптографическими расширениями как обязательной базой</li></ul><h2>Почему RVA23 делает RISC-V предсказуемым для embedded</h2><p>До сих пор главная проблема RISC-V в коммерческих продуктах была не в производительности, а в <b>фрагментации</b>. Минимальный набор RV64GC включает целочисленные операции, атомики, числа с плавающей точкой и сжатые инструкции — этого хватает для загрузки Linux, но всё остальное (SIMD-векторы, битовые манипуляции, криптография, виртуализация) оставалось опциональным. Каждый вендор собирал свой набор, и компиляторам, дистрибутивам и разработчикам приходилось угадывать, что работает на конкретном чипе.</p><p>Профиль <b>RVA23U64</b> фиксирует обязательный набор расширений для прикладных процессоров: Vector 1.0 (V), битовые манипуляции (Zba, Zbb, Zbs), скалярная и векторная криптография (Zkn, Zvkng), операции с половинными float'ами и ещё около двух десятков модулей. Серверный вариант <b>RVA23S64</b> добавляет обязательный гипервизор (H). Простыми словами — в RVA23 гарантированы SIMD-векторы для ML-инференса, аппаратный AES вместо софтовой реализации и виртуализация для запуска KVM. Раньше всё это было на усмотрение вендора.</p><p>Для встраиваемых систем это значит конкретное: можно писать одну прошивку и один бинарь вместо сборки под каждый отдельный SoC. Дистрибутивам — можно выпускать один RISC-V образ вместо зоопарка вариантов. Если ваш код собирается под RVA23, он запустится на любом сертифицированном чипе без проверок feature-флагов и обходных путей.</p><h2>Что уже в Linux 7.0 и что ждать в 7.1</h2><p>Начальная поддержка K3, которая попала в merge window Linux 7.0, — это базовое включение чипа: Device Tree описания, поддержка основных ядер, базовые DMA-контроллеры, часы и периферия. Этого достаточно, чтобы ядро загрузилось и дистрибутив стартовал.</p><p>В Linux 7.1 merge window, которое откроется сразу после выхода 7.0, ожидается расширение: дополнительные драйверы периферии, оптимизации под RVA23-векторный блок, улучшения в DT-биндингах. Phoronix называет K3 «одним из первых RISC-V RVA23 дизайнов, дошедших до рынка», а включение чипа в mainline — заметным событием для embedded RISC-V.</p><p>Параллельно идёт работа в LLVM. В мае 2025 года <a href="https://www.phoronix.com/news/RISC-V-LLVM-SpacemiT-X60">оптимизация</a> планировщика Clang под ядро SpacemiT-X60 (используется в K1, предшественнике K3) дала ускорение 4–18% на ряде бенчмарков. Это важно, потому что пока RISC-V-код компилируется скорее «чтобы работал», чем «чтобы быстро»: в марте 2026 Fedora <a href="https://www.phoronix.com/news/Fedora-RISC-V-Slow-Builds">жаловалась</a>, что сборочные раннеры на существующих RISC-V системах отстают от эквивалентных x86 примерно в пять раз. Проблема касается скорости CI-сборок, а не производительности прикладного софта на самом чипе — но без быстрых раннеров сложно поддерживать дистрибутив для RISC-V архитектуры.</p><h2>Ubuntu и другие дистрибутивы</h2><p>Canonical заранее объявила, что <a href="https://www.phoronix.com/news/Ubuntu-SpacemiT-K3">Ubuntu 26.04 LTS</a> будет поддерживать SpacemiT K3 как одну из первых RVA23-платформ. Это первый случай, когда RISC-V-чип получает LTS-поддержку в Ubuntu из коробки: официальные образы, apt-обновления и пятилетний жизненный цикл. Конкретную версию ядра в LTS-релизе Canonical пока не анонсировал — возможно, 7.0, а возможно, 6.18 LTS с бэкпортом K3-патчей.</p><p>Дистрибутив <a href="https://www.phoronix.com/news/Armbian-26.02-Released">Armbian 26.02</a>, вышедший в марте 2026, уже работает на ряде RISC-V плат на ядре Linux 6.18 LTS и включает Xfce-образ для RISC-V — практический способ получить полноценный рабочий стол на таком железе сегодня.</p><h2>Контекст: от K1 к K3</h2><p>Поддержка предыдущего поколения SpacemiT — K1 — попала в mainline в <a href="https://www.phoronix.com/news/Linux-6.14-SoC">Linux 6.14</a> (март 2025). На K1 построены <a href="https://wiki.banana-pi.org/Banana_Pi_BPI-F3">Banana Pi BPI-F3</a>, MuseBook и несколько других RISC-V плат и ноутбуков. Формально K1 относится к профилю RVA22: вектор на нём фактически есть — ядро SpacemiT-X60 реализует RVV 1.0, — но профиль его не гарантирует. Поэтому универсальный toolchain не мог закладываться на вектор без проверок. В K3 (RVA23) вектор уже обязателен, и компилятор имеет право использовать его без feature-детекта.</p><p>K3 — следующий шаг: тот же вендор, но уже на RVA23 с обязательным вектором, криптографией и расширенным набором битовых операций. Именно поэтому Phoronix называет появление чипа в mainline заметным событием — K3 проверяет, насколько реально работает вся RVA23-цепочка от железа до дистрибутива.</p><h2>Что это значит для embedded-разработчиков в России</h2><p>RISC-V в России интересен прежде всего тем, что это открытая ISA без лицензионных отчислений, а экосистема постепенно отрывается от доминирования ARM. Отечественные вендоры — <a href="https://syntacore.com/">Syntacore</a> и несколько других — разрабатывают собственные RISC-V ядра, и стандартизация RVA23 на уровне ядра Linux важна именно тем, что российский toolchain сможет целиться в тот же таргет, что и китайские или американские разработчики.</p><p>Практическая сторона: SpacemiT K3 пока в стадии инженерных сэмплов, купить его в розницу нельзя. Если нужно начать эксперименты уже сейчас — Banana Pi BPI-F3 на предыдущем чипе K1 стоит около 60–80 долларов в китайских магазинах (AliExpress, Aliexperts), MuseBook как готовый ноутбук — дороже. Альтернатива без железа: QEMU с -cpu max уже несколько лет поддерживает RVA23-расширения, и на нём можно прогонять сборки и проверять, как ваш код ведёт себя на новом профиле.</p><p>Практический вывод: если вы присматривались к RISC-V для продуктов с Linux на борту (промконтроллеры, ИИ-акселераторы, edge-вычисления), для пилотов и НИОКР сейчас подходящий момент — можно брать BPI-F3, пересобирать toolchain под RVA23-таргет и быть готовыми к серийным K3-девкитам. Для production пока рано: производительность ядер уступает ARM, инфраструктура сборки отстаёт, серийных плат нет. Но фрагментация ISA, которая годами ломала RISC-V проекты, уходит — и это главный сдвиг.</p><p>Источник: <a href="https://www.phoronix.com/news/SpacemiT-K3-RVA23-Linux-7.1">Phoronix</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Little Snitch вышел для Linux — культовый macOS-файрвол теперь бесплатен и частично open source</title>
      <link>https://tproger.ru/news/little-snitch-vywel-dlya-linux-kultovyj-macos-fajrvol-teper-b</link>
      <comments>https://tproger.ru/news/little-snitch-vywel-dlya-linux-kultovyj-macos-fajrvol-teper-b?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/little-snitch-vywel-dlya-linux-kultovyj-macos-fajrvol-teper-b</guid>
      <description><![CDATA[<p>Культовый macOS-файрвол Little Snitch вышел для Linux: контроль исходящих соединений через eBPF, веб-интерфейс, блоклисты. Бесплатно и частично open source.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/little-snitch-vywel-dlya-linux-kultovyj-macos-fajrvol-teper-b">Little Snitch вышел для Linux — культовый macOS-файрвол теперь бесплатен и частично open source</a>»</p>]]></description>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Open Source]]></category>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[macOS]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 09 Apr 2026 09:00:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>Если вы когда-нибудь хотели видеть, какие приложения на вашем Linux-сервере или десктопе тихо стучатся в сеть — теперь можете. <a href="https://obdev.at/products/littlesnitch-linux/index.html">Little Snitch</a>, культовый macOS-файрвол с 20-летней историей, впервые <a href="https://obdev.at/products/littlesnitch-linux/index.html">вышел для Linux</a>.</p><p>Little Snitch — приложение-файрвол, которое показывает все исходящие сетевые соединения в реальном времени, позволяет блокировать нежелательные и отслеживать историю трафика по каждому процессу. На macOS это стандартный инструмент для разработчиков и безопасников.</p><ul><li>Little Snitch для Linux отслеживает все исходящие соединения через eBPF и позволяет блокировать их в один клик</li><li>Веб-интерфейс на localhost:3031, можно установить как PWA</li><li>Поддерживает блоклисты (Hagezi, Peter Lowe, Steven Black) и кастомные правила по процессам и портам</li><li>eBPF-модуль и веб-интерфейс — open source (GPLv2), демон — проприетарный, но бесплатный</li><li>Инструмент для приватности, не для защиты от целенаправленных атак — авторы честно об этом предупреждают</li></ul><h2>Как устроен</h2><p>Little Snitch работает на основе <a href="https://ebpf.io/">eBPF</a> — технологии, которая позволяет запускать программы внутри ядра Linux без модификации самого ядра. eBPF-модуль перехватывает исходящие соединения и передаёт данные демону, который ведёт статистику, применяет правила и обслуживает веб-интерфейс.</p><p>Интерфейс доступен по адресу localhost:3031 — можно открыть в браузере или установить как Progressive Web App. Chromium-браузеры поддерживают PWA нативно, для Firefox есть <a href="https://addons.mozilla.org/en-US/firefox/addon/pwas-for-firefox/">расширение</a>.</p><h2>Что можно делать</h2><h3>Мониторинг соединений</h3><p>Главный экран показывает текущие и прошлые соединения по приложениям: что заблокировано правилами, объём трафика, история активности. Можно сортировать по последней активности, объёму данных или имени, фильтровать список. Заблокировать соединение — один клик.</p><p>Диаграмма трафика внизу показывает объём данных за период. Можно выделить временной диапазон — список соединений отфильтруется до активности в этом окне.</p><h3>Блоклисты</h3><p>Можно подключить внешние блоклисты для массовой блокировки нежелательного трафика. Поддерживаемые форматы: один домен на строку, формат /etc/hosts, CIDR-диапазоны. Популярные списки — <a href="https://github.com/hagezi/dns-blocklists">Hagezi</a>, <a href="https://pgl.yoyo.org/adservers/">Peter Lowe</a>, <a href="https://github.com/StevenBlack/hosts">Steven Black</a>, <a href="https://oisd.nl/">oisd.nl</a>.</p><p><b>Важно:</b> формат .lsrules из macOS-версии Little Snitch несовместим с Linux-версией.</p><h3>Кастомные правила</h3><p>Правила позволяют фильтровать точнее, чем блоклисты: можно указать конкретный процесс, порт, протокол. Например, разрешить Firefox ходить куда угодно, но заблокировать телеметрию конкретного приложения.</p><h2>Честно об ограничениях</h2><p>Авторы прямо говорят: Little Snitch для Linux — инструмент для приватности, а не для безопасности. macOS-версия использует deep packet inspection для надёжной привязки соединений к процессам. На Linux фундамент — eBPF, у которого строгие ограничения по размеру хранилища и сложности программ.</p><p>Под высокой нагрузкой кэш-таблицы могут переполниться, и привязать каждый пакет к процессу или DNS-имени не получится на 100%. Для контроля телеметрии и приватности — работает отлично. Для защиты сервера от целенаправленных атак — не тот инструмент.</p><h2>Лицензия и исходный код</h2><p>У проекта три компонента с разными лицензиями:</p><ul><li>eBPF-модуль ядра — GPLv2, <a href="https://github.com/obdev/littlesnitch-linux">исходный код на GitHub</a></li><li>Веб-интерфейс — GPLv2, исходный код на GitHub</li><li>Демон (littlesnitch --daemon) — проприетарный, но бесплатный для использования и распространения</li></ul><p>Конфигурация — через текстовые TOML-файлы в /var/lib/littlesnitch/config/. Для кастомизации копируйте файл в /var/lib/littlesnitch/overrides/config/ — Little Snitch всегда приоритизирует override.</p><h2>Итог</h2><p>Little Snitch на macOS стоит €59 и считается must-have для разработчиков. Linux-версия бесплатна, частично open source и закрывает давнюю нишу — удобный контроль исходящего трафика с привязкой к процессам. Если вы хотите видеть, что ваш десктоп или сервер делает в сети — <a href="https://obdev.at/products/littlesnitch-linux/index.html">попробуйте</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Исследователь Anthropic нашёл 23-летнюю уязвимость в ядре Linux с помощью Claude Code</title>
      <link>https://tproger.ru/news/issledovatel-anthropic-nawyol-23-letnyuyu-uyazvimost-v-yadre-linux</link>
      <comments>https://tproger.ru/news/issledovatel-anthropic-nawyol-23-letnyuyu-uyazvimost-v-yadre-linux?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/issledovatel-anthropic-nawyol-23-letnyuyu-uyazvimost-v-yadre-linux</guid>
      <description><![CDATA[<p>Исследователь Anthropic с помощью Claude Code обнаружил heap buffer overflow в NFS-драйвере Linux, скрытый с 2003 года. Узнайте, как работает уязвимость и метод поиска.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/issledovatel-anthropic-nawyol-23-letnyuyu-uyazvimost-v-yadre-linux">Исследователь Anthropic нашёл 23-летнюю уязвимость в ядре Linux с помощью Claude Code</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Уязвимость]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 07 Apr 2026 05:53:08 GMT</pubDate>
      <content:encoded><![CDATA[<p><b>Heap buffer overflow</b> в NFS-драйвере ядра Linux скрывался с сентября 2003 года — 23 года. Исследователь Anthropic <a href="https://nicholas.carlini.com/">Nicholas Carlini</a> <a href="https://mtlynch.io/claude-code-found-linux-vulnerability/">нашёл</a> его за часы с помощью <b>Claude Code</b> и bash-скрипта на 7 строк. Об этом он рассказал на конференции по безопасности ИИ [un]prompted 2026.</p><ul><li>Claude Code нашёл heap buffer overflow в NFS-драйвере Linux, скрытый с сентября 2003 года</li><li>Баг позволяет перезаписать память ядра по сети через два NFS-клиента, без аутентификации</li><li>Метод поиска — примитивный bash-скрипт: цикл по файлам ядра с промптом «найди уязвимость»</li><li>Старые модели (Opus 4.1, Sonnet 4.5) находили лишь малую часть; прорыв — на Opus 4.6</li><li>У Carlini сотни непроверенных находок — узкое место теперь не ИИ, а люди</li></ul><h2>Как Claude Code искал баги</h2><p>Годами поиск уязвимостей в ядре Linux требовал написания специализированных фаззеров или ручного аудита. Carlini сделал иначе — написал bash-скрипт, который перебирает файлы исходного кода ядра и передаёт каждый в <b>Claude Code</b> с промптом: «Ты участвуешь в CTF (соревнование по безопасности). Найди уязвимость. Подсказка: смотри файл X».</p><p>Флаг --dangerously-skip-permissions отключает запросы на подтверждение действий — иначе Claude Code будет спрашивать разрешение на каждое чтение файла, и автоматический перебор тысяч файлов станет невозможным. Результаты записываются в директорию /output, после чего человек проверяет находки вручную.</p><h2>Уязвимость в NFS: 1056 байт в 112-байтный буфер</h2><p>Самая показательная находка — баг в драйвере <b>NFSv4</b> (протокол сетевой файловой системы версии 4). Уязвимость требует понимания протокола NFS на уровне взаимодействия нескольких клиентов — именно поэтому Carlini выбрал её для демонстрации. Фаззеры такие баги находят плохо: нужна не случайная мутация данных, а понимание логики протокола.</p><p>Атака использует два NFS-клиента, работающих в связке:</p><ol><li><b>Клиент A</b> устанавливает соединение с NFS-сервером и захватывает блокировку файла с owner ID длиной 1024 байта — необычно длинное, но допустимое значение</li><li><b>Клиент B</b> подключается к тому же серверу и пытается захватить ту же блокировку</li><li>Сервер отказывает клиенту B и формирует ответ с отказом. В ответ включается owner ID из шага 1 — все 1024 байта</li><li>Проблема: буфер для ответа — всего 112 байт (константа NFSD4_REPLAY_ISIZE). Итоговое сообщение — 1056 байт. Ядро записывает 1056 байт в 112-байтный буфер — перезаписывая соседние структуры в куче</li></ol><p>Результат — атакующий <b>перезаписывает память ядра</b> байтами, которые он контролирует через поле owner ID. Это классический heap buffer overflow: перезапись соседних структур в куче может привести к выполнению произвольного кода с привилегиями ядра или к утечке данных из памяти ядра по сети.</p><h2>23 года в коде</h2><p>Баг <a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4b5e8bc0b324">появился</a> в ядре Linux в сентябре 2003 года — в коммите, реализующем кеш повторов для NFSv4. Автор патча указал размер буфера в 112 байт как «достаточный для OPEN — крупнейшей из операций мутации». Но когда позже добавили поддержку LOCK с произвольной длиной owner ID, буфер не увеличили. Баг старше самого Git — система контроля версий появилась только в 2005 году.</p><h2>Прорыв на Opus 4.6</h2><p>Carlini пробовал воспроизвести результаты на более ранних моделях. <b>Opus 4.1</b> (вышел восемь месяцев назад) и <b>Sonnet 4.5</b> (шесть месяцев назад) находили значительно меньше уязвимостей. Качественный скачок произошёл на <b>Opus 4.6</b>, выпущенном около двух месяцев назад. На текущий момент Carlini <a href="https://mtlynch.io/claude-code-found-linux-vulnerability/">подтвердил</a> пять уязвимостей в ядре Linux — в подсистемах nfsd, io_uring, futex и ksmbd.</p><h2>Узкое место — не ИИ, а люди</h2><blockquote>У меня столько багов в ядре Linux, что я не успеваю их отправлять — потому что ещё не проверил. Я не буду слать мейнтейнерам потенциальный шлак. Но это значит, что у меня несколько сотен крашей, которые они ещё не видели, потому что у меня не хватает времени их проверить.</blockquote><p>ИИ-модели уже могут массово находить уязвимости в зрелом коде. Но между «нашёл краш» и «подтвердил эксплуатируемую уязвимость» — ручная работа исследователя. Скорость обнаружения выросла на порядки, а скорость валидации осталась прежней. Carlini <a href="https://mtlynch.io/claude-code-found-linux-vulnerability/">ожидает</a> «огромную волну» обнаруженных уязвимостей в ближайшие месяцы — по мере того как исследователи и атакующие осознают возможности новых моделей.</p><h2>Выводы</h2><p>23-летний баг в ядре Linux, найденный за часы bash-скриптом — это сигнал о смене парадигмы в поиске уязвимостей. <b>ИИ-модели</b> достигли уровня, на котором они находят баги, недоступные десятилетиям ручного и автоматического аудита. Вопрос — кто найдёт их первым: исследователи или атакующие.</p><p>Если вы работаете с NFS — обновите ядро. Если поддерживаете C/C++ кодовую базу с долгой историей — попробуйте натравить на неё ИИ-аудит. Результаты могут удивить.</p><p>Источники: <a href="https://mtlynch.io/claude-code-found-linux-vulnerability/">mtlynch.io</a> | <a href="https://nicholas.carlini.com/">Nicholas Carlini</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Podroid запускает Linux-контейнеры на Android без root</title>
      <link>https://tproger.ru/news/google-vypustila-gemma-4---pervuyu-model-serii-pod-apache-2-0</link>
      <comments>https://tproger.ru/news/google-vypustila-gemma-4---pervuyu-model-serii-pod-apache-2-0?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/google-vypustila-gemma-4---pervuyu-model-serii-pod-apache-2-0</guid>
      <description><![CDATA[<p>Podroid запускает Podman-контейнеры на Android без root через QEMU и Alpine Linux VM. Работает на любом ARM64-устройстве с Android 8.0+. Попробуйте — один APK.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/google-vypustila-gemma-4---pervuyu-model-serii-pod-apache-2-0">Podroid запускает Linux-контейнеры на Android без root</a>»</p>]]></description>
      <category><![CDATA[Android]]></category>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 06 Apr 2026 15:42:09 GMT</pubDate>
      <content:encoded><![CDATA[<p>Android умеет запускать Linux-терминал с виртуализацией — но только на Pixel и части устройств с Exynos. Для остальных телефонов альтернатив не было. <a href="https://github.com/ExTV/Podroid">Podroid</a> решает эту проблему: приложение запускает полноценный контейнерный рантайм <a href="https://podman.io/">Podman</a> на любом ARM64-устройстве с Android 8.0+, без root и без <a href="https://termux.dev/">Termux</a>.</p><p>Проект набрал 686 звёзд на GitHub и <a href="https://news.ycombinator.com/item?id=47633131">попал на главную Hacker News</a>.</p><ul><li>Podroid запускает Linux-контейнеры на Android без root — через QEMU TCG и Alpine Linux VM</li><li>Встроенный Podman: docker-совместимый рантайм с персистентным хранилищем</li><li>Работает на любом ARM64-устройстве с Android 8.0+ — не требует Pixel или KVM</li><li>Порт-форвардинг, SSH, пресеты для Pi-hole, Nginx, Gitea, Grafana</li><li>Open source под GPL v2, один APK без внешних зависимостей</li></ul><h2>Зачем это нужно</h2><p>Встроенный Linux-терминал Android (из Developer Settings) использует аппаратную виртуализацию KVM — и поэтому <a href="https://news.ycombinator.com/item?id=47633131">работает только на Pixel</a>. Формально его поддерживают и некоторые устройства с Exynos, но Samsung часто блокирует функцию через Knox. На Snapdragon-чипах (а это большинство Android-телефонов) терминал недоступен из-за отсутствия поддержки non-protected VM.</p><p>Podroid обходит это ограничение за счёт программной эмуляции через QEMU TCG. Это медленнее, чем KVM, но работает везде. Для задач вроде запуска скриптов, Pi-hole, лёгкого веб-сервера или SSH-туннеля производительности достаточно.</p><h2>Как это работает</h2><p>Podroid поднимает лёгкую виртуальную машину <a href="https://alpinelinux.org/">Alpine Linux</a> через <a href="https://www.qemu.org/">QEMU</a> TCG (без аппаратной виртуализации KVM). Внутри VM работает <a href="https://podman.io/">Podman</a> — docker-совместимый контейнерный рантайм с rootless-архитектурой по умолчанию.</p><p>При загрузке QEMU монтирует Linux-ядро и initramfs. Двухфазный init поднимает персистентный ext4-диск как overlayfs — всё, что вы установите или скачаете, сохраняется между перезапусками.</p><h2>Что внутри</h2><p><b>Контейнерный рантайм.</b> <a href="https://podman.io/">Podman</a> с crun, netavark и slirp4netns. Rootless по умолчанию — без демона с root-привилегиями. Контейнеры запускаются одной командой:</p><p><b>Терминал.</b> Полная VT100/xterm-эмуляция на базе <a href="https://termux.dev/">Termux</a>. Настоящий PTY с поддержкой job control, сигналов и escape-последовательностей. 114 цветовых тем (Dracula, Nord, Solarized, Tokyo Night, Catppuccin, Gruvbox), 13 шрифтов (JetBrains Mono, Fira Code, Cascadia Code), поддержка мыши для TUI-приложений — btop, htop, mc, vim.</p><p><b>Сеть.</b> Интернет из коробки через QEMU SLIRP. Порт-форвардинг с горячим добавлением через QMP — можно пробросить порты VM на Android-устройство прямо во время работы. Готовые пресеты для <a href="https://pi-hole.net/">Pi-hole</a>, <a href="https://nginx.org/">Nginx</a>, <a href="https://about.gitea.com/">Gitea</a> и <a href="https://grafana.com/">Grafana</a>. Встроенный SSH на порту 9922.</p><p><b>Хранилище.</b> Размер диска на выбор: 2, 4, 8, 16, 32 или 64 ГБ. Папка Downloads с Android монтируется в VM через virtio-9p.</p><h2>Требования и установка</h2><ul><li>ARM64-устройство (большинство телефонов с 2018 года)</li><li>Android 8.0+ (API 26)</li><li>~150 МБ для приложения + выбранный размер диска VM</li></ul><p>Установка — один APK из <a href="https://github.com/ExTV/Podroid/releases">GitHub Releases</a>. Никаких внешних зависимостей, Termux не нужен. Открыть приложение → нажать Start VM → подождать ~20 секунд → Open Terminal.</p><p>Podroid — не замена полноценному серверу, но для локальной разработки, self-hosted сервисов и экспериментов на ходу — рабочий вариант. Исходный код — на <a href="https://github.com/ExTV/Podroid">GitHub</a> под лицензией GPL v2.</p>]]></content:encoded>
    </item>
    <item>
      <title>Инженер AWS обнаружил: Linux 7.0 вдвое снижает производительность PostgreSQL</title>
      <link>https://tproger.ru/news/inzhener-aws-obnaruzhil--linux-7-0-vdvoe-snizhaet-proizvoditelnost</link>
      <comments>https://tproger.ru/news/inzhener-aws-obnaruzhil--linux-7-0-vdvoe-snizhaet-proizvoditelnost?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/inzhener-aws-obnaruzhil--linux-7-0-vdvoe-snizhaet-proizvoditelnost</guid>
      <description><![CDATA[<p>Инженер AWS обнаружил: на Linux 7.0 с PREEMPT_LAZY throughput PostgreSQL падает до 0,51x — 50 751 tps вместо 98 565 tps. Причина — удаление режима PREEMPT_NONE.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/inzhener-aws-obnaruzhil--linux-7-0-vdvoe-snizhaet-proizvoditelnost">Инженер AWS обнаружил: Linux 7.0 вдвое снижает производительность PostgreSQL</a>»</p>]]></description>
      <category><![CDATA[PostgreSQL]]></category>
      <category><![CDATA[Производительность]]></category>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 06 Apr 2026 10:58:53 GMT</pubDate>
      <content:encoded><![CDATA[<p>PostgreSQL — одна из самых нагруженных баз данных в мире, и её производительность критична для тысяч продуктов. Но инженер AWS обнаружил, что обычное обновление ядра Linux может вдвое обрушить throughput — без каких-либо изменений в самой СУБД.</p><p>Сальваторе Дипьетро (Salvatore Dipietro) из AWS <a href="https://www.phoronix.com/news/Linux-7.0-AWS-PostgreSQL-Drop">сообщил</a>: на Linux 7.0 с планировщиком PREEMPT_LAZY throughput PostgreSQL упал до <strong>0,51x</strong> по сравнению с Linux 6.x. То есть база данных стала работать почти вдвое медленнее — и виновата одна строка в ядре.</p><ul><li>Linux 7.0 убрал режим PREEMPT_NONE — остались только Full и Lazy preemption</li><li>Throughput PostgreSQL на Linux 7.0 упал до 0,51x (50 751 tps против 98 565 tps на Linux 6.x)</li><li>Причина: планировщик прерывает поток, держащий spinlock, — 55% CPU уходит на spinning в ожидании</li><li>Revert-патч восстанавливает производительность до 1,94x</li><li>Linux 7.0 stable выйдет примерно через 2 недели; Ubuntu 26.04 LTS будет на нём</li></ul><h2>Как обнаружили регрессию</h2><p>Дипьетро тестировал на EC2 m8g.24xlarge с 96-vCPU процессором Graviton4. Стенд: PostgreSQL 17, утилита pgbench, 1024 клиента, 96 потоков, длительность теста — 1200 секунд. Это типичная нагрузка высоконагруженного OLTP-сервиса.</p><p>На Linux 6.x результат составил <strong>98 565 tps</strong>. На Linux 7.0 с PREEMPT_LAZY — <strong>50 751 tps</strong>, то есть падение до 0,51x. После применения revert-патча производительность выросла до <strong>1,94x</strong> относительно Linux 6.x — и достигла 98 565 tps.</p><h2>Почему ядро изменили и при чём здесь spinlocks</h2><p>Виновен <a href="https://winbuzzer.com/2026/04/05/aws-engineer-reports-postgresql-perf-halved-by-linux-7-kernel-change-xcxwbn/">коммит 7dadeaa6e851</a> за авторством Питера Зийлстры (Peter Zijlstra) из Intel. В Linux 7.0 убрали режим PREEMPT_NONE: теперь доступны только Full и Lazy preemption. По умолчанию включён PREEMPT_LAZY.</p><p>Проблема в том, как PostgreSQL реализует spinlocks. Функция s_lock() в StrategyGetBuffer/GetVictimBuffer крутится в ожидании блокировки. При PREEMPT_LAZY планировщик может вытеснить поток прямо в тот момент, когда он держит spinlock. Все остальные потоки, ожидающие этот замок, начинают активно спиниться — и по замерам 55% CPU уходит именно на это бесполезное ожидание. Затронуты все основные архитектуры: arm64, x86, powerpc, riscv, s390, loongarch.</p><blockquote>PREEMPT_NONE означает, что задача будет выполняться до явного вызова schedule() или возврата из системного вызова/прерывания. Это исторически использовалось для серверных нагрузок с активным ожиданием, но мы убираем этот режим — он маскирует проблемы с блокировками вместо того, чтобы их решать.</blockquote><h2>Патовая ситуация: кто должен чинить?</h2><p>Разработчики ядра считают, что проблема на стороне PostgreSQL: база данных должна использовать механизм rseq (Restartable Sequences) — расширение Linux, позволяющее коду пространства пользователя эффективно работать с критическими секциями без spinlock-спиннинга.</p><blockquote>Правильное решение — использовать rseq time slice extension. Spinlock-спиннинг в пространстве пользователя изначально является проблемным паттерном в вытесняющей многозадачной среде.</blockquote><p>Но PostgreSQL rseq не поддерживает, и никаких сроков интеграции нет. Это классический тупик: ядро меняет поведение, опираясь на «правильную» архитектуру, а прикладное ПО годами использует привычные примитивы. В итоге пострадают администраторы баз данных, которые просто обновят ядро.</p><h2>Что делать администраторам PostgreSQL</h2><p>До тех пор, пока проблема не решена на уровне ядра или PostgreSQL, администраторам баз данных стоит учитывать следующее:</p><ul><li>Не обновляться на Linux 7.0 в production до появления официального патча или workaround</li><li>Отслеживать параметр preemption model ядра при обновлении дистрибутива</li><li>Ubuntu 26.04 LTS, выходящая примерно в конце апреля 2026, будет использовать Linux 7.0 — проверить совместимость заранее</li><li>При необходимости использовать кастомное ядро с revert-патчем коммита 7dadeaa6e851</li><li>Следить за обновлениями в PostgreSQL hackers mailing list и linux-kernel mailing list</li></ul><p>Регрессия производительности PostgreSQL на Linux 7.0 — наглядный пример того, как изменение в ядре может затронуть критическую инфраструктуру. До появления официального решения (патч ядра или поддержка rseq в PostgreSQL) администраторам баз данных следует воздержаться от обновления ядра в production-окружениях. Отслеживать развитие ситуации можно на <a href="https://www.phoronix.com/news/Linux-7.0-AWS-PostgreSQL-Drop">Phoronix</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>AMD выпустила Lemonade — open-source сервер для локального ИИ с поддержкой GPU и NPU</title>
      <link>https://tproger.ru/news/amd-vypustila-lemonade---open-source-server-dlya-lokalnogo-ii-s-</link>
      <comments>https://tproger.ru/news/amd-vypustila-lemonade---open-source-server-dlya-lokalnogo-ii-s-?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Евгений Стребков]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/amd-vypustila-lemonade---open-source-server-dlya-lokalnogo-ii-s-</guid>
      <description><![CDATA[<p>AMD представила Lemonade — open-source сервер для локального запуска LLM на GPU и NPU. Совместим с OpenAI API, мультимодальный, ставится за минуту.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/amd-vypustila-lemonade---open-source-server-dlya-lokalnogo-ii-s-">AMD выпустила Lemonade — open-source сервер для локального ИИ с поддержкой GPU и NPU</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Open Source]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Облачные технологии]]></category>
      <category><![CDATA[AMD]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 02 Apr 2026 11:28:44 GMT</pubDate>
      <content:encoded><![CDATA[<p>Запустить LLM на своём компьютере — задача с десятком подводных камней: выбор движка, настройка под железо, совместимость с приложениями. AMD предлагает решить всё это одной командой.</p><p><a href="https://lemonade-server.ai">Lemonade</a> — open-source сервер для локального запуска ИИ-моделей от AMD. Написан на C++ (серверный бинарник ~2 МБ), автоматически настраивается под GPU, NPU и CPU, совместим с OpenAI API. Проект <a href="https://www.amd.com/en/developer/resources/technical-articles/2026/lemonade-for-local-ai.html">набирает обороты</a> на Hacker News (120+ баллов за несколько часов) и нацелен на то, чтобы сделать локальный ИИ таким же простым, как облачный.</p><ul><li>Lemonade — open-source сервер локального ИИ от AMD, написанный на C++ (бинарник ~2 МБ)</li><li>Автоматически конфигурирует бэкенды для GPU (Radeon), NPU (Ryzen AI) и CPU</li><li>Совместим с OpenAI API — любое приложение, работающее с OpenAI, подключается заменой endpoint</li><li>Мультимодальный: текст, изображения, распознавание речи, синтез речи</li><li>Работает на Windows, Linux и macOS (бета), установка за минуту</li></ul><p>Lemonade — не новый проект (первые версии появились в 2025 году), но версия 10.0, <a href="https://agent-wars.com/news/2026-03-14-amd-ryzen-ai-npu-linux-lemonade-10-fastflowlm">вышедшая</a> в марте 2026, добавила поддержку NPU на Linux через FastFlowLM — и именно это привлекло внимание сообщества.</p><h2>Что умеет Lemonade</h2><p>Lemonade — это локальный сервер, который принимает запросы по OpenAI-совместимому API и маршрутизирует их к оптимальному бэкенду:</p><ul><li><b>Текстовая генерация</b> — через llama.cpp, Ryzen AI SW, FastFlowLM</li><li><b>Генерация изображений</b> — через stablediffusion.cpp</li><li><b>Распознавание речи</b> — через whisper.cpp</li><li><b>Синтез речи</b> — через Kokoro</li><li><b>Vision</b> — мультимодальные модели с анализом изображений</li></ul><p>Можно запускать несколько моделей одновременно — ограничение только в доступной оперативной памяти.</p><h2>Зачем NPU и при чём тут AMD</h2><p>NPU (Neural Processing Unit) — специализированный процессор для ИИ-задач, встроенный в чипы AMD Ryzen AI 300 и 400 серий. В отличие от GPU, NPU потребляет значительно меньше энергии и работает тихо — идеально для фоновых ИИ-задач на ноутбуке.</p><p>До Lemonade 10.0 NPU на Ryzen AI работал только под Windows. Теперь через <a href="https://agent-wars.com/news/2026-03-14-amd-ryzen-ai-npu-linux-lemonade-10-fastflowlm">FastFlowLM 0.9.35</a> доступна поддержка Linux с контекстом до 256 000 токенов. Это делает Ryzen AI реальной альтернативой для разработчиков, которые работают на Linux.</p><h2>OpenAI API: подключение за минуту</h2><p>Главное преимущество Lemonade — совместимость с OpenAI API. Если приложение уже работает с OpenAI, переключение на локальный Lemonade сводится к замене endpoint:</p><p>Это уже работает с:</p><ul><li><b>VS Code</b> — через расширения (Continue и другие)</li><li><b>Continue</b> — автодополнение кода</li><li><b>n8n</b> — автоматизация рабочих процессов</li><li><b>OpenWebUI</b> — веб-интерфейс для чатов с моделями</li></ul><h2>Установка и запуск</h2><p>Установщики доступны для Windows (MSI), Linux (DEB, RPM, AppImage, Snap, AUR) и macOS (бета):</p><p>Lemonade автоматически определит доступное железо (GPU, NPU, CPU) и настроит оптимальный бэкенд. Для тех, кто предпочитает графический интерфейс, есть десктоп-приложение с менеджером моделей, встроенным чатом и контролем сервера.</p><h2>Чем Lemonade отличается от Ollama и LM Studio</h2><ul><li><b>Поддержка NPU</b> — Lemonade единственный из крупных проектов поддерживает AMD Ryzen AI NPU нативно</li><li><b>Мультимодальность</b> — не только текст, но и изображения, речь, транскрипция в одном сервере</li><li><b>Множество движков</b> — llama.cpp, FastFlowLM, whisper.cpp, stablediffusion.cpp, Kokoro под одним API</li><li><b>AMD-оптимизация</b> — enterprise-тестирование на Ryzen и Radeon, но работает и на других платформах</li><li><b>2 МБ бинарник</b> — легковесный C++ сервер, не Electron-приложение</li></ul><h2>Выводы</h2><p>Lemonade — ставка AMD на то, что локальный ИИ станет стандартом. Проект решает реальную проблему: фрагментацию экосистемы локального запуска моделей. Один сервер, один API, автонастройка под железо — и текст, и картинки, и речь.</p><p>Для разработчиков на AMD Ryzen AI особенно интересна поддержка NPU на Linux — до Lemonade 10.0 этой возможности не было. Проект open-source и активно развивается сообществом.</p><p>Скачать: <a href="https://lemonade-server.ai">lemonade-server.ai</a> | Исходники: <a href="https://github.com/amd/lemonade">GitHub</a> | Сообщество: <a href="https://discord.gg/lemonade">Discord</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Как превратить любой ПК в роутер на Linux</title>
      <link>https://tproger.ru/translations/kak-prevratit-lyuboj-pk-v-router-na-linux</link>
      <comments>https://tproger.ru/translations/kak-prevratit-lyuboj-pk-v-router-na-linux?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Алексей Михайлишин]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/translations/kak-prevratit-lyuboj-pk-v-router-na-linux</guid>
      <description><![CDATA[<p>Пошаговый гайд: собираем роутер из мини-ПК, старого ноутбука или одноплатника на Debian. Настройка hostapd, dnsmasq, nftables и bridge. Попробуйте сами.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/translations/kak-prevratit-lyuboj-pk-v-router-na-linux">Как превратить любой ПК в роутер на Linux</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Hardware]]></category>
      <category><![CDATA[Сетевые протоколы]]></category>
      <category><![CDATA[DIY]]></category>
      <category><![CDATA[Переводы]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Tue, 31 Mar 2026 00:45:02 GMT</pubDate>
      <content:encoded><![CDATA[<p>Перевод-адаптация статьи <a href="https://nbailey.ca/post/router/">How to turn anything into a router</a> Ника Бэйли.</p><p>Правительство США анонсировало политику, фактически запрещающую импорт новых потребительских роутеров. Но оказывается, роутер можно собрать буквально из любого компьютера. Автор оригинальной статьи использует мини-ПК на Linux в качестве домашнего роутера уже несколько лет: ни одного серьёзного сбоя, единственная замена — дешёвый mSATA-диск.</p><p>Мини-ПК, настольный компьютер, одноплатник, стоечный сервер, старый ноутбук — подойдёт всё, что запускает Linux и имеет пару USB-портов. В этой статье разберём полную настройку на Debian: от выбора железа до правил firewall.</p><p>— Роутер — это обычный компьютер с Linux, двумя сетевыми интерфейсами и несколькими пакетами.</p><p>— Для сборки хватит мини-ПК, старого ноутбука или одноплатника с USB-Ethernet-адаптером.</p><p>— Всё ПО — hostapd, dnsmasq, bridge-utils — входит в стандартные репозитории Debian.</p><p>— Настройка занимает около часа и не требует глубоких знаний сетей.</p><h2>Выбор железа</h2><p>Идеальный вариант — компактный пассивно охлаждаемый мини-ПК. Однако подойдёт практически что угодно. Главное условие: два Ethernet-интерфейса. Если у устройства только один — выручит обычный USB-Ethernet-адаптер. Это чуть менее надёжно, чем встроенный порт, но для домашней сети вполне достаточно.</p><p>Пример из практики автора: мини-ПК на <b>Celeron 3205U</b> (два ядра, 1,5 ГГц) без проблем выдаёт 820–850 Мбит/с по кабелю и около 300 Мбит/с по Wi-Fi. Даже такой скромный процессор с запасом тянет трафик целого дома или небольшого офиса.</p><p>Для совсем экстремальных случаев: в 2016 году автор собрал роутер из ThinkPad T60 (подобранного на мусорке), ExpressCard-PCIe-моста, безымянной Ethernet-карты и свитча Cisco 2960 за $10. Выглядело как куча хлама — но работало.</p><h2>Архитектура сети</h2><p>После настройки интерфейсы распределяются так: eth0 — WAN (внешняя сеть, интернет), eth1 — проводная LAN, wlan0 — Wi-Fi LAN.</p><p>eth1 и wlan0 объединяются в мост br0 — проводные и беспроводные устройства оказываются в одной сети. Нужно больше портов? Просто добавьте USB-Ethernet-адаптеры и включите их в мост.</p><p>Используемое ПО: <a href="https://w1.fi/hostapd/">hostapd</a> для Wi-Fi точки доступа, <a href="https://thekelleys.org.uk/dnsmasq/doc.html">dnsmasq</a> для DHCP и DNS, <a href="https://wiki.debian.org/BridgeNetworkConnections">bridge-utils</a> для объединения портов. Статья покрывает только IPv4 — IPv6 в домашней LAN по-прежнему создаёт больше проблем, чем решает.</p><h2>Установка Debian</h2><p>Установка стандартная, но стоит учесть несколько нюансов:</p><ul><li>В BIOS отключить PXE-загрузку по сети</li><li>Выставить минимальную частоту процессора, но отключить power management для USB и PCI-устройств</li><li>Включить опцию «Restore after AC Power Loss» — роутер должен запускаться сам после отключения питания</li><li>Если устройство не стартует без монитора — вставить HDMI-заглушку (dummy dongle)</li><li>Включить репозиторий non-free-firmware — большинство Wi-Fi-адаптеров без него не работает</li></ul><p>После базовой установки доставьте прошивку для своего Wi-Fi-адаптера. Для Intel:</p><p>Для Realtek:</p><p>Для совсем старого железа (Atheros и подобные):</p><h2>Установка пакетов</h2><p>Три пакета — это всё необходимое. Итого около 250 пакетов на системе:</p><h2>Переименование сетевых интерфейсов</h2><p>В современном Linux интерфейсы называются по физическому расположению: например, enp0s31f6. Чтобы не запутаться, зафиксируем привычные имена eth0, eth1 через systemd.network.</p><p>Для каждого сетевого интерфейса создайте файл /etc/systemd/network/10-persistent-ethX.link (где X — номер интерфейса):</p><p>MAC-адреса своих интерфейсов узнайте командой ip link show. Создайте по одному такому файлу для каждого Ethernet-порта.</p><h2>Настройка Wi-Fi через hostapd</h2><p>USB-Wi-Fi-адаптер будет работать как точка доступа. Это не заменит выделенный AP-девайс по качеству сигнала, но в небольшом помещении работает вполне приемлемо. Если Wi-Fi критичен — лучше подключить к LAN-порту старый роутер в режиме точки доступа.</p><p>Создайте конфиг /etc/hostapd/hostapd.conf:</p><p>По умолчанию служба hostapd замаскирована (masked). Размаскируйте и запустите:</p><h2>Настройка сетевых интерфейсов</h2><p>eth0 — внешний интерфейс (WAN, получает IP по DHCP от провайдера). br0 — внутренний мост с фиксированным адресом. Обратите внимание: у LAN-интерфейса нет шлюза по умолчанию.</p><p>Файл /etc/network/interfaces:</p><p>После этого перезагрузите устройство. Если сеть не поднялась, проверьте ошибки:</p><p>При успешной настройке вывод команды должен быть таким:</p><h2>IP Forwarding</h2><p>Без IP forwarding роутер не будет пробрасывать пакеты между интерфейсами. Создайте файл /etc/sysctl.d/10-forward.conf:</p><p>Примените изменения:</p><h2>Настройка firewall через nftables</h2><p>Правила firewall и NAT управляются через <a href="https://wiki.nftables.org/">nftables</a> — современную замену iptables. Конфиг /etc/nftables.conf:</p><p>Этот конфиг делает три вещи: включает NAT (masquerade), блокирует весь входящий трафик извне и разрешает роутеру работать как DNS, DHCP и SSH-сервер для локальной сети.</p><p>Включите nftables при загрузке:</p><p>Перед изменением правил всегда проверяйте конфиг на валидность:</p><p>В отличие от устаревшего iptables, nftables позволяет перезагружать правила без разрыва соединений:</p><h2>DHCP и DNS через dnsmasq</h2><p><a href="https://thekelleys.org.uk/dnsmasq/doc.html">dnsmasq</a> — компактная альтернатива паре isc-dhcp-server + bind9. Конфиг элементарный. Создайте /etc/dnsmasq.conf:</p><p>DHCP-диапазон: 192.168.1.50 — 192.168.1.250, аренда на 6 часов. Адреса 192.168.1.2 — 192.168.1.49 остаются для статических назначений.</p><h2>Бонус: последовательный порт (Serial/UART)</h2><p>Если на устройстве есть последовательный порт — настройте UART-консоль. В enterprise-оборудовании это стандарт, но для домашнего роутера тоже удобно: управляйте без монитора и клавиатуры через USB-UART-адаптер.</p><p>В файле /etc/default/grub добавьте или замените строки:</p><p>Активируйте getty на последовательном порту, обновите GRUB и перезагрузите:</p><h2>Проверка работы</h2><p>После настройки перезагрузите устройство дважды — убедитесь, что всё поднимается стабильно. Проверьте состояние firewall и счётчики трафика:</p><p>Ненулевые счётчики в цепочках forward и postrouting означают, что трафик проходит через роутер. Проверьте DHCP-аренды:</p><h2>Что ещё можно добавить</h2><p>Базовая конфигурация работает как полноценный домашний роутер. При желании её можно расширить:</p><ul><li>VLAN и сегментация сети</li><li>VPN (удалённый доступ и site-to-site туннели)</li><li>Динамическая маршрутизация: IGP, BGP</li><li>IDS/IPS (обнаружение и предотвращение вторжений)</li><li>Логирование отдельных правил и flow logs</li><li>Проброс портов в DMZ</li><li>IPv6</li><li>Мониторинг в реальном времени</li><li>Фильтрация и блокировка трафика</li></ul><p>Важное правило: не устанавливайте много дополнительного ПО прямо на роутер. Лучше выделить отдельную машину в DMZ или VLAN и пробрасывать на неё трафик. Роутер должен оставаться простым и надёжным.</p><h2>Итого</h2><p>Роутер — это просто компьютер с Linux, двумя сетевыми интерфейсами и тремя пакетами. Ничего магического в потребительских роутерах нет: они тоже работают под управлением Linux (обычно урезанным), просто с удобным веб-интерфейсом поверх.</p><p>Мини-ПК на базе Celeron или Atom стоит $30–60 на вторичном рынке, потребляет 5–10 Вт и работает годами без обслуживания. Это надёжнее, гибче и дешевле большинства потребительских роутеров — а заодно отличный способ разобраться, как на самом деле работает сеть.</p>]]></content:encoded>
    </item>
    <item>
      <title>Neovim 0.12.0 получил встроенный менеджер плагинов vim.pack и улучшения LSP</title>
      <link>https://tproger.ru/news/neovim-0-12-0-poluchil-vstroennyj-menedzher-plaginov-vim-pack-i-ul</link>
      <comments>https://tproger.ru/news/neovim-0-12-0-poluchil-vstroennyj-menedzher-plaginov-vim-pack-i-ul?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Алексей Михайлишин]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/neovim-0-12-0-poluchil-vstroennyj-menedzher-plaginov-vim-pack-i-ul</guid>
      <description><![CDATA[<p>Neovim 0.12.0 добавляет vim.pack — встроенный менеджер плагинов на Lua. Улучшен LSP, терминал поддерживает синхронизированный вывод. Разбираем релиз.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/neovim-0-12-0-poluchil-vstroennyj-menedzher-plaginov-vim-pack-i-ul">Neovim 0.12.0 получил встроенный менеджер плагинов vim.pack и улучшения LSP</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Open Source]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Новости]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 30 Mar 2026 02:36:15 GMT</pubDate>
      <content:encoded><![CDATA[<p><a href="https://github.com/neovim/neovim/releases/tag/v0.12.0">Neovim 0.12.0</a> вышел 29 марта 2026 года. Главное: встроенный менеджер плагинов vim.pack на Lua, улучшения LSP (Language Server Protocol) и терминала.</p><p>— Встроенный менеджер плагинов vim.pack с функциями add, update, del и get</p><p>— Экспериментальный ui2 убирает сообщения «Press ENTER» (opt-in)</p><p>— Новая команда :checkhealth vim.lsp для диагностики LSP-серверов</p><p>— Терминал поддерживает синхронизированный вывод (DEC private mode 2026)</p><p>— Доступен для macOS, Linux и Windows</p><h2>vim.pack — встроенный менеджер плагинов</h2><p>До версии 0.12 управление плагинами требовало сторонний менеджер: <a href="https://github.com/folke/lazy.nvim">lazy.nvim</a>, packer, vim-plug. Теперь есть встроенный модуль vim.pack на Lua:</p><ul><li>vim.pack.add() — установить плагины по URL</li><li>vim.pack.update() — обновить установленные</li><li>vim.pack.del() — удалить плагин</li><li>vim.pack.get() — получить информацию об установленных плагинах</li></ul><p>Минимальная конфигурация в init.lua:</p><p>vim.pack — это минимальное решение: установка, обновление, удаление. lazy.nvim предлагает ленивую загрузку, приоритизацию и UI для управления, чего во встроенном менеджере нет. Для новых конфигураций или простых сетапов с 5–10 плагинами vim.pack закрывает потребность без зависимостей.</p><h2>Улучшения LSP</h2><p>Language Server Protocol остаётся ключевым направлением развития Neovim:</p><ul><li>Новая команда :checkhealth vim.lsp — показывает, какие LSP-серверы подключены к каким буферам и их статус</li><li>DiagnosticRelatedInformation теперь отображается в vim.diagnostic.open_float() — например, если ошибка компилятора связана с определением в другом файле, связь видна сразу, без переключения</li></ul><h2>Терминал и UX</h2><ul><li><b>Экспериментальный ui2.</b> Новый слой UI убирает «Press ENTER or type command to continue». Включается вручную: require("vim._core.ui2").enable()</li><li><b>CSI 3 J</b> — поддержка escape-последовательности для очистки scrollback-буфера терминала</li><li><b>Синхронизированный вывод</b> (DEC private mode 2026) — приложения в :terminal группируют обновления экрана, избегая тиринга при быстрой перерисовке</li></ul><h2>Установка</h2><p>Доступен для macOS (x86_64, arm64), Linux (AppImage/tar.gz для x86_64, arm64) и Windows (MSI/zip для x64, ARM64). Скачать — со <a href="https://github.com/neovim/neovim/releases/tag/v0.12.0">страницы релиза</a>.</p><h2>Выводы</h2><p>Neovim 0.12.0 делает редактор самодостаточнее: встроенный vim.pack снижает порог входа, LSP-диагностика стала информативнее, терминал — стабильнее. Полный список изменений — в <a href="https://github.com/neovim/neovim/releases/tag/v0.12.0">примечаниях к выпуску</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Stanford выпустил JAI — лёгкую песочницу для безопасного запуска ИИ-агентов на Linux</title>
      <link>https://tproger.ru/news/stanford-vypustil-jai---lyogkuyu-pesochnicu-dlya-bezopasnogo-zapuska</link>
      <comments>https://tproger.ru/news/stanford-vypustil-jai---lyogkuyu-pesochnicu-dlya-bezopasnogo-zapuska?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Алексей Михайлишин]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/stanford-vypustil-jai---lyogkuyu-pesochnicu-dlya-bezopasnogo-zapuska</guid>
      <description><![CDATA[<p>JAI от Stanford изолирует ИИ-агентов одной командой: overlay на home, read-only на систему, три режима изоляции. Бесплатная утилита для Claude Code, Codex и Cursor. Попробуйте.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/stanford-vypustil-jai---lyogkuyu-pesochnicu-dlya-bezopasnogo-zapuska">Stanford выпустил JAI — лёгкую песочницу для безопасного запуска ИИ-агентов на Linux</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Open Source]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Безопасность]]></category>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[DevOps]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sun, 29 Mar 2026 05:32:37 GMT</pubDate>
      <content:encoded><![CDATA[<p>ИИ-агенты вроде Claude Code, Codex и Cursor всё чаще получают полный доступ к файловой системе — и всё чаще этим доступом злоупотребляют. Удалённые home-директории, стёртые проекты, 100 ГБ потерянных данных. Исследователи из Стэнфорда выпустили <a href="https://jai.scs.stanford.edu/">JAI</a> — бесплатную open-source утилиту, которая изолирует агентов одной командой, без Docker, VM и сложных конфигов. Утилита работает только на Linux (включая WSL) — macOS и Windows не поддерживаются, потому что JAI использует специфичные механизмы ядра Linux.</p><p>JAI требует Linux с ядром 6.13 и выше. На macOS и Windows утилита не работает — она использует Linux namespaces и overlayfs, которых нет в других ОС. Если вы работаете в WSL на Windows, JAI подходит.</p><p>— JAI — бесплатная утилита от Stanford Secure Computer Systems group для изоляции ИИ-агентов на Linux</p><p>— Одна команда: jai claude, jai codex или просто jai для шелла</p><p>— Рабочая директория сохраняет полный read/write доступ, home-директория защищена copy-on-write overlay</p><p>— Три режима изоляции: Casual, Strict и Bare — от лёгкого до максимального</p><p>— Не замена Docker/VM — это лёгкая песочница, которая уменьшает blast radius (радиус поражения от ошибок агента) без лишней настройки</p><p>— Исходный код: <a href="https://github.com/stanford-scs/jai">github.com/stanford-scs/jai</a></p><h2>Проблема — ИИ-агенты с доступом к файловой системе</h2><p>Современные ИИ-агенты работают напрямую с файловой системой — читают, создают и удаляют файлы. Это удобно, но опасно. Вот реальные случаи, которые приводят разработчики JAI:</p><ul><li><b>15 лет семейных фотографий</b> — удалены через терминал, даже не попали в корзину</li><li><b>Claude Code вытер home-директорию</b> — полная потеря активных проектов разработки</li><li><b>Cursor очистил рабочее дерево</b> — «всё просто исчезло»</li><li><b>100 ГБ удалено</b> — агент «решил» убрать файлы с компьютера</li><li><b>Antigravity стёр весь диск D</b> — случайная полная очистка раздела</li></ul><p>Между двумя крайностями — «дать агенту полный доступ к системе» и «поднять контейнер или виртуальную машину» — зияла пустота. Настроить Docker ради одной сессии с Claude Code — перебор. Работать без защиты — лотерея. JAI заполняет эту нишу: одна команда, и агент работает в песочнице.</p><h2>Как установить JAI</h2><p>JAI собирается из исходного кода. Для сборки потребуется современный C++-компилятор (GCC 15+ или Clang 22+) и ядро Linux 6.13 или новее.</p><p>Установка зависимостей (Ubuntu):</p><p>Сборка и установка из <a href="https://github.com/stanford-scs/jai">репозитория на GitHub</a>:</p><p>После установки инициализируйте конфигурацию:</p><h2>Как работает JAI</h2><p>JAI — это лёгкая песочница для Linux, которая не требует настройки. Достаточно добавить jai перед командой:</p><p>Принцип работы прост:</p><ul><li><b>Рабочая директория (CWD)</b> — полный read/write доступ. Агент работает с проектом как обычно. Важно: CWD не защищена — rm -rf в рабочей директории уничтожит файлы безвозвратно</li><li><b>Home-директория</b> — copy-on-write overlay. Агент видит ваши файлы, может «изменять» их, но оригиналы остаются нетронутыми. По умолчанию .ssh, .gnupg, .aws, .bash_history и другие чувствительные файлы маскируются — агент их не видит</li><li><b>/tmp и /var/tmp</b> — приватные, изолированные от системы</li><li><b>Всё остальное</b> — read-only. Агент может читать системные файлы, но не может ничего сломать</li></ul><p>Никаких образов, Dockerfile, длинных команд bwrap с десятками флагов. Если запуск песочницы сложнее, чем работа без неё, — никто не станет ею пользоваться. JAI делает защиту проще, чем её отсутствие.</p><h2>Три режима изоляции</h2><p>JAI предлагает три режима — от мягкого до строгого:</p><ul><li><b>Casual</b> (по умолчанию) — home-директория под copy-on-write overlay, процесс запускается от вашего пользователя. Конфиденциальность слабая: большинство файлов читаемы, но оригиналы под защитой. Поддерживает NFS home (upperdir на локальном диске)</li><li><b>Strict</b> — пустой приватный home, процесс запускается от непривилегированного jai user. Максимальная конфиденциальность и целостность: отдельный UID, полная изоляция. NFS home не поддерживается</li><li><b>Bare</b> — пустой приватный home, но процесс запускается от вашего пользователя. Конфиденциальность слабая за пределами home (тот же UID), но полная изоляция home. Поддерживает NFS home (upperdir на локальном диске)</li></ul><p><b>Casual</b> — режим по умолчанию. Подходит для повседневной работы с ИИ-агентами: ваши конфиги и настройки доступны, но оригиналы под защитой. <b>Strict</b> — максимальная изоляция с отдельным пользователем и пустым home. <b>Bare</b> — компромисс: пустой home, но процесс запускается от вашего имени. Поддержка NFS в Casual и Bare работает только при условии, что директория хранения overlay (--storage) находится на локальном диске — NFS не поддерживает расширенные атрибуты, необходимые для overlayfs.</p><h2>JAI vs Docker vs bubblewrap vs chroot</h2><p>JAI не пытается заменить контейнеры — он занимает другую нишу:</p><ul><li><b>Docker</b> — отлично подходит для воспроизводимых сред на основе образов. Избыточен для одноразовой изоляции хостовых инструментов. Не поддерживает overlay-на-home сценарий</li><li><b>bubblewrap (bwrap)</b> — мощная namespace-песочница. Но требует ручной сборки файловой системы, что превращается в длинный wrapper-скрипт. JAI убирает именно эту сложность</li><li><b>chroot</b> — не является механизмом безопасности. Нет изоляции mount, PID namespace и разделения привилегий. Документация Linux прямо говорит: не предназначен для песочниц</li></ul><p>Главное преимущество JAI — порог входа. Где Docker требует Dockerfile и образ, а bubblewrap — 40 флагов, JAI требует одну команду. Для типичного сценария «запустить ИИ-агента на пару часов» — это именно то, что нужно.</p><h2>Ограничения — это не полная защита</h2><p>Авторы из Стэнфорда честно предупреждают: JAI — это casual sandbox, а не бронированный контейнер. Вот что важно понимать:</p><ul><li><b>Casual mode не защищает конфиденциальность</b> — агент может читать большинство файлов в системе, просто не может их изменить</li><li><b>Даже strict mode не эквивалентен</b> закалённому контейнерному рантайму или виртуальной машине</li><li><b>Не подходит для multi-tenant изоляции</b> — если нужна защита от целенаправленного злоумышленника, используйте Docker или VM</li><li><b>Сетевой доступ не ограничен</b> — агент по-прежнему может отправлять запросы в интернет</li><li><b>CWD не защищена</b> — рабочая директория доступна на запись. Если агент выполнит rm -rf в текущей директории, файлы будут уничтожены безвозвратно — это реальная файловая система, а не overlay</li></ul><p>JAI уменьшает blast radius — радиус поражения от ошибок агента. Он не делает агентов безопасными, но делает последствия их ошибок менее катастрофическими.</p><h2>Как начать использовать JAI</h2><p>Если вы используете Claude Code, Cursor или Codex на Linux — JAI решает главную проблему: агент может работать с вашим проектом, но не может случайно удалить домашнюю директорию или SSH-ключи.</p><p>Базовое использование — добавьте jai перед командой:</p><p>Проверить, что overlay работает:</p><p>Очистить overlay после работы (сбросить все накопленные изменения агента):</p><h2>Выводы</h2><p>JAI решает конкретную и актуальную проблему: ИИ-агенты получают доступ к файловой системе, и рано или поздно они что-нибудь ломают. Поднимать контейнер ради каждой сессии — неудобно. Работать без защиты — рискованно. JAI занимает нишу между этими крайностями: одна команда, нулевая настройка, реальная защита от самых распространённых катастроф.</p><p>Утилита бесплатна, open-source, разработана исследовательской группой Stanford Secure Computer Systems и <a href="https://fdc.stanford.edu/">Future of Digital Currency Initiative</a>. Исходный код доступен на <a href="https://github.com/stanford-scs/jai">GitHub</a>, документация — на <a href="https://jai.scs.stanford.edu/">официальном сайте</a>. Проект набрал <a href="https://news.ycombinator.com/">активное обсуждение на Hacker News</a>.</p><p>Если вы запускаете ИИ-агентов на Linux — попробуйте jai. Это проще, чем восстанавливать 15 лет семейных фотографий.</p>]]></content:encoded>
    </item>
    <item>
      <title>Что на самом деле копирует fork() — и почему ваш пул соединений ломается</title>
      <link>https://tproger.ru/translations/chto-na-samom-dele-kopiruet-fork-----i-pochemu-vaw-pul-soedinenij-</link>
      <comments>https://tproger.ru/translations/chto-na-samom-dele-kopiruet-fork-----i-pochemu-vaw-pul-soedinenij-?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Алексей Михайлишин]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/translations/chto-na-samom-dele-kopiruet-fork-----i-pochemu-vaw-pul-soedinenij-</guid>
      <description><![CDATA[<p>fork() копирует память процесса, но разделяет файловые дескрипторы. Разбираем реальный инцидент с Django, Celery и psycopg: как один флаг сломал все воркеры.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/translations/chto-na-samom-dele-kopiruet-fork-----i-pochemu-vaw-pul-soedinenij-">Что на самом деле копирует fork() — и почему ваш пул соединений ломается</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Лучшая практика]]></category>
      <category><![CDATA[Python]]></category>
      <category><![CDATA[Архитектура ПО]]></category>
      <category><![CDATA[DevOps]]></category>
      <category><![CDATA[Переводы]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Sat, 28 Mar 2026 15:24:45 GMT</pubDate>
      <content:encoded><![CDATA[<p>Все воркеры <a href="https://docs.celeryq.dev/en/stable/">Celery</a> одновременно перестали получать соединения с базой. Ни один. Ни ошибок подключения, ни таймаутов запросов — просто тишина. Метрики пула показывали норму. Инфраструктура была в порядке. Но каждая задача падала через 20 секунд с одним и тем же сообщением:</p><p>Проблема оказалась не в сети, не в базе и не в нагрузке. Проблема была в одном булевом флаге, который изменил момент открытия пула соединений — и превратил fork() из безопасной операции в мину замедленного действия.</p><blockquote><b>Ключевые выводы:</b><br />— fork() копирует память процесса (copy-on-write), но разделяет файловые дескрипторы с ядром<br />— TCP-сокеты после fork() указывают на один и тот же объект ядра — два процесса пишут в один поток<br />— threading.Lock ломается: futex-ключ привязан к физическому адресу памяти, который меняется при copy-on-write<br />— Фоновые потоки пула просто не существуют в дочернем процессе — fork() копирует только вызывающий поток<br />— Правило: никогда не держите открытые соединения перед fork()</blockquote><h2>Инцидент — что случилось</h2><p>За несколько дней до инцидента в конфигурации изменился один флаг. Нужно было, чтобы обработчики сигналов <a href="https://www.djangoproject.com/">Django</a> регистрировались внутри воркеров Celery. Существующая настройка пропускала регистрацию, если флаг не был установлен в true.</p><p>Флаг установили. Сигналы заработали. Фича уехала в прод.</p><p>QA был быстрым. Изменение выглядело изолированным: переключить флаг, убедиться, что сигналы регистрируются в Celery, готово. Никто не искал побочных эффектов, спрятанных в AppConfig.ready().</p><p>А потом тихо начало выполняться кое-что ещё. Несколько методов AppConfig.ready(), которые теперь стали активны, делали ORM-запросы при старте: создавали расписания периодических задач, проверяли записи crontab. Рутинные вещи. Ничего опасного на вид.</p><p>Но эти запросы открыли пул соединений с базой данных. В мастер-процессе. <b>До fork()</b>.</p><p>Модель конкурентности Celery по умолчанию — prefork. Не потоки, не async-воркеры. Celery использует fork() — системный вызов POSIX — для создания пула рабочих процессов. Эту деталь легко забыть, когда смотришь на код приложения. Но она становится критически важной, когда открываешь соединения с базой при старте.</p><p>В этом и была проблема.</p><h2>Что копирует fork()</h2><p>Большинство разработчиков знают поверхностный ответ: fork() создаёт дочерний процесс, который является копией родительского. Но слово «копия» скрывает важное различие, которое ядро проводит между двумя типами ресурсов.</p><h3>Память — copy-on-write</h3><p>Когда fork() выполняется, ядро не дублирует RAM немедленно. Вместо этого оно помечает таблицы страниц обоих процессов как read-only, указывая на одни и те же физические страницы. Фактическое копирование происходит только когда один из процессов пишет в страницу: ядро перехватывает page fault, выделяет новую физическую страницу, копирует содержимое и обновляет таблицу страниц. До этого момента оба процесса разделяют физическую память, не зная об этом.</p><p>Это эффективно. И именно поэтому Python-объекты, включая внутреннее состояние пула соединений, выглядят целыми в дочернем процессе. Дочерний процесс получает свою копию pool._pool, pool._lock, pool._sched. Байты на месте. Структура на месте.</p><p>Но некоторые из этих байтов указывают на ресурсы ядра. А ресурсы ядра не копируются.</p><h3>Файловые дескрипторы — общие</h3><p>TCP-сокет — это не Python-объект. Это объект ядра: struct file со счётчиком ссылок, за которым стоит struct sock с буферами отправки и получения, состоянием TCP, sequence numbers. Когда fork() выполняется, ядро вызывает dup_fd() для таблицы файловых дескрипторов родителя: каждый открытый fd дублируется в дочерний процесс, а счётчик ссылок на struct file увеличивается.</p><p>Оба процесса теперь держат fd=12. Оба указывают на один и тот же объект сокета в ядре. Один TCP-поток, два читателя и два писателя — без координации между ними.</p><p>Проводной протокол <a href="https://www.postgresql.org/">PostgreSQL</a> — stateful. Он ожидает последовательные пары запрос-ответ в одном потоке. Два процесса, чередующие байты в одном соединении, не создают два независимых разговора. Они создают мусор.</p><h3>Блокировки — сломанный futex</h3><p>threading.Lock построен на pthread_mutex_t, который внутри опирается на futex — механизм ядра Linux, использующий <i>физический адрес памяти</i> целого числа как ключ для очереди ожидания. После fork() copy-on-write может переместить страницу дочернего процесса на новый физический адрес при записи. Futex-ключ дочернего процесса расходится с родительским. futex_wake из одного процесса не будит никого в другом.</p><p>POSIX явно говорит об этом: поведение мьютекса после fork() не определено, если он не был создан с атрибутом process-shared. Python-овский Lock этот атрибут не использует.</p><h3>Фоновые потоки — просто не существуют</h3><p>fork() дублирует только вызывающий поток. Внутренний планировщик пула — отвечающий за поддержание минимального числа соединений, проверки здоровья, уведомление ожидающих — копируется как Python-объект, но не имеет соответствующего потока ОС. Его TID не существует. Любой путь кода, который зависит от его ожидания или сигнализации, заблокируется навсегда.</p><p>Дочерние процессы унаследовали пул, который выглядел целым, но был мёртв. Они вызывали pool.getconn(), пытались захватить сломанный лок, ждали 20 секунд notify, который никогда не придёт, и получали таймаут.</p><h2>Почему пул соединений ломается после fork()</h2><p>Пул соединений <a href="https://www.psycopg.org/psycopg3/docs/">psycopg</a> (ConnectionPool) хранит три вида ресурсов. Каждый ломается по-своему после fork().</p><p><b>TCP-сокеты</b> разделяются на уровне ядра. Любая попытка использовать их из двух процессов одновременно разрушает поток протокола. На практике дочерние процессы до этого даже не доходили.</p><p><b>threading.Lock</b> опирается на futex, привязанный к физическому адресу. После copy-on-write ключ дрейфует. futex_wake будит очередь по старому адресу — никого в дочернем процессе там нет.</p><p><b>Фоновые потоки</b> не существуют в дочернем процессе. Планировщик пула — Python-объект без ОС-потока. Код, зависящий от его notify, блокируется навечно.</p><p>Вот почему раньше всё работало:</p><p>До изменения флага AppConfig.ready() пропускал регистрацию периодических задач. ORM не вызывался при старте. Нет запросов — нет пула. Нет пула — нечего наследовать. Каждый дочерний процесс начинал с чистого состояния и лениво создавал собственный пул при первом обращении к базе: собственные сокеты, собственный лок, собственный фоновый поток.</p><h2>Решение — чистый fork без наследства</h2><p>Два хука сигналов Celery.</p><p>worker_before_create_process срабатывает в родительском процессе после ready(), перед каждым fork(). Он закрывает все соединения с базой по всем алиасам и уничтожает пулы соединений. К моменту выполнения fork() нет открытых TCP-сокетов, нет локов, нет фоновых потоков для наследования.</p><p>worker_process_init срабатывает в каждом дочернем процессе после fork() как второй уровень защиты — defense-in-depth, на случай если что-то было пропущено.</p><p>После обоих хуков каждый дочерний процесс пуст. Первый ORM-запрос создаёт свежий пул, который целиком принадлежит этому процессу.</p><p>Принцип простой: никогда не держите открытые соединения перед fork() — или явно закройте и уничтожьте их до форка. Это правило применимо к любому пулу соединений на основе TCP: <a href="https://www.psycopg.org/psycopg3/docs/">psycopg</a>, <a href="https://www.sqlalchemy.org/">SQLAlchemy</a>, redis-py. Технология не важна. Важно поведение ядра.</p><h2>Диаграммы — до и после</h2><h3>До изменения флага: чистый fork, каждый воркер создаёт свой пул</h3><h3>После изменения флага: пул открыт в мастере, fork() распространяет повреждение</h3><h3>После исправления: пул уничтожен перед fork(), каждый воркер стартует чисто</h3><h2>Выводы</h2><p>Настоящий урок — не в конкретном фиксе. Он в понимании того, почему пул сломался. Что fork() на самом деле копирует. Что он разделяет. Почему лок, который выглядит целым, может заблокировать дочерний процесс. Почему поток, существующий как Python-объект, может полностью отсутствовать в ОС.</p><p>Правила, которые стоит запомнить:</p><ul><li>Никогда не открывайте пул соединений до fork() — или явно уничтожьте его перед форком</li><li>fork() копирует память (лениво), но разделяет файловые дескрипторы на уровне ядра</li><li>threading.Lock после fork() — undefined behavior: futex привязан к физическому адресу, который дрейфует при copy-on-write</li><li>Фоновые потоки не дублируются — fork() копирует только вызывающий поток</li><li>Это правило касается любого пула TCP-соединений: psycopg, SQLAlchemy, redis-py — поведение ядра одинаково</li></ul><p>Невидимая часть — это взаимодействие между последовательностью запуска Django и моделью процессов Celery. Две системы, каждая из которых хорошо понятна по отдельности, делают неожиданное на стыке.</p><p><i>Адаптированный перевод статьи <a href="https://tech.daniellbastos.com.br/posts/what-fork-actually-copies/">What fork() Actually Copies</a> Даниэля Бастоса (Daniel Bastos).</i></p>]]></content:encoded>
    </item>
    <item>
      <title>Трюки в терминале, которые реально экономят время (и нервы)</title>
      <link>https://tproger.ru/translations/tryuki-v-terminale--kotorye-realno-ekonomyat-vremya--i-nervy-</link>
      <comments>https://tproger.ru/translations/tryuki-v-terminale--kotorye-realno-ekonomyat-vremya--i-nervy-?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Картофельный Повелитель]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/translations/tryuki-v-terminale--kotorye-realno-ekonomyat-vremya--i-nervy-</guid>
      <description><![CDATA[<p>Ctrl+W, Ctrl+R, sudo !!, cd -, brace expansion и другие приёмы работы в шелле, которым почему-то не учат. Универсальные POSIX-трюки и фишки Bash/Zsh.</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/translations/tryuki-v-terminale--kotorye-realno-ekonomyat-vremya--i-nervy-">Трюки в терминале, которые реально экономят время (и нервы)</a>»</p>]]></description>
      <category><![CDATA[Для начинающих]]></category>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Инструменты командной строки]]></category>
      <category><![CDATA[Советы]]></category>
      <category><![CDATA[Переводы]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 27 Mar 2026 15:39:29 GMT</pubDate>
      <content:encoded><![CDATA[<p>Есть особый вид боли — наблюдать, как талантливый инженер зажимает Backspace на шесть секунд, чтобы исправить опечатку в начале строки.</p><p>Мы все там были. Выучили ls, cd и grep — и на этом остановились. Терминал стал местом, где мы живём, но обустроить его мы так и не удосужились. Мы миримся с тем, что какие-то действия требуют 40 нажатий, хотя авторы шелла решили нашу проблему ещё в 1989 году.</p><p>Вот подборка приёмов, которые не то чтобы секретные — но которым почему-то не учат. Разделим их на две группы: <b>универсальные</b> (работают почти в любом POSIX-шелле) и <b>для Bash/Zsh</b> (интерактивные фишки).</p><p><b>TL;DR:</b> Ctrl+W удаляет слово, Ctrl+U — строку до курсора, Ctrl+R ищет по истории, !! повторяет предыдущую команду (незаменимо для sudo !!), а cd - возвращает в предыдущую директорию. Начните хотя бы с этих пяти.</p><h2>Универсальные: работают (почти) везде</h2><p>Эти приёмы опираются на стандартные привязки клавиш Emacs-стиля через Readline. Даже если вы подключились по SSH к роутеру 2009 года выпуска или минимальному Alpine-контейнеру — они будут работать.</p><h3>Замена Backspace</h3><ul><li><b>Ctrl+W</b> — удалить слово перед курсором. Набрали /var/log/nginx/, а нужно было /var/log/apache2/? Одно нажатие вместо 7 Backspace</li><li><b>Ctrl+U</b> — вырезать всё от курсора до начала строки. Набрали длинную команду rsync, но сначала нужно проверить директорию? Ctrl+U вырезает, а <b>Ctrl+Y</b> вставляет обратно</li><li><b>Ctrl+K</b> — то же самое, но вырезает от курсора до конца строки</li><li><b>Ctrl+A</b> и <b>Ctrl+E</b> — прыжок в начало и конец строки. Забудьте про Home и End — они далеко от домашнего ряда</li><li><b>Alt+B</b> и <b>Alt+F</b> — перемещение по словам назад и вперёд. Быстрый аналог стрелок (на Mac нужно настроить Option как Meta в терминале)</li></ul><h3>Терминал показывает иероглифы?</h3><p>Случайно сделали cat на бинарник — и терминал превратился в месиво символов? Наберите вслепую reset и нажмите Enter. Терминал восстановится. Альтернатива — stty sane.</p><h3>Экстренные выходы</h3><ul><li><b>Ctrl+C</b> — отменить текущую команду. Ваш аварийный выход, когда что-то зависло</li><li><b>Ctrl+D</b> — отправить EOF. Если командная строка пуста — разлогинит из шелла. Осторожнее!</li><li><b>Ctrl+L</b> — очистить экран, не прерывая набор текущей команды. Удобнее, чем clear</li></ul><h3>Прыгаем между директориями</h3><p><b>cd -</b> — переключение между двумя последними директориями. Вы в /usr/local/etc/postfix, перешли в /var/log посмотреть логи — cd - вернёт обратно. Как кнопка «последний канал» на пульте.</p><p><b>pushd</b> и <b>popd</b> — если cd - это переключатель, то pushd это стек. pushd /etc перейдёт в /etc, запомнив предыдущую директорию. popd снимет её со стека и вернёт вас.</p><h3>Мгновенная очистка файла и последний аргумент</h3><p><b>&gt; file.txt</b> — очищает файл, сохраняя права и не прерывая процессы. <b>$_</b> — последний аргумент предыдущей команды:</p><h3>Страховка для скриптов</h3><ul><li><b>-e</b> — останов при ошибке (нюансы с if и пайпами)</li><li><b>-u</b> — ошибка при несуществующей переменной. Спасёт от rm -rf /usr/local/${OPECHATKA}/*</li><li><b>-o pipefail</b> — ошибка в любом звене пайпа = ошибка всей цепочки</li></ul><h2>Bash и Zsh: зона комфорта</h2><h3>Поиск по истории и «sudo !!»</h3><p><b>Ctrl+R</b> — обратный поиск по истории. Начните вводить часть команды — шелл найдёт её. <b>!!</b> — повторить предыдущую команду. Классика: получили «Permission denied» — sudo !!.</p><h3>Редактор, brace expansion и процессы</h3><p><b>Ctrl+X, Ctrl+E</b> — открывает текущую команду в $EDITOR. <b>fc</b> — то же для предыдущей команды. <b>Esc+.</b> — вставляет последний аргумент прямо на месте курсора. Брейс-экспаншн для быстрых операций:</p><h3>Спасти процесс от обрыва SSH</h3><p>Терминал — это набор инструментов, а не полоса препятствий. Возьмите один приём, используйте его неделю — и переходите к следующему.</p><p>Источник: <a href="https://blog.hofstede.it/shell-tricks-that-actually-make-life-easier-and-save-your-sanity/">Shell Tricks That Actually Make Life Easier</a> — Hofstede Blog</p>]]></content:encoded>
    </item>
    <item>
      <title>Datadog уменьшила размер Go-бинарников на 77% без потери функций. Как им это удалось?</title>
      <link>https://tproger.ru/news/datadog-umenwila-razmer-go-binarnikov-na-77--bez-poteri-funkcij</link>
      <comments>https://tproger.ru/news/datadog-umenwila-razmer-go-binarnikov-na-77--bez-poteri-funkcij?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/datadog-umenwila-razmer-go-binarnikov-na-77--bez-poteri-funkcij</guid>
      <description><![CDATA[<p>Datadog сократила Go-бинарники на 77%: аудит зависимостей, включение оптимизаций линкера и удаление plugin дали минус сотни мегабайт</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/datadog-umenwila-razmer-go-binarnikov-na-77--bez-poteri-funkcij">Datadog уменьшила размер Go-бинарников на 77% без потери функций. Как им это удалось?</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Оптимизация]]></category>
      <category><![CDATA[Golang]]></category>
      <category><![CDATA[Kubernetes]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 25 Feb 2026 04:53:36 GMT</pubDate>
      <content:encoded><![CDATA[<p>За пять лет размер артефактов Datadog Agent вырос с 428 МБ до 1,22 ГБ.</p><p>Новые фичи, интеграции, поддержка Kubernetes и облаков сделали продукт мощнее... и заметно тяжелее. Это стало проблемой для serverless, IoT и контейнеров.</p><p>Вместо того чтобы урезать функциональность, команда решила «переломить кривую роста». За полгода (v7.60.0 → v7.68.0) им удалось сократить размер Go-бинарников до 77%.</p><h2>Аудит зависимостей: минус 36 МБ одной правкой</h2><p>Первый шаг — полный разбор зависимостей. С помощью go list, goda и go-size-analyzer разработчики искали пакеты, которые подтягиваются в бинарник случайно.</p><p>В одном случае trace-agent тащил 526 пакетов Kubernetes из-за одной функции, которая фактически не использовала k8s-код. Перенос ее в отдельный пакет позволил компилятору выбросить все лишнее — минус 36 МБ.</p><p>И таких случаев нашли десятки.</p><h2>Разблокировка «скрытой» оптимизации линкера</h2><p>Вторая находка дала еще ~20% выигрыша. В Go есть оптимизация method dead code elimination, но она отключается, если используется reflect.MethodByName с динамическими именами (например, в text/template).</p><p>Команда нашла проблемные вызовы через -dumpdep и утилиту <i>whydeadcode</i>, пропатчила зависимости и даже форкнула text/template, чтобы отключить динамические вызовы методов. Результат — еще минус около 100 МБ.</p><h2>Удаление plugin = минус 245 МБ</h2><p>Самый неожиданный эффект дал пакет plugin. Его импорт заставлял линкер сохранять все методы типов, отключая оптимизацию.</p><p>Выяснилось, что зависимость приходила через <i>containerd</i>, хотя агент ее не использовал. После добавления build-тега и обновления зависимостей, основной Linux amd64-бинарник «похудел» на 245 МБ.</p><h2>Итог</h2><ul><li>Security Agent: −77%</li><li>Process Agent: −74%</li><li>Trace Agent: −74%</li><li>Общий .deb: 1,22 ГБ → 688 МБ</li></ul><p>И главное — все это <b>без удаления функций</b>. Только системная чистка зависимостей, грамотные build-теги и возвращение оптимизаций линкера.</p>]]></content:encoded>
    </item>
    <item>
      <title>Роскомнадзор случайно заблокировал скачивание обновлений Linux в России</title>
      <link>https://tproger.ru/news/roskomnadzor-sluchajno-zablokiroval-skachivanie-obnovlenij-linux-v</link>
      <comments>https://tproger.ru/news/roskomnadzor-sluchajno-zablokiroval-skachivanie-obnovlenij-linux-v?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/roskomnadzor-sluchajno-zablokiroval-skachivanie-obnovlenij-linux-v</guid>
      <description><![CDATA[<p>Роскомнадзор случайно ограничил доступ к kernel.org, из-за чего сборочные фермы Astra Linux, РЕД ОС и Alt Linux не получали обновления ядра</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/roskomnadzor-sluchajno-zablokiroval-skachivanie-obnovlenij-linux-v">Роскомнадзор случайно заблокировал скачивание обновлений Linux в России</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Open Source]]></category>
      <category><![CDATA[Инструменты]]></category>
      <category><![CDATA[Безопасность]]></category>
      <category><![CDATA[Роскомнадзор]]></category>
      <category><![CDATA[Telegram]]></category>
      <category><![CDATA[CDN]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 18 Feb 2026 01:35:42 GMT</pubDate>
      <content:encoded><![CDATA[<p>Российские разработчики отечественных ОС столкнулись с неожиданной проблемой: сборочные фермы перестали получать обновления ядра Linux с официальных зеркал.</p><p>По данным участников рынка, трафик к kernel.org и ряду европейских репозиториев убивается на ТСПУ-узлах — оборудовании, установленном Роскомнадзор у операторов связи.</p><h2>Под блокировку попали репозитории</h2><p>Проблема затронула команды, работающие над <b>Astra Linux</b>, <b>РЕД ОС</b> и <b>Alt Linux</b>. Сначала инженеры подозревали локальные сбои или проблемы магистральных провайдеров.</p><p>Но трассировка показала: пакеты обрываются именно на инфраструктуре фильтрации трафика.</p><p>По оценкам экспертов, причина заключается в попытке точечно ограничить протоколы обхода блокировок и замедления Telegram. Под «ковровую» фильтрацию, вероятно, попали IP-диапазоны CDN-сетей, где размещаются зеркала Linux Kernel Archives.</p><h2>Абсурд цифровой изоляции</h2><p>Ситуация выглядит парадоксально: чтобы обновить «суверенные» дистрибутивы Linux для госсектора, инженерам приходится использовать те самые инструменты, с которыми Роскомнадзор наоборот борется.</p><p>В закрытых профессиональных чатах обсуждают необходимость срочно добавить адреса репозиториев в белые списки. Официальных комментариев от регулятора пока нет.</p><h2>Зависимость от глобального open source</h2><p>Инцидент напомнил о фундаментальной реальности: российские ОС — это дистрибутивы на базе Linux. Их безопасность и актуальность напрямую зависят от международных репозиториев и глобального open-source сообщества.</p><p>Попытки изолировать трафик без точной фильтрации создают риск ударить по собственной инфраструктуре. И если блокировки становятся шире и агрессивнее, под них могут попадать не только мессенджеры, но и критически важные обновления безопасности.</p>]]></content:encoded>
    </item>
    <item>
      <title>Единственный мейнтейнер sudo попросил о финансовой поддержке спустя 30 лет разработки</title>
      <link>https://tproger.ru/news/edinstvennyj-mejntejner-sudo-poprosil-o-finansovoj-podderzhke-spu</link>
      <comments>https://tproger.ru/news/edinstvennyj-mejntejner-sudo-poprosil-o-finansovoj-podderzhke-spu?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/edinstvennyj-mejntejner-sudo-poprosil-o-finansovoj-podderzhke-spu</guid>
      <description><![CDATA[<p>Единственный мейнтейнер sudo после 30 лет работы попросил финансирование: без спонсора развитие и безопасность утилиты под угрозой</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/edinstvennyj-mejntejner-sudo-poprosil-o-finansovoj-podderzhke-spu">Единственный мейнтейнер sudo попросил о финансовой поддержке спустя 30 лет разработки</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Безопасность]]></category>
      <category><![CDATA[unix]]></category>
      <category><![CDATA[Rust]]></category>
      <category><![CDATA[Разработка]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 06 Feb 2026 10:49:04 GMT</pubDate>
      <content:encoded><![CDATA[<p>Разработчик <b>sudo</b> Тодд Миллер, который поддерживает утилиту с 1993 года, публично попросил о финансовой поддержке, чтобы продолжать ее развитие и разработку.</p><p>Об этом Миллер <a href="https://www.theregister.com/2026/02/03/sudo_maintainer_asks_for_help/">написал</a> на своем личном сайте, отметив, что уже более 30 лет остается фактически единственным мейнтейнером одного из ключевых инструментов Unix- и Linux-систем.</p><h2>Что произошло</h2><p>До февраля 2024 года разработку sudo спонсировала компания Quest Software (позже — One Identity). После завершения сотрудничества и ухода Миллера из компании, финансирование прекратилось. С тех пор поддержка проекта ведется без стабильного источника дохода.</p><p>При этом разработка sudo не останавливалась: за последние два года выходили обновления и исправления, включая патчи для критических уязвимостей. Однако, по словам Миллера, из-за нехватки времени и ресурсов работа над проектом заметно замедлилась.</p><h2>Почему это проблема</h2><p>Sudo — базовая утилита для управления привилегиями, от которой напрямую зависит безопасность системы.</p><p>За последние годы в ней неоднократно находили серьезные уязвимости, включая баги, позволявшие локальным пользователям получать root-доступ. Некоторые из них существовали в коде более 10 лет.</p><p>Именно из-за регулярных проблем с безопасностью в экосистеме появился sudo-rs — новая реализация утилиты на Rust, ориентированная на безопасную память. В Ubuntu 25.10 она уже используется по умолчанию.</p><h2>Что будет дальше</h2><p>Миллер подчеркивает, что не планирует бросать sudo, но и не видит очевидного преемника. После истории с закладкой в xz-utils, он с осторожностью относится к передаче проекта сторонним разработчикам.</p><p>При этом он считает, что в долгосрочной перспективе именно sudo-rs станет основной версией инструмента. Он уже даже сотрудничает с командой этого проекта.</p>]]></content:encoded>
    </item>
    <item>
      <title>ИИ-агенты самостоятельно написали C-компилятор, способный собрать Linux</title>
      <link>https://tproger.ru/news/ii-agenty-samostoyatelno-napisali-c-kompilyator--sposobnyj-sobrat</link>
      <comments>https://tproger.ru/news/ii-agenty-samostoyatelno-napisali-c-kompilyator--sposobnyj-sobrat?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/ii-agenty-samostoyatelno-napisali-c-kompilyator--sposobnyj-sobrat</guid>
      <description><![CDATA[<p>ИИ-агенты Anthropic самостоятельно создали C-компилятор на Rust, способный собирать Linux 6.9, показав пределы автономной разработки</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/ii-agenty-samostoyatelno-napisali-c-kompilyator--sposobnyj-sobrat">ИИ-агенты самостоятельно написали C-компилятор, способный собрать Linux</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Искусственный интеллект]]></category>
      <category><![CDATA[Язык Си]]></category>
      <category><![CDATA[Redis]]></category>
      <category><![CDATA[ARM]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 06 Feb 2026 05:03:48 GMT</pubDate>
      <content:encoded><![CDATA[<p>Исследователь Anthropic Николас Карлини <a href="https://www.anthropic.com/engineering/building-c-compiler">рассказал</a> об эксперименте, в ходе которого группа ИИ-агентов без постоянного участия человека написала полноценный <b>C-компилятор</b>, способный собрать ядро Linux.</p><p>Компилятор написан на Rust, насчитывает <b>около 100 000 строк кода</b> и может собирать Linux 6.9 для архитектур x86, ARM и RISC-V.</p><h2>Как это вообще произошло</h2><p>В эксперименте использовалась модель <b>Claude Opus 4.6</b>, запущенная в режиме так называемых agent teams. Это подход, при котором несколько экземпляров ИИ работают параллельно над одним репозиторием и сами решают, какие задачи брать дальше.</p><p>Всего в проекте одновременно работали <b>16 агентов</b>, каждый из которых запускался в отдельном контейнере и синхронизировался через Git.</p><p>Чтобы агенты не мешали друг другу, они «блокировали» задачи с помощью файлов-локов — если один агент уже взялся за парсинг if, другой был вынужден выбрать другую часть компилятора.</p><p>Процесс длился почти две недели и включал <b>около 2000 сессий Claude Code</b>. Общая стоимость эксперимента составила <b>примерно $20 000</b>.</p><h2>Что умеет получившийся компилятор</h2><p>На выходе получился рабочий, хоть и экспериментальный инструмент:</p><ul><li>собирает Linux 6.9;</li><li>компилирует крупные проекты вроде SQLite, Redis, FFmpeg и QEMU;</li><li>проходит около 99% тестов из GCC torture test suite;</li><li>способен скомпилировать и запустить DOOM — неофициальный, но показательный бенчмарк.</li></ul><p>Важный момент: у ИИ не было доступа к интернету, то есть делалось в рамках имеющейся «базы знаний» модели.</p><h2>Где начинаются ограничения</h2><p>Несмотря на впечатляющий результат, компилятор далек от промышленного использования:</p><ul><li>нет собственного ассемблера и линковщика — они частично заимствуются у GCC;</li><li>кодовая база нестабильна: новые изменения часто ломают старые части;</li><li>16-битный x86-код (нужный для загрузки Linux) реализован «читерски» — через вызов GCC.</li></ul><p>Сами авторы также подчеркнули, что модель <b>уперлась в потолок своих возможностей</b> — дальнейшее развитие компилятора становится все менее предсказуемым.</p>]]></content:encoded>
    </item>
    <item>
      <title>После 20 лет на Windows разработчик полностью перешел на Linux — и вот почему</title>
      <link>https://tproger.ru/news/posle-20-let-na-windows-razrabotchik-polnostyu-perewel-na-linux--</link>
      <comments>https://tproger.ru/news/posle-20-let-na-windows-razrabotchik-polnostyu-perewel-na-linux--?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/posle-20-let-na-windows-razrabotchik-polnostyu-perewel-na-linux--</guid>
      <description><![CDATA[<p>После 20 лет на Windows разработчик перешел на Linux из-за багов, навязчивых обновлений и утраты контроля над системой в работе</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/posle-20-let-na-windows-razrabotchik-polnostyu-perewel-na-linux--">После 20 лет на Windows разработчик полностью перешел на Linux — и вот почему</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Windows]]></category>
      <category><![CDATA[Microsoft]]></category>
      <category><![CDATA[NVIDIA]]></category>
      <category><![CDATA[Windows 11]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Thu, 29 Jan 2026 09:55:07 GMT</pubDate>
      <content:encoded><![CDATA[<p>Разработчик с более чем 20-летним стажем работы на Windows <a href="https://www.himthe.dev/blog/microsoft-to-linux" rel="nofollow">рассказал</a>, почему в итоге полностью отказался от системы и все же перешел на Linux.</p><p>Причина не в идеологии open-source и не в желании «поковыряться в Терминале». Все куда прозаичнее и ближе — за последние годы сама Windows сильно изменилась.</p><p>По его словам, система стала менее предсказуемой, более навязчивой и все чаще ломает базовые сценарии работы. Причем без возможности нормально это контролировать.</p><h2>Обновления без согласия и баги без решений</h2><p>Ключевой переломный момент — крупное обновление Windows 11 24H2. Оно установилось автоматически, несмотря на отложенные апдейты, и принесло с собой критический баг: Google Chrome начинал «ломаться» визуально, если оказывался под другим окном, а иногда это приводило к полной блокировке системы.</p><p>Откат обновления не сработал, переустановка Windows проблему не решила. Единственным «рабочим» вариантом оказался переход на Insider-сборку. А это, на минуту, нестабильный канал обновлений, который Microsoft обычно не рекомендует для основной системы.</p><p>Позже выяснилось, что проблема связана с конфликтом драйверов NVIDIA и механизмом Multiplane Overlay (MPO). При этом NVIDIA и Microsoft публично перекладывали ответственность друг на друга, а пользователь оставался без реального решения.</p><h2>Реклама и контроль вместо системы для работы</h2><p>Помимо багов, автор отдельно отмечает изменения в философии Windows:</p><ul><li>полноэкранные рекомендации и реклама OneDrive, Edge и Copilot;</li><li>сложности с созданием локальной учетной записи без обходных путей;</li><li>невозможность «заморозить» стабильную конфигурацию без риска, что следующий апдейт все сломает.</li></ul><p>В результате Windows, по его словам, перестала быть «удобной по умолчанию». Система стала требовать столько же ручной настройки, сколько Linux — но без контроля над результатом.</p><h2>Переход на Linux: больно, но чинится</h2><p>В качестве основной системы разработчик выбрал CachyOS — производительный дистрибутив на базе Arch Linux. Переход оказался не идеальным: были проблемы со сном системы и работой драйверов NVIDIA. Но ключевое отличие от Windows — эти проблемы удалось решить.</p><h2>Что в итоге</h2><p>Автор подчеркивает: Linux все еще не универсален. В креативных задачах, 3D-моделировании и некоторых играх ограничения остаются. Но главное изменение — ощущение контроля над системой.</p><p>Windows, по его мнению, проиграла не потому, что Linux стал идеальным, а потому что сама Windows стала нестабильной, навязчивой и непредсказуемой.</p><p>И именно это, как он считает, сегодня подталкивает все больше разработчиков и пользователей смотреть в сторону Linux.</p>]]></content:encoded>
    </item>
    <item>
      <title>Линус Торвальдс впервые описал, что будет с Linux без него</title>
      <link>https://tproger.ru/news/linus-torvalds-vpervye-opisal--chto-budet-s-linux-bez-nego</link>
      <comments>https://tproger.ru/news/linus-torvalds-vpervye-opisal--chto-budet-s-linux-bez-nego?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/linus-torvalds-vpervye-opisal--chto-budet-s-linux-bez-nego</guid>
      <description><![CDATA[<p>Линус Торвальдс впервые описал план преемственности Linux на случай своего ухода и коллективное управление ядром проекта</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/linus-torvalds-vpervye-opisal--chto-budet-s-linux-bez-nego">Линус Торвальдс впервые описал, что будет с Linux без него</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Git]]></category>
      <category><![CDATA[GitHub]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Wed, 28 Jan 2026 09:42:03 GMT</pubDate>
      <content:encoded><![CDATA[<p>В репозитории ядра Linux появился <a href="https://github.com/torvalds/linux/commit/102606402f4f5943266160e263c450fdfe4dd981#diff-6c81210e8795b03502471e1435cac0763110f72b823038bd0033eb617c15ab8d" rel="nofollow">документ</a>, которого раньше не существовало.</p><p>Линус Торвальдс закоммитил файл Project continuity — формальный план действий на случай, если он больше не сможет выполнять роль главного мейнтейнера проекта.</p><p>Переживать не стоит — пока что речи о скором уходе или передаче власти «наследнику» не идет. Документ скорее фиксирует то, как сообщество должно действовать в кризисной ситуации — внезапной и без предварительной подготовки.</p><p>Ранее подобные вопросы в Linux решались негласно и на уровне доверия, но теперь процесс впервые описан письменно.</p><h2>Почему это вообще понадобилось</h2><p>Linux — распределенный проект с сотнями мейнтейнеров, но финальная точка принятия решений по-прежнему сходится в одном месте: в основном репозитории ядра.</p><p>Исторически эту роль выполняет сам Торвальдс. Именно он принимает изменения в mainline и определяет, что считается «официальным» Linux.</p><p>В коммите напрямую упоминается релиз 4.19 в 2018 году — момент, когда Торвальдс временно отошел от проекта.</p><p>Тогда стало очевидно, что даже при развитой системе мейнтейнеров отсутствие одного человека создает управленческую неопределенность. Новый документ — попытка эту неопределенность устранить.</p><figure><img src="https://media.tproger.ru/user-uploads/111041/2026-01-28/02bf2609-9870-459d-87b3-614f41f79c2c.webp" alt="" /></figure><h2>Как выглядит план преемственности</h2><p>Если кратко, Linux не переходит под контроль одного нового лидера автоматически. Вместо этого запускается процесс коллективного управления.</p><p>Организатор последнего Linux Maintainers Summit обязан в течение 72 часов собрать обсуждение с участниками саммита и Technical Advisory Board (TAB) Linux Foundation.</p><p>Эта группа рассматривает варианты дальнейшего управления репозиторием: временные или постоянные, индивидуальные или коллегиальные.</p><p>Ключевая цель формулируется прямо в тексте — сохранить долгосрочное здоровье проекта и сообщества, а не просто «назначить замену».</p><p>Если саммит давно не проводился, состав участников определяет TAB. Через две недели после встречи, сообщество получает публичное разъяснение дальнейших шагов через официальную рассылку kernel.org.</p>]]></content:encoded>
    </item>
    <item>
      <title>В telnet нашли уязвимость с root-доступом в одну строку — она скрывалась в коде 11 лет</title>
      <link>https://tproger.ru/news/v-telnet-nawli-uyazvimost-s-root-dostupom-v-odnu-stroku---ona-sk</link>
      <comments>https://tproger.ru/news/v-telnet-nawli-uyazvimost-s-root-dostupom-v-odnu-stroku---ona-sk?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/v-telnet-nawli-uyazvimost-s-root-dostupom-v-odnu-stroku---ona-sk</guid>
      <description><![CDATA[<p>В telnet нашли уязвимость с root-доступом: эксплойт в одну строку скрывался 11 лет и уже используется в атаках GNU InetUtils и CVE-2026-24061</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/v-telnet-nawli-uyazvimost-s-root-dostupom-v-odnu-stroku---ona-sk">В telnet нашли уязвимость с root-доступом в одну строку — она скрывалась в коде 11 лет</a>»</p>]]></description>
      <category><![CDATA[Интернет]]></category>
      <category><![CDATA[API]]></category>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Уязвимость]]></category>
      <category><![CDATA[Сервер]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Fri, 23 Jan 2026 07:58:26 GMT</pubDate>
      <content:encoded><![CDATA[<p>В сервере <b>telnetd</b> из пакета <b>GNU InetUtils</b> обнаружили критическую уязвимость, позволяющую получить <b>root-доступ без пароля</b>.</p><p>Эксплойт умещается в одну строку, а сама проблема незаметно прожила в коде почти <b>11 лет</b> — с мая 2015 года. О находке <a href="https://www.theregister.com/2026/01/22/root_telnet_bug/">сообщило</a> издание <i>The Register</i>.</p><p>Уязвимости присвоен идентификатор <b>CVE-2026-24061</b>, уровень опасности — <b>9,8 балла по CVSS</b>.</p><h2>В чем суть бага</h2><p><b>Telnet</b> — устаревший протокол удаленного доступа без шифрования. Несмотря на репутацию чего-то древнего и неактуального, telnet до сих пор используется в некоторых Linux-дистрибутивах и встраиваемых системах.</p><p>Проблема возникла из-за правок 2015 года в telnetd (версия 1.9.3). Сервер передает имя пользователя в системную утилиту /usr/bin/login, которая поддерживает флаг -f.</p><p>Этот флаг сообщает, что пользователь уже аутентифицирован и <b>проверку пароля можно пропустить</b>.</p><p>После тех изменений telnetd стал брать имя пользователя из переменной окружения USER — без проверки и экранирования. В итоге атакующий может подставить туда значение -f root и получить root-доступ.</p><h2>Как выглядит эксплуатация</h2><p>Эксплойт действительно тривиален и помещается в одну строку:</p><p>Если сервер уязвим, подключение сразу происходит от имени суперпользователя — без ввода пароля. По словам Стивена Фьюэра из <b>Rapid7</b>, эксплуатация проблемы «элементарна и гарантированно приводит к полному root-доступу».</p><h2>Почему это особенно неприятно</h2><ul><li>баг существовал почти 11 лет и попал в код вместе с «исправлением» другой ошибки;</li><li>атака не требует подбора паролей или сложной подготовки;</li><li>уязвимость работает до аутентификации;</li><li>telnet-серверы до сих пор доступны в интернете.</li></ul><p>По данным сервиса <b>GreyNoise</b>, за последние сутки зафиксированы попытки эксплуатации CVE-2026-24061 как минимум <b>с 21 уникального IP-адреса</b>.</p><h2>Что рекомендуют делать</h2><p>Рекомендации ожидаемые, но все еще актуальные:</p><ul><li>обновить GNU InetUtils до версии с исправлением;</li><li>по возможности полностью отказаться от telnet в пользу SSH;</li><li>временно отключить telnetd;</li><li>если отключение невозможно — закрыть порт 23/TCP для всех, кроме доверенных IP.</li></ul>]]></content:encoded>
    </item>
    <item>
      <title>Вышла PatchworkOS — минималистичная ОС, где «все — файл» даже больше, чем в UNIX</title>
      <link>https://tproger.ru/news/vywla-patchworkos---minimalistichnaya-os--gde--vse---fajl--dazhe-bolwe--chem-v-unix</link>
      <comments>https://tproger.ru/news/vywla-patchworkos---minimalistichnaya-os--gde--vse---fajl--dazhe-bolwe--chem-v-unix?scrollTo=tproger-comments</comments>
      <dc:creator><![CDATA[Булат Яббаров]]></dc:creator>
      <guid isPermaLink="true">https://tproger.ru/news/vywla-patchworkos---minimalistichnaya-os--gde--vse---fajl--dazhe-bolwe--chem-v-unix</guid>
      <description><![CDATA[<p>PatchworkOS — экспериментальная минималистичная ОС, где процессы, события и ядро представлены как файлы. Проект исследует радикальное развитие идеи «все — файл» в духе UNIX</p><p>— Читать дальше «<a rel="follow" href="https://tproger.ru/news/vywla-patchworkos---minimalistichnaya-os--gde--vse---fajl--dazhe-bolwe--chem-v-unix">Вышла PatchworkOS — минималистичная ОС, где «все — файл» даже больше, чем в UNIX</a>»</p>]]></description>
      <category><![CDATA[Linux]]></category>
      <category><![CDATA[Безопасность]]></category>
      <category><![CDATA[unix]]></category>
      <category><![CDATA[GitHub]]></category>
      <category><![CDATA[Новости]]></category>
      <slash:comments>0</slash:comments>
      <pubDate>Mon, 22 Dec 2025 07:05:33 GMT</pubDate>
      <content:encoded><![CDATA[<p>Разработчик Кай Норберг <a href="https://github.com/KaiNorberg/PatchworkOS">представил</a> <b>PatchworkOS</b> — минималистичную операционную систему, построенную вокруг принципа <b>«все есть файл»</b>.</p><p>Но если в UNIX это скорее философия с оговорками, то в PatchworkOS идея <b>доведена почти до абсолюта</b>. Здесь файлами считаются не только данные, но и процессы, события, таймеры и даже взаимодействие с ядром.</p><p>Проект носит исследовательский характер и не претендует на роль универсальной ОС для повседневного использования.</p><h2>Как работает «все — файл» в PatchworkOS</h2><p>В PatchworkOS файловая система — это главный интерфейс ко всему, что происходит в системе.</p><p>Процессы представлены <b>в виде каталогов</b>, их состояние — <b>в виде файлов</b>, а управление ими сводится к обычным <b>операциям чтения</b> и <b>записи</b>.</p><p>Например, чтобы отправить сигнал процессу или изменить его параметры, не нужен отдельный системный вызов. Достаточно записать нужное значение в соответствующий файл. Аналогичным образом работают таймеры, события и даже планировщик задач.</p><p>Сам автор проекта описывает PatchworkOS как <b>систему, где файловая и процессная модели слиты воедино, а граница между «данными» и «поведением» намеренно размыта</b>.</p><figure><img src="https://media.tproger.ru/user-uploads/111041/2025-12-22/bbeeffe1-d861-4ee2-9d98-1f0a680c6381.jpeg" alt="" /></figure><h2>Минимум абстракций и максимум прозрачности</h2><p>PatchworkOS написана с упором на <b>простоту и читаемость</b>. В системе нет привычного набора пользовательских утилит, сложных демонов или развитой экосистемы.</p><p>Зато есть понятная структура, которую можно изучать, модифицировать и расширять. ОС запускается в эмуляторе и ориентирована в первую очередь на разработчиков, студентов и энтузиастов, которым интересно устройство операционных систем на низком уровне.</p><p>Норберг отдельно отмечает, что его операционка — это <b>не Linux-дистрибутив</b> и <b>не попытка конкурировать с существующими ОС</b>.</p><h2>Ограничения и честные предупреждения</h2><p>Автор прямо говорит о лимитах своего проекта. PatchworkOS не поддерживает многопользовательский режим, не рассчитана на безопасность в привычном смысле и не оптимизирована для производительности.</p><p>Многие механизмы реализованы намеренно наивно — ради наглядности, а не скорости. Именно поэтому проект сопровождается подробной документацией, объясняющей, почему система устроена так, а не иначе.</p>]]></content:encoded>
    </item>
  </channel>
</rss>